From 762a3e3c0201b419f0810e6bc476bac7470243e0 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 16 Jun 2019 18:45:26 -0500 Subject: [PATCH 001/324] Ports revised job backend from TG --- code/__DEFINES/jobs.dm | 38 ++ code/__DEFINES/preferences.dm | 7 +- code/__HELPERS/cmp.dm | 3 + code/controllers/subsystem/job.dm | 174 ++++--- code/datums/outfit.dm | 8 + code/game/gamemodes/game_mode.dm | 2 +- code/modules/client/preferences.dm | 195 ++------ code/modules/client/preferences_savefile.dm | 90 ++-- code/modules/jobs/job_exp.dm | 2 + .../jobs/job_types/{job.dm => _job.dm} | 456 +++++++++--------- .../jobs/job_types/{silicon.dm => ai.dm} | 159 +++--- code/modules/jobs/job_types/assistant.dm | 2 +- .../jobs/job_types/atmospheric_technician.dm | 44 ++ code/modules/jobs/job_types/bartender.dm | 30 ++ code/modules/jobs/job_types/botanist.dm | 32 ++ code/modules/jobs/job_types/captain.dm | 60 +-- code/modules/jobs/job_types/cargo_service.dm | 290 ----------- .../jobs/job_types/cargo_technician.dm | 27 ++ .../{civilian_chaplain.dm => chaplain.dm} | 215 +++++---- code/modules/jobs/job_types/chemist.dm | 36 ++ code/modules/jobs/job_types/chief_engineer.dm | 63 +++ .../jobs/job_types/chief_medical_officer.dm | 58 +++ code/modules/jobs/job_types/civilian.dm | 202 -------- code/modules/jobs/job_types/clown.dm | 57 +++ code/modules/jobs/job_types/cook.dm | 52 ++ code/modules/jobs/job_types/curator.dm | 42 ++ code/modules/jobs/job_types/cyborg.dm | 27 ++ code/modules/jobs/job_types/detective.dm | 56 +++ code/modules/jobs/job_types/engineering.dm | 167 ------- code/modules/jobs/job_types/geneticist.dm | 35 ++ .../jobs/job_types/head_of_personnel.dm | 49 ++ .../jobs/job_types/head_of_security.dm | 67 +++ code/modules/jobs/job_types/janitor.dm | 27 ++ code/modules/jobs/job_types/lawyer.dm | 47 ++ code/modules/jobs/job_types/medical.dm | 204 -------- code/modules/jobs/job_types/medical_doctor.dm | 35 ++ code/modules/jobs/job_types/mime.dm | 49 ++ code/modules/jobs/job_types/quartermaster.dm | 32 ++ .../jobs/job_types/research_director.dm | 60 +++ code/modules/jobs/job_types/roboticist.dm | 34 ++ code/modules/jobs/job_types/science.dm | 131 ----- code/modules/jobs/job_types/scientist.dm | 33 ++ code/modules/jobs/job_types/security.dm | 334 ------------- .../jobs/job_types/security_officer.dm | 158 ++++++ code/modules/jobs/job_types/shaft_miner.dm | 70 +++ .../jobs/job_types/station_engineer.dm | 54 +++ code/modules/jobs/job_types/virologist.dm | 35 ++ code/modules/jobs/job_types/warden.dm | 55 +++ .../modules/mob/dead/new_player/new_player.dm | 137 +++--- .../mob/dead/new_player/preferences_setup.dm | 55 +-- tgstation.dme | 40 +- 51 files changed, 2201 insertions(+), 2134 deletions(-) rename code/modules/jobs/job_types/{job.dm => _job.dm} (85%) rename code/modules/jobs/job_types/{silicon.dm => ai.dm} (71%) create mode 100644 code/modules/jobs/job_types/atmospheric_technician.dm create mode 100644 code/modules/jobs/job_types/bartender.dm create mode 100644 code/modules/jobs/job_types/botanist.dm delete mode 100644 code/modules/jobs/job_types/cargo_service.dm create mode 100644 code/modules/jobs/job_types/cargo_technician.dm rename code/modules/jobs/job_types/{civilian_chaplain.dm => chaplain.dm} (67%) create mode 100644 code/modules/jobs/job_types/chemist.dm create mode 100644 code/modules/jobs/job_types/chief_engineer.dm create mode 100644 code/modules/jobs/job_types/chief_medical_officer.dm delete mode 100644 code/modules/jobs/job_types/civilian.dm create mode 100644 code/modules/jobs/job_types/clown.dm create mode 100644 code/modules/jobs/job_types/cook.dm create mode 100644 code/modules/jobs/job_types/curator.dm create mode 100644 code/modules/jobs/job_types/cyborg.dm create mode 100644 code/modules/jobs/job_types/detective.dm delete mode 100644 code/modules/jobs/job_types/engineering.dm create mode 100644 code/modules/jobs/job_types/geneticist.dm create mode 100644 code/modules/jobs/job_types/head_of_personnel.dm create mode 100644 code/modules/jobs/job_types/head_of_security.dm create mode 100644 code/modules/jobs/job_types/janitor.dm create mode 100644 code/modules/jobs/job_types/lawyer.dm delete mode 100644 code/modules/jobs/job_types/medical.dm create mode 100644 code/modules/jobs/job_types/medical_doctor.dm create mode 100644 code/modules/jobs/job_types/mime.dm create mode 100644 code/modules/jobs/job_types/quartermaster.dm create mode 100644 code/modules/jobs/job_types/research_director.dm create mode 100644 code/modules/jobs/job_types/roboticist.dm delete mode 100644 code/modules/jobs/job_types/science.dm create mode 100644 code/modules/jobs/job_types/scientist.dm delete mode 100644 code/modules/jobs/job_types/security.dm create mode 100644 code/modules/jobs/job_types/security_officer.dm create mode 100644 code/modules/jobs/job_types/shaft_miner.dm create mode 100644 code/modules/jobs/job_types/station_engineer.dm create mode 100644 code/modules/jobs/job_types/virologist.dm create mode 100644 code/modules/jobs/job_types/warden.dm diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index dc4080a789..e6b1d77f8a 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -48,3 +48,41 @@ #define JOB_UNAVAILABLE_PLAYTIME 3 #define JOB_UNAVAILABLE_ACCOUNTAGE 4 #define JOB_UNAVAILABLE_SLOTFULL 5 + +#define DEFAULT_RELIGION "Christianity" +#define DEFAULT_DEITY "Space Jesus" + +#define JOB_DISPLAY_ORDER_DEFAULT 0 + +#define JOB_DISPLAY_ORDER_ASSISTANT 1 +#define JOB_DISPLAY_ORDER_CAPTAIN 2 +#define JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL 3 +#define JOB_DISPLAY_ORDER_QUARTERMASTER 4 +#define JOB_DISPLAY_ORDER_CARGO_TECHNICIAN 5 +#define JOB_DISPLAY_ORDER_SHAFT_MINER 6 +#define JOB_DISPLAY_ORDER_BARTENDER 7 +#define JOB_DISPLAY_ORDER_COOK 8 +#define JOB_DISPLAY_ORDER_BOTANIST 9 +#define JOB_DISPLAY_ORDER_JANITOR 10 +#define JOB_DISPLAY_ORDER_CLOWN 11 +#define JOB_DISPLAY_ORDER_MIME 12 +#define JOB_DISPLAY_ORDER_CURATOR 13 +#define JOB_DISPLAY_ORDER_LAWYER 14 +#define JOB_DISPLAY_ORDER_CHAPLAIN 15 +#define JOB_DISPLAY_ORDER_CHIEF_ENGINEER 16 +#define JOB_DISPLAY_ORDER_STATION_ENGINEER 17 +#define JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN 18 +#define JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER 19 +#define JOB_DISPLAY_ORDER_MEDICAL_DOCTOR 20 +#define JOB_DISPLAY_ORDER_CHEMIST 21 +#define JOB_DISPLAY_ORDER_GENETICIST 22 +#define JOB_DISPLAY_ORDER_VIROLOGIST 23 +#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 24 +#define JOB_DISPLAY_ORDER_SCIENTIST 25 +#define JOB_DISPLAY_ORDER_ROBOTICIST 26 +#define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 27 +#define JOB_DISPLAY_ORDER_WARDEN 28 +#define JOB_DISPLAY_ORDER_DETECTIVE 29 +#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 30 +#define JOB_DISPLAY_ORDER_AI 31 +#define JOB_DISPLAY_ORDER_CYBORG 32 diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 02f151dcd9..0992b2e586 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -69,4 +69,9 @@ //Flags in the players table in the db #define DB_FLAG_EXEMPT 1 -#define DEFAULT_CYBORG_NAME "Default Cyborg Name" \ No newline at end of file +#define DEFAULT_CYBORG_NAME "Default Cyborg Name" + +//Job preferences levels +#define JP_LOW 1 +#define JP_MEDIUM 2 +#define JP_HIGH 3 diff --git a/code/__HELPERS/cmp.dm b/code/__HELPERS/cmp.dm index e09ebcb10c..37f36a7e0d 100644 --- a/code/__HELPERS/cmp.dm +++ b/code/__HELPERS/cmp.dm @@ -81,3 +81,6 @@ GLOBAL_VAR_INIT(cmp_field, "name") /proc/cmp_advdisease_resistance_asc(datum/disease/advance/A, datum/disease/advance/B) return A.totalResistance() - B.totalResistance() + +/proc/cmp_job_display_asc(datum/job/A, datum/job/B) + return A.display_order - B.display_order diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 5e960e0f96..5983fa3ae5 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -116,7 +116,7 @@ SUBSYSTEM_DEF(job) if(player.mind && job.title in player.mind.restricted_roles) JobDebug("FOC incompatible with antagonist role, Player: [player]") continue - if(player.client.prefs.GetJobDepartment(job, level) & job.flag) + if(player.client.prefs.job_preferences[job.title] == level) JobDebug("FOC pass, Player: [player], Level:[level]") candidates += player return candidates @@ -228,7 +228,7 @@ SUBSYSTEM_DEF(job) * fills var "assigned_role" for all ready players. * This proc must not have any side effect besides of modifying "assigned_role". **/ -/datum/controller/subsystem/job/proc/DivideOccupations() +/datum/controller/subsystem/job/proc/DivideOccupations(list/required_jobs) //Setup new player list and get the jobs list JobDebug("Running DO") @@ -241,14 +241,14 @@ SUBSYSTEM_DEF(job) //Get the players who are ready for(var/mob/dead/new_player/player in GLOB.player_list) - if(player.ready == PLAYER_READY_TO_PLAY && player.mind && !player.mind.assigned_role) + if(player.ready == PLAYER_READY_TO_PLAY && player.check_preferences() && player.mind && !player.mind.assigned_role) unassigned += player initial_players_to_assign = unassigned.len JobDebug("DO, Len: [unassigned.len]") if(unassigned.len == 0) - return 0 + return validate_required_jobs(required_jobs) //Scale number of open security officer slots to population setup_officer_positions() @@ -269,7 +269,7 @@ SUBSYSTEM_DEF(job) //People who wants to be the overflow role, sure, go on. JobDebug("DO, Running Overflow Check 1") var/datum/job/overflow = GetJob(SSjob.overflow_role) - var/list/overflow_candidates = FindOccupationCandidates(overflow, 3) + var/list/overflow_candidates = FindOccupationCandidates(overflow, JP_LOW) JobDebug("AC1, Candidates: [overflow_candidates.len]") for(var/mob/dead/new_player/player in overflow_candidates) JobDebug("AC1 pass, Player: [player]") @@ -297,7 +297,8 @@ SUBSYSTEM_DEF(job) // Loop through all levels from high to low var/list/shuffledoccupations = shuffle(occupations) - for(var/level = 1 to 3) + var/list/levels = list(JP_HIGH,JP_MEDIUM,JP_LOW) + for(var/level in levels) //Check the head jobs first each level CheckHeadPositions(level) @@ -332,7 +333,7 @@ SUBSYSTEM_DEF(job) continue // If the player wants that job on this level, then try give it to him. - if(player.client.prefs.GetJobDepartment(job, level) & job.flag) + if(player.client.prefs.job_preferences[job.title] == level) // If the job isn't filled if((job.current_positions < job.spawn_positions) || job.spawn_positions == -1) JobDebug("DO pass, Player: [player], Level:[level], Job:[job.title]") @@ -351,9 +352,28 @@ SUBSYSTEM_DEF(job) //Mop up people who can't leave. for(var/mob/dead/new_player/player in unassigned) //Players that wanted to back out but couldn't because they're antags (can you feel the edge case?) if(!GiveRandomJob(player)) - AssignRole(player, SSjob.overflow_role) //If everything is already filled, make them an assistant + if(!AssignRole(player, SSjob.overflow_role)) //If everything is already filled, make them an assistant + return FALSE //Living on the edge, the forced antagonist couldn't be assigned to overflow role (bans, client age) - just reroll - return 1 + return validate_required_jobs(required_jobs) + +/datum/controller/subsystem/job/proc/validate_required_jobs(list/required_jobs) + if(!required_jobs.len) + return TRUE + for(var/required_group in required_jobs) + var/group_ok = TRUE + for(var/rank in required_group) + var/datum/job/J = GetJob(rank) + if(!J) + SSticker.mode.setup_error = "Invalid job [rank] in gamemode required jobs." + return FALSE + if(J.current_positions < required_group[rank]) + group_ok = FALSE + break + if(group_ok) + return TRUE + SSticker.mode.setup_error = "Required jobs not present." + return FALSE //We couldn't find a job from prefs for this guy. /datum/controller/subsystem/job/proc/HandleUnassigned(mob/dead/new_player/player) @@ -406,7 +426,7 @@ SUBSYSTEM_DEF(job) if(length(GLOB.jobspawn_overrides[rank])) S = pick(GLOB.jobspawn_overrides[rank]) if(S) - SendToAtom(H, S, buckle = FALSE) + S.JoinPlayerHere(H, FALSE) if(!S) //if there isn't a spawnpoint send them to latejoin, if there's no latejoin go yell at your mapper log_world("Couldn't find a round start spawn point for [rank]") SendToLateJoin(H) @@ -418,7 +438,7 @@ SUBSYSTEM_DEF(job) if(job) if(!job.dresscodecompliant)// CIT CHANGE - dress code compliance equip_loadout(N, H) // CIT CHANGE - allows players to spawn with loadout items - var/new_mob = job.equip(H, null, null, joined_late) + var/new_mob = job.equip(H, null, null, joined_late , null, M.client) if(ismob(new_mob)) H = new_mob if(!joined_late) @@ -428,16 +448,22 @@ SUBSYSTEM_DEF(job) SSpersistence.antag_rep_change[M.client.ckey] += job.GetAntagRep() +/* if(M.client.holder) + if(CONFIG_GET(flag/auto_deadmin_players) || (M.client.prefs?.toggles & DEADMIN_ALWAYS)) + M.client.holder.auto_deadmin() + else + handle_auto_deadmin_roles(M.client, rank) */ + to_chat(M, "You are the [rank].") if(job) to_chat(M, "As the [rank] you answer directly to [job.supervisors]. Special circumstances may change this.") - to_chat(M, "To speak on your departments radio, use the :h button. To see others, look closely at your headset.") + job.radio_help_message(M) if(job.req_admin_notify) - to_chat(M, "You are playing a job that is important for Game Progression. If you have to disconnect, please notify the admins via adminhelp.") + to_chat(M, "You are playing a job that is important for Game Progression. If you have to disconnect immediately, please notify the admins via adminhelp. Otherwise put your locker gear back into the locker and cryo out.") if(job.custom_spawn_text) to_chat(M, "[job.custom_spawn_text]") if(CONFIG_GET(number/minimal_access_threshold)) - to_chat(M, "As this station was initially staffed with a [CONFIG_GET(flag/jobs_have_minimal_access) ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.") + to_chat(M, "As this station was initially staffed with a [CONFIG_GET(flag/jobs_have_minimal_access) ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.") if(job && H) if(job.dresscodecompliant)// CIT CHANGE - dress code compliance @@ -446,12 +472,24 @@ SUBSYSTEM_DEF(job) equip_loadout(N, H, TRUE)//CIT CHANGE - makes players spawn with in-backpack loadout items properly. A little hacky but it works return H - +/* +/datum/controller/subsystem/job/proc/handle_auto_deadmin_roles(client/C, rank) + if(!C?.holder) + return TRUE + var/datum/job/job = GetJob(rank) + if(!job) + return + if((job.auto_deadmin_role_flags & DEADMIN_POSITION_HEAD) && (CONFIG_GET(flag/auto_deadmin_heads) || (C.prefs?.toggles & DEADMIN_POSITION_HEAD))) + return C.holder.auto_deadmin() + else if((job.auto_deadmin_role_flags & DEADMIN_POSITION_SECURITY) && (CONFIG_GET(flag/auto_deadmin_security) || (C.prefs?.toggles & DEADMIN_POSITION_SECURITY))) + return C.holder.auto_deadmin() + else if((job.auto_deadmin_role_flags & DEADMIN_POSITION_SILICON) && (CONFIG_GET(flag/auto_deadmin_silicons) || (C.prefs?.toggles & DEADMIN_POSITION_SILICON))) //in the event there's ever psuedo-silicon roles added, ie synths. + return C.holder.auto_deadmin()*/ /datum/controller/subsystem/job/proc/setup_officer_positions() var/datum/job/J = SSjob.GetJob("Security Officer") if(!J) - throw EXCEPTION("setup_officer_positions(): Security officer job is missing") + CRASH("setup_officer_positions(): Security officer job is missing") var/ssc = CONFIG_GET(number/security_scaling_coeff) if(ssc > 0) @@ -502,13 +540,15 @@ SUBSYSTEM_DEF(job) if(job.required_playtime_remaining(player.client)) young++ continue - if(player.client.prefs.GetJobDepartment(job, 1) & job.flag) - high++ - else if(player.client.prefs.GetJobDepartment(job, 2) & job.flag) - medium++ - else if(player.client.prefs.GetJobDepartment(job, 3) & job.flag) - low++ - else never++ //not selected + switch(player.client.prefs.job_preferences[job.title]) + if(JP_HIGH) + high++ + if(JP_MEDIUM) + medium++ + if(JP_LOW) + low++ + else + never++ SSblackbox.record_feedback("nested tally", "job_preferences", high, list("[job.title]", "high")) SSblackbox.record_feedback("nested tally", "job_preferences", medium, list("[job.title]", "medium")) SSblackbox.record_feedback("nested tally", "job_preferences", low, list("[job.title]", "low")) @@ -551,51 +591,61 @@ SUBSYSTEM_DEF(job) newjob.spawn_positions = J.spawn_positions newjob.current_positions = J.current_positions -/datum/controller/subsystem/job/proc/SendToAtom(mob/M, atom/A, buckle) - if(buckle && isliving(M) && istype(A, /obj/structure/chair)) - var/obj/structure/chair/C = A - if(C.buckle_mob(M, FALSE, FALSE)) - return - M.forceMove(get_turf(A)) +/atom/proc/JoinPlayerHere(mob/M, buckle) + // By default, just place the mob on the same turf as the marker or whatever. + M.forceMove(get_turf(src)) + +/obj/structure/chair/JoinPlayerHere(mob/M, buckle) + // Placing a mob in a chair will attempt to buckle it, or else fall back to default. + if (buckle && isliving(M) && buckle_mob(M, FALSE, FALSE)) + return + ..() /datum/controller/subsystem/job/proc/SendToLateJoin(mob/M, buckle = TRUE) + var/atom/destination if(M.mind && M.mind.assigned_role && length(GLOB.jobspawn_overrides[M.mind.assigned_role])) //We're doing something special today. - SendToAtom(M,pick(GLOB.jobspawn_overrides[M.mind.assigned_role]),FALSE) + destination = pick(GLOB.jobspawn_overrides[M.mind.assigned_role]) + destination.JoinPlayerHere(M, FALSE) return if(latejoin_trackers.len) - SendToAtom(M, pick(latejoin_trackers), buckle) - else - //bad mojo - var/area/shuttle/arrival/A = GLOB.areas_by_type[/area/shuttle/arrival] - if(A) - //first check if we can find a chair - var/obj/structure/chair/C = locate() in A - if(C) - SendToAtom(M, C, buckle) - return - else //last hurrah - var/list/avail = list() - for(var/turf/T in A) - if(!is_blocked_turf(T, TRUE)) - avail += T - if(avail.len) - SendToAtom(M, pick(avail), FALSE) - return + destination = pick(latejoin_trackers) + destination.JoinPlayerHere(M, buckle) + return - //pick an open spot on arrivals and dump em - var/list/arrivals_turfs = shuffle(get_area_turfs(/area/shuttle/arrival)) - if(arrivals_turfs.len) - for(var/turf/T in arrivals_turfs) - if(!is_blocked_turf(T, TRUE)) - SendToAtom(M, T, FALSE) - return - //last chance, pick ANY spot on arrivals and dump em - SendToAtom(M, arrivals_turfs[1], FALSE) - else - var/msg = "Unable to send mob [M] to late join!" - message_admins(msg) - CRASH(msg) + //bad mojo + var/area/shuttle/arrival/A = GLOB.areas_by_type[/area/shuttle/arrival] + if(A) + //first check if we can find a chair + var/obj/structure/chair/C = locate() in A + if(C) + C.JoinPlayerHere(M, buckle) + return + + //last hurrah + var/list/avail = list() + for(var/turf/T in A) + if(!is_blocked_turf(T, TRUE)) + avail += T + if(avail.len) + destination = pick(avail) + destination.JoinPlayerHere(M, FALSE) + return + + //pick an open spot on arrivals and dump em + var/list/arrivals_turfs = shuffle(get_area_turfs(/area/shuttle/arrival)) + if(arrivals_turfs.len) + for(var/turf/T in arrivals_turfs) + if(!is_blocked_turf(T, TRUE)) + T.JoinPlayerHere(M, FALSE) + return + //last chance, pick ANY spot on arrivals and dump em + destination = arrivals_turfs[1] + destination.JoinPlayerHere(M, FALSE) + else + var/msg = "Unable to send mob [M] to late join!" + message_admins(msg) + CRASH(msg) /////////////////////////////////// @@ -637,4 +687,4 @@ SUBSYSTEM_DEF(job) . |= player.mind /datum/controller/subsystem/job/proc/JobDebug(message) - log_job_debug(message) \ No newline at end of file + log_job_debug(message) diff --git a/code/datums/outfit.dm b/code/datums/outfit.dm index 1f5c28d3c2..68165af956 100755 --- a/code/datums/outfit.dm +++ b/code/datums/outfit.dm @@ -21,6 +21,7 @@ var/l_hand = null var/internals_slot = null //ID of slot containing a gas tank var/list/backpack_contents = null // In the list(path=count,otherpath=count) format + var/box // Internals box. Will be inserted at the start of backpack_contents var/list/implants = null var/accessory = null @@ -83,6 +84,13 @@ H.equip_to_slot_or_del(new l_pocket(H),SLOT_L_STORE) if(r_pocket) H.equip_to_slot_or_del(new r_pocket(H),SLOT_R_STORE) + + if(box) + if(!backpack_contents) + backpack_contents = list() + backpack_contents.Insert(1, box) + backpack_contents[box] = 1 + if(backpack_contents) for(var/path in backpack_contents) var/number = backpack_contents[path] diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index d16cbebb2a..28a0e21061 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -355,7 +355,7 @@ // Ultimate randomizing code right here for(var/mob/dead/new_player/player in GLOB.player_list) - if(player.client && player.ready == PLAYER_READY_TO_PLAY) + if(player.client && player.ready == PLAYER_READY_TO_PLAY && player.check_preferences()) players += player // Shuffling, the players list is now ping-independent!!! diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index a0eea344a3..0984523ace 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -165,18 +165,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/list/all_quirks = list() var/list/character_quirks = list() - //Jobs, uses bitflags - var/job_civilian_high = 0 - var/job_civilian_med = 0 - var/job_civilian_low = 0 - - var/job_medsci_high = 0 - var/job_medsci_med = 0 - var/job_medsci_low = 0 - - var/job_engsec_high = 0 - var/job_engsec_med = 0 - var/job_engsec_low = 0 + //Job preferences 2.0 - indexed by job title , no key or value implies never + var/list/job_preferences = list() // Want randomjob if preferences already filled - Donkie var/joblessrole = BERANDOMJOB //defaults to 1 for fewer assistants @@ -975,9 +965,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) //The job before the current job. I only use this to get the previous jobs color when I'm filling in blank rows. var/datum/job/lastJob - var/datum/job/overflow = SSjob.GetJob(SSjob.overflow_role) - - for(var/datum/job/job in SSjob.occupations) + for(var/datum/job/job in sortList(SSjob.occupations, /proc/cmp_job_display_asc)) index += 1 if((index >= limit) || (job.title in splitJobs)) @@ -994,7 +982,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/rank = job.title lastJob = job if(jobban_isbanned(user, rank)) - HTML += "[rank] BANNED" + HTML += "[rank] BANNED" continue var/required_playtime_remaining = job.required_playtime_remaining(user.client) if(required_playtime_remaining) @@ -1004,7 +992,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/available_in_days = job.available_in_days(user.client) HTML += "[rank] \[IN [(available_in_days)] DAYS\]" continue - if((job_civilian_low & overflow.flag) && (rank != SSjob.overflow_role) && !jobban_isbanned(user, SSjob.overflow_role)) + if((job_preferences[SSjob.overflow_role] == JP_LOW) && (rank != SSjob.overflow_role) && !jobban_isbanned(user, SSjob.overflow_role)) HTML += "[rank]" continue if((rank in GLOB.command_positions) || (rank == "AI"))//Bold head jobs @@ -1019,32 +1007,32 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/prefUpperLevel = -1 // level to assign on left click var/prefLowerLevel = -1 // level to assign on right click - if(GetJobDepartment(job, 1) & job.flag) - prefLevelLabel = "High" - prefLevelColor = "slateblue" - prefUpperLevel = 4 - prefLowerLevel = 2 - else if(GetJobDepartment(job, 2) & job.flag) - prefLevelLabel = "Medium" - prefLevelColor = "green" - prefUpperLevel = 1 - prefLowerLevel = 3 - else if(GetJobDepartment(job, 3) & job.flag) - prefLevelLabel = "Low" - prefLevelColor = "orange" - prefUpperLevel = 2 - prefLowerLevel = 4 - else - prefLevelLabel = "NEVER" - prefLevelColor = "red" - prefUpperLevel = 3 - prefLowerLevel = 1 - + switch(job_preferences[job.title]) + if(JP_HIGH) + prefLevelLabel = "High" + prefLevelColor = "slateblue" + prefUpperLevel = 4 + prefLowerLevel = 2 + if(JP_MEDIUM) + prefLevelLabel = "Medium" + prefLevelColor = "green" + prefUpperLevel = 1 + prefLowerLevel = 3 + if(JP_LOW) + prefLevelLabel = "Low" + prefLevelColor = "orange" + prefUpperLevel = 2 + prefLowerLevel = 4 + else + prefLevelLabel = "NEVER" + prefLevelColor = "red" + prefUpperLevel = 3 + prefLowerLevel = 1 HTML += "" if(rank == SSjob.overflow_role)//Overflow is special - if(job_civilian_low & overflow.flag) + if(job_preferences[SSjob.overflow_role] == JP_LOW) HTML += "Yes" else HTML += "No" @@ -1075,61 +1063,17 @@ GLOBAL_LIST_EMPTY(preferences_datums) /datum/preferences/proc/SetJobPreferenceLevel(datum/job/job, level) if (!job) - return 0 + return FALSE - if (level == 1) // to high - // remove any other job(s) set to high - job_civilian_med |= job_civilian_high - job_engsec_med |= job_engsec_high - job_medsci_med |= job_medsci_high - job_civilian_high = 0 - job_engsec_high = 0 - job_medsci_high = 0 + if (level == JP_HIGH) // to high + //Set all other high to medium + for(var/j in job_preferences) + if(job_preferences[j] == JP_HIGH) + job_preferences[j] = JP_MEDIUM + //technically break here - if (job.department_flag == CIVILIAN) - job_civilian_low &= ~job.flag - job_civilian_med &= ~job.flag - job_civilian_high &= ~job.flag - - switch(level) - if (1) - job_civilian_high |= job.flag - if (2) - job_civilian_med |= job.flag - if (3) - job_civilian_low |= job.flag - - return 1 - else if (job.department_flag == ENGSEC) - job_engsec_low &= ~job.flag - job_engsec_med &= ~job.flag - job_engsec_high &= ~job.flag - - switch(level) - if (1) - job_engsec_high |= job.flag - if (2) - job_engsec_med |= job.flag - if (3) - job_engsec_low |= job.flag - - return 1 - else if (job.department_flag == MEDSCI) - job_medsci_low &= ~job.flag - job_medsci_med &= ~job.flag - job_medsci_high &= ~job.flag - - switch(level) - if (1) - job_medsci_high |= job.flag - if (2) - job_medsci_med |= job.flag - if (3) - job_medsci_low |= job.flag - - return 1 - - return 0 + job_preferences[job.title] = level + return TRUE /datum/preferences/proc/UpdateJobPreference(mob/user, role, desiredLvl) if(!SSjob || SSjob.occupations.len <= 0) @@ -1146,64 +1090,29 @@ GLOBAL_LIST_EMPTY(preferences_datums) ShowChoices(user) return - if(role == SSjob.overflow_role) - if(job_civilian_low & job.flag) - job_civilian_low &= ~job.flag - else - job_civilian_low |= job.flag - SetChoices(user) - return 1 + var/jpval = null + switch(desiredLvl) + if(3) + jpval = JP_LOW + if(2) + jpval = JP_MEDIUM + if(1) + jpval = JP_HIGH - SetJobPreferenceLevel(job, desiredLvl) + if(role == SSjob.overflow_role) + if(job_preferences[job.title] == JP_LOW) + jpval = null + else + jpval = JP_LOW + + SetJobPreferenceLevel(job, jpval) SetChoices(user) return 1 /datum/preferences/proc/ResetJobs() - - job_civilian_high = 0 - job_civilian_med = 0 - job_civilian_low = 0 - - job_medsci_high = 0 - job_medsci_med = 0 - job_medsci_low = 0 - - job_engsec_high = 0 - job_engsec_med = 0 - job_engsec_low = 0 - - -/datum/preferences/proc/GetJobDepartment(datum/job/job, level) - if(!job || !level) - return 0 - switch(job.department_flag) - if(CIVILIAN) - switch(level) - if(1) - return job_civilian_high - if(2) - return job_civilian_med - if(3) - return job_civilian_low - if(MEDSCI) - switch(level) - if(1) - return job_medsci_high - if(2) - return job_medsci_med - if(3) - return job_medsci_low - if(ENGSEC) - switch(level) - if(1) - return job_engsec_high - if(2) - return job_engsec_med - if(3) - return job_engsec_low - return 0 + job_preferences = list() /datum/preferences/proc/SetQuirks(mob/user) if(!SSquirks) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 7401a54efc..d7ec8eaea6 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 20 +#define SAVEFILE_VERSION_MAX 21 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -49,6 +49,59 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car pda_style = "mono" if(current_version < 20) pda_color = "#808000" + if(current_version < 21) + job_preferences = list() //It loaded null from nonexistant savefile field. + var/job_civilian_high = 0 + var/job_civilian_med = 0 + var/job_civilian_low = 0 + + var/job_medsci_high = 0 + var/job_medsci_med = 0 + var/job_medsci_low = 0 + + var/job_engsec_high = 0 + var/job_engsec_med = 0 + var/job_engsec_low = 0 + + S["job_civilian_high"] >> job_civilian_high + S["job_civilian_med"] >> job_civilian_med + S["job_civilian_low"] >> job_civilian_low + S["job_medsci_high"] >> job_medsci_high + S["job_medsci_med"] >> job_medsci_med + S["job_medsci_low"] >> job_medsci_low + S["job_engsec_high"] >> job_engsec_high + S["job_engsec_med"] >> job_engsec_med + S["job_engsec_low"] >> job_engsec_low + + //Can't use SSjob here since this happens right away on login + for(var/job in subtypesof(/datum/job)) + var/datum/job/J = job + var/new_value + var/fval = initial(J.flag) + switch(initial(J.department_flag)) + if(CIVILIAN) + if(job_civilian_high & fval) + new_value = JP_HIGH + else if(job_civilian_med & fval) + new_value = JP_MEDIUM + else if(job_civilian_low & fval) + new_value = JP_LOW + if(MEDSCI) + if(job_medsci_high & fval) + new_value = JP_HIGH + else if(job_medsci_med & fval) + new_value = JP_MEDIUM + else if(job_medsci_low & fval) + new_value = JP_LOW + if(ENGSEC) + if(job_engsec_high & fval) + new_value = JP_HIGH + else if(job_engsec_med & fval) + new_value = JP_MEDIUM + else if(job_engsec_low & fval) + new_value = JP_LOW + if(new_value) + job_preferences[initial(J.title)] = new_value /datum/preferences/proc/load_path(ckey,filename="preferences.sav") if(!ckey) @@ -289,15 +342,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car //Jobs S["joblessrole"] >> joblessrole - S["job_civilian_high"] >> job_civilian_high - S["job_civilian_med"] >> job_civilian_med - S["job_civilian_low"] >> job_civilian_low - S["job_medsci_high"] >> job_medsci_high - S["job_medsci_med"] >> job_medsci_med - S["job_medsci_low"] >> job_medsci_low - S["job_engsec_high"] >> job_engsec_high - S["job_engsec_med"] >> job_engsec_med - S["job_engsec_low"] >> job_engsec_low + //Load prefs + S["job_preferences"] >> job_preferences //Quirks S["all_quirks"] >> all_quirks @@ -413,15 +459,10 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["moth_wings"] = sanitize_inlist(features["moth_wings"], GLOB.moth_wings_list) joblessrole = sanitize_integer(joblessrole, 1, 3, initial(joblessrole)) - job_civilian_high = sanitize_integer(job_civilian_high, 0, 65535, initial(job_civilian_high)) - job_civilian_med = sanitize_integer(job_civilian_med, 0, 65535, initial(job_civilian_med)) - job_civilian_low = sanitize_integer(job_civilian_low, 0, 65535, initial(job_civilian_low)) - job_medsci_high = sanitize_integer(job_medsci_high, 0, 65535, initial(job_medsci_high)) - job_medsci_med = sanitize_integer(job_medsci_med, 0, 65535, initial(job_medsci_med)) - job_medsci_low = sanitize_integer(job_medsci_low, 0, 65535, initial(job_medsci_low)) - job_engsec_high = sanitize_integer(job_engsec_high, 0, 65535, initial(job_engsec_high)) - job_engsec_med = sanitize_integer(job_engsec_med, 0, 65535, initial(job_engsec_med)) - job_engsec_low = sanitize_integer(job_engsec_low, 0, 65535, initial(job_engsec_low)) + //Validate job prefs + for(var/j in job_preferences) + if(job_preferences[j] != JP_LOW && job_preferences[j] != JP_MEDIUM && job_preferences[j] != JP_LOW) + job_preferences -= j all_quirks = SANITIZE_LIST(all_quirks) positive_quirks = SANITIZE_LIST(positive_quirks) @@ -489,15 +530,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car //Jobs WRITE_FILE(S["joblessrole"] , joblessrole) - WRITE_FILE(S["job_civilian_high"] , job_civilian_high) - WRITE_FILE(S["job_civilian_med"] , job_civilian_med) - WRITE_FILE(S["job_civilian_low"] , job_civilian_low) - WRITE_FILE(S["job_medsci_high"] , job_medsci_high) - WRITE_FILE(S["job_medsci_med"] , job_medsci_med) - WRITE_FILE(S["job_medsci_low"] , job_medsci_low) - WRITE_FILE(S["job_engsec_high"] , job_engsec_high) - WRITE_FILE(S["job_engsec_med"] , job_engsec_med) - WRITE_FILE(S["job_engsec_low"] , job_engsec_low) + //Write prefs + WRITE_FILE(S["job_preferences"] , job_preferences) //Quirks WRITE_FILE(S["all_quirks"] , all_quirks) diff --git a/code/modules/jobs/job_exp.dm b/code/modules/jobs/job_exp.dm index 4b7b175240..f99bf65071 100644 --- a/code/modules/jobs/job_exp.dm +++ b/code/modules/jobs/job_exp.dm @@ -8,6 +8,8 @@ GLOBAL_PROTECT(exp_to_update) return 0 if(!CONFIG_GET(flag/use_exp_tracking)) return 0 + if(!SSdbcore.Connect()) + return 0 if(!exp_requirements || !exp_type) return 0 if(!job_is_xp_locked(src.title)) diff --git a/code/modules/jobs/job_types/job.dm b/code/modules/jobs/job_types/_job.dm similarity index 85% rename from code/modules/jobs/job_types/job.dm rename to code/modules/jobs/job_types/_job.dm index e441b3e889..59af18b76d 100644 --- a/code/modules/jobs/job_types/job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -1,223 +1,233 @@ -/datum/job - //The name of the job - var/title = "NOPE" - - //Job access. The use of minimal_access or access is determined by a config setting: config.jobs_have_minimal_access - var/list/minimal_access = list() //Useful for servers which prefer to only have access given to the places a job absolutely needs (Larger server population) - var/list/access = list() //Useful for servers which either have fewer players, so each person needs to fill more than one role, or servers which like to give more access, so players can't hide forever in their super secure departments (I'm looking at you, chemistry!) - - //Determines who can demote this position - var/department_head = list() - - //Tells the given channels that the given mob is the new department head. See communications.dm for valid channels. - var/list/head_announce = null - - //Bitflags for the job - var/flag = 0 - var/department_flag = 0 - - //Players will be allowed to spawn in as jobs that are set to "Station" - var/faction = "None" - - //How many players can be this job - var/total_positions = 0 - - //How many players can spawn in as this job - var/spawn_positions = 0 - - //How many players have this job - var/current_positions = 0 - - //Supervisors, who this person answers to directly - var/supervisors = "" - - //Sellection screen color - var/selection_color = "#ffffff" - - - //If this is set to 1, a text is printed to the player when jobs are assigned, telling him that he should let admins know that he has to disconnect. - var/req_admin_notify - - var/custom_spawn_text - - //If you have the use_age_restriction_for_jobs config option enabled and the database set up, this option will add a requirement for players to be at least minimal_player_age days old. (meaning they first signed in at least that many days before.) - var/minimal_player_age = 0 - - var/outfit = null - - var/exp_requirements = 0 - - var/exp_type = "" - var/exp_type_department = "" - - //The amount of good boy points playing this role will earn you towards a higher chance to roll antagonist next round - //can be overridden by antag_rep.txt config - var/antag_rep = 10 - -//Only override this proc -//H is usually a human unless an /equip override transformed it -/datum/job/proc/after_spawn(mob/living/H, mob/M, latejoin = FALSE) - //do actions on H but send messages to M as the key may not have been transferred_yet - -/datum/job/proc/announce(mob/living/carbon/human/H) - if(head_announce) - announce_head(H, head_announce) - -/datum/job/proc/override_latejoin_spawn(mob/living/carbon/human/H) //Return TRUE to force latejoining to not automatically place the person in latejoin shuttle/whatever. - return FALSE - -//Used for a special check of whether to allow a client to latejoin as this job. -/datum/job/proc/special_check_latejoin(client/C) - return TRUE - -/datum/job/proc/GetAntagRep() - . = CONFIG_GET(keyed_list/antag_rep)[lowertext(title)] - if(. == null) - return antag_rep - -//Don't override this unless the job transforms into a non-human (Silicons do this for example) -/datum/job/proc/equip(mob/living/carbon/human/H, visualsOnly = FALSE, announce = TRUE, latejoin = FALSE, datum/outfit/outfit_override = null) - if(!H) - return FALSE - - if(CONFIG_GET(flag/enforce_human_authority) && (title in GLOB.command_positions)) - if(H.dna.species.id != "human") - H.set_species(/datum/species/human) - H.apply_pref_name("human", H.client) - - //Equip the rest of the gear - H.dna.species.before_equip_job(src, H, visualsOnly) - - if(outfit_override || outfit) - H.equipOutfit(outfit_override ? outfit_override : outfit, visualsOnly) - - H.dna.species.after_equip_job(src, H, visualsOnly) - - if(!visualsOnly && announce) - announce(H) - -/datum/job/proc/get_access() - if(!config) //Needed for robots. - return src.minimal_access.Copy() - - . = list() - - if(CONFIG_GET(flag/jobs_have_minimal_access)) - . = src.minimal_access.Copy() - else - . = src.access.Copy() - - if(CONFIG_GET(flag/everyone_has_maint_access)) //Config has global maint access set - . |= list(ACCESS_MAINT_TUNNELS) - -/datum/job/proc/announce_head(var/mob/living/carbon/human/H, var/channels) //tells the given channel that the given mob is the new department head. See communications.dm for valid channels. - if(H && GLOB.announcement_systems.len) - //timer because these should come after the captain announcement - SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/addtimer, CALLBACK(pick(GLOB.announcement_systems), /obj/machinery/announcement_system/proc/announce, "NEWHEAD", H.real_name, H.job, channels), 1)) - -//If the configuration option is set to require players to be logged as old enough to play certain jobs, then this proc checks that they are, otherwise it just returns 1 -/datum/job/proc/player_old_enough(client/C) - if(available_in_days(C) == 0) - return TRUE //Available in 0 days = available right now = player is old enough to play. - return FALSE - - -/datum/job/proc/available_in_days(client/C) - if(!C) - return 0 - if(!CONFIG_GET(flag/use_age_restriction_for_jobs)) - return 0 - if(C.prefs.db_flags & DB_FLAG_EXEMPT) - return 0 - if(!isnum(C.player_age)) - return 0 //This is only a number if the db connection is established, otherwise it is text: "Requires database", meaning these restrictions cannot be enforced - if(!isnum(minimal_player_age)) - return 0 - - return max(0, minimal_player_age - C.player_age) - -/datum/job/proc/config_check() - return TRUE - -/datum/job/proc/map_check() - return TRUE - - -/datum/outfit/job - name = "Standard Gear" - - var/jobtype = null - - uniform = /obj/item/clothing/under/color/grey - id = /obj/item/card/id - ears = /obj/item/radio/headset - belt = /obj/item/pda - back = /obj/item/storage/backpack - shoes = /obj/item/clothing/shoes/sneakers/black - - var/backpack = /obj/item/storage/backpack - var/satchel = /obj/item/storage/backpack/satchel - var/duffelbag = /obj/item/storage/backpack/duffelbag - var/box = /obj/item/storage/box/survival - - var/pda_slot = SLOT_BELT - -/datum/outfit/job/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - switch(H.backbag) - if(GBACKPACK) - back = /obj/item/storage/backpack //Grey backpack - if(GSATCHEL) - back = /obj/item/storage/backpack/satchel //Grey satchel - if(GDUFFELBAG) - back = /obj/item/storage/backpack/duffelbag //Grey Duffel bag - if(LSATCHEL) - back = /obj/item/storage/backpack/satchel/leather //Leather Satchel - if(DSATCHEL) - back = satchel //Department satchel - if(DDUFFELBAG) - back = duffelbag //Department duffel bag - else - back = backpack //Department backpack - - if(box) - if(!backpack_contents) - backpack_contents = list() - backpack_contents.Insert(1, box) // Box always takes a first slot in backpack - backpack_contents[box] = 1 - -/datum/outfit/job/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - if(visualsOnly) - return - - var/datum/job/J = SSjob.GetJobType(jobtype) - if(!J) - J = SSjob.GetJob(H.job) - - if(H.nameless && J.dresscodecompliant) - if(J.title in GLOB.command_positions) - H.real_name = J.title - else - H.real_name = "[J.title] #[rand(10000, 99999)]" - - var/obj/item/card/id/C = H.wear_id - if(istype(C)) - C.access = J.get_access() - shuffle_inplace(C.access) // Shuffle access list to make NTNet passkeys less predictable - C.registered_name = H.real_name - C.assignment = J.title - C.update_label() - H.sec_hud_set_ID() - - var/obj/item/pda/PDA = H.get_item_by_slot(pda_slot) - if(istype(PDA)) - PDA.owner = H.real_name - PDA.ownjob = J.title - PDA.update_label() - -/datum/outfit/job/get_chameleon_disguise_info() - var/list/types = ..() - types -= /obj/item/storage/backpack //otherwise this will override the actual backpacks - types += backpack - types += satchel - types += duffelbag - return types +/datum/job + //The name of the job , used for preferences, bans and more. Make sure you know what you're doing before changing this. + var/title = "NOPE" + + //Job access. The use of minimal_access or access is determined by a config setting: config.jobs_have_minimal_access + var/list/minimal_access = list() //Useful for servers which prefer to only have access given to the places a job absolutely needs (Larger server population) + var/list/access = list() //Useful for servers which either have fewer players, so each person needs to fill more than one role, or servers which like to give more access, so players can't hide forever in their super secure departments (I'm looking at you, chemistry!) + + //Determines who can demote this position + var/department_head = list() + + //Tells the given channels that the given mob is the new department head. See communications.dm for valid channels. + var/list/head_announce = null + + //Bitflags for the job + var/flag = NONE //Deprecated + var/department_flag = NONE //Deprecated +// var/auto_deadmin_role_flags = NONE + + //Players will be allowed to spawn in as jobs that are set to "Station" + var/faction = "None" + + //How many players can be this job + var/total_positions = 0 + + //How many players can spawn in as this job + var/spawn_positions = 0 + + //How many players have this job + var/current_positions = 0 + + //Supervisors, who this person answers to directly + var/supervisors = "" + + //Sellection screen color + var/selection_color = "#ffffff" + + + //If this is set to 1, a text is printed to the player when jobs are assigned, telling him that he should let admins know that he has to disconnect. + var/req_admin_notify + + // This is for Citadel specific tweaks to job notices. + var/custom_spawn_text + + //If you have the use_age_restriction_for_jobs config option enabled and the database set up, this option will add a requirement for players to be at least minimal_player_age days old. (meaning they first signed in at least that many days before.) + var/minimal_player_age = 0 + + var/outfit = null + + var/exp_requirements = 0 + + var/exp_type = "" + var/exp_type_department = "" + + //The amount of good boy points playing this role will earn you towards a higher chance to roll antagonist next round + //can be overridden by antag_rep.txt config + var/antag_rep = 10 + + var/list/mind_traits // Traits added to the mind of the mob assigned this job + + var/display_order = JOB_DISPLAY_ORDER_DEFAULT + +//Only override this proc +//H is usually a human unless an /equip override transformed it +/datum/job/proc/after_spawn(mob/living/H, mob/M, latejoin = FALSE) + //do actions on H but send messages to M as the key may not have been transferred_yet +/* if(mind_traits) + for(var/t in mind_traits) + ADD_TRAIT(H.mind, t, JOB_TRAIT)*/ + +/datum/job/proc/announce(mob/living/carbon/human/H) + if(head_announce) + announce_head(H, head_announce) + +/datum/job/proc/override_latejoin_spawn(mob/living/carbon/human/H) //Return TRUE to force latejoining to not automatically place the person in latejoin shuttle/whatever. + return FALSE + +//Used for a special check of whether to allow a client to latejoin as this job. +/datum/job/proc/special_check_latejoin(client/C) + return TRUE + +/datum/job/proc/GetAntagRep() + . = CONFIG_GET(keyed_list/antag_rep)[lowertext(title)] + if(. == null) + return antag_rep + +//Don't override this unless the job transforms into a non-human (Silicons do this for example) +/datum/job/proc/equip(mob/living/carbon/human/H, visualsOnly = FALSE, announce = TRUE, latejoin = FALSE, datum/outfit/outfit_override = null, client/preference_source) + if(!H) + return FALSE + + if(CONFIG_GET(flag/enforce_human_authority) && (title in GLOB.command_positions)) + if(H.dna.species.id != "human") + H.set_species(/datum/species/human) + H.apply_pref_name("human", preference_source) + + //Equip the rest of the gear + H.dna.species.before_equip_job(src, H, visualsOnly) + + if(outfit_override || outfit) + H.equipOutfit(outfit_override ? outfit_override : outfit, visualsOnly) + + H.dna.species.after_equip_job(src, H, visualsOnly) + + if(!visualsOnly && announce) + announce(H) + +/datum/job/proc/get_access() + if(!config) //Needed for robots. + return src.minimal_access.Copy() + + . = list() + + if(CONFIG_GET(flag/jobs_have_minimal_access)) + . = src.minimal_access.Copy() + else + . = src.access.Copy() + + if(CONFIG_GET(flag/everyone_has_maint_access)) //Config has global maint access set + . |= list(ACCESS_MAINT_TUNNELS) + +/datum/job/proc/announce_head(var/mob/living/carbon/human/H, var/channels) //tells the given channel that the given mob is the new department head. See communications.dm for valid channels. + if(H && GLOB.announcement_systems.len) + //timer because these should come after the captain announcement + SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/addtimer, CALLBACK(pick(GLOB.announcement_systems), /obj/machinery/announcement_system/proc/announce, "NEWHEAD", H.real_name, H.job, channels), 1)) + +//If the configuration option is set to require players to be logged as old enough to play certain jobs, then this proc checks that they are, otherwise it just returns 1 +/datum/job/proc/player_old_enough(client/C) + if(available_in_days(C) == 0) + return TRUE //Available in 0 days = available right now = player is old enough to play. + return FALSE + + +/datum/job/proc/available_in_days(client/C) + if(!C) + return 0 + if(!CONFIG_GET(flag/use_age_restriction_for_jobs)) + return 0 + if(!SSdbcore.Connect()) + return 0 //Without a database connection we can't get a player's age so we'll assume they're old enough for all jobs + if(!isnum(minimal_player_age)) + return 0 + + return max(0, minimal_player_age - C.player_age) + +/datum/job/proc/config_check() + return TRUE + +/datum/job/proc/map_check() + return TRUE + +/datum/job/proc/radio_help_message(mob/M) + to_chat(M, "Prefix your message with :h to speak on your department's radio. To see other prefixes, look closely at your headset.") + +/datum/outfit/job + name = "Standard Gear" + + var/jobtype = null + + uniform = /obj/item/clothing/under/color/grey + id = /obj/item/card/id + ears = /obj/item/radio/headset + belt = /obj/item/pda + back = /obj/item/storage/backpack + shoes = /obj/item/clothing/shoes/sneakers/black + box = /obj/item/storage/box/survival + + var/backpack = /obj/item/storage/backpack + var/satchel = /obj/item/storage/backpack/satchel + var/duffelbag = /obj/item/storage/backpack/duffelbag + + var/pda_slot = SLOT_BELT + +/datum/outfit/job/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + switch(H.backbag) + if(GBACKPACK) + back = /obj/item/storage/backpack //Grey backpack + if(GSATCHEL) + back = /obj/item/storage/backpack/satchel //Grey satchel + if(GDUFFELBAG) + back = /obj/item/storage/backpack/duffelbag //Grey Duffel bag + if(LSATCHEL) + back = /obj/item/storage/backpack/satchel/leather //Leather Satchel + if(DSATCHEL) + back = satchel //Department satchel + if(DDUFFELBAG) + back = duffelbag //Department duffel bag + else + back = backpack //Department backpack + +/datum/outfit/job/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + if(visualsOnly) + return + + var/datum/job/J = SSjob.GetJobType(jobtype) + if(!J) + J = SSjob.GetJob(H.job) + + if(H.nameless && J.dresscodecompliant) + if(J.title in GLOB.command_positions) + H.real_name = J.title + else + H.real_name = "[J.title] #[rand(10000, 99999)]" + + var/obj/item/card/id/C = H.wear_id + if(istype(C)) + C.access = J.get_access() + shuffle_inplace(C.access) // Shuffle access list to make NTNet passkeys less predictable + C.registered_name = H.real_name + C.assignment = J.title + C.update_label() + H.sec_hud_set_ID() + + var/obj/item/pda/PDA = H.get_item_by_slot(pda_slot) + if(istype(PDA)) + PDA.owner = H.real_name + PDA.ownjob = J.title + PDA.update_label() + +/datum/outfit/job/get_chameleon_disguise_info() + var/list/types = ..() + types -= /obj/item/storage/backpack //otherwise this will override the actual backpacks + types += backpack + types += satchel + types += duffelbag + return types + +//Warden and regular officers add this result to their get_access() +/datum/job/proc/check_config_for_sec_maint() + if(CONFIG_GET(flag/security_has_maint_access)) + return list(ACCESS_MAINT_TUNNELS) + return list() + diff --git a/code/modules/jobs/job_types/silicon.dm b/code/modules/jobs/job_types/ai.dm similarity index 71% rename from code/modules/jobs/job_types/silicon.dm rename to code/modules/jobs/job_types/ai.dm index ab963eb8f3..4bcfab5836 100644 --- a/code/modules/jobs/job_types/silicon.dm +++ b/code/modules/jobs/job_types/ai.dm @@ -1,90 +1,69 @@ -/* -AI -*/ -/datum/job/ai - title = "AI" - flag = AI_JF - department_flag = ENGSEC - faction = "Station" - total_positions = 1 - spawn_positions = 1 - selection_color = "#ccffcc" - supervisors = "your laws" - req_admin_notify = TRUE - minimal_player_age = 30 - exp_requirements = 180 - exp_type = EXP_TYPE_CREW - exp_type_department = EXP_TYPE_SILICON - var/do_special_check = TRUE - -/datum/job/ai/equip(mob/living/carbon/human/H, visualsOnly, announce, latejoin, outfit_override) - . = H.AIize(latejoin) - -/datum/job/ai/after_spawn(mob/H, mob/M, latejoin) - . = ..() - if(latejoin) - var/obj/structure/AIcore/latejoin_inactive/lateJoinCore - for(var/obj/structure/AIcore/latejoin_inactive/P in GLOB.latejoin_ai_cores) - if(P.is_available()) - lateJoinCore = P - GLOB.latejoin_ai_cores -= P - break - if(lateJoinCore) - lateJoinCore.available = FALSE - H.forceMove(lateJoinCore.loc) - qdel(lateJoinCore) - var/mob/living/silicon/ai/AI = H - AI.apply_pref_name("ai", M.client) //If this runtimes oh well jobcode is fucked. - AI.set_core_display_icon(null, M.client) - - //we may have been created after our borg - if(SSticker.current_state == GAME_STATE_SETTING_UP) - for(var/mob/living/silicon/robot/R in GLOB.silicon_mobs) - if(!R.connected_ai) - R.TryConnectToAI() - - if(latejoin) - announce(AI) - -/datum/job/ai/override_latejoin_spawn() - return TRUE - -/datum/job/ai/special_check_latejoin(client/C) - if(!do_special_check) - return TRUE - for(var/i in GLOB.latejoin_ai_cores) - var/obj/structure/AIcore/latejoin_inactive/LAI = i - if(istype(LAI)) - if(LAI.is_available()) - return TRUE - return FALSE - -/datum/job/ai/announce(mob/living/silicon/ai/AI) - . = ..() - SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/minor_announce, "[AI] has been downloaded to an empty bluespace-networked AI core at [AREACOORD(AI)].")) - -/datum/job/ai/config_check() - return CONFIG_GET(flag/allow_ai) - -/* -Cyborg -*/ -/datum/job/cyborg - title = "Cyborg" - flag = CYBORG - department_flag = ENGSEC - faction = "Station" - total_positions = 0 - spawn_positions = 1 - supervisors = "your laws and the AI" //Nodrak - selection_color = "#ddffdd" - minimal_player_age = 21 - exp_requirements = 120 - exp_type = EXP_TYPE_CREW - -/datum/job/cyborg/equip(mob/living/carbon/human/H, visualsOnly = FALSE, announce = TRUE, latejoin = FALSE, outfit_override = null) - return H.Robotize(FALSE, latejoin) - -/datum/job/cyborg/after_spawn(mob/living/silicon/robot/R, mob/M) - R.updatename(M.client) - R.gender = NEUTER +/datum/job/ai + title = "AI" + flag = AI_JF +// auto_deadmin_role_flags = DEADMIN_POSITION_SILICON + department_flag = ENGSEC + faction = "Station" + total_positions = 1 + spawn_positions = 1 + selection_color = "#ccffcc" + supervisors = "your laws" + req_admin_notify = TRUE + minimal_player_age = 30 + exp_requirements = 180 + exp_type = EXP_TYPE_CREW + exp_type_department = EXP_TYPE_SILICON + display_order = JOB_DISPLAY_ORDER_AI + var/do_special_check = TRUE + +/datum/job/ai/equip(mob/living/carbon/human/H, visualsOnly, announce, latejoin, datum/outfit/outfit_override, client/preference_source = null) + if(visualsOnly) + CRASH("dynamic preview is unsupported") + . = H.AIize(latejoin,preference_source) + +/datum/job/ai/after_spawn(mob/H, mob/M, latejoin) + . = ..() + if(latejoin) + var/obj/structure/AIcore/latejoin_inactive/lateJoinCore + for(var/obj/structure/AIcore/latejoin_inactive/P in GLOB.latejoin_ai_cores) + if(P.is_available()) + lateJoinCore = P + GLOB.latejoin_ai_cores -= P + break + if(lateJoinCore) + lateJoinCore.available = FALSE + H.forceMove(lateJoinCore.loc) + qdel(lateJoinCore) + var/mob/living/silicon/ai/AI = H + AI.apply_pref_name("ai", M.client) //If this runtimes oh well jobcode is fucked. + AI.set_core_display_icon(null, M.client) + + //we may have been created after our borg + if(SSticker.current_state == GAME_STATE_SETTING_UP) + for(var/mob/living/silicon/robot/R in GLOB.silicon_mobs) + if(!R.connected_ai) + R.TryConnectToAI() + + if(latejoin) + announce(AI) + +/datum/job/ai/override_latejoin_spawn() + return TRUE + +/datum/job/ai/special_check_latejoin(client/C) + if(!do_special_check) + return TRUE + for(var/i in GLOB.latejoin_ai_cores) + var/obj/structure/AIcore/latejoin_inactive/LAI = i + if(istype(LAI)) + if(LAI.is_available()) + return TRUE + return FALSE + +/datum/job/ai/announce(mob/living/silicon/ai/AI) + . = ..() + SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/minor_announce, "[AI] has been downloaded to an empty bluespace-networked AI core at [AREACOORD(AI)].")) + +/datum/job/ai/config_check() + return CONFIG_GET(flag/allow_ai) + diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm index 65805f73fd..726d099ec6 100644 --- a/code/modules/jobs/job_types/assistant.dm +++ b/code/modules/jobs/job_types/assistant.dm @@ -14,7 +14,7 @@ Assistant minimal_access = list() //See /datum/job/assistant/get_access() outfit = /datum/outfit/job/assistant antag_rep = 7 - + display_order = JOB_DISPLAY_ORDER_ASSISTANT /datum/job/assistant/get_access() if(CONFIG_GET(flag/assistants_have_maint_access) || !CONFIG_GET(flag/jobs_have_minimal_access)) //Config has assistant maint access set diff --git a/code/modules/jobs/job_types/atmospheric_technician.dm b/code/modules/jobs/job_types/atmospheric_technician.dm new file mode 100644 index 0000000000..31d66eced2 --- /dev/null +++ b/code/modules/jobs/job_types/atmospheric_technician.dm @@ -0,0 +1,44 @@ +/datum/job/atmos + title = "Atmospheric Technician" + flag = ATMOSTECH + department_head = list("Chief Engineer") + department_flag = ENGSEC + faction = "Station" + total_positions = 3 + spawn_positions = 2 + supervisors = "the chief engineer" + selection_color = "#fff5cc" + exp_requirements = 60 + exp_type = EXP_TYPE_CREW + + outfit = /datum/outfit/job/atmos + + access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, + ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS, ACCESS_CONSTRUCTION, ACCESS_MINERAL_STOREROOM) + display_order = JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN + +/datum/outfit/job/atmos + name = "Atmospheric Technician" + jobtype = /datum/job/atmos + + belt = /obj/item/storage/belt/utility/atmostech + l_pocket = /obj/item/pda/atmos + ears = /obj/item/radio/headset/headset_eng + uniform = /obj/item/clothing/under/rank/atmospheric_technician + r_pocket = /obj/item/analyzer + + backpack = /obj/item/storage/backpack/industrial + satchel = /obj/item/storage/backpack/satchel/eng + duffelbag = /obj/item/storage/backpack/duffelbag/engineering + box = /obj/item/storage/box/engineer + pda_slot = SLOT_L_STORE + backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1) + +/datum/outfit/job/atmos/rig + name = "Atmospheric Technician (Hardsuit)" + + mask = /obj/item/clothing/mask/gas + suit = /obj/item/clothing/suit/space/hardsuit/engine/atmos + suit_store = /obj/item/tank/internals/oxygen + internals_slot = SLOT_S_STORE diff --git a/code/modules/jobs/job_types/bartender.dm b/code/modules/jobs/job_types/bartender.dm new file mode 100644 index 0000000000..5d13720da2 --- /dev/null +++ b/code/modules/jobs/job_types/bartender.dm @@ -0,0 +1,30 @@ +/datum/job/bartender + title = "Bartender" + flag = BARTENDER + department_head = list("Head of Personnel") + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the head of personnel" + selection_color = "#bbe291" + exp_type_department = EXP_TYPE_SERVICE // This is so the jobs menu can work properly + + outfit = /datum/outfit/job/bartender + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM) + display_order = JOB_DISPLAY_ORDER_BARTENDER + +/datum/outfit/job/bartender + name = "Bartender" + jobtype = /datum/job/bartender + + glasses = /obj/item/clothing/glasses/sunglasses/reagent + belt = /obj/item/pda/bar + ears = /obj/item/radio/headset/headset_srv + uniform = /obj/item/clothing/under/rank/bartender + suit = /obj/item/clothing/suit/armor/vest + backpack_contents = list(/obj/item/storage/box/beanbag=1) + shoes = /obj/item/clothing/shoes/laceup + diff --git a/code/modules/jobs/job_types/botanist.dm b/code/modules/jobs/job_types/botanist.dm new file mode 100644 index 0000000000..e6338d9b0a --- /dev/null +++ b/code/modules/jobs/job_types/botanist.dm @@ -0,0 +1,32 @@ +/datum/job/hydro + title = "Botanist" + flag = BOTANIST + department_head = list("Head of Personnel") + department_flag = CIVILIAN + faction = "Station" + total_positions = 3 + spawn_positions = 2 + supervisors = "the head of personnel" + selection_color = "#bbe291" + + outfit = /datum/outfit/job/botanist + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_HYDROPONICS, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) + display_order = JOB_DISPLAY_ORDER_BOTANIST + +/datum/outfit/job/botanist + name = "Botanist" + jobtype = /datum/job/hydro + + belt = /obj/item/pda/botanist + ears = /obj/item/radio/headset/headset_srv + uniform = /obj/item/clothing/under/rank/hydroponics + suit = /obj/item/clothing/suit/apron + gloves =/obj/item/clothing/gloves/botanic_leather + suit_store = /obj/item/plant_analyzer + + backpack = /obj/item/storage/backpack/botany + satchel = /obj/item/storage/backpack/satchel/hyd + + diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index cd9c914e7a..e80840f8aa 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -1,9 +1,7 @@ -/* -Captain -*/ /datum/job/captain title = "Captain" flag = CAPTAIN +// auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY //:eyes: department_head = list("CentCom") department_flag = ENGSEC faction = "Station" @@ -15,12 +13,17 @@ Captain minimal_player_age = 14 exp_requirements = 180 exp_type = EXP_TYPE_CREW + exp_type_department = EXP_TYPE_COMMAND outfit = /datum/outfit/job/captain access = list() //See get_access() minimal_access = list() //See get_access() +// mind_traits = list(TRAIT_DISK_VERIFIER) + + display_order = JOB_DISPLAY_ORDER_CAPTAIN + /datum/job/captain/get_access() return get_all_accesses() @@ -58,54 +61,3 @@ Captain mask = /obj/item/clothing/mask/gas/sechailer suit = /obj/item/clothing/suit/space/hardsuit/captain suit_store = /obj/item/tank/internals/oxygen - -/* -Head of Personnel -*/ -/datum/job/hop - title = "Head of Personnel" - flag = HOP - department_head = list("Captain") - department_flag = CIVILIAN - head_announce = list("Supply", "Service") - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the captain" - selection_color = "#ddddff" - req_admin_notify = 1 - minimal_player_age = 10 - exp_requirements = 180 - exp_type = EXP_TYPE_CREW - exp_type_department = EXP_TYPE_SUPPLY - - outfit = /datum/outfit/job/hop - - access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, - ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, - ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE, - ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER, - ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION, - ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, - ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, - ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE, - ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER, - ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION, - ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM) - - -/datum/outfit/job/hop - name = "Head of Personnel" - jobtype = /datum/job/hop - - id = /obj/item/card/id/silver - belt = /obj/item/pda/heads/hop - ears = /obj/item/radio/headset/heads/hop - uniform = /obj/item/clothing/under/rank/head_of_personnel - shoes = /obj/item/clothing/shoes/sneakers/brown - head = /obj/item/clothing/head/hopcap - backpack_contents = list(/obj/item/storage/box/ids=1,\ - /obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1) - - chameleon_extras = list(/obj/item/gun/energy/e_gun, /obj/item/stamp/hop) diff --git a/code/modules/jobs/job_types/cargo_service.dm b/code/modules/jobs/job_types/cargo_service.dm deleted file mode 100644 index 22ef2a9211..0000000000 --- a/code/modules/jobs/job_types/cargo_service.dm +++ /dev/null @@ -1,290 +0,0 @@ -/* -Quartermaster -*/ -/datum/job/qm - title = "Quartermaster" - flag = QUARTERMASTER - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the head of personnel" - selection_color = "#d7b088" - - outfit = /datum/outfit/job/quartermaster - - access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT) - minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT) - -/datum/outfit/job/quartermaster - name = "Quartermaster" - jobtype = /datum/job/qm - - belt = /obj/item/pda/quartermaster - ears = /obj/item/radio/headset/headset_cargo - uniform = /obj/item/clothing/under/rank/cargo - shoes = /obj/item/clothing/shoes/sneakers/brown - glasses = /obj/item/clothing/glasses/sunglasses - l_hand = /obj/item/clipboard - - chameleon_extras = /obj/item/stamp/qm - -/* -Cargo Technician -*/ -/datum/job/cargo_tech - title = "Cargo Technician" - flag = CARGOTECH - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 3 - spawn_positions = 2 - supervisors = "the quartermaster and the head of personnel" - selection_color = "#dcba97" - - outfit = /datum/outfit/job/cargo_tech - - access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/cargo_tech - name = "Cargo Technician" - jobtype = /datum/job/cargo_tech - - belt = /obj/item/pda/cargo - ears = /obj/item/radio/headset/headset_cargo - uniform = /obj/item/clothing/under/rank/cargotech - l_hand = /obj/item/export_scanner - -/* -Shaft Miner -*/ -/datum/job/mining - title = "Shaft Miner" - flag = MINER - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 3 - spawn_positions = 3 - supervisors = "the quartermaster and the head of personnel" - selection_color = "#dcba97" - custom_spawn_text = "Remember, you are a miner, not a hunter. Hunting monsters is not a requirement of your job, the only requirement of your job is to provide materials for the station. Don't be afraid to run away if you're inexperienced with fighting the mining area's locals." - - outfit = /datum/outfit/job/miner - - access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/miner - name = "Shaft Miner (Lavaland)" - jobtype = /datum/job/mining - - belt = /obj/item/pda/shaftminer - ears = /obj/item/radio/headset/headset_cargo/mining - shoes = /obj/item/clothing/shoes/workboots/mining - gloves = /obj/item/clothing/gloves/color/black - uniform = /obj/item/clothing/under/rank/miner/lavaland - l_pocket = /obj/item/reagent_containers/hypospray/medipen/survival - r_pocket = /obj/item/flashlight/seclite - backpack_contents = list( - /obj/item/storage/bag/ore=1,\ - /obj/item/kitchen/knife/combat/survival=1,\ - /obj/item/mining_voucher=1,\ - /obj/item/suit_voucher=1,\ - /obj/item/stack/marker_beacon/ten=1) - - backpack = /obj/item/storage/backpack/explorer - satchel = /obj/item/storage/backpack/satchel/explorer - duffelbag = /obj/item/storage/backpack/duffelbag - box = /obj/item/storage/box/survival_mining - - chameleon_extras = /obj/item/gun/energy/kinetic_accelerator - -/datum/outfit/job/miner/asteroid - name = "Shaft Miner (Asteroid)" - uniform = /obj/item/clothing/under/rank/miner - shoes = /obj/item/clothing/shoes/workboots - -/datum/outfit/job/miner/equipped - name = "Shaft Miner (Lavaland + Equipment)" - suit = /obj/item/clothing/suit/hooded/explorer/standard - mask = /obj/item/clothing/mask/gas/explorer - glasses = /obj/item/clothing/glasses/meson - suit_store = /obj/item/tank/internals/oxygen - internals_slot = SLOT_S_STORE - backpack_contents = list( - /obj/item/storage/bag/ore=1, - /obj/item/kitchen/knife/combat/survival=1, - /obj/item/mining_voucher=1, - /obj/item/t_scanner/adv_mining_scanner/lesser=1, - /obj/item/gun/energy/kinetic_accelerator=1,\ - /obj/item/stack/marker_beacon/ten=1) - -/datum/outfit/job/miner/equipped/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - ..() - if(visualsOnly) - return - if(istype(H.wear_suit, /obj/item/clothing/suit/hooded)) - var/obj/item/clothing/suit/hooded/S = H.wear_suit - S.ToggleHood() - -/datum/outfit/job/miner/equipped/hardsuit - name = "Shaft Miner (Equipment + Hardsuit)" - suit = /obj/item/clothing/suit/space/hardsuit/mining - mask = /obj/item/clothing/mask/breath - - -/* -Bartender -*/ -/datum/job/bartender - title = "Bartender" - flag = BARTENDER - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the head of personnel" - selection_color = "#bbe291" - - outfit = /datum/outfit/job/bartender - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM) - - -/datum/outfit/job/bartender - name = "Bartender" - jobtype = /datum/job/bartender - - glasses = /obj/item/clothing/glasses/sunglasses/reagent - belt = /obj/item/pda/bar - ears = /obj/item/radio/headset/headset_srv - uniform = /obj/item/clothing/under/rank/bartender - suit = /obj/item/clothing/suit/armor/vest - backpack_contents = list(/obj/item/storage/box/beanbag=1,/obj/item/book/granter/action/drink_fling=1) - shoes = /obj/item/clothing/shoes/laceup - -/* -Cook -*/ -/datum/job/cook - title = "Cook" - flag = COOK - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 2 - spawn_positions = 1 - supervisors = "the head of personnel" - selection_color = "#bbe291" - var/cooks = 0 //Counts cooks amount - - outfit = /datum/outfit/job/cook - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/cook - name = "Cook" - jobtype = /datum/job/cook - - belt = /obj/item/pda/cook - ears = /obj/item/radio/headset/headset_srv - uniform = /obj/item/clothing/under/rank/chef - suit = /obj/item/clothing/suit/toggle/chef - head = /obj/item/clothing/head/chefhat - mask = /obj/item/clothing/mask/fakemoustache/italian - backpack_contents = list(/obj/item/sharpener = 1) - -/datum/outfit/job/cook/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - ..() - var/datum/job/cook/J = SSjob.GetJobType(jobtype) - if(J) // Fix for runtime caused by invalid job being passed - if(J.cooks>0)//Cooks - suit = /obj/item/clothing/suit/apron/chef - head = /obj/item/clothing/head/soft/mime - if(!visualsOnly) - J.cooks++ - -/datum/outfit/job/cook/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - ..() - if(visualsOnly) - return - var/list/possible_boxes = subtypesof(/obj/item/storage/box/ingredients) - var/chosen_box = pick(possible_boxes) - var/obj/item/storage/box/I = new chosen_box(src) - H.equip_to_slot_or_del(I,SLOT_IN_BACKPACK) - var/datum/martial_art/cqc/under_siege/justacook = new - justacook.teach(H) - -/* -Botanist -*/ -/datum/job/hydro - title = "Botanist" - flag = BOTANIST - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 3 - spawn_positions = 2 - supervisors = "the head of personnel" - selection_color = "#bbe291" - - outfit = /datum/outfit/job/botanist - - access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_HYDROPONICS, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) - // Removed tox and chem access because STOP PISSING OFF THE CHEMIST GUYS - // Removed medical access because WHAT THE FUCK YOU AREN'T A DOCTOR YOU GROW WHEAT - // Given Morgue access because they have a viable means of cloning. - - -/datum/outfit/job/botanist - name = "Botanist" - jobtype = /datum/job/hydro - - belt = /obj/item/pda/botanist - ears = /obj/item/radio/headset/headset_srv - uniform = /obj/item/clothing/under/rank/hydroponics - suit = /obj/item/clothing/suit/apron - gloves =/obj/item/clothing/gloves/botanic_leather - suit_store = /obj/item/plant_analyzer - - backpack = /obj/item/storage/backpack/botany - satchel = /obj/item/storage/backpack/satchel/hyd - - -/* -Janitor -*/ -/datum/job/janitor - title = "Janitor" - flag = JANITOR - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 2 - spawn_positions = 1 - supervisors = "the head of personnel" - selection_color = "#bbe291" - var/global/janitors = 0 - - outfit = /datum/outfit/job/janitor - - access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/janitor - name = "Janitor" - jobtype = /datum/job/janitor - - belt = /obj/item/pda/janitor - ears = /obj/item/radio/headset/headset_srv - uniform = /obj/item/clothing/under/rank/janitor - backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1) diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm new file mode 100644 index 0000000000..9699f12be5 --- /dev/null +++ b/code/modules/jobs/job_types/cargo_technician.dm @@ -0,0 +1,27 @@ +/datum/job/cargo_tech + title = "Cargo Technician" + flag = CARGOTECH + department_head = list("Quartermaster") + department_flag = CIVILIAN + faction = "Station" + total_positions = 3 + spawn_positions = 2 + supervisors = "the quartermaster" + selection_color = "#dcba97" + + outfit = /datum/outfit/job/cargo_tech + + access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM) + + display_order = JOB_DISPLAY_ORDER_CARGO_TECHNICIAN + +/datum/outfit/job/cargo_tech + name = "Cargo Technician" + jobtype = /datum/job/cargo_tech + + belt = /obj/item/pda/cargo + ears = /obj/item/radio/headset/headset_cargo + uniform = /obj/item/clothing/under/rank/cargotech + l_hand = /obj/item/export_scanner + diff --git a/code/modules/jobs/job_types/civilian_chaplain.dm b/code/modules/jobs/job_types/chaplain.dm similarity index 67% rename from code/modules/jobs/job_types/civilian_chaplain.dm rename to code/modules/jobs/job_types/chaplain.dm index e44347a208..f2ced729a9 100644 --- a/code/modules/jobs/job_types/civilian_chaplain.dm +++ b/code/modules/jobs/job_types/chaplain.dm @@ -1,94 +1,121 @@ -//Due to how large this one is it gets its own file -/* -Chaplain -*/ -/datum/job/chaplain - title = "Chaplain" - flag = CHAPLAIN - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the head of personnel" - selection_color = "#dddddd" - - outfit = /datum/outfit/job/chaplain - - access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE) - minimal_access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE) - -/datum/job/chaplain/after_spawn(mob/living/H, mob/M) - if(H.mind) - H.mind.isholy = TRUE - - var/obj/item/storage/book/bible/booze/B = new - - if(SSreligion.religion) - B.deity_name = SSreligion.deity - B.name = SSreligion.bible_name - B.icon_state = SSreligion.bible_icon_state - B.item_state = SSreligion.bible_item_state - to_chat(H, "There is already an established religion onboard the station. You are an acolyte of [SSreligion.deity]. Defer to the Chaplain.") - H.equip_to_slot_or_del(B, SLOT_IN_BACKPACK) - var/nrt = SSreligion.holy_weapon_type || /obj/item/nullrod - var/obj/item/nullrod/N = new nrt(H) - H.put_in_hands(N) - return - - var/new_religion = "Christianity" - if(M.client && M.client.prefs.custom_names["religion"]) - new_religion = M.client.prefs.custom_names["religion"] - - var/new_deity = "Space Jesus" - if(M.client && M.client.prefs.custom_names["deity"]) - new_deity = M.client.prefs.custom_names["deity"] - - B.deity_name = new_deity - - - switch(lowertext(new_religion)) - if("christianity") - B.name = pick("The Holy Bible","The Dead Sea Scrolls") - if("satanism") - B.name = "The Unholy Bible" - if("cthulhu") - B.name = "The Necronomicon" - if("islam") - B.name = "Quran" - if("scientology") - B.name = pick("The Biography of L. Ron Hubbard","Dianetics") - if("chaos") - B.name = "The Book of Lorgar" - if("imperium") - B.name = "Uplifting Primer" - if("toolboxia") - B.name = "Toolbox Manifesto" - if("homosexuality") - B.name = "Guys Gone Wild" - if("lol", "wtf", "gay", "penis", "ass", "poo", "badmin", "shitmin", "deadmin", "cock", "cocks", "meme", "memes") - B.name = pick("Woodys Got Wood: The Aftermath", "War of the Cocks", "Sweet Bro and Hella Jef: Expanded Edition") - H.adjustBrainLoss(100) // starts off retarded as fuck - if("science") - B.name = pick("Principle of Relativity", "Quantum Enigma: Physics Encounters Consciousness", "Programming the Universe", "Quantum Physics and Theology", "String Theory for Dummies", "How To: Build Your Own Warp Drive", "The Mysteries of Bluespace", "Playing God: Collector's Edition") - else - B.name = "The Holy Book of [new_religion]" - - SSreligion.religion = new_religion - SSreligion.bible_name = B.name - SSreligion.deity = B.deity_name - - H.equip_to_slot_or_del(B, SLOT_IN_BACKPACK) - - SSblackbox.record_feedback("text", "religion_name", 1, "[new_religion]", 1) - SSblackbox.record_feedback("text", "religion_deity", 1, "[new_deity]", 1) - -/datum/outfit/job/chaplain - name = "Chaplain" - jobtype = /datum/job/chaplain - - belt = /obj/item/pda/chaplain - uniform = /obj/item/clothing/under/rank/chaplain - backpack_contents = list(/obj/item/camera/spooky = 1) - backpack = /obj/item/storage/backpack/cultpack - satchel = /obj/item/storage/backpack/cultpack +/datum/job/chaplain + title = "Chaplain" + flag = CHAPLAIN + department_head = list("Head of Personnel") + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the head of personnel" + selection_color = "#dddddd" + + outfit = /datum/outfit/job/chaplain + + access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE) + minimal_access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE) + + display_order = JOB_DISPLAY_ORDER_CHAPLAIN + + +/datum/job/chaplain/after_spawn(mob/living/H, mob/M) + . = ..() + if(H.mind) + H.mind.isholy = TRUE + + var/obj/item/storage/book/bible/booze/B = new + + if(SSreligion.religion) + B.deity_name = SSreligion.deity + B.name = SSreligion.bible_name + B.icon_state = SSreligion.bible_icon_state + B.item_state = SSreligion.bible_item_state + to_chat(H, "There is already an established religion onboard the station. You are an acolyte of [SSreligion.deity]. Defer to the Chaplain.") + H.equip_to_slot_or_del(B, SLOT_IN_BACKPACK) + var/nrt = SSreligion.holy_weapon_type || /obj/item/nullrod + var/obj/item/nullrod/N = new nrt(H) + H.put_in_hands(N) + return + + var/new_religion = DEFAULT_RELIGION + if(M.client && M.client.prefs.custom_names["religion"]) + new_religion = M.client.prefs.custom_names["religion"] + + var/new_deity = DEFAULT_DEITY + if(M.client && M.client.prefs.custom_names["deity"]) + new_deity = M.client.prefs.custom_names["deity"] + + B.deity_name = new_deity + + + switch(lowertext(new_religion)) + if("christianity") // DEFAULT_RELIGION + B.name = pick("The Holy Bible","The Dead Sea Scrolls") + if("buddhism") + B.name = "The Sutras" + if("clownism","honkmother","honk","honkism","comedy") + B.name = pick("The Holy Joke Book", "Just a Prank", "Hymns to the Honkmother") + if("chaos") + B.name = "The Book of Lorgar" + if("cthulhu") + B.name = "The Necronomicon" + if("hinduism") + B.name = "The Vedas" + if("homosexuality") + B.name = pick("Guys Gone Wild","Coming Out of The Closet") + if("imperium") + B.name = "Uplifting Primer" + if("islam") + B.name = "Quran" + if("judaism") + B.name = "The Torah" + if("lampism") + B.name = "Fluorescent Incandescence" + if("lol", "wtf", "gay", "penis", "ass", "poo", "badmin", "shitmin", "deadmin", "cock", "cocks", "meme", "memes") + B.name = pick("Woodys Got Wood: The Aftermath", "War of the Cocks", "Sweet Bro and Hella Jef: Expanded Edition","F.A.T.A.L. Rulebook") + H.adjustBrainLoss(100) // starts off retarded as fuck + if("monkeyism","apism","gorillism","primatism") + B.name = pick("Going Bananas", "Bananas Out For Harambe") + if("mormonism") + B.name = "The Book of Mormon" + if("pastafarianism") + B.name = "The Gospel of the Flying Spaghetti Monster" + if("rastafarianism","rasta") + B.name = "The Holy Piby" + if("satanism") + B.name = "The Unholy Bible" + if("science") + B.name = pick("Principle of Relativity", "Quantum Enigma: Physics Encounters Consciousness", "Programming the Universe", "Quantum Physics and Theology", "String Theory for Dummies", "How To: Build Your Own Warp Drive", "The Mysteries of Bluespace", "Playing God: Collector's Edition") + if("scientology") + B.name = pick("The Biography of L. Ron Hubbard","Dianetics") + if("servicianism", "partying") + B.name = "The Tenets of Servicia" + B.deity_name = pick("Servicia", "Space Bacchus", "Space Dionysus") + B.desc = "Happy, Full, Clean. Live it and give it." + if("subgenius") + B.name = "Book of the SubGenius" + if("toolboxia","greytide") + B.name = pick("Toolbox Manifesto","iGlove Assistants") + if("weeaboo","kawaii") + B.name = pick("Fanfiction Compendium","Japanese for Dummies","The Manganomicon","Establishing Your O.T.P") + else + B.name = "The Holy Book of [new_religion]" + + SSreligion.religion = new_religion + SSreligion.bible_name = B.name + SSreligion.deity = B.deity_name + + H.equip_to_slot_or_del(B, SLOT_IN_BACKPACK) + + SSblackbox.record_feedback("text", "religion_name", 1, "[new_religion]", 1) + SSblackbox.record_feedback("text", "religion_deity", 1, "[new_deity]", 1) + +/datum/outfit/job/chaplain + name = "Chaplain" + jobtype = /datum/job/chaplain + + belt = /obj/item/pda/chaplain + ears = /obj/item/radio/headset/headset_srv + uniform = /obj/item/clothing/under/rank/chaplain + backpack_contents = list(/obj/item/camera/spooky = 1) + backpack = /obj/item/storage/backpack/cultpack + satchel = /obj/item/storage/backpack/cultpack diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm new file mode 100644 index 0000000000..908209ef69 --- /dev/null +++ b/code/modules/jobs/job_types/chemist.dm @@ -0,0 +1,36 @@ +/datum/job/chemist + title = "Chemist" + flag = CHEMIST + department_head = list("Chief Medical Officer") + department_flag = MEDSCI + faction = "Station" + total_positions = 2 + spawn_positions = 2 + supervisors = "the chief medical officer" + selection_color = "#ffeef0" + exp_type = EXP_TYPE_CREW + exp_requirements = 60 + + outfit = /datum/outfit/job/chemist + + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_MINERAL_STOREROOM) + + display_order = JOB_DISPLAY_ORDER_CHEMIST + +/datum/outfit/job/chemist + name = "Chemist" + jobtype = /datum/job/chemist + + glasses = /obj/item/clothing/glasses/science + belt = /obj/item/pda/chemist + ears = /obj/item/radio/headset/headset_med + uniform = /obj/item/clothing/under/rank/chemist + shoes = /obj/item/clothing/shoes/sneakers/white + suit = /obj/item/clothing/suit/toggle/labcoat/chemist + backpack = /obj/item/storage/backpack/chemistry + satchel = /obj/item/storage/backpack/satchel/chem + duffelbag = /obj/item/storage/backpack/duffelbag/med + + chameleon_extras = /obj/item/gun/syringe + diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm new file mode 100644 index 0000000000..dd89e925b5 --- /dev/null +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -0,0 +1,63 @@ +/datum/job/chief_engineer + title = "Chief Engineer" + flag = CHIEF +// auto_deadmin_role_flags = DEADMIN_POSITION_HEAD + department_head = list("Captain") + department_flag = ENGSEC + head_announce = list("Engineering") + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the captain" + selection_color = "#ffeeaa" + req_admin_notify = 1 + minimal_player_age = 7 + exp_requirements = 180 + exp_type = EXP_TYPE_CREW + exp_type_department = EXP_TYPE_ENGINEERING + + outfit = /datum/outfit/job/ce + + access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, + ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EVA, + ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS, ACCESS_MINISAT, + ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, + ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EVA, + ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS, ACCESS_MINISAT, + ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM) + + display_order = JOB_DISPLAY_ORDER_CHIEF_ENGINEER + +/datum/outfit/job/ce + name = "Chief Engineer" + jobtype = /datum/job/chief_engineer + + id = /obj/item/card/id/silver + belt = /obj/item/storage/belt/utility/chief/full + l_pocket = /obj/item/pda/heads/ce + ears = /obj/item/radio/headset/heads/ce + uniform = /obj/item/clothing/under/rank/chief_engineer + shoes = /obj/item/clothing/shoes/sneakers/brown + head = /obj/item/clothing/head/hardhat/white + gloves = /obj/item/clothing/gloves/color/black/ce + backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced=1) + + backpack = /obj/item/storage/backpack/industrial + satchel = /obj/item/storage/backpack/satchel/eng + duffelbag = /obj/item/storage/backpack/duffelbag/engineering + box = /obj/item/storage/box/engineer + pda_slot = SLOT_L_STORE + chameleon_extras = /obj/item/stamp/ce + +/datum/outfit/job/ce/rig + name = "Chief Engineer (Hardsuit)" + + mask = /obj/item/clothing/mask/breath + suit = /obj/item/clothing/suit/space/hardsuit/engine/elite + shoes = /obj/item/clothing/shoes/magboots/advance + suit_store = /obj/item/tank/internals/oxygen + glasses = /obj/item/clothing/glasses/meson/engine + gloves = /obj/item/clothing/gloves/color/yellow + head = null + internals_slot = SLOT_S_STORE diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm new file mode 100644 index 0000000000..54963b1bc1 --- /dev/null +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -0,0 +1,58 @@ +/datum/job/cmo + title = "Chief Medical Officer" + flag = CMO_JF + department_head = list("Captain") + department_flag = MEDSCI +// auto_deadmin_role_flags = DEADMIN_POSITION_HEAD + head_announce = list("Medical") + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the captain" + selection_color = "#ffddf0" + req_admin_notify = 1 + minimal_player_age = 7 + exp_requirements = 180 + exp_type = EXP_TYPE_CREW + exp_type_department = EXP_TYPE_MEDICAL + + outfit = /datum/outfit/job/cmo + + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM, + ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE, + ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS) + minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM, + ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE, + ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS) + + display_order = JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER + +/datum/outfit/job/cmo + name = "Chief Medical Officer" + jobtype = /datum/job/cmo + + id = /obj/item/card/id/silver + belt = /obj/item/pda/heads/cmo + l_pocket = /obj/item/pinpointer/crew + ears = /obj/item/radio/headset/heads/cmo + uniform = /obj/item/clothing/under/rank/chief_medical_officer + shoes = /obj/item/clothing/shoes/sneakers/brown + suit = /obj/item/clothing/suit/toggle/labcoat/cmo + l_hand = /obj/item/storage/firstaid/regular + suit_store = /obj/item/flashlight/pen + backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1) + + backpack = /obj/item/storage/backpack/medic + satchel = /obj/item/storage/backpack/satchel/med + duffelbag = /obj/item/storage/backpack/duffelbag/med + + chameleon_extras = list(/obj/item/gun/syringe, /obj/item/stamp/cmo) + +/datum/outfit/job/cmo/hardsuit + name = "Chief Medical Officer (Hardsuit)" + + mask = /obj/item/clothing/mask/breath + suit = /obj/item/clothing/suit/space/hardsuit/medical + suit_store = /obj/item/tank/internals/oxygen + r_pocket = /obj/item/flashlight/pen + diff --git a/code/modules/jobs/job_types/civilian.dm b/code/modules/jobs/job_types/civilian.dm deleted file mode 100644 index 944499470a..0000000000 --- a/code/modules/jobs/job_types/civilian.dm +++ /dev/null @@ -1,202 +0,0 @@ -/* -Clown -*/ -/datum/job/clown - title = "Clown" - flag = CLOWN - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the head of personnel" - selection_color = "#dddddd" - - outfit = /datum/outfit/job/clown - - access = list(ACCESS_THEATRE) - minimal_access = list(ACCESS_THEATRE) - -/datum/job/clown/after_spawn(mob/living/carbon/human/H, mob/M) - H.apply_pref_name("clown", M.client) - -/datum/outfit/job/clown - name = "Clown" - jobtype = /datum/job/clown - - belt = /obj/item/pda/clown - uniform = /obj/item/clothing/under/rank/clown - shoes = /obj/item/clothing/shoes/clown_shoes - mask = /obj/item/clothing/mask/gas/clown_hat - l_pocket = /obj/item/bikehorn - backpack_contents = list( - /obj/item/stamp/clown = 1, - /obj/item/reagent_containers/spray/waterflower = 1, - /obj/item/reagent_containers/food/snacks/grown/banana = 1, - /obj/item/instrument/bikehorn = 1, - ) - - implants = list(/obj/item/implant/sad_trombone) - - backpack = /obj/item/storage/backpack/clown - satchel = /obj/item/storage/backpack/clown - duffelbag = /obj/item/storage/backpack/duffelbag/clown //strangely has a duffel - - box = /obj/item/storage/box/hug/survival - - chameleon_extras = /obj/item/stamp/clown - - -/datum/outfit/job/clown/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - ..() - if(visualsOnly) - return - - H.fully_replace_character_name(H.real_name, pick(GLOB.clown_names)) - -/datum/outfit/job/clown/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - ..() - if(visualsOnly) - return - - H.dna.add_mutation(CLOWNMUT) - -/* -Mime -*/ -/datum/job/mime - title = "Mime" - flag = MIME - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the head of personnel" - selection_color = "#dddddd" - - outfit = /datum/outfit/job/mime - - access = list(ACCESS_THEATRE) - minimal_access = list(ACCESS_THEATRE) - -/datum/job/mime/after_spawn(mob/living/carbon/human/H, mob/M) - H.apply_pref_name("mime", M.client) - -/datum/outfit/job/mime - name = "Mime" - jobtype = /datum/job/mime - - belt = /obj/item/pda/mime - uniform = /obj/item/clothing/under/rank/mime - mask = /obj/item/clothing/mask/gas/mime - gloves = /obj/item/clothing/gloves/color/white - head = /obj/item/clothing/head/frenchberet - suit = /obj/item/clothing/suit/suspenders - backpack_contents = list(/obj/item/reagent_containers/food/drinks/bottle/bottleofnothing=1) - - accessory = /obj/item/clothing/accessory/pocketprotector/cosmetology - backpack = /obj/item/storage/backpack/mime - satchel = /obj/item/storage/backpack/mime - - -/datum/outfit/job/mime/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - ..() - - if(visualsOnly) - return - - if(H.mind) - H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall(null)) - H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/mime/speak(null)) - H.mind.miming = 1 - -/* -Curator -*/ -/datum/job/curator - title = "Curator" - flag = CURATOR - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the head of personnel" - selection_color = "#dddddd" - - outfit = /datum/outfit/job/curator - - access = list(ACCESS_LIBRARY) - minimal_access = list(ACCESS_LIBRARY, ACCESS_CONSTRUCTION,ACCESS_MINING_STATION) - -/datum/outfit/job/curator - name = "Curator" - jobtype = /datum/job/curator - - belt = /obj/item/pda/curator - uniform = /obj/item/clothing/under/rank/curator - l_hand = /obj/item/storage/bag/books - r_pocket = /obj/item/key/displaycase - l_pocket = /obj/item/laser_pointer - accessory = /obj/item/clothing/accessory/pocketprotector/full - backpack_contents = list( - /obj/item/melee/curator_whip = 1, - /obj/item/soapstone = 1, - /obj/item/barcodescanner = 1 - ) - - -/datum/outfit/job/curator/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - ..() - - if(visualsOnly) - return - - H.grant_all_languages(omnitongue=TRUE) -/* -Lawyer -*/ -/datum/job/lawyer - title = "Lawyer" - flag = LAWYER - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 2 - spawn_positions = 2 - supervisors = "the head of personnel" - selection_color = "#dddddd" - var/lawyers = 0 //Counts lawyer amount - - outfit = /datum/outfit/job/lawyer - - access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) - minimal_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) - -/datum/outfit/job/lawyer - name = "Lawyer" - jobtype = /datum/job/lawyer - - belt = /obj/item/pda/lawyer - ears = /obj/item/radio/headset/headset_sec - uniform = /obj/item/clothing/under/lawyer/bluesuit - suit = /obj/item/clothing/suit/toggle/lawyer - shoes = /obj/item/clothing/shoes/laceup - l_hand = /obj/item/storage/briefcase/lawyer - l_pocket = /obj/item/laser_pointer - r_pocket = /obj/item/clothing/accessory/lawyers_badge - - chameleon_extras = /obj/item/stamp/law - - -/datum/outfit/job/lawyer/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - ..() - if(visualsOnly) - return - - var/datum/job/lawyer/J = SSjob.GetJobType(jobtype) - J.lawyers++ - if(J.lawyers>1) - uniform = /obj/item/clothing/under/lawyer/purpsuit - suit = /obj/item/clothing/suit/toggle/lawyer/purple diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm new file mode 100644 index 0000000000..d73937a604 --- /dev/null +++ b/code/modules/jobs/job_types/clown.dm @@ -0,0 +1,57 @@ +/datum/job/clown + title = "Clown" + flag = CLOWN + department_head = list("Head of Personnel") + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the head of personnel" + selection_color = "#dddddd" + + outfit = /datum/outfit/job/clown + + access = list(ACCESS_THEATRE) + minimal_access = list(ACCESS_THEATRE) + + display_order = JOB_DISPLAY_ORDER_CLOWN + + +/datum/job/clown/after_spawn(mob/living/carbon/human/H, mob/M) + . = ..() + H.apply_pref_name("clown", M.client) + +/datum/outfit/job/clown + name = "Clown" + jobtype = /datum/job/clown + + belt = /obj/item/pda/clown + ears = /obj/item/radio/headset/headset_srv + uniform = /obj/item/clothing/under/rank/clown + shoes = /obj/item/clothing/shoes/clown_shoes + mask = /obj/item/clothing/mask/gas/clown_hat + l_pocket = /obj/item/bikehorn + backpack_contents = list( + /obj/item/stamp/clown = 1, + /obj/item/reagent_containers/spray/waterflower = 1, + /obj/item/reagent_containers/food/snacks/grown/banana = 1, + /obj/item/instrument/bikehorn = 1, + ) + + implants = list(/obj/item/implant/sad_trombone) + + backpack = /obj/item/storage/backpack/clown + satchel = /obj/item/storage/backpack/clown + duffelbag = /obj/item/storage/backpack/duffelbag/clown //strangely has a duffel + + box = /obj/item/storage/box/hug/survival + + chameleon_extras = /obj/item/stamp/clown + +/datum/outfit/job/clown/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + ..() + if(visualsOnly) + return + + H.fully_replace_character_name(H.real_name, pick(GLOB.clown_names)) //rename the mob AFTER they're equipped so their ID gets updated properly. + H.dna.add_mutation(CLOWNMUT) diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm new file mode 100644 index 0000000000..c213d4dffc --- /dev/null +++ b/code/modules/jobs/job_types/cook.dm @@ -0,0 +1,52 @@ +/datum/job/cook + title = "Cook" + flag = COOK + department_head = list("Head of Personnel") + department_flag = CIVILIAN + faction = "Station" + total_positions = 2 + spawn_positions = 1 + supervisors = "the head of personnel" + selection_color = "#bbe291" + var/cooks = 0 //Counts cooks amount + + outfit = /datum/outfit/job/cook + + access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) + + display_order = JOB_DISPLAY_ORDER_COOK + +/datum/outfit/job/cook + name = "Cook" + jobtype = /datum/job/cook + + belt = /obj/item/pda/cook + ears = /obj/item/radio/headset/headset_srv + uniform = /obj/item/clothing/under/rank/chef + suit = /obj/item/clothing/suit/toggle/chef + head = /obj/item/clothing/head/chefhat + mask = /obj/item/clothing/mask/fakemoustache/italian + backpack_contents = list(/obj/item/sharpener = 1) + +/datum/outfit/job/cook/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + ..() + var/datum/job/cook/J = SSjob.GetJobType(jobtype) + if(J) // Fix for runtime caused by invalid job being passed + if(J.cooks>0)//Cooks + suit = /obj/item/clothing/suit/apron/chef + head = /obj/item/clothing/head/soft/mime + if(!visualsOnly) + J.cooks++ + +/datum/outfit/job/cook/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + ..() + if(visualsOnly) + return + var/list/possible_boxes = subtypesof(/obj/item/storage/box/ingredients) + var/chosen_box = pick(possible_boxes) + var/obj/item/storage/box/I = new chosen_box(src) + H.equip_to_slot_or_del(I,SLOT_IN_BACKPACK) + var/datum/martial_art/cqc/under_siege/justacook = new + justacook.teach(H) + diff --git a/code/modules/jobs/job_types/curator.dm b/code/modules/jobs/job_types/curator.dm new file mode 100644 index 0000000000..6199d812df --- /dev/null +++ b/code/modules/jobs/job_types/curator.dm @@ -0,0 +1,42 @@ +/datum/job/curator + title = "Curator" + flag = CURATOR + department_head = list("Head of Personnel") + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the head of personnel" + selection_color = "#dddddd" + + outfit = /datum/outfit/job/curator + + access = list(ACCESS_LIBRARY, ACCESS_CONSTRUCTION, ACCESS_MINING_STATION) + minimal_access = list(ACCESS_LIBRARY, ACCESS_CONSTRUCTION, ACCESS_MINING_STATION) + + display_order = JOB_DISPLAY_ORDER_CURATOR + +/datum/outfit/job/curator + name = "Curator" + jobtype = /datum/job/curator + + shoes = /obj/item/clothing/shoes/laceup + belt = /obj/item/pda/curator + ears = /obj/item/radio/headset/headset_srv + uniform = /obj/item/clothing/under/rank/curator + l_hand = /obj/item/storage/bag/books + r_pocket = /obj/item/key/displaycase + l_pocket = /obj/item/laser_pointer + accessory = /obj/item/clothing/accessory/pocketprotector/full + backpack_contents = list( + /obj/item/soapstone = 1, + /obj/item/barcodescanner = 1 + ) + +/datum/outfit/job/curator/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + ..() + + if(visualsOnly) + return + + H.grant_all_languages(omnitongue=TRUE) diff --git a/code/modules/jobs/job_types/cyborg.dm b/code/modules/jobs/job_types/cyborg.dm new file mode 100644 index 0000000000..29c4c3d833 --- /dev/null +++ b/code/modules/jobs/job_types/cyborg.dm @@ -0,0 +1,27 @@ +/datum/job/cyborg + title = "Cyborg" + flag = CYBORG +// auto_deadmin_role_flags = DEADMIN_POSITION_SILICON + department_flag = ENGSEC + faction = "Station" + total_positions = 0 + spawn_positions = 1 + supervisors = "your laws and the AI" //Nodrak + selection_color = "#ddffdd" + minimal_player_age = 21 + exp_requirements = 120 + exp_type = EXP_TYPE_CREW + + display_order = JOB_DISPLAY_ORDER_CYBORG + +/datum/job/cyborg/equip(mob/living/carbon/human/H, visualsOnly = FALSE, announce = TRUE, latejoin = FALSE, datum/outfit/outfit_override = null, client/preference_source = null) + if(visualsOnly) + CRASH("dynamic preview is unsupported") + return H.Robotize(FALSE, latejoin) + +/datum/job/cyborg/after_spawn(mob/living/silicon/robot/R, mob/M) + R.updatename(M.client) + R.gender = NEUTER + +/datum/job/cyborg/radio_help_message(mob/M) + to_chat(M, "Prefix your message with :b to speak with other cyborgs and AI.") diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm new file mode 100644 index 0000000000..cfd9d5fdab --- /dev/null +++ b/code/modules/jobs/job_types/detective.dm @@ -0,0 +1,56 @@ +/datum/job/detective + title = "Detective" + flag = DETECTIVE +// auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY + department_head = list("Head of Security") + department_flag = ENGSEC + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the head of security" + selection_color = "#ffeeee" + minimal_player_age = 7 + exp_requirements = 300 + exp_type = EXP_TYPE_CREW + + outfit = /datum/outfit/job/detective + + access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) + +// mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + + display_order = JOB_DISPLAY_ORDER_DETECTIVE + +/datum/outfit/job/detective + name = "Detective" + jobtype = /datum/job/detective + + belt = /obj/item/pda/detective + ears = /obj/item/radio/headset/headset_sec/alt + uniform = /obj/item/clothing/under/rank/det + neck = /obj/item/clothing/neck/tie/black + shoes = /obj/item/clothing/shoes/sneakers/brown + suit = /obj/item/clothing/suit/det_suit + gloves = /obj/item/clothing/gloves/color/black + head = /obj/item/clothing/head/fedora/det_hat + l_pocket = /obj/item/toy/crayon/white + r_pocket = /obj/item/lighter + backpack_contents = list(/obj/item/storage/box/evidence=1,\ + /obj/item/detective_scanner=1,\ + /obj/item/melee/classic_baton=1) + mask = /obj/item/clothing/mask/cigarette + + implants = list(/obj/item/implant/mindshield) + + chameleon_extras = list(/obj/item/gun/ballistic/revolver/detective, /obj/item/clothing/glasses/sunglasses) + +/datum/outfit/job/detective/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + ..() + var/obj/item/clothing/mask/cigarette/cig = H.wear_mask + if(istype(cig)) //Some species specfic changes can mess this up (plasmamen) + cig.light("") + + if(visualsOnly) + return + diff --git a/code/modules/jobs/job_types/engineering.dm b/code/modules/jobs/job_types/engineering.dm deleted file mode 100644 index f28e5f1afc..0000000000 --- a/code/modules/jobs/job_types/engineering.dm +++ /dev/null @@ -1,167 +0,0 @@ -/* -Chief Engineer -*/ -/datum/job/chief_engineer - title = "Chief Engineer" - flag = CHIEF - department_head = list("Captain") - department_flag = ENGSEC - head_announce = list("Engineering") - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the captain" - selection_color = "#ffeeaa" - req_admin_notify = 1 - minimal_player_age = 7 - exp_requirements = 180 - exp_type = EXP_TYPE_CREW - exp_type_department = EXP_TYPE_ENGINEERING - - outfit = /datum/outfit/job/ce - - access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, - ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EMERGENCY_STORAGE, ACCESS_EVA, - ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS, ACCESS_MINISAT, - ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, - ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EMERGENCY_STORAGE, ACCESS_EVA, - ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS, ACCESS_MINISAT, - ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/ce - name = "Chief Engineer" - jobtype = /datum/job/chief_engineer - - id = /obj/item/card/id/silver - belt = /obj/item/storage/belt/utility/chief/full - l_pocket = /obj/item/pda/heads/ce - ears = /obj/item/radio/headset/heads/ce - uniform = /obj/item/clothing/under/rank/chief_engineer - shoes = /obj/item/clothing/shoes/sneakers/brown - head = /obj/item/clothing/head/hardhat/white - gloves = /obj/item/clothing/gloves/color/black/ce - backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced=1) - - backpack = /obj/item/storage/backpack/industrial - satchel = /obj/item/storage/backpack/satchel/eng - duffelbag = /obj/item/storage/backpack/duffelbag/engineering - box = /obj/item/storage/box/engineer - pda_slot = SLOT_L_STORE - chameleon_extras = /obj/item/stamp/ce - -/datum/outfit/job/ce/rig - name = "Chief Engineer (Hardsuit)" - - mask = /obj/item/clothing/mask/breath - suit = /obj/item/clothing/suit/space/hardsuit/engine/elite - shoes = /obj/item/clothing/shoes/magboots/advance - suit_store = /obj/item/tank/internals/oxygen - glasses = /obj/item/clothing/glasses/meson/engine - gloves = /obj/item/clothing/gloves/color/yellow - head = null - internals_slot = SLOT_S_STORE - - -/* -Station Engineer -*/ -/datum/job/engineer - title = "Station Engineer" - flag = ENGINEER - department_head = list("Chief Engineer") - department_flag = ENGSEC - faction = "Station" - total_positions = 5 - spawn_positions = 5 - supervisors = "the chief engineer" - selection_color = "#fff5cc" - exp_requirements = 60 - exp_type = EXP_TYPE_CREW - - outfit = /datum/outfit/job/engineer - - access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, - ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, - ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/engineer - name = "Station Engineer" - jobtype = /datum/job/engineer - - belt = /obj/item/storage/belt/utility/full/engi - l_pocket = /obj/item/pda/engineering - ears = /obj/item/radio/headset/headset_eng - uniform = /obj/item/clothing/under/rank/engineer - shoes = /obj/item/clothing/shoes/workboots - head = /obj/item/clothing/head/hardhat - r_pocket = /obj/item/t_scanner - - backpack = /obj/item/storage/backpack/industrial - satchel = /obj/item/storage/backpack/satchel/eng - duffelbag = /obj/item/storage/backpack/duffelbag/engineering - box = /obj/item/storage/box/engineer - pda_slot = SLOT_L_STORE - backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1) - -/datum/outfit/job/engineer/gloved - name = "Station Engineer (Gloves)" - gloves = /obj/item/clothing/gloves/color/yellow - -/datum/outfit/job/engineer/gloved/rig - name = "Station Engineer (Hardsuit)" - - mask = /obj/item/clothing/mask/breath - suit = /obj/item/clothing/suit/space/hardsuit/engine - suit_store = /obj/item/tank/internals/oxygen - head = null - internals_slot = SLOT_S_STORE - - -/* -Atmospheric Technician -*/ -/datum/job/atmos - title = "Atmospheric Technician" - flag = ATMOSTECH - department_head = list("Chief Engineer") - department_flag = ENGSEC - faction = "Station" - total_positions = 3 - spawn_positions = 2 - supervisors = "the chief engineer" - selection_color = "#fff5cc" - exp_requirements = 60 - exp_type = EXP_TYPE_CREW - - outfit = /datum/outfit/job/atmos - - access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, - ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS, ACCESS_EMERGENCY_STORAGE, ACCESS_CONSTRUCTION, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/atmos - name = "Atmospheric Technician" - jobtype = /datum/job/atmos - - belt = /obj/item/storage/belt/utility/atmostech - l_pocket = /obj/item/pda/atmos - ears = /obj/item/radio/headset/headset_eng - uniform = /obj/item/clothing/under/rank/atmospheric_technician - r_pocket = /obj/item/analyzer - - backpack = /obj/item/storage/backpack/industrial - satchel = /obj/item/storage/backpack/satchel/eng - duffelbag = /obj/item/storage/backpack/duffelbag/engineering - box = /obj/item/storage/box/engineer - pda_slot = SLOT_L_STORE - backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1) - -/datum/outfit/job/atmos/rig - name = "Atmospheric Technician (Hardsuit)" - - mask = /obj/item/clothing/mask/gas - suit = /obj/item/clothing/suit/space/hardsuit/engine/atmos - suit_store = /obj/item/tank/internals/oxygen - internals_slot = SLOT_S_STORE diff --git a/code/modules/jobs/job_types/geneticist.dm b/code/modules/jobs/job_types/geneticist.dm new file mode 100644 index 0000000000..6006ff1083 --- /dev/null +++ b/code/modules/jobs/job_types/geneticist.dm @@ -0,0 +1,35 @@ +/datum/job/geneticist + title = "Geneticist" + flag = GENETICIST + department_head = list("Chief Medical Officer", "Research Director") + department_flag = MEDSCI + faction = "Station" + total_positions = 2 + spawn_positions = 2 + supervisors = "the chief medical officer and research director" + selection_color = "#ffeef0" + exp_type = EXP_TYPE_CREW + exp_requirements = 60 + + outfit = /datum/outfit/job/geneticist + + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_ROBOTICS, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE) + minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM) + + display_order = JOB_DISPLAY_ORDER_GENETICIST + +/datum/outfit/job/geneticist + name = "Geneticist" + jobtype = /datum/job/geneticist + + belt = /obj/item/pda/geneticist + ears = /obj/item/radio/headset/headset_medsci + uniform = /obj/item/clothing/under/rank/geneticist + shoes = /obj/item/clothing/shoes/sneakers/white + suit = /obj/item/clothing/suit/toggle/labcoat/genetics + suit_store = /obj/item/flashlight/pen + + backpack = /obj/item/storage/backpack/genetics + satchel = /obj/item/storage/backpack/satchel/gen + duffelbag = /obj/item/storage/backpack/duffelbag/med + diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm new file mode 100644 index 0000000000..a5d917e1c9 --- /dev/null +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -0,0 +1,49 @@ +/datum/job/hop + title = "Head of Personnel" + flag = HOP +// auto_deadmin_role_flags = DEADMIN_POSITION_HEAD + department_head = list("Captain") + department_flag = CIVILIAN + head_announce = list("Supply", "Service") + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the captain" + selection_color = "#ddddff" + req_admin_notify = 1 + minimal_player_age = 10 + exp_requirements = 180 + exp_type = EXP_TYPE_CREW + exp_type_department = EXP_TYPE_SUPPLY + + outfit = /datum/outfit/job/hop + + access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, + ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, + ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE, + ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER, + ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION, + ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, + ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, + ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE, + ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER, + ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION, + ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM) + + display_order = JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL + +/datum/outfit/job/hop + name = "Head of Personnel" + jobtype = /datum/job/hop + + id = /obj/item/card/id/silver + belt = /obj/item/pda/heads/hop + ears = /obj/item/radio/headset/heads/hop + uniform = /obj/item/clothing/under/rank/head_of_personnel + shoes = /obj/item/clothing/shoes/sneakers/brown + head = /obj/item/clothing/head/hopcap + backpack_contents = list(/obj/item/storage/box/ids=1,\ + /obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1) + + chameleon_extras = list(/obj/item/gun/energy/e_gun, /obj/item/stamp/hop) diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm new file mode 100644 index 0000000000..9df087c834 --- /dev/null +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -0,0 +1,67 @@ +/datum/job/hos + title = "Head of Security" + flag = HOS +// auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY + department_head = list("Captain") + department_flag = ENGSEC + head_announce = list("Security") + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the captain" + selection_color = "#ffdddd" + req_admin_notify = 1 + minimal_player_age = 14 + exp_requirements = 300 + exp_type = EXP_TYPE_CREW + exp_type_department = EXP_TYPE_SECURITY + + outfit = /datum/outfit/job/hos +// mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + + access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, + ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, + ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING, + ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, + ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, + ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING, + ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) + + display_order = JOB_DISPLAY_ORDER_HEAD_OF_SECURITY + +/datum/outfit/job/hos + name = "Head of Security" + jobtype = /datum/job/hos + + id = /obj/item/card/id/silver + belt = /obj/item/pda/heads/hos + ears = /obj/item/radio/headset/heads/hos/alt + uniform = /obj/item/clothing/under/rank/head_of_security + shoes = /obj/item/clothing/shoes/jackboots + suit = /obj/item/clothing/suit/armor/hos/trenchcoat + gloves = /obj/item/clothing/gloves/color/black/hos + head = /obj/item/clothing/head/HoS/beret + glasses = /obj/item/clothing/glasses/hud/security/sunglasses + suit_store = /obj/item/gun/energy/e_gun + r_pocket = /obj/item/assembly/flash/handheld + l_pocket = /obj/item/restraints/handcuffs + backpack_contents = list(/obj/item/melee/baton/loaded=1) + + backpack = /obj/item/storage/backpack/security + satchel = /obj/item/storage/backpack/satchel/sec + duffelbag = /obj/item/storage/backpack/duffelbag/sec + box = /obj/item/storage/box/security + + implants = list(/obj/item/implant/mindshield) + + chameleon_extras = list(/obj/item/gun/energy/e_gun/hos, /obj/item/stamp/hos) + +/datum/outfit/job/hos/hardsuit + name = "Head of Security (Hardsuit)" + + mask = /obj/item/clothing/mask/gas/sechailer + suit = /obj/item/clothing/suit/space/hardsuit/security/hos + suit_store = /obj/item/tank/internals/oxygen + backpack_contents = list(/obj/item/melee/baton/loaded=1, /obj/item/gun/energy/e_gun=1) + diff --git a/code/modules/jobs/job_types/janitor.dm b/code/modules/jobs/job_types/janitor.dm new file mode 100644 index 0000000000..d0a06ca0e0 --- /dev/null +++ b/code/modules/jobs/job_types/janitor.dm @@ -0,0 +1,27 @@ +/datum/job/janitor + title = "Janitor" + flag = JANITOR + department_head = list("Head of Personnel") + department_flag = CIVILIAN + faction = "Station" + total_positions = 2 + spawn_positions = 1 + supervisors = "the head of personnel" + selection_color = "#bbe291" + var/global/janitors = 0 + + outfit = /datum/outfit/job/janitor + + access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) + + display_order = JOB_DISPLAY_ORDER_JANITOR + +/datum/outfit/job/janitor + name = "Janitor" + jobtype = /datum/job/janitor + + belt = /obj/item/pda/janitor + ears = /obj/item/radio/headset/headset_srv + uniform = /obj/item/clothing/under/rank/janitor + backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1) diff --git a/code/modules/jobs/job_types/lawyer.dm b/code/modules/jobs/job_types/lawyer.dm new file mode 100644 index 0000000000..a04f5b665c --- /dev/null +++ b/code/modules/jobs/job_types/lawyer.dm @@ -0,0 +1,47 @@ +/datum/job/lawyer + title = "Lawyer" + flag = LAWYER + department_head = list("Head of Personnel") + department_flag = CIVILIAN + faction = "Station" + total_positions = 2 + spawn_positions = 2 + supervisors = "the head of personnel" + selection_color = "#dddddd" + var/lawyers = 0 //Counts lawyer amount + + outfit = /datum/outfit/job/lawyer + + access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) + minimal_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) + +// mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + + display_order = JOB_DISPLAY_ORDER_LAWYER + +/datum/outfit/job/lawyer + name = "Lawyer" + jobtype = /datum/job/lawyer + + belt = /obj/item/pda/lawyer + ears = /obj/item/radio/headset/headset_sec + uniform = /obj/item/clothing/under/lawyer/bluesuit + suit = /obj/item/clothing/suit/toggle/lawyer + shoes = /obj/item/clothing/shoes/laceup + l_hand = /obj/item/storage/briefcase/lawyer + l_pocket = /obj/item/laser_pointer + r_pocket = /obj/item/clothing/accessory/lawyers_badge + + chameleon_extras = /obj/item/stamp/law + + +/datum/outfit/job/lawyer/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + ..() + if(visualsOnly) + return + + var/datum/job/lawyer/J = SSjob.GetJobType(jobtype) + J.lawyers++ + if(J.lawyers>1) + uniform = /obj/item/clothing/under/lawyer/purpsuit + suit = /obj/item/clothing/suit/toggle/lawyer/purple diff --git a/code/modules/jobs/job_types/medical.dm b/code/modules/jobs/job_types/medical.dm deleted file mode 100644 index 5a926f490a..0000000000 --- a/code/modules/jobs/job_types/medical.dm +++ /dev/null @@ -1,204 +0,0 @@ -/* -Chief Medical Officer -*/ -/datum/job/cmo - title = "Chief Medical Officer" - flag = CMO_JF - department_head = list("Captain") - department_flag = MEDSCI - head_announce = list("Medical") - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the captain" - selection_color = "#ffddf0" - req_admin_notify = 1 - minimal_player_age = 7 - exp_requirements = 180 - exp_type = EXP_TYPE_CREW - exp_type_department = EXP_TYPE_MEDICAL - - outfit = /datum/outfit/job/cmo - - access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM, - ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE, - ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS) - minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM, - ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE, - ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS) - -/datum/outfit/job/cmo - name = "Chief Medical Officer" - jobtype = /datum/job/cmo - - id = /obj/item/card/id/silver - belt = /obj/item/pda/heads/cmo - l_pocket = /obj/item/pinpointer/crew - ears = /obj/item/radio/headset/heads/cmo - uniform = /obj/item/clothing/under/rank/chief_medical_officer - shoes = /obj/item/clothing/shoes/sneakers/brown - suit = /obj/item/clothing/suit/toggle/labcoat/cmo - l_hand = /obj/item/storage/firstaid/regular - suit_store = /obj/item/flashlight/pen - backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1) - - backpack = /obj/item/storage/backpack/medic - satchel = /obj/item/storage/backpack/satchel/med - duffelbag = /obj/item/storage/backpack/duffelbag/med - - chameleon_extras = list(/obj/item/gun/syringe, /obj/item/stamp/cmo) - -/datum/outfit/job/cmo/hardsuit - name = "Chief Medical Officer (Hardsuit)" - - mask = /obj/item/clothing/mask/breath - suit = /obj/item/clothing/suit/space/hardsuit/medical - suit_store = /obj/item/tank/internals/oxygen - r_pocket = /obj/item/flashlight/pen - -/* -Medical Doctor -*/ -/datum/job/doctor - title = "Medical Doctor" - flag = DOCTOR - department_head = list("Chief Medical Officer") - department_flag = MEDSCI - faction = "Station" - total_positions = 5 - spawn_positions = 3 - supervisors = "the chief medical officer" - selection_color = "#ffeef0" - - outfit = /datum/outfit/job/doctor - - access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/doctor - name = "Medical Doctor" - jobtype = /datum/job/doctor - - belt = /obj/item/pda/medical - ears = /obj/item/radio/headset/headset_med - uniform = /obj/item/clothing/under/rank/medical - shoes = /obj/item/clothing/shoes/sneakers/white - suit = /obj/item/clothing/suit/toggle/labcoat - l_hand = /obj/item/storage/firstaid/regular - suit_store = /obj/item/flashlight/pen - - backpack = /obj/item/storage/backpack/medic - satchel = /obj/item/storage/backpack/satchel/med - duffelbag = /obj/item/storage/backpack/duffelbag/med - - chameleon_extras = /obj/item/gun/syringe - -/* -Chemist -*/ -/datum/job/chemist - title = "Chemist" - flag = CHEMIST - department_head = list("Chief Medical Officer") - department_flag = MEDSCI - faction = "Station" - total_positions = 2 - spawn_positions = 2 - supervisors = "the chief medical officer" - selection_color = "#ffeef0" - exp_type = EXP_TYPE_CREW - exp_requirements = 60 - - outfit = /datum/outfit/job/chemist - - access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_MEDICAL, ACCESS_CHEMISTRY, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/chemist - name = "Chemist" - jobtype = /datum/job/chemist - - glasses = /obj/item/clothing/glasses/science - belt = /obj/item/pda/chemist - ears = /obj/item/radio/headset/headset_med - uniform = /obj/item/clothing/under/rank/chemist - shoes = /obj/item/clothing/shoes/sneakers/white - suit = /obj/item/clothing/suit/toggle/labcoat/chemist - backpack = /obj/item/storage/backpack/chemistry - satchel = /obj/item/storage/backpack/satchel/chem - duffelbag = /obj/item/storage/backpack/duffelbag/med - - chameleon_extras = /obj/item/gun/syringe - -/* -Geneticist -*/ -/datum/job/geneticist - title = "Geneticist" - flag = GENETICIST - department_head = list("Chief Medical Officer", "Research Director") - department_flag = MEDSCI - faction = "Station" - total_positions = 2 - spawn_positions = 2 - supervisors = "the chief medical officer and research director" - selection_color = "#ffeef0" - exp_type = EXP_TYPE_CREW - exp_requirements = 60 - - outfit = /datum/outfit/job/geneticist - - access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_ROBOTICS, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE) - minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/geneticist - name = "Geneticist" - jobtype = /datum/job/geneticist - - belt = /obj/item/pda/geneticist - ears = /obj/item/radio/headset/headset_medsci - uniform = /obj/item/clothing/under/rank/geneticist - shoes = /obj/item/clothing/shoes/sneakers/white - suit = /obj/item/clothing/suit/toggle/labcoat/genetics - suit_store = /obj/item/flashlight/pen - - backpack = /obj/item/storage/backpack/genetics - satchel = /obj/item/storage/backpack/satchel/gen - duffelbag = /obj/item/storage/backpack/duffelbag/med - -/* -Virologist -*/ -/datum/job/virologist - title = "Virologist" - flag = VIROLOGIST - department_head = list("Chief Medical Officer") - department_flag = MEDSCI - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the chief medical officer" - selection_color = "#ffeef0" - exp_type = EXP_TYPE_CREW - exp_requirements = 60 - - outfit = /datum/outfit/job/virologist - - access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_MEDICAL, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/virologist - name = "Virologist" - jobtype = /datum/job/virologist - - belt = /obj/item/pda/viro - ears = /obj/item/radio/headset/headset_med - uniform = /obj/item/clothing/under/rank/virologist - mask = /obj/item/clothing/mask/surgical - shoes = /obj/item/clothing/shoes/sneakers/white - suit = /obj/item/clothing/suit/toggle/labcoat/virologist - suit_store = /obj/item/flashlight/pen - - backpack = /obj/item/storage/backpack/virology - satchel = /obj/item/storage/backpack/satchel/vir - duffelbag = /obj/item/storage/backpack/duffelbag/med diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm new file mode 100644 index 0000000000..e3379e4be1 --- /dev/null +++ b/code/modules/jobs/job_types/medical_doctor.dm @@ -0,0 +1,35 @@ +/datum/job/doctor + title = "Medical Doctor" + flag = DOCTOR + department_head = list("Chief Medical Officer") + department_flag = MEDSCI + faction = "Station" + total_positions = 5 + spawn_positions = 3 + supervisors = "the chief medical officer" + selection_color = "#ffeef0" + + outfit = /datum/outfit/job/doctor + + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM) + + display_order = JOB_DISPLAY_ORDER_MEDICAL_DOCTOR + +/datum/outfit/job/doctor + name = "Medical Doctor" + jobtype = /datum/job/doctor + + belt = /obj/item/pda/medical + ears = /obj/item/radio/headset/headset_med + uniform = /obj/item/clothing/under/rank/medical + shoes = /obj/item/clothing/shoes/sneakers/white + suit = /obj/item/clothing/suit/toggle/labcoat + l_hand = /obj/item/storage/firstaid/regular + suit_store = /obj/item/flashlight/pen + + backpack = /obj/item/storage/backpack/medic + satchel = /obj/item/storage/backpack/satchel/med + duffelbag = /obj/item/storage/backpack/duffelbag/med + + chameleon_extras = /obj/item/gun/syringe diff --git a/code/modules/jobs/job_types/mime.dm b/code/modules/jobs/job_types/mime.dm new file mode 100644 index 0000000000..1347da7125 --- /dev/null +++ b/code/modules/jobs/job_types/mime.dm @@ -0,0 +1,49 @@ +/datum/job/mime + title = "Mime" + flag = MIME + department_head = list("Head of Personnel") + department_flag = CIVILIAN + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the head of personnel" + selection_color = "#dddddd" + + outfit = /datum/outfit/job/mime + + access = list(ACCESS_THEATRE) + minimal_access = list(ACCESS_THEATRE) + + display_order = JOB_DISPLAY_ORDER_MIME + +/datum/job/mime/after_spawn(mob/living/carbon/human/H, mob/M) + H.apply_pref_name("mime", M.client) + +/datum/outfit/job/mime + name = "Mime" + jobtype = /datum/job/mime + + belt = /obj/item/pda/mime + ears = /obj/item/radio/headset/headset_srv + uniform = /obj/item/clothing/under/rank/mime + mask = /obj/item/clothing/mask/gas/mime + gloves = /obj/item/clothing/gloves/color/white + head = /obj/item/clothing/head/frenchberet + suit = /obj/item/clothing/suit/suspenders + backpack_contents = list(/obj/item/reagent_containers/food/drinks/bottle/bottleofnothing=1) + + backpack = /obj/item/storage/backpack/mime + satchel = /obj/item/storage/backpack/mime + + +/datum/outfit/job/mime/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + ..() + + if(visualsOnly) + return + + if(H.mind) + H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall(null)) + H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/mime/speak(null)) + H.mind.miming = 1 + diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm new file mode 100644 index 0000000000..3220dd9a09 --- /dev/null +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -0,0 +1,32 @@ +/datum/job/qm + title = "Quartermaster" + flag = QUARTERMASTER + department_head = list("Captain") + department_flag = CIVILIAN +// auto_deadmin_role_flags = DEADMIN_POSITION_HEAD + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the captain" + selection_color = "#d7b088" + + outfit = /datum/outfit/job/quartermaster + + access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT) + minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT) + + display_order = JOB_DISPLAY_ORDER_QUARTERMASTER + +/datum/outfit/job/quartermaster + name = "Quartermaster" + jobtype = /datum/job/qm + + belt = /obj/item/pda/quartermaster + ears = /obj/item/radio/headset/headset_cargo + uniform = /obj/item/clothing/under/rank/cargo + shoes = /obj/item/clothing/shoes/sneakers/brown + glasses = /obj/item/clothing/glasses/sunglasses + l_hand = /obj/item/clipboard + + chameleon_extras = /obj/item/stamp/qm + diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm new file mode 100644 index 0000000000..2df606bd20 --- /dev/null +++ b/code/modules/jobs/job_types/research_director.dm @@ -0,0 +1,60 @@ +/datum/job/rd + title = "Research Director" + flag = RD_JF +// auto_deadmin_role_flags = DEADMIN_POSITION_HEAD + department_head = list("Captain") + department_flag = MEDSCI + head_announce = list("Science") + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the captain" + selection_color = "#ffddff" + req_admin_notify = 1 + minimal_player_age = 7 + exp_type_department = EXP_TYPE_SCIENCE + exp_requirements = 180 + exp_type = EXP_TYPE_CREW + + outfit = /datum/outfit/job/rd + + access = list(ACCESS_RD, ACCESS_HEADS, ACCESS_TOX, ACCESS_GENETICS, ACCESS_MORGUE, + ACCESS_TOX_STORAGE, ACCESS_TELEPORTER, ACCESS_SEC_DOORS, + ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD, + ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, + ACCESS_TECH_STORAGE, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_NETWORK) + minimal_access = list(ACCESS_RD, ACCESS_HEADS, ACCESS_TOX, ACCESS_GENETICS, ACCESS_MORGUE, + ACCESS_TOX_STORAGE, ACCESS_TELEPORTER, ACCESS_SEC_DOORS, + ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD, + ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, + ACCESS_TECH_STORAGE, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_NETWORK) + + display_order = JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR + +/datum/outfit/job/rd + name = "Research Director" + jobtype = /datum/job/rd + + id = /obj/item/card/id/silver + belt = /obj/item/pda/heads/rd + ears = /obj/item/radio/headset/heads/rd + uniform = /obj/item/clothing/under/rank/research_director + shoes = /obj/item/clothing/shoes/sneakers/brown + suit = /obj/item/clothing/suit/toggle/labcoat + l_hand = /obj/item/clipboard + l_pocket = /obj/item/laser_pointer + backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced=1) + + backpack = /obj/item/storage/backpack/science + satchel = /obj/item/storage/backpack/satchel/tox + + chameleon_extras = /obj/item/stamp/rd + +/datum/outfit/job/rd/rig + name = "Research Director (Hardsuit)" + + l_hand = null + mask = /obj/item/clothing/mask/breath + suit = /obj/item/clothing/suit/space/hardsuit/rd + suit_store = /obj/item/tank/internals/oxygen + internals_slot = SLOT_S_STORE diff --git a/code/modules/jobs/job_types/roboticist.dm b/code/modules/jobs/job_types/roboticist.dm new file mode 100644 index 0000000000..ef3c1277a1 --- /dev/null +++ b/code/modules/jobs/job_types/roboticist.dm @@ -0,0 +1,34 @@ +/datum/job/roboticist + title = "Roboticist" + flag = ROBOTICIST + department_head = list("Research Director") + department_flag = MEDSCI + faction = "Station" + total_positions = 2 + spawn_positions = 2 + supervisors = "the research director" + selection_color = "#ffeeff" + exp_requirements = 60 + exp_type = EXP_TYPE_CREW + + outfit = /datum/outfit/job/roboticist + + access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM, ACCESS_XENOBIOLOGY, ACCESS_GENETICS) + minimal_access = list(ACCESS_ROBOTICS, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM) + + display_order = JOB_DISPLAY_ORDER_ROBOTICIST + +/datum/outfit/job/roboticist + name = "Roboticist" + jobtype = /datum/job/roboticist + + belt = /obj/item/storage/belt/utility/full + l_pocket = /obj/item/pda/roboticist + ears = /obj/item/radio/headset/headset_sci + uniform = /obj/item/clothing/under/rank/roboticist + suit = /obj/item/clothing/suit/toggle/labcoat + + backpack = /obj/item/storage/backpack/science + satchel = /obj/item/storage/backpack/satchel/tox + + pda_slot = SLOT_L_STORE diff --git a/code/modules/jobs/job_types/science.dm b/code/modules/jobs/job_types/science.dm deleted file mode 100644 index 6a14f204a3..0000000000 --- a/code/modules/jobs/job_types/science.dm +++ /dev/null @@ -1,131 +0,0 @@ -/* -Research Director -*/ -/datum/job/rd - title = "Research Director" - flag = RD_JF - department_head = list("Captain") - department_flag = MEDSCI - head_announce = list("Science") - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the captain" - selection_color = "#ffddff" - req_admin_notify = 1 - minimal_player_age = 7 - exp_type_department = EXP_TYPE_SCIENCE - exp_requirements = 180 - exp_type = EXP_TYPE_CREW - - outfit = /datum/outfit/job/rd - - access = list(ACCESS_RD, ACCESS_HEADS, ACCESS_TOX, ACCESS_GENETICS, ACCESS_MORGUE, - ACCESS_TOX_STORAGE, ACCESS_TELEPORTER, ACCESS_SEC_DOORS, - ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD, - ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, - ACCESS_TECH_STORAGE, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_NETWORK) - minimal_access = list(ACCESS_RD, ACCESS_HEADS, ACCESS_TOX, ACCESS_GENETICS, ACCESS_MORGUE, - ACCESS_TOX_STORAGE, ACCESS_TELEPORTER, ACCESS_SEC_DOORS, - ACCESS_RESEARCH, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_AI_UPLOAD, - ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, - ACCESS_TECH_STORAGE, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_NETWORK) - -/datum/outfit/job/rd - name = "Research Director" - jobtype = /datum/job/rd - - id = /obj/item/card/id/silver - belt = /obj/item/pda/heads/rd - ears = /obj/item/radio/headset/heads/rd - uniform = /obj/item/clothing/under/rank/research_director - shoes = /obj/item/clothing/shoes/sneakers/brown - suit = /obj/item/clothing/suit/toggle/labcoat - l_hand = /obj/item/clipboard - l_pocket = /obj/item/laser_pointer - backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced=1) - - backpack = /obj/item/storage/backpack/science - satchel = /obj/item/storage/backpack/satchel/tox - - chameleon_extras = /obj/item/stamp/rd - -/datum/outfit/job/rd/rig - name = "Research Director (Hardsuit)" - - l_hand = null - mask = /obj/item/clothing/mask/breath - suit = /obj/item/clothing/suit/space/hardsuit/rd - suit_store = /obj/item/tank/internals/oxygen - internals_slot = SLOT_S_STORE - -/* -Scientist -*/ -/datum/job/scientist - title = "Scientist" - flag = SCIENTIST - department_head = list("Research Director") - department_flag = MEDSCI - faction = "Station" - total_positions = 5 - spawn_positions = 3 - supervisors = "the research director" - selection_color = "#ffeeff" - exp_requirements = 60 - exp_type = EXP_TYPE_CREW - - - outfit = /datum/outfit/job/scientist - - access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_GENETICS) - minimal_access = list(ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/scientist - name = "Scientist" - jobtype = /datum/job/scientist - - belt = /obj/item/pda/toxins - ears = /obj/item/radio/headset/headset_sci - uniform = /obj/item/clothing/under/rank/scientist - shoes = /obj/item/clothing/shoes/sneakers/white - suit = /obj/item/clothing/suit/toggle/labcoat/science - - backpack = /obj/item/storage/backpack/science - satchel = /obj/item/storage/backpack/satchel/tox - -/* -Roboticist -*/ -/datum/job/roboticist - title = "Roboticist" - flag = ROBOTICIST - department_head = list("Research Director") - department_flag = MEDSCI - faction = "Station" - total_positions = 2 - spawn_positions = 2 - supervisors = "the research director" - selection_color = "#ffeeff" - exp_requirements = 60 - exp_type = EXP_TYPE_CREW - - outfit = /datum/outfit/job/roboticist - - access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM, ACCESS_XENOBIOLOGY, ACCESS_GENETICS) - minimal_access = list(ACCESS_ROBOTICS, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/roboticist - name = "Roboticist" - jobtype = /datum/job/roboticist - - belt = /obj/item/storage/belt/utility/full - l_pocket = /obj/item/pda/roboticist - ears = /obj/item/radio/headset/headset_sci - uniform = /obj/item/clothing/under/rank/roboticist - suit = /obj/item/clothing/suit/toggle/labcoat - - backpack = /obj/item/storage/backpack/science - satchel = /obj/item/storage/backpack/satchel/tox - - pda_slot = SLOT_L_STORE diff --git a/code/modules/jobs/job_types/scientist.dm b/code/modules/jobs/job_types/scientist.dm new file mode 100644 index 0000000000..e3f04f0b29 --- /dev/null +++ b/code/modules/jobs/job_types/scientist.dm @@ -0,0 +1,33 @@ +/datum/job/scientist + title = "Scientist" + flag = SCIENTIST + department_head = list("Research Director") + department_flag = MEDSCI + faction = "Station" + total_positions = 5 + spawn_positions = 3 + supervisors = "the research director" + selection_color = "#ffeeff" + exp_requirements = 60 + exp_type = EXP_TYPE_CREW + + outfit = /datum/outfit/job/scientist + + access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_GENETICS) + minimal_access = list(ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM) + + display_order = JOB_DISPLAY_ORDER_SCIENTIST + +/datum/outfit/job/scientist + name = "Scientist" + jobtype = /datum/job/scientist + + belt = /obj/item/pda/toxins + ears = /obj/item/radio/headset/headset_sci + uniform = /obj/item/clothing/under/rank/scientist + shoes = /obj/item/clothing/shoes/sneakers/white + suit = /obj/item/clothing/suit/toggle/labcoat/science + + backpack = /obj/item/storage/backpack/science + satchel = /obj/item/storage/backpack/satchel/tox + diff --git a/code/modules/jobs/job_types/security.dm b/code/modules/jobs/job_types/security.dm deleted file mode 100644 index e7e0922f62..0000000000 --- a/code/modules/jobs/job_types/security.dm +++ /dev/null @@ -1,334 +0,0 @@ -//Warden and regular officers add this result to their get_access() -/datum/job/proc/check_config_for_sec_maint() - if(CONFIG_GET(flag/security_has_maint_access)) - return list(ACCESS_MAINT_TUNNELS) - return list() - -/* -Head of Security -*/ -/datum/job/hos - title = "Head of Security" - flag = HOS - department_head = list("Captain") - department_flag = ENGSEC - head_announce = list("Security") - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the captain" - selection_color = "#ffdddd" - req_admin_notify = 1 - minimal_player_age = 14 - exp_requirements = 300 - exp_type = EXP_TYPE_CREW - exp_type_department = EXP_TYPE_SECURITY - - outfit = /datum/outfit/job/hos - - access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, - ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, - ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING, - ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, - ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, - ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING, - ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/hos - name = "Head of Security" - jobtype = /datum/job/hos - - id = /obj/item/card/id/silver - belt = /obj/item/pda/heads/hos - ears = /obj/item/radio/headset/heads/hos/alt - uniform = /obj/item/clothing/under/rank/head_of_security - shoes = /obj/item/clothing/shoes/jackboots - suit = /obj/item/clothing/suit/armor/hos/trenchcoat - gloves = /obj/item/clothing/gloves/color/black/hos - head = /obj/item/clothing/head/HoS/beret - glasses = /obj/item/clothing/glasses/hud/security/sunglasses - suit_store = /obj/item/gun/energy/e_gun - r_pocket = /obj/item/assembly/flash/handheld - l_pocket = /obj/item/restraints/handcuffs - backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1) - - backpack = /obj/item/storage/backpack/security - satchel = /obj/item/storage/backpack/satchel/sec - duffelbag = /obj/item/storage/backpack/duffelbag/sec - box = /obj/item/storage/box/security - - implants = list(/obj/item/implant/mindshield) - - chameleon_extras = list(/obj/item/gun/energy/e_gun/hos, /obj/item/stamp/hos) - -/datum/outfit/job/hos/hardsuit - name = "Head of Security (Hardsuit)" - - mask = /obj/item/clothing/mask/gas/sechailer - suit = /obj/item/clothing/suit/space/hardsuit/security/hos - suit_store = /obj/item/tank/internals/oxygen - backpack_contents = list(/obj/item/melee/baton/loaded=1, /obj/item/gun/energy/e_gun=1) - -/* -Warden -*/ -/datum/job/warden - title = "Warden" - flag = WARDEN - department_head = list("Head of Security") - department_flag = ENGSEC - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the head of security" - selection_color = "#ffeeee" - minimal_player_age = 7 - exp_requirements = 300 - exp_type = EXP_TYPE_CREW - - outfit = /datum/outfit/job/warden - - access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) //SEE /DATUM/JOB/WARDEN/GET_ACCESS() - -/datum/job/warden/get_access() - var/list/L = list() - L = ..() | check_config_for_sec_maint() - return L - -/datum/outfit/job/warden - name = "Warden" - jobtype = /datum/job/warden - - belt = /obj/item/pda/warden - ears = /obj/item/radio/headset/headset_sec/alt - uniform = /obj/item/clothing/under/rank/warden - shoes = /obj/item/clothing/shoes/jackboots - suit = /obj/item/clothing/suit/armor/vest/warden/alt - gloves = /obj/item/clothing/gloves/color/black - head = /obj/item/clothing/head/warden - glasses = /obj/item/clothing/glasses/hud/security/sunglasses - r_pocket = /obj/item/assembly/flash/handheld - l_pocket = /obj/item/restraints/handcuffs - suit_store = /obj/item/gun/energy/e_gun/advtaser - backpack_contents = list(/obj/item/melee/baton/loaded=1) - - backpack = /obj/item/storage/backpack/security - satchel = /obj/item/storage/backpack/satchel/sec - duffelbag = /obj/item/storage/backpack/duffelbag/sec - box = /obj/item/storage/box/security - - implants = list(/obj/item/implant/mindshield) - - chameleon_extras = /obj/item/gun/ballistic/shotgun/automatic/combat/compact - -/* -Detective -*/ -/datum/job/detective - title = "Detective" - flag = DETECTIVE - department_head = list("Head of Security") - department_flag = ENGSEC - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the head of security" - selection_color = "#ffeeee" - minimal_player_age = 7 - exp_requirements = 300 - exp_type = EXP_TYPE_CREW - - outfit = /datum/outfit/job/detective - - access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) - -/datum/outfit/job/detective - name = "Detective" - jobtype = /datum/job/detective - - belt = /obj/item/pda/detective - ears = /obj/item/radio/headset/headset_sec/alt - uniform = /obj/item/clothing/under/rank/det - shoes = /obj/item/clothing/shoes/sneakers/brown - suit = /obj/item/clothing/suit/det_suit - gloves = /obj/item/clothing/gloves/color/black - head = /obj/item/clothing/head/fedora/det_hat - l_pocket = /obj/item/toy/crayon/white - r_pocket = /obj/item/lighter - backpack_contents = list(/obj/item/storage/box/evidence=1,\ - /obj/item/detective_scanner=1,\ - /obj/item/melee/classic_baton=1) - mask = /obj/item/clothing/mask/cigarette - - implants = list(/obj/item/implant/mindshield) - - chameleon_extras = list(/obj/item/gun/ballistic/revolver/detective, /obj/item/clothing/glasses/sunglasses) - -/datum/outfit/job/detective/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - ..() - var/obj/item/clothing/mask/cigarette/cig = H.wear_mask - if(istype(cig)) //Some species specfic changes can mess this up (plasmamen) - cig.light("") - - if(visualsOnly) - return - -/* -Security Officer -*/ -/datum/job/officer - title = "Security Officer" - flag = OFFICER - department_head = list("Head of Security") - department_flag = ENGSEC - faction = "Station" - total_positions = 5 //Handled in /datum/controller/occupations/proc/setup_officer_positions() - spawn_positions = 5 //Handled in /datum/controller/occupations/proc/setup_officer_positions() - supervisors = "the head of security, and the head of your assigned department (if applicable)" - selection_color = "#ffeeee" - minimal_player_age = 7 - exp_requirements = 300 - exp_type = EXP_TYPE_CREW - - outfit = /datum/outfit/job/security - - access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) - minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) //BUT SEE /DATUM/JOB/WARDEN/GET_ACCESS() - - -/datum/job/officer/get_access() - var/list/L = list() - L |= ..() | check_config_for_sec_maint() - return L - -GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, SEC_DEPT_SCIENCE, SEC_DEPT_SUPPLY)) - -/datum/job/officer/after_spawn(mob/living/carbon/human/H, mob/M) - // Assign department security - var/department - if(M && M.client && M.client.prefs) - department = M.client.prefs.prefered_security_department - if(!LAZYLEN(GLOB.available_depts) || department == "None") - return - else if(department in GLOB.available_depts) - LAZYREMOVE(GLOB.available_depts, department) - else - department = pick_n_take(GLOB.available_depts) - var/ears = null - var/accessory = null - var/list/dep_access = null - var/destination = null - var/spawn_point = null - switch(department) - if(SEC_DEPT_SUPPLY) - ears = /obj/item/radio/headset/headset_sec/alt/department/supply - dep_access = list(ACCESS_MAILSORTING, ACCESS_MINING, ACCESS_MINING_STATION) - destination = /area/security/checkpoint/supply - spawn_point = locate(/obj/effect/landmark/start/depsec/supply) in GLOB.department_security_spawns - accessory = /obj/item/clothing/accessory/armband/cargo - if(SEC_DEPT_ENGINEERING) - ears = /obj/item/radio/headset/headset_sec/alt/department/engi - dep_access = list(ACCESS_CONSTRUCTION, ACCESS_ENGINE) - destination = /area/security/checkpoint/engineering - spawn_point = locate(/obj/effect/landmark/start/depsec/engineering) in GLOB.department_security_spawns - accessory = /obj/item/clothing/accessory/armband/engine - if(SEC_DEPT_MEDICAL) - ears = /obj/item/radio/headset/headset_sec/alt/department/med - dep_access = list(ACCESS_MEDICAL) - destination = /area/security/checkpoint/medical - spawn_point = locate(/obj/effect/landmark/start/depsec/medical) in GLOB.department_security_spawns - accessory = /obj/item/clothing/accessory/armband/medblue - if(SEC_DEPT_SCIENCE) - ears = /obj/item/radio/headset/headset_sec/alt/department/sci - dep_access = list(ACCESS_RESEARCH) - destination = /area/security/checkpoint/science - spawn_point = locate(/obj/effect/landmark/start/depsec/science) in GLOB.department_security_spawns - accessory = /obj/item/clothing/accessory/armband/science - - if(accessory) - var/obj/item/clothing/under/U = H.w_uniform - U.attach_accessory(new accessory) - if(ears) - if(H.ears) - qdel(H.ears) - H.equip_to_slot_or_del(new ears(H),SLOT_EARS) - - var/obj/item/card/id/W = H.wear_id - W.access |= dep_access - - var/teleport = 0 - if(!CONFIG_GET(flag/sec_start_brig)) - if(destination || spawn_point) - teleport = 1 - if(teleport) - var/turf/T - if(spawn_point) - T = get_turf(spawn_point) - H.Move(T) - else - var/safety = 0 - while(safety < 25) - T = safepick(get_area_turfs(destination)) - if(T && !H.Move(T)) - safety += 1 - continue - else - break - if(department) - to_chat(M, "You have been assigned to [department]!") - else - to_chat(M, "You have not been assigned to any department. Patrol the halls and help where needed.") - - - -/datum/outfit/job/security - name = "Security Officer" - jobtype = /datum/job/officer - - belt = /obj/item/pda/security - ears = /obj/item/radio/headset/headset_sec/alt - uniform = /obj/item/clothing/under/rank/security - gloves = /obj/item/clothing/gloves/color/black - head = /obj/item/clothing/head/helmet/sec - suit = /obj/item/clothing/suit/armor/vest/alt - shoes = /obj/item/clothing/shoes/jackboots - l_pocket = /obj/item/restraints/handcuffs - r_pocket = /obj/item/assembly/flash/handheld - suit_store = /obj/item/gun/energy/e_gun/advtaser - backpack_contents = list(/obj/item/melee/baton/loaded=1) - - backpack = /obj/item/storage/backpack/security - satchel = /obj/item/storage/backpack/satchel/sec - duffelbag = /obj/item/storage/backpack/duffelbag/sec - box = /obj/item/storage/box/security - - implants = list(/obj/item/implant/mindshield) - - chameleon_extras = list(/obj/item/gun/energy/e_gun/advtaser, /obj/item/clothing/glasses/hud/security/sunglasses, /obj/item/clothing/head/helmet) - //The helmet is necessary because /obj/item/clothing/head/helmet/sec is overwritten in the chameleon list by the standard helmet, which has the same name and icon state - - -/obj/item/radio/headset/headset_sec/alt/department/Initialize() - . = ..() - wires = new/datum/wires/radio(src) - secure_radio_connections = new - recalculateChannels() - -/obj/item/radio/headset/headset_sec/alt/department/engi - keyslot = new /obj/item/encryptionkey/headset_sec - keyslot2 = new /obj/item/encryptionkey/headset_eng - -/obj/item/radio/headset/headset_sec/alt/department/supply - keyslot = new /obj/item/encryptionkey/headset_sec - keyslot2 = new /obj/item/encryptionkey/headset_cargo - -/obj/item/radio/headset/headset_sec/alt/department/med - keyslot = new /obj/item/encryptionkey/headset_sec - keyslot2 = new /obj/item/encryptionkey/headset_med - -/obj/item/radio/headset/headset_sec/alt/department/sci - keyslot = new /obj/item/encryptionkey/headset_sec - keyslot2 = new /obj/item/encryptionkey/headset_sci diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm new file mode 100644 index 0000000000..98ec759db8 --- /dev/null +++ b/code/modules/jobs/job_types/security_officer.dm @@ -0,0 +1,158 @@ +/datum/job/officer + title = "Security Officer" + flag = OFFICER +// auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY + department_head = list("Head of Security") + department_flag = ENGSEC + faction = "Station" + total_positions = 5 //Handled in /datum/controller/occupations/proc/setup_officer_positions() + spawn_positions = 5 //Handled in /datum/controller/occupations/proc/setup_officer_positions() + supervisors = "the head of security, and the head of your assigned department (if applicable)" + selection_color = "#ffeeee" + minimal_player_age = 7 + exp_requirements = 300 + exp_type = EXP_TYPE_CREW + + outfit = /datum/outfit/job/security + + access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) // See /datum/job/officer/get_access() + +// mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + + display_order = JOB_DISPLAY_ORDER_SECURITY_OFFICER + +/datum/job/officer/get_access() + var/list/L = list() + L |= ..() | check_config_for_sec_maint() + return L + +GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, SEC_DEPT_SCIENCE, SEC_DEPT_SUPPLY)) + +/datum/job/officer/after_spawn(mob/living/carbon/human/H, mob/M) + . = ..() + // Assign department security + var/department + if(M && M.client && M.client.prefs) + department = M.client.prefs.prefered_security_department + if(!LAZYLEN(GLOB.available_depts) || department == "None") + return + else if(department in GLOB.available_depts) + LAZYREMOVE(GLOB.available_depts, department) + else + department = pick_n_take(GLOB.available_depts) + var/ears = null + var/accessory = null + var/list/dep_access = null + var/destination = null + var/spawn_point = null + switch(department) + if(SEC_DEPT_SUPPLY) + ears = /obj/item/radio/headset/headset_sec/alt/department/supply + dep_access = list(ACCESS_MAILSORTING, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_CARGO) + destination = /area/security/checkpoint/supply + spawn_point = locate(/obj/effect/landmark/start/depsec/supply) in GLOB.department_security_spawns + accessory = /obj/item/clothing/accessory/armband/cargo + if(SEC_DEPT_ENGINEERING) + ears = /obj/item/radio/headset/headset_sec/alt/department/engi + dep_access = list(ACCESS_CONSTRUCTION, ACCESS_ENGINE, ACCESS_ATMOSPHERICS) + destination = /area/security/checkpoint/engineering + spawn_point = locate(/obj/effect/landmark/start/depsec/engineering) in GLOB.department_security_spawns + accessory = /obj/item/clothing/accessory/armband/engine + if(SEC_DEPT_MEDICAL) + ears = /obj/item/radio/headset/headset_sec/alt/department/med + dep_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CLONING) + destination = /area/security/checkpoint/medical + spawn_point = locate(/obj/effect/landmark/start/depsec/medical) in GLOB.department_security_spawns + accessory = /obj/item/clothing/accessory/armband/medblue + if(SEC_DEPT_SCIENCE) + ears = /obj/item/radio/headset/headset_sec/alt/department/sci + dep_access = list(ACCESS_RESEARCH, ACCESS_TOX) + destination = /area/security/checkpoint/science + spawn_point = locate(/obj/effect/landmark/start/depsec/science) in GLOB.department_security_spawns + accessory = /obj/item/clothing/accessory/armband/science + + if(accessory) + var/obj/item/clothing/under/U = H.w_uniform + U.attach_accessory(new accessory) + if(ears) + if(H.ears) + qdel(H.ears) + H.equip_to_slot_or_del(new ears(H),SLOT_EARS) + + var/obj/item/card/id/W = H.wear_id + W.access |= dep_access + + var/teleport = 0 + if(!CONFIG_GET(flag/sec_start_brig)) + if(destination || spawn_point) + teleport = 1 + if(teleport) + var/turf/T + if(spawn_point) + T = get_turf(spawn_point) + H.Move(T) + else + var/safety = 0 + while(safety < 25) + T = safepick(get_area_turfs(destination)) + if(T && !H.Move(T)) + safety += 1 + continue + else + break + if(department) + to_chat(M, "You have been assigned to [department]!") + else + to_chat(M, "You have not been assigned to any department. Patrol the halls and help where needed.") + + + +/datum/outfit/job/security + name = "Security Officer" + jobtype = /datum/job/officer + + belt = /obj/item/pda/security + ears = /obj/item/radio/headset/headset_sec/alt + uniform = /obj/item/clothing/under/rank/security + gloves = /obj/item/clothing/gloves/color/black + head = /obj/item/clothing/head/helmet/sec + suit = /obj/item/clothing/suit/armor/vest/alt + shoes = /obj/item/clothing/shoes/jackboots + l_pocket = /obj/item/restraints/handcuffs + r_pocket = /obj/item/assembly/flash/handheld + suit_store = /obj/item/gun/energy/disabler + backpack_contents = list(/obj/item/melee/baton/loaded=1) + + backpack = /obj/item/storage/backpack/security + satchel = /obj/item/storage/backpack/satchel/sec + duffelbag = /obj/item/storage/backpack/duffelbag/sec + box = /obj/item/storage/box/security + + implants = list(/obj/item/implant/mindshield) + + chameleon_extras = list(/obj/item/gun/energy/disabler, /obj/item/clothing/glasses/hud/security/sunglasses, /obj/item/clothing/head/helmet) + //The helmet is necessary because /obj/item/clothing/head/helmet/sec is overwritten in the chameleon list by the standard helmet, which has the same name and icon state + + +/obj/item/radio/headset/headset_sec/alt/department/Initialize() + . = ..() + wires = new/datum/wires/radio(src) + secure_radio_connections = new + recalculateChannels() + +/obj/item/radio/headset/headset_sec/alt/department/engi + keyslot = new /obj/item/encryptionkey/headset_sec + keyslot2 = new /obj/item/encryptionkey/headset_eng + +/obj/item/radio/headset/headset_sec/alt/department/supply + keyslot = new /obj/item/encryptionkey/headset_sec + keyslot2 = new /obj/item/encryptionkey/headset_cargo + +/obj/item/radio/headset/headset_sec/alt/department/med + keyslot = new /obj/item/encryptionkey/headset_sec + keyslot2 = new /obj/item/encryptionkey/headset_med + +/obj/item/radio/headset/headset_sec/alt/department/sci + keyslot = new /obj/item/encryptionkey/headset_sec + keyslot2 = new /obj/item/encryptionkey/headset_sci diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm new file mode 100644 index 0000000000..59d29954fd --- /dev/null +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -0,0 +1,70 @@ +/datum/job/mining + title = "Shaft Miner" + flag = MINER + department_head = list("Quartermaster") + department_flag = CIVILIAN + faction = "Station" + total_positions = 3 + spawn_positions = 3 + supervisors = "the quartermaster" + selection_color = "#dcba97" + + outfit = /datum/outfit/job/miner + + access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM) + + display_order = JOB_DISPLAY_ORDER_SHAFT_MINER + +/datum/outfit/job/miner + name = "Shaft Miner" + jobtype = /datum/job/mining + + belt = /obj/item/pda/shaftminer + ears = /obj/item/radio/headset/headset_cargo/mining + shoes = /obj/item/clothing/shoes/workboots/mining + gloves = /obj/item/clothing/gloves/color/black + uniform = /obj/item/clothing/under/rank/miner/lavaland + l_pocket = /obj/item/reagent_containers/hypospray/medipen/survival + r_pocket = /obj/item/storage/bag/ore //causes issues if spawned in backpack + backpack_contents = list( + /obj/item/flashlight/seclite=1,\ + /obj/item/kitchen/knife/combat/survival=1,\ + /obj/item/mining_voucher=1,\ + /obj/item/stack/marker_beacon/ten=1) + + backpack = /obj/item/storage/backpack/explorer + satchel = /obj/item/storage/backpack/satchel/explorer + duffelbag = /obj/item/storage/backpack/duffelbag + box = /obj/item/storage/box/survival_mining + + chameleon_extras = /obj/item/gun/energy/kinetic_accelerator + +/datum/outfit/job/miner/equipped + name = "Shaft Miner (Equipment)" + suit = /obj/item/clothing/suit/hooded/explorer + mask = /obj/item/clothing/mask/gas/explorer + glasses = /obj/item/clothing/glasses/meson + suit_store = /obj/item/tank/internals/oxygen + internals_slot = SLOT_S_STORE + backpack_contents = list( + /obj/item/flashlight/seclite=1,\ + /obj/item/kitchen/knife/combat/survival=1, + /obj/item/mining_voucher=1, + /obj/item/t_scanner/adv_mining_scanner/lesser=1, + /obj/item/gun/energy/kinetic_accelerator=1,\ + /obj/item/stack/marker_beacon/ten=1) + +/datum/outfit/job/miner/equipped/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + ..() + if(visualsOnly) + return + if(istype(H.wear_suit, /obj/item/clothing/suit/hooded)) + var/obj/item/clothing/suit/hooded/S = H.wear_suit + S.ToggleHood() + +/datum/outfit/job/miner/equipped/hardsuit + name = "Shaft Miner (Equipment + Hardsuit)" + suit = /obj/item/clothing/suit/space/hardsuit/mining + mask = /obj/item/clothing/mask/breath + diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm new file mode 100644 index 0000000000..4a2a2c7fd2 --- /dev/null +++ b/code/modules/jobs/job_types/station_engineer.dm @@ -0,0 +1,54 @@ +/datum/job/engineer + title = "Station Engineer" + flag = ENGINEER + department_head = list("Chief Engineer") + department_flag = ENGSEC + faction = "Station" + total_positions = 5 + spawn_positions = 5 + supervisors = "the chief engineer" + selection_color = "#fff5cc" + exp_requirements = 60 + exp_type = EXP_TYPE_CREW + + outfit = /datum/outfit/job/engineer + + access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, + ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, + ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM) + + display_order = JOB_DISPLAY_ORDER_STATION_ENGINEER + +/datum/outfit/job/engineer + name = "Station Engineer" + jobtype = /datum/job/engineer + + belt = /obj/item/storage/belt/utility/full/engi + l_pocket = /obj/item/pda/engineering + ears = /obj/item/radio/headset/headset_eng + uniform = /obj/item/clothing/under/rank/engineer + shoes = /obj/item/clothing/shoes/workboots + head = /obj/item/clothing/head/hardhat + r_pocket = /obj/item/t_scanner + + backpack = /obj/item/storage/backpack/industrial + satchel = /obj/item/storage/backpack/satchel/eng + duffelbag = /obj/item/storage/backpack/duffelbag/engineering + box = /obj/item/storage/box/engineer + pda_slot = SLOT_L_STORE + backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1) + +/datum/outfit/job/engineer/gloved + name = "Station Engineer (Gloves)" + gloves = /obj/item/clothing/gloves/color/yellow + +/datum/outfit/job/engineer/gloved/rig + name = "Station Engineer (Hardsuit)" + mask = /obj/item/clothing/mask/breath + suit = /obj/item/clothing/suit/space/hardsuit/engine + suit_store = /obj/item/tank/internals/oxygen + head = null + internals_slot = SLOT_S_STORE + + diff --git a/code/modules/jobs/job_types/virologist.dm b/code/modules/jobs/job_types/virologist.dm new file mode 100644 index 0000000000..26f38e594b --- /dev/null +++ b/code/modules/jobs/job_types/virologist.dm @@ -0,0 +1,35 @@ +/datum/job/virologist + title = "Virologist" + flag = VIROLOGIST + department_head = list("Chief Medical Officer") + department_flag = MEDSCI + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the chief medical officer" + selection_color = "#ffeef0" + exp_type = EXP_TYPE_CREW + exp_requirements = 60 + + outfit = /datum/outfit/job/virologist + + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_MEDICAL, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM) + + display_order = JOB_DISPLAY_ORDER_VIROLOGIST + +/datum/outfit/job/virologist + name = "Virologist" + jobtype = /datum/job/virologist + + belt = /obj/item/pda/viro + ears = /obj/item/radio/headset/headset_med + uniform = /obj/item/clothing/under/rank/virologist + mask = /obj/item/clothing/mask/surgical + shoes = /obj/item/clothing/shoes/sneakers/white + suit = /obj/item/clothing/suit/toggle/labcoat/virologist + suit_store = /obj/item/flashlight/pen + + backpack = /obj/item/storage/backpack/virology + satchel = /obj/item/storage/backpack/satchel/vir + duffelbag = /obj/item/storage/backpack/duffelbag/med diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm new file mode 100644 index 0000000000..b70281f099 --- /dev/null +++ b/code/modules/jobs/job_types/warden.dm @@ -0,0 +1,55 @@ +/datum/job/warden + title = "Warden" + flag = WARDEN +// auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY + department_head = list("Head of Security") + department_flag = ENGSEC + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "the head of security" + selection_color = "#ffeeee" + minimal_player_age = 7 + exp_requirements = 300 + exp_type = EXP_TYPE_CREW + + outfit = /datum/outfit/job/warden + + access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) // See /datum/job/warden/get_access() + +// mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + + display_order = JOB_DISPLAY_ORDER_WARDEN + +/datum/job/warden/get_access() + var/list/L = list() + L = ..() | check_config_for_sec_maint() + return L + +/datum/outfit/job/warden + name = "Warden" + jobtype = /datum/job/warden + + belt = /obj/item/pda/warden + ears = /obj/item/radio/headset/headset_sec/alt + uniform = /obj/item/clothing/under/rank/warden + shoes = /obj/item/clothing/shoes/jackboots + suit = /obj/item/clothing/suit/armor/vest/warden/alt + gloves = /obj/item/clothing/gloves/color/black + head = /obj/item/clothing/head/warden + glasses = /obj/item/clothing/glasses/hud/security/sunglasses + r_pocket = /obj/item/assembly/flash/handheld + l_pocket = /obj/item/restraints/handcuffs + suit_store = /obj/item/gun/energy/disabler + backpack_contents = list(/obj/item/melee/baton/loaded=1) + + backpack = /obj/item/storage/backpack/security + satchel = /obj/item/storage/backpack/satchel/sec + duffelbag = /obj/item/storage/backpack/duffelbag/sec + box = /obj/item/storage/box/security + + implants = list(/obj/item/implant/mindshield) + + chameleon_extras = /obj/item/gun/ballistic/shotgun/automatic/combat/compact + diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 84be6438c0..9bd37cf171 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -13,8 +13,12 @@ canmove = FALSE anchored = TRUE // don't get pushed around + var/mob/living/new_character //for instant transfer once the round is set up + //Used to make sure someone doesn't get spammed with messages if they're ineligible for roles + var/ineligible_for_roles = FALSE + /mob/dead/new_player/Initialize() if(client && SSticker.state == GAME_STATE_STARTUP) var/obj/screen/splash/S = new(client, TRUE, TRUE) @@ -33,8 +37,7 @@ return /mob/dead/new_player/proc/new_player_panel() - var/output = "

Welcome, [client ? client.prefs.real_name : "Unknown User"]

" - output += "

Setup Character

" + var/output = "

Setup Character

" if(SSticker.current_state <= GAME_STATE_PREGAME) switch(ready) @@ -75,7 +78,7 @@ var/datum/browser/popup = new(src, "playersetup", "
New Player Options
", 250, 265) popup.set_window_options("can_close=0") popup.set_content(output) - popup.open(0) + popup.open(FALSE) /mob/dead/new_player/Topic(href, href_list[]) if(src != usr) @@ -429,8 +432,7 @@ /mob/dead/new_player/proc/LateChoices() - var/dat = "
Round Duration: [DisplayTimeText(world.time - SSticker.round_start_time)]
" - + var/list/dat = list("
Round Duration: [DisplayTimeText(world.time - SSticker.round_start_time)]
") if(SSshuttle.emergency) switch(SSshuttle.emergency.mode) if(SHUTTLE_ESCAPE) @@ -438,57 +440,49 @@ if(SHUTTLE_CALL) if(!SSshuttle.canRecall()) dat += "
The station is currently undergoing evacuation procedures.

" + for(var/datum/job/prioritized_job in SSjob.prioritized_jobs) + if(prioritized_job.current_positions >= prioritized_job.total_positions) + SSjob.prioritized_jobs -= prioritized_job + dat += "
" + var/column_counter = 0 + for(var/list/category in list(GLOB.command_positions) + list(GLOB.engineering_positions) + list(GLOB.supply_positions) + list(GLOB.nonhuman_positions - "pAI") + list(GLOB.civilian_positions) + list(GLOB.medical_positions) + list(GLOB.science_positions) + list(GLOB.security_positions)) + var/cat_color = SSjob.name_occupations[category[1]].selection_color //use the color of the first job in the category (the department head) as the category color + dat += "
" + dat += "[SSjob.name_occupations[category[1]].exp_type_department]" + var/list/dept_dat = list() + for(var/job in category) + var/datum/job/job_datum = SSjob.name_occupations[job] + if(job_datum && IsJobUnavailable(job_datum.title, TRUE) == JOB_AVAILABLE) + var/command_bold = "" + if(job in GLOB.command_positions) + command_bold = " command" + if(job_datum in SSjob.prioritized_jobs) + dept_dat += "[job_datum.title] ([job_datum.current_positions])" + else + dept_dat += "[job_datum.title] ([job_datum.current_positions])" + if(!dept_dat.len) + dept_dat += "No positions open." + dat += jointext(dept_dat, "") + dat += "

" + column_counter++ + if(column_counter > 0 && (column_counter % 3 == 0)) + dat += "
" + dat += "
" + dat += "" - var/available_job_count = 0 - for(var/datum/job/job in SSjob.occupations) - if(job && IsJobUnavailable(job.title, TRUE) == JOB_AVAILABLE) - available_job_count++ + var/available_ghosts = 0 for(var/spawner in GLOB.mob_spawners) - available_job_count++ + available_ghosts++ break - if(!available_job_count) - dat += "
There are currently no open positions!
" - + if(!available_ghosts) + dat += "
There are currently no open ghost spawners.
" else - dat += "
Choose from the following open positions:

" - var/list/categorizedJobs = list( - "Command" = list(jobs = list(), titles = GLOB.command_positions, color = "#aac1ee"), - "Engineering" = list(jobs = list(), titles = GLOB.engineering_positions, color = "#ffd699"), - "Supply" = list(jobs = list(), titles = GLOB.supply_positions, color = "#ead4ae"), - "Miscellaneous" = list(jobs = list(), titles = list(), color = "#ffffff", colBreak = TRUE), - "Ghost Role" = list(jobs = list(), titles = GLOB.mob_spawners, color = "#ffffff"), - "Synthetic" = list(jobs = list(), titles = GLOB.nonhuman_positions, color = "#ccffcc"), - "Service" = list(jobs = list(), titles = GLOB.civilian_positions, color = "#cccccc"), - "Medical" = list(jobs = list(), titles = GLOB.medical_positions, color = "#99ffe6", colBreak = TRUE), - "Science" = list(jobs = list(), titles = GLOB.science_positions, color = "#e6b3e6"), - "Security" = list(jobs = list(), titles = GLOB.security_positions, color = "#ff9999"), - ) + dat += "
Currently open Ghost roles:

" + var/list/categorizedJobs = list("Ghost Role" = list(jobs = list(), titles = GLOB.mob_spawners, color = "#ffffff")) for(var/spawner in GLOB.mob_spawners) categorizedJobs["Ghost Role"]["jobs"] += spawner - for(var/datum/job/job in SSjob.occupations) - if(job && IsJobUnavailable(job.title, TRUE) == JOB_AVAILABLE) - var/categorized = FALSE - for(var/jobcat in categorizedJobs) - var/list/jobs = categorizedJobs[jobcat]["jobs"] - if(job.title in categorizedJobs[jobcat]["titles"]) - categorized = TRUE - if(jobcat == "Command") - - if(job.title == "Captain") // Put captain at top of command jobs - jobs.Insert(1, job) - else - jobs += job - else // Put heads at top of non-command jobs - if(job.title in GLOB.command_positions) - jobs.Insert(1, job) - else - jobs += job - if(!categorized) - categorizedJobs["Miscellaneous"]["jobs"] += job - - dat += "
" for(var/jobcat in categorizedJobs) if(categorizedJobs[jobcat]["colBreak"]) @@ -498,16 +492,6 @@ var/color = categorizedJobs[jobcat]["color"] dat += "
" dat += "[jobcat]" - for(var/datum/job/job in categorizedJobs[jobcat]["jobs"]) - var/position_class = "otherPosition" - if(job.title in GLOB.command_positions) - position_class = "commandPosition" - if(job in SSjob.prioritized_jobs) - dat += "[job.title] ([job.current_positions])" - else - dat += "[job.title] ([job.current_positions])" - categorizedJobs[jobcat]["jobs"] -= job - for(var/spawner in categorizedJobs[jobcat]["jobs"]) dat += "[spawner]" @@ -515,16 +499,11 @@ dat += "
" dat += "" - // Removing the old window method but leaving it here for reference - //src << browse(dat, "window=latechoices;size=300x640;can_close=1") - - // Added the new browser window method var/datum/browser/popup = new(src, "latechoices", "Choose Profession", 680, 580) popup.add_stylesheet("playeroptions", 'html/browser/playeroptions.css') - popup.set_content(dat) + popup.set_content(jointext(dat, "")) popup.open(FALSE) // FALSE is passed to open so that it doesn't use the onclose() proc - /mob/dead/new_player/proc/create_character(transfer_after) spawning = 1 close_spawn_windows() @@ -533,7 +512,7 @@ var/frn = CONFIG_GET(flag/force_random_names) if(!frn) - frn = jobban_isbanned(src, "appearance") + frn = jobban_isbanned(src, "Appearance") if(QDELETED(src)) return if(frn) @@ -580,3 +559,31 @@ src << browse(null, "window=preferences") //closes job selection src << browse(null, "window=mob_occupation") src << browse(null, "window=latechoices") //closes late job selection + +/* Used to make sure that a player has a valid job preference setup, used to knock players out of eligibility for anything if their prefs don't make sense. + A "valid job preference setup" in this situation means at least having one job set to low, or not having "return to lobby" enabled + Prevents "antag rolling" by setting antag prefs on, all jobs to never, and "return to lobby if preferences not availible" + Doing so would previously allow you to roll for antag, then send you back to lobby if you didn't get an antag role + This also does some admin notification and logging as well, as well as some extra logic to make sure things don't go wrong +*/ + +/mob/dead/new_player/proc/check_preferences() + if(!client) + return FALSE //Not sure how this would get run without the mob having a client, but let's just be safe. + if(client.prefs.joblessrole != RETURNTOLOBBY) + return TRUE + // If they have antags enabled, they're potentially doing this on purpose instead of by accident. Notify admins if so. + var/has_antags = FALSE + if(client.prefs.be_special.len > 0) + has_antags = TRUE + if(client.prefs.job_preferences.len == 0) + if(!ineligible_for_roles) + to_chat(src, "You have no jobs enabled, along with return to lobby if job is unavailable. This makes you ineligible for any round start role, please update your job preferences.") + ineligible_for_roles = TRUE + ready = PLAYER_NOT_READY + if(has_antags) + log_admin("[src.ckey] just got booted back to lobby with no jobs, but antags enabled.") + message_admins("[src.ckey] just got booted back to lobby with no jobs enabled, but antag rolling enabled. Likely antag rolling abuse.") + + return FALSE //This is the only case someone should actually be completely blocked from antag rolling as well + return TRUE \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm index 353df3aa66..e15ef482a4 100644 --- a/code/modules/mob/dead/new_player/preferences_setup.dm +++ b/code/modules/mob/dead/new_player/preferences_setup.dm @@ -21,50 +21,35 @@ age = rand(AGE_MIN,AGE_MAX) /datum/preferences/proc/update_preview_icon() - // Silicons only need a very basic preview since there is no customization for them. -// var/wide_icon = FALSE //CITDEL THINGS -// if(features["taur"] != "None") -// wide_icon = TRUE - if(job_engsec_high) - switch(job_engsec_high) - if(AI_JF) - parent.show_character_previews(image('icons/mob/ai.dmi', resolve_ai_icon(preferred_ai_core_display), dir = SOUTH)) - return - if(CYBORG) - parent.show_character_previews(image('icons/mob/robots.dmi', icon_state = "robot", dir = SOUTH)) - return + // Determine what job is marked as 'High' priority, and dress them up as such. + var/datum/job/previewJob + var/highest_pref = 0 + for(var/job in job_preferences) + if(job_preferences[job] > highest_pref) + previewJob = SSjob.GetJob(job) + highest_pref = job_preferences[job] + + if(previewJob) + // Silicons only need a very basic preview since there is no customization for them. + if(istype(previewJob,/datum/job/ai)) + parent.show_character_previews(image('icons/mob/ai.dmi', icon_state = resolve_ai_icon(preferred_ai_core_display), dir = SOUTH)) + return + if(istype(previewJob,/datum/job/cyborg)) + parent.show_character_previews(image('icons/mob/robots.dmi', icon_state = "robot", dir = SOUTH)) + return // Set up the dummy for its photoshoot var/mob/living/carbon/human/dummy/mannequin = generate_or_wait_for_human_dummy(DUMMY_HUMAN_SLOT_PREFERENCES) mannequin.cut_overlays() + // Apply the Dummy's preview background first so we properly layer everything else on top of it. mannequin.add_overlay(mutable_appearance('modular_citadel/icons/ui/backgrounds.dmi', bgstate, layer = SPACE_LAYER)) copy_to(mannequin) - // Determine what job is marked as 'High' priority, and dress them up as such. - var/datum/job/previewJob - var/highRankFlag = job_civilian_high | job_medsci_high | job_engsec_high - - if(job_civilian_low & ASSISTANT) - previewJob = SSjob.GetJob("Assistant") - else if(highRankFlag) - var/highDeptFlag - if(job_civilian_high) - highDeptFlag = CIVILIAN - else if(job_medsci_high) - highDeptFlag = MEDSCI - else if(job_engsec_high) - highDeptFlag = ENGSEC - - for(var/datum/job/job in SSjob.occupations) - if(job.flag == highRankFlag && job.department_flag == highDeptFlag) - previewJob = job - break - if(previewJob) - if(current_tab != 2) - mannequin.job = previewJob.title - previewJob.equip(mannequin, TRUE) + mannequin.job = previewJob.title + previewJob.equip(mannequin, TRUE, preference_source = parent) COMPILE_OVERLAYS(mannequin) parent.show_character_previews(new /mutable_appearance(mannequin)) unset_busy_human_dummy(DUMMY_HUMAN_SLOT_PREFERENCES) + diff --git a/tgstation.dme b/tgstation.dme index 0fbefaa7b8..341497cb5c 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1767,17 +1767,39 @@ #include "code\modules\jobs\access.dm" #include "code\modules\jobs\job_exp.dm" #include "code\modules\jobs\jobs.dm" +#include "code\modules\jobs\job_types\_job.dm" +#include "code\modules\jobs\job_types\ai.dm" #include "code\modules\jobs\job_types\assistant.dm" +#include "code\modules\jobs\job_types\atmospheric_technician.dm" +#include "code\modules\jobs\job_types\bartender.dm" +#include "code\modules\jobs\job_types\botanist.dm" #include "code\modules\jobs\job_types\captain.dm" -#include "code\modules\jobs\job_types\cargo_service.dm" -#include "code\modules\jobs\job_types\civilian.dm" -#include "code\modules\jobs\job_types\civilian_chaplain.dm" -#include "code\modules\jobs\job_types\engineering.dm" -#include "code\modules\jobs\job_types\job.dm" -#include "code\modules\jobs\job_types\medical.dm" -#include "code\modules\jobs\job_types\science.dm" -#include "code\modules\jobs\job_types\security.dm" -#include "code\modules\jobs\job_types\silicon.dm" +#include "code\modules\jobs\job_types\cargo_technician.dm" +#include "code\modules\jobs\job_types\chaplain.dm" +#include "code\modules\jobs\job_types\chemist.dm" +#include "code\modules\jobs\job_types\chief_engineer.dm" +#include "code\modules\jobs\job_types\chief_medical_officer.dm" +#include "code\modules\jobs\job_types\clown.dm" +#include "code\modules\jobs\job_types\cook.dm" +#include "code\modules\jobs\job_types\curator.dm" +#include "code\modules\jobs\job_types\cyborg.dm" +#include "code\modules\jobs\job_types\detective.dm" +#include "code\modules\jobs\job_types\geneticist.dm" +#include "code\modules\jobs\job_types\head_of_personnel.dm" +#include "code\modules\jobs\job_types\head_of_security.dm" +#include "code\modules\jobs\job_types\janitor.dm" +#include "code\modules\jobs\job_types\lawyer.dm" +#include "code\modules\jobs\job_types\medical_doctor.dm" +#include "code\modules\jobs\job_types\mime.dm" +#include "code\modules\jobs\job_types\quartermaster.dm" +#include "code\modules\jobs\job_types\research_director.dm" +#include "code\modules\jobs\job_types\roboticist.dm" +#include "code\modules\jobs\job_types\scientist.dm" +#include "code\modules\jobs\job_types\security_officer.dm" +#include "code\modules\jobs\job_types\shaft_miner.dm" +#include "code\modules\jobs\job_types\station_engineer.dm" +#include "code\modules\jobs\job_types\virologist.dm" +#include "code\modules\jobs\job_types\warden.dm" #include "code\modules\jobs\map_changes\map_changes.dm" #include "code\modules\keybindings\bindings_admin.dm" #include "code\modules\keybindings\bindings_atom.dm" From f19a3541a33c09fee796bffa1e2f61b2496728ff Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 16 Jun 2019 19:30:14 -0500 Subject: [PATCH 002/324] cleans up runtimes --- code/controllers/subsystem/ticker.dm | 2 +- code/game/gamemodes/game_mode.dm | 1 + code/game/gamemodes/revolution/revolution.dm | 1 + code/modules/mob/dead/new_player/new_player.dm | 7 ++++++- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 4a3143da79..f5222642c0 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -244,7 +244,7 @@ SUBSYSTEM_DEF(ticker) var/can_continue = 0 can_continue = src.mode.pre_setup() //Choose antagonists CHECK_TICK - SSjob.DivideOccupations() //Distribute jobs + can_continue = can_continue && SSjob.DivideOccupations(mode.required_jobs) //Distribute jobs CHECK_TICK if(!GLOB.Debug2) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 28a0e21061..13f6db2422 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -24,6 +24,7 @@ var/list/datum/mind/antag_candidates = list() // List of possible starting antags goes here var/list/restricted_jobs = list() // Jobs it doesn't make sense to be. I.E chaplain or AI cultist var/list/protected_jobs = list() // Jobs that can't be traitors because + var/list/required_jobs = list() // alternative required job groups eg list(list(cap=1),list(hos=1,sec=2)) translates to one captain OR one hos and two secmans var/required_players = 0 var/maximum_players = -1 // -1 is no maximum, positive numbers limit the selection of a mode on overstaffed stations var/required_enemies = 0 diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 09047b05a9..38dd128505 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -13,6 +13,7 @@ antag_flag = ROLE_REV false_report_weight = 10 restricted_jobs = list("Security Officer", "Warden", "Detective", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer") + required_jobs = list(list("Captain"=1),list("Head of Personnel"=1),list("Head of Security"=1),list("Chief Engineer"=1),list("Research Director"=1),list("Chief Medical Officer"=1)) //Any head present required_players = 30 required_enemies = 2 recommended_enemies = 3 diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 9bd37cf171..645b1b2203 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -446,7 +446,12 @@ dat += "" dat += "" dat += "" - dat += "" + dat += "" dat += "" dat += "" dat += "" @@ -141,7 +136,7 @@ dat += "" var/counter = 1 - while(src.active2.fields[text("com_[]", counter)]) + while(active2.fields[text("com_[]", counter)]) dat += "" counter++ dat += "" @@ -169,7 +164,7 @@ dat += "
Medical Robots:" var/bdat = null for(var/mob/living/simple_animal/bot/medbot/M in GLOB.alive_mob_list) - if(M.z != src.z) + if(M.z != z) continue //only find medibots on the same z-level as the computer var/turf/bl = get_turf(M) if(bl) //if it can't find a turf for the medibot, then it probably shouldn't be showing up @@ -189,7 +184,7 @@ dat += "{Log In}" var/datum/browser/popup = new(user, "med_rec", "Medical Records Console", 600, 400) popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) popup.open() /obj/machinery/computer/med_data/Topic(href, href_list) @@ -197,29 +192,20 @@ if(.) return . if(!(active1 in GLOB.data_core.general)) - src.active1 = null + active1 = null if(!(active2 in GLOB.data_core.medical)) - src.active2 = null + active2 = null if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr) || IsAdminGhost(usr)) usr.set_machine(src) if(href_list["temp"]) - src.temp = null - if(href_list["scan"]) - if(src.scan) - usr.put_in_hands(scan) - scan = null - else - var/obj/item/I = usr.is_holding_item_of_type(/obj/item/card/id) - if(I) - if(!usr.transferItemToLoc(I, src)) - return - src.scan = I + temp = null else if(href_list["logout"]) - src.authenticated = null - src.screen = null - src.active1 = null - src.active2 = null + authenticated = null + screen = null + active1 = null + active2 = null + playsound(src, 'sound/machines/terminal_off.ogg', 50, FALSE) else if(href_list["choice"]) // SORTING! if(href_list["choice"] == "Sorting") @@ -234,34 +220,37 @@ sortBy = href_list["sort"] order = initial(order) else if(href_list["login"]) - if(issilicon(usr)) - src.active1 = null - src.active2 = null - src.authenticated = 1 - src.rank = "AI" - src.screen = 1 - else if(IsAdminGhost(usr)) - src.active1 = null - src.active2 = null - src.authenticated = 1 - src.rank = "Central Command" - src.screen = 1 - else if(istype(src.scan, /obj/item/card/id)) - src.active1 = null - src.active2 = null - if(src.check_access(src.scan)) - src.authenticated = src.scan.registered_name - src.rank = src.scan.assignment - src.screen = 1 - if(src.authenticated) - + var/mob/M = usr + var/obj/item/card/id/I = M.get_idcard(TRUE) + if(issilicon(M)) + active1 = null + active2 = null + authenticated = 1 + rank = "AI" + screen = 1 + else if(IsAdminGhost(M)) + active1 = null + active2 = null + authenticated = 1 + rank = "Central Command" + screen = 1 + else if(istype(I) && check_access(I)) + active1 = null + active2 = null + authenticated = I.registered_name + rank = I.assignment + screen = 1 + else + to_chat(usr, "Unauthorized access.") + playsound(src, 'sound/machines/terminal_on.ogg', 50, FALSE) + if(authenticated) if(href_list["screen"]) - src.screen = text2num(href_list["screen"]) - if(src.screen < 1) - src.screen = 1 + screen = text2num(href_list["screen"]) + if(screen < 1) + screen = 1 - src.active1 = null - src.active2 = null + active1 = null + active2 = null else if(href_list["vir"]) var/type = href_list["vir"] @@ -269,7 +258,7 @@ var/AfS = "" for(var/mob/M in Dis.viable_mobtypes) AfS += " [initial(M.name)];" - src.temp = {"Name: [Dis.name] + temp = {"Name: [Dis.name]
Number of stages: [Dis.max_stages]
Spread: [Dis.spread_text] Transmission
Possible Cure: [(Dis.cure_text||"none")] @@ -280,110 +269,112 @@
Severity: [Dis.severity]"} else if(href_list["del_all"]) - src.temp = "Are you sure you wish to delete all records?
\n\tYes
\n\tNo
" + temp = "Are you sure you wish to delete all records?
\n\tYes
\n\tNo
" else if(href_list["del_all2"]) investigate_log("[key_name(usr)] has deleted all medical records.", INVESTIGATE_RECORDS) GLOB.data_core.medical.Cut() - src.temp = "All records deleted." + temp = "All records deleted." else if(href_list["field"]) - var/a1 = src.active1 - var/a2 = src.active2 + var/a1 = active1 + var/a2 = active2 switch(href_list["field"]) if("fingerprint") if(active1) - var/t1 = stripped_input("Please input fingerprint hash:", "Med. records", src.active1.fields["fingerprint"], null) + var/t1 = stripped_input("Please input fingerprint hash:", "Med. records", active1.fields["fingerprint"], null) if(!canUseMedicalRecordsConsole(usr, t1, a1)) return - src.active1.fields["fingerprint"] = t1 - if("sex") + active1.fields["fingerprint"] = t1 + if("gender") if(active1) - if(src.active1.fields["sex"] == "Male") - src.active1.fields["sex"] = "Female" + if(active1.fields["gender"] == "Male") + active1.fields["gender"] = "Female" + else if(active1.fields["gender"] == "Female") + active1.fields["gender"] = "Other" else - src.active1.fields["sex"] = "Male" + active1.fields["gender"] = "Male" if("age") if(active1) - var/t1 = input("Please input age:", "Med. records", src.active1.fields["age"], null) as num + var/t1 = input("Please input age:", "Med. records", active1.fields["age"], null) as num if(!canUseMedicalRecordsConsole(usr, t1, a1)) return - src.active1.fields["age"] = t1 + active1.fields["age"] = t1 if("species") if(active1) - var/t1 = stripped_input("Please input species name", "Med. records", src.active1.fields["species"], null) + var/t1 = stripped_input("Please input species name", "Med. records", active1.fields["species"], null) if(!canUseMedicalRecordsConsole(usr, t1, a1)) return active1.fields["species"] = t1 if("mi_dis") if(active2) - var/t1 = stripped_input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) + var/t1 = stripped_input("Please input minor disabilities list:", "Med. records", active2.fields["mi_dis"], null) if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return - src.active2.fields["mi_dis"] = t1 + active2.fields["mi_dis"] = t1 if("mi_dis_d") if(active2) - var/t1 = stripped_input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) + var/t1 = stripped_input("Please summarize minor dis.:", "Med. records", active2.fields["mi_dis_d"], null) if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return - src.active2.fields["mi_dis_d"] = t1 + active2.fields["mi_dis_d"] = t1 if("ma_dis") if(active2) - var/t1 = stripped_input("Please input major disabilities list:", "Med. records", src.active2.fields["ma_dis"], null) + var/t1 = stripped_input("Please input major disabilities list:", "Med. records", active2.fields["ma_dis"], null) if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return - src.active2.fields["ma_dis"] = t1 + active2.fields["ma_dis"] = t1 if("ma_dis_d") if(active2) - var/t1 = stripped_input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) + var/t1 = stripped_input("Please summarize major dis.:", "Med. records", active2.fields["ma_dis_d"], null) if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return - src.active2.fields["ma_dis_d"] = t1 + active2.fields["ma_dis_d"] = t1 if("alg") if(active2) - var/t1 = stripped_input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) + var/t1 = stripped_input("Please state allergies:", "Med. records", active2.fields["alg"], null) if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return - src.active2.fields["alg"] = t1 + active2.fields["alg"] = t1 if("alg_d") if(active2) - var/t1 = stripped_input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) + var/t1 = stripped_input("Please summarize allergies:", "Med. records", active2.fields["alg_d"], null) if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return - src.active2.fields["alg_d"] = t1 + active2.fields["alg_d"] = t1 if("cdi") if(active2) - var/t1 = stripped_input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) + var/t1 = stripped_input("Please state diseases:", "Med. records", active2.fields["cdi"], null) if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return - src.active2.fields["cdi"] = t1 + active2.fields["cdi"] = t1 if("cdi_d") if(active2) - var/t1 = stripped_input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) + var/t1 = stripped_input("Please summarize diseases:", "Med. records", active2.fields["cdi_d"], null) if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return - src.active2.fields["cdi_d"] = t1 + active2.fields["cdi_d"] = t1 if("notes") if(active2) - var/t1 = stripped_input("Please summarize notes:", "Med. records", src.active2.fields["notes"], null) + var/t1 = stripped_input("Please summarize notes:", "Med. records", active2.fields["notes"], null) if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return - src.active2.fields["notes"] = t1 + active2.fields["notes"] = t1 if("p_stat") if(active1) - src.temp = "Physical Condition:
\n\t*Deceased*
\n\t*Unconscious*
\n\tActive
\n\tPhysically Unfit
" + temp = "Physical Condition:
\n\t*Deceased*
\n\t*Unconscious*
\n\tActive
\n\tPhysically Unfit
" if("m_stat") if(active1) - src.temp = "Mental Condition:
\n\t*Insane*
\n\t*Unstable*
\n\t*Watch*
\n\tStable
" + temp = "Mental Condition:
\n\t*Insane*
\n\t*Unstable*
\n\t*Watch*
\n\tStable
" if("blood_type") if(active2) - src.temp = "Blood Type:
\n\tA-A+
\n\tB-B+
\n\tAB-AB+
\n\tO-O+
" + temp = "Blood Type:
\n\tA-A+
\n\tB-B+
\n\tAB-AB+
\n\tO-O+
" if("b_dna") if(active2) - var/t1 = stripped_input("Please input DNA hash:", "Med. records", src.active2.fields["b_dna"], null) + var/t1 = stripped_input("Please input DNA hash:", "Med. records", active2.fields["b_dna"], null) if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return - src.active2.fields["b_dna"] = t1 + active2.fields["b_dna"] = t1 if("show_photo_front") if(active1) if(active1.fields["photo_front"]) @@ -402,51 +393,51 @@ if(active1) switch(href_list["p_stat"]) if("deceased") - src.active1.fields["p_stat"] = "*Deceased*" + active1.fields["p_stat"] = "*Deceased*" if("unconscious") - src.active1.fields["p_stat"] = "*Unconscious*" + active1.fields["p_stat"] = "*Unconscious*" if("active") - src.active1.fields["p_stat"] = "Active" + active1.fields["p_stat"] = "Active" if("unfit") - src.active1.fields["p_stat"] = "Physically Unfit" + active1.fields["p_stat"] = "Physically Unfit" else if(href_list["m_stat"]) if(active1) switch(href_list["m_stat"]) if("insane") - src.active1.fields["m_stat"] = "*Insane*" + active1.fields["m_stat"] = "*Insane*" if("unstable") - src.active1.fields["m_stat"] = "*Unstable*" + active1.fields["m_stat"] = "*Unstable*" if("watch") - src.active1.fields["m_stat"] = "*Watch*" + active1.fields["m_stat"] = "*Watch*" if("stable") - src.active1.fields["m_stat"] = "Stable" + active1.fields["m_stat"] = "Stable" else if(href_list["blood_type"]) if(active2) switch(href_list["blood_type"]) if("an") - src.active2.fields["blood_type"] = "A-" + active2.fields["blood_type"] = "A-" if("bn") - src.active2.fields["blood_type"] = "B-" + active2.fields["blood_type"] = "B-" if("abn") - src.active2.fields["blood_type"] = "AB-" + active2.fields["blood_type"] = "AB-" if("on") - src.active2.fields["blood_type"] = "O-" + active2.fields["blood_type"] = "O-" if("ap") - src.active2.fields["blood_type"] = "A+" + active2.fields["blood_type"] = "A+" if("bp") - src.active2.fields["blood_type"] = "B+" + active2.fields["blood_type"] = "B+" if("abp") - src.active2.fields["blood_type"] = "AB+" + active2.fields["blood_type"] = "AB+" if("op") - src.active2.fields["blood_type"] = "O+" + active2.fields["blood_type"] = "O+" else if(href_list["del_r"]) if(active2) - src.temp = "Are you sure you wish to delete the record (Medical Portion Only)?
\n\tYes
\n\tNo
" + temp = "Are you sure you wish to delete the record (Medical Portion Only)?
\n\tYes
\n\tNo
" else if(href_list["del_r2"]) investigate_log("[key_name(usr)] has deleted the medical records for [active1.fields["name"]].", INVESTIGATE_RECORDS) @@ -463,10 +454,10 @@ screen = 4 else if(href_list["new"]) - if((istype(src.active1, /datum/data/record) && !( istype(src.active2, /datum/data/record) ))) + if((istype(active1, /datum/data/record) && !( istype(active2, /datum/data/record) ))) var/datum/data/record/R = new /datum/data/record( ) - R.fields["name"] = src.active1.fields["name"] - R.fields["id"] = src.active1.fields["id"] + R.fields["name"] = active1.fields["name"] + R.fields["id"] = active1.fields["id"] R.name = text("Medical Record #[]", R.fields["id"]) R.fields["blood_type"] = "Unknown" R.fields["b_dna"] = "Unknown" @@ -480,76 +471,77 @@ R.fields["cdi_d"] = "No diseases have been diagnosed at the moment." R.fields["notes"] = "No notes." GLOB.data_core.medical += R - src.active2 = R - src.screen = 4 + active2 = R + screen = 4 else if(href_list["add_c"]) if(!(active2 in GLOB.data_core.medical)) return - var/a2 = src.active2 + var/a2 = active2 var/t1 = stripped_multiline_input("Add Comment:", "Med. records", null, null) if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return var/counter = 1 - while(src.active2.fields[text("com_[]", counter)]) + while(active2.fields[text("com_[]", counter)]) counter++ - src.active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []
[]", src.authenticated, src.rank, STATION_TIME_TIMESTAMP("hh:mm:ss"), time2text(world.realtime, "MMM DD"), GLOB.year_integer+540, t1) + active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []
[]", authenticated, rank, STATION_TIME_TIMESTAMP("hh:mm:ss"), time2text(world.realtime, "MMM DD"), GLOB.year_integer+540, t1) else if(href_list["del_c"]) - if((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])])) - src.active2.fields[text("com_[]", href_list["del_c"])] = "Deleted" + if((istype(active2, /datum/data/record) && active2.fields[text("com_[]", href_list["del_c"])])) + active2.fields[text("com_[]", href_list["del_c"])] = "Deleted" else if(href_list["search"]) var/t1 = stripped_input(usr, "Search String: (Name, DNA, or ID)", "Med. records") if(!canUseMedicalRecordsConsole(usr, t1)) return - src.active1 = null - src.active2 = null + active1 = null + active2 = null t1 = lowertext(t1) for(var/datum/data/record/R in GLOB.data_core.medical) if((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"]) || t1 == lowertext(R.fields["b_dna"]))) - src.active2 = R + active2 = R else //Foreach continue //goto(3229) - if(!( src.active2 )) - src.temp = text("Could not locate record [].", sanitize(t1)) + if(!( active2 )) + temp = text("Could not locate record [].", sanitize(t1)) else for(var/datum/data/record/E in GLOB.data_core.general) - if((E.fields["name"] == src.active2.fields["name"] || E.fields["id"] == src.active2.fields["id"])) - src.active1 = E + if((E.fields["name"] == active2.fields["name"] || E.fields["id"] == active2.fields["id"])) + active1 = E else //Foreach continue //goto(3334) - src.screen = 4 + screen = 4 else if(href_list["print_p"]) - if(!( src.printing )) - src.printing = 1 + if(!( printing )) + printing = 1 GLOB.data_core.medicalPrintCount++ playsound(loc, 'sound/items/poster_being_created.ogg', 100, 1) sleep(30) - var/obj/item/paper/P = new /obj/item/paper( src.loc ) + var/obj/item/paper/P = new /obj/item/paper( loc ) P.info = "
Medical Record - (MR-[GLOB.data_core.medicalPrintCount])

" if(active1 in GLOB.data_core.general) - P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
", src.active1.fields["name"], src.active1.fields["id"], src.active1.fields["sex"], src.active1.fields["age"]) + P.info += text("Name: [] ID: []
\nGender: []
\nAge: []
", active1.fields["name"], active1.fields["id"], active1.fields["gender"], active1.fields["age"]) P.info += "\nSpecies: [active1.fields["species"]]
" - P.info += text("\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", src.active1.fields["fingerprint"], src.active1.fields["p_stat"], src.active1.fields["m_stat"]) + P.info += text("\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", active1.fields["fingerprint"], active1.fields["p_stat"], active1.fields["m_stat"]) else P.info += "General Record Lost!
" if(active2 in GLOB.data_core.medical) - P.info += text("
\n
Medical Data

\nBlood Type: []
\nDNA: []
\n
\nMinor Disabilities: []
\nDetails: []
\n
\nMajor Disabilities: []
\nDetails: []
\n
\nAllergies: []
\nDetails: []
\n
\nCurrent Diseases: [] (per disease info placed in log/comment section)
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", src.active2.fields["blood_type"], src.active2.fields["b_dna"], src.active2.fields["mi_dis"], src.active2.fields["mi_dis_d"], src.active2.fields["ma_dis"], src.active2.fields["ma_dis_d"], src.active2.fields["alg"], src.active2.fields["alg_d"], src.active2.fields["cdi"], src.active2.fields["cdi_d"], src.active2.fields["notes"]) + P.info += text("
\n
Medical Data

\nBlood Type: []
\nDNA: []
\n
\nMinor Disabilities: []
\nDetails: []
\n
\nMajor Disabilities: []
\nDetails: []
\n
\nAllergies: []
\nDetails: []
\n
\nCurrent Diseases: [] (per disease info placed in log/comment section)
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", active2.fields["blood_type"], active2.fields["b_dna"], active2.fields["mi_dis"], active2.fields["mi_dis_d"], active2.fields["ma_dis"], active2.fields["ma_dis_d"], active2.fields["alg"], active2.fields["alg_d"], active2.fields["cdi"], active2.fields["cdi_d"], active2.fields["notes"]) var/counter = 1 - while(src.active2.fields[text("com_[]", counter)]) - P.info += text("[]
", src.active2.fields[text("com_[]", counter)]) + while(active2.fields[text("com_[]", counter)]) + P.info += text("[]
", active2.fields[text("com_[]", counter)]) counter++ - P.name = text("MR-[] '[]'", GLOB.data_core.medicalPrintCount, src.active1.fields["name"]) + P.name = text("MR-[] '[]'", GLOB.data_core.medicalPrintCount, active1.fields["name"]) else P.info += "Medical Record Lost!
" P.name = text("MR-[] '[]'", GLOB.data_core.medicalPrintCount, "Record Lost") P.info += "" - src.printing = null + P.update_icon() + printing = null - src.add_fingerprint(usr) - src.updateUsrDialog() + add_fingerprint(usr) + updateUsrDialog() return /obj/machinery/computer/med_data/emp_act(severity) @@ -560,11 +552,11 @@ switch(rand(1,6)) if(1) if(prob(10)) - R.fields["name"] = random_unique_lizard_name(R.fields["sex"],1) + R.fields["name"] = random_unique_lizard_name(R.fields["gender"],1) else - R.fields["name"] = random_unique_name(R.fields["sex"],1) + R.fields["name"] = random_unique_name(R.fields["gender"],1) if(2) - R.fields["sex"] = pick("Male", "Female") + R.fields["gender"] = pick("Male", "Female", "Other") if(3) R.fields["age"] = rand(AGE_MIN, AGE_MAX) if(4) @@ -583,7 +575,7 @@ if(user) if(message) if(authenticated) - if(user.canUseTopic(src)) + if(user.canUseTopic(src, BE_CLOSE)) if(!record1 || record1 == active1) if(!record2 || record2 == active2) return 1 diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index 798b0e4c65..a852612d9d 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -1,143 +1 @@ /obj/machinery/computer/prisoner - name = "prisoner management console" - desc = "Used to manage tracking implants placed inside criminals." - icon_screen = "explosive" - icon_keyboard = "security_key" - req_access = list(ACCESS_BRIG) - var/id = 0 - var/temp = null - var/status = 0 - var/timeleft = 60 - var/stop = 0 - var/screen = 0 // 0 - No Access Denied, 1 - Access allowed - var/obj/item/card/id/prisoner/inserted_id - circuit = /obj/item/circuitboard/computer/prisoner - - light_color = LIGHT_COLOR_RED - -/obj/machinery/computer/prisoner/ui_interact(mob/user) - . = ..() - var/dat = "" - if(screen == 0) - dat += "
Unlock Console" - else if(screen == 1) - dat += "

Prisoner ID Management

" - if(inserted_id) - dat += text("[inserted_id]
") - dat += text("Collected Points: [inserted_id.points]. Reset.
") - dat += text("Card goal: [inserted_id.goal]. Set
") - dat += text("Space Law recommends quotas of 100 points per minute they would normally serve in the brig.
") - else - dat += text("Insert Prisoner ID.
") - dat += "

Prisoner Implant Management

" - dat += "
Chemical Implants
" - var/turf/Tr = null - for(var/obj/item/implant/chem/C in GLOB.tracked_chem_implants) - Tr = get_turf(C) - if((Tr) && (Tr.z != src.z)) - continue//Out of range - if(!C.imp_in) - continue - dat += "ID: [C.imp_in.name] | Remaining Units: [C.reagents.total_volume]
" - dat += "| Inject: " - dat += "((1))" - dat += "((5))" - dat += "((10))
" - dat += "********************************
" - dat += "
Tracking Implants
" - for(var/obj/item/implant/tracking/T in GLOB.tracked_implants) - if(!isliving(T.imp_in)) - continue - Tr = get_turf(T) - if((Tr) && (Tr.z != src.z)) - continue//Out of range - - var/loc_display = "Unknown" - var/mob/living/M = T.imp_in - if(is_station_level(Tr.z) && !isspaceturf(M.loc)) - var/turf/mob_loc = get_turf(M) - loc_display = mob_loc.loc - - dat += "ID: [T.imp_in.name] | Location: [loc_display]
" - dat += "(Message Holder) |
" - dat += "********************************
" - dat += "
Lock Console" - var/datum/browser/popup = new(user, "computer", "Prisoner Management Console", 400, 500) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - -/obj/machinery/computer/prisoner/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/card/id)) - return attack_hand(user) - else - return ..() - -/obj/machinery/computer/prisoner/process() - if(!..()) - src.updateDialog() - return - - -/obj/machinery/computer/prisoner/Topic(href, href_list) - if(..()) - return - if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr)) - usr.set_machine(src) - - if(href_list["id"]) - if(href_list["id"] =="insert" && !inserted_id) - var/obj/item/card/id/prisoner/I = usr.is_holding_item_of_type(/obj/item/card/id/prisoner) - if(I) - if(!usr.transferItemToLoc(I, src)) - return - inserted_id = I - else - to_chat(usr, "No valid ID.") - else if(inserted_id) - switch(href_list["id"]) - if("eject") - inserted_id.forceMove(drop_location()) - inserted_id.verb_pickup() - inserted_id = null - if("reset") - inserted_id.points = 0 - if("setgoal") - var/num = round(input(usr, "Choose prisoner's goal:", "Input an Integer", null) as num|null) - if(num >= 0) - num = min(num,1000) //Cap the quota to the equivilent of 10 minutes. - inserted_id.goal = num - else if(href_list["inject1"]) - var/obj/item/implant/I = locate(href_list["inject1"]) in GLOB.tracked_chem_implants - if(I && istype(I)) - I.activate(1) - else if(href_list["inject5"]) - var/obj/item/implant/I = locate(href_list["inject5"]) in GLOB.tracked_chem_implants - if(I && istype(I)) - I.activate(5) - - else if(href_list["inject10"]) - var/obj/item/implant/I = locate(href_list["inject10"]) in GLOB.tracked_chem_implants - if(I && istype(I)) - I.activate(10) - - else if(href_list["lock"]) - if(src.allowed(usr)) - screen = !screen - else - to_chat(usr, "Unauthorized Access.") - - else if(href_list["warn"]) - var/warning = copytext(sanitize(input(usr,"Message:","Enter your message here!","")),1,MAX_MESSAGE_LEN) - if(!warning) - return - var/obj/item/implant/I = locate(href_list["warn"]) in GLOB.tracked_implants - if(I && istype(I) && I.imp_in) - var/mob/living/R = I.imp_in - to_chat(R, "You hear a voice in your head saying: '[warning]'") - log_directed_talk(usr, R, warning, LOG_SAY, "implant message") - - src.add_fingerprint(usr) - src.updateUsrDialog() - return diff --git a/code/game/machinery/computer/prisoner/_prisoner.dm b/code/game/machinery/computer/prisoner/_prisoner.dm new file mode 100644 index 0000000000..d07c351a22 --- /dev/null +++ b/code/game/machinery/computer/prisoner/_prisoner.dm @@ -0,0 +1,52 @@ +/obj/machinery/computer/prisoner + var/obj/item/card/id/prisoner/contained_id + +/obj/machinery/computer/prisoner/Destroy() + if(contained_id) + contained_id.forceMove(get_turf(src)) + return ..() + + +/obj/machinery/computer/prisoner/examine(mob/user) + . = ..() + if(contained_id) + . += "Alt-click to eject the ID card." + + + +/obj/machinery/computer/prisoner/AltClick(mob/user) + id_eject(user) + return ..() + +/obj/machinery/computer/prisoner/proc/id_insert(mob/user, obj/item/card/id/prisoner/P) + if(istype(P)) + if(contained_id) + to_chat(user, "There's already an ID card in the console!") + return + if(!user.transferItemToLoc(P, src)) + return + contained_id = P + user.visible_message("[user] inserts an ID card into the console.", \ + "You insert the ID card into the console.") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + updateUsrDialog() + +/obj/machinery/computer/prisoner/proc/id_eject(mob/user) + if(!contained_id) + to_chat(user, "There's no ID card in the console!") + return + else + contained_id.forceMove(drop_location()) + if(!issilicon(user) && Adjacent(user)) + user.put_in_hands(contained_id) + contained_id = null + user.visible_message("[user] gets an ID card from the console.", \ + "You get the ID card from the console.") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + updateUsrDialog() + +/obj/machinery/computer/prisoner/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/card/id/prisoner)) + id_insert(user, I) + else + return ..() diff --git a/code/game/machinery/computer/prisoner/gulag_teleporter.dm b/code/game/machinery/computer/prisoner/gulag_teleporter.dm new file mode 100644 index 0000000000..f6e164efe9 --- /dev/null +++ b/code/game/machinery/computer/prisoner/gulag_teleporter.dm @@ -0,0 +1,142 @@ +//computer that handle the points and teleports the prisoner +/obj/machinery/computer/prisoner/gulag_teleporter_computer + name = "labor camp teleporter console" + desc = "Used to send criminals to the Labor Camp." + icon_screen = "explosive" + icon_keyboard = "security_key" + req_access = list(ACCESS_ARMORY) + circuit = /obj/item/circuitboard/computer/gulag_teleporter_console + var/default_goal = 200 + var/obj/machinery/gulag_teleporter/teleporter = null + var/obj/structure/gulag_beacon/beacon = null + var/mob/living/carbon/human/prisoner = null + var/datum/data/record/temporary_record = null + + light_color = LIGHT_COLOR_RED + +/obj/machinery/computer/prisoner/gulag_teleporter_computer/Initialize() + . = ..() + scan_machinery() + +/obj/machinery/computer/prisoner/gulag_teleporter_computer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ + datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "gulag_console", name, 455, 440, master_ui, state) + ui.open() + +/obj/machinery/computer/prisoner/gulag_teleporter_computer/ui_data(mob/user) + var/list/data = list() + + var/list/prisoner_list = list() + var/can_teleport = FALSE + + if(teleporter && (teleporter.occupant && ishuman(teleporter.occupant))) + prisoner = teleporter.occupant + prisoner_list["name"] = prisoner.real_name + if(contained_id) + can_teleport = TRUE + if(!isnull(GLOB.data_core.general)) + for(var/r in GLOB.data_core.security) + var/datum/data/record/R = r + if(R.fields["name"] == prisoner_list["name"]) + temporary_record = R + prisoner_list["crimstat"] = temporary_record.fields["criminal"] + + data["prisoner"] = prisoner_list + + if(teleporter) + data["teleporter"] = teleporter + data["teleporter_location"] = "([teleporter.x], [teleporter.y], [teleporter.z])" + data["teleporter_lock"] = teleporter.locked + data["teleporter_state_open"] = teleporter.state_open + if(beacon) + data["beacon"] = beacon + data["beacon_location"] = "([beacon.x], [beacon.y], [beacon.z])" + if(contained_id) + data["id"] = contained_id + data["id_name"] = contained_id.registered_name + data["goal"] = contained_id.goal + data["can_teleport"] = can_teleport + + return data + +/obj/machinery/computer/prisoner/gulag_teleporter_computer/ui_act(action, list/params) + if(isliving(usr)) + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) + if(..()) + return + if(!allowed(usr)) + to_chat(usr, "Access denied.") + return + switch(action) + if("scan_teleporter") + teleporter = findteleporter() + if("scan_beacon") + beacon = findbeacon() + if("handle_id") + if(contained_id) + id_eject(usr) + else + id_insert(usr) + if("set_goal") + var/new_goal = input("Set the amount of points:", "Points", contained_id.goal) as num|null + if(!isnum(new_goal)) + return + if(!new_goal) + new_goal = default_goal + if (new_goal > 1000) + to_chat(usr, "The entered amount of points is too large. Points have instead been set to the maximum allowed amount.") + contained_id.goal = CLAMP(new_goal, 0, 1000) //maximum 1000 points + if("toggle_open") + if(teleporter.locked) + to_chat(usr, "The teleporter is locked") + return + teleporter.toggle_open() + if("teleporter_lock") + if(teleporter.state_open) + to_chat(usr, "Close the teleporter before locking!") + return + teleporter.locked = !teleporter.locked + if("teleport") + if(!teleporter || !beacon) + return + addtimer(CALLBACK(src, .proc/teleport, usr), 5) + +/obj/machinery/computer/prisoner/gulag_teleporter_computer/proc/scan_machinery() + teleporter = findteleporter() + beacon = findbeacon() + +/obj/machinery/computer/prisoner/gulag_teleporter_computer/proc/findteleporter() + var/obj/machinery/gulag_teleporter/teleporterf = null + + for(var/direction in GLOB.cardinals) + teleporterf = locate(/obj/machinery/gulag_teleporter, get_step(src, direction)) + if(teleporterf && teleporterf.is_operational()) + return teleporterf + +/obj/machinery/computer/prisoner/gulag_teleporter_computer/proc/findbeacon() + return locate(/obj/structure/gulag_beacon) + +/obj/machinery/computer/prisoner/gulag_teleporter_computer/proc/teleport(mob/user) + if(!contained_id) //incase the ID was removed after the transfer timer was set. + say("Warning: Unable to transfer prisoner without a valid Prisoner ID inserted!") + return + var/id_goal_not_set + if(!contained_id.goal) + id_goal_not_set = TRUE + contained_id.goal = default_goal + say("[contained_id]'s ID card goal defaulting to [contained_id.goal] points.") + log_game("[key_name(user)] teleported [key_name(prisoner)] to the Labor Camp [COORD(beacon)] for [id_goal_not_set ? "default goal of ":""][contained_id.goal] points.") + teleporter.handle_prisoner(contained_id, temporary_record) + playsound(src, 'sound/weapons/emitter.ogg', 50, 1) + prisoner.forceMove(get_turf(beacon)) + prisoner.Stun(40) // small travel dizziness + to_chat(prisoner, "The teleportation makes you a little dizzy.") + new /obj/effect/particle_effect/sparks(get_turf(prisoner)) + playsound(src, "sparks", 50, 1) + if(teleporter.locked) + teleporter.locked = FALSE + teleporter.toggle_open() + contained_id = null + temporary_record = null diff --git a/code/game/machinery/computer/prisoner/management.dm b/code/game/machinery/computer/prisoner/management.dm new file mode 100644 index 0000000000..e231a1748a --- /dev/null +++ b/code/game/machinery/computer/prisoner/management.dm @@ -0,0 +1,139 @@ + +/obj/machinery/computer/prisoner/management + name = "prisoner management console" + desc = "Used to manage tracking implants placed inside criminals." + icon_screen = "explosive" + icon_keyboard = "security_key" + req_access = list(ACCESS_BRIG) + var/id = 0 + var/temp = null + var/status = 0 + var/timeleft = 60 + var/stop = 0 + var/screen = 0 // 0 - No Access Denied, 1 - Access allowed + circuit = /obj/item/circuitboard/computer/prisoner + + light_color = LIGHT_COLOR_RED + +/obj/machinery/computer/prisoner/management/ui_interact(mob/user) + . = ..() + if(isliving(user)) + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) + var/dat = "" + if(screen == 0) + dat += "
{Log In}" + else if(screen == 1) + dat += "

Prisoner ID Management

" + if(contained_id) + dat += text("[contained_id]
") + dat += text("Collected Points: [contained_id.points]. Reset.
") + dat += text("Card goal: [contained_id.goal]. Set
") + dat += text("Space Law recommends quotas of 100 points per minute they would normally serve in the brig.
") + else + dat += text("Insert Prisoner ID.
") + dat += "

Prisoner Implant Management

" + dat += "
Chemical Implants
" + var/turf/Tr = null + for(var/obj/item/implant/chem/C in GLOB.tracked_chem_implants) + Tr = get_turf(C) + if((Tr) && (Tr.z != src.z)) + continue//Out of range + if(!C.imp_in) + continue + dat += "ID: [C.imp_in.name] | Remaining Units: [C.reagents.total_volume]
" + dat += "| Inject: " + dat += "((1))" + dat += "((5))" + dat += "((10))
" + dat += "********************************
" + dat += "
Tracking Implants
" + for(var/obj/item/implant/tracking/T in GLOB.tracked_implants) + if(!isliving(T.imp_in)) + continue + Tr = get_turf(T) + if((Tr) && (Tr.z != src.z)) + continue//Out of range + + var/loc_display = "Unknown" + var/mob/living/M = T.imp_in + if(is_station_level(Tr.z) && !isspaceturf(M.loc)) + var/turf/mob_loc = get_turf(M) + loc_display = mob_loc.loc + + dat += "ID: [T.imp_in.name] | Location: [loc_display]
" + dat += "(Message Holder) |
" + dat += "********************************
" + dat += "
{Log Out}" + var/datum/browser/popup = new(user, "computer", "Prisoner Management Console", 400, 500) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer/prisoner/management/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/card/id)) + if(screen) + id_insert(user) + else + to_chat(user, "Unauthorized access.") + else + return ..() + +/obj/machinery/computer/prisoner/management/process() + if(!..()) + src.updateDialog() + return + +/obj/machinery/computer/prisoner/management/Topic(href, href_list) + if(..()) + return + if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr)) + usr.set_machine(src) + + if(href_list["id"]) + if(href_list["id"] =="insert" && !contained_id) + id_insert(usr) + else if(contained_id) + switch(href_list["id"]) + if("eject") + id_eject(usr) + if("reset") + contained_id.points = 0 + if("setgoal") + var/num = round(input(usr, "Choose prisoner's goal:", "Input an Integer", null) as num|null) + if(num >= 0) + num = min(num,1000) //Cap the quota to the equivilent of 10 minutes. + contained_id.goal = num + else if(href_list["inject1"]) + var/obj/item/implant/I = locate(href_list["inject1"]) in GLOB.tracked_chem_implants + if(I && istype(I)) + I.activate(1) + else if(href_list["inject5"]) + var/obj/item/implant/I = locate(href_list["inject5"]) in GLOB.tracked_chem_implants + if(I && istype(I)) + I.activate(5) + else if(href_list["inject10"]) + var/obj/item/implant/I = locate(href_list["inject10"]) in GLOB.tracked_chem_implants + if(I && istype(I)) + I.activate(10) + + else if(href_list["lock"]) + if(allowed(usr)) + screen = !screen + playsound(src, 'sound/machines/terminal_on.ogg', 50, FALSE) + else + to_chat(usr, "Unauthorized access.") + + else if(href_list["warn"]) + var/warning = copytext(sanitize(input(usr,"Message:","Enter your message here!","")),1,MAX_MESSAGE_LEN) + if(!warning) + return + var/obj/item/implant/I = locate(href_list["warn"]) in GLOB.tracked_implants + if(I && istype(I) && I.imp_in) + var/mob/living/R = I.imp_in + to_chat(R, "You hear a voice in your head saying: '[warning]'") + log_directed_talk(usr, R, warning, LOG_SAY, "implant message") + + src.add_fingerprint(usr) + src.updateUsrDialog() + return diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 607f8dbe78..1823e34100 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -5,13 +5,10 @@ icon_keyboard = "security_key" req_one_access = list(ACCESS_SECURITY, ACCESS_FORENSICS_LOCKERS) circuit = /obj/item/circuitboard/computer/secure_data - var/obj/item/card/id/scan = null - var/authenticated = null var/rank = null var/screen = null var/datum/data/record/active1 = null var/datum/data/record/active2 = null - var/a_id = null var/temp = null var/printing = null var/can_change_id = 0 @@ -23,11 +20,6 @@ light_color = LIGHT_COLOR_RED -/obj/machinery/computer/secure_data/examine(mob/user) - ..() - if(scan) - to_chat(user, "Alt-click to eject the ID card.") - /obj/machinery/computer/secure_data/syndie icon_keyboard = "syndie_key" @@ -40,32 +32,19 @@ clockwork = TRUE //it'd look weird pass_flags = PASSTABLE -/obj/machinery/computer/secure_data/attackby(obj/item/O, mob/user, params) - if(istype(O, /obj/item/card/id)) - if(!scan) - if(!user.transferItemToLoc(O, src)) - return - scan = O - to_chat(user, "You insert [O].") - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) - updateUsrDialog() - else - to_chat(user, "There's already an ID card in the console.") - else - return ..() - //Someone needs to break down the dat += into chunks instead of long ass lines. /obj/machinery/computer/secure_data/ui_interact(mob/user) . = ..() + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) if(src.z > 6) to_chat(user, "Unable to establish a connection: \black You're too far away from the station!") return var/dat if(temp) - dat = text("[]

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

Clear Screen" else - dat = text("Confirm Identity: []
", (scan ? text("[]", scan.name) : "----------")) + dat = "" if(authenticated) switch(screen) if(1) @@ -190,7 +169,7 @@ dat += {"
" var/column_counter = 0 for(var/list/category in list(GLOB.command_positions) + list(GLOB.engineering_positions) + list(GLOB.supply_positions) + list(GLOB.nonhuman_positions - "pAI") + list(GLOB.civilian_positions) + list(GLOB.medical_positions) + list(GLOB.science_positions) + list(GLOB.security_positions)) - var/cat_color = SSjob.name_occupations[category[1]].selection_color //use the color of the first job in the category (the department head) as the category color + var/cat_color = "fff" //random default + if(SSjob.name_occupations && SSjob.name_occupations[category[1]]) + cat_color = SSjob.name_occupations[category[1]].selection_color //use the color of the first job in the category (the department head) as the category color + else + cat_color = SSjob.occupations[category[1]].selection_color + dat += "
" dat += "[SSjob.name_occupations[category[1]].exp_type_department]" var/list/dept_dat = list() From 43affcb83118d1a7e9def4b70b420e7fb1045d19 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 4 Jul 2019 00:52:48 -0500 Subject: [PATCH 003/324] properly fixes Quartermaster headrole, mind traits --- code/modules/jobs/job_types/captain.dm | 1 + code/modules/jobs/job_types/detective.dm | 2 +- code/modules/jobs/job_types/head_of_personnel.dm | 4 ++-- code/modules/jobs/job_types/head_of_security.dm | 2 +- code/modules/jobs/job_types/lawyer.dm | 2 +- code/modules/jobs/job_types/quartermaster.dm | 12 ++++++++++-- code/modules/jobs/job_types/security_officer.dm | 2 +- code/modules/jobs/job_types/warden.dm | 2 +- 8 files changed, 18 insertions(+), 9 deletions(-) diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index e80840f8aa..e6cf7d1c5c 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -20,6 +20,7 @@ access = list() //See get_access() minimal_access = list() //See get_access() + mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) // mind_traits = list(TRAIT_DISK_VERIFIER) display_order = JOB_DISPLAY_ORDER_CAPTAIN diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index cfd9d5fdab..6c12c1db09 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -18,7 +18,7 @@ access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) -// mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) display_order = JOB_DISPLAY_ORDER_DETECTIVE diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index a5d917e1c9..d658a49380 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -4,7 +4,7 @@ // auto_deadmin_role_flags = DEADMIN_POSITION_HEAD department_head = list("Captain") department_flag = CIVILIAN - head_announce = list("Supply", "Service") + head_announce = list("Service") faction = "Station" total_positions = 1 spawn_positions = 1 @@ -14,7 +14,7 @@ minimal_player_age = 10 exp_requirements = 180 exp_type = EXP_TYPE_CREW - exp_type_department = EXP_TYPE_SUPPLY + exp_type_department = EXP_TYPE_SERVICE outfit = /datum/outfit/job/hop diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 9df087c834..0ca0e393ac 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -17,7 +17,7 @@ exp_type_department = EXP_TYPE_SECURITY outfit = /datum/outfit/job/hos -// mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, diff --git a/code/modules/jobs/job_types/lawyer.dm b/code/modules/jobs/job_types/lawyer.dm index a04f5b665c..0b8be52116 100644 --- a/code/modules/jobs/job_types/lawyer.dm +++ b/code/modules/jobs/job_types/lawyer.dm @@ -15,7 +15,7 @@ access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) minimal_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) -// mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) display_order = JOB_DISPLAY_ORDER_LAWYER diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index 3220dd9a09..b85a4ad404 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -3,17 +3,25 @@ flag = QUARTERMASTER department_head = list("Captain") department_flag = CIVILIAN + head_announce = list("Supply") // auto_deadmin_role_flags = DEADMIN_POSITION_HEAD faction = "Station" total_positions = 1 spawn_positions = 1 supervisors = "the captain" selection_color = "#d7b088" + req_admin_notify = 1 + minimal_player_age = 7 + exp_requirements = 180 + exp_type = EXP_TYPE_CREW + exp_type_department = EXP_TYPE_SUPPLY outfit = /datum/outfit/job/quartermaster - access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT) - minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT) + access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, + ACCESS_MINERAL_STOREROOM, ACCESS_VAULT) + minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, + ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT) display_order = JOB_DISPLAY_ORDER_QUARTERMASTER diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index 98ec759db8..05ba91aa4a 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -18,7 +18,7 @@ access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) // See /datum/job/officer/get_access() -// mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) display_order = JOB_DISPLAY_ORDER_SECURITY_OFFICER diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index b70281f099..821ce352f7 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -18,7 +18,7 @@ access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) // See /datum/job/warden/get_access() -// mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) display_order = JOB_DISPLAY_ORDER_WARDEN From 899c5fed7e0e3b6ab61408354badbc3bb005bf2a Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 4 Jul 2019 00:56:17 -0500 Subject: [PATCH 004/324] Oh this should be uncommented too. --- code/modules/jobs/job_types/_job.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index 59af18b76d..ebf417acdd 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -64,9 +64,9 @@ //H is usually a human unless an /equip override transformed it /datum/job/proc/after_spawn(mob/living/H, mob/M, latejoin = FALSE) //do actions on H but send messages to M as the key may not have been transferred_yet -/* if(mind_traits) + if(mind_traits) for(var/t in mind_traits) - ADD_TRAIT(H.mind, t, JOB_TRAIT)*/ + ADD_TRAIT(H.mind, t, JOB_TRAIT) /datum/job/proc/announce(mob/living/carbon/human/H) if(head_announce) From b818b1eedd2c2999436856325c43d2808ff5b16f Mon Sep 17 00:00:00 2001 From: Ghommie Date: Wed, 17 Jul 2019 15:45:48 +0200 Subject: [PATCH 005/324] Updating spraycans and crayons code. --- code/__HELPERS/text.dm | 3 + code/game/objects/items/crayons.dm | 159 ++++++++++++++++++----------- code/game/objects/items/paint.dm | 12 ++- code/modules/power/lighting.dm | 5 + icons/effects/crayondecal.dmi | Bin 34780 -> 46544 bytes tgui/assets/tgui.js | 4 +- tgui/src/interfaces/crayon.ract | 2 +- 7 files changed, 115 insertions(+), 70 deletions(-) diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 1ee5ce986f..6908a5057f 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -791,3 +791,6 @@ GLOBAL_LIST_INIT(binary, list("0","1")) rearranged += cword message = "[prefix][jointext(rearranged," ")]" . = message + +#define is_alpha(X) ((text2ascii(X) <= 122) && (text2ascii(X) >= 97)) +#define is_digit(X) ((length(X) == 1) && (length(text2num(X)) == 1)) \ No newline at end of file diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 99d6c874e8..cb490bd9b2 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -1,6 +1,9 @@ #define RANDOM_GRAFFITI "Random Graffiti" #define RANDOM_LETTER "Random Letter" +#define RANDOM_PUNCTUATION "Random Punctuation" #define RANDOM_NUMBER "Random Number" +#define RANDOM_SYMBOL "Random Symbol" +#define RANDOM_DRAWING "Random Drawing" #define RANDOM_ORIENTED "Random Oriented" #define RANDOM_RUNE "Random Rune" #define RANDOM_ANY "Random Anything" @@ -32,16 +35,16 @@ var/drawtype var/text_buffer = "" - var/list/graffiti = list("amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa","body","cyka","arrow","star","poseur tag","prolizard","antilizard", "tile") //cit edit - var/list/letters = list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z") - var/list/numerals = list("0","1","2","3","4","5","6","7","8","9") - var/list/oriented = list("arrow","body") // These turn to face the same way as the drawer - var/list/runes = list("rune1","rune2","rune3","rune4","rune5","rune6") - var/list/randoms = list(RANDOM_ANY, RANDOM_RUNE, RANDOM_ORIENTED, - RANDOM_NUMBER, RANDOM_GRAFFITI, RANDOM_LETTER) - var/list/graffiti_large_h = list("yiffhell", "secborg", "paint") + var/static/list/graffiti = list("amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa","body","cyka","star","poseur tag","prolizard","antilizard", "tile") + var/static/list/symbols = list("danger","firedanger","electricdanger","biohazard","radiation","safe","evac","space","med","trade","shop","food","peace","like","skull","nay","heart","credit") + var/static/list/drawings = list("smallbrush","brush","largebrush","splatter","snake","stickman","carp","ghost","clown","taser","disk","fireaxe","toolbox","corgi","cat","toilet","blueprint","beepsky","scroll","bottle","shotgun") + var/static/list/oriented = list("arrow","line","thinline","shortline","body","chevron","footprint","clawprint","pawprint") // These turn to face the same way as the drawer + var/static/list/runes = list("rune1","rune2","rune3","rune4","rune5","rune6") + var/static/list/randoms = list(RANDOM_ANY, RANDOM_RUNE, RANDOM_ORIENTED, + RANDOM_NUMBER, RANDOM_GRAFFITI, RANDOM_LETTER, RANDOM_SYMBOL, RANDOM_PUNCTUATION, RANDOM_DRAWING) + var/static/list/graffiti_large_h = list("yiffhell", "secborg", "paint") - var/list/all_drawables + var/static/list/all_drawables = graffiti + symbols + drawings + oriented + runes + graffiti_large_h var/paint_mode = PAINT_NORMAL @@ -54,8 +57,6 @@ var/instant = FALSE var/self_contained = TRUE // If it deletes itself when it is empty - var/list/validSurfaces = list(/turf/open/floor) - var/edible = TRUE // That doesn't mean eating it is a good idea var/list/reagent_contents = list("nutriment" = 1) @@ -71,6 +72,9 @@ var/datum/team/gang/gang //For marking territory. var/gang_tag_delay = 30 //this is the delay for gang mode tag applications on anything that gang = true on. +/obj/item/toy/crayon/proc/isValidSurface(surface) + return istype(surface, /turf/open/floor) + /obj/item/toy/crayon/suicide_act(mob/user) user.visible_message("[user] is jamming [src] up [user.p_their()] nose and into [user.p_their()] brain. It looks like [user.p_theyre()] trying to commit suicide!") return (BRUTELOSS|OXYLOSS) @@ -81,7 +85,6 @@ if(name == "crayon") name = "[item_color] crayon" - all_drawables = graffiti + letters + numerals + oriented + runes + graffiti_large_h drawtype = pick(all_drawables) refill() @@ -153,55 +156,67 @@ to_chat(user, "The cap on [src] is now [is_capped ? "on" : "off"].") update_icon() -/obj/item/toy/crayon/ui_data() +/obj/item/toy/crayon/proc/staticDrawables() var/list/data = list() + data["drawables"] = list() - var/list/D = data["drawables"] + . = list() var/list/g_items = list() - D += list(list("name" = "Graffiti", "items" = g_items)) + . += list(list("name" = "Graffiti", "items" = g_items)) for(var/g in graffiti) g_items += list(list("item" = g)) var/list/glh_items = list() - D += list(list("name" = "Graffiti Large Horizontal", "items" = glh_items)) + . += list(list("name" = "Graffiti Large Horizontal", "items" = glh_items)) for(var/glh in graffiti_large_h) glh_items += list(list("item" = glh)) - var/list/L_items = list() - D += list(list("name" = "Letters", "items" = L_items)) - for(var/L in letters) - L_items += list(list("item" = L)) + var/list/S_items = list() + . += list(list("name" = "Symbols", "items" = S_items)) + for(var/S in symbols) + S_items += list(list("item" = S)) + + var/list/D_items = list() + . += list(list("name" = "Drawings", "items" = D_items)) + for(var/D in drawings) + D_items += list(list("item" = D)) - var/list/N_items = list() - D += list(list(name = "Numerals", "items" = N_items)) - for(var/N in numerals) - N_items += list(list("item" = N)) var/list/O_items = list() - D += list(list(name = "Oriented", "items" = O_items)) + . += list(list(name = "Oriented", "items" = O_items)) for(var/O in oriented) O_items += list(list("item" = O)) var/list/R_items = list() - D += list(list(name = "Runes", "items" = R_items)) + . += list(list(name = "Runes", "items" = R_items)) for(var/R in runes) R_items += list(list("item" = R)) var/list/rand_items = list() - D += list(list(name = "Random", "items" = rand_items)) + . += list(list(name = "Random", "items" = rand_items)) for(var/i in randoms) rand_items += list(list("item" = i)) data["selected_stencil"] = drawtype data["text_buffer"] = text_buffer - data["has_cap"] = has_cap - data["is_capped"] = is_capped - data["can_change_colour"] = can_change_colour - data["current_colour"] = paint_color +/obj/item/toy/crayon/ui_data() - return data + var/static/list/crayon_drawables + + if (!crayon_drawables) + crayon_drawables = staticDrawables() + + . = list() + .["drawables"] = crayon_drawables + .["selected_stencil"] = drawtype + .["text_buffer"] = text_buffer + + .["has_cap"] = has_cap + .["is_capped"] = is_capped + .["can_change_colour"] = can_change_colour + .["current_colour"] = paint_color /obj/item/toy/crayon/ui_act(action, list/params) if(..()) @@ -216,6 +231,7 @@ if(stencil in all_drawables + randoms) drawtype = stencil . = TRUE + text_buffer = "" if(stencil in graffiti_large_h) paint_mode = PAINT_LARGE_HORIZONTAL text_buffer = "" @@ -235,18 +251,16 @@ update_icon() /obj/item/toy/crayon/proc/crayon_text_strip(text) - var/list/base = string2charlist(lowertext(text)) - var/list/out = list() - for(var/a in base) - if(a in (letters|numerals)) - out += a - return jointext(out,"") + var/static/regex/crayon_r = new /regex(@"[^\w!?,.=%#&+\/\-]") + return replacetext(lowertext(text), crayon_r, "") /obj/item/toy/crayon/afterattack(atom/target, mob/user, proximity, params) . = ..() if(!proximity || !check_allowed_items(target)) return + var/static/list/punctuation = list("!","?",".",",","/","+","-","=","%","#","&") + var/cost = 1 if(paint_mode == PAINT_LARGE_HORIZONTAL) cost = 5 @@ -264,13 +278,19 @@ if(istype(target, /obj/effect/decal/cleanable)) target = target.loc - if(!is_type_in_list(target,validSurfaces)) + if(!isValidSurface(target)) return var/drawing = drawtype switch(drawtype) if(RANDOM_LETTER) - drawing = pick(letters) + drawing = ascii2text(rand(97, 122)) // a-z + if(RANDOM_PUNCTUATION) + drawing = pick(punctuation) + if(RANDOM_SYMBOL) + drawing = pick(symbols) + if(RANDOM_DRAWING) + drawing = pick(drawings) if(RANDOM_GRAFFITI) drawing = pick(graffiti) if(RANDOM_RUNE) @@ -278,17 +298,23 @@ if(RANDOM_ORIENTED) drawing = pick(oriented) if(RANDOM_NUMBER) - drawing = pick(numerals) + drawing = ascii2text(rand(48, 57)) // 0-9 if(RANDOM_ANY) drawing = pick(all_drawables) var/temp = "rune" - if(drawing in letters) + if(is_alpha(drawing)) temp = "letter" - else if(drawing in graffiti) - temp = "graffiti" - else if(drawing in numerals) + else if(is_digit(drawing)) temp = "number" + else if(drawing in punctuation) + temp = "punctuation mark" + else if(drawing in symbols) + temp = "symbol" + else if(drawing in drawings) + temp = "drawing" + else if(drawing in graffiti|oriented) + temp = "graffiti" // If a gang member is using a gang spraycan, it'll behave differently var/gang_mode = FALSE @@ -338,7 +364,7 @@ return if(length(text_buffer)) - drawing = copytext(text_buffer,1,2) + drawing = text_buffer[1] var/list/turf/affected_turfs = list() @@ -362,7 +388,7 @@ if(PAINT_LARGE_HORIZONTAL) var/turf/left = locate(target.x-1,target.y,target.z) var/turf/right = locate(target.x+1,target.y,target.z) - if(is_type_in_list(left, validSurfaces) && is_type_in_list(right, validSurfaces)) + if(isValidSurface(left) && isValidSurface(right)) var/obj/effect/decal/cleanable/crayon/C = new(left, paint_color, drawing, temp, graf_rot, PAINT_LARGE_HORIZONTAL_ICON) C.add_hiddenprint(user) affected_turfs += left @@ -377,8 +403,9 @@ else to_chat(user, "You spray a [temp] on \the [target.name]") - if(length(text_buffer)) + if(length(text_buffer) > 1) text_buffer = copytext(text_buffer,2) + SStgui.update_uis(src) if(post_noise) audible_message("You hear spraying.") @@ -516,7 +543,7 @@ charges = -1 -/obj/item/toy/crayon/rainbow/afterattack(atom/target, mob/user, proximity) +/obj/item/toy/crayon/rainbow/afterattack(atom/target, mob/user, proximity, params) paint_color = rgb(rand(0,255), rand(0,255), rand(0,255)) . = ..() @@ -591,12 +618,14 @@ can_change_colour = TRUE gang = TRUE //Gang check is true for all things upon the honored hierarchy of spraycans, except those that are FALSE. - validSurfaces = list(/turf/open/floor, /turf/closed/wall) reagent_contents = list("welding_fuel" = 1, "ethanol" = 1) pre_noise = TRUE post_noise = FALSE +/obj/item/toy/crayon/spraycan/isValidSurface(surface) + return (istype(surface, /turf/open/floor) || istype(surface, /turf/closed/wall)) + /obj/item/toy/crayon/spraycan/suicide_act(mob/user) var/mob/living/carbon/human/H = user if(is_capped || !actually_paints) @@ -622,8 +651,8 @@ return (OXYLOSS) -/obj/item/toy/crayon/spraycan/New() - ..() +/obj/item/toy/crayon/spraycan/Initialize() + . = ..() // If default crayon red colour, pick a more fun spraycan colour if(!paint_color) paint_color = pick("#DA0000","#FF9300","#FFF200","#A8E61D","#00B7EF", @@ -640,7 +669,7 @@ to_chat(user, "It is empty.") to_chat(user, "Alt-click [src] to [ is_capped ? "take the cap off" : "put the cap on"].") -/obj/item/toy/crayon/spraycan/afterattack(atom/target, mob/user, proximity) +/obj/item/toy/crayon/spraycan/afterattack(atom/target, mob/user, proximity, params) if(!proximity) return @@ -656,8 +685,7 @@ playsound(user.loc, 'sound/effects/spray.ogg', 25, 1, 5) var/mob/living/carbon/C = target - user.visible_message("[user] sprays [src] into the face of [target]!") - to_chat(target, "[user] sprays [src] into your face!") + C.visible_message("[user] sprays [src] into the face of [C]!", "[user] sprays [src] into your face!") if(C.client) C.blur_eyes(3) @@ -678,13 +706,14 @@ return - if(istype(target, /obj/structure/window)) + if(isobj(target)) if(actually_paints) target.add_atom_colour(paint_color, WASHABLE_COLOUR_PRIORITY) - if(color_hex2num(paint_color) < 255) - target.set_opacity(255) - else - target.set_opacity(initial(target.opacity)) + if(istype(target, /obj/structure/window)) + if(color_hex2num(paint_color) < 255) + target.set_opacity(255) + else + target.set_opacity(initial(target.opacity)) . = use_charges(user, 2) var/fraction = min(1, . / reagents.maximum_volume) reagents.reaction(target, TOUCH, fraction * volume_multiplier) @@ -692,6 +721,7 @@ if(pre_noise || post_noise) playsound(user.loc, 'sound/effects/spray.ogg', 5, 1, 5) + user.visible_message("[user] coats [target] with spray paint!", "You coat [target] with spray paint.") return . = ..() @@ -709,7 +739,7 @@ desc = "A metallic container containing shiny synthesised paint." charges = -1 -/obj/item/toy/crayon/spraycan/borg/afterattack(atom/target,mob/user,proximity) +/obj/item/toy/crayon/spraycan/borg/afterattack(atom/target,mob/user,proximity, params) var/diff = ..() if(!iscyborg(user)) to_chat(user, "How did you get this?") @@ -754,7 +784,9 @@ reagent_contents = list("lube" = 1, "banana" = 1) volume_multiplier = 5 - validSurfaces = list(/turf/open/floor) + +/obj/item/toy/crayon/spraycan/lubecan/isValidSurface(surface) + return istype(surface, /turf/open/floor) /obj/item/toy/crayon/spraycan/mimecan name = "silent spraycan" @@ -794,6 +826,9 @@ #undef RANDOM_GRAFFITI #undef RANDOM_LETTER +#undef RANDOM_PUNCTUATION +#undef RANDOM_SYMBOL +#undef RANDOM_DRAWING #undef RANDOM_NUMBER #undef RANDOM_ORIENTED #undef RANDOM_RUNE diff --git a/code/game/objects/items/paint.dm b/code/game/objects/items/paint.dm index a6f5830dd4..cc2f5e9be7 100644 --- a/code/game/objects/items/paint.dm +++ b/code/game/objects/items/paint.dm @@ -90,14 +90,14 @@ add_fingerprint(user) -/obj/item/paint/afterattack(turf/target, mob/user, proximity) +/obj/item/paint/afterattack(atom/target, mob/user, proximity) . = ..() if(!proximity) return if(paintleft <= 0) icon_state = "paint_empty" return - if(!istype(target) || isspaceturf(target)) + if(!isturf(target) || isspaceturf(target)) return var/newcolor = "#" + item_color target.add_atom_colour(newcolor, WASHABLE_COLOUR_PRIORITY) @@ -105,12 +105,14 @@ /obj/item/paint/paint_remover gender = PLURAL name = "paint remover" - desc = "Used to remove color from floors and walls." + desc = "Used to remove color from anything." icon_state = "paint_neutral" -/obj/item/paint/paint_remover/afterattack(turf/target, mob/user, proximity) +/obj/item/paint/paint_remover/afterattack(atom/target, mob/user, proximity) . = ..() if(!proximity) return - if(istype(target) && target.color != initial(target.color)) + if(!isturf(target) || !isobj(target)) + return + if(target.color != initial(target.color)) target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index f82f0ee8e6..8d99cbb485 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -323,6 +323,8 @@ var/BR = brightness var/PO = bulb_power var/CO = bulb_colour + if(color) + CO = color var/area/A = get_area(src) if (A && A.fire) CO = bulb_emergency_colour @@ -360,6 +362,9 @@ else removeStaticPower(static_power_used, STATIC_LIGHT) +/obj/machinery/light/update_atom_colour() + . = ..() + update() /obj/machinery/light/process() if (!cell) diff --git a/icons/effects/crayondecal.dmi b/icons/effects/crayondecal.dmi index fcd27698e7e1b286291a7eb0cfeb211fd1081683..8c42e6610cb5a90c435a022084aedc9c1492cd86 100644 GIT binary patch literal 46544 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 literal 34780 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 R$x!g?q5NaHQd#5R{|C4^yAuEa diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index e073e5ffe2..0d51fb7ac6 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -10,8 +10,8 @@ return t.replace(/-([a-zA-Z])/g,function(t,e){return e.toUpperCase()})};Xi?(uf={ i:"curve",r:"curves",p:[63,7,2168]}," ",{t:4,f:[{t:4,f:[{p:[68,11,2375],t:7,e:"circle",a:{transform:["translate(",{t:2,r:".",p:[68,40,2404]},")"],r:[{t:2,x:{r:["selected","count"],s:"_0==_1?10:4"},p:[68,51,2415]}],fill:[{t:2,rx:{r:"colors",m:[{t:30,n:"curve"}]},p:[68,89,2453]}]},v:{mouseenter:"enter",mouseleave:"exit"}}],n:52,i:"count",x:{r:["line.path"],s:"_0.points()"},p:[67,9,2329]}],n:52,i:"curve",r:"curves",p:[66,7,2297]}," ",{t:4,f:[{t:4,f:[{t:4,f:[{p:[74,13,2678],t:7,e:"text",a:{transform:["translate(",{t:2,r:".",p:[74,40,2705]},") ",{t:2,x:{r:["count","size"],s:'_0<=_1/2?"translate(15, 4)":"translate(-15, 4)"'},p:[74,47,2712]}],"text-anchor":[{t:2,x:{r:["count","size"],s:'_0<=_1/2?"start":"end"'},p:[74,126,2791]}],fill:"white"},f:[{t:2,x:{r:["count","item","yfactor"],s:"_1[_0].y*_2"},p:[75,15,2861]}," ",{t:2,r:"yunit",p:[75,43,2889]}," @ ",{t:2,x:{r:["size","count","item","xfactor"],s:"(_0-_2[_1].x)*_3"},p:[75,55,2901]}," ",{t:2,r:"xunit",p:[75,92,2938]}]}],n:50,x:{r:["selected","count"],s:"_0==_1"},p:[73,11,2638]}],n:52,i:"count",x:{r:["line.path"],s:"_0.points()"},p:[72,9,2592]}],n:52,i:"curve",r:"curves",p:[71,7,2560]}," ",{t:4,f:[{p:[81,9,3063],t:7,e:"g",a:{transform:["translate(",{t:2,x:{r:["width","curves.length","@index"],s:"(_0/(_1+1))*(_2+1)"},p:[81,33,3087]},", 10)"]},f:[{p:[82,11,3154],t:7,e:"circle",a:{r:"4",fill:[{t:2,rx:{r:"colors",m:[{t:30,n:"curve"}]},p:[82,31,3174]}]}}," ",{p:[83,11,3206],t:7,e:"text",a:{x:"8",y:"4",fill:"white"},f:[{t:2,rx:{r:"legend",m:[{t:30,n:"curve"}]},p:[83,42,3237]}]}]}],n:52,i:"curve",r:"curves",p:[80,7,3031]}],x:{r:["graph","points","xaccessor","yaccessor","width","height"],s:"_0({data:_1,xaccessor:_2,yaccessor:_3,width:_4,height:_5})"},p:[49,5,1371]}]}]}]},e.exports=a.extend(r.exports)},{338:338,341:341}],347:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"notice"},f:[{t:16,p:[2,3,24]}]}]},e.exports=a.extend(r.exports)},{341:341}],348:[function(t,e,n){var a=t(341),r={exports:{}};!function(e){"use strict";var n=t(481),a=t(483);e.exports={oninit:function(){var t=this,e=a.resize.bind(this),r=function(){return t.set({resize:!1,x:null,y:null})};this.observe("config.fancy",function(a,i,o){(0,n.winset)(t.get("config.window"),"can-resize",!a),a?(document.addEventListener("mousemove",e),document.addEventListener("mouseup",r)):(document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",r))}),this.on("resize",function(){return t.toggle("resize")})}}}(r),r.exports.template={v:3,t:[" ",{t:4,f:[{p:[28,3,766],t:7,e:"div",a:{"class":"resize"},v:{mousedown:"resize"}}],n:50,r:"config.fancy",p:[27,1,742]}]},e.exports=a.extend(r.exports)},{341:341,481:481,483:483}],349:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"section",a:{"class":[{t:4,f:["candystripe"],r:"candystripe",p:[1,17,16]}]},f:[{t:4,f:[{p:[3,5,84],t:7,e:"span",a:{"class":"label",style:[{t:4,f:["color:",{t:2,r:"labelcolor",p:[3,53,132]}],r:"labelcolor",p:[3,32,111]}]},f:[{t:2,r:"label",p:[3,84,163]},":"]}],n:50,r:"label",p:[2,3,65]}," ",{t:4,f:[{t:16,p:[6,5,215]}],n:50,r:"nowrap",p:[5,3,195]},{t:4,n:51,f:[{p:[8,5,242],t:7,e:"div",a:{"class":"content",style:[{t:4,f:["float:right;"],r:"right",p:[8,33,270]}]},f:[{t:16,p:[9,7,312]}]}],r:"nowrap"}]}]},e.exports=a.extend(r.exports)},{341:341}],350:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"subdisplay"},f:[{t:4,f:[{p:[3,5,47],t:7,e:"header",f:[{p:[4,7,63],t:7,e:"h4",f:[{t:2,r:"title",p:[4,11,67]}]}," ",{t:4,f:[{t:16,n:"button",p:[5,21,103]}],n:50,r:"button",p:[5,7,89]}]}],n:50,r:"title",p:[2,3,28]}," ",{p:[8,3,156],t:7,e:"article",f:[{t:16,p:[9,5,171]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],351:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={oninit:function(){var t=this;this.set("active",this.findComponent("tab").get("name")),this.on("switch",function(e){t.set("active",e.node.textContent.trim())}),this.observe("active",function(e,n,a){for(var r=t.findAllComponents("tab"),i=Array.isArray(r),o=0,r=i?r:r[Symbol.iterator]();;){var s;if(i){if(o>=r.length)break;s=r[o++]}else{if(o=r.next(),o.done)break;s=o.value}var p=s;p.set("shown",p.get("name")===e)}})}}}(r),r.exports.template={v:3,t:[" "," ",{p:[20,1,524],t:7,e:"header",f:[{t:4,f:[{p:[22,5,556],t:7,e:"ui-button",a:{pane:[{t:2,r:".",p:[22,22,573]}]},v:{press:"switch"},f:[{t:2,r:".",p:[22,47,598]}]}],n:52,r:"tabs",p:[21,3,536]}]}," ",{p:[25,1,641],t:7,e:"ui-display",f:[{t:8,r:"content",p:[26,3,657]}]}]},r.exports.components=r.exports.components||{};var i={tab:t(352)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,352:352}],352:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{t:16,p:[2,3,17]}],n:50,r:"shown",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{341:341}],353:[function(t,e,n){var a=t(341),r={exports:{}};!function(e){"use strict";var n=t(482),a=t(481),r=t(483);e.exports={computed:{visualStatus:function(){switch(this.get("config.status")){case n.UI_INTERACTIVE:return"good";case n.UI_UPDATE:return"average";case n.UI_DISABLED:return"bad";default:return"bad"}}},oninit:function(){var t=this,e=r.drag.bind(this),n=function(e){return t.set({drag:!1,x:null,y:null})};this.observe("config.fancy",function(r,i,o){(0,a.winset)(t.get("config.window"),"titlebar",!r&&t.get("config.titlebar")),r?(document.addEventListener("mousemove",e),document.addEventListener("mouseup",n)):(document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",n))}),this.on({drag:function(){this.toggle("drag")},close:function(){(0,a.winset)(this.get("config.window"),"is-visible",!1),window.location.href=(0,a.href)({command:"uiclose "+this.get("config.ref")},"winset")},minimize:function(){(0,a.winset)(this.get("config.window"),"is-minimized",!0)}})}}}(r),r.exports.template={v:3,t:[" ",{t:4,f:[{p:[50,3,1440],t:7,e:"header",a:{"class":"titlebar"},v:{mousedown:"drag"},f:[{p:[51,5,1491],t:7,e:"i",a:{"class":["statusicon fa fa-eye fa-2x ",{t:2,r:"visualStatus",p:[51,42,1528]}]}}," ",{p:[52,5,1556],t:7,e:"span",a:{"class":"title"},f:[{t:16,p:[52,25,1576]}]}," ",{t:4,f:[{p:[54,7,1626],t:7,e:"i",a:{"class":"minimize fa fa-minus fa-2x"},v:{click:"minimize"}}," ",{p:[55,7,1696],t:7,e:"i",a:{"class":"close fa fa-close fa-2x"},v:{click:"close"}}],n:50,r:"config.fancy",p:[53,5,1598]}]}],n:50,r:"config.titlebar",p:[49,1,1413]}]},e.exports=a.extend(r.exports)},{341:341,481:481,482:482,483:483}],354:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";var e=[11,10,9,8];t.exports={data:{userAgent:navigator.userAgent},computed:{ie:function(){if(document.documentMode)return document.documentMode;for(var t in e){var n=document.createElement("div");if(n.innerHTML="",n.getElementsByTagName("span").length)return t}}},oninit:function(){var t=this;this.on("debug",function(){return t.toggle("debug")})}}}(r),r.exports.template={v:3,t:[" ",{t:4,f:[{p:[27,3,662],t:7,e:"ui-notice",f:[{p:[28,5,679],t:7,e:"span",f:["You have an old (IE",{t:2,r:"ie",p:[28,30,704]},"), end-of-life (click 'EOL Info' for more information) version of Internet Explorer installed."]},{p:[28,137,811],t:7,e:"br"}," ",{p:[29,5,822],t:7,e:"span",f:["To upgrade, click 'Upgrade IE' to download IE11 from Microsoft."]},{p:[29,81,898],t:7,e:"br"}," ",{p:[30,5,909],t:7,e:"span",f:["If you are unable to upgrade directly, click 'IE VMs' to download a VM with IE11 or Edge from Microsoft."]},{p:[30,122,1026],t:7,e:"br"}," ",{p:[31,5,1037],t:7,e:"span",f:["Otherwise, click 'No Frills' below to disable potentially incompatible features (and this message)."]}," ",{p:[32,5,1155],t:7,e:"hr"}," ",{p:[33,5,1166],t:7,e:"ui-button",a:{icon:"close",action:"tgui:nofrills"},f:["No Frills"]}," ",{p:[34,5,1240],t:7,e:"ui-button",a:{icon:"internet-explorer",action:"tgui:link",params:'{"url": "http://windows.microsoft.com/en-us/internet-explorer/download-ie"}'},f:["Upgrade IE"]}," ",{p:[36,5,1416],t:7,e:"ui-button",a:{icon:"edge",action:"tgui:link",params:'{"url": "https://dev.windows.com/en-us/microsoft-edge/tools/vms"}'},f:["IE VMs"]}," ",{p:[38,5,1565],t:7,e:"ui-button",a:{icon:"info",action:"tgui:link",params:'{"url": "https://support.microsoft.com/en-us/lifecycle#gp/Microsoft-Internet-Explorer"}'},f:["EOL Info"]}," ",{p:[40,5,1738],t:7,e:"ui-button",a:{icon:"bug"},v:{press:"debug"},f:["Debug Info"]}," ",{t:4,f:[{p:[42,7,1826],t:7,e:"hr"}," ",{p:[43,7,1839],t:7,e:"span",f:["Detected: IE",{t:2,r:"ie",p:[43,25,1857]}]},{p:[43,38,1870],t:7,e:"br"}," ",{p:[44,7,1883],t:7,e:"span",f:["User Agent: ",{t:2,r:"userAgent",p:[44,25,1901]}]}],n:50,r:"debug",p:[41,5,1805]}]}],n:50,x:{r:["config.fancy","ie"],s:"_0&&_1&&_1<11"},p:[26,1,621]}]},e.exports=a.extend(r.exports)},{341:341}],355:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{powerState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}},shockState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[22,1,348],t:7,e:"ui-display",a:{title:"Power Status"},f:[{p:[23,2,384],t:7,e:"ui-section",a:{label:"Main"},f:[{p:[24,3,413],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.power.main"],s:"_0(_1)"},p:[24,16,426]}]},f:[{t:2,x:{r:["data.power.main"],s:'_0?"Online":"Offline"'},p:[24,49,459]}]}," ",{t:4,f:["[ ",{p:[26,6,567],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.main_1","data.wires.main_2"],s:"!_0||!_1"},p:[25,3,512]},{t:4,n:51,f:[{t:4,f:["[ ",{t:2,r:"data.power.main_timeleft",p:[29,7,674]}," seconds left ]"],n:50,x:{r:["data.power.main_timeleft"],s:"_0>0"},p:[28,4,630]}],x:{r:["data.wires.main_1","data.wires.main_2"],s:"!_0||!_1"}}," ",{p:[32,3,744],t:7,e:"div",a:{style:"float:right"},f:[{p:[33,4,774],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"disrupt-main",state:[{t:2,x:{r:["data.power.main"],s:'_0?null:"disabled"'},p:[33,63,833]}]},f:["Disrupt"]}]}]}," ",{p:[36,2,922],t:7,e:"ui-section",a:{label:"Backup"},f:[{p:[37,3,953],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.power.backup"],s:"_0(_1)"},p:[37,16,966]}]},f:[{t:2,x:{r:["data.power.backup"],s:'_0?"Online":"Offline"'},p:[37,51,1001]}]}," ",{t:4,f:["[ ",{p:[39,6,1115],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.backup_1","data.wires.backup_2"],s:"!_0||!_1"},p:[38,3,1056]},{t:4,n:51,f:[{t:4,f:["[ ",{t:2,r:"data.power.backup_timeleft",p:[42,7,1224]}," seconds left ]"],n:50,x:{r:["data.power.backup_timeleft"],s:"_0>0"},p:[41,4,1178]}],x:{r:["data.wires.backup_1","data.wires.backup_2"],s:"!_0||!_1"}}," ",{p:[45,3,1296],t:7,e:"div",a:{style:"float:right"},f:[{p:[46,4,1326],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"disrupt-backup",state:[{t:2,x:{r:["data.power.backup"],s:'_0?null:"disabled"'},p:[46,65,1387]}]},f:["Disrupt"]}]}]}," ",{p:[49,2,1478],t:7,e:"ui-section",a:{label:"Electrify"},f:[{p:[50,3,1512],t:7,e:"span",a:{"class":[{t:2,x:{r:["shockState","data.shock"],s:"_0(_1)"},p:[50,16,1525]}]},f:[{t:2,x:{r:["data.shock"],s:'_0==2?"Safe":"Electrified"'},p:[50,44,1553]}]}," ",{t:4,f:["[ ",{p:[52,6,1640],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.shock"],s:"!_0"},p:[51,3,1608]},{t:4,n:51,f:[{t:4,f:["[ ",{p:[55,7,1742],t:7,e:"span",a:{"class":"bad"},f:[{t:2,r:"data.shock_timeleft",p:[55,25,1760]}," seconds left"]}," ]"],n:50,x:{r:["data.shock_timeleft"],s:"_0>0"},p:[54,4,1703]}," ",{t:4,f:["[ ",{p:[58,7,1863],t:7,e:"span",a:{"class":"bad"},f:["Permanent"]}," ]"],n:50,x:{r:["data.shock_timeleft"],s:"_0==-1"},p:[57,4,1822]}],x:{r:["data.wires.shock"],s:"!_0"}}," ",{p:[61,3,1926],t:7,e:"div",a:{style:"float:right"},f:[{p:[62,4,1956],t:7,e:"ui-button",a:{icon:"wrench",action:"shock-restore",state:[{t:2,x:{r:["data.wires.shock","data.shock"],s:'_0&&_1==0?null:"disabled"'},p:[62,59,2011]}]},f:["Restore"]}," ",{p:[63,4,2094],t:7,e:"ui-button",a:{icon:"bolt",action:"shock-temp",state:[{t:2,x:{r:["data.wires.shock"],s:"!_0"},p:[63,54,2144]}]},f:["Set (Temporary)"]}," ",{p:[64,4,2199],t:7,e:"ui-button",a:{icon:"bolt",action:"shock-perm",state:[{t:2,x:{r:["data.wires.shock"],s:"!_0"},p:[64,53,2248]}]},f:["Set (Permanent)"]}]}]}]}," ",{p:[68,1,2341],t:7,e:"ui-display",a:{title:"Access & Door Control"},f:[{p:[69,2,2386],t:7,e:"ui-section",a:{label:"ID Scan"},f:[{t:4,f:["[ ",{p:[71,6,2455],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.id_scanner"],s:"!_0"},p:[70,3,2418]}," ",{p:[73,3,2516],t:7,e:"div",a:{style:"float:right"},f:[{p:[74,4,2546],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.id_scanner"],s:"!_0"},p:[74,22,2564]}],icon:"power-off",action:"idscan-on",style:[{t:2,x:{r:["data.id_scanner"],s:'_0?"selected":""'},p:[74,93,2635]}]},f:["Enabled"]}," ",{p:[75,4,2698],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.id_scanner"],s:"!_0"},p:[75,22,2716]}],icon:"close",action:"idscan-off",style:[{t:2,x:{r:["data.id_scanner"],s:'_0?"":"selected"'},p:[75,90,2784]}]},f:["Disabled"]}]}]}," ",{p:[78,2,2872],t:7,e:"ui-section",a:{label:"Emergency Access"},f:[{p:[79,3,2913],t:7,e:"div",a:{style:"float:right"},f:[{p:[80,4,2943],t:7,e:"ui-button",a:{icon:"power-off",action:"emergency-on",style:[{t:2,x:{r:["data.emergency"],s:'_0?"selected":""'},p:[80,61,3e3]}]},f:["Enabled"]}," ",{p:[81,4,3062],t:7,e:"ui-button",a:{icon:"close",action:"emergency-off",style:[{t:2,x:{r:["data.emergency"],s:'_0?"":"selected"'},p:[81,58,3116]}]},f:["Disabled"]}]}]}," ",{p:[84,2,3203],t:7,e:"br"}," ",{p:[85,2,3212],t:7,e:"ui-section",a:{label:"Door bolts"},f:[{t:4,f:["[ ",{p:[87,6,3279],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.bolts"],s:"!_0"},p:[86,3,3247]}," ",{p:[89,3,3340],t:7,e:"div",a:{style:"float:right"},f:[{p:[90,4,3370],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.bolts"],s:"!_0"},p:[90,22,3388]}],icon:"unlock",action:"bolt-raise",style:[{t:2,x:{r:["data.locked"],s:'_0?"":"selected"'},p:[90,85,3451]}]},f:["Raised"]}," ",{p:[91,4,3509],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.bolts"],s:"!_0"},p:[91,22,3527]}],icon:"lock",action:"bolt-drop",style:[{t:2,x:{r:["data.locked"],s:'_0?"selected":""'},p:[91,82,3587]}]},f:["Dropped"]}]}]}," ",{p:[94,2,3670],t:7,e:"ui-section",a:{label:"Door bolt lights"},f:[{t:4,f:["[ ",{p:[96,6,3744],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.lights"],s:"!_0"},p:[95,3,3711]}," ",{p:[98,3,3805],t:7,e:"div",a:{style:"float:right"},f:[{p:[99,4,3835],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.lights"],s:"!_0"},p:[99,22,3853]}],icon:"power-off",action:"light-on",style:[{t:2,x:{r:["data.lights"],s:'_0?"selected":""'},p:[99,88,3919]}]},f:["Enabled"]}," ",{p:[100,4,3978],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.lights"],s:"!_0"},p:[100,22,3996]}],icon:"close",action:"light-off",style:[{t:2,x:{r:["data.lights"],s:'_0?"":"selected"'},p:[100,85,4059]}]},f:["Disabled"]}]}]}," ",{p:[103,2,4143],t:7,e:"ui-section",a:{label:"Door force sensors"},f:[{t:4,f:["[ ",{p:[105,6,4217],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.safe"],s:"!_0"},p:[104,3,4186]}," ",{p:[107,3,4278],t:7,e:"div",a:{style:"float:right"},f:[{p:[108,4,4308],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.safe"],s:"!_0"},p:[108,22,4326]}],icon:"power-off",action:"safe-on",style:[{t:2,x:{r:["data.safe"],s:'_0?"selected":""'},p:[108,85,4389]}]},f:["Enabled"]}," ",{p:[109,4,4446],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.safe"],s:"!_0"},p:[109,22,4464]}],icon:"close",action:"safe-off",style:[{t:2,x:{r:["data.safe"],s:'_0?"":"selected"'},p:[109,82,4524]}]},f:["Disabled"]}]}]}," ",{p:[112,2,4606],t:7,e:"ui-section",a:{label:"Door timing safety"},f:[{t:4,f:["[ ",{p:[114,6,4682],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.timing"],s:"!_0"},p:[113,3,4649]}," ",{p:[116,3,4743],t:7,e:"div",a:{style:"float:right"},f:[{p:[117,4,4773],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.timing"],s:"!_0"},p:[117,22,4791]}],icon:"power-off",action:"speed-on",style:[{t:2,x:{r:["data.speed"],s:'_0?"selected":""'},p:[117,88,4857]}]},f:["Enabled"]}," ",{p:[118,4,4915],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.timing"],s:"!_0"},p:[118,22,4933]}],icon:"close",action:"speed-off",style:[{t:2,x:{r:["data.speed"],s:'_0?"":"selected"'},p:[118,85,4996]}]},f:["Disabled"]}]}]}," ",{p:[121,2,5079],t:7,e:"br"}," ",{p:[122,2,5088],t:7,e:"ui-section",a:{label:"Door control"},f:[{t:4,f:["[ ",{p:[124,6,5166],t:7,e:"span",a:{"class":"bad"},f:["Door is ",{t:2,x:{r:["data.locked","data.welded"],s:'(_0?"bolted":"")+(_0&&_1?" and ":"")+(_1?"welded":"")'},p:[124,32,5192]}]}," ]"],n:50,x:{r:["data.locked","data.welded"],s:"_0||_1"},p:[123,3,5125]}," ",{p:[126,3,5327],t:7,e:"div",a:{style:"float:right"},f:[{p:[127,4,5357],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.locked","data.welded","data.opened"],s:'(_0||_1)||(_2&&"disabled")'},p:[127,22,5375]}],icon:"sign-out",action:"open-close"},f:["Open door"]}," ",{p:[128,4,5502],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.locked","data.welded","data.opened"],s:'(_0||_1)||(!_2&&"disabled")'},p:[128,22,5520]}],icon:"sign-in",action:"open-close"},f:["Close door"]}]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],356:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" "," "," "," "," ",{p:[7,1,267],t:7,e:"ui-notice",f:[{t:4,f:[{p:[9,5,312],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[10,7,355],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[10,24,372]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[10,75,423]}]}]}],n:50,r:"data.siliconUser",p:[8,3,282]},{t:4,n:51,f:[{p:[13,5,514],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[13,31,540]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[16,1,625],t:7,e:"status"}," ",{t:4,f:[{t:4,f:[{p:[19,7,719],t:7,e:"ui-display",a:{title:"Air Controls"},f:[{p:[20,9,762],t:7,e:"ui-section",f:[{p:[21,11,786],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"exclamation-triangle":"exclamation"'},p:[21,28,803]}],style:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"caution":null'},p:[21,98,873]}],action:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"reset":"alarm"'},p:[22,23,937]}]},f:["Area Atmosphere Alarm"]}]}," ",{p:[24,9,1045],t:7,e:"ui-section",f:[{p:[25,11,1069],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==3?"exclamation-triangle":"exclamation"'},p:[25,28,1086]}],style:[{t:2,x:{r:["data.mode"],s:'_0==3?"danger":null'},p:[25,96,1154]}],action:"mode",params:['{"mode": ',{t:2,x:{r:["data.mode"],s:"_0==3?1:3"},p:[26,44,1236]},"}"]},f:["Panic Siphon"]}]}," ",{p:[28,9,1322],t:7,e:"br"}," ",{p:[29,9,1337],t:7,e:"ui-section",f:[{p:[30,11,1361],t:7,e:"ui-button",a:{icon:"sign-out",action:"tgui:view",params:'{"screen": "vents"}'},f:["Vent Controls"]}]}," ",{p:[32,9,1494],t:7,e:"ui-section",f:[{p:[33,11,1518],t:7,e:"ui-button",a:{icon:"filter",action:"tgui:view",params:'{"screen": "scrubbers"}'},f:["Scrubber Controls"]}]}," ",{p:[35,9,1657],t:7,e:"ui-section",f:[{p:[36,11,1681],t:7,e:"ui-button",a:{icon:"cog",action:"tgui:view",params:'{"screen": "modes"}'},f:["Operating Mode"]}]}," ",{p:[38,9,1810],t:7,e:"ui-section",f:[{p:[39,11,1834],t:7,e:"ui-button",a:{icon:"bar-chart",action:"tgui:view",params:'{"screen": "thresholds"}'},f:["Alarm Thresholds"]}]}]}],n:50,x:{r:["config.screen"],s:'_0=="home"'},p:[18,3,680]},{t:4,n:51,f:[{t:4,n:50,x:{r:["config.screen"],s:'_0=="vents"'},f:[{p:[43,5,2032],t:7,e:"vents"}]},{t:4,n:50,x:{r:["config.screen"],s:'(!(_0=="vents"))&&(_0=="scrubbers")'},f:[" ",{p:[45,5,2089],t:7,e:"scrubbers"}]},{t:4,n:50,x:{r:["config.screen"],s:'(!(_0=="vents"))&&((!(_0=="scrubbers"))&&(_0=="modes"))'},f:[" ",{p:[47,5,2146],t:7,e:"modes"}]},{t:4,n:50,x:{r:["config.screen"],s:'(!(_0=="vents"))&&((!(_0=="scrubbers"))&&((!(_0=="modes"))&&(_0=="thresholds")))'},f:[" ",{p:[49,5,2204],t:7,e:"thresholds"}]}],x:{r:["config.screen"],s:'_0=="home"'}}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[17,1,636]}]},r.exports.components=r.exports.components||{};var i={vents:t(362),modes:t(358),thresholds:t(361),status:t(360),scrubbers:t(359)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,358:358,359:359,360:360,361:361,362:362}],357:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-button",a:{icon:"arrow-left",action:"tgui:view",params:'{"screen": "home"}'},f:["Back"]}]},e.exports=a.extend(r.exports)},{341:341}],358:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,115],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Operating Modes",button:0},f:[" ",{t:4,f:[{p:[8,5,168],t:7,e:"ui-section",f:[{p:[9,7,188],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["selected"],s:'_0?"check-square-o":"square-o"'},p:[9,24,205]}],state:[{t:2,x:{r:["selected","danger"],s:'_0?_1?"danger":"selected":null'},p:[10,16,267]}],action:"mode",params:['{"mode": ',{t:2,r:"mode",p:[11,40,361]},"}"]},f:[{t:2,r:"name",p:[11,51,372]}]}]}],n:52,r:"data.modes",p:[7,3,142]}]}]},r.exports.components=r.exports.components||{};var i={back:t(357)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,357:357}],359:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" "," ",{p:{button:[{p:[6,5,185],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Scrubber Controls",button:0},f:[" ",{t:4,f:[{p:[9,5,242],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[9,27,264]}]},f:[{p:[10,7,287],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[11,9,323],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[11,26,340]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[11,68,382]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[12,46,459]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[12,66,479]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[12,80,493]}]}]}," ",{p:[14,7,558],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[15,9,593],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["scrubbing"],s:'_0?"filter":"sign-in"'},p:[15,26,610]}],style:[{t:2,x:{r:["scrubbing"],s:'_0?null:"danger"'},p:[15,71,655]}],action:"scrubbing",params:['{"id_tag": "',{t:2,r:"id_tag",p:[16,50,738]},'", "val": ',{t:2,x:{r:["scrubbing"],s:"+!_0"},p:[16,70,758]},"}"]},f:[{t:2,x:{r:["scrubbing"],s:'_0?"Scrubbing":"Siphoning"'},p:[16,88,776]}]}]}," ",{p:[18,7,858],t:7,e:"ui-section",a:{label:"Range"},f:[{p:[19,9,894],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["widenet"],s:'_0?"expand":"compress"'},p:[19,26,911]}],style:[{t:2,x:{r:["widenet"],s:'_0?"selected":null'},p:[19,70,955]}],action:"widenet",params:['{"id_tag": "',{t:2,r:"id_tag",p:[20,48,1036]},'", "val": ',{t:2,x:{r:["widenet"],s:"+!_0"},p:[20,68,1056]},"}"]},f:[{t:2,x:{r:["widenet"],s:'_0?"Expanded":"Normal"'},p:[20,84,1072]}]}]}," ",{p:[22,7,1148],t:7,e:"ui-section",a:{label:"Filters"},f:[{p:[23,9,1186],t:7,e:"filters"}]}]}],n:52,r:"data.scrubbers",p:[8,3,212]},{t:4,n:51,f:[{p:[27,5,1257],t:7,e:"span",a:{"class":"bad"},f:["Error: No scrubbers connected."]}],r:"data.scrubbers"}]}]},r.exports.components=r.exports.components||{};var i={filters:t(457),back:t(357)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,357:357,457:457}],360:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Air Status"},f:[{t:4,f:[{t:4,f:[{p:[4,7,110],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[4,26,129]}]},f:[{p:[5,6,146],t:7,e:"span",a:{"class":[{t:2,x:{r:["danger_level"],s:'_0==2?"bad":_0==1?"average":"good"'},p:[5,19,159]}]},f:[{t:2,x:{r:["value"],s:"Math.fixed(_0,2)"},p:[6,5,237]},{t:2,r:"unit",p:[6,29,261]}]}]}],n:52,r:"adata.environment_data",p:[3,5,70]}," ",{p:[10,5,322],t:7,e:"ui-section",a:{label:"Local Status"},f:[{p:[11,7,363],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.danger_level"],s:'_0==2?"bad bold":_0==1?"average bold":"good"'},p:[11,20,376]}]},f:[{t:2,x:{r:["data.danger_level"],s:'_0==2?"Danger (Internals Required)":_0==1?"Caution":"Optimal"'},p:[12,6,475]}]}]}," ",{p:[15,5,619],t:7,e:"ui-section",a:{label:"Area Status"},f:[{p:[16,7,659],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.atmos_alarm","data.fire_alarm"],s:'_0||_1?"bad bold":"good"'},p:[16,20,672]}]},f:[{t:2,x:{r:["data.atmos_alarm","fire_alarm"],s:'_0?"Atmosphere Alarm":_1?"Fire Alarm":"Nominal"'},p:[17,8,744]}]}]}],n:50,r:"data.environment_data",p:[2,3,35]},{t:4,n:51,f:[{p:[21,5,876],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[22,7,912],t:7,e:"span",a:{"class":"bad bold"},f:["Cannot obtain air sample for analysis."]}]}],r:"data.environment_data"}," ",{t:4,f:[{p:[26,5,1040],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[27,7,1076],t:7,e:"span",a:{"class":"bad bold"},f:["Safety measures offline. Device may exhibit abnormal behavior."]}]}],n:50,r:"data.emagged",p:[25,3,1014]}]}]},e.exports=a.extend(r.exports)},{341:341}],361:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.css=" th, td {\r\n padding-right: 16px;\r\n text-align: left;\r\n }",r.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,116],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Alarm Thresholds",button:0},f:[" ",{p:[7,3,143],t:7,e:"table",f:[{p:[8,5,156],t:7,e:"thead",f:[{p:[8,12,163],t:7,e:"tr",f:[{p:[9,7,175],t:7,e:"th"}," ",{p:[10,7,192],t:7,e:"th",f:[{p:[10,11,196],t:7,e:"span",a:{"class":"bad"},f:["min2"]}]}," ",{p:[11,7,238],t:7,e:"th",f:[{p:[11,11,242],t:7,e:"span",a:{"class":"average"},f:["min1"]}]}," ",{p:[12,7,288],t:7,e:"th",f:[{p:[12,11,292],t:7,e:"span",a:{"class":"average"},f:["max1"]}]}," ",{p:[13,7,338],t:7,e:"th",f:[{p:[13,11,342],t:7,e:"span",a:{"class":"bad"},f:["max2"]}]}]}]}," ",{p:[15,5,401],t:7,e:"tbody",f:[{t:4,f:[{p:[16,32,441],t:7,e:"tr",f:[{p:[17,9,455],t:7,e:"th",f:[{t:3,r:"name",p:[17,13,459]}]}," ",{t:4,f:[{p:[18,27,502],t:7,e:"td",f:[{p:[19,11,518],t:7,e:"ui-button",a:{action:"threshold",params:['{"env": "',{t:2,r:"env",p:[19,58,565]},'", "var": "',{t:2,r:"val",p:[19,76,583]},'"}']},f:[{t:2,x:{r:["selected"],s:"Math.fixed(_0,2)"},p:[19,87,594]}]}]}],n:52,r:"settings",p:[18,9,484]}]}],n:52,r:"data.thresholds",p:[16,7,416]}]}," ",{p:[23,3,697],t:7,e:"table",f:[]}]}]}," "]},r.exports.components=r.exports.components||{};var i={back:t(357)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,357:357}],362:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,113],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Vent Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,166],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,188]}]},f:[{p:[9,7,211],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,247],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,264]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,306]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,383]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,403]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,417]}]}]}," ",{p:[13,7,482],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,517],t:7,e:"span",f:[{t:2,x:{r:["direction"],s:'_0=="release"?"Pressurizing":"Siphoning"'},p:[14,15,523]}]}]}," ",{p:[16,7,616],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[17,9,665],t:7,e:"ui-button",a:{icon:"sign-in",style:[{t:2,x:{r:["incheck"],s:'_0?"selected":null'},p:[17,42,698]}],action:"incheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[18,48,779]},'", "val": ',{t:2,r:"checks",p:[18,68,799]},"}"]},f:["Internal"]}," ",{p:[19,9,842],t:7,e:"ui-button",a:{icon:"sign-out",style:[{t:2,x:{r:["excheck"],s:'_0?"selected":null'},p:[19,43,876]}],action:"excheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[20,48,957]},'", "val": ',{t:2,r:"checks",p:[20,68,977]},"}"]},f:["External"]}]}," ",{t:4,f:[{p:[23,9,1064],t:7,e:"ui-section",a:{label:"Internal Target Pressure"},f:[{p:[24,11,1121],t:7,e:"ui-button",a:{icon:"pencil",action:"set_internal_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[25,33,1210]},'"}']},f:[{t:2,x:{r:["internal"],s:"Math.fixed(_0)"},p:[25,47,1224]}]}," ",{p:[26,11,1272],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["intdefault"],s:'_0?"disabled":null'},p:[26,44,1305]}],action:"reset_internal_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[27,33,1407]},'"}']},f:["Reset"]}]}],n:50,r:"incheck",p:[22,7,1039]}," ",{t:4,f:[{p:[31,11,1511],t:7,e:"ui-section",a:{label:"External Target Pressure"},f:[{p:[32,13,1570],t:7,e:"ui-button",a:{icon:"pencil",action:"set_external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[33,35,1661]},'"}']},f:[{t:2,x:{r:["external"],s:"Math.fixed(_0)"},p:[33,49,1675]}]}," ",{p:[34,13,1725],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["extdefault"],s:'_0?"disabled":null'},p:[34,46,1758]}],action:"reset_external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[35,35,1862]},'"}']},f:["Reset"]}]}],n:50,r:"excheck",p:[30,7,1484]}]}],n:52,r:"data.vents",p:[7,3,140]},{t:4,n:51,f:[{p:[40,5,1973],t:7,e:"span",a:{"class":"bad"},f:["Error: No vents connected."]}],r:"data.vents"}]}]},r.exports.components=r.exports.components||{};var i={back:t(357)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,357:357}],363:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.css=" table {\r\n width: 100%;\r\n border-spacing: 2px;\r\n }\r\n th {\r\n text-align: left;\r\n }\r\n td {\r\n vertical-align: top;\r\n }\r\n td .button {\r\n margin-top: 4px\r\n }",r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",f:[{p:[3,5,34],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oneAccess"],s:'_0?"unlock":"lock"'},p:[3,22,51]}],action:"one_access"},f:[{t:2,x:{r:["data.oneAccess"],s:'_0?"One":"All"'},p:[3,82,111]}," Required"]}," ",{p:[4,5,172],t:7,e:"ui-button",a:{icon:"refresh",action:"clear"},f:["Clear"]}]}," ",{p:[6,3,251],t:7,e:"hr"}," ",{p:[7,3,260],t:7,e:"table",f:[{p:[8,3,271],t:7,e:"thead",f:[{p:[9,4,283],t:7,e:"tr",f:[{t:4,f:[{p:[10,5,315],t:7,e:"th",f:[{p:[10,9,319],t:7,e:"span",a:{"class":"highlight bold"},f:[{t:2,r:"name",p:[10,38,348]}]}]}],n:52,r:"data.regions",p:[9,8,287]}]}]}," ",{p:[13,3,403],t:7,e:"tbody",f:[{p:[14,4,415],t:7,e:"tr",f:[{t:4,f:[{p:[15,5,447],t:7,e:"td",f:[{t:4,f:[{p:[16,11,481],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["req"],s:'_0?"check-square-o":"square-o"'},p:[16,28,498]}],style:[{t:2,x:{r:["req"],s:'_0?"selected":null'},p:[16,76,546]}],action:"set",params:['{"access": "',{t:2,r:"id",p:[17,46,621]},'"}']},f:[{t:2,r:"name",p:[17,56,631]}]}," ",{p:[18,9,661],t:7,e:"br"}],n:52,r:"accesses",p:[15,9,451]}]}],n:52,r:"data.regions",p:[14,8,419]}]}]}]}," ",{p:[23,2,731],t:7,e:"hr"}," ",{p:[24,2,739],t:7,e:"span",a:{"class":"highlight bold"},f:["Unrestricted Access:"]}," ",{p:[25,2,798],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.unres_direction"],s:'_0&1?"check-square-o":"square-o"'},p:[25,19,815]}],style:[{t:2,x:{r:["data.unres_direction"],s:'_0&1?"selected":null'},p:[25,88,884]}],action:"direc_set",params:'{"unres_direction": "1"}'},f:["North"]}," ",{p:[26,2,1007],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.unres_direction"],s:'_0&4?"check-square-o":"square-o"'},p:[26,19,1024]}],style:[{t:2,x:{r:["data.unres_direction"],s:'_0&4?"selected":null'},p:[26,88,1093]}],action:"direc_set",params:'{"unres_direction": "4"}'},f:["East"]}," ",{p:[27,2,1215],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.unres_direction"],s:'_0&2?"check-square-o":"square-o"'},p:[27,19,1232]}],style:[{t:2,x:{r:["data.unres_direction"], s:'_0&2?"selected":null'},p:[27,88,1301]}],action:"direc_set",params:'{"unres_direction": "2"}'},f:["South"]}," ",{p:[28,2,1424],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.unres_direction"],s:'_0&8?"check-square-o":"square-o"'},p:[28,19,1441]}],style:[{t:2,x:{r:["data.unres_direction"],s:'_0&8?"selected":null'},p:[28,88,1510]}],action:"direc_set",params:'{"unres_direction": "8"}'},f:["West"]}]}," "]},e.exports=a.extend(r.exports)},{341:341}],364:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{powerState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}}},computed:{malfAction:function(){switch(this.get("data.malfStatus")){case 1:return"hack";case 2:return"occupy";case 3:return"deoccupy"}},malfButton:function(){switch(this.get("data.malfStatus")){case 1:return"Override Programming";case 2:case 4:return"Shunt Core Process";case 3:return"Return to Main Core"}},malfIcon:function(){switch(this.get("data.malfStatus")){case 1:return"terminal";case 2:case 4:return"caret-square-o-down";case 3:return"caret-square-o-left"}},powerCellStatusState:function(){var t=this.get("data.powerCellStatus");return t>50?"good":t>25?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{t:4,f:[{p:[46,2,1206],t:7,e:"ui-notice",f:[{p:[47,3,1221],t:7,e:"b",f:[{p:[47,6,1224],t:7,e:"h3",f:["SYSTEM FAILURE"]}]}," ",{p:[48,3,1255],t:7,e:"i",f:["I/O regulators malfunction detected! Waiting for system reboot..."]},{p:[48,75,1327],t:7,e:"br"}," Automatic reboot in ",{t:2,r:"data.failTime",p:[49,23,1355]}," seconds... ",{p:[50,3,1387],t:7,e:"ui-button",a:{icon:"refresh",action:"reboot"},f:["Reboot Now"]},{p:[50,67,1451],t:7,e:"br"},{p:[50,71,1455],t:7,e:"br"},{p:[50,75,1459],t:7,e:"br"}]}],n:50,r:"data.failTime",p:[45,1,1182]},{t:4,n:51,f:[{p:[53,2,1491],t:7,e:"ui-notice",f:[{t:4,f:[{p:[55,3,1535],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[56,5,1576],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[56,22,1593]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[56,73,1644]}]}]}],n:50,r:"data.siliconUser",p:[54,4,1507]},{t:4,n:51,f:[{p:[59,3,1732],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[59,29,1758]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[62,2,1846],t:7,e:"ui-display",a:{title:"Power Status"},f:[{p:[63,4,1884],t:7,e:"ui-section",a:{label:"Main Breaker"},f:[{t:4,f:[{p:[65,5,1967],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.isOperating"],s:'_0?"good":"bad"'},p:[65,18,1980]}]},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[65,57,2019]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[64,3,1921]},{t:4,n:51,f:[{p:[67,5,2079],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[67,22,2096]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[67,75,2149]}],action:"breaker"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[68,21,2212]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}," ",{p:[71,4,2293],t:7,e:"ui-section",a:{label:"External Power"},f:[{p:[72,3,2332],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.externalPower"],s:"_0(_1)"},p:[72,16,2345]}]},f:[{t:2,x:{r:["data.externalPower"],s:'_0==2?"Good":_0==1?"Low":"None"'},p:[72,52,2381]}]}]}," ",{p:[74,4,2490],t:7,e:"ui-section",a:{label:"Power Cell"},f:[{t:4,f:[{p:[76,5,2567],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerCellStatus",p:[76,38,2600]}],state:[{t:2,r:"powerCellStatusState",p:[76,71,2633]}]},f:[{t:2,x:{r:["adata.powerCellStatus"],s:"Math.fixed(_0)"},p:[76,97,2659]},"%"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[75,3,2525]},{t:4,n:51,f:[{p:[78,5,2724],t:7,e:"span",a:{"class":"bad"},f:["Removed"]}],x:{r:["data.powerCellStatus"],s:"_0!=null"}}]}," ",{t:4,f:[{p:[82,3,2830],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{t:4,f:[{p:[84,4,2913],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.chargeMode"],s:'_0?"good":"bad"'},p:[84,17,2926]}]},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[84,55,2964]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[83,5,2868]},{t:4,n:51,f:[{p:[86,4,3026],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.chargeMode"],s:'_0?"refresh":"close"'},p:[86,21,3043]}],style:[{t:2,x:{r:["data.chargeMode"],s:'_0?"selected":null'},p:[86,71,3093]}],action:"charge"},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[87,22,3156]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}," [",{p:[90,6,3236],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.chargingStatus"],s:"_0(_1)"},p:[90,19,3249]}]},f:[{t:2,x:{r:["data.chargingStatus"],s:'_0==2?"Fully Charged":_0==1?"Charging":"Not Charging"'},p:[90,56,3286]}]},"]"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[81,4,2790]}]}," ",{p:[94,2,3445],t:7,e:"ui-display",a:{title:"Power Channels"},f:[{t:4,f:[{p:[96,3,3517],t:7,e:"ui-section",a:{label:[{t:2,r:"title",p:[96,22,3536]}],nowrap:0},f:[{p:[97,5,3560],t:7,e:"div",a:{"class":"content"},f:[{t:2,rx:{r:"adata.powerChannels",m:[{t:30,n:"@index"},"powerLoad"]},p:[97,26,3581]}]}," ",{p:[98,5,3634],t:7,e:"div",a:{"class":"content"},f:[{p:[98,26,3655],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0>=2?"good":"bad"'},p:[98,39,3668]}]},f:[{t:2,x:{r:["status"],s:'_0>=2?"On":"Off"'},p:[98,73,3702]}]}]}," ",{p:[99,5,3751],t:7,e:"div",a:{"class":"content"},f:["[",{p:[99,27,3773],t:7,e:"span",f:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"Auto":"Manual"'},p:[99,33,3779]}]},"]"]}," ",{p:[100,5,3849],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{t:4,f:[{p:[102,6,3942],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"selected":null'},p:[102,39,3975]}],action:"channel",params:[{t:2,r:"topicParams.auto",p:[103,30,4057]}]},f:["Auto"]}," ",{p:[104,6,4102],t:7,e:"ui-button",a:{icon:"power-off",state:[{t:2,x:{r:["status"],s:'_0==2?"selected":null'},p:[104,41,4137]}],action:"channel",params:[{t:2,r:"topicParams.on",p:[105,13,4204]}]},f:["On"]}," ",{p:[106,6,4245],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["status"],s:'_0==0?"selected":null'},p:[106,37,4276]}],action:"channel",params:[{t:2,r:"topicParams.off",p:[107,13,4343]}]},f:["Off"]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[101,4,3895]}]}]}],n:52,r:"data.powerChannels",p:[95,4,3485]}," ",{p:[112,4,4439],t:7,e:"ui-section",a:{label:"Total Load"},f:[{p:[113,3,4474],t:7,e:"span",a:{"class":"bold"},f:[{t:2,r:"adata.totalLoad",p:[113,22,4493]}]}]}]}," ",{t:4,f:[{p:[117,4,4585],t:7,e:"ui-display",a:{title:"System Overrides"},f:[{p:[118,3,4626],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"overload"},f:["Overload"]}," ",{t:4,f:[{p:[120,5,4727],t:7,e:"ui-button",a:{icon:[{t:2,r:"malfIcon",p:[120,22,4744]}],state:[{t:2,x:{r:["data.malfStatus"],s:'_0==4?"disabled":null'},p:[120,43,4765]}],action:[{t:2,r:"malfAction",p:[120,97,4819]}]},f:[{t:2,r:"malfButton",p:[120,113,4835]}]}],n:50,r:"data.malfStatus",p:[119,3,4698]}]}],n:50,r:"data.siliconUser",p:[116,2,4556]}," ",{p:[124,2,4903],t:7,e:"ui-notice",f:[{p:[125,4,4919],t:7,e:"ui-section",a:{label:"Emergency Light Fallback"},f:[{t:4,f:[{p:[127,8,5020],t:7,e:"span",f:[{t:2,x:{r:["data.emergencyLights"],s:'_0?"Enabled":"Disabled"'},p:[127,14,5026]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[126,6,4971]},{t:4,n:51,f:[{p:[129,8,5106],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"emergency_lighting"},f:[{t:2,x:{r:["data.emergencyLights"],s:'_0?"Enabled":"Disabled"'},p:[129,66,5164]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}]}," ",{p:[133,2,5275],t:7,e:"ui-notice",f:[{p:[134,4,5291],t:7,e:"ui-section",a:{label:"Night Shift Lighting"},f:[{t:4,f:[{p:[136,8,5388],t:7,e:"span",f:[{t:2,x:{r:["data.nightshiftLights"],s:'_0?"Enabled":"Disabled"'},p:[136,14,5394]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[135,6,5339]},{t:4,n:51,f:[{p:[138,8,5475],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"toggle_nightshift"},f:[{t:2,x:{r:["data.nightshiftLights"],s:'_0?"Enabled":"Disabled"'},p:[138,65,5532]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}]}," ",{p:[142,2,5644],t:7,e:"ui-notice",f:[{p:[143,4,5660],t:7,e:"ui-section",a:{label:"Cover Lock"},f:[{t:4,f:[{p:[145,5,5741],t:7,e:"span",f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[145,11,5747]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[144,3,5695]},{t:4,n:51,f:[{p:[147,5,5819],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.coverLocked"],s:'_0?"lock":"unlock"'},p:[147,22,5836]}],action:"cover"},f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[147,79,5893]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}]}],r:"data.failTime"}]},e.exports=a.extend(r.exports)},{341:341}],365:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Alarms"},f:[{p:[2,3,31],t:7,e:"ul",f:[{t:4,f:[{p:[4,7,72],t:7,e:"li",f:[{p:[4,11,76],t:7,e:"ui-button",a:{icon:"close",style:"danger",action:"clear",params:['{"zone": "',{t:2,r:".",p:[4,83,148]},'"}']},f:[{t:2,r:".",p:[4,92,157]}]}]}],n:52,r:"data.priority",p:[3,5,41]},{t:4,n:51,f:[{p:[6,7,201],t:7,e:"li",f:[{p:[6,11,205],t:7,e:"span",a:{"class":"good"},f:["No Priority Alerts"]}]}],r:"data.priority"}," ",{t:4,f:[{p:[9,7,303],t:7,e:"li",f:[{p:[9,11,307],t:7,e:"ui-button",a:{icon:"close",style:"caution",action:"clear",params:['{"zone": "',{t:2,r:".",p:[9,84,380]},'"}']},f:[{t:2,r:".",p:[9,93,389]}]}]}],n:52,r:"data.minor",p:[8,5,275]},{t:4,n:51,f:[{p:[11,7,433],t:7,e:"li",f:[{p:[11,11,437],t:7,e:"span",a:{"class":"good"},f:["No Minor Alerts"]}]}],r:"data.minor"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],366:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:[{t:2,x:{r:["data.tank","data.sensors.0.long_name"],s:"_0?_1:null"},p:[1,20,19]}]},f:[{t:4,f:[{p:[3,5,102],t:7,e:"ui-subdisplay",a:{title:[{t:2,x:{r:["data.tank","long_name"],s:"!_0?_1:null"},p:[3,27,124]}]},f:[{p:[4,7,167],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[5,3,200],t:7,e:"span",f:[{t:2,x:{r:["pressure"],s:"Math.fixed(_0,2)"},p:[5,9,206]}," kPa"]}]}," ",{t:4,f:[{p:[8,9,302],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[9,11,346],t:7,e:"span",f:[{t:2,x:{r:["temperature"],s:"Math.fixed(_0,2)"},p:[9,17,352]}," K"]}]}],n:50,r:"temperature",p:[7,7,273]}," ",{t:4,f:[{p:[13,9,462],t:7,e:"ui-section",a:{label:[{t:2,r:"id",p:[13,28,481]}]},f:[{p:[14,5,495],t:7,e:"span",f:[{t:2,x:{r:["."],s:"Math.fixed(_0,2)"},p:[14,11,501]},"%"]}]}],n:52,i:"id",r:"gases",p:[12,4,434]}]}],n:52,r:"adata.sensors",p:[2,3,73]}]}," ",{t:4,f:[{p:{button:[{p:[23,5,704],t:7,e:"ui-button",a:{icon:"refresh",action:"reconnect"},f:["Reconnect"]}]},t:7,e:"ui-display",a:{title:"Controls",button:0},f:[" ",{p:[25,5,792],t:7,e:"ui-section",a:{label:"Input Injector"},f:[{p:[26,7,835],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputting"],s:'_0?"power-off":"close"'},p:[26,24,852]}],style:[{t:2,x:{r:["data.inputting"],s:'_0?"selected":null'},p:[26,75,903]}],action:"input"},f:[{t:2,x:{r:["data.inputting"],s:'_0?"Injecting":"Off"'},p:[27,9,968]}]}]}," ",{p:[29,5,1044],t:7,e:"ui-section",a:{label:"Input Rate"},f:[{p:[30,7,1083],t:7,e:"span",f:[{t:2,x:{r:["adata.inputRate"],s:"Math.fixed(_0)"},p:[30,13,1089]}," L/s"]}]}," ",{p:[32,5,1156],t:7,e:"ui-section",a:{label:"Output Regulator"},f:[{p:[33,7,1201],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputting"],s:'_0?"power-off":"close"'},p:[33,24,1218]}],style:[{t:2,x:{r:["data.outputting"],s:'_0?"selected":null'},p:[33,76,1270]}],action:"output"},f:[{t:2,x:{r:["data.outputting"],s:'_0?"Open":"Closed"'},p:[34,9,1337]}]}]}," ",{p:[36,5,1412],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[37,7,1456],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure"},f:[{t:2,x:{r:["adata.outputPressure"],s:"Math.round(_0)"},p:[37,50,1499]}," kPa"]}]}]}],n:50,r:"data.tank",p:[20,1,618]}]},e.exports=a.extend(r.exports)},{341:341}],367:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[8,5,360],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,390]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,518],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[9,11,524]}," kPa"]}]}," ",{p:[11,3,586],t:7,e:"ui-section",a:{label:"Filter"},f:[{t:4,f:[{p:[13,7,654],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[13,25,672]}],action:"filter",params:['{"mode": ',{t:2,r:"id",p:[14,42,748]},"}"]},f:[{t:2,r:"name",p:[14,51,757]}]}],n:52,r:"data.filter_types",p:[12,5,619]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],368:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[8,5,360],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,390]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,522],t:7,e:"span",f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,11,528]}," kPa"]}]}," ",{p:[11,3,594],t:7,e:"ui-section",a:{label:"Node 1"},f:[{p:[12,5,627],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[12,44,666]}],action:"node1",params:'{"concentration": -0.1}'}}," ",{p:[14,5,783],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[14,39,817]}],action:"node1",params:'{"concentration": -0.01}'}}," ",{p:[16,5,935],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[16,38,968]}],action:"node1",params:'{"concentration": 0.01}'}}," ",{p:[18,5,1087],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[18,43,1125]}],action:"node1",params:'{"concentration": 0.1}'}}," ",{p:[20,5,1243],t:7,e:"span",f:[{t:2,x:{r:["adata.node1_concentration"],s:"Math.round(_0)"},p:[20,11,1249]},"%"]}]}," ",{p:[22,3,1319],t:7,e:"ui-section",a:{label:"Node 2"},f:[{p:[23,5,1352],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[23,44,1391]}],action:"node2",params:'{"concentration": -0.1}'}}," ",{p:[25,5,1508],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[25,39,1542]}],action:"node2",params:'{"concentration": -0.01}'}}," ",{p:[27,5,1660],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[27,38,1693]}],action:"node2",params:'{"concentration": 0.01}'}}," ",{p:[29,5,1812],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[29,43,1850]}],action:"node2",params:'{"concentration": 0.1}'}}," ",{p:[31,5,1968],t:7,e:"span",f:[{t:2,x:{r:["adata.node2_concentration"],s:"Math.round(_0)"},p:[31,11,1974]},"%"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],369:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{t:4,f:[{p:[7,5,250],t:7,e:"ui-section",a:{label:"Transfer Rate"},f:[{p:[8,7,292],t:7,e:"ui-button",a:{icon:"pencil",action:"rate",params:'{"rate": "input"}'},f:["Set"]}," ",{p:[9,7,381],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.rate","data.max_rate"],s:'_0==_1?"disabled":null'},p:[9,37,411]}],action:"rate",params:'{"rate": "max"}'},f:["Max"]}," ",{p:[10,7,525],t:7,e:"span",f:[{t:2,x:{r:["adata.rate"],s:"Math.round(_0)"},p:[10,13,531]}," L/s"]}]}],n:50,r:"data.max_rate",p:[6,3,223]},{t:4,n:51,f:[{p:[13,5,605],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[14,7,649],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[15,7,746],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[15,37,776]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[16,7,906],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[16,13,912]}," kPa"]}]}],r:"data.max_rate"}]}]},e.exports=a.extend(r.exports)},{341:341}],370:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{p:[3,3,72],t:7,e:"ui-button",a:{icon:"pencil",action:"rename"},f:["Rename"]}]},t:7,e:"ui-display",a:{title:[{t:2,r:"data.borg.name",p:[1,20,19]}],button:0},f:[" ",{p:[5,2,149],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[6,4,181],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.borg.emagged"],s:'_0?"check-square-o":"square-o"'},p:[6,21,198]}],style:[{t:2,x:{r:["data.borg.emagged"],s:'_0?"selected":null'},p:[6,83,260]}],action:"toggle_emagged"},f:["Emagged"]}," ",{p:[7,4,351],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.borg.lockdown"],s:'_0?"check-square-o":"square-o"'},p:[7,21,368]}],style:[{t:2,x:{r:["data.borg.lockdown"],s:'_0?"selected":null'},p:[7,84,431]}],action:"toggle_lockdown"},f:["Locked down"]}," ",{p:[8,4,528],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.borg.scrambledcodes"],s:'_0?"check-square-o":"square-o"'},p:[8,21,545]}],style:[{t:2,x:{r:["data.borg.scrambledcodes"],s:'_0?"selected":null'},p:[8,90,614]}],action:"toggle_scrambledcodes"},f:["Scrambled codes"]}]}," ",{p:[10,2,741],t:7,e:"ui-section",a:{label:"Charge"},f:[{t:4,f:[{p:[12,4,803],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.cell.maxcharge",p:[12,25,824]}],value:[{t:2,r:"data.cell.charge",p:[12,57,856]}]},f:[{t:2,x:{r:["data.cell.charge"],s:"Math.round(_0)"},p:[12,79,878]}," / ",{t:2,x:{r:["data.cell.maxcharge"],s:"Math.round(_0)"},p:[12,114,913]}]}],n:50,x:{r:["data.cell.missing"],s:"!_0"},p:[11,3,772]},{t:4,n:51,f:[{p:[14,4,974],t:7,e:"span",a:{"class":"warning"},f:["Cell missing"]},{p:[14,45,1015],t:7,e:"br"}],x:{r:["data.cell.missing"],s:"!_0"}}," ",{p:[16,3,1035],t:7,e:"ui-button",a:{icon:"pencil",action:"set_charge"},f:["Set"]},{p:[16,63,1095],t:7,e:"ui-button",a:{icon:"eject",action:"change_cell"},f:["Change"]},{p:[16,126,1158],t:7,e:"ui-button",a:{icon:"trash","class":"bad",action:"remove_cell"},f:["Remove"]}]}," ",{p:[18,2,1252],t:7,e:"ui-section",a:{label:"Radio channels"},f:[{t:4,f:[{p:[20,4,1319],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["installed"],s:'_0?"check-square-o":"square-o"'},p:[20,21,1336]}],style:[{t:2,x:{r:["installed"],s:'_0?"selected":null'},p:[20,75,1390]}],action:"toggle_radio",params:['{"channel": "',{t:2,r:"name",p:[20,154,1469]},'"}']},f:[{t:2,r:"name",p:[20,166,1481]}]}],n:52,r:"data.channels",p:[19,3,1291]}]}," ",{p:[23,2,1533],t:7,e:"ui-section",a:{label:"Module"},f:[{t:4,f:[{p:[25,4,1591],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.borg.active_module","type"],s:'_0==_1?"check-square-o":"square-o"'},p:[25,21,1608]}],style:[{t:2,x:{r:["data.borg.active_module","type"],s:'_0==_1?"selected":null'},p:[25,97,1684]}],action:"setmodule",params:['{"module": "',{t:2,r:"type",p:[25,193,1780]},'"}']},f:[{t:2,r:"name",p:[25,205,1792]}]}],n:52,r:"data.modules",p:[24,3,1564]}]}," ",{p:[28,2,1844],t:7,e:"ui-section",a:{label:"Upgrades"},f:[{t:4,f:[{p:[30,4,1905],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["installed"],s:'_0?"check-square-o":"square-o"'},p:[30,21,1922]}],style:[{t:2,x:{r:["installed"],s:'_0?"selected":null'},p:[30,75,1976]}],action:"toggle_upgrade",params:['{"upgrade": "',{t:2,r:"type",p:[30,155,2056]},'"}']},f:[{t:2,r:"name",p:[30,167,2068]}]}],n:52,r:"data.upgrades",p:[29,3,1877]}]}," ",{p:[33,2,2120],t:7,e:"ui-section",a:{label:"Master AI"},f:[{t:4,f:[{p:[35,4,2177],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["connected"],s:'_0?"check-square-o":"square-o"'},p:[35,21,2194]}],style:[{t:2,x:{r:["connected"],s:'_0?"selected":null'},p:[35,75,2248]}],action:"slavetoai",params:['{"slavetoai": "',{t:2,r:"ref",p:[35,152,2325]},'"}']},f:[{t:2,r:"name",p:[35,163,2336]}]}],n:52,r:"data.ais",p:[34,3,2154]}]}]}," ",{p:{button:[{p:[41,3,2460],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.borg.lawupdate"],s:'_0?"check-square-o":"square-o"'},p:[41,20,2477]}],style:[{t:2,x:{r:["data.borg.lawupdate"],s:'_0?"selected":null'},p:[41,84,2541]}],action:"toggle_lawupdate"},f:["Lawsync"]}]},t:7,e:"ui-display",a:{title:"Laws",button:0},f:[" ",{t:4,f:[{p:[44,3,2672],t:7,e:"p",f:[{t:2,r:".",p:[44,6,2675]}]}],n:52,r:"data.laws",p:[43,2,2649]}]}]},e.exports=a.extend(r.exports)},{341:341}],371:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{p:[3,5,67],t:7,e:"ui-button",a:{icon:"clock-o",style:[{t:2,x:{r:["data.timing"],s:'_0?"selected":null'},p:[3,38,100]}],action:[{t:2,x:{r:["data.timing"],s:'_0?"stop":"start"'},p:[3,83,145]}]},f:[{t:2,x:{r:["data.timing"],s:'_0?"Stop":"Start"'},p:[3,119,181]}]}," ",{p:[4,5,233],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"flash",style:[{t:2,x:{r:["data.flash_charging"],s:'_0?"disabled":null'},p:[4,57,285]}]},f:[{t:2,x:{r:["data.flash_charging"],s:'_0?"Recharging":"Flash"'},p:[4,102,330]}]}]},t:7,e:"ui-display",a:{title:"Cell Timer",button:0},f:[" ",{p:[6,3,410],t:7,e:"ui-section",f:[{p:[7,5,428],t:7,e:"ui-button",a:{icon:"fast-backward",action:"time",params:'{"adjust": -600}'}}," ",{p:[8,5,518],t:7,e:"ui-button",a:{icon:"backward",action:"time",params:'{"adjust": -100}'}}," ",{p:[9,5,603],t:7,e:"span",f:[{t:2,x:{r:["text","data.minutes"],s:"_0.zeroPad(_1,2)"},p:[9,11,609]},":",{t:2,x:{r:["text","data.seconds"],s:"_0.zeroPad(_1,2)"},p:[9,45,643]}]}," ",{p:[10,5,689],t:7,e:"ui-button",a:{icon:"forward",action:"time",params:'{"adjust": 100}'}}," ",{p:[11,5,772],t:7,e:"ui-button",a:{icon:"fast-forward",action:"time",params:'{"adjust": 600}'}}]}," ",{p:[13,3,875],t:7,e:"ui-section",f:[{p:[14,7,895],t:7,e:"ui-button",a:{icon:"hourglass-start",action:"preset",params:'{"preset": "short"}'},f:["Short"]}," ",{p:[15,7,999],t:7,e:"ui-button",a:{icon:"hourglass-start",action:"preset",params:'{"preset": "medium"}'},f:["Medium"]}," ",{p:[16,7,1105],t:7,e:"ui-button",a:{icon:"hourglass-start",action:"preset",params:'{"preset": "long"}'},f:["Long"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],372:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,23],t:7,e:"ui-notice",f:[{t:2,r:"data.notice",p:[3,5,40]}]}],n:50,r:"data.notice",p:[1,1,0]},{p:[6,1,82],t:7,e:"ui-display",a:{title:"Bluespace Artillery Control",button:0},f:[{t:4,f:[{p:[8,3,167],t:7,e:"ui-section",a:{label:"Target"},f:[{p:[9,5,200],t:7,e:"ui-button",a:{icon:"crosshairs",action:"recalibrate"},f:[{t:2,r:"data.target",p:[9,55,250]}]}]}," ",{p:[11,3,298],t:7,e:"ui-section",a:{label:"Controls"},f:[{t:4,f:[{p:[13,3,356],t:7,e:"ui-notice",f:[{p:[14,4,372],t:7,e:"span",f:["Bluespace Artillery firing protocols must be globally unlocked from two keycard authentication devices first!"]}]}],n:50,x:{r:["data.unlocked"],s:"!_0"},p:[12,2,330]},{t:4,n:51,f:[{p:[17,3,525],t:7,e:"ui-button",a:{icon:"warning",state:[{t:2,x:{r:["data.ready"],s:'_0?null:"disabled"'},p:[17,36,558]}],action:"fire"},f:["FIRE!"]}],x:{r:["data.unlocked"],s:"!_0"}}]}],n:50,r:"data.connected",p:[7,3,141]}," ",{t:4,f:[{p:[22,3,694],t:7,e:"ui-section",a:{label:"Maintenance"},f:[{p:[23,7,734],t:7,e:"ui-button",a:{icon:"wrench",action:"build"},f:["Complete Deployment."]}]}],n:50,x:{r:["data.connected"],s:"!_0"},p:[21,3,667]}]}]},e.exports=a.extend(r.exports)},{341:341}],373:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:{button:[{p:[6,5,185],t:7,e:"ui-button",a:{icon:"pencil",action:"relabel"},f:["Relabel"]}]},t:7,e:"ui-display",a:{title:"Canister",button:0},f:[" ",{p:[8,3,266],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[9,5,301],t:7,e:"span",f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[9,11,307]}," kPa"]}]}," ",{p:[11,3,373],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[12,5,404],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.portConnected"],s:'_0?"good":"average"'},p:[12,18,417]}]},f:[{t:2,x:{r:["data.portConnected"],s:'_0?"Connected":"Not Connected"'},p:[12,63,462]}]}]}," ",{t:4,f:[{p:[15,3,573],t:7,e:"ui-section",a:{label:"Access"},f:[{p:[16,7,608],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.restricted"],s:'_0?"lock":"unlock"'},p:[16,24,625]}],style:[{t:2,x:{r:[],s:'"caution"'},p:[17,14,680]}],action:"restricted"},f:[{t:2,x:{r:["data.restricted"],s:'_0?"Restricted to Engineering":"Public"'},p:[18,27,722]}]}]}],n:50,r:"data.isPrototype",p:[14,3,544]}]}," ",{p:[22,1,839],t:7,e:"ui-display",a:{title:"Valve"},f:[{p:[23,3,869],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[24,5,912],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[24,18,925]}],max:[{t:2,r:"data.maxReleasePressure",p:[24,52,959]}],value:[{t:2,r:"data.releasePressure",p:[25,14,1002]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[25,40,1028]}," kPa"]}]}," ",{p:[27,3,1099],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[28,5,1144],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[28,38,1177]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[30,5,1333],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[30,36,1364]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[32,5,1511],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[33,5,1606],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[33,35,1636]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[36,3,1798],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[37,5,1830],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[37,22,1847]}],style:[{t:2,x:{r:["data.valveOpen","data.hasHoldingTank"],s:'_0?_1?"caution":"danger":null'},p:[38,14,1901]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[39,22,1995]}]}]}]}," ",{t:4,f:[{p:[42,1,2090],t:7,e:"ui-display",a:{title:"Valve Toggle Timer"},f:[{t:4,f:[{p:[44,5,2155],t:7,e:"ui-section",a:{label:"Adjust Timer"},f:[{p:[45,7,2196],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.timer_is_not_default"],s:'_0?null:"disabled"'},p:[45,40,2229]}],action:"timer",params:'{"change": "reset"}'},f:["Reset"]}," ",{p:[47,7,2358],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.timer_is_not_min"],s:'_0?null:"disabled"'},p:[47,38,2389]}],action:"timer",params:'{"change": "decrease"}'},f:["Decrease"]}," ",{p:[49,7,2520],t:7,e:"ui-button",a:{icon:"pencil",state:[{t:2,x:{r:[],s:'"disabled"'},p:[49,39,2552]}],action:"timer",params:'{"change": "input"}'},f:["Set"]}," ",{p:[51,7,2637],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.timer_is_not_max"],s:'_0?null:"disabled"'},p:[51,37,2667]}],action:"timer",params:'{"change": "increase"}'},f:["Increase"]}]}],n:51,r:"data.timing",p:[43,3,2133]}," ",{p:[55,3,2833],t:7,e:"ui-section",a:{label:"Timer"},f:[{p:[56,6,2866],t:7,e:"ui-button",a:{icon:"clock-o",style:[{t:2,x:{r:["data.timing"],s:'_0?"danger":"caution"'},p:[56,39,2899]}],action:"toggle_timer"},f:[{t:2,x:{r:["data.timing"],s:'_0?"On":"Off"'},p:[57,30,2969]}]}," ",{p:[59,2,3017],t:7,e:"ui-section",a:{label:"Time until Valve Toggle"},f:[{p:[60,2,3064],t:7,e:"span",f:[{t:2,x:{r:["data.timing","data.time_left","data.timer_set"],s:"_0?_1:_2"},p:[60,8,3070]}]}]}]}]}],n:50,r:"data.isPrototype",p:[41,1,2062]},{p:{button:[{t:4,f:[{p:[69,7,3277],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.valveOpen"],s:'_0?"danger":null'},p:[69,38,3308]}],action:"eject"},f:["Eject"]}],n:50,r:"data.hasHoldingTank",p:[68,5,3242]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[73,3,3442],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holdingTank.name",p:[74,4,3473]}]}," ",{p:[76,3,3519],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holdingTank.tankPressure"],s:"Math.round(_0)"},p:[77,4,3553]}," kPa"]}],n:50,r:"data.hasHoldingTank",p:[72,3,3411]},{t:4,n:51,f:[{p:[80,3,3635],t:7,e:"ui-section",f:[{p:[81,4,3652],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.hasHoldingTank"}]}]},e.exports=a.extend(r.exports)},{341:341}],374:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{tabs:function(){return Object.keys(this.get("data.supplies"))}}}}(r),r.exports.template={v:3,t:[" ",{p:[11,1,158],t:7,e:"ui-display",a:{title:"Cargo"},f:[{p:[12,3,188],t:7,e:"ui-section",a:{label:"Shuttle"},f:[{t:4,f:[{p:[14,7,270],t:7,e:"ui-button",a:{action:"send"},f:[{t:2,r:"data.location",p:[14,32,295]}]}],n:50,x:{r:["data.docked","data.requestonly"],s:"_0&&!_1"},p:[13,5,222]},{t:4,n:51,f:[{p:[16,7,346],t:7,e:"span",f:[{t:2,r:"data.location",p:[16,13,352]}]}],x:{r:["data.docked","data.requestonly"],s:"_0&&!_1"}}]}," ",{p:[19,3,410],t:7,e:"ui-section",a:{label:"Credits"},f:[{p:[20,5,444],t:7,e:"span",f:[{t:2,x:{r:["adata.points"],s:"Math.floor(_0)"},p:[20,11,450]}]}]}," ",{p:[22,3,506],t:7,e:"ui-section",a:{label:"CentCom Message"},f:[{p:[23,7,550],t:7,e:"span",f:[{t:2,r:"data.message",p:[23,13,556]}]}]}," ",{t:4,f:[{p:[26,5,644],t:7,e:"ui-section",a:{label:"Loan"},f:[{t:4,f:[{p:[28,9,716],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.away","data.docked"],s:'_0&&_1?null:"disabled"'},p:[29,17,744]}],action:"loan"},f:["Loan Shuttle"]}],n:50,x:{r:["data.loan_dispatched"],s:"!_0"},p:[27,7,677]},{t:4,n:51,f:[{p:[32,9,868],t:7,e:"span",a:{"class":"bad"},f:["Loaned to CentCom"]}],x:{r:["data.loan_dispatched"],s:"!_0"}}]}],n:50,x:{r:["data.loan","data.requestonly"],s:"_0&&!_1"},p:[25,3,600]}]}," ",{t:4,f:[{p:{button:[{p:[40,7,1066],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.cart.length"],s:'_0?null:"disabled"'},p:[40,38,1097]}],action:"clear"},f:["Clear"]}]},t:7,e:"ui-display",a:{title:"Cart",button:0},f:[" ",{t:4,f:[{p:[43,7,1222],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[44,9,1263],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[44,31,1285]}]}," ",{p:[45,9,1307],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"object",p:[45,30,1328]}]}," ",{p:[46,9,1354],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"cost",p:[46,30,1375]}," Credits"]}," ",{p:[47,9,1407],t:7,e:"div",a:{"class":"content"},f:[{p:[48,11,1440],t:7,e:"ui-button",a:{icon:"minus",action:"remove", params:['{"id": "',{t:2,r:"id",p:[48,67,1496]},'"}']}}]}]}],n:52,r:"data.cart",p:[42,5,1195]},{t:4,n:51,f:[{p:[52,7,1566],t:7,e:"span",f:["Nothing in Cart"]}],r:"data.cart"}]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[37,1,972]},{p:{button:[{t:4,f:[{p:[59,7,1735],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.requests.length"],s:'_0?null:"disabled"'},p:[59,38,1766]}],action:"denyall"},f:["Clear"]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[58,5,1702]}]},t:7,e:"ui-display",a:{title:"Requests",button:0},f:[" ",{t:4,f:[{p:[63,5,1908],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[64,7,1947],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[64,29,1969]}]}," ",{p:[65,7,1989],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"object",p:[65,28,2010]}]}," ",{p:[66,7,2034],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"cost",p:[66,28,2055]}," Credits"]}," ",{p:[67,7,2085],t:7,e:"div",a:{"class":"content"},f:["By ",{t:2,r:"orderer",p:[67,31,2109]}]}," ",{p:[68,7,2134],t:7,e:"div",a:{"class":"content"},f:["Comment: ",{t:2,r:"reason",p:[68,37,2164]}]}," ",{t:4,f:[{p:[70,9,2223],t:7,e:"div",a:{"class":"content"},f:[{p:[71,11,2256],t:7,e:"ui-button",a:{icon:"check",action:"approve",params:['{"id": "',{t:2,r:"id",p:[71,68,2313]},'"}']}}," ",{p:[72,11,2336],t:7,e:"ui-button",a:{icon:"close",action:"deny",params:['{"id": "',{t:2,r:"id",p:[72,65,2390]},'"}']}}]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[69,7,2188]}]}],n:52,r:"data.requests",p:[62,3,1879]},{t:4,n:51,f:[{p:[77,7,2473],t:7,e:"span",f:["No Requests"]}],r:"data.requests"}]}," ",{p:[80,1,2529],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"tabs",p:[80,16,2544]}]},f:[{t:4,f:[{p:[82,5,2587],t:7,e:"tab",a:{name:[{t:2,r:"name",p:[82,16,2598]}]},f:[{t:4,f:[{p:[84,9,2641],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[84,28,2660]}],candystripe:0,right:0},f:[{p:[85,11,2700],t:7,e:"ui-button",a:{tooltip:[{t:2,r:"desc",p:[85,31,2720]}],"tooltip-side":"left",action:"add",params:['{"id": "',{t:2,r:"id",p:[85,90,2779]},'"}']},f:[{t:2,r:"cost",p:[85,100,2789]}," Credits"]}]}],n:52,r:"packs",p:[83,7,2616]}]}],n:52,r:"data.supplies",p:[81,3,2558]}]}]},e.exports=a.extend(r.exports)},{341:341}],375:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{tabs:function(){return Object.keys(this.get("data.supplies"))}}}}(r),r.exports.template={v:3,t:[" ",{p:[12,1,174],t:7,e:"ui-notice",f:[{t:4,f:[{p:[14,5,220],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[15,7,263],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[15,24,280]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[15,75,331]}]}]}],n:50,r:"data.siliconUser",p:[13,3,189]},{t:4,n:51,f:[{p:[18,5,422],t:7,e:"span",f:["Swipe a QM-Level ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[18,39,456]}," this interface."]}],r:"data.siliconUser"}]}," ",{t:4,f:[{p:[23,3,568],t:7,e:"ui-display",a:{title:"Express Cargo Console"},f:[{p:[25,5,618],t:7,e:"ui-section",a:{label:"Landing Location"},f:[{p:[26,7,663],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.usingBeacon"],s:'_0?null:"selected"'},p:[26,25,681]}],action:"LZCargo"},f:["Cargo Bay"]}," ",{p:[27,7,770],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.hasBeacon","data.usingBeacon"],s:'_0?_1?"selected":null:"disabled"'},p:[27,25,788]}],action:"LZBeacon"},f:[{t:2,r:"data.beaconzone",p:[27,116,879]}," (",{t:2,r:"data.beaconName",p:[27,137,900]},")"]}," ",{p:[28,7,940],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.canBuyBeacon"],s:'_0?null:"disabled"'},p:[28,25,958]}],action:"printBeacon"},f:[{t:2,r:"data.printMsg",p:[28,90,1023]}]}]}," ",{p:[31,5,1079],t:7,e:"ui-section",a:{label:"Credits"},f:[{p:[32,7,1115],t:7,e:"span",f:[{t:2,x:{r:["adata.points"],s:"Math.floor(_0)"},p:[32,13,1121]}]}]}," ",{p:[35,5,1183],t:7,e:"ui-section",a:{label:"Notice"},f:[{p:[36,7,1218],t:7,e:"span",f:[{t:2,r:"data.message",p:[36,13,1224]}]}]}]}," ",{p:[39,3,1287],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"tabs",p:[39,18,1302]}]},f:[{t:4,f:[{p:[41,7,1349],t:7,e:"tab",a:{name:[{t:2,r:"name",p:[41,18,1360]}]},f:[{t:4,f:[{p:[43,11,1407],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[43,30,1426]}],candystripe:0,right:0},f:[{p:[44,13,1468],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.canBeacon"],s:'_0?null:"disabled"'},p:[44,31,1486]}],tooltip:[{t:2,r:"desc",p:[44,80,1535]}],"tooltip-side":"left",action:"add",params:['{"id": "',{t:2,r:"id",p:[44,139,1594]},'"}']},f:[{t:2,r:"cost",p:[44,149,1604]}," Credits ",{t:2,r:"data.beaconError",p:[44,166,1621]}]}]}],n:52,r:"packs",p:[42,9,1380]}]}],n:52,r:"data.supplies",p:[40,5,1318]}]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[22,1,543]}]},e.exports=a.extend(r.exports)},{341:341}],376:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Cellular Emporium",button:0},f:[{p:[2,3,49],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.can_readapt"],s:'_0?null:"disabled"'},p:[2,36,82]}],action:"readapt"},f:["Readapt"]}," ",{p:[4,3,169],t:7,e:"ui-section",a:{label:"Genetic Points Remaining",right:0},f:[{t:2,r:"data.genetic_points_remaining",p:[5,5,226]}]}]}," ",{p:[8,1,293],t:7,e:"ui-display",f:[{t:4,f:[{p:[10,3,335],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[10,22,354]}],candystripe:0,right:0},f:[{p:[11,5,388],t:7,e:"span",f:[{t:2,r:"desc",p:[11,11,394]}]}," ",{p:[12,5,415],t:7,e:"span",f:[{t:2,r:"helptext",p:[12,11,421]}]}," ",{p:[13,5,446],t:7,e:"span",f:["Cost: ",{t:2,r:"dna_cost",p:[13,17,458]}]}," ",{p:[14,5,483],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["owned","can_purchase"],s:'_0?"selected":_1?null:"disabled"'},p:[15,14,508]}],action:"evolve",params:['{"name": "',{t:2,r:"name",p:[17,25,615]},'"}']},f:[{t:2,x:{r:["owned"],s:'_0?"Evolved":"Evolve"'},p:[18,7,635]}]}]}],n:52,r:"data.abilities",p:[9,1,307]},{t:4,f:[{p:[23,3,738],t:7,e:"span",a:{"class":"warning"},f:["No abilities available."]}],n:51,r:"data.abilities",p:[22,1,715]}]}]},e.exports=a.extend(r.exports)},{341:341}],377:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,5,17],t:7,e:"span",f:["To use this, simply spawn the atoms you want in one of the four Centcom Supplypod Bays. Items in the bay will then be launched inside your supplypod, one turf-full at a time! You can optionally use the following buttons to configure how the supplypod acts."]}]}," ",{p:[5,1,304],t:7,e:"ui-display",a:{title:"Centcom Pod Customization (to be used against helen weinstein)"},f:[{p:[6,4,392],t:7,e:"ui-section",a:{label:"Which supplypod bay will you use?"},f:[{p:[7,9,458],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.bay"],s:'_0==1?"selected":null'},p:[7,27,476]}],action:"bay1"},f:["Bay #1"]}," ",{p:[8,9,557],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.bay"],s:'_0==2?"selected":null'},p:[8,27,575]}],action:"bay2"},f:["Bay #2"]}," ",{p:[9,9,656],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.bay"],s:'_0==3?"selected":null'},p:[9,27,674]}],action:"bay3"},f:["Bay #3"]}," ",{p:[10,9,755],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.bay"],s:'_0==4?"selected":null'},p:[10,27,773]}],action:"bay4"},f:["Bay #4"]}]}," ",{p:[13,5,871],t:7,e:"ui-section",a:{label:"Useful teleport tools!"},f:[{p:[14,9,926],t:7,e:"ui-button",a:{action:"teleportCentcom"},f:["Teleport to Centcom's Supplypod Loading Bay"]}," ",{p:[15,9,1027],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.oldArea"],s:'_0?null:"disabled"'},p:[15,27,1045]}],action:"teleportBack"},f:["Teleport Back to ",{t:2,x:{r:["data.oldArea"],s:'_0?_0:"where you were"'},p:[15,103,1121]}]}]}," ",{p:[18,5,1210],t:7,e:"ui-section",a:{label:"Keep stuff after launching?"},f:[{p:[19,9,1268],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.launchClone"],s:'_0?"selected":null'},p:[19,27,1286]}],action:"launchClone","tooltip-side":"left",tooltip:"Choosing this will create a duplicate of the item to be launched in Centcom, allowing you to send one type of item multiple times. Either way, the atoms are forceMoved into the supplypod after it lands (but before it opens)."},f:["Clone and Launch"]}]}," ",{p:[23,5,1668],t:7,e:"ui-section",a:{label:"Launch all at once?"},f:[{p:[24,9,1718],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.launchChoice"],s:'_0==1?"selected":null'},p:[24,27,1736]}],action:"launchOrdered","tooltip-side":"left",tooltip:'Instead of launching everything in the bay at once, this will "scan" things (one turf-full at a time) in order, left to right and top to bottom. Refreshing will reset the "scanner" to the top-leftmost position.'},f:["Ordered"]}," ",{p:[26,9,2086],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.launchChoice"],s:'_0==2?"selected":null'},p:[26,27,2104]}],action:"launchRandom","tooltip-side":"left",tooltip:"Instead of launching everything in the bay at once, this will launch one random turf of items at a time."},f:["Random"]}]}," ",{p:[30,5,2362],t:7,e:"ui-section",a:{label:"Add an explosion?"},f:[{p:[31,9,2410],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.explosionChoice"],s:'_0==1?"selected":null'},p:[31,27,2428]}],action:"explosionCustom","tooltip-side":"left",tooltip:"This will cause an explosion of whatever size you like (including flame range) to occur as soon as the supplypod lands. Dont worry, supply-pods are explosion-proof!"},f:["Custom Size"]}," ",{p:[33,9,2740],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.explosionChoice"],s:'_0==2?"selected":null'},p:[33,27,2758]}],action:"explosionBus","tooltip-side":"left",tooltip:"This will cause a maxcap explosion (dependent on server config) to occur as soon as the supplypod lands. Dont worry, supply-pods are explosion-proof!"},f:["Adminbus"]}]}," ",{p:[37,5,3066],t:7,e:"ui-section",a:{label:"Extra damage?","(default":"None)"},f:[{p:[38,9,3127],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.damageChoice"],s:'_0==1?"selected":null'},p:[38,27,3145]}],action:"damageCustom","tooltip-side":"left",tooltip:"Anyone caught under the pod when it lands will be dealt this amount of brute damage. Sucks to be them!"},f:["Custom Damage"]}," ",{p:[40,9,3392],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.damageChoice"],s:'_0==2?"selected":null'},p:[40,27,3410]}],action:"damageGib","tooltip-side":"left",tooltip:"This will attempt to gib any mob caught under the pod when it lands, as well as dealing a nice 5000 brute damage. Ya know, just to be sure!"},f:["Gib"]}]}," ",{p:[44,5,3698],t:7,e:"ui-section",a:{label:"Extra effects?"},f:[{p:[45,9,3743],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectStun"],s:'_0?"selected":null'},p:[45,27,3761]}],action:"effectStun","tooltip-side":"left",tooltip:"Anyone who is on the turf when the supplypod is launched will be stunned until the supplypod lands. They cant get away that easy!"},f:["Stun"]}," ",{p:[47,9,4017],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectLimb"],s:'_0?"selected":null'},p:[47,27,4035]}],action:"effectLimb","tooltip-side":"left",tooltip:"This will cause anyone caught under the pod to lose a limb, excluding their head."},f:["Delimb"]}," ",{p:[49,9,4245],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectBluespace"],s:'_0?"selected":null'},p:[49,27,4263]}],action:"effectBluespace","tooltip-side":"left",tooltip:"Gives the supplypod an advanced Bluespace Recyling Device. After opening, the supplypod will be warped directly to the surface of a nearby NT-designated trash planet (/r/ss13)."},f:["Bluespace"]}," ",{p:[51,9,4581],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectStealth"],s:'_0?"selected":null'},p:[51,27,4599]}],action:"effectStealth","tooltip-side":"left",tooltip:'This hides the red target icon from appearing when you launch the supplypod. Combos well with the "Invisible" style. Sneak attack, go!'},f:["Stealth"]}," ",{p:[53,9,4869],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectQuiet"],s:'_0?"selected":null'},p:[53,27,4887]}],action:"effectQuiet","tooltip-side":"left",tooltip:"This will keep the supplypod from making any sounds, except for those specifically set by admins in the Sound section."},f:["Quiet Landing"]}," ",{p:[55,9,5143],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectReverse"],s:'_0?"selected":null'},p:[55,27,5161]}],action:"effectReverse","tooltip-side":"left",tooltip:"This pod will not send any items. Instead, after landing, the supplypod will close (similar to a normal closet closing), and then launch back to the right centcom bay to drop off any new contents."},f:["Reverse Mode"]}," ",{p:[57,9,5498],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectMissile"],s:'_0?"selected":null'},p:[57,27,5516]}],action:"effectMissile","tooltip-side":"left",tooltip:"This pod will not send any items. Instead, it will immediatley delete after landing (Similar visually to setting openDelay & departDelay to 0, but this looks nicer). Useful if you just wanna fuck some shit up. Combos well with the Missile style."},f:["Missile Mode"]}," ",{p:[59,9,5902],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectCircle"],s:'_0?"selected":null'},p:[59,27,5920]}],action:"effectCircle","tooltip-side":"left",tooltip:"This will make the supplypod come in from any angle. Im not sure why this feature exists, but here it is."},f:["Any Descent Angle"]}," ",{p:[61,9,6169],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectBurst"],s:'_0?"selected":null'},p:[61,27,6187]}],action:"effectBurst","tooltip-side":"left",tooltip:"This will make each click launch 5 supplypods inaccuratly around the target turf (a 3x3 area). Combos well with the Missle Mode if you dont want shit lying everywhere after."},f:["Machine Gun Mode"]}," ",{p:[63,9,6501],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectTarget"],s:'_0?"selected":null'},p:[63,27,6519]}],action:"effectTarget","tooltip-side":"left",tooltip:"This will make the supplypod target a specific atom, instead of the mouses position. Smiting does this automatically!"},f:["Specific Target"]}," ",{p:[65,9,6778],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectName"],s:'_0?"selected":null'},p:[65,27,6796]}],action:"effectName","tooltip-side":"left",tooltip:"Allows you to add a custom name and description."},f:["Custom Name/Desc"]}]}," ",{p:[69,5,7e3],t:7,e:"ui-section",a:{label:"Sound?"},f:[{p:[70,9,7037],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.landingSound"],s:'_0?"selected":null'},p:[70,27,7055]}],action:"landingSound","tooltip-side":"left",tooltip:"Choose a sound to play when the pod lands."},f:["Custom Landing Sound"]}," ",{p:[72,10,7245],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.openingSound"],s:'_0?"selected":null'},p:[72,28,7263]}],action:"openingSound","tooltip-side":"left",tooltip:"Choose a sound to play when the pod opens."},f:["Custom Opening Sound"]}," ",{p:[74,9,7452],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.leavingSound"],s:'_0?"selected":null'},p:[74,27,7470]}],action:"leavingSound","tooltip-side":"left",tooltip:"Choose a sound to play when the pod departs (whether that be delection in the case of a bluespace pod, or leaving for centcom for a reversing pod)."},f:["Custom Leaving Sound"]}," ",{p:[76,9,7764],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.soundVolume"],s:'_0?"selected":null'},p:[76,27,7782]}],action:"soundVolume","tooltip-side":"left",tooltip:"Choose the volume for the sound to play at. Default values are between 1 and 100, but hey, do whatever. Im a tooltip, not a cop."},f:["Admin Sound Volume"]}]}," ",{p:[80,5,8070],t:7,e:"ui-section",a:{label:"Delay timers?"},f:[{p:[81,9,8114],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.landingDelay"],s:'_0!=5?"selected":null'},p:[81,27,8132]}],action:"landingDelay","tooltip-side":"left",tooltip:"Choose the amount of time it takes for the supplypod to hit the station. By default this value is 0.5 seconds."},f:["Custom Landing Time"]}," ",{p:[83,10,8394],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.openingDelay"],s:'_0!=30?"selected":null'},p:[83,28,8412]}],action:"openingDelay","tooltip-side":"left",tooltip:"Choose the amount of time it takes for the supplypod to open after landing. Useful for giving whatevers inside the pod a nice dramatic entrance! By default this value is 3 seconds."},f:["Custom Opening Time"]}," ",{p:[85,9,8744],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.departureDelay"],s:'_0!=30?"selected":null'},p:[85,27,8762]}],action:"departureDelay","tooltip-side":"left",tooltip:"Choose the amount of time it takes for the supplypod to leave after landing. By default this value is 3 seconds."},f:["Custom Leaving Time"]}]}," ",{p:[89,5,9047],t:7,e:"ui-section",a:{label:"Style?"},f:[{p:[90,9,9084],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==1?"selected":null'},p:[90,27,9102]}],action:"styleStandard","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom color scheme to your standard Nanotrasen black and orange. Same color scheme as the normal station-used supplypods."},f:["Standard"]}," ",{p:[92,9,9405],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==2?"selected":null'},p:[92,27,9423]}],action:"styleBluespace","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom color scheme to the same as the stations upgraded blue-and-white Bluespace Supplypods."},f:["Advanced"]}," ",{p:[94,9,9698],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==4?"selected":null'},p:[94,27,9716]}],action:"styleSyndie","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom color scheme to a menacing black and blood-red. Great for sending meme-ops in style!"},f:["Syndicate"]}," ",{p:[96,9,9987],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==5?"selected":null'},p:[96,27,10005]}],action:"styleBlue","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom color scheme to a menacing black and dark blue. Great for sending deathsquads in style!"},f:["Deathsquad"]}," ",{p:[98,10,10279],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==6?"selected":null'},p:[98,28,10297]}],action:"styleCult","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom style to a blood and rune covered cult pod!"},f:["Cult Pod"]}," ",{p:[100,9,10524],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==7?"selected":null'},p:[100,27,10542]}],action:"styleMissile","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom style to a large missile. Combos well with a missile mode, so the missile doesnt stick around after landing."},f:["Missile"]}," ",{p:[102,9,10836],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==8?"selected":null'},p:[102,27,10854]}],action:"styleSMissile","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom style to a large blood-red missile. Combos well with missile mode, so the missile doesnt stick around after landing."},f:["Syndicate Missile"]}," ",{p:[104,9,11167],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==9?"selected":null'},p:[104,27,11185]}],action:"styleBox","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom style to a large, dark-green military supply crate."},f:["Supply Crate"]}," ",{p:[106,9,11423],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==10?"selected":null'},p:[106,27,11441]}],action:"styleHONK","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom color scheme to a colorful, clown inspired look."},f:["HONK"]}," ",{p:[108,9,11670],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==11?"selected":null'},p:[108,27,11688]}],action:"styleFruit","tooltip-side":"left",tooltip:"for when an orange is angry"},f:["Fruit~"]}," ",{p:[110,9,11851],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==12?"selected":null'},p:[110,27,11869]}],action:"styleInvisible","tooltip-side":"left",tooltip:'Makes the supplypod invisible! Useful for when you want to use this feature with a gateway or something. Combos well with the "Stealth" and "Quiet Landing" effects.'},f:["Invisible"]}," ",{p:[112,9,12175],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==13?"selected":null'},p:[112,27,12193]}],action:"styleGondola","tooltip-side":"left",tooltip:"this gondola can control when he wants to deliver his supplies if he has a smart enough mind, so offer up his body to ghosts for maximum enjoyment. (Make sure to turn off bluespace and set a arbitrarily high open-time if you do!)"},f:["Gondola (alive)"]}]}]}," ",{p:[117,1,12597],t:7,e:"ui-display",f:[{p:[118,5,12615],t:7,e:"ui-section",a:{label:[{t:2,r:"data.numObjects",p:[118,26,12636]}," turfs with launchable atoms found in Bay #",{t:2,r:"data.bay",p:[118,88,12698]}]},f:[{p:[119,9,12722],t:7,e:"ui-button",a:{action:"refresh","tooltip-side":"right",tooltip:"Manually refreshes the possible things to launch in the pod bay."},f:["Refresh Pod Bay"]}]}," ",{p:[123,5,12909],t:7,e:"ui-section",f:[{p:[124,9,12931],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.giveLauncher"],s:'_0?"selected":null'},p:[124,27,12949]}],action:"giveLauncher","tooltip-side":"right",tooltip:"THE CODEX ASTARTES CALLS THIS MANEUVER: STEEL RAIN!!"},f:["Enter Launch Mode"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],378:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Energy"},f:[{p:[3,5,64],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.maxEnergy",p:[3,26,85]}],value:[{t:2,r:"data.energy",p:[3,53,112]}]},f:[{t:2,x:{r:["adata.energy"],s:"Math.fixed(_0)"},p:[3,70,129]}," Units"]}]}]}," ",{p:[6,1,206],t:7,e:"ui-display",a:{title:"Saved Recipes",button:0},f:[{p:[7,3,251],t:7,e:"ui-section",f:[{p:[8,5,269],t:7,e:"ui-button",a:{icon:"plus",action:"add_recipe"},f:["Add Recipe"]}," ",{p:[9,2,337],t:7,e:"ui-button",a:{icon:"minus",action:"clear_recipes"},f:["Clear Recipes"]}," ",{t:4,f:[{p:[11,7,445],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense_recipe",params:['{"recipe": "',{t:2,r:"contents",p:[11,80,518]},'"}']},f:[{t:2,r:"recipe_name",p:[11,96,534]}]}],n:52,r:"data.recipes",p:[10,5,415]}]}]}," ",{p:{button:[{t:4,f:[{p:[18,7,719],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.amount","."],s:'_0==_1?"selected":null'},p:[18,37,749]}],action:"amount",params:['{"target": ',{t:2,r:".",p:[18,114,826]},"}"]},f:[{t:2,r:".",p:[18,122,834]}]}],n:52,r:"data.beakerTransferAmounts",p:[17,5,675]}]},t:7,e:"ui-display",a:{title:"Dispense",button:0},f:[" ",{p:[21,3,886],t:7,e:"ui-section",f:[{t:4,f:[{p:[23,7,936],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense",params:['{"reagent": "',{t:2,r:"id",p:[23,74,1003]},'"}']},f:[{t:2,r:"title",p:[23,84,1013]}]}],n:52,r:"data.chemicals",p:[22,5,904]}]}]}," ",{p:{button:[{t:4,f:[{p:[30,7,1190],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"amount": ',{t:2,r:".",p:[30,66,1249]},"}"]},f:[{t:2,r:".",p:[30,74,1257]}]}],n:52,r:"data.beakerTransferAmounts",p:[29,5,1146]}," ",{p:[32,5,1295],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[32,36,1326]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[34,3,1423],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[36,7,1493],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[36,13,1499]},"/",{t:2,r:"data.beakerMaxVolume",p:[36,55,1541]}," Units"]}," ",{p:[37,7,1586],t:7,e:"br"}," ",{t:4,f:[{p:[39,9,1639],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[39,52,1682]}," units of ",{t:2,r:"name",p:[39,87,1717]}]},{p:[39,102,1732],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[38,7,1599]},{t:4,n:51,f:[{p:[41,9,1763],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[35,5,1458]},{t:4,n:51,f:[{p:[44,7,1839],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],379:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[2,3,35],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,67],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isActive"],s:'_0?"power-off":"close"'},p:[3,22,84]}],style:[{t:2,x:{r:["data.isActive"],s:'_0?"selected":null'},p:[4,10,137]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,10,186]}],action:"power"},f:[{t:2,x:{r:["data.isActive"],s:'_0?"On":"Off"'},p:[6,18,249]}]}]}," ",{p:[8,3,314],t:7,e:"ui-section",a:{label:"Target"},f:[{p:[9,4,346],t:7,e:"ui-button",a:{icon:"pencil",action:"temperature",params:'{"target": "input"}'},f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[9,79,421]}," K"]}]}]}," ",{p:{button:[{p:[14,5,564],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[14,36,595]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[16,3,692],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[18,7,762],t:7,e:"span",f:["Temperature: ",{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[18,26,781]}," K"]}," ",{p:[19,7,831],t:7,e:"br"}," ",{t:4,f:[{p:[21,9,885],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[21,52,928]}," units of ",{t:2,r:"name",p:[21,87,963]}]},{p:[21,102,978],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[20,7,845]},{t:4,n:51,f:[{p:[23,9,1009],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[17,5,727]},{t:4,n:51,f:[{p:[26,7,1085],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],380:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:["\ufeff",{t:4,f:[" ",{p:[2,2,33],t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[{p:[3,3,71],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"Eject":"close"'},p:[3,20,88]}],style:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"selected":null'},p:[4,11,144]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,11,200]}],action:"eject"},f:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"Eject":"No beaker"'},p:[7,5,269]}]}," ",{p:[10,3,341],t:7,e:"ui-section",f:[{t:4,f:[{t:4,f:[{p:[13,6,427],t:7,e:"ui-section",a:{label:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[13,25,446]}," units of ",{t:2,r:"name",p:[13,60,481]}],nowrap:0},f:[{p:[14,7,506],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{p:[15,8,556],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[15,61,609]},'", "amount": 1}']},f:["1"]}," ",{p:[16,8,654],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[16,61,707]},'", "amount": 5}']},f:["5"]}," ",{p:[17,8,752],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[17,61,805]},'", "amount": 10}']},f:["10"]}," ",{p:[18,8,852],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[18,61,905]},'", "amount": 1000}']},f:["All"]}," ",{p:[19,8,955],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[19,61,1008]},'", "amount": -1}']},f:["Custom"]}," ",{p:[20,8,1059],t:7,e:"ui-button",a:{action:"analyze",params:['{"id": "',{t:2,r:"id",p:[20,52,1103]},'"}']},f:["Analyze"]}]}]}],n:52,r:"data.beakerContents",p:[12,5,391]},{t:4,n:51,f:[{p:[24,5,1185],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"data.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[11,4,358]},{t:4,n:51,f:[{p:[27,5,1256],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}," ",{p:[32,2,1344],t:7,e:"ui-display",a:{title:"Buffer"},f:[{p:[33,3,1375],t:7,e:"ui-button",a:{action:"toggleMode",state:[{t:2,x:{r:["data.mode"],s:'_0?null:"selected"'},p:[33,41,1413]}]},f:["Destroy"]}," ",{p:[34,3,1471],t:7,e:"ui-button",a:{action:"toggleMode",state:[{t:2,x:{r:["data.mode"],s:'_0?"selected":null'},p:[34,41,1509]}]},f:["Transfer to Beaker"]}," ",{p:[35,3,1578],t:7,e:"ui-section",f:[{t:4,f:[{p:[37,5,1630],t:7,e:"ui-section",a:{label:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[37,24,1649]}," units of ",{t:2,r:"name",p:[37,59,1684]}],nowrap:0},f:[{p:[38,6,1708],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{p:[39,7,1757],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[39,62,1812]},'", "amount": 1}']},f:["1"]}," ",{p:[40,7,1856],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[40,62,1911]},'", "amount": 5}']},f:["5"]}," ",{p:[41,7,1955],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[41,62,2010]},'", "amount": 10}']},f:["10"]}," ",{p:[42,7,2056],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[42,62,2111]},'", "amount": 1000}']},f:["All"]}," ",{p:[43,7,2160],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[43,62,2215]},'", "amount": -1}']},f:["Custom"]}," ",{p:[44,7,2265],t:7,e:"ui-button",a:{action:"analyze",params:['{"id": "',{t:2,r:"id",p:[44,51,2309]},'"}']},f:["Analyze"]}]}]}],n:52,r:"data.bufferContents",p:[36,4,1595]}]}]}," ",{t:4,f:[{p:[52,3,2445],t:7,e:"ui-display",a:{title:"Pills, Bottles and Patches"},f:[{t:4,f:[{p:[54,5,2529],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["id","data.chosenPillStyle"],s:'_0==_1?"selected":null'},p:[54,23,2547]}],action:"pillStyle",params:['{"id": "',{t:2,r:"id",p:[54,108,2632]},'"}']},f:[{t:3,r:"htmltag",p:[54,118,2642]}]}],n:52,r:"data.pillStyles",p:[53,4,2498]}," ",{p:[56,4,2686],t:7,e:"br"}," ",{t:4,f:[{p:[58,5,2732],t:7,e:"ui-button",a:{action:"ejectp",state:[{t:2,x:{r:["data.isPillBottleLoaded"],s:'_0?null:"disabled"'},p:[58,39,2766]}]},f:[{t:2,x:{r:["data.isPillBottleLoaded"],s:'_0?"Eject":"No Pill bottle loaded"'},p:[58,88,2815]}]}," ",{p:[59,5,2896],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.pillBotContent",p:[59,27,2918]},"/",{t:2,r:"data.pillBotMaxContent",p:[59,51,2942]}]}],n:50,r:"data.isPillBottleLoaded",p:[57,4,2695]},{t:4,n:51,f:[{p:[61,5,2994],t:7,e:"span",a:{"class":"average"},f:["No Pillbottle"]}],r:"data.isPillBottleLoaded"}," ",{p:[64,4,3055],t:7,e:"br"}," ",{p:[65,4,3065],t:7,e:"ui-button",a:{action:"createPill",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[65,63,3124]}]},f:["Create Pill (max 50µ)"]}," ",{p:[66,4,3208],t:7,e:"br"}," ",{p:[67,4,3218],t:7,e:"ui-button",a:{action:"createPill",params:'{"many": 1}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[67,63,3277]}]},f:["Create Multiple Pills"]}," ",{p:[68,4,3361],t:7,e:"br"}," ",{p:[69,4,3371],t:7,e:"br"}," ",{p:[70,4,3381],t:7,e:"ui-button",a:{action:"createPatch",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[70,64,3441]}]},f:["Create Patch (max 40µ)"]}," ",{p:[71,4,3526],t:7,e:"br"}," ",{p:[72,4,3536],t:7,e:"ui-button",a:{action:"createPatch",params:'{"many": 1}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[72,64,3596]}]},f:["Create Multiple Patches"]}," ",{p:[73,4,3682],t:7,e:"br"}," ",{p:[74,4,3692],t:7,e:"br"}," ",{p:[75,4,3702],t:7,e:"ui-button",a:{action:"createBottle",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[75,65,3763]}]},f:["Create Bottle (max 30µ)"]}," ",{p:[76,4,3849],t:7,e:"br"}," ",{p:[77,4,3859],t:7,e:"ui-button",a:{action:"createBottle",params:'{"many": 1}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[77,65,3920]}]},f:["Dispense Buffer to Bottles"]}," ",{p:[78,4,4009],t:7,e:"br"}," ",{p:[79,4,4019],t:7,e:"br"}," ",{p:[80,4,4029],t:7,e:"ui-button",a:{action:"createVial",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[80,63,4088]}]},f:["Create Hypo Vial (max 30µ)"]}," ",{p:[81,4,4177],t:7,e:"br"}," ",{p:[82,4,4187],t:7,e:"ui-button",a:{action:"createVial",params:'{"many": 1}', -state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[82,63,4246]}]},f:["Dispense Buffer to Hypo vials"]}," ",{p:[83,4,4339],t:7,e:"br"}]}],n:50,x:{r:["data.condi"],s:"!_0"},p:[51,2,2422]},{t:4,n:51,f:[{p:[88,3,4382],t:7,e:"ui-display",a:{title:"Condiments bottles and packs"},f:[{p:[89,4,4437],t:7,e:"ui-button",a:{action:"createPill",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[89,63,4496]}]},f:["Create Pack (max 10µ)"]}," ",{p:[90,4,4580],t:7,e:"br"}," ",{p:[91,4,4590],t:7,e:"br"}," ",{p:[92,4,4600],t:7,e:"ui-button",a:{action:"createBottle",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[92,65,4661]}]},f:["Create Bottle (max 50µ)"]}]}],x:{r:["data.condi"],s:"!_0"}}],n:50,x:{r:["data.screen"],s:'_0=="home"'},p:[1,2,1]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.screen"],s:'_0=="analyze"'},f:[{p:[96,2,4809],t:7,e:"ui-display",a:{title:[{t:2,r:"data.analyzeVars.name",p:[96,20,4827]}]},f:[{p:[97,3,4858],t:7,e:"span",a:{"class":"highlight"},f:["Description:"]}," ",{p:[98,3,4906],t:7,e:"span",a:{"class":"content",style:"float:center"},f:[{t:2,r:"data.analyzeVars.description",p:[98,46,4949]}]}," ",{p:[99,3,4992],t:7,e:"br"}," ",{p:[100,3,5001],t:7,e:"span",a:{"class":"highlight"},f:["Color:"]}," ",{p:[101,3,5043],t:7,e:"span",a:{style:["color: ",{t:2,r:"data.analyzeVars.color",p:[101,23,5063]},"; background-color: ",{t:2,r:"data.analyzeVars.color",p:[101,69,5109]}]},f:[{t:2,r:"data.analyzeVars.color",p:[101,97,5137]}]}," ",{p:[102,3,5174],t:7,e:"br"}," ",{p:[103,3,5183],t:7,e:"span",a:{"class":"highlight"},f:["State:"]}," ",{p:[104,3,5225],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.state",p:[104,25,5247]}]}," ",{p:[105,3,5284],t:7,e:"br"}," ",{p:[106,3,5293],t:7,e:"span",a:{"class":"highlight"},f:["Metabolization Rate:"]}," ",{p:[107,3,5349],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.metaRate",p:[107,25,5371]},"µ/minute"]}," ",{p:[108,3,5419],t:7,e:"br"}," ",{p:[109,3,5428],t:7,e:"span",a:{"class":"highlight"},f:["Overdose Threshold:"]}," ",{p:[110,3,5483],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.overD",p:[110,25,5505]}]}," ",{p:[111,3,5542],t:7,e:"br"}," ",{p:[112,3,5551],t:7,e:"span",a:{"class":"highlight"},f:["Addiction Threshold:"]}," ",{p:[113,3,5607],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.addicD",p:[113,25,5629]}]}," ",{p:[114,3,5667],t:7,e:"br"}," ",{p:[115,3,5676],t:7,e:"br"}," ",{p:[116,3,5685],t:7,e:"ui-button",a:{action:"goScreen",params:'{"screen": "home"}'},f:["Back"]}]}]}],x:{r:["data.screen"],s:'_0=="home"'}}]},e.exports=a.extend(r.exports)},{341:341}],381:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Recipient Contents"},f:[{p:[2,2,42],t:7,e:"ui-section",f:[{p:[3,3,58],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[3,34,89]}],action:"ejectBeaker"},f:["Eject"]}," ",{p:[4,3,176],t:7,e:"ui-button",a:{icon:"circle",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[4,35,208]}],action:"input"},f:["Input"]}," ",{p:[5,3,289],t:7,e:"ui-button",a:{icon:"circle",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,35,321]}],action:"amount"},f:[{t:2,r:"data.amount",p:[5,96,382]},"U"]}," ",{p:[6,3,414],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"disabled":null'},p:[6,33,444]}],action:"makecup"},f:["Create Beaker"]}]}]}," ",{p:[9,1,564],t:7,e:"ui-display",a:{title:"Recipient"},f:[{p:[10,2,597],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[12,4,662],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[12,10,668]},"/",{t:2,r:"data.beakerMaxVolume",p:[12,52,710]}," Units"]}," ",{t:4,f:[{p:[14,5,788],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[14,48,831]}," units of ",{t:2,r:"name",p:[14,83,866]}]},{p:[14,98,881],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[13,4,752]},{t:4,n:51,f:[{p:[16,5,905],t:7,e:"span",a:{"class":"bad"},f:["Recipient Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[11,3,630]},{t:4,n:51,f:[{p:[19,4,976],t:7,e:"span",a:{"class":"average"},f:["No Recipient"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],382:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-button",a:{action:"toggle"},f:[{t:2,x:{r:["data.recollection"],s:'_0?"Recital":"Recollection"'},p:[2,30,43]}]}]}," ",{t:4,f:[{p:[5,3,149],t:7,e:"ui-display",f:[{t:3,r:"data.rec_text",p:[6,3,165]}," ",{t:4,f:[{p:[8,4,231],t:7,e:"br"},{p:[8,8,235],t:7,e:"ui-button",a:{action:"rec_category",params:['{"category": "',{t:2,r:"name",p:[8,63,290]},'"}']},f:[{t:3,r:"name",p:[8,75,302]}," - ",{t:3,r:"desc",p:[8,88,315]}]}],n:52,r:"data.recollection_categories",p:[7,3,188]}," ",{t:3,r:"data.rec_section",p:[10,3,354]}," ",{t:3,r:"data.rec_binds",p:[11,3,380]}]}],n:50,r:"data.recollection",p:[4,1,120]},{t:4,n:51,f:[{p:[14,2,431],t:7,e:"ui-display",a:{title:"Power",button:0},f:[{p:[15,4,469],t:7,e:"ui-section",f:[{t:3,r:"data.power",p:[16,6,488]}]}]}," ",{p:[19,2,541],t:7,e:"ui-display",f:[{p:[20,3,557],t:7,e:"ui-section",f:[{p:[21,4,574],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.selected"],s:'_0=="Driver"?"selected":null'},p:[21,22,592]}],action:"select",params:'{"category": "Driver"}'},f:["Driver"]}," ",{p:[22,4,715],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.selected"],s:'_0=="Script"?"selected":null'},p:[22,22,733]}],action:"select",params:'{"category": "Script"}'},f:["Scripts"]}," ",{p:[23,4,857],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.selected"],s:'_0=="Application"?"selected":null'},p:[23,22,875]}],action:"select",params:'{"category": "Application"}'},f:["Applications"]}," ",{p:[24,4,1014],t:7,e:"br"},{t:3,r:"data.tier_info",p:[24,8,1018]}]}," ",{p:[26,3,1059],t:7,e:"ui-section",f:[{t:3,r:"data.scripturecolors",p:[27,4,1076]}]},{p:[28,16,1119],t:7,e:"hr"}," ",{p:[29,3,1127],t:7,e:"ui-section",f:[{t:4,f:[{p:[31,4,1172],t:7,e:"div",f:[{p:[31,9,1177],t:7,e:"ui-button",a:{tooltip:[{t:3,r:"tip",p:[31,29,1197]}],"tooltip-side":"right",action:"recite",params:['{"category": "',{t:2,r:"type",p:[31,99,1267]},'"}']},f:["Recite ",{t:3,r:"required",p:[31,118,1286]}]}," ",{t:4,f:[{t:4,f:[{p:[34,6,1362],t:7,e:"ui-button",a:{action:"bind",params:['{"category": "',{t:2,r:"type",p:[34,53,1409]},'"}']},f:["Unbind ",{t:3,r:"bound",p:[34,72,1428]}]}],n:50,r:"bound",p:[33,5,1342]},{t:4,n:51,f:[{p:[36,6,1472],t:7,e:"ui-button",a:{action:"bind",params:['{"category": "',{t:2,r:"type",p:[36,53,1519]},'"}']},f:["Quickbind"]}],r:"bound"}],n:50,r:"quickbind",p:[32,6,1319]}," ",{t:3,r:"name",p:[39,6,1586]}," ",{t:3,r:"descname",p:[39,17,1597]}," ",{t:3,r:"invokers",p:[39,32,1612]}]}],n:52,r:"data.scripture",p:[30,3,1143]}]}]}],r:"data.recollection"}]},e.exports=a.extend(r.exports)},{341:341}],383:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Codex Gigas"},f:[{p:[2,2,35],t:7,e:"ui-section",f:[{t:2,r:"data.name",p:[3,3,51]}]}," ",{p:[5,5,86],t:7,e:"ui-section",a:{label:"Prefix"},f:[{p:[6,3,117],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[6,22,136]}],action:"Dark "},f:["Dark"]}," ",{p:[7,3,221],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[7,22,240]}],action:"Hellish "},f:["Hellish"]}," ",{p:[8,3,331],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[8,22,350]}],action:"Fallen "},f:["Fallen"]}," ",{p:[9,3,439],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[9,22,458]}],action:"Fiery "},f:["Fiery"]}," ",{p:[10,3,545],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[10,22,564]}],action:"Sinful "},f:["Sinful"]}," ",{p:[11,3,653],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[11,22,672]}],action:"Blood "},f:["Blood"]}," ",{p:[12,3,759],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[12,22,778]}],action:"Fluffy "},f:["Fluffy"]}]}," ",{p:[14,5,888],t:7,e:"ui-section",a:{label:"Title"},f:[{p:[15,3,918],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[15,22,937]}],action:"Lord "},f:["Lord"]}," ",{p:[16,3,1022],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[16,22,1041]}],action:"Prelate "},f:["Prelate"]}," ",{p:[17,3,1132],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[17,22,1151]}],action:"Count "},f:["Count"]}," ",{p:[18,3,1238],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[18,22,1257]}],action:"Viscount "},f:["Viscount"]}," ",{p:[19,3,1350],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[19,22,1369]}],action:"Vizier "},f:["Vizier"]}," ",{p:[20,3,1458],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[20,22,1477]}],action:"Elder "},f:["Elder"]}," ",{p:[21,3,1564],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[21,22,1583]}],action:"Adept "},f:["Adept"]}]}," ",{p:[23,5,1691],t:7,e:"ui-section",a:{label:"Name"},f:[{p:[24,3,1720],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[24,22,1739]}],action:"hal"},f:["hal"]}," ",{p:[25,3,1821],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[25,22,1840]}],action:"ve"},f:["ve"]}," ",{p:[26,3,1920],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[26,22,1939]}],action:"odr"},f:["odr"]}," ",{p:[27,3,2021],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[27,22,2040]}],action:"neit"},f:["neit"]}," ",{p:[28,3,2124],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[28,22,2143]}],action:"ci"},f:["ci"]}," ",{p:[29,3,2223],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[29,22,2242]}],action:"quon"},f:["quon"]}," ",{p:[30,3,2326],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[30,22,2345]}],action:"mya"},f:["mya"]}," ",{p:[31,3,2427],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[31,22,2446]}],action:"folth"},f:["folth"]}," ",{p:[32,3,2532],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[32,22,2551]}],action:"wren"},f:["wren"]}," ",{p:[33,3,2635],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[33,22,2654]}],action:"geyr"},f:["geyr"]}," ",{p:[34,3,2738],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[34,22,2757]}],action:"hil"},f:["hil"]}," ",{p:[35,3,2839],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[35,22,2858]}],action:"niet"},f:["niet"]}," ",{p:[36,3,2942],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[36,22,2961]}],action:"twou"},f:["twou"]}," ",{p:[37,3,3045],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[37,22,3064]}],action:"phi"},f:["phi"]}," ",{p:[38,3,3146],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[38,22,3165]}],action:"coa"},f:["coa"]}]}," ",{p:[40,5,3268],t:7,e:"ui-section",a:{label:"suffix"},f:[{p:[41,3,3299],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[41,22,3318]}],action:" the Red"},f:["the Red"]}," ",{p:[42,3,3409],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[42,22,3428]}],action:" the Soulless"},f:["the Soulless"]}," ",{p:[43,3,3529],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[43,22,3548]}],action:" the Master"},f:["the Master"]}," ",{p:[44,3,3645],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[44,22,3664]}],action:", the Lord of all things"},f:["the Lord of all things"]}," ",{p:[45,3,3786],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[45,22,3805]}],action:", Jr."},f:["jr"]}]}," ",{p:[47,5,3909],t:7,e:"ui-section",a:{label:"submit"},f:[{p:[48,3,3941],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0>=4?null:"disabled"'},p:[48,21,3959]}],action:"search"},f:["search"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],384:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[2,1,2],t:7,e:"ui-button",a:{icon:"circle",action:"clean_order"},f:["Clear Order"]},{p:[2,70,71],t:7,e:"br"},{p:[2,74,75],t:7,e:"br"}," ",{p:[3,1,81],t:7,e:"i",f:["Your new computer device you always dreamed of is just four steps away..."]},{p:[3,81,161],t:7,e:"hr"}," ",{t:4,f:[" ",{p:[5,1,223],t:7,e:"div",a:{"class":"item"},f:[{p:[6,2,244],t:7,e:"h2",f:["Step 1: Select your device type"]}," ",{p:[7,2,287],t:7,e:"ui-button",a:{icon:"calc",action:"pick_device",params:'{"pick" : "1"}'},f:["Laptop"]}," ",{p:[8,2,377],t:7,e:"ui-button",a:{icon:"calc",action:"pick_device",params:'{"pick" : "2"}'},f:["LTablet"]}]}],n:50,x:{r:["data.state"],s:"_0==0"},p:[4,1,167]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.state"],s:"_0==1"},f:[{p:[11,1,502],t:7,e:"div",a:{"class":"item"},f:[{p:[12,2,523],t:7,e:"h2",f:["Step 2: Personalise your device"]}," ",{p:[13,2,566],t:7,e:"table",f:[{p:[14,3,577],t:7,e:"tr",f:[{p:[15,4,586],t:7,e:"td",f:[{p:[15,8,590],t:7,e:"b",f:["Current Price:"]}]},{p:[16,4,616],t:7,e:"td",f:[{t:2,r:"data.totalprice",p:[16,8,620]},"C"]}]}," ",{p:[18,3,653],t:7,e:"tr",f:[{p:[19,4,663],t:7,e:"td",f:[{p:[19,8,667],t:7,e:"b",f:["Battery:"]}]},{p:[20,4,687],t:7,e:"td",f:[{p:[20,8,691],t:7,e:"ui-button",a:{action:"hw_battery",params:'{"battery" : "1"}',state:[{t:2,x:{r:["data.hw_battery"],s:'_0==1?"selected":null'},p:[20,73,756]}]},f:["Standard"]}]},{p:[21,4,827],t:7,e:"td",f:[{p:[21,8,831],t:7,e:"ui-button",a:{action:"hw_battery",params:'{"battery" : "2"}',state:[{t:2,x:{r:["data.hw_battery"],s:'_0==2?"selected":null'},p:[21,73,896]}]},f:["Upgraded"]}]},{p:[22,4,967],t:7,e:"td",f:[{p:[22,8,971],t:7,e:"ui-button",a:{action:"hw_battery",params:'{"battery" : "3"}',state:[{t:2,x:{r:["data.hw_battery"],s:'_0==3?"selected":null'},p:[22,73,1036]}]},f:["Advanced"]}]}]}," ",{p:[24,3,1115],t:7,e:"tr",f:[{p:[25,4,1124],t:7,e:"td",f:[{p:[25,8,1128],t:7,e:"b",f:["Hard Drive:"]}]},{p:[26,4,1151],t:7,e:"td",f:[{p:[26,8,1155],t:7,e:"ui-button",a:{action:"hw_disk",params:'{"disk" : "1"}',state:[{t:2,x:{r:["data.hw_disk"],s:'_0==1?"selected":null'},p:[26,67,1214]}]},f:["Standard"]}]},{p:[27,4,1282],t:7,e:"td",f:[{p:[27,8,1286],t:7,e:"ui-button",a:{action:"hw_disk",params:'{"disk" : "2"}',state:[{t:2,x:{r:["data.hw_disk"],s:'_0==2?"selected":null'},p:[27,67,1345]}]},f:["Upgraded"]}]},{p:[28,4,1413],t:7,e:"td",f:[{p:[28,8,1417],t:7,e:"ui-button",a:{action:"hw_disk",params:'{"disk" : "3"}',state:[{t:2,x:{r:["data.hw_disk"],s:'_0==3?"selected":null'},p:[28,67,1476]}]},f:["Advanced"]}]}]}," ",{p:[30,3,1552],t:7,e:"tr",f:[{p:[31,4,1561],t:7,e:"td",f:[{p:[31,8,1565],t:7,e:"b",f:["Network Card:"]}]},{p:[32,4,1590],t:7,e:"td",f:[{p:[32,8,1594],t:7,e:"ui-button",a:{action:"hw_netcard",params:'{"netcard" : "0"}',state:[{t:2,x:{r:["data.hw_netcard"],s:'_0==0?"selected":null'},p:[32,73,1659]}]},f:["None"]}]},{p:[33,4,1726],t:7,e:"td",f:[{p:[33,8,1730],t:7,e:"ui-button",a:{action:"hw_netcard",params:'{"netcard" : "1"}',state:[{t:2,x:{r:["data.hw_netcard"],s:'_0==1?"selected":null'},p:[33,73,1795]}]},f:["Standard"]}]},{p:[34,4,1866],t:7,e:"td",f:[{p:[34,8,1870],t:7,e:"ui-button",a:{action:"hw_netcard",params:'{"netcard" : "2"}',state:[{t:2,x:{r:["data.hw_netcard"],s:'_0==2?"selected":null'},p:[34,73,1935]}]},f:["Advanced"]}]}]}," ",{p:[36,3,2014],t:7,e:"tr",f:[{p:[37,4,2023],t:7,e:"td",f:[{p:[37,8,2027],t:7,e:"b",f:["Nano Printer:"]}]},{p:[38,4,2052],t:7,e:"td",f:[{p:[38,8,2056],t:7,e:"ui-button",a:{action:"hw_nanoprint",params:'{"print" : "0"}',state:[{t:2,x:{r:["data.hw_nanoprint"],s:'_0==0?"selected":null'},p:[38,73,2121]}]},f:["None"]}]},{p:[39,4,2190],t:7,e:"td",f:[{p:[39,8,2194],t:7,e:"ui-button",a:{action:"hw_nanoprint",params:'{"print" : "1"}',state:[{t:2,x:{r:["data.hw_nanoprint"],s:'_0==1?"selected":null'},p:[39,73,2259]}]},f:["Standard"]}]}]}," ",{p:[41,3,2340],t:7,e:"tr",f:[{p:[42,4,2349],t:7,e:"td",f:[{p:[42,8,2353],t:7,e:"b",f:["Card Reader:"]}]},{p:[43,4,2377],t:7,e:"td",f:[{p:[43,8,2381],t:7,e:"ui-button",a:{action:"hw_card",params:'{"card" : "0"}',state:[{t:2,x:{r:["data.hw_card"],s:'_0==0?"selected":null'},p:[43,67,2440]}]},f:["None"]}]},{p:[44,4,2504],t:7,e:"td",f:[{p:[44,8,2508],t:7,e:"ui-button",a:{action:"hw_card",params:'{"card" : "1"}',state:[{t:2,x:{r:["data.hw_card"],s:'_0==1?"selected":null'},p:[44,67,2567]}]},f:["Standard"]}]}]}]}," ",{t:4,f:[" ",{p:[49,4,2706],t:7,e:"table",f:[{p:[50,5,2719],t:7,e:"tr",f:[{p:[51,6,2730],t:7,e:"td",f:[{p:[51,10,2734],t:7,e:"b",f:["Processor Unit:"]}]},{p:[52,6,2763],t:7,e:"td",f:[{p:[52,10,2767],t:7,e:"ui-button",a:{action:"hw_cpu",params:'{"cpu" : "1"}',state:[{t:2,x:{r:["data.hw_cpu"],s:'_0==1?"selected":null'},p:[52,67,2824]}]},f:["Standard"]}]},{p:[53,6,2893],t:7,e:"td",f:[{p:[53,10,2897],t:7,e:"ui-button",a:{action:"hw_cpu",params:'{"cpu" : "2"}',state:[{t:2,x:{r:["data.hw_cpu"],s:'_0==2?"selected":null'},p:[53,67,2954]}]},f:["Advanced"]}]}]}," ",{p:[55,5,3033],t:7,e:"tr",f:[{p:[56,6,3044],t:7,e:"td",f:[{p:[56,10,3048],t:7,e:"b",f:["Tesla Relay:"]}]},{p:[57,6,3074],t:7,e:"td",f:[{p:[57,10,3078],t:7,e:"ui-button",a:{action:"hw_tesla",params:'{"tesla" : "0"}',state:[{t:2,x:{r:["data.hw_tesla"],s:'_0==0?"selected":null'},p:[57,71,3139]}]},f:["None"]}]},{p:[58,6,3206],t:7,e:"td",f:[{p:[58,10,3210],t:7,e:"ui-button",a:{action:"hw_tesla",params:'{"tesla" : "1"}',state:[{t:2,x:{r:["data.hw_tesla"],s:'_0==1?"selected":null'},p:[58,71,3271]}]},f:["Standard"]}]}]}]}],n:50,x:{r:["data.devtype"],s:"_0!=2"},p:[48,3,2659]}," ",{p:[62,3,3374],t:7,e:"table",f:[{p:[63,4,3386],t:7,e:"tr",f:[{p:[64,5,3396],t:7,e:"td",f:[{p:[64,9,3400],t:7,e:"b",f:["Confirm Order:"]}]},{p:[65,5,3427],t:7,e:"td",f:[{p:[65,9,3431],t:7,e:"ui-button",a:{action:"confirm_order"},f:["CONFIRM"]}]}]}]}," ",{p:[69,2,3512],t:7,e:"hr"}," ",{p:[70,2,3519],t:7,e:"b",f:["Battery"]}," allows your device to operate without external utility power source. Advanced batteries increase battery life.",{p:[70,127,3644],t:7,e:"br"}," ",{p:[71,2,3651],t:7,e:"b",f:["Hard Drive"]}," stores file on your device. Advanced drives can store more files, but use more power, shortening battery life.",{p:[71,130,3779],t:7,e:"br"}," ",{p:[72,2,3786],t:7,e:"b",f:["Network Card"]}," allows your device to wirelessly connect to stationwide NTNet network. Basic cards are limited to on-station use, while advanced cards can operate anywhere near the station, which includes the asteroid outposts.",{p:[72,233,4017],t:7,e:"br"}," ",{p:[73,2,4024],t:7,e:"b",f:["Processor Unit"]}," is critical for your device's functionality. It allows you to run programs from your hard drive. Advanced CPUs use more power, but allow you to run more programs on background at once.",{p:[73,208,4230],t:7,e:"br"}," ",{p:[74,2,4237],t:7,e:"b",f:["Tesla Relay"]}," is an advanced wireless power relay that allows your device to connect to nearby area power controller to provide alternative power source. This component is currently unavailable on tablet computers due to size restrictions.",{p:[74,246,4481],t:7,e:"br"}," ",{p:[75,2,4488],t:7,e:"b",f:["Nano Printer"]}," is device that allows for various paperwork manipulations, such as, scanning of documents or printing new ones. This device was certified EcoFriendlyPlus and is capable of recycling existing paper for printing purposes.",{p:[75,241,4727],t:7,e:"br"}," ",{p:[76,2,4734],t:7,e:"b",f:["Card Reader"]}," adds a slot that allows you to manipulate RFID cards. Please note that this is not necessary to allow the device to read your identification, it is just necessary to manipulate other cards."]}]},{t:4,n:50,x:{r:["data.state"],s:"(!(_0==1))&&(_0==2)"},f:[" ",{p:[79,2,4981],t:7,e:"h2",f:["Step 3: Payment"]}," ",{p:[80,2,5008],t:7,e:"b",f:["Your device is now ready for fabrication.."]},{p:[80,51,5057],t:7,e:"br"}," ",{p:[81,2,5064],t:7,e:"i",f:["Please ensure the required amount of credits are in the machine, then press purchase."]},{p:[81,94,5156],t:7,e:"br"}," ",{p:[82,2,5163],t:7,e:"i",f:["Current credits: ",{p:[82,22,5183],t:7,e:"b",f:[{t:2,r:"data.credits",p:[82,25,5186]},"C"]}]},{p:[82,50,5211],t:7,e:"br"}," ",{p:[83,2,5218],t:7,e:"i",f:["Total price: ",{p:[83,18,5234],t:7,e:"b",f:[{t:2,r:"data.totalprice",p:[83,21,5237]},"C"]}]},{p:[83,49,5265],t:7,e:"br"},{p:[83,53,5269],t:7,e:"br"}," ",{p:[84,2,5276],t:7,e:"ui-button",a:{action:"purchase",state:[{t:2,x:{r:["data.credits","data.totalprice"],s:'_0>=_1?null:"disabled"'},p:[84,38,5312]}]},f:["PURCHASE"]}]},{t:4,n:50,x:{r:["data.state"],s:"(!(_0==1))&&((!(_0==2))&&(_0==3))"},f:[" ",{p:[87,2,5423],t:7,e:"h2",f:["Step 4: Thank you for your purchase"]},{p:[87,46,5467],t:7,e:"br"}," ",{p:[88,2,5474],t:7,e:"b",f:["Should you experience any issues with your new device, contact your local network admin for assistance."]}]}],x:{r:["data.state"],s:"_0==0"}}]},e.exports=a.extend(r.exports)},{341:341}],385:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,1,22],t:7,e:"ui-display",f:[{p:[3,2,37],t:7,e:"ui-section",a:{label:"Cap"},f:[{p:[4,3,65],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.is_capped"],s:'_0?"power-off":"close"'},p:[4,20,82]}],style:[{t:2,x:{r:["data.is_capped"],s:'_0?null:"selected"'},p:[4,71,133]}],action:"toggle_cap"},f:[{t:2,x:{r:["data.is_capped"],s:'_0?"On":"Off"'},p:[6,4,202]}]}]}]}],n:50,r:"data.has_cap",p:[1,1,0]},{p:[10,1,288],t:7,e:"ui-display",f:[{t:4,f:[{p:[14,2,419],t:7,e:"ui-section",f:[{p:[15,3,435],t:7,e:"ui-button",a:{action:"select_colour"},f:["Select New Colour"]}]}],n:50,r:"data.can_change_colour",p:[13,1,386]}]}," ",{p:[19,1,540],t:7,e:"ui-display",a:{title:"Stencil"},f:[{t:4,f:[{p:[21,2,599],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[21,21,618]}]},f:[{t:4,f:[{p:[23,7,655],t:7,e:"ui-button",a:{action:"select_stencil",params:['{"item":"',{t:2,r:"item",p:[23,59,707]},'"}'],style:[{t:2,x:{r:["item","data.selected_stencil"],s:'_0==_1?"selected":null'},p:[24,12,731]}]},f:[{t:2,r:"item",p:[25,4,791]}]}],n:52,r:"items",p:[22,3,632]}]}],n:52,r:"data.drawables",p:[20,3,572]}]}," ",{p:[31,1,874],t:7,e:"ui-display",a:{title:"Text Mode"},f:[{p:[32,2,907],t:7,e:"ui-section",a:{label:"Current Buffer"},f:[{t:2,r:"text_buffer",p:[32,37,942]}]}," ",{p:[34,2,976],t:7,e:"ui-section",f:[{p:[34,14,988],t:7,e:"ui-button",a:{action:"enter_text"},f:["New Text"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],386:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{isHead:function(t){return t%10==0},dept_class:function(t){return 0==t?"dept-cap":t>=10&&20>t?"dept-sec":t>=20&&30>t?"dept-med":t>=30&&40>t?"dept-sci":t>=40&&50>t?"dept-eng":t>=50&&60>t?"dept-cargo":t>=200&&230>t?"dept-cent":"dept-other"},health_state:function(t,e,n,a){var r=t+e+n+a;return 0>=r?"health-5":25>=r?"health-4":50>=r?"health-3":75>=r?"health-2":"health-0"}}}}(r),r.exports.css=" .health {\r\n width: 16px;\r\n height: 16px;\r\n background-color: #FFF;\r\n border: 1px solid #434343;\r\n position: relative;\r\n top: 2px;\r\n display: inline-block;\r\n }\r\n .health-5 { background-color: #17d568; }\r\n .health-4 { background-color: #2ecc71; }\r\n .health-3 { background-color: #e67e22; }\r\n .health-2 { background-color: #ed5100; }\r\n .health-1 { background-color: #e74c3c; }\r\n .health-0 { background-color: #ed2814; }\r\n\r\n .dept-cap {color : #C06616;}\r\n .dept-sec {color : #E74C3C;}\r\n .dept-med {color : #3498DB;}\r\n .dept-sci {color : #9B59B6;}\r\n .dept-eng {color : #F1C40F;}\r\n .dept-cargo {color : #F39C12;}\r\n .dept-cent {color : #00C100;}\r\n .dept-other {color: #C38312;}\r\n\r\n .oxy { color : #3498db; }\r\n .toxin { color : #2ecc71; }\r\n .burn { color : #e67e22; }\r\n .brute { color : #e74c3c; }\r\n\r\n table.crew{\r\n border-collapse: collapse;\r\n }\r\n\r\n table.crew td {\r\n padding : 0px 10px;\r\n }",r.exports.template={v:3,t:[" ",{p:[27,1,1030],t:7,e:"ui-display",f:[{p:[28,2,1045],t:7,e:"ui-section",f:[{p:[29,3,1061],t:7,e:"table",a:{"class":"crew"},f:[{p:[30,3,1085],t:7,e:"thead",f:[{p:[31,3,1096],t:7,e:"tr",f:[{p:[32,4,1105],t:7,e:"th",f:["Name"]}," ",{p:[33,4,1123],t:7,e:"th",f:["Status"]}," ",{p:[34,4,1143],t:7,e:"th",f:["Vitals"]}," ",{p:[35,4,1163],t:7,e:"th",f:["Position"]}," ",{t:4,f:[{p:[37,5,1216],t:7,e:"th",f:["Tracking"]}],n:50,r:"data.link_allowed",p:[36,4,1185]}]}]}," ",{p:[41,3,1270],t:7,e:"tbody",f:[{t:4,f:[{p:[43,4,1308],t:7,e:"tr",f:[{p:[44,5,1318],t:7,e:"td",f:[{p:[45,6,1329],t:7,e:"span",a:{"class":[{t:2,x:{r:["isHead","ijob"],s:'_0(_1)?"bold ":""'},p:[45,19,1342]},{t:2,x:{r:["dept_class","ijob"],s:"_0(_1)"},p:[45,49,1372]}]},f:[{t:2,r:"name",p:[46,7,1402]}," (",{t:2,r:"assignment",p:[46,17,1412]},") ",{p:[47,6,1434],t:7,e:"span",f:[]}]}]}," ",{p:[49,5,1457],t:7,e:"td",f:[{t:4,f:[{p:[51,7,1498],t:7,e:"span",a:{"class":["health ",{t:2,x:{r:["health_state","oxydam","toxdam","burndam","brutedam"],s:"_0(_1,_2,_3,_4)"},p:[51,27,1518]}]}}],n:50,x:{r:["oxydam"],s:"_0!=null"},p:[50,6,1468]},{t:4,n:51,f:[{t:4,f:[{p:[54,8,1626],t:7,e:"span",a:{"class":"health health-5"}}],n:50,r:"life_status",p:[53,7,1598]},{t:4,n:51,f:[{p:[56,8,1688],t:7,e:"span",a:{"class":"health health-0"}}],r:"life_status"}],x:{r:["oxydam"],s:"_0!=null"}}]}," ",{p:[60,5,1771],t:7,e:"td",f:[{t:4,f:[{p:[62,7,1812],t:7,e:"span",f:["( ",{p:[64,8,1836],t:7,e:"span",a:{"class":"oxy"},f:[{t:2,r:"oxydam",p:[64,26,1854]}]}," / ",{p:[66,8,1890],t:7,e:"span",a:{"class":"toxin"},f:[{t:2,r:"toxdam",p:[66,28,1910]}]}," / ",{p:[68,8,1946],t:7,e:"span",a:{"class":"burn"},f:[{t:2,r:"burndam",p:[68,27,1965]}]}," / ",{p:[70,8,2002],t:7,e:"span",a:{"class":"brute"},f:[{t:2,r:"brutedam",p:[70,28,2022]}]}," )"]}],n:50,x:{r:["oxydam"],s:"_0!=null"},p:[61,6,1782]},{t:4,n:51,f:[{t:4,f:[{p:[75,8,2116],t:7,e:"span",f:["Alive"]}],n:50,r:"life_status",p:[74,7,2088]},{t:4,n:51,f:[{p:[77,8,2159],t:7,e:"span",f:["Dead"]}],r:"life_status"}],x:{r:["oxydam"],s:"_0!=null"}}]}," ",{p:[81,5,2222],t:7,e:"td",f:[{t:4,f:[{p:[83,6,2260],t:7,e:"span",f:[{t:2,r:"area",p:[83,12,2266]}]}],n:50,x:{r:["pos_x"],s:"_0!=null"},p:[82,5,2232]},{t:4,n:51,f:[{p:[85,6,2302],t:7,e:"span",f:["N/A"]}],x:{r:["pos_x"],s:"_0!=null"}}]}," ",{t:4,f:[{p:[89,6,2381],t:7,e:"td",f:[{p:[90,7,2393],t:7,e:"ui-button",a:{action:"select_person",state:[{t:2,x:{r:["can_track"],s:'_0?null:"disabled"'},p:[90,48,2434]}],params:['{"name":"',{t:2,r:"name",p:[90,100,2486]},'"}']},f:["Track"]}]}],n:50,r:"data.link_allowed",p:[88,5,2348]}]}],n:52,r:"data.sensors",p:[42,3,1281]}]}]}]}]}," "]},e.exports=a.extend(r.exports)},{341:341}],387:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[2,3,33],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[3,3,66],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[3,9,72]}]}]}," ",{t:4,f:[{p:[6,5,189],t:7,e:"ui-section",a:{label:"State"},f:[{p:[7,7,223],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.statstate",p:[7,20,236]}]},f:[{t:2,r:"data.occupant.stat",p:[7,49,265]}]}]}," ",{p:[9,4,317],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[10,6,356],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.temperaturestatus",p:[10,19,369]}]},f:[{t:2,r:"data.occupant.bodyTemperature",p:[10,56,406]}," K"]}]}," ",{p:[12,5,472],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[13,7,507],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[13,20,520]}],max:[{t:2,r:"data.occupant.maxHealth",p:[13,54,554]}],value:[{t:2,r:"data.occupant.health",p:[13,90,590]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[14,16,632]}]},f:[{t:2,r:"data.occupant.health",p:[14,68,684]}]}]}," ",{t:4,f:[{p:[17,7,908],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[17,26,927]}]},f:[{p:[18,9,948],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[18,30,969]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[18,66,1005]}],state:"bad"},f:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[18,103,1042]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[16,5,742]}],n:50,r:"data.hasOccupant",p:[5,3,159]}]}," ",{p:[23,1,1138],t:7,e:"ui-display",a:{title:"Cell"},f:[{p:[24,3,1167],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[25,5,1199],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[25,22,1216]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[26,14,1276]}],state:[{t:2,x:{r:["data.isOpen"],s:'_0?"disabled":null'},p:[27,14,1332]}],action:"power"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[28,22,1391]}]}]}," ",{p:[30,3,1459],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[31,3,1495],t:7,e:"span",a:{"class":[{t:2,r:"data.temperaturestatus",p:[31,16,1508]}]},f:[{t:2,r:"data.cellTemperature",p:[31,44,1536]}," K"]}]}," ",{p:[33,2,1588],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[34,5,1619],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOpen"],s:'_0?"unlock":"lock"'},p:[34,22,1636]}],action:"door"},f:[{t:2,x:{r:["data.isOpen"],s:'_0?"Open":"Closed"'},p:[34,73,1687]}]}," ",{p:[35,5,1740],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoEject"],s:'_0?"sign-out":"sign-in"'},p:[35,22,1757]}],action:"autoeject"},f:[{t:2,x:{r:["data.autoEject"],s:'_0?"Auto":"Manual"'},p:[35,86,1821]}]}]}]}," ",{p:{button:[{p:[40,5,1967],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[40,36,1998]}],action:"ejectbeaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[42,3,2101],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[45,9,2211],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,r:"volume",p:[45,52,2254]}," units of ",{t:2,r:"name",p:[45,72,2274]}]},{p:[45,87,2289],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[44,7,2171]},{t:4,n:51,f:[{p:[47,9,2320],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[43,5,2136]},{t:4,n:51,f:[{p:[50,7,2396],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],388:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,2,15],t:7,e:"ui-section",a:{label:"State"},f:[{t:4,f:[{p:[4,4,76],t:7,e:"span",a:{"class":"good"},f:["Ready"]}],n:50,r:"data.full_pressure",p:[3,3,45]},{t:4,n:51,f:[{t:4,f:[{p:[7,5,153],t:7,e:"span",a:{"class":"bad"},f:["Power Disabled"]}],n:50,r:"data.panel_open",p:[6,4,124]},{t:4,n:51,f:[{t:4,f:[{p:[10,6,248],t:7,e:"span",a:{"class":"average"},f:["Pressurizing"]}],n:50,r:"data.pressure_charging",p:[9,5,211]},{t:4,n:51,f:[{p:[12,6,310],t:7,e:"span",a:{"class":"bad"},f:["Off"]}],r:"data.pressure_charging"}],r:"data.panel_open"}],r:"data.full_pressure"}]}," ",{p:[17,2,393],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[18,3,426],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.per",p:[18,36,459]}],state:"good"},f:[{t:2,r:"data.per",p:[18,63,486]},"%"]}]}," ",{ -p:[20,5,530],t:7,e:"ui-section",a:{label:"Handle"},f:[{p:[21,9,567],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.flush"],s:'_0?"toggle-on":"toggle-off"'},p:[22,10,589]}],state:[{t:2,x:{r:["data.isai","data.panel_open"],s:'_0||_1?"disabled":null'},p:[23,11,647]}],action:[{t:2,x:{r:["data.flush"],s:'_0?"handle-0":"handle-1"'},p:[24,12,714]}]},f:[{t:2,x:{r:["data.flush"],s:'_0?"Disengage":"Engage"'},p:[25,5,763]}]}]}," ",{p:[27,2,837],t:7,e:"ui-section",a:{label:"Eject"},f:[{p:[28,3,867],t:7,e:"ui-button",a:{icon:"sign-out",state:[{t:2,x:{r:["data.isai"],s:'_0?"disabled":null'},p:[28,37,901]}],action:"eject"},f:["Eject Contents"]},{p:[28,114,978],t:7,e:"br"}]}," ",{p:[30,2,1002],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[31,3,1032],t:7,e:"ui-button",a:{icon:"power-off",state:[{t:2,x:{r:["data.panel_open"],s:'_0?"disabled":null'},p:[31,38,1067]}],action:[{t:2,x:{r:["data.pressure_charging"],s:'_0?"pump-0":"pump-1"'},p:[31,87,1116]}],style:[{t:2,x:{r:["data.pressure_charging"],s:'_0?"selected":null'},p:[31,145,1174]}]}},{p:[31,206,1235],t:7,e:"br"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],389:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"DNA Vault Database"},f:[{p:[2,3,43],t:7,e:"ui-section",a:{label:"Human DNA"},f:[{p:[3,7,81],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.dna_max",p:[3,28,102]}],value:[{t:2,r:"data.dna",p:[3,53,127]}]},f:[{t:2,r:"data.dna",p:[3,67,141]},"/",{t:2,r:"data.dna_max",p:[3,80,154]}," Samples"]}]}," ",{p:[5,3,208],t:7,e:"ui-section",a:{label:"Plant Data"},f:[{p:[6,5,245],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.plants_max",p:[6,26,266]}],value:[{t:2,r:"data.plants",p:[6,54,294]}]},f:[{t:2,r:"data.plants",p:[6,71,311]},"/",{t:2,r:"data.plants_max",p:[6,87,327]}," Samples"]}]}," ",{p:[8,3,384],t:7,e:"ui-section",a:{label:"Animal Data"},f:[{p:[9,5,422],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.animals_max",p:[9,26,443]}],value:[{t:2,r:"data.animals",p:[9,55,472]}]},f:[{t:2,r:"data.animals",p:[9,73,490]},"/",{t:2,r:"data.animals_max",p:[9,90,507]}," Samples"]}]}]}," ",{t:4,f:[{p:[13,1,616],t:7,e:"ui-display",a:{title:"Personal Gene Therapy"},f:[{p:[14,3,663],t:7,e:"ui-section",f:[{p:[15,2,678],t:7,e:"span",f:["Applicable gene therapy treatments:"]}]}," ",{p:[17,3,747],t:7,e:"ui-section",f:[{p:[18,2,762],t:7,e:"ui-button",a:{action:"gene",params:['{"choice": "',{t:2,r:"data.choiceA",p:[18,47,807]},'"}']},f:[{t:2,r:"data.choiceA",p:[18,67,827]}]}," ",{p:[19,2,858],t:7,e:"ui-button",a:{action:"gene",params:['{"choice": "',{t:2,r:"data.choiceB",p:[19,47,903]},'"}']},f:[{t:2,r:"data.choiceB",p:[19,67,923]}]}]}]}],n:50,x:{r:["data.completed","data.used"],s:"_0&&!_1"},p:[12,1,578]}]},e.exports=a.extend(r.exports)},{341:341}],390:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[2,3,33],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[3,3,66],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[3,9,72]}]}]}," ",{t:4,f:[{p:[6,5,183],t:7,e:"ui-section",a:{label:"Items in storage"},f:[{p:[7,4,225],t:7,e:"span",f:[{t:2,r:"data.items",p:[7,10,231]}]}]}],n:50,r:"data.items",p:[5,3,159]}," ",{t:4,f:[{p:[11,5,310],t:7,e:"ui-section",a:{label:"State"},f:[{p:[12,7,344],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.statstate",p:[12,20,357]}]},f:[{t:2,r:"data.occupant.stat",p:[12,49,386]}]}]}," ",{p:[14,5,439],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[15,7,474],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[15,20,487]}],max:[{t:2,r:"data.occupant.maxHealth",p:[15,54,521]}],value:[{t:2,r:"data.occupant.health",p:[15,90,557]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[16,16,599]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[16,68,651]}]}]}," ",{t:4,f:[{p:[19,7,888],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[19,26,907]}]},f:[{p:[20,9,928],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[20,30,949]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[20,66,985]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[20,103,1022]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[18,5,722]}," ",{p:[23,5,1109],t:7,e:"ui-section",a:{label:"Cells"},f:[{p:[24,9,1145],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"bad":"good"'},p:[24,22,1158]}]},f:[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"Damaged":"Healthy"'},p:[24,68,1204]}]}]}," ",{p:[26,5,1287],t:7,e:"ui-section",a:{label:"Brain"},f:[{p:[27,9,1323],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"bad":"good"'},p:[27,22,1336]}]},f:[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"Abnormal":"Healthy"'},p:[27,68,1382]}]}]}," ",{p:[29,5,1466],t:7,e:"ui-section",a:{label:"Bloodstream"},f:[{t:4,f:[{p:[31,11,1553],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,1)"},p:[31,54,1596]}," units of ",{t:2,r:"name",p:[31,89,1631]}]},{p:[31,104,1646],t:7,e:"br"}],n:52,r:"adata.occupant.reagents",p:[30,9,1508]},{t:4,n:51,f:[{p:[33,11,1681],t:7,e:"span",a:{"class":"good"},f:["Pure"]}],r:"adata.occupant.reagents"}]}],n:50,r:"data.occupied",p:[10,3,283]}]}," ",{p:[38,1,1777],t:7,e:"ui-display",a:{title:"Operations"},f:[{p:[39,3,1812],t:7,e:"ui-section",a:{label:"Inject"},f:[{t:4,f:[{p:[41,7,1872],t:7,e:"ui-button",a:{icon:"flask",state:[{t:2,x:{r:["data.occupied"],s:'_0?null:"disabled"'},p:[41,38,1903]}],action:"inject",params:['{"chem": "',{t:2,r:"id",p:[41,111,1976]},'"}']},f:[{t:2,r:"name",p:[41,121,1986]}]},{p:[41,141,2006],t:7,e:"br"}],n:52,r:"data.chem",p:[40,5,1845]}]}," ",{p:[44,2,2046],t:7,e:"ui-section",a:{label:"Eject"},f:[{p:[45,6,2079],t:7,e:"ui-button",a:{icon:"sign-out",action:"eject"},f:["Eject Contents"]}]}," ",{p:[47,2,2166],t:7,e:"ui-section",a:{label:"Self Cleaning"},f:[{p:[48,3,2204],t:7,e:"ui-button",a:{icon:"recycle",action:"cleaning"},f:["Self-Clean Cycle"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],391:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,24],t:7,e:"ui-display",a:{title:[{t:2,r:"data.question",p:[2,21,42]}]},f:[{p:[3,5,66],t:7,e:"ui-section",f:[{t:4,f:[{p:[5,9,118],t:7,e:"ui-button",a:{action:"vote",params:['{"answer": "',{t:2,r:"answer",p:[6,45,174]},'"}'],style:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[7,18,206]}]},f:[{t:2,r:"answer",p:[7,53,241]}," (",{t:2,r:"amount",p:[7,65,253]},")"]}],n:52,r:"data.answers",p:[4,7,86]}]}]}],n:50,r:"data.shaking",p:[1,1,0]},{t:4,n:51,f:[{p:[13,3,353],t:7,e:"ui-notice",f:["The eightball is not currently being shaken."]}],r:"data.shaking"}]},e.exports=a.extend(r.exports)},{341:341}],392:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,5,17],t:7,e:"span",f:["Time Until Launch: ",{t:2,r:"data.timer_str",p:[2,30,42]}]}]}," ",{p:[4,1,83],t:7,e:"ui-notice",f:[{p:[5,3,98],t:7,e:"span",f:["Engines: ",{t:2,x:{r:["data.engines_started"],s:'_0?"Online":"Idle"'},p:[5,18,113]}]}]}," ",{p:[7,1,180],t:7,e:"ui-display",a:{title:"Early Launch"},f:[{p:[8,2,216],t:7,e:"span",f:["Authorizations Remaining: ",{t:2,x:{r:["data.emagged","data.authorizations_remaining"],s:'_0?"ERROR":_1'},p:[9,2,250]}]}," ",{p:[10,2,318],t:7,e:"ui-button",a:{icon:"exclamation-triangle",action:"authorize",style:"danger",state:[{t:2,x:{r:["data.enabled"],s:'_0?null:"disabled"'},p:[12,10,404]}]},f:["AUTHORIZE"]}," ",{p:[15,2,473],t:7,e:"ui-button",a:{icon:"minus",action:"repeal",state:[{t:2,x:{r:["data.enabled"],s:'_0?null:"disabled"'},p:[16,10,523]}]},f:["Repeal"]}," ",{p:[19,2,589],t:7,e:"ui-button",a:{icon:"close",action:"abort",state:[{t:2,x:{r:["data.enabled"],s:'_0?null:"disabled"'},p:[20,10,638]}]},f:["Repeal All"]}]}," ",{p:[24,1,722],t:7,e:"ui-display",a:{title:"Authorizations"},f:[{t:4,f:[{p:[26,3,793],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{t:2,r:"name",p:[26,34,824]}," (",{t:2,r:"job",p:[26,44,834]},")"]}],n:52,r:"data.authorizations",p:[25,2,760]},{t:4,n:51,f:[{p:[28,3,870],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:["No authorizations."]}],r:"data.authorizations"}]}]},e.exports=a.extend(r.exports)},{341:341}],393:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Message"},f:[{t:2,r:"data.hidden_message",p:[3,5,50]}]}," ",{p:[5,3,94],t:7,e:"ui-section",a:{label:"Created On"},f:[{t:2,r:"data.realdate",p:[6,5,131]}]}," ",{p:[8,3,169],t:7,e:"ui-section",a:{label:"Approval"},f:[{p:[9,5,204],t:7,e:"ui-button",a:{icon:"arrow-up",state:[{t:2,x:{r:["data.is_creator","data.has_liked"],s:'_0?"disabled":_1?"selected":null'},p:[11,14,252]}],action:"like"},f:[{t:2,r:"data.num_likes",p:[12,21,344]}]}," ",{p:[13,5,380],t:7,e:"ui-button",a:{icon:"circle",state:[{t:2,x:{r:["data.is_creator","data.has_liked","data.has_disliked"],s:'_0?"disabled":!_1&&!_2?"selected":null'},p:[15,14,426]}],action:"neutral"}}," ",{p:[17,5,562],t:7,e:"ui-button",a:{icon:"arrow-down",state:[{t:2,x:{r:["data.is_creator","data.has_disliked"],s:'_0?"disabled":_1?"selected":null'},p:[19,14,612]}],action:"dislike"},f:[{t:2,r:"data.num_dislikes",p:[20,24,710]}]}]}]}," ",{t:4,f:[{p:[24,3,805],t:7,e:"ui-display",a:{title:"Admin Panel"},f:[{p:[25,5,843],t:7,e:"ui-section",a:{label:"Creator Ckey"},f:[{t:2,r:"data.creator_key",p:[25,38,876]}]}," ",{p:[26,5,915],t:7,e:"ui-section",a:{label:"Creator Character Name"},f:[{t:2,r:"data.creator_name",p:[26,48,958]}]}," ",{p:[27,5,998],t:7,e:"ui-button",a:{icon:"remove",action:"delete",style:"danger"},f:["Delete"]}]}],n:50,r:"data.admin_mode",p:[23,1,778]}]},e.exports=a.extend(r.exports)},{341:341}],394:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The requested interface (",{t:2,r:"config.interface",p:[2,34,46]},") was not found. Does it exist?"]}]}]},e.exports=a.extend(r.exports)},{341:341}],395:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,20],t:7,e:"ui-notice",f:["Currently syncing with the database"]}],n:50,r:"data.sync",p:[1,1,0]},{t:4,n:51,f:[{p:{button:[{p:[8,4,163],t:7,e:"ui-button",a:{icon:"eject",action:"eject_all"},f:["Eject all"]}," ",{p:[9,4,232],t:7,e:"ui-button",a:{icon:["toggle-",{t:2,x:{r:["data.show_materials"],s:'_0?"off":"on"'},p:[9,28,256]}],action:"toggle_materials_visibility"},f:[{t:2,x:{r:["data.show_materials"],s:'_0?"Hide":"Show"'},p:[10,5,339]}]}]},t:7,e:"ui-display",a:{title:"Materials",button:0},f:[" ",{t:4,f:[{p:[14,4,449],t:7,e:"div",a:{"class":"display tabular"},f:[{p:[15,5,484],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[16,6,520],t:7,e:"section",a:{"class":"cell"}}," ",{p:[17,6,559],t:7,e:"section",a:{"class":"cell"},f:["Mineral"]}," ",{p:[20,6,620],t:7,e:"section",a:{"class":"cell"},f:["Amount"]}," ",{p:[23,6,680],t:7,e:"section",a:{"class":"cell"}}," ",{p:[24,6,719],t:7,e:"section",a:{"class":"cell"}}]}," ",{t:4,f:[{p:[27,6,808],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[28,7,845],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[29,8,876]}]}," ",{p:[31,7,910],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"amount",p:[32,8,941]}]}," ",{p:[34,7,977],t:7,e:"section",a:{"class":"cell"},f:[{p:[35,8,1008],t:7,e:"ui-button",a:{icon:"eject"},f:["Release amount"]}]}," ",{p:[37,7,1084],t:7,e:"section",a:{"class":"cell",style:"width: 40px;"},f:[{p:[38,8,1136],t:7,e:"ui-button",a:{icon:"eject"},f:["Release all"]}]}]}],n:52,r:"data.all_materials",p:[26,5,773]}]}],n:50,r:"data.show_materials",p:[13,3,417]}]}," ",{p:[45,2,1274],t:7,e:"ui-display",a:{title:"Categories"},f:[{t:4,f:[{p:[47,4,1334],t:7,e:"ui-button",f:[{t:2,r:".",p:[47,15,1345]}]}],r:"data.categories",p:[46,3,1309]}]}],r:"data.sync"}]},e.exports=a.extend(r.exports)},{341:341}],396:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[3,5,49],t:7,e:"ui-button",a:{action:"toggle_power",style:[{t:2,x:{r:["data.toggle"],s:'_0?"selected":null'},p:[5,18,111]}]},f:["Turn ",{t:2,x:{r:["data.toggle"],s:'_0?"off":"on"'},p:[6,16,166]}]}]}," ",{p:[9,3,235],t:7,e:"ui-display",a:{title:"Logging"},f:[{t:4,f:[{p:[11,3,292],t:7,e:"ui-section",a:{label:">"},f:[{t:2,r:".",p:[11,25,314]},{p:[11,30,319],t:7,e:"ui-section",f:[]}]}],n:52,r:"data.logs",p:[10,5,269]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],397:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{seclevelState:function(){switch(this.get("data.seclevel")){case"blue":return"average";case"red":return"bad";case"delta":return"bad bold";default:return"good"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[16,1,323],t:7,e:"ui-display",f:[{p:[17,5,341],t:7,e:"ui-section",a:{label:"Alert Level"},f:[{p:[18,9,383],t:7,e:"span",a:{"class":[{t:2,r:"seclevelState",p:[18,22,396]}]},f:[{t:2,x:{r:["text","data.seclevel"],s:"_0.titleCase(_1)"},p:[18,41,415]}]}]}," ",{p:[20,5,480],t:7,e:"ui-section",a:{label:"Controls"},f:[{p:[21,9,519],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.alarm"],s:'_0?"close":"bell-o"'},p:[21,26,536]}],action:[{t:2,x:{r:["data.alarm"],s:'_0?"reset":"alarm"'},p:[21,71,581]}]},f:[{t:2,x:{r:["data.alarm"],s:'_0?"Reset":"Activate"'},p:[22,13,631]}]}]}," ",{t:4,f:[{p:[25,7,733],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[26,9,771],t:7,e:"span",a:{"class":"bad bold"},f:["Safety measures offline. Device may exhibit abnormal behavior."]}]}],n:50,r:"data.emagged",p:[24,5,705]}]}]},e.exports=a.extend(r.exports)},{341:341}],398:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[2,1,31],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,2,60],t:7,e:"ui-button",a:{icon:"power-off",style:[{t:2,x:{r:["data.power"],s:'_0?"selected":"danger"'},p:[3,37,95]}],action:"power"},f:[{t:2,x:{r:["data.power"],s:'_0?"Enabled":"Disabled"'},p:[3,92,150]}]}]}," ",{p:[5,1,218],t:7,e:"ui-section",a:{label:"Tag"},f:[{p:[6,2,245],t:7,e:"ui-button",a:{icon:"pencil",action:"rename"},f:[{t:2,r:"data.tag",p:[6,43,286]}]}]}," ",{p:[8,1,327],t:7,e:"ui-section",a:{label:"Scanning mode"},f:[{p:[9,2,364],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.updating"],s:'_0?"unlock":"lock"'},p:[9,18,380]}],style:[{t:2,x:{r:["data.updating"],s:'_0?null:"danger"'},p:[9,63,425]}],action:"updating",tooltip:"Toggle between automatic scanning or scan only when a button is pressed.","tooltip-side":"right"},f:[{t:2,x:{r:["data.updating"],s:'_0?"AUTO":"MANUAL"'},p:[9,221,583]}]}]}," ",{p:[11,1,649],t:7,e:"ui-section",a:{label:"Detection range"},f:[{p:[12,2,688],t:7,e:"ui-button",a:{icon:"refresh",style:[{t:2,x:{r:["data.globalmode"],s:'_0?null:"selected"'},p:[12,35,721]}],action:"globalmode",tooltip:"Local sector or whole region scanning.","tooltip-side":"right"},f:[{t:2,x:{r:["data.globalmode"],s:'_0?"MAXIMUM":"LOCAL"'},p:[12,165,851]}]}]}]}," ",{t:4,f:[{p:[16,2,957],t:7,e:"ui-display",a:{title:"Current Location"},f:[{p:[17,3,998],t:7,e:"span",f:[{t:2,r:"data.current",p:[17,9,1004]}]}]}," ",{p:[20,2,1048],t:7,e:"ui-display",a:{title:"Detected Signals"},f:[{t:4,f:[{p:[22,3,1114],t:7,e:"ui-section",a:{label:[{t:2,r:"entrytag",p:[22,21,1132]}]},f:[{p:[23,3,1149],t:7,e:"span",f:[{t:2,r:"area",p:[23,9,1155]}," (",{t:2,r:"coord",p:[23,19,1165]},")"]}," ",{t:4,f:[{p:[25,4,1209],t:7,e:"span",f:["Dist: ",{t:2,r:"dist",p:[25,16,1221]},"m Dir: ",{t:2,r:"degrees",p:[25,31,1236]},"° (",{t:2,r:"direction",p:[25,45,1250]},")"]}],n:50,r:"direction",p:[24,3,1187]}]}],n:52,r:"data.signals",p:[21,2,1088]}]}],n:50,r:"data.power",p:[15,1,936]}]},e.exports=a.extend(r.exports)},{341:341}],399:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Labor Camp Teleporter"},f:[{p:[2,2,45],t:7,e:"ui-section",a:{label:"Teleporter Status"},f:[{p:[3,3,87],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.teleporter"],s:'_0?"good":"bad"'},p:[3,16,100]}]},f:[{t:2,x:{r:["data.teleporter"],s:'_0?"Connected":"Not connected"'},p:[3,54,138]}]}]}," ",{t:4,f:[{p:[6,4,244],t:7,e:"ui-section",a:{label:"Location"},f:[{p:[7,5,279],t:7,e:"span",f:[{t:2,r:"data.teleporter_location",p:[7,11,285]}]}]}," ",{p:[9,4,343],t:7,e:"ui-section",a:{label:"Locked status"},f:[{p:[10,5,383],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.teleporter_lock"],s:'_0?"lock":"unlock"'},p:[10,22,400]}],action:"teleporter_lock"},f:[{t:2,x:{r:["data.teleporter_lock"],s:'_0?"Locked":"Unlocked"'},p:[10,93,471]}]}," ",{p:[11,5,537],t:7,e:"ui-button",a:{action:"toggle_open"},f:[{t:2,x:{r:["data.teleporter_state_open"],s:'_0?"Open":"Closed"'},p:[11,37,569]}]}]}],n:50,r:"data.teleporter",p:[5,3,216]},{t:4,n:51,f:[{p:[14,4,666],t:7,e:"span",f:[{p:[14,10,672],t:7,e:"ui-button",a:{action:"scan_teleporter"},f:["Scan Teleporter"]}]}],r:"data.teleporter"}]}," ",{p:[17,1,770],t:7,e:"ui-display",a:{title:"Labor Camp Beacon"},f:[{p:[18,2,811],t:7,e:"ui-section",a:{label:"Beacon Status"},f:[{p:[19,3,849],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.beacon"],s:'_0?"good":"bad"'},p:[19,16,862]}]},f:[{t:2,x:{r:["data.beacon"],s:'_0?"Connected":"Not connected"'},p:[19,50,896]}]}]}," ",{t:4,f:[{p:[22,3,992],t:7,e:"ui-section",a:{label:"Location"},f:[{p:[23,4,1026],t:7,e:"span",f:[{t:2,r:"data.beacon_location",p:[23,10,1032]}]}]}],n:50,r:"data.beacon",p:[21,2,969]},{t:4,n:51,f:[{p:[26,4,1097],t:7,e:"span",f:[{p:[26,10,1103],t:7,e:"ui-button",a:{action:"scan_beacon"},f:["Scan Beacon"]}]}],r:"data.beacon"}]}," ",{p:[29,1,1193],t:7,e:"ui-display",a:{title:"Prisoner details"},f:[{p:[30,2,1233],t:7,e:"ui-section",a:{label:"Prisoner ID"},f:[{p:[31,3,1269],t:7,e:"ui-button",a:{action:"handle_id"},f:[{t:2,x:{r:["data.id","data.id_name"],s:'_0?_1:"-------------"'},p:[31,33,1299]}]}]}," ",{t:4,f:[{p:[34,2,1392],t:7,e:"ui-section",a:{label:"Set ID goal"},f:[{p:[35,4,1429],t:7,e:"ui-button",a:{action:"set_goal"},f:[{t:2,r:"data.goal",p:[35,33,1458]}]}]}],n:50,r:"data.id",p:[33,2,1374]}," ",{p:[38,2,1512],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[39,3,1545],t:7,e:"span",f:[{t:2,x:{r:["data.prisoner.name"],s:'_0?_0:"No Occupant"'},p:[39,9,1551]}]}]}," ",{t:4,f:[{p:[42,3,1661],t:7,e:"ui-section",a:{label:"Criminal Status"},f:[{p:[43,4,1702],t:7,e:"span",f:[{t:2,r:"data.prisoner.crimstat",p:[43,10,1708]}]}]}],n:50,r:"data.prisoner",p:[41,2,1636]}]}," ",{p:[47,1,1785],t:7,e:"ui-display",f:[{p:[48,2,1800],t:7,e:"center",f:[{p:[48,10,1808],t:7,e:"ui-button",a:{action:"teleport",state:[{t:2,x:{r:["data.can_teleport"],s:'_0?null:"disabled"'},p:[48,45,1843]}]},f:["Process Prisoner"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],400:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,2,15],t:7,e:"center",f:[{p:[2,10,23],t:7,e:"ui-button",a:{action:"handle_id"},f:[{t:2,x:{r:["data.id","data.id_name"],s:'_0?_1:"-------------"'},p:[2,40,53]}]}]}]}," ",{p:[4,1,135],t:7,e:"ui-display",a:{title:"Stored Items"},f:[{t:4,f:[{p:[6,3,194],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[6,22,213]}]},f:[{p:[7,4,228],t:7,e:"ui-button",a:{action:"release_items",params:['{"mobref":',{t:2,r:"mob",p:[7,56,280]},"}"],state:[{t:2,x:{r:["data.can_reclaim"],s:'_0?null:"disabled"'},p:[7,72,296]}]},f:["Drop Items"]}]}],n:52,r:"data.mobs",p:[5,2,171]}]}]},e.exports=a.extend(r.exports)},{341:341}],401:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{p:[3,3,70],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.emagged"],s:'_0?"un":null'},p:[3,20,87]},"lock"],state:[{t:2,x:{r:["data.can_toggle_safety"],s:'_0?null:"disabled"'},p:[3,63,130]}],action:"safety"},f:["Safeties: ",{p:[4,14,209],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.emagged"],s:'_0?"bad":"good"'},p:[4,27,222]}]},f:[{t:2,x:{r:["data.emagged"],s:'_0?"OFF":"ON"'},p:[4,62,257]}]}]}]},t:7,e:"ui-display",a:{title:"Default Programs",button:0},f:[" ",{t:4,f:[{p:[8,2,363],t:7,e:"ui-button",a:{action:"load_program",params:['{"type": ',{t:2,r:"type",p:[8,52,413]},"}"],style:[{t:2,x:{r:["data.program","type"],s:'_0==_1?"selected":null'},p:[8,70,431]}]},f:[{t:2,r:"name",p:[9,5,483]}," "]},{p:[10,14,506],t:7,e:"br"}],n:52,r:"data.default_programs",p:[7,2,329]}]}," ",{t:4,f:[{p:[14,2,562],t:7,e:"ui-display",a:{title:"Dangerous Programs"},f:[{t:4,f:[{p:[16,4,638],t:7,e:"ui-button",a:{icon:"warning",action:"load_program",params:['{"type": ',{t:2,r:"type",p:[16,69,703]},"}"],style:[{t:2,x:{r:["data.program","type"],s:'_0==_1?"selected":null'},p:[16,87,721]}]},f:[{t:2,r:"name",p:[17,5,773]}," "]},{p:[18,16,798],t:7,e:"br"}],n:52,r:"data.emag_programs",p:[15,3,605]}]}],n:50,r:"data.emagged",p:[13,1,539]}]},e.exports=a.extend(r.exports)},{341:341}],402:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{occupantStatState:function(){switch(this.get("data.occupant.stat")){case 0:return"good";case 1:return"average";default:return"bad"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[15,1,280],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[16,3,313],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[17,3,346],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[17,9,352]}]}]}," ",{t:4,f:[{p:[20,5,466],t:7,e:"ui-section",a:{label:"State"},f:[{p:[21,7,500],t:7,e:"span",a:{"class":[{t:2,r:"occupantStatState",p:[21,20,513]}]},f:[{t:2,x:{r:["data.occupant.stat"],s:'_0==0?"Conscious":_0==1?"Unconcious":"Dead"'},p:[21,43,536]}]}]}],n:50,r:"data.occupied",p:[19,3,439]}]}," ",{p:[25,1,680],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[26,2,712],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[27,5,743],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"unlock":"lock"'},p:[27,22,760]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Open":"Closed"'},p:[27,71,809]}]}]}," ",{p:[29,3,874],t:7,e:"ui-section",a:{label:"Uses"},f:[{t:2,r:"data.ready_implants",p:[30,5,905]}," ",{t:4,f:[{p:[32,7,969],t:7,e:"span",a:{"class":"fa fa-cog fa-spin"}}],n:50,r:"data.replenishing",p:[31,5,936]}]}," ",{p:[35,3,1036],t:7,e:"ui-section",a:{label:"Activate"},f:[{p:[36,7,1073],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.occupied","data.ready_implants","data.ready"],s:'_0&&_1>0&&_2?null:"disabled"'},p:[36,25,1091]}],action:"implant"},f:[{t:2,x:{r:["data.ready","data.special_name"],s:'_0?(_1?_1:"Implant"):"Recharging"'},p:[37,9,1198]}," "]},{p:[38,19,1302],t:7,e:"br"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],403:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{healthState:function(){var t=this.get("data.health");return t>70?"good":t>50?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{t:4,f:[{p:[15,3,296],t:7,e:"ui-notice",f:[{p:[16,5,313],t:7,e:"span",f:["Wipe in progress!"]}]}],n:50,r:"data.wiping",p:[14,1,273]},{p:{button:[{t:4,f:[{p:[22,7,479],t:7,e:"ui-button",a:{icon:"trash",state:[{t:2,x:{r:["data.isDead"],s:'_0?"disabled":null'},p:[22,38,510]}],action:"wipe"},f:[{t:2,x:{r:["data.wiping"],s:'_0?"Stop Wiping":"Wipe"'},p:[22,89,561]}," AI"]}],n:50,r:"data.name",p:[21,5,454]}]},t:7,e:"ui-display",a:{title:[{t:2,x:{r:["data.name"],s:'_0||"Empty Card"'},p:[19,19,388]}],button:0},f:[" ",{t:4,f:[{p:[26,5,672],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[27,9,709],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.isDead","data.isBraindead"],s:'_0||_1?"bad":"good"'},p:[27,22,722]}]},f:[{t:2,x:{r:["data.isDead","data.isBraindead"],s:'_0||_1?"Offline":"Operational"'},p:[27,76,776]}]}]}," ",{p:[29,5,871],t:7,e:"ui-section",a:{label:"Software Integrity"},f:[{p:[30,7,918],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.health",p:[30,40,951]}],state:[{t:2,r:"healthState",p:[30,64,975]}]},f:[{t:2,x:{r:["adata.health"],s:"Math.round(_0)"},p:[30,81,992]},"%"]}]}," ",{p:[32,5,1055],t:7,e:"ui-section",a:{label:"Laws"},f:[{t:4,f:[{p:[34,9,1117],t:7,e:"span",a:{"class":"highlight"},f:[{t:2,r:".",p:[34,33,1141]}]},{p:[34,45,1153],t:7,e:"br"}],n:52,r:"data.laws",p:[33,7,1088]}]}," ",{p:[37,5,1200],t:7,e:"ui-section",a:{label:"Settings"},f:[{p:[38,7,1237],t:7,e:"ui-button",a:{icon:"signal",style:[{t:2,x:{r:["data.wireless"],s:'_0?"selected":null'},p:[38,39,1269]}],action:"wireless"},f:["Wireless Activity"]}," ",{p:[39,7,1363],t:7,e:"ui-button",a:{icon:"microphone",style:[{t:2,x:{r:["data.radio"],s:'_0?"selected":null'},p:[39,43,1399]}],action:"radio"},f:["Subspace Radio"]}]}],n:50,r:"data.name",p:[25,3,649]}]}]},e.exports=a.extend(r.exports)},{341:341}],404:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,23],t:7,e:"ui-notice",f:[{p:[3,3,38],t:7,e:"span",f:["Waiting for another device to confirm your request..."]}]}],n:50,r:"data.waiting",p:[1,1,0]},{t:4,n:51,f:[{p:[6,2,132],t:7,e:"ui-display",f:[{p:[7,3,148],t:7,e:"ui-section",f:[{t:4,f:[{p:[9,5,197],t:7,e:"ui-button",a:{icon:"check",action:"auth_swipe"},f:["Authorize ",{t:2,r:"data.auth_required",p:[9,59,251]}]}],n:50,r:"data.auth_required",p:[8,4,165]},{t:4,n:51,f:[{p:[11,5,304],t:7,e:"ui-button",a:{icon:"warning",state:[{t:2,x:{r:["data.red_alert"],s:'_0?"disabled":null'},p:[11,38,337]}],action:"red_alert"},f:["Red Alert"]}," ",{p:[12,5,423],t:7,e:"ui-button",a:{icon:"wrench",state:[{t:2,x:{r:["data.emergency_maint"],s:'_0?"disabled":null'},p:[12,37,455]}],action:"emergency_maint"},f:["Emergency Maintenance Access"]}," ",{p:[13,5,572],t:7,e:"ui-button",a:{icon:"warning",state:"null",action:"bsa_unlock"},f:["Bluespace Artillery Unlock"]}],r:"data.auth_required"}]}]}],r:"data.waiting"}]},e.exports=a.extend(r.exports)},{341:341}],405:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Ore values"},f:[{t:4,f:[{p:[3,3,57],t:7,e:"ui-section",a:{label:[{t:2,r:"ore",p:[3,22,76]}]},f:[{p:[4,4,90],t:7,e:"span",f:[{t:2,r:"value",p:[4,10,96]}]}]}],n:52,r:"data.ores",p:[2,2,34]}]}," ",{p:[8,1,158],t:7,e:"ui-display",a:{title:"Points"},f:[{p:[9,2,188],t:7,e:"ui-section",a:{label:"ID"},f:[{p:[10,3,215],t:7,e:"ui-button",a:{action:"handle_id"},f:[{t:2,x:{r:["data.id","data.id_name"],s:'_0?_1:"-------------"'},p:[10,33,245]}]}]}," ",{t:4,f:[{p:[13,3,339],t:7,e:"ui-section",a:{label:"Points collected"},f:[{p:[14,4,381],t:7,e:"span",f:[{t:2,r:"data.points",p:[14,10,387]}]}]}," ",{p:[16,3,430],t:7,e:"ui-section",a:{label:"Goal"},f:[{p:[17,4,460],t:7,e:"span",f:[{t:2,r:"data.goal",p:[17,10,466]}]}]}," ",{p:[19,3,507],t:7,e:"ui-section",a:{label:"Unclaimed points"},f:[{p:[20,4,549],t:7,e:"span",f:[{t:2,r:"data.unclaimed_points",p:[20,10,555]}]}," ",{p:[21,4,592],t:7,e:"ui-button",a:{action:"claim_points",state:[{t:2,x:{r:["data.unclaimed_points"],s:'_0?null:"disabled"'},p:[21,43,631]}]},f:["Claim points"]}]}],n:50,r:"data.id",p:[12,2,320]}]}," ",{p:[25,1,745],t:7,e:"ui-display",f:[{p:[26,2,760],t:7,e:"center",f:[{p:[27,3,772],t:7,e:"ui-button",a:{action:"move_shuttle",state:[{t:2,x:{r:["data.can_go_home"],s:'_0?null:"disabled"'},p:[27,42,811]}]},f:["Move shuttle"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],406:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Known Languages"},f:[{t:4,f:[{p:[3,5,70],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[3,23,88]}]},f:[{p:[4,7,105],t:7,e:"span",f:[{t:2,r:"desc",p:[4,13,111]}]}," ",{p:[5,7,134],t:7,e:"span",f:["Key: ,",{t:2,r:"key",p:[5,19,146]}]}," ",{t:4,f:[{p:[7,9,192],t:7,e:"span",f:["(gained from mob)"]}],n:50,r:"shadow",p:[6,7,168]}," ",{p:[9,7,245],t:7,e:"span",f:[{t:2,x:{r:["can_speak"],s:'_0?"Can Speak":"Cannot Speak"'},p:[9,13,251]}]}," ",{t:4,f:[{p:[11,9,342],t:7,e:"ui-button",a:{action:"select_default",params:['{"language_name":"',{t:2,r:"name",p:[13,37,425]},'"}'],style:[{t:2,x:{r:["is_default","can_speak"],s:'_0?"selected":_1?null:"disabled"'},p:[14,18,455]}]},f:[{t:2,x:{r:["is_default"],s:'_0?"Default Language":"Select as Default"'},p:[15,10,526]}]}],n:50,r:"data.is_living",p:[10,7,310]}," ",{t:4,f:[{t:4,f:[{p:[20,11,685],t:7,e:"ui-button",a:{action:"grant_language",params:['{"language_name":"',{t:2,r:"name",p:[20,72,746]},'"}']},f:["Grant"]}],n:50,r:"shadow",p:[19,9,659]},{t:4,n:51,f:[{p:[22,11,805],t:7,e:"ui-button",a:{action:"remove_language",params:['{"language_name":"',{t:2,r:"name",p:[22,73,867]},'"}']},f:["Remove"]}],r:"shadow"}],n:50,r:"data.admin_mode",p:[18,7,626]}]}],n:52,r:"data.languages",p:[2,3,40]}]}," ",{t:4,f:[{t:4,f:[{p:[30,5,1033],t:7,e:"ui-button",a:{action:"toggle_omnitongue",style:[{t:2,x:{r:["data.omnitongue"],s:'_0?"selected":null'},p:[32,14,1092]}]},f:["Omnitongue ",{t:2,x:{r:["data.omnitongue"],s:'_0?"Enabled":"Disabled"'},p:[33,19,1152]}]}],n:50,r:"data.is_living",p:[29,3,1005]}," ",{p:[36,3,1231],t:7,e:"ui-display",a:{title:"Unknown Languages"},f:[{t:4,f:[{p:[38,7,1315],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[38,25,1333]}]},f:[{p:[39,9,1352],t:7,e:"span",f:[{t:2,r:"desc",p:[39,15,1358]}]}," ",{p:[40,9,1383],t:7,e:"span",f:["Key: ,",{t:2,r:"key",p:[40,21,1395]}]}," ",{p:[41,9,1419],t:7,e:"ui-button",a:{action:"grant_language",params:['{"language_name":"',{t:2,r:"name",p:[43,37,1502]},'"}']},f:["Grant"]}]}],n:52,r:"data.unknown_languages",p:[37,5,1275]}]}],n:50,r:"data.admin_mode",p:[28,1,978]}]},e.exports=a.extend(r.exports)},{341:341}],407:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Controls"},f:[{t:4,f:[{t:4,f:[{p:[4,4,84],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[5,5,118],t:7,e:"span",f:["Launchpad closed."]}]}],n:50,r:"data.pad_closed",p:[3,3,56]},{t:4,n:51,f:[{p:[8,4,183],t:7,e:"ui-section",a:{label:"Launchpad"},f:[{p:[9,4,218],t:7,e:"span",f:[{p:[9,10,224],t:7,e:"b",f:[{t:2,r:"data.pad_name",p:[9,13,227]}]}]},{p:[9,41,255],t:7,e:"br"}," ",{p:[10,4,264],t:7,e:"ui-button",a:{icon:"pencil",action:"rename"},f:["Rename"]}," ",{p:[11,4,328],t:7,e:"ui-button",a:{icon:"remove",style:"danger",action:"remove"},f:["Remove"]}]}," ",{p:[14,4,427],t:7,e:"ui-section",a:{label:"Set Target"},f:[{p:[15,4,463],t:7,e:"table",f:[{p:[16,4,475],t:7,e:"tr",f:[{p:[17,5,485],t:7,e:"td",a:{style:"width:25px!important"},f:[{p:[17,38,518],t:7,e:"ui-button",a:{action:"up-left"},f:["↖"]}]}," ",{p:[18,5,570],t:7,e:"td",a:{style:"width:25px!important; text-align:center"},f:[{p:[18,57,622],t:7,e:"ui-button",a:{action:"up"},f:["↑"]}]}," ",{p:[19,5,669],t:7,e:"td",a:{style:"width:25px!important; text-align:right"},f:[{p:[19,56,720],t:7,e:"ui-button",a:{action:"up-right"},f:["↗"]}]}]}," ",{p:[21,4,782],t:7,e:"tr",f:[{p:[22,5,792],t:7,e:"td",a:{style:"width:25px!important"},f:[{p:[22,38,825],t:7,e:"ui-button",a:{action:"left",style:"width:35px!important"},f:["â†"]}]}," ",{p:[23,5,903],t:7,e:"td",a:{style:"width:25px!important; text-align:center"},f:[{p:[23,57,955],t:7,e:"ui-button",a:{action:"reset"},f:["R"]}]}," ",{p:[24,5,1005],t:7,e:"td",a:{style:"width:25px!important; text-align:right"},f:[{p:[24,56,1056],t:7,e:"ui-button",a:{action:"right"},f:["→"]}]}]}," ",{p:[26,4,1115],t:7,e:"tr",f:[{p:[27,5,1125],t:7,e:"td",a:{style:"width:25px!important"},f:[{p:[27,38,1158],t:7,e:"ui-button",a:{action:"down-left"},f:["↙"]}]}," ",{p:[28,5,1212],t:7,e:"td",a:{style:"width:25px!important; text-align:center"},f:[{p:[28,57,1264],t:7,e:"ui-button",a:{action:"down"},f:["↓"]}]}," ",{p:[29,5,1313],t:7,e:"td",a:{style:"width:25px!important; text-align:right"},f:[{p:[29,56,1364],t:7,e:"ui-button",a:{action:"down-right"},f:["↘"]}]}]}]}]}," ",{p:[33,4,1459],t:7,e:"ui-section",a:{label:"Current Target"},f:[{p:[34,5,1500],t:7,e:"span",f:[{t:2,r:"data.abs_y",p:[34,11,1506]}," ",{t:2,r:"data.north_south",p:[34,26,1521]}]},{p:[34,53,1548],t:7,e:"br"}," ",{p:[35,5,1558],t:7,e:"span",f:[{t:2,r:"data.abs_x",p:[35,11,1564]}," ",{t:2,r:"data.east_west",p:[35,26,1579]}]}]}," ",{p:[37,4,1627],t:7,e:"ui-section",a:{label:"Activate"},f:[{p:[38,5,1662],t:7,e:"ui-button",a:{action:"launch",tooltip:"Teleport everything on the pad to the target.", +state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[82,63,4246]}]},f:["Dispense Buffer to Hypo vials"]}," ",{p:[83,4,4339],t:7,e:"br"}]}],n:50,x:{r:["data.condi"],s:"!_0"},p:[51,2,2422]},{t:4,n:51,f:[{p:[88,3,4382],t:7,e:"ui-display",a:{title:"Condiments bottles and packs"},f:[{p:[89,4,4437],t:7,e:"ui-button",a:{action:"createPill",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[89,63,4496]}]},f:["Create Pack (max 10µ)"]}," ",{p:[90,4,4580],t:7,e:"br"}," ",{p:[91,4,4590],t:7,e:"br"}," ",{p:[92,4,4600],t:7,e:"ui-button",a:{action:"createBottle",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[92,65,4661]}]},f:["Create Bottle (max 50µ)"]}]}],x:{r:["data.condi"],s:"!_0"}}],n:50,x:{r:["data.screen"],s:'_0=="home"'},p:[1,2,1]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.screen"],s:'_0=="analyze"'},f:[{p:[96,2,4809],t:7,e:"ui-display",a:{title:[{t:2,r:"data.analyzeVars.name",p:[96,20,4827]}]},f:[{p:[97,3,4858],t:7,e:"span",a:{"class":"highlight"},f:["Description:"]}," ",{p:[98,3,4906],t:7,e:"span",a:{"class":"content",style:"float:center"},f:[{t:2,r:"data.analyzeVars.description",p:[98,46,4949]}]}," ",{p:[99,3,4992],t:7,e:"br"}," ",{p:[100,3,5001],t:7,e:"span",a:{"class":"highlight"},f:["Color:"]}," ",{p:[101,3,5043],t:7,e:"span",a:{style:["color: ",{t:2,r:"data.analyzeVars.color",p:[101,23,5063]},"; background-color: ",{t:2,r:"data.analyzeVars.color",p:[101,69,5109]}]},f:[{t:2,r:"data.analyzeVars.color",p:[101,97,5137]}]}," ",{p:[102,3,5174],t:7,e:"br"}," ",{p:[103,3,5183],t:7,e:"span",a:{"class":"highlight"},f:["State:"]}," ",{p:[104,3,5225],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.state",p:[104,25,5247]}]}," ",{p:[105,3,5284],t:7,e:"br"}," ",{p:[106,3,5293],t:7,e:"span",a:{"class":"highlight"},f:["Metabolization Rate:"]}," ",{p:[107,3,5349],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.metaRate",p:[107,25,5371]},"µ/minute"]}," ",{p:[108,3,5419],t:7,e:"br"}," ",{p:[109,3,5428],t:7,e:"span",a:{"class":"highlight"},f:["Overdose Threshold:"]}," ",{p:[110,3,5483],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.overD",p:[110,25,5505]}]}," ",{p:[111,3,5542],t:7,e:"br"}," ",{p:[112,3,5551],t:7,e:"span",a:{"class":"highlight"},f:["Addiction Threshold:"]}," ",{p:[113,3,5607],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.addicD",p:[113,25,5629]}]}," ",{p:[114,3,5667],t:7,e:"br"}," ",{p:[115,3,5676],t:7,e:"br"}," ",{p:[116,3,5685],t:7,e:"ui-button",a:{action:"goScreen",params:'{"screen": "home"}'},f:["Back"]}]}]}],x:{r:["data.screen"],s:'_0=="home"'}}]},e.exports=a.extend(r.exports)},{341:341}],381:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Recipient Contents"},f:[{p:[2,2,42],t:7,e:"ui-section",f:[{p:[3,3,58],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[3,34,89]}],action:"ejectBeaker"},f:["Eject"]}," ",{p:[4,3,176],t:7,e:"ui-button",a:{icon:"circle",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[4,35,208]}],action:"input"},f:["Input"]}," ",{p:[5,3,289],t:7,e:"ui-button",a:{icon:"circle",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,35,321]}],action:"amount"},f:[{t:2,r:"data.amount",p:[5,96,382]},"U"]}," ",{p:[6,3,414],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"disabled":null'},p:[6,33,444]}],action:"makecup"},f:["Create Beaker"]}]}]}," ",{p:[9,1,564],t:7,e:"ui-display",a:{title:"Recipient"},f:[{p:[10,2,597],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[12,4,662],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[12,10,668]},"/",{t:2,r:"data.beakerMaxVolume",p:[12,52,710]}," Units"]}," ",{t:4,f:[{p:[14,5,788],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[14,48,831]}," units of ",{t:2,r:"name",p:[14,83,866]}]},{p:[14,98,881],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[13,4,752]},{t:4,n:51,f:[{p:[16,5,905],t:7,e:"span",a:{"class":"bad"},f:["Recipient Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[11,3,630]},{t:4,n:51,f:[{p:[19,4,976],t:7,e:"span",a:{"class":"average"},f:["No Recipient"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],382:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-button",a:{action:"toggle"},f:[{t:2,x:{r:["data.recollection"],s:'_0?"Recital":"Recollection"'},p:[2,30,43]}]}]}," ",{t:4,f:[{p:[5,3,149],t:7,e:"ui-display",f:[{t:3,r:"data.rec_text",p:[6,3,165]}," ",{t:4,f:[{p:[8,4,231],t:7,e:"br"},{p:[8,8,235],t:7,e:"ui-button",a:{action:"rec_category",params:['{"category": "',{t:2,r:"name",p:[8,63,290]},'"}']},f:[{t:3,r:"name",p:[8,75,302]}," - ",{t:3,r:"desc",p:[8,88,315]}]}],n:52,r:"data.recollection_categories",p:[7,3,188]}," ",{t:3,r:"data.rec_section",p:[10,3,354]}," ",{t:3,r:"data.rec_binds",p:[11,3,380]}]}],n:50,r:"data.recollection",p:[4,1,120]},{t:4,n:51,f:[{p:[14,2,431],t:7,e:"ui-display",a:{title:"Power",button:0},f:[{p:[15,4,469],t:7,e:"ui-section",f:[{t:3,r:"data.power",p:[16,6,488]}]}]}," ",{p:[19,2,541],t:7,e:"ui-display",f:[{p:[20,3,557],t:7,e:"ui-section",f:[{p:[21,4,574],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.selected"],s:'_0=="Driver"?"selected":null'},p:[21,22,592]}],action:"select",params:'{"category": "Driver"}'},f:["Driver"]}," ",{p:[22,4,715],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.selected"],s:'_0=="Script"?"selected":null'},p:[22,22,733]}],action:"select",params:'{"category": "Script"}'},f:["Scripts"]}," ",{p:[23,4,857],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.selected"],s:'_0=="Application"?"selected":null'},p:[23,22,875]}],action:"select",params:'{"category": "Application"}'},f:["Applications"]}," ",{p:[24,4,1014],t:7,e:"br"},{t:3,r:"data.tier_info",p:[24,8,1018]}]}," ",{p:[26,3,1059],t:7,e:"ui-section",f:[{t:3,r:"data.scripturecolors",p:[27,4,1076]}]},{p:[28,16,1119],t:7,e:"hr"}," ",{p:[29,3,1127],t:7,e:"ui-section",f:[{t:4,f:[{p:[31,4,1172],t:7,e:"div",f:[{p:[31,9,1177],t:7,e:"ui-button",a:{tooltip:[{t:3,r:"tip",p:[31,29,1197]}],"tooltip-side":"right",action:"recite",params:['{"category": "',{t:2,r:"type",p:[31,99,1267]},'"}']},f:["Recite ",{t:3,r:"required",p:[31,118,1286]}]}," ",{t:4,f:[{t:4,f:[{p:[34,6,1362],t:7,e:"ui-button",a:{action:"bind",params:['{"category": "',{t:2,r:"type",p:[34,53,1409]},'"}']},f:["Unbind ",{t:3,r:"bound",p:[34,72,1428]}]}],n:50,r:"bound",p:[33,5,1342]},{t:4,n:51,f:[{p:[36,6,1472],t:7,e:"ui-button",a:{action:"bind",params:['{"category": "',{t:2,r:"type",p:[36,53,1519]},'"}']},f:["Quickbind"]}],r:"bound"}],n:50,r:"quickbind",p:[32,6,1319]}," ",{t:3,r:"name",p:[39,6,1586]}," ",{t:3,r:"descname",p:[39,17,1597]}," ",{t:3,r:"invokers",p:[39,32,1612]}]}],n:52,r:"data.scripture",p:[30,3,1143]}]}]}],r:"data.recollection"}]},e.exports=a.extend(r.exports)},{341:341}],383:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Codex Gigas"},f:[{p:[2,2,35],t:7,e:"ui-section",f:[{t:2,r:"data.name",p:[3,3,51]}]}," ",{p:[5,5,86],t:7,e:"ui-section",a:{label:"Prefix"},f:[{p:[6,3,117],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[6,22,136]}],action:"Dark "},f:["Dark"]}," ",{p:[7,3,221],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[7,22,240]}],action:"Hellish "},f:["Hellish"]}," ",{p:[8,3,331],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[8,22,350]}],action:"Fallen "},f:["Fallen"]}," ",{p:[9,3,439],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[9,22,458]}],action:"Fiery "},f:["Fiery"]}," ",{p:[10,3,545],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[10,22,564]}],action:"Sinful "},f:["Sinful"]}," ",{p:[11,3,653],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[11,22,672]}],action:"Blood "},f:["Blood"]}," ",{p:[12,3,759],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[12,22,778]}],action:"Fluffy "},f:["Fluffy"]}]}," ",{p:[14,5,888],t:7,e:"ui-section",a:{label:"Title"},f:[{p:[15,3,918],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[15,22,937]}],action:"Lord "},f:["Lord"]}," ",{p:[16,3,1022],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[16,22,1041]}],action:"Prelate "},f:["Prelate"]}," ",{p:[17,3,1132],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[17,22,1151]}],action:"Count "},f:["Count"]}," ",{p:[18,3,1238],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[18,22,1257]}],action:"Viscount "},f:["Viscount"]}," ",{p:[19,3,1350],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[19,22,1369]}],action:"Vizier "},f:["Vizier"]}," ",{p:[20,3,1458],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[20,22,1477]}],action:"Elder "},f:["Elder"]}," ",{p:[21,3,1564],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[21,22,1583]}],action:"Adept "},f:["Adept"]}]}," ",{p:[23,5,1691],t:7,e:"ui-section",a:{label:"Name"},f:[{p:[24,3,1720],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[24,22,1739]}],action:"hal"},f:["hal"]}," ",{p:[25,3,1821],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[25,22,1840]}],action:"ve"},f:["ve"]}," ",{p:[26,3,1920],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[26,22,1939]}],action:"odr"},f:["odr"]}," ",{p:[27,3,2021],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[27,22,2040]}],action:"neit"},f:["neit"]}," ",{p:[28,3,2124],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[28,22,2143]}],action:"ci"},f:["ci"]}," ",{p:[29,3,2223],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[29,22,2242]}],action:"quon"},f:["quon"]}," ",{p:[30,3,2326],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[30,22,2345]}],action:"mya"},f:["mya"]}," ",{p:[31,3,2427],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[31,22,2446]}],action:"folth"},f:["folth"]}," ",{p:[32,3,2532],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[32,22,2551]}],action:"wren"},f:["wren"]}," ",{p:[33,3,2635],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[33,22,2654]}],action:"geyr"},f:["geyr"]}," ",{p:[34,3,2738],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[34,22,2757]}],action:"hil"},f:["hil"]}," ",{p:[35,3,2839],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[35,22,2858]}],action:"niet"},f:["niet"]}," ",{p:[36,3,2942],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[36,22,2961]}],action:"twou"},f:["twou"]}," ",{p:[37,3,3045],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[37,22,3064]}],action:"phi"},f:["phi"]}," ",{p:[38,3,3146],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[38,22,3165]}],action:"coa"},f:["coa"]}]}," ",{p:[40,5,3268],t:7,e:"ui-section",a:{label:"suffix"},f:[{p:[41,3,3299],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[41,22,3318]}],action:" the Red"},f:["the Red"]}," ",{p:[42,3,3409],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[42,22,3428]}],action:" the Soulless"},f:["the Soulless"]}," ",{p:[43,3,3529],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[43,22,3548]}],action:" the Master"},f:["the Master"]}," ",{p:[44,3,3645],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[44,22,3664]}],action:", the Lord of all things"},f:["the Lord of all things"]}," ",{p:[45,3,3786],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[45,22,3805]}],action:", Jr."},f:["jr"]}]}," ",{p:[47,5,3909],t:7,e:"ui-section",a:{label:"submit"},f:[{p:[48,3,3941],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0>=4?null:"disabled"'},p:[48,21,3959]}],action:"search"},f:["search"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],384:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[2,1,2],t:7,e:"ui-button",a:{icon:"circle",action:"clean_order"},f:["Clear Order"]},{p:[2,70,71],t:7,e:"br"},{p:[2,74,75],t:7,e:"br"}," ",{p:[3,1,81],t:7,e:"i",f:["Your new computer device you always dreamed of is just four steps away..."]},{p:[3,81,161],t:7,e:"hr"}," ",{t:4,f:[" ",{p:[5,1,223],t:7,e:"div",a:{"class":"item"},f:[{p:[6,2,244],t:7,e:"h2",f:["Step 1: Select your device type"]}," ",{p:[7,2,287],t:7,e:"ui-button",a:{icon:"calc",action:"pick_device",params:'{"pick" : "1"}'},f:["Laptop"]}," ",{p:[8,2,377],t:7,e:"ui-button",a:{icon:"calc",action:"pick_device",params:'{"pick" : "2"}'},f:["LTablet"]}]}],n:50,x:{r:["data.state"],s:"_0==0"},p:[4,1,167]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.state"],s:"_0==1"},f:[{p:[11,1,502],t:7,e:"div",a:{"class":"item"},f:[{p:[12,2,523],t:7,e:"h2",f:["Step 2: Personalise your device"]}," ",{p:[13,2,566],t:7,e:"table",f:[{p:[14,3,577],t:7,e:"tr",f:[{p:[15,4,586],t:7,e:"td",f:[{p:[15,8,590],t:7,e:"b",f:["Current Price:"]}]},{p:[16,4,616],t:7,e:"td",f:[{t:2,r:"data.totalprice",p:[16,8,620]},"C"]}]}," ",{p:[18,3,653],t:7,e:"tr",f:[{p:[19,4,663],t:7,e:"td",f:[{p:[19,8,667],t:7,e:"b",f:["Battery:"]}]},{p:[20,4,687],t:7,e:"td",f:[{p:[20,8,691],t:7,e:"ui-button",a:{action:"hw_battery",params:'{"battery" : "1"}',state:[{t:2,x:{r:["data.hw_battery"],s:'_0==1?"selected":null'},p:[20,73,756]}]},f:["Standard"]}]},{p:[21,4,827],t:7,e:"td",f:[{p:[21,8,831],t:7,e:"ui-button",a:{action:"hw_battery",params:'{"battery" : "2"}',state:[{t:2,x:{r:["data.hw_battery"],s:'_0==2?"selected":null'},p:[21,73,896]}]},f:["Upgraded"]}]},{p:[22,4,967],t:7,e:"td",f:[{p:[22,8,971],t:7,e:"ui-button",a:{action:"hw_battery",params:'{"battery" : "3"}',state:[{t:2,x:{r:["data.hw_battery"],s:'_0==3?"selected":null'},p:[22,73,1036]}]},f:["Advanced"]}]}]}," ",{p:[24,3,1115],t:7,e:"tr",f:[{p:[25,4,1124],t:7,e:"td",f:[{p:[25,8,1128],t:7,e:"b",f:["Hard Drive:"]}]},{p:[26,4,1151],t:7,e:"td",f:[{p:[26,8,1155],t:7,e:"ui-button",a:{action:"hw_disk",params:'{"disk" : "1"}',state:[{t:2,x:{r:["data.hw_disk"],s:'_0==1?"selected":null'},p:[26,67,1214]}]},f:["Standard"]}]},{p:[27,4,1282],t:7,e:"td",f:[{p:[27,8,1286],t:7,e:"ui-button",a:{action:"hw_disk",params:'{"disk" : "2"}',state:[{t:2,x:{r:["data.hw_disk"],s:'_0==2?"selected":null'},p:[27,67,1345]}]},f:["Upgraded"]}]},{p:[28,4,1413],t:7,e:"td",f:[{p:[28,8,1417],t:7,e:"ui-button",a:{action:"hw_disk",params:'{"disk" : "3"}',state:[{t:2,x:{r:["data.hw_disk"],s:'_0==3?"selected":null'},p:[28,67,1476]}]},f:["Advanced"]}]}]}," ",{p:[30,3,1552],t:7,e:"tr",f:[{p:[31,4,1561],t:7,e:"td",f:[{p:[31,8,1565],t:7,e:"b",f:["Network Card:"]}]},{p:[32,4,1590],t:7,e:"td",f:[{p:[32,8,1594],t:7,e:"ui-button",a:{action:"hw_netcard",params:'{"netcard" : "0"}',state:[{t:2,x:{r:["data.hw_netcard"],s:'_0==0?"selected":null'},p:[32,73,1659]}]},f:["None"]}]},{p:[33,4,1726],t:7,e:"td",f:[{p:[33,8,1730],t:7,e:"ui-button",a:{action:"hw_netcard",params:'{"netcard" : "1"}',state:[{t:2,x:{r:["data.hw_netcard"],s:'_0==1?"selected":null'},p:[33,73,1795]}]},f:["Standard"]}]},{p:[34,4,1866],t:7,e:"td",f:[{p:[34,8,1870],t:7,e:"ui-button",a:{action:"hw_netcard",params:'{"netcard" : "2"}',state:[{t:2,x:{r:["data.hw_netcard"],s:'_0==2?"selected":null'},p:[34,73,1935]}]},f:["Advanced"]}]}]}," ",{p:[36,3,2014],t:7,e:"tr",f:[{p:[37,4,2023],t:7,e:"td",f:[{p:[37,8,2027],t:7,e:"b",f:["Nano Printer:"]}]},{p:[38,4,2052],t:7,e:"td",f:[{p:[38,8,2056],t:7,e:"ui-button",a:{action:"hw_nanoprint",params:'{"print" : "0"}',state:[{t:2,x:{r:["data.hw_nanoprint"],s:'_0==0?"selected":null'},p:[38,73,2121]}]},f:["None"]}]},{p:[39,4,2190],t:7,e:"td",f:[{p:[39,8,2194],t:7,e:"ui-button",a:{action:"hw_nanoprint",params:'{"print" : "1"}',state:[{t:2,x:{r:["data.hw_nanoprint"],s:'_0==1?"selected":null'},p:[39,73,2259]}]},f:["Standard"]}]}]}," ",{p:[41,3,2340],t:7,e:"tr",f:[{p:[42,4,2349],t:7,e:"td",f:[{p:[42,8,2353],t:7,e:"b",f:["Card Reader:"]}]},{p:[43,4,2377],t:7,e:"td",f:[{p:[43,8,2381],t:7,e:"ui-button",a:{action:"hw_card",params:'{"card" : "0"}',state:[{t:2,x:{r:["data.hw_card"],s:'_0==0?"selected":null'},p:[43,67,2440]}]},f:["None"]}]},{p:[44,4,2504],t:7,e:"td",f:[{p:[44,8,2508],t:7,e:"ui-button",a:{action:"hw_card",params:'{"card" : "1"}',state:[{t:2,x:{r:["data.hw_card"],s:'_0==1?"selected":null'},p:[44,67,2567]}]},f:["Standard"]}]}]}]}," ",{t:4,f:[" ",{p:[49,4,2706],t:7,e:"table",f:[{p:[50,5,2719],t:7,e:"tr",f:[{p:[51,6,2730],t:7,e:"td",f:[{p:[51,10,2734],t:7,e:"b",f:["Processor Unit:"]}]},{p:[52,6,2763],t:7,e:"td",f:[{p:[52,10,2767],t:7,e:"ui-button",a:{action:"hw_cpu",params:'{"cpu" : "1"}',state:[{t:2,x:{r:["data.hw_cpu"],s:'_0==1?"selected":null'},p:[52,67,2824]}]},f:["Standard"]}]},{p:[53,6,2893],t:7,e:"td",f:[{p:[53,10,2897],t:7,e:"ui-button",a:{action:"hw_cpu",params:'{"cpu" : "2"}',state:[{t:2,x:{r:["data.hw_cpu"],s:'_0==2?"selected":null'},p:[53,67,2954]}]},f:["Advanced"]}]}]}," ",{p:[55,5,3033],t:7,e:"tr",f:[{p:[56,6,3044],t:7,e:"td",f:[{p:[56,10,3048],t:7,e:"b",f:["Tesla Relay:"]}]},{p:[57,6,3074],t:7,e:"td",f:[{p:[57,10,3078],t:7,e:"ui-button",a:{action:"hw_tesla",params:'{"tesla" : "0"}',state:[{t:2,x:{r:["data.hw_tesla"],s:'_0==0?"selected":null'},p:[57,71,3139]}]},f:["None"]}]},{p:[58,6,3206],t:7,e:"td",f:[{p:[58,10,3210],t:7,e:"ui-button",a:{action:"hw_tesla",params:'{"tesla" : "1"}',state:[{t:2,x:{r:["data.hw_tesla"],s:'_0==1?"selected":null'},p:[58,71,3271]}]},f:["Standard"]}]}]}]}],n:50,x:{r:["data.devtype"],s:"_0!=2"},p:[48,3,2659]}," ",{p:[62,3,3374],t:7,e:"table",f:[{p:[63,4,3386],t:7,e:"tr",f:[{p:[64,5,3396],t:7,e:"td",f:[{p:[64,9,3400],t:7,e:"b",f:["Confirm Order:"]}]},{p:[65,5,3427],t:7,e:"td",f:[{p:[65,9,3431],t:7,e:"ui-button",a:{action:"confirm_order"},f:["CONFIRM"]}]}]}]}," ",{p:[69,2,3512],t:7,e:"hr"}," ",{p:[70,2,3519],t:7,e:"b",f:["Battery"]}," allows your device to operate without external utility power source. Advanced batteries increase battery life.",{p:[70,127,3644],t:7,e:"br"}," ",{p:[71,2,3651],t:7,e:"b",f:["Hard Drive"]}," stores file on your device. Advanced drives can store more files, but use more power, shortening battery life.",{p:[71,130,3779],t:7,e:"br"}," ",{p:[72,2,3786],t:7,e:"b",f:["Network Card"]}," allows your device to wirelessly connect to stationwide NTNet network. Basic cards are limited to on-station use, while advanced cards can operate anywhere near the station, which includes the asteroid outposts.",{p:[72,233,4017],t:7,e:"br"}," ",{p:[73,2,4024],t:7,e:"b",f:["Processor Unit"]}," is critical for your device's functionality. It allows you to run programs from your hard drive. Advanced CPUs use more power, but allow you to run more programs on background at once.",{p:[73,208,4230],t:7,e:"br"}," ",{p:[74,2,4237],t:7,e:"b",f:["Tesla Relay"]}," is an advanced wireless power relay that allows your device to connect to nearby area power controller to provide alternative power source. This component is currently unavailable on tablet computers due to size restrictions.",{p:[74,246,4481],t:7,e:"br"}," ",{p:[75,2,4488],t:7,e:"b",f:["Nano Printer"]}," is device that allows for various paperwork manipulations, such as, scanning of documents or printing new ones. This device was certified EcoFriendlyPlus and is capable of recycling existing paper for printing purposes.",{p:[75,241,4727],t:7,e:"br"}," ",{p:[76,2,4734],t:7,e:"b",f:["Card Reader"]}," adds a slot that allows you to manipulate RFID cards. Please note that this is not necessary to allow the device to read your identification, it is just necessary to manipulate other cards."]}]},{t:4,n:50,x:{r:["data.state"],s:"(!(_0==1))&&(_0==2)"},f:[" ",{p:[79,2,4981],t:7,e:"h2",f:["Step 3: Payment"]}," ",{p:[80,2,5008],t:7,e:"b",f:["Your device is now ready for fabrication.."]},{p:[80,51,5057],t:7,e:"br"}," ",{p:[81,2,5064],t:7,e:"i",f:["Please ensure the required amount of credits are in the machine, then press purchase."]},{p:[81,94,5156],t:7,e:"br"}," ",{p:[82,2,5163],t:7,e:"i",f:["Current credits: ",{p:[82,22,5183],t:7,e:"b",f:[{t:2,r:"data.credits",p:[82,25,5186]},"C"]}]},{p:[82,50,5211],t:7,e:"br"}," ",{p:[83,2,5218],t:7,e:"i",f:["Total price: ",{p:[83,18,5234],t:7,e:"b",f:[{t:2,r:"data.totalprice",p:[83,21,5237]},"C"]}]},{p:[83,49,5265],t:7,e:"br"},{p:[83,53,5269],t:7,e:"br"}," ",{p:[84,2,5276],t:7,e:"ui-button",a:{action:"purchase",state:[{t:2,x:{r:["data.credits","data.totalprice"],s:'_0>=_1?null:"disabled"'},p:[84,38,5312]}]},f:["PURCHASE"]}]},{t:4,n:50,x:{r:["data.state"],s:"(!(_0==1))&&((!(_0==2))&&(_0==3))"},f:[" ",{p:[87,2,5423],t:7,e:"h2",f:["Step 4: Thank you for your purchase"]},{p:[87,46,5467],t:7,e:"br"}," ",{p:[88,2,5474],t:7,e:"b",f:["Should you experience any issues with your new device, contact your local network admin for assistance."]}]}],x:{r:["data.state"],s:"_0==0"}}]},e.exports=a.extend(r.exports)},{341:341}],385:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,1,22],t:7,e:"ui-display",f:[{p:[3,2,37],t:7,e:"ui-section",a:{label:"Cap"},f:[{p:[4,3,65],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.is_capped"],s:'_0?"power-off":"close"'},p:[4,20,82]}],style:[{t:2,x:{r:["data.is_capped"],s:'_0?null:"selected"'},p:[4,71,133]}],action:"toggle_cap"},f:[{t:2,x:{r:["data.is_capped"],s:'_0?"On":"Off"'},p:[6,4,202]}]}]}]}],n:50,r:"data.has_cap",p:[1,1,0]},{p:[10,1,288],t:7,e:"ui-display",f:[{t:4,f:[{p:[14,2,419],t:7,e:"ui-section",f:[{p:[15,3,435],t:7,e:"ui-button",a:{action:"select_colour"},f:["Select New Colour"]}]}],n:50,r:"data.can_change_colour",p:[13,1,386]}]}," ",{p:[19,1,540],t:7,e:"ui-display",a:{title:"Stencil"},f:[{t:4,f:[{p:[21,2,599],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[21,21,618]}]},f:[{t:4,f:[{p:[23,7,655],t:7,e:"ui-button",a:{action:"select_stencil",params:['{"item":"',{t:2,r:"item",p:[23,59,707]},'"}'],style:[{t:2,x:{r:["item","data.selected_stencil"],s:'_0==_1?"selected":null'},p:[24,12,731]}]},f:[{t:2,r:"item",p:[25,4,791]}]}],n:52,r:"items",p:[22,3,632]}]}],n:52,r:"data.drawables",p:[20,3,572]}]}," ",{p:[31,1,874],t:7,e:"ui-display",a:{title:"Text Mode"},f:[{p:[32,2,907],t:7,e:"ui-section",a:{label:"Current Buffer"},f:[{t:2,r:"data.text_buffer",p:[32,37,942]}]}," ",{p:[34,2,981],t:7,e:"ui-section",f:[{p:[34,14,993],t:7,e:"ui-button",a:{action:"enter_text"},f:["New Text"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],386:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{isHead:function(t){return t%10==0},dept_class:function(t){return 0==t?"dept-cap":t>=10&&20>t?"dept-sec":t>=20&&30>t?"dept-med":t>=30&&40>t?"dept-sci":t>=40&&50>t?"dept-eng":t>=50&&60>t?"dept-cargo":t>=200&&230>t?"dept-cent":"dept-other"},health_state:function(t,e,n,a){var r=t+e+n+a;return 0>=r?"health-5":25>=r?"health-4":50>=r?"health-3":75>=r?"health-2":"health-0"}}}}(r),r.exports.css=" .health {\r\n width: 16px;\r\n height: 16px;\r\n background-color: #FFF;\r\n border: 1px solid #434343;\r\n position: relative;\r\n top: 2px;\r\n display: inline-block;\r\n }\r\n .health-5 { background-color: #17d568; }\r\n .health-4 { background-color: #2ecc71; }\r\n .health-3 { background-color: #e67e22; }\r\n .health-2 { background-color: #ed5100; }\r\n .health-1 { background-color: #e74c3c; }\r\n .health-0 { background-color: #ed2814; }\r\n\r\n .dept-cap {color : #C06616;}\r\n .dept-sec {color : #E74C3C;}\r\n .dept-med {color : #3498DB;}\r\n .dept-sci {color : #9B59B6;}\r\n .dept-eng {color : #F1C40F;}\r\n .dept-cargo {color : #F39C12;}\r\n .dept-cent {color : #00C100;}\r\n .dept-other {color: #C38312;}\r\n\r\n .oxy { color : #3498db; }\r\n .toxin { color : #2ecc71; }\r\n .burn { color : #e67e22; }\r\n .brute { color : #e74c3c; }\r\n\r\n table.crew{\r\n border-collapse: collapse;\r\n }\r\n\r\n table.crew td {\r\n padding : 0px 10px;\r\n }",r.exports.template={v:3,t:[" ",{p:[27,1,1030],t:7,e:"ui-display",f:[{p:[28,2,1045],t:7,e:"ui-section",f:[{p:[29,3,1061],t:7,e:"table",a:{"class":"crew"},f:[{p:[30,3,1085],t:7,e:"thead",f:[{p:[31,3,1096],t:7,e:"tr",f:[{p:[32,4,1105],t:7,e:"th",f:["Name"]}," ",{p:[33,4,1123],t:7,e:"th",f:["Status"]}," ",{p:[34,4,1143],t:7,e:"th",f:["Vitals"]}," ",{p:[35,4,1163],t:7,e:"th",f:["Position"]}," ",{t:4,f:[{p:[37,5,1216],t:7,e:"th",f:["Tracking"]}],n:50,r:"data.link_allowed",p:[36,4,1185]}]}]}," ",{p:[41,3,1270],t:7,e:"tbody",f:[{t:4,f:[{p:[43,4,1308],t:7,e:"tr",f:[{p:[44,5,1318],t:7,e:"td",f:[{p:[45,6,1329],t:7,e:"span",a:{"class":[{t:2,x:{r:["isHead","ijob"],s:'_0(_1)?"bold ":""'},p:[45,19,1342]},{t:2,x:{r:["dept_class","ijob"],s:"_0(_1)"},p:[45,49,1372]}]},f:[{t:2,r:"name",p:[46,7,1402]}," (",{t:2,r:"assignment",p:[46,17,1412]},") ",{p:[47,6,1434],t:7,e:"span",f:[]}]}]}," ",{p:[49,5,1457],t:7,e:"td",f:[{t:4,f:[{p:[51,7,1498],t:7,e:"span",a:{"class":["health ",{t:2,x:{r:["health_state","oxydam","toxdam","burndam","brutedam"],s:"_0(_1,_2,_3,_4)"},p:[51,27,1518]}]}}],n:50,x:{r:["oxydam"],s:"_0!=null"},p:[50,6,1468]},{t:4,n:51,f:[{t:4,f:[{p:[54,8,1626],t:7,e:"span",a:{"class":"health health-5"}}],n:50,r:"life_status",p:[53,7,1598]},{t:4,n:51,f:[{p:[56,8,1688],t:7,e:"span",a:{"class":"health health-0"}}],r:"life_status"}],x:{r:["oxydam"],s:"_0!=null"}}]}," ",{p:[60,5,1771],t:7,e:"td",f:[{t:4,f:[{p:[62,7,1812],t:7,e:"span",f:["( ",{p:[64,8,1836],t:7,e:"span",a:{"class":"oxy"},f:[{t:2,r:"oxydam",p:[64,26,1854]}]}," / ",{p:[66,8,1890],t:7,e:"span",a:{"class":"toxin"},f:[{t:2,r:"toxdam",p:[66,28,1910]}]}," / ",{p:[68,8,1946],t:7,e:"span",a:{"class":"burn"},f:[{t:2,r:"burndam",p:[68,27,1965]}]}," / ",{p:[70,8,2002],t:7,e:"span",a:{"class":"brute"},f:[{t:2,r:"brutedam",p:[70,28,2022]}]}," )"]}],n:50,x:{r:["oxydam"],s:"_0!=null"},p:[61,6,1782]},{t:4,n:51,f:[{t:4,f:[{p:[75,8,2116],t:7,e:"span",f:["Alive"]}],n:50,r:"life_status",p:[74,7,2088]},{t:4,n:51,f:[{p:[77,8,2159],t:7,e:"span",f:["Dead"]}],r:"life_status"}],x:{r:["oxydam"],s:"_0!=null"}}]}," ",{p:[81,5,2222],t:7,e:"td",f:[{t:4,f:[{p:[83,6,2260],t:7,e:"span",f:[{t:2,r:"area",p:[83,12,2266]}]}],n:50,x:{r:["pos_x"],s:"_0!=null"},p:[82,5,2232]},{t:4,n:51,f:[{p:[85,6,2302],t:7,e:"span",f:["N/A"]}],x:{r:["pos_x"],s:"_0!=null"}}]}," ",{t:4,f:[{p:[89,6,2381],t:7,e:"td",f:[{p:[90,7,2393],t:7,e:"ui-button",a:{action:"select_person",state:[{t:2,x:{r:["can_track"],s:'_0?null:"disabled"'},p:[90,48,2434]}],params:['{"name":"',{t:2,r:"name",p:[90,100,2486]},'"}']},f:["Track"]}]}],n:50,r:"data.link_allowed",p:[88,5,2348]}]}],n:52,r:"data.sensors",p:[42,3,1281]}]}]}]}]}," "]},e.exports=a.extend(r.exports)},{341:341}],387:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[2,3,33],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[3,3,66],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[3,9,72]}]}]}," ",{t:4,f:[{p:[6,5,189],t:7,e:"ui-section",a:{label:"State"},f:[{p:[7,7,223],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.statstate",p:[7,20,236]}]},f:[{t:2,r:"data.occupant.stat",p:[7,49,265]}]}]}," ",{p:[9,4,317],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[10,6,356],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.temperaturestatus",p:[10,19,369]}]},f:[{t:2,r:"data.occupant.bodyTemperature",p:[10,56,406]}," K"]}]}," ",{p:[12,5,472],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[13,7,507],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[13,20,520]}],max:[{t:2,r:"data.occupant.maxHealth",p:[13,54,554]}],value:[{t:2,r:"data.occupant.health",p:[13,90,590]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[14,16,632]}]},f:[{t:2,r:"data.occupant.health",p:[14,68,684]}]}]}," ",{t:4,f:[{p:[17,7,908],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[17,26,927]}]},f:[{p:[18,9,948],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[18,30,969]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[18,66,1005]}],state:"bad"},f:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[18,103,1042]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[16,5,742]}],n:50,r:"data.hasOccupant",p:[5,3,159]}]}," ",{p:[23,1,1138],t:7,e:"ui-display",a:{title:"Cell"},f:[{p:[24,3,1167],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[25,5,1199],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[25,22,1216]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[26,14,1276]}],state:[{t:2,x:{r:["data.isOpen"],s:'_0?"disabled":null'},p:[27,14,1332]}],action:"power"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[28,22,1391]}]}]}," ",{p:[30,3,1459],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[31,3,1495],t:7,e:"span",a:{"class":[{t:2,r:"data.temperaturestatus",p:[31,16,1508]}]},f:[{t:2,r:"data.cellTemperature",p:[31,44,1536]}," K"]}]}," ",{p:[33,2,1588],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[34,5,1619],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOpen"],s:'_0?"unlock":"lock"'},p:[34,22,1636]}],action:"door"},f:[{t:2,x:{r:["data.isOpen"],s:'_0?"Open":"Closed"'},p:[34,73,1687]}]}," ",{p:[35,5,1740],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoEject"],s:'_0?"sign-out":"sign-in"'},p:[35,22,1757]}],action:"autoeject"},f:[{t:2,x:{r:["data.autoEject"],s:'_0?"Auto":"Manual"'},p:[35,86,1821]}]}]}]}," ",{p:{button:[{p:[40,5,1967],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[40,36,1998]}],action:"ejectbeaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[42,3,2101],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[45,9,2211],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,r:"volume",p:[45,52,2254]}," units of ",{t:2,r:"name",p:[45,72,2274]}]},{p:[45,87,2289],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[44,7,2171]},{t:4,n:51,f:[{p:[47,9,2320],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[43,5,2136]},{t:4,n:51,f:[{p:[50,7,2396],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],388:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,2,15],t:7,e:"ui-section",a:{label:"State"},f:[{t:4,f:[{p:[4,4,76],t:7,e:"span",a:{"class":"good"},f:["Ready"]}],n:50,r:"data.full_pressure",p:[3,3,45]},{t:4,n:51,f:[{t:4,f:[{p:[7,5,153],t:7,e:"span",a:{"class":"bad"},f:["Power Disabled"]}],n:50,r:"data.panel_open",p:[6,4,124]},{t:4,n:51,f:[{t:4,f:[{p:[10,6,248],t:7,e:"span",a:{"class":"average"},f:["Pressurizing"]}],n:50,r:"data.pressure_charging",p:[9,5,211]},{t:4,n:51,f:[{p:[12,6,310],t:7,e:"span",a:{"class":"bad"},f:["Off"]}],r:"data.pressure_charging"}],r:"data.panel_open"}],r:"data.full_pressure"}]}," ",{p:[17,2,393],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[18,3,426],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.per",p:[18,36,459]}],state:"good"},f:[{t:2,r:"data.per",p:[18,63,486]},"%"]}] +}," ",{p:[20,5,530],t:7,e:"ui-section",a:{label:"Handle"},f:[{p:[21,9,567],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.flush"],s:'_0?"toggle-on":"toggle-off"'},p:[22,10,589]}],state:[{t:2,x:{r:["data.isai","data.panel_open"],s:'_0||_1?"disabled":null'},p:[23,11,647]}],action:[{t:2,x:{r:["data.flush"],s:'_0?"handle-0":"handle-1"'},p:[24,12,714]}]},f:[{t:2,x:{r:["data.flush"],s:'_0?"Disengage":"Engage"'},p:[25,5,763]}]}]}," ",{p:[27,2,837],t:7,e:"ui-section",a:{label:"Eject"},f:[{p:[28,3,867],t:7,e:"ui-button",a:{icon:"sign-out",state:[{t:2,x:{r:["data.isai"],s:'_0?"disabled":null'},p:[28,37,901]}],action:"eject"},f:["Eject Contents"]},{p:[28,114,978],t:7,e:"br"}]}," ",{p:[30,2,1002],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[31,3,1032],t:7,e:"ui-button",a:{icon:"power-off",state:[{t:2,x:{r:["data.panel_open"],s:'_0?"disabled":null'},p:[31,38,1067]}],action:[{t:2,x:{r:["data.pressure_charging"],s:'_0?"pump-0":"pump-1"'},p:[31,87,1116]}],style:[{t:2,x:{r:["data.pressure_charging"],s:'_0?"selected":null'},p:[31,145,1174]}]}},{p:[31,206,1235],t:7,e:"br"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],389:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"DNA Vault Database"},f:[{p:[2,3,43],t:7,e:"ui-section",a:{label:"Human DNA"},f:[{p:[3,7,81],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.dna_max",p:[3,28,102]}],value:[{t:2,r:"data.dna",p:[3,53,127]}]},f:[{t:2,r:"data.dna",p:[3,67,141]},"/",{t:2,r:"data.dna_max",p:[3,80,154]}," Samples"]}]}," ",{p:[5,3,208],t:7,e:"ui-section",a:{label:"Plant Data"},f:[{p:[6,5,245],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.plants_max",p:[6,26,266]}],value:[{t:2,r:"data.plants",p:[6,54,294]}]},f:[{t:2,r:"data.plants",p:[6,71,311]},"/",{t:2,r:"data.plants_max",p:[6,87,327]}," Samples"]}]}," ",{p:[8,3,384],t:7,e:"ui-section",a:{label:"Animal Data"},f:[{p:[9,5,422],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.animals_max",p:[9,26,443]}],value:[{t:2,r:"data.animals",p:[9,55,472]}]},f:[{t:2,r:"data.animals",p:[9,73,490]},"/",{t:2,r:"data.animals_max",p:[9,90,507]}," Samples"]}]}]}," ",{t:4,f:[{p:[13,1,616],t:7,e:"ui-display",a:{title:"Personal Gene Therapy"},f:[{p:[14,3,663],t:7,e:"ui-section",f:[{p:[15,2,678],t:7,e:"span",f:["Applicable gene therapy treatments:"]}]}," ",{p:[17,3,747],t:7,e:"ui-section",f:[{p:[18,2,762],t:7,e:"ui-button",a:{action:"gene",params:['{"choice": "',{t:2,r:"data.choiceA",p:[18,47,807]},'"}']},f:[{t:2,r:"data.choiceA",p:[18,67,827]}]}," ",{p:[19,2,858],t:7,e:"ui-button",a:{action:"gene",params:['{"choice": "',{t:2,r:"data.choiceB",p:[19,47,903]},'"}']},f:[{t:2,r:"data.choiceB",p:[19,67,923]}]}]}]}],n:50,x:{r:["data.completed","data.used"],s:"_0&&!_1"},p:[12,1,578]}]},e.exports=a.extend(r.exports)},{341:341}],390:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[2,3,33],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[3,3,66],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[3,9,72]}]}]}," ",{t:4,f:[{p:[6,5,183],t:7,e:"ui-section",a:{label:"Items in storage"},f:[{p:[7,4,225],t:7,e:"span",f:[{t:2,r:"data.items",p:[7,10,231]}]}]}],n:50,r:"data.items",p:[5,3,159]}," ",{t:4,f:[{p:[11,5,310],t:7,e:"ui-section",a:{label:"State"},f:[{p:[12,7,344],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.statstate",p:[12,20,357]}]},f:[{t:2,r:"data.occupant.stat",p:[12,49,386]}]}]}," ",{p:[14,5,439],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[15,7,474],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[15,20,487]}],max:[{t:2,r:"data.occupant.maxHealth",p:[15,54,521]}],value:[{t:2,r:"data.occupant.health",p:[15,90,557]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[16,16,599]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[16,68,651]}]}]}," ",{t:4,f:[{p:[19,7,888],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[19,26,907]}]},f:[{p:[20,9,928],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[20,30,949]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[20,66,985]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[20,103,1022]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[18,5,722]}," ",{p:[23,5,1109],t:7,e:"ui-section",a:{label:"Cells"},f:[{p:[24,9,1145],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"bad":"good"'},p:[24,22,1158]}]},f:[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"Damaged":"Healthy"'},p:[24,68,1204]}]}]}," ",{p:[26,5,1287],t:7,e:"ui-section",a:{label:"Brain"},f:[{p:[27,9,1323],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"bad":"good"'},p:[27,22,1336]}]},f:[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"Abnormal":"Healthy"'},p:[27,68,1382]}]}]}," ",{p:[29,5,1466],t:7,e:"ui-section",a:{label:"Bloodstream"},f:[{t:4,f:[{p:[31,11,1553],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,1)"},p:[31,54,1596]}," units of ",{t:2,r:"name",p:[31,89,1631]}]},{p:[31,104,1646],t:7,e:"br"}],n:52,r:"adata.occupant.reagents",p:[30,9,1508]},{t:4,n:51,f:[{p:[33,11,1681],t:7,e:"span",a:{"class":"good"},f:["Pure"]}],r:"adata.occupant.reagents"}]}],n:50,r:"data.occupied",p:[10,3,283]}]}," ",{p:[38,1,1777],t:7,e:"ui-display",a:{title:"Operations"},f:[{p:[39,3,1812],t:7,e:"ui-section",a:{label:"Inject"},f:[{t:4,f:[{p:[41,7,1872],t:7,e:"ui-button",a:{icon:"flask",state:[{t:2,x:{r:["data.occupied"],s:'_0?null:"disabled"'},p:[41,38,1903]}],action:"inject",params:['{"chem": "',{t:2,r:"id",p:[41,111,1976]},'"}']},f:[{t:2,r:"name",p:[41,121,1986]}]},{p:[41,141,2006],t:7,e:"br"}],n:52,r:"data.chem",p:[40,5,1845]}]}," ",{p:[44,2,2046],t:7,e:"ui-section",a:{label:"Eject"},f:[{p:[45,6,2079],t:7,e:"ui-button",a:{icon:"sign-out",action:"eject"},f:["Eject Contents"]}]}," ",{p:[47,2,2166],t:7,e:"ui-section",a:{label:"Self Cleaning"},f:[{p:[48,3,2204],t:7,e:"ui-button",a:{icon:"recycle",action:"cleaning"},f:["Self-Clean Cycle"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],391:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,24],t:7,e:"ui-display",a:{title:[{t:2,r:"data.question",p:[2,21,42]}]},f:[{p:[3,5,66],t:7,e:"ui-section",f:[{t:4,f:[{p:[5,9,118],t:7,e:"ui-button",a:{action:"vote",params:['{"answer": "',{t:2,r:"answer",p:[6,45,174]},'"}'],style:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[7,18,206]}]},f:[{t:2,r:"answer",p:[7,53,241]}," (",{t:2,r:"amount",p:[7,65,253]},")"]}],n:52,r:"data.answers",p:[4,7,86]}]}]}],n:50,r:"data.shaking",p:[1,1,0]},{t:4,n:51,f:[{p:[13,3,353],t:7,e:"ui-notice",f:["The eightball is not currently being shaken."]}],r:"data.shaking"}]},e.exports=a.extend(r.exports)},{341:341}],392:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,5,17],t:7,e:"span",f:["Time Until Launch: ",{t:2,r:"data.timer_str",p:[2,30,42]}]}]}," ",{p:[4,1,83],t:7,e:"ui-notice",f:[{p:[5,3,98],t:7,e:"span",f:["Engines: ",{t:2,x:{r:["data.engines_started"],s:'_0?"Online":"Idle"'},p:[5,18,113]}]}]}," ",{p:[7,1,180],t:7,e:"ui-display",a:{title:"Early Launch"},f:[{p:[8,2,216],t:7,e:"span",f:["Authorizations Remaining: ",{t:2,x:{r:["data.emagged","data.authorizations_remaining"],s:'_0?"ERROR":_1'},p:[9,2,250]}]}," ",{p:[10,2,318],t:7,e:"ui-button",a:{icon:"exclamation-triangle",action:"authorize",style:"danger",state:[{t:2,x:{r:["data.enabled"],s:'_0?null:"disabled"'},p:[12,10,404]}]},f:["AUTHORIZE"]}," ",{p:[15,2,473],t:7,e:"ui-button",a:{icon:"minus",action:"repeal",state:[{t:2,x:{r:["data.enabled"],s:'_0?null:"disabled"'},p:[16,10,523]}]},f:["Repeal"]}," ",{p:[19,2,589],t:7,e:"ui-button",a:{icon:"close",action:"abort",state:[{t:2,x:{r:["data.enabled"],s:'_0?null:"disabled"'},p:[20,10,638]}]},f:["Repeal All"]}]}," ",{p:[24,1,722],t:7,e:"ui-display",a:{title:"Authorizations"},f:[{t:4,f:[{p:[26,3,793],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{t:2,r:"name",p:[26,34,824]}," (",{t:2,r:"job",p:[26,44,834]},")"]}],n:52,r:"data.authorizations",p:[25,2,760]},{t:4,n:51,f:[{p:[28,3,870],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:["No authorizations."]}],r:"data.authorizations"}]}]},e.exports=a.extend(r.exports)},{341:341}],393:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Message"},f:[{t:2,r:"data.hidden_message",p:[3,5,50]}]}," ",{p:[5,3,94],t:7,e:"ui-section",a:{label:"Created On"},f:[{t:2,r:"data.realdate",p:[6,5,131]}]}," ",{p:[8,3,169],t:7,e:"ui-section",a:{label:"Approval"},f:[{p:[9,5,204],t:7,e:"ui-button",a:{icon:"arrow-up",state:[{t:2,x:{r:["data.is_creator","data.has_liked"],s:'_0?"disabled":_1?"selected":null'},p:[11,14,252]}],action:"like"},f:[{t:2,r:"data.num_likes",p:[12,21,344]}]}," ",{p:[13,5,380],t:7,e:"ui-button",a:{icon:"circle",state:[{t:2,x:{r:["data.is_creator","data.has_liked","data.has_disliked"],s:'_0?"disabled":!_1&&!_2?"selected":null'},p:[15,14,426]}],action:"neutral"}}," ",{p:[17,5,562],t:7,e:"ui-button",a:{icon:"arrow-down",state:[{t:2,x:{r:["data.is_creator","data.has_disliked"],s:'_0?"disabled":_1?"selected":null'},p:[19,14,612]}],action:"dislike"},f:[{t:2,r:"data.num_dislikes",p:[20,24,710]}]}]}]}," ",{t:4,f:[{p:[24,3,805],t:7,e:"ui-display",a:{title:"Admin Panel"},f:[{p:[25,5,843],t:7,e:"ui-section",a:{label:"Creator Ckey"},f:[{t:2,r:"data.creator_key",p:[25,38,876]}]}," ",{p:[26,5,915],t:7,e:"ui-section",a:{label:"Creator Character Name"},f:[{t:2,r:"data.creator_name",p:[26,48,958]}]}," ",{p:[27,5,998],t:7,e:"ui-button",a:{icon:"remove",action:"delete",style:"danger"},f:["Delete"]}]}],n:50,r:"data.admin_mode",p:[23,1,778]}]},e.exports=a.extend(r.exports)},{341:341}],394:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The requested interface (",{t:2,r:"config.interface",p:[2,34,46]},") was not found. Does it exist?"]}]}]},e.exports=a.extend(r.exports)},{341:341}],395:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,20],t:7,e:"ui-notice",f:["Currently syncing with the database"]}],n:50,r:"data.sync",p:[1,1,0]},{t:4,n:51,f:[{p:{button:[{p:[8,4,163],t:7,e:"ui-button",a:{icon:"eject",action:"eject_all"},f:["Eject all"]}," ",{p:[9,4,232],t:7,e:"ui-button",a:{icon:["toggle-",{t:2,x:{r:["data.show_materials"],s:'_0?"off":"on"'},p:[9,28,256]}],action:"toggle_materials_visibility"},f:[{t:2,x:{r:["data.show_materials"],s:'_0?"Hide":"Show"'},p:[10,5,339]}]}]},t:7,e:"ui-display",a:{title:"Materials",button:0},f:[" ",{t:4,f:[{p:[14,4,449],t:7,e:"div",a:{"class":"display tabular"},f:[{p:[15,5,484],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[16,6,520],t:7,e:"section",a:{"class":"cell"}}," ",{p:[17,6,559],t:7,e:"section",a:{"class":"cell"},f:["Mineral"]}," ",{p:[20,6,620],t:7,e:"section",a:{"class":"cell"},f:["Amount"]}," ",{p:[23,6,680],t:7,e:"section",a:{"class":"cell"}}," ",{p:[24,6,719],t:7,e:"section",a:{"class":"cell"}}]}," ",{t:4,f:[{p:[27,6,808],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[28,7,845],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[29,8,876]}]}," ",{p:[31,7,910],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"amount",p:[32,8,941]}]}," ",{p:[34,7,977],t:7,e:"section",a:{"class":"cell"},f:[{p:[35,8,1008],t:7,e:"ui-button",a:{icon:"eject"},f:["Release amount"]}]}," ",{p:[37,7,1084],t:7,e:"section",a:{"class":"cell",style:"width: 40px;"},f:[{p:[38,8,1136],t:7,e:"ui-button",a:{icon:"eject"},f:["Release all"]}]}]}],n:52,r:"data.all_materials",p:[26,5,773]}]}],n:50,r:"data.show_materials",p:[13,3,417]}]}," ",{p:[45,2,1274],t:7,e:"ui-display",a:{title:"Categories"},f:[{t:4,f:[{p:[47,4,1334],t:7,e:"ui-button",f:[{t:2,r:".",p:[47,15,1345]}]}],r:"data.categories",p:[46,3,1309]}]}],r:"data.sync"}]},e.exports=a.extend(r.exports)},{341:341}],396:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[3,5,49],t:7,e:"ui-button",a:{action:"toggle_power",style:[{t:2,x:{r:["data.toggle"],s:'_0?"selected":null'},p:[5,18,111]}]},f:["Turn ",{t:2,x:{r:["data.toggle"],s:'_0?"off":"on"'},p:[6,16,166]}]}]}," ",{p:[9,3,235],t:7,e:"ui-display",a:{title:"Logging"},f:[{t:4,f:[{p:[11,3,292],t:7,e:"ui-section",a:{label:">"},f:[{t:2,r:".",p:[11,25,314]},{p:[11,30,319],t:7,e:"ui-section",f:[]}]}],n:52,r:"data.logs",p:[10,5,269]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],397:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{seclevelState:function(){switch(this.get("data.seclevel")){case"blue":return"average";case"red":return"bad";case"delta":return"bad bold";default:return"good"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[16,1,323],t:7,e:"ui-display",f:[{p:[17,5,341],t:7,e:"ui-section",a:{label:"Alert Level"},f:[{p:[18,9,383],t:7,e:"span",a:{"class":[{t:2,r:"seclevelState",p:[18,22,396]}]},f:[{t:2,x:{r:["text","data.seclevel"],s:"_0.titleCase(_1)"},p:[18,41,415]}]}]}," ",{p:[20,5,480],t:7,e:"ui-section",a:{label:"Controls"},f:[{p:[21,9,519],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.alarm"],s:'_0?"close":"bell-o"'},p:[21,26,536]}],action:[{t:2,x:{r:["data.alarm"],s:'_0?"reset":"alarm"'},p:[21,71,581]}]},f:[{t:2,x:{r:["data.alarm"],s:'_0?"Reset":"Activate"'},p:[22,13,631]}]}]}," ",{t:4,f:[{p:[25,7,733],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[26,9,771],t:7,e:"span",a:{"class":"bad bold"},f:["Safety measures offline. Device may exhibit abnormal behavior."]}]}],n:50,r:"data.emagged",p:[24,5,705]}]}]},e.exports=a.extend(r.exports)},{341:341}],398:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[2,1,31],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,2,60],t:7,e:"ui-button",a:{icon:"power-off",style:[{t:2,x:{r:["data.power"],s:'_0?"selected":"danger"'},p:[3,37,95]}],action:"power"},f:[{t:2,x:{r:["data.power"],s:'_0?"Enabled":"Disabled"'},p:[3,92,150]}]}]}," ",{p:[5,1,218],t:7,e:"ui-section",a:{label:"Tag"},f:[{p:[6,2,245],t:7,e:"ui-button",a:{icon:"pencil",action:"rename"},f:[{t:2,r:"data.tag",p:[6,43,286]}]}]}," ",{p:[8,1,327],t:7,e:"ui-section",a:{label:"Scanning mode"},f:[{p:[9,2,364],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.updating"],s:'_0?"unlock":"lock"'},p:[9,18,380]}],style:[{t:2,x:{r:["data.updating"],s:'_0?null:"danger"'},p:[9,63,425]}],action:"updating",tooltip:"Toggle between automatic scanning or scan only when a button is pressed.","tooltip-side":"right"},f:[{t:2,x:{r:["data.updating"],s:'_0?"AUTO":"MANUAL"'},p:[9,221,583]}]}]}," ",{p:[11,1,649],t:7,e:"ui-section",a:{label:"Detection range"},f:[{p:[12,2,688],t:7,e:"ui-button",a:{icon:"refresh",style:[{t:2,x:{r:["data.globalmode"],s:'_0?null:"selected"'},p:[12,35,721]}],action:"globalmode",tooltip:"Local sector or whole region scanning.","tooltip-side":"right"},f:[{t:2,x:{r:["data.globalmode"],s:'_0?"MAXIMUM":"LOCAL"'},p:[12,165,851]}]}]}]}," ",{t:4,f:[{p:[16,2,957],t:7,e:"ui-display",a:{title:"Current Location"},f:[{p:[17,3,998],t:7,e:"span",f:[{t:2,r:"data.current",p:[17,9,1004]}]}]}," ",{p:[20,2,1048],t:7,e:"ui-display",a:{title:"Detected Signals"},f:[{t:4,f:[{p:[22,3,1114],t:7,e:"ui-section",a:{label:[{t:2,r:"entrytag",p:[22,21,1132]}]},f:[{p:[23,3,1149],t:7,e:"span",f:[{t:2,r:"area",p:[23,9,1155]}," (",{t:2,r:"coord",p:[23,19,1165]},")"]}," ",{t:4,f:[{p:[25,4,1209],t:7,e:"span",f:["Dist: ",{t:2,r:"dist",p:[25,16,1221]},"m Dir: ",{t:2,r:"degrees",p:[25,31,1236]},"° (",{t:2,r:"direction",p:[25,45,1250]},")"]}],n:50,r:"direction",p:[24,3,1187]}]}],n:52,r:"data.signals",p:[21,2,1088]}]}],n:50,r:"data.power",p:[15,1,936]}]},e.exports=a.extend(r.exports)},{341:341}],399:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Labor Camp Teleporter"},f:[{p:[2,2,45],t:7,e:"ui-section",a:{label:"Teleporter Status"},f:[{p:[3,3,87],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.teleporter"],s:'_0?"good":"bad"'},p:[3,16,100]}]},f:[{t:2,x:{r:["data.teleporter"],s:'_0?"Connected":"Not connected"'},p:[3,54,138]}]}]}," ",{t:4,f:[{p:[6,4,244],t:7,e:"ui-section",a:{label:"Location"},f:[{p:[7,5,279],t:7,e:"span",f:[{t:2,r:"data.teleporter_location",p:[7,11,285]}]}]}," ",{p:[9,4,343],t:7,e:"ui-section",a:{label:"Locked status"},f:[{p:[10,5,383],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.teleporter_lock"],s:'_0?"lock":"unlock"'},p:[10,22,400]}],action:"teleporter_lock"},f:[{t:2,x:{r:["data.teleporter_lock"],s:'_0?"Locked":"Unlocked"'},p:[10,93,471]}]}," ",{p:[11,5,537],t:7,e:"ui-button",a:{action:"toggle_open"},f:[{t:2,x:{r:["data.teleporter_state_open"],s:'_0?"Open":"Closed"'},p:[11,37,569]}]}]}],n:50,r:"data.teleporter",p:[5,3,216]},{t:4,n:51,f:[{p:[14,4,666],t:7,e:"span",f:[{p:[14,10,672],t:7,e:"ui-button",a:{action:"scan_teleporter"},f:["Scan Teleporter"]}]}],r:"data.teleporter"}]}," ",{p:[17,1,770],t:7,e:"ui-display",a:{title:"Labor Camp Beacon"},f:[{p:[18,2,811],t:7,e:"ui-section",a:{label:"Beacon Status"},f:[{p:[19,3,849],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.beacon"],s:'_0?"good":"bad"'},p:[19,16,862]}]},f:[{t:2,x:{r:["data.beacon"],s:'_0?"Connected":"Not connected"'},p:[19,50,896]}]}]}," ",{t:4,f:[{p:[22,3,992],t:7,e:"ui-section",a:{label:"Location"},f:[{p:[23,4,1026],t:7,e:"span",f:[{t:2,r:"data.beacon_location",p:[23,10,1032]}]}]}],n:50,r:"data.beacon",p:[21,2,969]},{t:4,n:51,f:[{p:[26,4,1097],t:7,e:"span",f:[{p:[26,10,1103],t:7,e:"ui-button",a:{action:"scan_beacon"},f:["Scan Beacon"]}]}],r:"data.beacon"}]}," ",{p:[29,1,1193],t:7,e:"ui-display",a:{title:"Prisoner details"},f:[{p:[30,2,1233],t:7,e:"ui-section",a:{label:"Prisoner ID"},f:[{p:[31,3,1269],t:7,e:"ui-button",a:{action:"handle_id"},f:[{t:2,x:{r:["data.id","data.id_name"],s:'_0?_1:"-------------"'},p:[31,33,1299]}]}]}," ",{t:4,f:[{p:[34,2,1392],t:7,e:"ui-section",a:{label:"Set ID goal"},f:[{p:[35,4,1429],t:7,e:"ui-button",a:{action:"set_goal"},f:[{t:2,r:"data.goal",p:[35,33,1458]}]}]}],n:50,r:"data.id",p:[33,2,1374]}," ",{p:[38,2,1512],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[39,3,1545],t:7,e:"span",f:[{t:2,x:{r:["data.prisoner.name"],s:'_0?_0:"No Occupant"'},p:[39,9,1551]}]}]}," ",{t:4,f:[{p:[42,3,1661],t:7,e:"ui-section",a:{label:"Criminal Status"},f:[{p:[43,4,1702],t:7,e:"span",f:[{t:2,r:"data.prisoner.crimstat",p:[43,10,1708]}]}]}],n:50,r:"data.prisoner",p:[41,2,1636]}]}," ",{p:[47,1,1785],t:7,e:"ui-display",f:[{p:[48,2,1800],t:7,e:"center",f:[{p:[48,10,1808],t:7,e:"ui-button",a:{action:"teleport",state:[{t:2,x:{r:["data.can_teleport"],s:'_0?null:"disabled"'},p:[48,45,1843]}]},f:["Process Prisoner"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],400:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,2,15],t:7,e:"center",f:[{p:[2,10,23],t:7,e:"ui-button",a:{action:"handle_id"},f:[{t:2,x:{r:["data.id","data.id_name"],s:'_0?_1:"-------------"'},p:[2,40,53]}]}]}]}," ",{p:[4,1,135],t:7,e:"ui-display",a:{title:"Stored Items"},f:[{t:4,f:[{p:[6,3,194],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[6,22,213]}]},f:[{p:[7,4,228],t:7,e:"ui-button",a:{action:"release_items",params:['{"mobref":',{t:2,r:"mob",p:[7,56,280]},"}"],state:[{t:2,x:{r:["data.can_reclaim"],s:'_0?null:"disabled"'},p:[7,72,296]}]},f:["Drop Items"]}]}],n:52,r:"data.mobs",p:[5,2,171]}]}]},e.exports=a.extend(r.exports)},{341:341}],401:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{p:[3,3,70],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.emagged"],s:'_0?"un":null'},p:[3,20,87]},"lock"],state:[{t:2,x:{r:["data.can_toggle_safety"],s:'_0?null:"disabled"'},p:[3,63,130]}],action:"safety"},f:["Safeties: ",{p:[4,14,209],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.emagged"],s:'_0?"bad":"good"'},p:[4,27,222]}]},f:[{t:2,x:{r:["data.emagged"],s:'_0?"OFF":"ON"'},p:[4,62,257]}]}]}]},t:7,e:"ui-display",a:{title:"Default Programs",button:0},f:[" ",{t:4,f:[{p:[8,2,363],t:7,e:"ui-button",a:{action:"load_program",params:['{"type": ',{t:2,r:"type",p:[8,52,413]},"}"],style:[{t:2,x:{r:["data.program","type"],s:'_0==_1?"selected":null'},p:[8,70,431]}]},f:[{t:2,r:"name",p:[9,5,483]}," "]},{p:[10,14,506],t:7,e:"br"}],n:52,r:"data.default_programs",p:[7,2,329]}]}," ",{t:4,f:[{p:[14,2,562],t:7,e:"ui-display",a:{title:"Dangerous Programs"},f:[{t:4,f:[{p:[16,4,638],t:7,e:"ui-button",a:{icon:"warning",action:"load_program",params:['{"type": ',{t:2,r:"type",p:[16,69,703]},"}"],style:[{t:2,x:{r:["data.program","type"],s:'_0==_1?"selected":null'},p:[16,87,721]}]},f:[{t:2,r:"name",p:[17,5,773]}," "]},{p:[18,16,798],t:7,e:"br"}],n:52,r:"data.emag_programs",p:[15,3,605]}]}],n:50,r:"data.emagged",p:[13,1,539]}]},e.exports=a.extend(r.exports)},{341:341}],402:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{occupantStatState:function(){switch(this.get("data.occupant.stat")){case 0:return"good";case 1:return"average";default:return"bad"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[15,1,280],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[16,3,313],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[17,3,346],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[17,9,352]}]}]}," ",{t:4,f:[{p:[20,5,466],t:7,e:"ui-section",a:{label:"State"},f:[{p:[21,7,500],t:7,e:"span",a:{"class":[{t:2,r:"occupantStatState",p:[21,20,513]}]},f:[{t:2,x:{r:["data.occupant.stat"],s:'_0==0?"Conscious":_0==1?"Unconcious":"Dead"'},p:[21,43,536]}]}]}],n:50,r:"data.occupied",p:[19,3,439]}]}," ",{p:[25,1,680],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[26,2,712],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[27,5,743],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"unlock":"lock"'},p:[27,22,760]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Open":"Closed"'},p:[27,71,809]}]}]}," ",{p:[29,3,874],t:7,e:"ui-section",a:{label:"Uses"},f:[{t:2,r:"data.ready_implants",p:[30,5,905]}," ",{t:4,f:[{p:[32,7,969],t:7,e:"span",a:{"class":"fa fa-cog fa-spin"}}],n:50,r:"data.replenishing",p:[31,5,936]}]}," ",{p:[35,3,1036],t:7,e:"ui-section",a:{label:"Activate"},f:[{p:[36,7,1073],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.occupied","data.ready_implants","data.ready"],s:'_0&&_1>0&&_2?null:"disabled"'},p:[36,25,1091]}],action:"implant"},f:[{t:2,x:{r:["data.ready","data.special_name"],s:'_0?(_1?_1:"Implant"):"Recharging"'},p:[37,9,1198]}," "]},{p:[38,19,1302],t:7,e:"br"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],403:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{healthState:function(){var t=this.get("data.health");return t>70?"good":t>50?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{t:4,f:[{p:[15,3,296],t:7,e:"ui-notice",f:[{p:[16,5,313],t:7,e:"span",f:["Wipe in progress!"]}]}],n:50,r:"data.wiping",p:[14,1,273]},{p:{button:[{t:4,f:[{p:[22,7,479],t:7,e:"ui-button",a:{icon:"trash",state:[{t:2,x:{r:["data.isDead"],s:'_0?"disabled":null'},p:[22,38,510]}],action:"wipe"},f:[{t:2,x:{r:["data.wiping"],s:'_0?"Stop Wiping":"Wipe"'},p:[22,89,561]}," AI"]}],n:50,r:"data.name",p:[21,5,454]}]},t:7,e:"ui-display",a:{title:[{t:2,x:{r:["data.name"],s:'_0||"Empty Card"'},p:[19,19,388]}],button:0},f:[" ",{t:4,f:[{p:[26,5,672],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[27,9,709],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.isDead","data.isBraindead"],s:'_0||_1?"bad":"good"'},p:[27,22,722]}]},f:[{t:2,x:{r:["data.isDead","data.isBraindead"],s:'_0||_1?"Offline":"Operational"'},p:[27,76,776]}]}]}," ",{p:[29,5,871],t:7,e:"ui-section",a:{label:"Software Integrity"},f:[{p:[30,7,918],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.health",p:[30,40,951]}],state:[{t:2,r:"healthState",p:[30,64,975]}]},f:[{t:2,x:{r:["adata.health"],s:"Math.round(_0)"},p:[30,81,992]},"%"]}]}," ",{p:[32,5,1055],t:7,e:"ui-section",a:{label:"Laws"},f:[{t:4,f:[{p:[34,9,1117],t:7,e:"span",a:{"class":"highlight"},f:[{t:2,r:".",p:[34,33,1141]}]},{p:[34,45,1153],t:7,e:"br"}],n:52,r:"data.laws",p:[33,7,1088]}]}," ",{p:[37,5,1200],t:7,e:"ui-section",a:{label:"Settings"},f:[{p:[38,7,1237],t:7,e:"ui-button",a:{icon:"signal",style:[{t:2,x:{r:["data.wireless"],s:'_0?"selected":null'},p:[38,39,1269]}],action:"wireless"},f:["Wireless Activity"]}," ",{p:[39,7,1363],t:7,e:"ui-button",a:{icon:"microphone",style:[{t:2,x:{r:["data.radio"],s:'_0?"selected":null'},p:[39,43,1399]}],action:"radio"},f:["Subspace Radio"]}]}],n:50,r:"data.name",p:[25,3,649]}]}]},e.exports=a.extend(r.exports)},{341:341}],404:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,23],t:7,e:"ui-notice",f:[{p:[3,3,38],t:7,e:"span",f:["Waiting for another device to confirm your request..."]}]}],n:50,r:"data.waiting",p:[1,1,0]},{t:4,n:51,f:[{p:[6,2,132],t:7,e:"ui-display",f:[{p:[7,3,148],t:7,e:"ui-section",f:[{t:4,f:[{p:[9,5,197],t:7,e:"ui-button",a:{icon:"check",action:"auth_swipe"},f:["Authorize ",{t:2,r:"data.auth_required",p:[9,59,251]}]}],n:50,r:"data.auth_required",p:[8,4,165]},{t:4,n:51,f:[{p:[11,5,304],t:7,e:"ui-button",a:{icon:"warning",state:[{t:2,x:{r:["data.red_alert"],s:'_0?"disabled":null'},p:[11,38,337]}],action:"red_alert"},f:["Red Alert"]}," ",{p:[12,5,423],t:7,e:"ui-button",a:{icon:"wrench",state:[{t:2,x:{r:["data.emergency_maint"],s:'_0?"disabled":null'},p:[12,37,455]}],action:"emergency_maint"},f:["Emergency Maintenance Access"]}," ",{p:[13,5,572],t:7,e:"ui-button",a:{icon:"warning",state:"null",action:"bsa_unlock"},f:["Bluespace Artillery Unlock"]}],r:"data.auth_required"}]}]}],r:"data.waiting"}]},e.exports=a.extend(r.exports)},{341:341}],405:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Ore values"},f:[{t:4,f:[{p:[3,3,57],t:7,e:"ui-section",a:{label:[{t:2,r:"ore",p:[3,22,76]}]},f:[{p:[4,4,90],t:7,e:"span",f:[{t:2,r:"value",p:[4,10,96]}]}]}],n:52,r:"data.ores",p:[2,2,34]}]}," ",{p:[8,1,158],t:7,e:"ui-display",a:{title:"Points"},f:[{p:[9,2,188],t:7,e:"ui-section",a:{label:"ID"},f:[{p:[10,3,215],t:7,e:"ui-button",a:{action:"handle_id"},f:[{t:2,x:{r:["data.id","data.id_name"],s:'_0?_1:"-------------"'},p:[10,33,245]}]}]}," ",{t:4,f:[{p:[13,3,339],t:7,e:"ui-section",a:{label:"Points collected"},f:[{p:[14,4,381],t:7,e:"span",f:[{t:2,r:"data.points",p:[14,10,387]}]}]}," ",{p:[16,3,430],t:7,e:"ui-section",a:{label:"Goal"},f:[{p:[17,4,460],t:7,e:"span",f:[{t:2,r:"data.goal",p:[17,10,466]}]}]}," ",{p:[19,3,507],t:7,e:"ui-section",a:{label:"Unclaimed points"},f:[{p:[20,4,549],t:7,e:"span",f:[{t:2,r:"data.unclaimed_points",p:[20,10,555]}]}," ",{p:[21,4,592],t:7,e:"ui-button",a:{action:"claim_points",state:[{t:2,x:{r:["data.unclaimed_points"],s:'_0?null:"disabled"'},p:[21,43,631]}]},f:["Claim points"]}]}],n:50,r:"data.id",p:[12,2,320]}]}," ",{p:[25,1,745],t:7,e:"ui-display",f:[{p:[26,2,760],t:7,e:"center",f:[{p:[27,3,772],t:7,e:"ui-button",a:{action:"move_shuttle",state:[{t:2,x:{r:["data.can_go_home"],s:'_0?null:"disabled"'},p:[27,42,811]}]},f:["Move shuttle"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],406:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Known Languages"},f:[{t:4,f:[{p:[3,5,70],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[3,23,88]}]},f:[{p:[4,7,105],t:7,e:"span",f:[{t:2,r:"desc",p:[4,13,111]}]}," ",{p:[5,7,134],t:7,e:"span",f:["Key: ,",{t:2,r:"key",p:[5,19,146]}]}," ",{t:4,f:[{p:[7,9,192],t:7,e:"span",f:["(gained from mob)"]}],n:50,r:"shadow",p:[6,7,168]}," ",{p:[9,7,245],t:7,e:"span",f:[{t:2,x:{r:["can_speak"],s:'_0?"Can Speak":"Cannot Speak"'},p:[9,13,251]}]}," ",{t:4,f:[{p:[11,9,342],t:7,e:"ui-button",a:{action:"select_default",params:['{"language_name":"',{t:2,r:"name",p:[13,37,425]},'"}'],style:[{t:2,x:{r:["is_default","can_speak"],s:'_0?"selected":_1?null:"disabled"'},p:[14,18,455]}]},f:[{t:2,x:{r:["is_default"],s:'_0?"Default Language":"Select as Default"'},p:[15,10,526]}]}],n:50,r:"data.is_living",p:[10,7,310]}," ",{t:4,f:[{t:4,f:[{p:[20,11,685],t:7,e:"ui-button",a:{action:"grant_language",params:['{"language_name":"',{t:2,r:"name",p:[20,72,746]},'"}']},f:["Grant"]}],n:50,r:"shadow",p:[19,9,659]},{t:4,n:51,f:[{p:[22,11,805],t:7,e:"ui-button",a:{action:"remove_language",params:['{"language_name":"',{t:2,r:"name",p:[22,73,867]},'"}']},f:["Remove"]}],r:"shadow"}],n:50,r:"data.admin_mode",p:[18,7,626]}]}],n:52,r:"data.languages",p:[2,3,40]}]}," ",{t:4,f:[{t:4,f:[{p:[30,5,1033],t:7,e:"ui-button",a:{action:"toggle_omnitongue",style:[{t:2,x:{r:["data.omnitongue"],s:'_0?"selected":null'},p:[32,14,1092]}]},f:["Omnitongue ",{t:2,x:{r:["data.omnitongue"],s:'_0?"Enabled":"Disabled"'},p:[33,19,1152]}]}],n:50,r:"data.is_living",p:[29,3,1005]}," ",{p:[36,3,1231],t:7,e:"ui-display",a:{title:"Unknown Languages"},f:[{t:4,f:[{p:[38,7,1315],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[38,25,1333]}]},f:[{p:[39,9,1352],t:7,e:"span",f:[{t:2,r:"desc",p:[39,15,1358]}]}," ",{p:[40,9,1383],t:7,e:"span",f:["Key: ,",{t:2,r:"key",p:[40,21,1395]}]}," ",{p:[41,9,1419],t:7,e:"ui-button",a:{action:"grant_language",params:['{"language_name":"',{t:2,r:"name",p:[43,37,1502]},'"}']},f:["Grant"]}]}],n:52,r:"data.unknown_languages",p:[37,5,1275]}]}],n:50,r:"data.admin_mode",p:[28,1,978]}]},e.exports=a.extend(r.exports)},{341:341}],407:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Controls"},f:[{t:4,f:[{t:4,f:[{p:[4,4,84],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[5,5,118],t:7,e:"span",f:["Launchpad closed."]}]}],n:50,r:"data.pad_closed",p:[3,3,56]},{t:4,n:51,f:[{p:[8,4,183],t:7,e:"ui-section",a:{label:"Launchpad"},f:[{p:[9,4,218],t:7,e:"span",f:[{p:[9,10,224],t:7,e:"b",f:[{t:2,r:"data.pad_name",p:[9,13,227]}]}]},{p:[9,41,255],t:7,e:"br"}," ",{p:[10,4,264],t:7,e:"ui-button",a:{icon:"pencil",action:"rename"},f:["Rename"]}," ",{p:[11,4,328],t:7,e:"ui-button",a:{icon:"remove",style:"danger",action:"remove"},f:["Remove"]}]}," ",{p:[14,4,427],t:7,e:"ui-section",a:{label:"Set Target"},f:[{p:[15,4,463],t:7,e:"table",f:[{p:[16,4,475],t:7,e:"tr",f:[{p:[17,5,485],t:7,e:"td",a:{style:"width:25px!important"},f:[{p:[17,38,518],t:7,e:"ui-button",a:{action:"up-left"},f:["↖"]}]}," ",{p:[18,5,570],t:7,e:"td",a:{style:"width:25px!important; text-align:center"},f:[{p:[18,57,622],t:7,e:"ui-button",a:{action:"up"},f:["↑"]}]}," ",{p:[19,5,669],t:7,e:"td",a:{style:"width:25px!important; text-align:right"},f:[{p:[19,56,720],t:7,e:"ui-button",a:{action:"up-right"},f:["↗"]}]}]}," ",{p:[21,4,782],t:7,e:"tr",f:[{p:[22,5,792],t:7,e:"td",a:{style:"width:25px!important"},f:[{p:[22,38,825],t:7,e:"ui-button",a:{action:"left",style:"width:35px!important"},f:["â†"]}]}," ",{p:[23,5,903],t:7,e:"td",a:{style:"width:25px!important; text-align:center"},f:[{p:[23,57,955],t:7,e:"ui-button",a:{action:"reset"},f:["R"]}]}," ",{p:[24,5,1005],t:7,e:"td",a:{style:"width:25px!important; text-align:right"},f:[{p:[24,56,1056],t:7,e:"ui-button",a:{action:"right"},f:["→"]}]}]}," ",{p:[26,4,1115],t:7,e:"tr",f:[{p:[27,5,1125],t:7,e:"td",a:{style:"width:25px!important"},f:[{p:[27,38,1158],t:7,e:"ui-button",a:{action:"down-left"},f:["↙"]}]}," ",{p:[28,5,1212],t:7,e:"td",a:{style:"width:25px!important; text-align:center"},f:[{p:[28,57,1264],t:7,e:"ui-button",a:{action:"down"},f:["↓"]}]}," ",{p:[29,5,1313],t:7,e:"td",a:{style:"width:25px!important; text-align:right"},f:[{p:[29,56,1364],t:7,e:"ui-button",a:{action:"down-right"},f:["↘"]}]}]}]}]}," ",{p:[33,4,1459],t:7,e:"ui-section",a:{label:"Current Target"},f:[{p:[34,5,1500],t:7,e:"span",f:[{t:2,r:"data.abs_y",p:[34,11,1506]}," ",{t:2,r:"data.north_south",p:[34,26,1521]}]},{p:[34,53,1548],t:7,e:"br"}," ",{p:[35,5,1558],t:7,e:"span",f:[{t:2,r:"data.abs_x",p:[35,11,1564]}," ",{t:2,r:"data.east_west",p:[35,26,1579]}]}]}," ",{p:[37,4,1627],t:7,e:"ui-section",a:{label:"Activate"},f:[{p:[38,5,1662],t:7,e:"ui-button",a:{action:"launch",tooltip:"Teleport everything on the pad to the target.", "tooltip-side":"down"},f:["Launch"]}," ",{p:[39,5,1789],t:7,e:"ui-button",a:{action:"pull",tooltip:"Teleport everything from the target to the pad.","tooltip-side":"down"},f:["Pull"]}]}],r:"data.pad_closed"}],n:50,r:"data.has_pad",p:[2,2,32]},{t:4,n:51,f:[{p:[45,3,1956],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[46,4,1989],t:7,e:"span",f:["No launchpad found. Link the remote to a launchpad."]}]}],r:"data.has_pad"}]}]},e.exports=a.extend(r.exports)},{341:341}],408:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{mechChargeState:function(t){var e=this.get("data.recharge_port.mech.cell.maxcharge");return t>=e/1.5?"good":t>=e/3?"average":"bad"},mechHealthState:function(t){var e=this.get("data.recharge_port.mech.maxhealth");return t>e/1.5?"good":t>e/3?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[20,1,545],t:7,e:"ui-display",a:{title:"Mech Status"},f:[{t:4,f:[{t:4,f:[{p:[23,4,646],t:7,e:"ui-section",a:{label:"Integrity"},f:[{p:[24,6,683],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.recharge_port.mech.maxhealth",p:[24,27,704]}],value:[{t:2,r:"adata.recharge_port.mech.health",p:[24,74,751]}],state:[{t:2,x:{r:["mechHealthState","adata.recharge_port.mech.health"],s:"_0(_1)"},p:[24,117,794]}]},f:[{t:2,x:{r:["adata.recharge_port.mech.health"],s:"Math.round(_0)"},p:[24,171,848]},"/",{t:2,r:"adata.recharge_port.mech.maxhealth",p:[24,219,896]}]}]}," ",{t:4,f:[{t:4,f:[{p:[28,5,1061],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[28,31,1087],t:7,e:"span",a:{"class":"bad"},f:["Cell Critical Failure"]}]}],n:50,r:"data.recharge_port.mech.cell.critfail",p:[27,3,1010]},{t:4,n:51,f:[{p:[30,11,1170],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[31,13,1210],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.recharge_port.mech.cell.maxcharge",p:[31,34,1231]}],value:[{t:2,r:"adata.recharge_port.mech.cell.charge",p:[31,86,1283]}],state:[{t:2,x:{r:["mechChargeState","adata.recharge_port.mech.cell.charge"],s:"_0(_1)"},p:[31,134,1331]}]},f:[{t:2,x:{r:["adata.recharge_port.mech.cell.charge"],s:"Math.round(_0)"},p:[31,193,1390]},"/",{t:2,x:{r:["adata.recharge_port.mech.cell.maxcharge"],s:"Math.round(_0)"},p:[31,246,1443]}]}]}],r:"data.recharge_port.mech.cell.critfail"}],n:50,r:"data.recharge_port.mech.cell",p:[26,4,970]},{t:4,n:51,f:[{p:[35,3,1558],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[35,29,1584],t:7,e:"span",a:{"class":"bad"},f:["Cell Missing"]}]}],r:"data.recharge_port.mech.cell"}],n:50,r:"data.recharge_port.mech",p:[22,2,610]},{t:4,n:51,f:[{p:[38,4,1662],t:7,e:"ui-section",f:["Mech Not Found"]}],r:"data.recharge_port.mech"}],n:50,r:"data.recharge_port",p:[21,3,581]},{t:4,n:51,f:[{p:[41,5,1729],t:7,e:"ui-section",f:["Recharging Port Not Found"]}," ",{p:[42,2,1782],t:7,e:"ui-button",a:{icon:"refresh",action:"reconnect"},f:["Reconnect"]}],r:"data.recharge_port"}]}]},e.exports=a.extend(r.exports)},{341:341}],409:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{t:4,f:[{p:[3,5,45],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[4,7,88],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[4,24,105]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[4,75,156]}]}]}],n:50,r:"data.siliconUser",p:[2,3,15]},{t:4,n:51,f:[{p:[7,5,247],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[7,31,273]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[10,1,358],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[11,3,389],t:7,e:"ui-section",a:{label:"Power"},f:[{t:4,f:[{p:[13,7,470],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[13,24,487]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[13,68,531]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[13,116,579]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[12,5,421]},{t:4,n:51,f:[{p:[15,7,639],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.on"],s:'_0?"good":"bad"'},p:[15,20,652]}],state:[{t:2,x:{r:["data.cell"],s:'_0?null:"disabled"'},p:[15,57,689]}]},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[15,92,724]}]}],x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"}}]}," ",{p:[18,3,791],t:7,e:"ui-section",a:{label:"Cell"},f:[{p:[19,5,822],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.cell"],s:'_0?null:"bad"'},p:[19,18,835]}]},f:[{t:2,x:{r:["data.cell","data.cellPercent"],s:'_0?_1+"%":"No Cell"'},p:[19,48,865]}]}]}," ",{p:[21,3,943],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[22,5,974],t:7,e:"span",a:{"class":[{t:2,r:"data.modeStatus",p:[22,18,987]}]},f:[{t:2,r:"data.mode",p:[22,39,1008]}]}]}," ",{p:[24,3,1049],t:7,e:"ui-section",a:{label:"Load"},f:[{p:[25,5,1080],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.load"],s:'_0?"good":"average"'},p:[25,18,1093]}]},f:[{t:2,x:{r:["data.load"],s:'_0?_0:"None"'},p:[25,54,1129]}]}]}," ",{p:[27,3,1191],t:7,e:"ui-section",a:{label:"Destination"},f:[{p:[28,5,1229],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.destination"],s:'_0?"good":"average"'},p:[28,18,1242]}]},f:[{t:2,x:{r:["data.destination"],s:'_0?_0:"None"'},p:[28,60,1284]}]}]}]}," ",{t:4,f:[{p:{button:[{t:4,f:[{p:[35,9,1513],t:7,e:"ui-button",a:{icon:"eject",action:"unload"},f:["Unload"]}],n:50,r:"data.load",p:[34,7,1486]}," ",{t:4,f:[{p:[38,9,1623],t:7,e:"ui-button",a:{icon:"eject",action:"ejectpai"},f:["Eject PAI"]}],n:50,r:"data.haspai",p:[37,7,1594]}," ",{p:[40,7,1709],t:7,e:"ui-button",a:{icon:"pencil",action:"setid"},f:["Set ID"]}]},t:7,e:"ui-display",a:{title:"Controls",button:0},f:[" ",{p:[42,5,1791],t:7,e:"ui-section",a:{label:"Destination"},f:[{p:[43,7,1831],t:7,e:"ui-button",a:{icon:"pencil",action:"destination"},f:["Set Destination"]}," ",{p:[44,7,1912],t:7,e:"ui-button",a:{icon:"stop",action:"stop"},f:["Stop"]}," ",{p:[45,7,1973],t:7,e:"ui-button",a:{icon:"play",action:"go"},f:["Go"]}]}," ",{p:[47,5,2047],t:7,e:"ui-section",a:{label:"Home"},f:[{p:[48,7,2080],t:7,e:"ui-button",a:{icon:"home",action:"home"},f:["Go Home"]}," ",{p:[49,7,2144],t:7,e:"ui-button",a:{icon:"pencil",action:"sethome"},f:["Set Home"]}]}," ",{p:[51,5,2231],t:7,e:"ui-section",a:{label:"Settings"},f:[{p:[52,7,2268],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoReturn"],s:'_0?"check-square-o":"square-o"'},p:[52,24,2285]}],style:[{t:2,x:{r:["data.autoReturn"],s:'_0?"selected":null'},p:[52,84,2345]}],action:"autoret"},f:["Auto-Return Home"]}," ",{p:[54,7,2449],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoPickup"],s:'_0?"check-square-o":"square-o"'},p:[54,24,2466]}],style:[{t:2,x:{r:["data.autoPickup"],s:'_0?"selected":null'},p:[54,84,2526]}],action:"autopick"},f:["Auto-Pickup Crate"]}," ",{p:[56,7,2632],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.reportDelivery"],s:'_0?"check-square-o":"square-o"'},p:[56,24,2649]}],style:[{t:2,x:{r:["data.reportDelivery"],s:'_0?"selected":null'},p:[56,88,2713]}],action:"report"},f:["Report Deliveries"]}]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[31,1,1373]}]},e.exports=a.extend(r.exports)},{341:341}],410:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Nanite Chamber Console"},f:[{p:[2,1,45],t:7,e:"ui-display",a:{title:"Program Disk"},f:[{t:4,f:[{p:[4,2,104],t:7,e:"ui-button",a:{icon:"eject",action:"eject"},f:["Eject Disk"]},{p:[4,63,165],t:7,e:"br"}," ",{t:4,f:[{p:[6,3,200],t:7,e:"ui-section",a:{label:"Program Name"},f:[{t:2,r:"data.disk.name",p:[6,36,233]}]}," ",{p:[7,3,268],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"data.disk.desc",p:[7,35,300]}]}," ",{p:[8,3,335],t:7,e:"ui-section",a:{label:"Activation Status"},f:[{t:2,x:{r:["data.disk.activated"],s:'_0?"Active":"Inactive"'},p:[8,41,373]}]}," ",{t:4,f:[{p:[10,4,477],t:7,e:"ui-section",a:{label:"Activation Delay"},f:[{t:2,r:"data.disk.activation_delay",p:[10,41,514]}]}],n:50,r:"data.disk.activation_delay",p:[9,3,438]}," ",{t:4,f:[{p:[13,4,600],t:7,e:"ui-section",a:{label:"Timer"},f:[{t:2,r:"data.disk.timer",p:[13,30,626]}]}," ",{p:[14,4,663],t:7,e:"ui-section",a:{label:"Timer Type "},f:[{t:2,r:"data.disk.timer_type",p:[14,36,695]}]}],n:50,r:"data.disk.timer",p:[12,3,572]}," ",{t:4,f:[{p:[17,4,785],t:7,e:"ui-section",a:{label:"Activation Code"},f:[{t:2,r:"data.disk.activation_code",p:[17,40,821]}]}],n:50,r:"data.disk.activation_code",p:[16,3,747]}," ",{t:4,f:[{p:[20,4,918],t:7,e:"ui-section",a:{label:"Deactivation Code"},f:[{t:2,r:"data.disk.deactivation_code",p:[20,42,956]}]}],n:50,r:"data.disk.deactivation_code",p:[19,3,878]}," ",{t:4,f:[{p:[23,4,1047],t:7,e:"ui-section",a:{label:"Kill Code"},f:[{t:2,r:"data.disk.kill_code",p:[23,34,1077]}]}],n:50,r:"data.disk.kill_code",p:[22,3,1015]}," ",{t:4,f:[{p:[26,4,1163],t:7,e:"ui-section",a:{label:"Trigger Code"},f:[{t:2,r:"data.disk.trigger_code",p:[26,37,1196]}]}],n:50,r:"data.disk.trigger_code",p:[25,3,1128]}," ",{t:4,f:[{t:4,f:[{p:[30,6,1332],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[30,25,1351]}]},f:[{t:2,r:"value",p:[30,35,1361]}]}],n:52,r:"data.disk.extra_settings",p:[29,4,1291]}],n:50,r:"data.disk.has_extra_settings",p:[28,3,1250]}],n:50,r:"data.has_program",p:[5,2,172]},{t:4,n:51,f:[{p:[34,3,1423],t:7,e:"ui-notice",f:["No program detected."]}],r:"data.has_program"}],n:50,r:"data.has_disk",p:[3,1,80]},{t:4,n:51,f:[{p:[37,2,1489],t:7,e:"ui-notice",f:["Insert disk."]}],r:"data.has_disk"}]}," ",{p:[40,1,1550],t:7,e:"br"}," ",{t:4,f:[{p:[42,2,1582],t:7,e:"ui-notice",f:[{t:2,r:"data.status_msg",p:[42,13,1593]}]}],n:50,r:"data.status_msg",p:[41,1,1556]},{t:4,n:51,f:[{p:[44,2,1637],t:7,e:"ui-display",a:{title:"Chamber"},f:[{p:[45,2,1668],t:7,e:"ui-section",f:[{p:[45,14,1680],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock-open":"lock"'},p:[45,30,1696]}],action:"toggle_lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Unlock":"Lock"'},p:[45,90,1756]}," Chamber"]},{p:[45,146,1812],t:7,e:"br"}]}," ",{p:[46,2,1832],t:7,e:"ui-section",f:[{p:[46,14,1844],t:7,e:"b",f:["Occupant:"]}," ",{t:2,r:"data.occupant_name",p:[46,31,1861]}]}," ",{t:4,f:[{p:[48,4,1929],t:7,e:"ui-section",f:[{p:[48,16,1941],t:7,e:"ui-notice",f:["No nanites detected."]}]}," ",{p:[49,4,2002],t:7,e:"ui-section",f:[{p:[49,16,2014],t:7,e:"ui-button",a:{icon:"syringe",action:"nanite_injection"},f:["Implant Nanites"]}]}],n:50,x:{r:["data.has_nanites"],s:"!_0"},p:[47,2,1899]},{t:4,n:51,f:[{p:[51,3,2121],t:7,e:"ui-display",a:{title:"Nanites"},f:[{t:4,f:[{p:[53,5,2181],t:7,e:"ui-button",a:{icon:"download",action:"add_program"},f:["Install Program From Disk"]},{p:[53,90,2266],t:7,e:"br"}," ",{p:[54,5,2276],t:7,e:"br"}],n:50,r:"data.has_disk",p:[52,4,2154]}," ",{p:[56,4,2297],t:7,e:"ui-section",f:[{p:[57,5,2315],t:7,e:"ui-section",a:{label:"Nanite Volume"},f:[{t:2,r:"data.nanite_volume",p:[57,39,2349]}]}," ",{p:[58,5,2390],t:7,e:"ui-section",a:{label:"Growth Rate"},f:[{t:2,r:"data.regen_rate",p:[58,37,2422]}]}," ",{p:[59,5,2460],t:7,e:"ui-section",a:{label:"Safety Threshold"},f:[{t:2,r:"data.safety_threshold",p:[59,42,2497]}," ",{p:[59,68,2523],t:7,e:"ui-button",a:{icon:"pencil",action:"set_safety"},f:["Set"]}]}," ",{p:[60,5,2603],t:7,e:"ui-section",a:{label:"Cloud ID"},f:[{t:2,x:{r:["data.cloud_id"],s:'_0?_0:"No Cloud"'},p:[60,34,2632]}," ",{p:[60,82,2680],t:7,e:"ui-button",a:{icon:"pencil",action:"set_cloud"},f:["Set"]}]}]}," ",{p:[62,4,2776],t:7,e:"ui-display",a:{title:"Programs"},f:[{t:4,f:[{p:[64,6,2845],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[64,25,2864]}],button:0},f:[{p:[65,6,2888],t:7,e:"ui-button",a:{icon:"minus",action:"remove_program",params:['{"program_id": "',{t:2,r:"id",p:[65,78,2960]},'"}']},f:["Uninstall"]}," ",{p:[66,6,2998],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"desc",p:[66,38,3030]}]}," ",{t:4,f:[{p:[68,7,3094],t:7,e:"ui-section",a:{label:"Activation Status"},f:[{t:2,x:{r:["activated"],s:'_0?"Active":"Inactive"'},p:[68,45,3132]}]}," ",{p:[69,7,3191],t:7,e:"ui-section",a:{label:"Nanites Consumed"},f:[{t:2,r:"use_rate",p:[69,44,3228]},"/s"]}," ",{t:4,f:[{p:[71,8,3291],t:7,e:"ui-section",a:{label:"Trigger Cost"},f:[{t:2,r:"trigger_cost",p:[71,41,3324]}]}," ",{p:[72,8,3362],t:7,e:"ui-section",a:{label:"Trigger Cooldown"},f:[{t:2,r:"trigger_cooldown",p:[72,45,3399]}," seconds"]}],n:50,r:"can_trigger",p:[70,7,3263]}," ",{t:4,f:[{t:4,f:[{p:[76,9,3534],t:7,e:"ui-section",a:{label:"Activation Delay"},f:[{t:2,r:"activation_delay",p:[76,46,3571]}]}],n:50,r:"activation_delay",p:[75,8,3500]}," ",{t:4,f:[{p:[79,9,3652],t:7,e:"ui-section",a:{label:"Timer"},f:[{t:2,r:"timer",p:[79,35,3678]}]}," ",{p:[80,9,3710],t:7,e:"ui-section",a:{label:"Timer Type"},f:[{t:2,r:"timer_type",p:[80,40,3741]}]}],n:50,r:"timer",p:[78,8,3629]}," ",{t:4,f:[{t:4,f:[{p:[84,11,3865],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[84,30,3884]}]},f:[{t:2,r:"value",p:[84,40,3894]}]}],n:52,r:"extra_settings",p:[83,9,3829]}],n:50,r:"has_extra_settings",p:[82,8,3793]}," ",{t:4,f:[{t:4,f:[{p:[89,10,4032],t:7,e:"ui-section",a:{label:"Activation Code"},f:[{t:2,r:"activation_code",p:[89,46,4068]}]}],n:50,r:"activation_code",p:[88,9,3998]}," ",{t:4,f:[{p:[92,10,4163],t:7,e:"ui-section",a:{label:"Deactivation Code"},f:[{t:2,r:"deactivation_code",p:[92,48,4201]}]}],n:50,r:"deactivation_code",p:[91,9,4127]}," ",{t:4,f:[{p:[95,10,4290],t:7,e:"ui-section",a:{label:"Kill Code"},f:[{t:2,r:"kill_code",p:[95,40,4320]}]}],n:50,r:"kill_code",p:[94,9,4262]}," ",{t:4,f:[{p:[98,10,4404],t:7,e:"ui-section",a:{label:"Trigger Code"},f:[{t:2,r:"trigger_code",p:[98,43,4437]}]}],n:50,r:"trigger_code",p:[97,9,4373]}],n:50,x:{r:["data.scan_level"],s:"_0>=4"},p:[87,8,3960]}],n:50,x:{r:["data.scan_level"],s:"_0>=3"},p:[74,7,3463]}],n:50,x:{r:["data.scan_level"],s:"_0>=2"},p:[67,6,3058]}]}],n:52,r:"data.mob_programs",p:[63,5,2811]}]}]}],x:{r:["data.has_nanites"],s:"!_0"}}]}],r:"data.status_msg"}]}]},e.exports=a.extend(r.exports)},{341:341}],411:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Nanite Cloud Console"},f:[{p:[2,1,43],t:7,e:"ui-display",a:{title:"Program Disk"},f:[{t:4,f:[{p:[4,3,104],t:7,e:"ui-button",a:{icon:"eject",action:"eject"},f:["Eject Disk"]},{p:[4,64,165],t:7,e:"br"}," ",{t:4,f:[{p:[6,4,202],t:7,e:"ui-section",f:[{p:[7,5,220],t:7,e:"ui-section",a:{label:"Program Name"},f:[{t:2,r:"data.disk.name",p:[7,38,253]}]}," ",{p:[8,5,290],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"data.disk.desc",p:[8,37,322]}]}," ",{p:[9,5,359],t:7,e:"ui-section",a:{label:"Activation Status"},f:[{t:2,x:{r:["data.disk.activated"],s:'_0?"Active":"Inactive"'},p:[9,43,397]}]}," ",{t:4,f:[{p:[11,6,505],t:7,e:"ui-section",a:{label:"Activation Delay"},f:[{t:2,r:"data.disk.activation_delay",p:[11,43,542]}]}],n:50,r:"data.disk.activation_delay",p:[10,5,464]}," ",{t:4,f:[{p:[14,6,634],t:7,e:"ui-section",a:{label:"Timer"},f:[{t:2,r:"data.disk.timer",p:[14,32,660]}]}," ",{p:[15,6,699],t:7,e:"ui-section",a:{label:"Timer Type "},f:[{t:2,r:"data.disk.timer_type",p:[15,38,731]}]}],n:50,r:"data.disk.timer",p:[13,5,604]}," ",{t:4,f:[{p:[18,6,827],t:7,e:"ui-section",a:{label:"Activation Code"},f:[{t:2,r:"data.disk.activation_code",p:[18,42,863]}]}],n:50,r:"data.disk.activation_code",p:[17,5,787]}," ",{t:4,f:[{p:[21,6,966],t:7,e:"ui-section",a:{label:"Deactivation Code"},f:[{t:2,r:"data.disk.deactivation_code",p:[21,44,1004]}]}],n:50,r:"data.disk.deactivation_code",p:[20,5,924]}," ",{t:4,f:[{p:[24,6,1101],t:7,e:"ui-section",a:{label:"Kill Code"},f:[{t:2,r:"data.disk.kill_code",p:[24,36,1131]}]}],n:50,r:"data.disk.kill_code",p:[23,5,1067]}," ",{t:4,f:[{p:[27,6,1223],t:7,e:"ui-section",a:{label:"Trigger Code"},f:[{t:2,r:"data.disk.trigger_code",p:[27,39,1256]}]}],n:50,r:"data.disk.trigger_code",p:[26,5,1186]}," ",{t:4,f:[{t:4,f:[{p:[31,8,1400],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[31,27,1419]}]},f:[{t:2,r:"value",p:[31,37,1429]}]}],n:52,r:"data.disk.extra_settings",p:[30,6,1357]}],n:50,r:"data.disk.has_extra_settings",p:[29,5,1314]}]}],n:50,r:"data.has_program",p:[5,3,173]},{t:4,n:51,f:[{p:[36,4,1515],t:7,e:"ui-notice",f:["No program detected."]}],r:"data.has_program"}],n:50,r:"data.has_disk",p:[3,2,79]},{t:4,n:51,f:[{p:[39,3,1584],t:7,e:"ui-notice",f:["Insert disk."]}],r:"data.has_disk"}]}," ",{p:[42,1,1646],t:7,e:"ui-display",a:{title:"Cloud Storage"},f:[{t:4,f:[{p:[44,3,1713],t:7,e:"ui-button",a:{icon:"plus-circle",action:"create_backup"},f:["Create New Backup"]}," ",{p:[45,3,1799],t:7,e:"ui-display",a:{title:"Active Backups"},f:[{t:4,f:[{p:[47,5,1873],t:7,e:"ui-button",a:{action:"set_view",params:['{"view": "',{t:2,r:"cloud_id",p:[47,52,1920]},'"}']},f:["Backup #",{t:2,r:"cloud_id",p:[47,76,1944]}]}],n:52,r:"data.cloud_backups",p:[46,4,1839]}]}],n:50,x:{r:["data.current_view"],s:"!_0"},p:[43,2,1683]},{t:4,n:51,f:[{p:[51,3,2014],t:7,e:"ui-button",a:{icon:"undo",action:"set_view",params:'{"view": "0"}'},f:["Return"]}," ",{t:4,f:[{p:[53,4,2131],t:7,e:"ui-notice",f:["ERROR: Backup not found."]}],n:50,x:{r:["data.cloud_backup"],s:"!_0"},p:[52,3,2100]},{t:4,n:51,f:[{p:[55,4,2195],t:7,e:"ui-display",a:{title:["Backup #",{t:2,r:"data.current_view",p:[55,31,2222]}]},f:[{t:4,f:[{p:[57,6,2282],t:7,e:"ui-button",a:{icon:"upload",action:"upload_program",style:"selected"},f:["Upload Program From Disk"]},{p:[57,108,2384],t:7,e:"br"}],n:50,r:"data.has_program",p:[56,5,2251]}," ",{t:4,f:[{p:[60,6,2443],t:7,e:"hr"}," ",{p:[61,6,2454],t:7,e:"ui-section",f:[{p:[62,7,2474],t:7,e:"h3",f:[{t:2,r:"name",p:[62,11,2478]}]}," ",{p:[63,7,2499],t:7,e:"div",a:{style:"float:right"},f:[{p:[64,8,2533],t:7,e:"ui-button",a:{icon:"minus-circle",action:"remove_program",style:"danger",params:['{"program_id": "',{t:2,r:"id",p:[64,102,2627]},'"}']},f:["Uninstall"]}]}]}," ",{p:[67,6,2699],t:7,e:"ui-section",f:[{p:[68,7,2719],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"desc",p:[68,39,2751]}]}," ",{p:[69,7,2780],t:7,e:"ui-section",a:{label:"Activation Status"},f:[{t:2,x:{r:["activated"],s:'_0?"Active":"Inactive"'},p:[69,45,2818]}]}," ",{p:[70,7,2877],t:7,e:"ui-section",a:{label:"Nanites Consumed"},f:[{t:2,r:"use_rate",p:[70,44,2914]},"/s"]}," ",{t:4,f:[{p:[72,8,2977],t:7,e:"ui-section",a:{label:"Trigger Cost"},f:[{t:2,r:"trigger_cost",p:[72,41,3010]},"/s"]}," ",{p:[73,8,3050],t:7,e:"ui-section",a:{label:"Trigger Cooldown"},f:[{t:2,r:"trigger_cooldown",p:[73,45,3087]},"/s"]}],n:50,r:"can_trigger",p:[71,7,2949]}," ",{t:4,f:[{p:[76,8,3178],t:7,e:"ui-section",a:{label:"Activation Delay"},f:[{t:2,r:"activation_delay",p:[76,45,3215]}]}],n:50,r:"activation_delay",p:[75,7,3145]}," ",{t:4,f:[{p:[79,8,3293],t:7,e:"ui-section",a:{label:"Timer"},f:[{t:2,r:"timer",p:[79,34,3319]}]}," ",{p:[80,8,3350],t:7,e:"ui-section",a:{label:"Timer Type "},f:[{t:2,r:"timer_type",p:[80,40,3382]}]}],n:50,r:"timer",p:[78,7,3271]}," ",{t:4,f:[{p:[83,8,3464],t:7,e:"ui-section",a:{label:"Activation Code"},f:[{t:2,r:"activation_code",p:[83,44,3500]}]}],n:50,r:"activation_code",p:[82,7,3432]}," ",{t:4,f:[{p:[86,8,3589],t:7,e:"ui-section",a:{label:"Deactivation Code"},f:[{t:2,r:"deactivation_code",p:[86,46,3627]}]}],n:50,r:"deactivation_code",p:[85,7,3555]}," ",{t:4,f:[{p:[89,8,3710],t:7,e:"ui-section",a:{label:"Kill Code"},f:[{t:2,r:"kill_code",p:[89,38,3740]}]}],n:50,r:"kill_code",p:[88,7,3684]}," ",{t:4,f:[{p:[92,8,3818],t:7,e:"ui-section",a:{label:"Trigger Code"},f:[{t:2,r:"trigger_code",p:[92,41,3851]}]}],n:50,r:"trigger_code",p:[91,7,3789]}," ",{t:4,f:[{t:4,f:[{p:[96,10,3973],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[96,29,3992]}]},f:[{t:2,r:"value",p:[96,39,4002]}]}],n:52,r:"extra_settings",p:[95,8,3938]}],n:50,r:"has_extra_settings",p:[94,7,3903]}]}],n:52,r:"data.cloud_programs",p:[59,5,2407]}]}],x:{r:["data.cloud_backup"],s:"!_0"}}],x:{r:["data.current_view"],s:"!_0"}}]}]}]},e.exports=a.extend(r.exports)},{341:341}],412:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Nanite Program Hub"},f:[{t:4,f:[{p:[3,2,65],t:7,e:"ui-display",a:{title:"Program Disk"},f:[{p:[4,3,102],t:7,e:"ui-section",f:[{p:[5,4,119],t:7,e:"ui-button",a:{icon:"eject",action:"eject"},f:["Eject Disk"]}," ",{p:[6,4,185],t:7,e:"ui-button",a:{icon:"minus-circle",action:"clear"},f:["Delete Program"]}]}," ",{t:4,f:[{p:[9,4,307],t:7,e:"ui-section",a:{label:"Program Name"},f:[{t:2,r:"data.disk.name",p:[9,37,340]}]}," ",{p:[10,4,376],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"data.disk.desc",p:[10,36,408]}]}],n:50,r:"data.has_program",p:[8,3,278]},{t:4,n:51,f:[{p:[12,4,456],t:7,e:"ui-notice",f:["No program installed."]}],r:"data.has_program"}]}],n:50,r:"data.has_disk",p:[2,1,41]},{t:4,n:51,f:[{p:[16,2,540],t:7,e:"ui-notice",f:["Insert disk."]}],r:"data.has_disk"},{p:[18,1,586],t:7,e:"br"}," ",{p:[19,1,592],t:7,e:"ui-display",a:{title:"Programs"},f:[{p:[20,2,624],t:7,e:"ui-section",f:[{p:[21,3,640],t:7,e:"ui-button",a:{icon:"undo",action:"set_category",params:'{"category": "Main"}'},f:["Return"]}," ",{p:[22,3,737],t:7,e:"ui-button",a:{icon:"align-justify ",action:"toggle_details"},f:[{t:2,x:{r:["data.detail_view"],s:'_0?"Compact View":"Detailed View"'},p:[22,60,794]}]}]}," ",{t:4,f:[{p:[25,3,916],t:7,e:"ui-display",f:[{t:4,f:[{p:[27,5,964],t:7,e:"ui-section",f:[{p:[27,17,976],t:7,e:"ui-button",a:{action:"set_category",params:['{"category": "',{t:2,r:"name",p:[27,72,1031]},'"}']},f:[{t:2,r:"name",p:[27,84,1043]}]}]}],n:52,r:"data.categories",p:[26,4,933]}]}],n:50,x:{r:["data.category"],s:'_0=="Main"'},p:[24,2,881]},{t:4,n:51,f:[{p:[31,3,1122],t:7,e:"ui-display",a:{title:[{t:2,r:"data.category",p:[31,22,1141]}]},f:[{t:4,f:[{t:4,f:[{p:[34,6,1229],t:7,e:"ui-display",f:[{p:[35,7,1249],t:7,e:"ui-section",f:[{p:[35,19,1261],t:7,e:"b",f:[{t:2,r:"name",p:[35,22,1264]}]}]}," ",{p:[36,7,1297],t:7,e:"ui-section",f:[{t:2,r:"desc",p:[36,19,1309]}]}," ",{p:[37,7,1338],t:7,e:"ui-section",f:[{p:[38,8,1359],t:7,e:"ui-button",a:{icon:"download",action:"download",params:['{"program_id": "',{t:2,r:"id",p:[38,77,1428]},'"}'],state:[{t:2,x:{r:["data.has_disk"],s:'_0?null:"disabled"'},p:[38,94,1445]}]},f:["Download"]}]}]}],n:50,r:"data.detail_view",p:[33,5,1198]},{t:4,n:51,f:[{p:[44,6,1585],t:7,e:"ui-section",f:[{p:[44,18,1597],t:7,e:"ui-button",a:{action:"download",params:['{"program_id": "',{t:2,r:"id",p:[44,71,1650]},'"}']},f:[{t:2,r:"name",p:[44,81,1660]}]}]}],r:"data.detail_view"}],n:52,r:"data.program_list",p:[32,4,1165]}]}],x:{r:["data.category"],s:'_0=="Main"'}}]}]}]},e.exports=a.extend(r.exports)},{341:341}],413:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Nanite Programming"},f:[{t:4,f:[{p:[3,3,67],t:7,e:"ui-notice",f:["Insert a nanite program disk."]}],n:50,x:{r:["data.has_disk"],s:"!_0"},p:[2,1,41]},{t:4,n:51,f:[{p:[5,3,133],t:7,e:"ui-button",a:{icon:"eject",action:"eject"},f:["Eject Disk"]}," ",{t:4,f:[{p:[7,5,229],t:7,e:"ui-notice",f:["No program detected."]}],n:50,x:{r:["data.has_program"],s:"!_0"},p:[6,3,198]},{t:4,n:51,f:[{p:[9,5,290],t:7,e:"ui-section",f:[{p:[10,7,310],t:7,e:"ui-display",a:{title:[{t:2,r:"data.name",p:[10,26,329]}]},f:[{t:2,r:"data.desc",p:[11,9,354]}]}]}," ",{p:[14,5,413],t:7,e:"ui-section",f:[{p:[15,7,433],t:7,e:"ui-section",a:{label:"Program Info"},f:["Nanites Consumed: ",{t:2,r:"data.use_rate",p:[16,26,493]},{p:[16,43,510],t:7,e:"br"}," ",{t:4,f:["Trigger Cost: ",{t:2,r:"data.trigger_cost",p:[18,25,574]},"u",{p:[18,47,596],t:7,e:"br"}],n:50,r:"data.can_trigger",p:[17,9,524]}]}," ",{p:[22,7,648],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[23,9,685],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.activated"],s:'_0?"toggle-on":"toggle-off"'},p:[24,17,713]}],action:"toggle_active"},f:[{t:2,x:{r:["data.activated"],s:'_0?"Active":"Inactive"'},p:[26,11,809]}]}]}," ",{p:[30,7,905],t:7,e:"ui-section",a:{label:"Settings"},f:[{p:[31,9,944],t:7,e:"ui-button",a:{icon:"pencil",action:"set_activation_delay"}}," Activation Delay: ",{t:2,r:"data.activation_delay",p:[31,95,1030]}," ",{p:[31,121,1056],t:7,e:"br"}," ",{p:[32,9,1070],t:7,e:"ui-button",a:{icon:"pencil",action:"set_timer"}}," Timer: ",{t:2,r:"data.timer",p:[32,73,1134]}," ",{p:[32,88,1149],t:7,e:"br"}," ",{p:[33,9,1163],t:7,e:"ui-button",a:{icon:"pencil",action:"set_timer_type"}}," Timer Type: ",{t:2,r:"data.timer_type",p:[33,83,1237]}," ",{p:[33,103,1257],t:7,e:"br"}]}," ",{p:[36,7,1292],t:7,e:"ui-section",a:{label:"Codes"},f:[{p:[37,9,1328],t:7,e:"ui-button",a:{icon:"pencil",action:"set_code",params:'{"target_code": "activation"}'}}," Activation Code: ",{t:2,r:"data.activation_code",p:[37,121,1440]}," ",{p:[37,146,1465],t:7,e:"br"}," ",{p:[38,9,1479],t:7,e:"ui-button",a:{icon:"pencil",action:"set_code",params:'{"target_code": "deactivation"}'}}," Deactivation Code: ",{t:2,r:"data.deactivation_code",p:[38,125,1595]}," ",{p:[38,152,1622],t:7,e:"br"}," ",{p:[39,9,1636],t:7,e:"ui-button",a:{icon:"pencil",action:"set_code",params:'{"target_code": "kill"}'}}," Kill Code: ",{t:2,r:"data.kill_code",p:[39,109,1736]}," ",{p:[39,128,1755],t:7,e:"br"}," ",{t:4,f:[{p:[41,11,1805],t:7,e:"ui-button",a:{icon:"pencil",action:"set_code",params:'{"target_code": "trigger"}'}}," Trigger Code: ",{t:2,r:"data.trigger_code",p:[41,117,1911]}," ",{p:[41,139,1933],t:7,e:"br"}],n:50,r:"data.can_trigger",p:[40,9,1769]}]}," ",{t:4,f:[{p:[46,9,2026],t:7,e:"ui-section",a:{label:"Special"},f:[{t:4,f:[{p:[48,13,2109],t:7,e:"ui-button",a:{icon:"pencil",action:"set_extra_setting",params:['{"target_setting": "',{t:2,r:"name",p:[48,93,2189]},'"}']}}," ",{t:2,r:"name",p:[48,118,2214]},": ",{t:2,r:"value",p:[48,128,2224]}," ",{p:[48,138,2234],t:7,e:"br"}],n:52,r:"data.extra_settings",p:[47,11,2066]}]}],n:50,r:"data.has_extra_settings",p:[45,7,1985]}]}],x:{r:["data.has_program"],s:"!_0"}}],x:{r:["data.has_disk"],s:"!_0"}}]}]},e.exports=a.extend(r.exports)},{341:341}],414:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Nanite Control"},f:[{t:4,f:[{p:[3,3,60],t:7,e:"ui-notice",f:["The interface is locked."]}],n:50,r:"data.locked",p:[2,1,37]},{t:4,n:51,f:[{p:[5,3,121],t:7,e:"ui-button",a:{icon:"lock",action:"lock"},f:["Lock Interface"]}," ",{p:[6,3,188],t:7,e:"ui-button",a:{icon:"save",action:"save"},f:["Save Current Setting"]}," ",{p:[7,3,261],t:7,e:"ui-section",a:{label:"Signal Code"},f:[{p:[8,5,299],t:7,e:"span",f:[{t:2,r:"data.code",p:[8,11,305]}]}," ",{p:[9,4,330],t:7,e:"ui-button",a:{icon:"pencil",action:"set_code"},f:["Set"]}]}," ",{t:4,f:[{p:[12,5,443],t:7,e:"ui-section",a:{label:"Relay Code"},f:[{p:[13,7,482],t:7,e:"span",f:[{t:2,r:"data.relay_code",p:[13,13,488]}]}," ",{p:[14,5,520],t:7,e:"ui-button",a:{icon:"pencil",action:"set_relay_code"},f:["Set"]}]}],n:50,x:{r:["data.mode"],s:'_0=="Relay"'},p:[11,3,409]}," ",{p:[17,3,618],t:7,e:"ui-section",a:{label:"Signal Mode"},f:[{p:[18,5,656],t:7,e:"span",f:[{t:2,r:"data.mode",p:[18,11,662]}]}," ",{p:[19,5,688],t:7,e:"br"}," ",{p:[20,4,697],t:7,e:"ui-button",a:{action:"select_mode",params:'{"mode": "Off"}'},f:["Off"]}," ",{p:[21,5,775],t:7,e:"ui-button",a:{action:"select_mode",params:'{"mode": "Local"}'},f:["Local"]}," ",{p:[22,5,857],t:7,e:"ui-button",a:{action:"select_mode",params:'{"mode": "Targeted"}'},f:["Targeted"]}," ",{p:[23,5,945],t:7,e:"ui-button",a:{action:"select_mode",params:'{"mode": "Area"}'},f:["Area"]}," ",{p:[24,5,1025],t:7,e:"ui-button",a:{action:"select_mode",params:'{"mode": "Relay"}'},f:["Relay"]}]}],r:"data.locked"}]}," ",{p:[28,1,1144],t:7,e:"ui-display",a:{title:"Saved Settings"},f:[{t:4,f:[{p:[30,3,1215],t:7,e:"ui-button",a:{icon:"load",action:"load",params:['{"save_id": "',{t:2,r:"id",p:[30,61,1273]},'"}']},f:[{t:2,r:"name",p:[30,71,1283]}]}," ",{t:4,f:[{p:[32,4,1332],t:7,e:"ui-button",a:{icon:"remove",action:"remove_save",params:['{"save_id": "',{t:2,r:"id",p:[32,71,1399]},'"}']},f:["Remove"]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[31,3,1307]}," ",{p:[34,3,1442],t:7,e:"br"}],n:52,r:"data.saved_settings",p:[29,2,1182]}]}]},e.exports=a.extend(r.exports)},{341:341}],415:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Ghost roles"},f:[{p:[2,2,35],t:7,e:"ui-section",a:{label:"Ignored roles"},f:[{t:4,f:[{p:[4,4,99],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["enabled"],s:'_0?"check-square-o":"square-o"'},p:[4,21,116]}],style:[{t:2,x:{r:["enabled"],s:'_0?"danger":null'},p:[4,73,168]}],action:"toggle_ignore",params:['{"key": "',{t:2,r:"key",p:[4,144,239]},'"}']},f:[{t:2,r:"desc",p:[4,155,250]}]}],n:52,r:"data.ignore",p:[3,3,73]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],416:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Relay"},f:[{t:4,f:[{p:[3,3,57],t:7,e:"h2",f:["NETWORK BUFFERS OVERLOADED"]}," ",{p:[4,3,96],t:7,e:"h3",f:["Overload Recovery Mode"]}," ",{p:[5,3,131],t:7,e:"i",f:["This system is suffering temporary outage due to overflow of traffic buffers. Until buffered traffic is processed, all further requests will be dropped. Frequent occurences of this error may indicate insufficient hardware capacity of your network. Please contact your network planning department for instructions on how to resolve this issue."]}," ",{p:[6,3,484],t:7,e:"h3",f:["ADMINISTRATIVE OVERRIDE"]}," ",{p:[7,3,520],t:7,e:"b",f:["CAUTION - Data loss may occur"]}," ",{p:[8,3,562],t:7,e:"ui-button",a:{icon:"signal",action:"restart"},f:["Purge buffered traffic"]}],n:50,r:"data.dos_crashed",p:[2,2,29]},{t:4,n:51,f:[{p:[12,3,663],t:7,e:"ui-section",a:{label:"Relay status"},f:[{p:[13,4,701],t:7,e:"ui-button",a:{icon:"power-off",action:"toggle"},f:[{t:2,x:{r:["data.enabled"],s:'_0?"ENABLED":"DISABLED"'},p:[14,6,752]}]}]}," ",{p:[18,3,836],t:7,e:"ui-section",a:{label:"Network buffer status"},f:[{t:2,r:"data.dos_overload",p:[19,4,883]}," / ",{t:2,r:"data.dos_capacity",p:[19,28,907]}," GQ"]}],r:"data.dos_crashed"}]}]},e.exports=a.extend(r.exports)},{341:341}],417:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{healthState:function(){var t=this.get("data.health");return t>70?"good":t>50?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" "," ",{p:[15,1,320],t:7,e:"ntosheader"}," ",{t:4,f:[{p:[18,3,363],t:7,e:"ui-notice",f:[{p:[19,5,380],t:7,e:"span",f:["Reconstruction in progress!"]}]}],n:50,r:"data.restoring",p:[17,1,337]},{p:[24,1,451],t:7,e:"ui-display",f:[{p:[26,1,467],t:7,e:"div",a:{"class":"item"},f:[{p:[27,3,489],t:7,e:"div",a:{"class":"itemLabel"},f:["Inserted AI:"]}," ",{p:[30,3,541],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[31,2,569],t:7,e:"ui-button",a:{icon:"eject",action:"PRG_eject",state:[{t:2,x:{r:["data.nocard"],s:'_0?"disabled":null'},p:[31,52,619]}]},f:[{t:2,x:{r:["data.name"],s:'_0?_0:"---"'},p:[31,89,656]}]}]}]}," ",{t:4,f:[{p:[36,2,744],t:7,e:"b",f:["ERROR: ",{t:2,r:"data.error",p:[36,12,754]}]}],n:50,r:"data.error",p:[35,1,723]},{t:4,n:51,f:[{p:[38,2,785],t:7,e:"h2",f:["System Status"]}," ",{p:[39,2,810],t:7,e:"div",a:{"class":"item"},f:[{p:[40,3,832],t:7,e:"div",a:{"class":"itemLabel"},f:["Current AI:"]}," ",{p:[43,3,885],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.name",p:[44,4,915]}]}," ",{p:[46,3,942],t:7,e:"div",a:{"class":"itemLabel"},f:["Status:"]}," ",{p:[49,3,991],t:7,e:"div",a:{"class":"itemContent"},f:[{t:4,f:["Nonfunctional"],n:50,r:"data.isDead",p:[50,4,1021]},{t:4,n:51,f:["Functional"],r:"data.isDead"}]}," ",{p:[56,3,1114],t:7,e:"div",a:{"class":"itemLabel"},f:["System Integrity:"]}," ",{p:[59,3,1173],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[60,4,1203],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.health",p:[60,37,1236]}],state:[{t:2,r:"healthState",p:[61,11,1264]}]},f:[{t:2,x:{r:["adata.health"],s:"Math.round(_0)"},p:[61,28,1281]},"%"]}]}," ",{p:[63,3,1336],t:7,e:"div",a:{"class":"itemLabel"},f:["Active Laws:"]}," ",{p:[66,3,1390],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[67,4,1420],t:7,e:"table",f:[{t:4,f:[{p:[69,6,1462],t:7,e:"tr",f:[{p:[69,10,1466],t:7,e:"td",f:[{p:[69,14,1470],t:7,e:"span",a:{"class":"highlight"},f:[{t:2,r:".",p:[69,38,1494]}]}]}]}],n:52,r:"data.ai_laws",p:[68,5,1433]}]}]}," ",{p:[73,2,1547],t:7,e:"ui-section",a:{label:"Operations" },f:[{p:[74,3,1582],t:7,e:"ui-button",a:{icon:"plus",style:[{t:2,x:{r:["data.restoring"],s:'_0?"disabled":null'},p:[74,33,1612]}],action:"PRG_beginReconstruction"},f:["Begin Reconstruction"]}]}]}],r:"data.error"}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(431)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,431:431}],418:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{t:4,f:[{p:[5,1,91],t:7,e:"ui-button",a:{action:"PRG_switchm",icon:"home",params:'{"target" : "mod"}',state:[{t:2,x:{r:["data.mmode"],s:'_0==1?"disabled":null'},p:[5,80,170]}]},f:["Access Modification"]}],n:50,r:"data.have_id_slot",p:[4,1,64]},{p:[7,1,253],t:7,e:"ui-button",a:{action:"PRG_switchm",icon:"folder-open",params:'{"target" : "manage"}',state:[{t:2,x:{r:["data.mmode"],s:'_0==2?"disabled":null'},p:[7,90,342]}]},f:["Job Management"]}," ",{p:[8,1,411],t:7,e:"ui-button",a:{action:"PRG_switchm",icon:"folder-open",params:'{"target" : "manifest"}',state:[{t:2,x:{r:["data.mmode"],s:'!_0?"disabled":null'},p:[8,92,502]}]},f:["Crew Manifest"]}," ",{t:4,f:[{p:[10,1,593],t:7,e:"ui-button",a:{action:"PRG_print",icon:"print",state:[{t:2,x:{r:["data.has_id","data.mmode"],s:'!_1||_0&&_1==1?null:"disabled"'},p:[10,51,643]}]},f:["Print"]}],n:50,r:"data.have_printer",p:[9,1,566]},{t:4,f:[{p:[14,1,766],t:7,e:"div",a:{"class":"item"},f:[{p:[15,3,788],t:7,e:"h2",f:["Crew Manifest"]}," ",{p:[16,3,814],t:7,e:"br"},"Please use security record computer to modify entries.",{p:[16,61,872],t:7,e:"br"},{p:[16,65,876],t:7,e:"br"}]}," ",{t:4,f:[{p:[19,2,916],t:7,e:"div",a:{"class":"item"},f:[{t:2,r:"name",p:[20,2,937]}," - ",{t:2,r:"rank",p:[20,13,948]}]}],n:52,r:"data.manifest",p:[18,1,890]}],n:50,x:{r:["data.mmode"],s:"!_0"},p:[13,1,745]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.mmode"],s:"_0==2"},f:[{p:[25,1,1008],t:7,e:"div",a:{"class":"item"},f:[{p:[26,3,1030],t:7,e:"h2",f:["Job Management"]}]}," ",{p:[28,1,1063],t:7,e:"table",f:[{p:[29,1,1072],t:7,e:"tr",f:[{p:[29,5,1076],t:7,e:"td",a:{style:"width:25%"},f:[{p:[29,27,1098],t:7,e:"b",f:["Job"]}]},{p:[29,42,1113],t:7,e:"td",a:{style:"width:25%"},f:[{p:[29,64,1135],t:7,e:"b",f:["Slots"]}]},{p:[29,81,1152],t:7,e:"td",a:{style:"width:25%"},f:[{p:[29,103,1174],t:7,e:"b",f:["Open job"]}]},{p:[29,123,1194],t:7,e:"td",a:{style:"width:25%"},f:[{p:[29,145,1216],t:7,e:"b",f:["Close job"]}]}]}," ",{t:4,f:[{p:[32,2,1269],t:7,e:"tr",f:[{p:[32,6,1273],t:7,e:"td",f:[{t:2,r:"title",p:[32,10,1277]}]},{p:[32,24,1291],t:7,e:"td",f:[{t:2,r:"current",p:[32,28,1295]},"/",{t:2,r:"total",p:[32,40,1307]}]},{p:[32,54,1321],t:7,e:"td",f:[{p:[32,58,1325],t:7,e:"ui-button",a:{action:"PRG_open_job",params:['{"target" : "',{t:2,r:"title",p:[32,112,1379]},'"}'],state:[{t:2,x:{r:["status_open"],s:'_0?null:"disabled"'},p:[32,132,1399]}]},f:[{t:2,r:"desc_open",p:[32,169,1436]}]},{p:[32,194,1461],t:7,e:"br"}]},{p:[32,203,1470],t:7,e:"td",f:[{p:[32,207,1474],t:7,e:"ui-button",a:{action:"PRG_close_job",params:['{"target" : "',{t:2,r:"title",p:[32,262,1529]},'"}'],state:[{t:2,x:{r:["status_close"],s:'_0?null:"disabled"'},p:[32,282,1549]}]},f:[{t:2,r:"desc_close",p:[32,320,1587]}]}]}]}],n:52,r:"data.slots",p:[30,1,1244]}]}]},{t:4,n:50,x:{r:["data.mmode"],s:"!(_0==2)"},f:[" ",{p:[40,1,1665],t:7,e:"div",a:{"class":"item"},f:[{p:[41,3,1687],t:7,e:"h2",f:["Access Modification"]}]}," ",{t:4,f:[{p:[45,3,1751],t:7,e:"span",a:{"class":"alert"},f:[{p:[45,23,1771],t:7,e:"i",f:["Please insert the ID into the terminal to proceed."]}]},{p:[45,87,1835],t:7,e:"br"}],n:50,x:{r:["data.has_id"],s:"!_0"},p:[44,1,1727]},{p:[48,1,1852],t:7,e:"div",a:{"class":"item"},f:[{p:[49,3,1874],t:7,e:"div",a:{"class":"itemLabel"},f:["Target Identity:"]}," ",{p:[52,3,1930],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[53,2,1958],t:7,e:"ui-button",a:{icon:"eject",action:"PRG_eject",params:'{"target" : "id"}'},f:[{t:2,r:"data.id_name",p:[53,72,2028]}]}]}]}," ",{p:[56,1,2076],t:7,e:"div",a:{"class":"item"},f:[{p:[57,3,2098],t:7,e:"div",a:{"class":"itemLabel"},f:["Auth Identity:"]}," ",{p:[60,3,2152],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[61,2,2180],t:7,e:"ui-button",a:{icon:"eject",action:"PRG_eject",params:'{"target" : "auth"}'},f:[{t:2,r:"data.auth_name",p:[61,74,2252]}]}]}]}," ",{p:[64,1,2302],t:7,e:"hr"}," ",{t:4,f:[{t:4,f:[{p:[68,2,2362],t:7,e:"div",a:{"class":"item"},f:[{p:[69,4,2385],t:7,e:"h2",f:["Details"]}]}," ",{t:4,f:[{p:[73,2,2436],t:7,e:"div",a:{"class":"item"},f:[{p:[74,4,2459],t:7,e:"div",a:{"class":"itemLabel"},f:["Registered Name:"]}," ",{p:[77,4,2518],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.id_owner",p:[78,3,2547]}]}]}," ",{p:[81,2,2587],t:7,e:"div",a:{"class":"item"},f:[{p:[82,4,2610],t:7,e:"div",a:{"class":"itemLabel"},f:["Rank:"]}," ",{p:[85,4,2658],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.id_rank",p:[86,3,2687]}]}]}," ",{p:[89,2,2726],t:7,e:"div",a:{"class":"item"},f:[{p:[90,4,2749],t:7,e:"div",a:{"class":"itemLabel"},f:["Demote:"]}," ",{p:[93,4,2799],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[94,3,2828],t:7,e:"ui-button",a:{action:"PRG_terminate",icon:"gear",state:[{t:2,x:{r:["data.id_rank"],s:'_0=="Unassigned"?"disabled":null'},p:[94,56,2881]}]},f:["Demote ",{t:2,r:"data.id_owner",p:[94,117,2942]}]}]}]}],n:50,r:"data.minor",p:[72,2,2415]},{t:4,n:51,f:[{p:[99,2,3007],t:7,e:"div",a:{"class":"item"},f:[{p:[100,4,3030],t:7,e:"div",a:{"class":"itemLabel"},f:["Registered Name:"]}," ",{p:[103,4,3089],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[104,3,3118],t:7,e:"ui-button",a:{action:"PRG_edit",icon:"pencil",params:'{"name" : "1"}'},f:[{t:2,r:"data.id_owner",p:[104,70,3185]}]}]}]}," ",{p:[108,2,3239],t:7,e:"div",a:{"class":"item"},f:[{p:[109,4,3262],t:7,e:"h2",f:["Assignment"]}]}," ",{p:[111,3,3294],t:7,e:"ui-button",a:{action:"PRG_togglea",icon:"gear"},f:[{t:2,x:{r:["data.assignments"],s:'_0?"Hide assignments":"Show assignments"'},p:[111,47,3338]}]}," ",{p:[112,2,3415],t:7,e:"div",a:{"class":"item"},f:[{p:[113,4,3438],t:7,e:"span",a:{id:"allvalue.jobsslot"},f:[]}]}," ",{p:[117,2,3495],t:7,e:"div",a:{"class":"item"},f:[{t:4,f:[{p:[119,4,3547],t:7,e:"div",a:{id:"all-value.jobs"},f:[{p:[120,3,3576],t:7,e:"table",f:[{p:[121,5,3589],t:7,e:"tr",f:[{p:[122,4,3598],t:7,e:"th",f:["Command"]}," ",{p:[123,4,3619],t:7,e:"td",f:[{p:[124,6,3630],t:7,e:"ui-button",a:{action:"PRG_assign",params:'{"assign_target" : "Captain"}',state:[{t:2,x:{r:["data.id_rank"],s:'_0=="Captain"?"selected":null'},p:[124,83,3707]}]},f:["Captain"]}]}]}," ",{p:[127,5,3804],t:7,e:"tr",f:[{p:[128,4,3813],t:7,e:"th",f:["Special"]}," ",{p:[129,4,3834],t:7,e:"td",f:[{p:[130,6,3845],t:7,e:"ui-button",a:{action:"PRG_assign",params:'{"assign_target" : "Custom"}'},f:["Custom"]}]}]}," ",{p:[133,5,3959],t:7,e:"tr",f:[{p:[134,4,3968],t:7,e:"th",a:{style:"color: '#FFA500';"},f:["Engineering"]}," ",{p:[135,4,4019],t:7,e:"td",f:[{t:4,f:[{p:[137,5,4067],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[137,64,4126]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[137,82,4144]}]},f:[{t:2,r:"display_name",p:[137,127,4189]}]}],n:52,r:"data.engineering_jobs",p:[136,6,4030]}]}]}," ",{p:[141,5,4260],t:7,e:"tr",f:[{p:[142,4,4269],t:7,e:"th",a:{style:"color: '#008000';"},f:["Medical"]}," ",{p:[143,4,4316],t:7,e:"td",f:[{t:4,f:[{p:[145,5,4360],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[145,64,4419]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[145,82,4437]}]},f:[{t:2,r:"display_name",p:[145,127,4482]}]}],n:52,r:"data.medical_jobs",p:[144,6,4327]}]}]}," ",{p:[149,5,4553],t:7,e:"tr",f:[{p:[150,4,4562],t:7,e:"th",a:{style:"color: '#800080';"},f:["Science"]}," ",{p:[151,4,4609],t:7,e:"td",f:[{t:4,f:[{p:[153,5,4653],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[153,64,4712]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[153,82,4730]}]},f:[{t:2,r:"display_name",p:[153,127,4775]}]}],n:52,r:"data.science_jobs",p:[152,6,4620]}]}]}," ",{p:[157,5,4846],t:7,e:"tr",f:[{p:[158,4,4855],t:7,e:"th",a:{style:"color: '#DD0000';"},f:["Security"]}," ",{p:[159,4,4903],t:7,e:"td",f:[{t:4,f:[{p:[161,5,4948],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[161,64,5007]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[161,82,5025]}]},f:[{t:2,r:"display_name",p:[161,127,5070]}]}],n:52,r:"data.security_jobs",p:[160,6,4914]}]}]}," ",{p:[165,5,5141],t:7,e:"tr",f:[{p:[166,4,5150],t:7,e:"th",a:{style:"color: '#cc6600';"},f:["Cargo"]}," ",{p:[167,4,5195],t:7,e:"td",f:[{t:4,f:[{p:[169,5,5237],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[169,64,5296]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[169,82,5314]}]},f:[{t:2,r:"display_name",p:[169,127,5359]}]}],n:52,r:"data.cargo_jobs",p:[168,6,5206]}]}]}," ",{p:[173,5,5430],t:7,e:"tr",f:[{p:[174,4,5439],t:7,e:"th",a:{style:"color: '#808080';"},f:["Civilian"]}," ",{p:[175,4,5487],t:7,e:"td",f:[{t:4,f:[{p:[177,5,5532],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[177,64,5591]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[177,82,5609]}]},f:[{t:2,r:"display_name",p:[177,127,5654]}]}],n:52,r:"data.civilian_jobs",p:[176,6,5498]}]}]}," ",{t:4,f:[{p:[182,4,5757],t:7,e:"tr",f:[{p:[183,6,5768],t:7,e:"th",a:{style:"color: '#A52A2A';"},f:["CentCom"]}," ",{p:[184,6,5817],t:7,e:"td",f:[{t:4,f:[{p:[186,7,5862],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[186,66,5921]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[186,84,5939]}]},f:[{t:2,r:"display_name",p:[186,129,5984]}]}],n:52,r:"data.centcom_jobs",p:[185,5,5827]}]}]}],n:50,r:"data.centcom_access",p:[181,5,5725]}]}]}],n:50,r:"data.assignments",p:[118,4,3518]}]}],r:"data.minor"}," ",{t:4,f:[{p:[198,4,6153],t:7,e:"div",a:{"class":"item"},f:[{p:[199,3,6175],t:7,e:"h2",f:["Central Command"]}]}," ",{p:[201,4,6215],t:7,e:"div",a:{"class":"item",style:"width: 100%"},f:[{t:4,f:[{p:[203,5,6296],t:7,e:"div",a:{"class":"itemContentWide"},f:[{p:[204,5,6331],t:7,e:"ui-button",a:{action:"PRG_access",params:['{"access_target" : "',{t:2,r:"ref",p:[204,64,6390]},'", "allowed" : "',{t:2,r:"allowed",p:[204,87,6413]},'"}'],state:[{t:2,x:{r:["allowed"],s:'_0?"toggle":null'},p:[204,109,6435]}]},f:[{t:2,r:"desc",p:[204,140,6466]}]}]}],n:52,r:"data.all_centcom_access",p:[202,3,6257]}]}],n:50,r:"data.centcom_access",p:[197,2,6121]},{t:4,n:51,f:[{p:[209,4,6538],t:7,e:"div",a:{"class":"item"},f:[{p:[210,3,6560],t:7,e:"h2",f:[{t:2,r:"data.station_name",p:[210,7,6564]}]}]}," ",{p:[212,4,6606],t:7,e:"div",a:{"class":"item",style:"width: 100%"},f:[{t:4,f:[{p:[214,5,6676],t:7,e:"div",a:{style:"float: left; width: 175px; min-height: 250px"},f:[{p:[215,4,6739],t:7,e:"div",a:{"class":"average"},f:[{p:[215,25,6760],t:7,e:"ui-button",a:{action:"PRG_regsel",state:[{t:2,x:{r:["selected"],s:'_0?"toggle":null'},p:[215,63,6798]}],params:['{"region" : "',{t:2,r:"regid",p:[215,116,6851]},'"}']},f:[{p:[215,129,6864],t:7,e:"b",f:[{t:2,r:"name",p:[215,132,6867]}]}]}]}," ",{p:[216,4,6902],t:7,e:"br"}," ",{t:4,f:[{p:[218,6,6938],t:7,e:"div",a:{"class":"itemContentWide"},f:[{p:[219,5,6973],t:7,e:"ui-button",a:{action:"PRG_access",params:['{"access_target" : "',{t:2,r:"ref",p:[219,64,7032]},'", "allowed" : "',{t:2,r:"allowed",p:[219,87,7055]},'"}'],state:[{t:2,x:{r:["allowed"],s:'_0?"toggle":null'},p:[219,109,7077]}]},f:[{t:2,r:"desc",p:[219,140,7108]}]}]}],n:52,r:"accesses",p:[217,6,6913]}]}],n:52,r:"data.regions",p:[213,3,6648]}]}],r:"data.centcom_access"}],n:50,r:"data.has_id",p:[67,3,2340]}],n:50,r:"data.authenticated",p:[66,1,2310]}]}],x:{r:["data.mmode"],s:"!_0"}}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(431)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,431:431}],419:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{chargeState:function(t){var e=this.get("data.battery.max");return t>e/2?"good":t>e/4?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" "," ",{p:[15,1,311],t:7,e:"ntosheader"}," ",{p:[17,1,328],t:7,e:"ui-display",f:[{p:[18,2,343],t:7,e:"i",f:["Welcome to computer configuration utility. Please consult your system administrator if you have any questions about your device."]},{p:[18,137,478],t:7,e:"hr"}," ",{p:[19,2,485],t:7,e:"ui-display",a:{title:"Power Supply"},f:[{p:[20,3,522],t:7,e:"ui-section",a:{label:"Power Usage"},f:[{t:2,r:"data.power_usage",p:[21,4,559]},"W"]}," ",{t:4,f:[{p:[25,4,630],t:7,e:"ui-section",a:{label:"Battery Status"},f:["Active"]}," ",{p:[28,4,701],t:7,e:"ui-section",a:{label:"Battery Rating"},f:[{t:2,r:"data.battery.max",p:[29,5,742]}]}," ",{p:[31,4,785],t:7,e:"ui-section",a:{label:"Battery Charge"},f:[{p:[32,5,826],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.battery.max",p:[32,26,847]}],value:[{t:2,r:"adata.battery.charge",p:[32,56,877]}],state:[{t:2,x:{r:["chargeState","adata.battery.charge"],s:"_0(_1)"},p:[32,89,910]}]},f:[{t:2,x:{r:["adata.battery.charge"],s:"Math.round(_0)"},p:[32,128,949]},"/",{t:2,r:"adata.battery.max",p:[32,165,986]}]}]}],n:50,r:"data.battery",p:[24,3,605]},{t:4,n:51,f:[{p:[35,4,1051],t:7,e:"ui-section",a:{label:"Battery Status"},f:["Not Available"]}],r:"data.battery"}]}," ",{p:[41,2,1156],t:7,e:"ui-display",a:{title:"File System"},f:[{p:[42,3,1192],t:7,e:"ui-section",a:{label:"Used Capacity"},f:[{p:[43,4,1231],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.disk_size",p:[43,25,1252]}],value:[{t:2,r:"adata.disk_used",p:[43,53,1280]}],state:"good"},f:[{t:2,x:{r:["adata.disk_used"],s:"Math.round(_0)"},p:[43,87,1314]},"GQ / ",{t:2,r:"adata.disk_size",p:[43,123,1350]},"GQ"]}]}]}," ",{p:[47,2,1419],t:7,e:"ui-display",a:{title:"Computer Components"},f:[{t:4,f:[{p:[49,4,1491],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"name",p:[49,26,1513]}]},f:[{p:[50,5,1529],t:7,e:"div",a:{style:"display: table-caption; margin-left: 3px"},f:[{t:2,r:"desc",p:[50,59,1583]}]}," ",{p:[52,5,1605],t:7,e:"ui-section",a:{label:"State"},f:[{p:[53,6,1638],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["critical"],s:'_0?"disabled":null'},p:[53,24,1656]}],action:"PC_toggle_component",params:['{"name": "',{t:2,r:"name",p:[53,105,1737]},'"}']},f:[{t:2,x:{r:["enabled"],s:'_0?"Enabled":"Disabled"'},p:[54,7,1757]}]}]}," ",{t:4,f:[{p:[59,6,1868],t:7,e:"ui-section",a:{label:"Power Usage"},f:[{t:2,r:"powerusage",p:[60,7,1908]},"W"]}],n:50,r:"powerusage",p:[58,5,1843]}]}," ",{p:[64,4,1985],t:7,e:"br"}],n:52,r:"data.hardware",p:[48,3,1463]}]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(431)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,431:431}],420:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{t:4,f:[{p:[7,3,103],t:7,e:"h2",f:["An error has occurred and this program can not continue."]}," Additional information: ",{t:2,r:"data.error",p:[8,27,196]},{p:[8,41,210],t:7,e:"br"}," ",{p:[9,3,218],t:7,e:"i",f:["Please try again. If the problem persists contact your system administrator for assistance."]}," ",{p:[10,3,320],t:7,e:"ui-button",a:{action:"PRG_closefile"},f:["Restart program"]}],n:50,r:"data.error",p:[6,2,81]},{t:4,n:51,f:[{t:4,f:[{p:[13,4,422],t:7,e:"h2",f:["Viewing file ",{t:2,r:"data.filename",p:[13,21,439]}]}," ",{p:[14,4,466],t:7,e:"div",a:{"class":"item"},f:[{p:[15,4,489],t:7,e:"ui-button",a:{action:"PRG_closefile"},f:["CLOSE"]}," ",{p:[16,4,545],t:7,e:"ui-button",a:{action:"PRG_edit"},f:["EDIT"]}," ",{p:[17,4,595],t:7,e:"ui-button",a:{action:"PRG_printfile"},f:["PRINT"]}," "]},{p:[18,10,657],t:7,e:"hr"}," ",{t:3,r:"data.filedata",p:[19,4,666]}],n:50,r:"data.filename",p:[12,3,396]},{t:4,n:51,f:[{p:[21,4,702],t:7,e:"h2",f:["Available files (local):"]}," ",{p:[22,4,740],t:7,e:"table",f:[{p:[23,5,753],t:7,e:"tr",f:[{p:[24,6,764],t:7,e:"th",f:["File name"]}," ",{p:[25,6,789],t:7,e:"th",f:["File type"]}," ",{p:[26,6,814],t:7,e:"th",f:["File size (GQ)"]}," ",{p:[27,6,844],t:7,e:"th",f:["Operations"]}]}," ",{t:4,f:[{p:[30,6,907],t:7,e:"tr",f:[{p:[31,7,919],t:7,e:"td",f:[{t:2,r:"name",p:[31,11,923]}]}," ",{p:[32,7,944],t:7,e:"td",f:[".",{t:2,r:"type",p:[32,12,949]}]}," ",{p:[33,7,970],t:7,e:"td",f:[{t:2,r:"size",p:[33,11,974]},"GQ"]}," ",{p:[34,7,997],t:7,e:"td",f:[{p:[35,8,1010],t:7,e:"ui-button",a:{action:"PRG_openfile",params:['{"name": "',{t:2,r:"name",p:[35,59,1061]},'"}']},f:["VIEW"]}," ",{p:[36,8,1098],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[36,26,1116]}],action:"PRG_deletefile",params:['{"name": "',{t:2,r:"name",p:[36,105,1195]},'"}']},f:["DELETE"]}," ",{p:[37,8,1234],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[37,26,1252]}],action:"PRG_rename",params:['{"name": "',{t:2,r:"name",p:[37,101,1327]},'"}']},f:["RENAME"]}," ",{p:[38,8,1366],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[38,26,1384]}],action:"PRG_clone",params:['{"name": "',{t:2,r:"name",p:[38,100,1458]},'"}']},f:["CLONE"]}," ",{t:4,f:[{p:[40,9,1531],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[40,27,1549]}],action:"PRG_copytousb",params:['{"name": "',{t:2,r:"name",p:[40,105,1627]},'"}']},f:["EXPORT"]}],n:50,r:"data.usbconnected",p:[39,8,1496]}]}]}],n:52,r:"data.files",p:[29,5,880]}]}," ",{t:4,f:[{p:[47,4,1761],t:7,e:"h2",f:["Available files (portable device):"]}," ",{p:[48,4,1809],t:7,e:"table",f:[{p:[49,5,1822],t:7,e:"tr",f:[{p:[50,6,1833],t:7,e:"th",f:["File name"]}," ",{p:[51,6,1858],t:7,e:"th",f:["File type"]}," ",{p:[52,6,1883],t:7,e:"th",f:["File size (GQ)"]}," ",{p:[53,6,1913],t:7,e:"th",f:["Operations"]}]}," ",{t:4,f:[{p:[56,6,1979],t:7,e:"tr",f:[{p:[57,7,1991],t:7,e:"td",f:[{t:2,r:"name",p:[57,11,1995]}]}," ",{p:[58,7,2016],t:7,e:"td",f:[".",{t:2,r:"type",p:[58,12,2021]}]}," ",{p:[59,7,2042],t:7,e:"td",f:[{t:2,r:"size",p:[59,11,2046]},"GQ"]}," ",{p:[60,7,2069],t:7,e:"td",f:[{p:[61,8,2082],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[61,26,2100]}],action:"PRG_usbdeletefile",params:['{"name": "',{t:2,r:"name",p:[61,108,2182]},'"}']},f:["DELETE"]}," ",{t:4,f:[{p:[63,9,2256],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[63,27,2274]}],action:"PRG_copyfromusb",params:['{"name": "',{t:2,r:"name",p:[63,107,2354]},'"}']},f:["IMPORT"]}],n:50,r:"data.usbconnected",p:[62,8,2221]}]}]}],n:52,r:"data.usbfiles",p:[55,5,1949]}]}],n:50,r:"data.usbconnected",p:[46,4,1731]}," ",{p:[70,4,2470],t:7,e:"ui-button",a:{action:"PRG_newtextfile"},f:["NEW DATA FILE"]}],r:"data.filename"}],r:"data.error"}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(431)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,431:431}],421:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{p:[5,2,79],t:7,e:"i",f:["No program loaded. Please select program from list below."]}," ",{p:[6,2,146],t:7,e:"table",f:[{t:4,f:[{p:[8,4,185],t:7,e:"tr",f:[{p:[8,8,189],t:7,e:"td",f:[{p:[8,12,193],t:7,e:"ui-button",a:{action:"PC_runprogram",params:['{"name": "',{t:2,r:"name",p:[8,64,245]},'"}']},f:[{t:2,r:"desc",p:[9,5,263]}]}]},{p:[11,4,293],t:7,e:"td",f:[{p:[11,8,297],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["running"],s:'_0?null:"disabled"'},p:[11,26,315]}],icon:"close",action:"PC_killprogram",params:['{"name": "',{t:2,r:"name",p:[11,114,403]},'"}']}}]}]}],n:52,r:"data.programs",p:[7,3,157]}]}," ",{p:[14,2,454],t:7,e:"br"},{p:[14,6,458],t:7,e:"br"}," ",{t:4,f:[{p:[16,3,491],t:7,e:"ui-button",a:{action:"PC_toggle_light",style:[{t:2,x:{r:["data.light_on"],s:'_0?"selected":null'},p:[16,46,534]}]},f:["Toggle Flashlight"]},{p:[16,114,602],t:7,e:"br"}," ",{p:[17,3,610],t:7,e:"ui-button",a:{action:"PC_light_color"},f:["Change Flashlight Color ",{p:[17,62,669],t:7,e:"span",a:{style:["border:1px solid #161616; background-color: ",{t:2,r:"data.comp_light_color",p:[17,119,726]},";"]},f:["   "]}]}],n:50,r:"data.has_light",p:[15,2,465]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(431)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,431:431}],422:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{t:4,f:[{p:[6,3,105],t:7,e:"h1",f:["ADMINISTRATIVE MODE"]}],n:50,r:"data.adminmode",p:[5,2,79]}," ",{t:4,f:[{p:[10,3,170],t:7,e:"div",a:{"class":"itemLabel"},f:["Current channel:"]}," ",{p:[13,3,229],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.title",p:[14,4,259]}]}," ",{p:[16,3,287],t:7,e:"div",a:{"class":"itemLabel"},f:["Operator access:"]}," ",{p:[19,3,346],t:7,e:"div",a:{"class":"itemContent"},f:[{t:4,f:[{p:[21,5,406],t:7,e:"b",f:["Enabled"]}],n:50,r:"data.is_operator",p:[20,4,376]},{t:4,n:51,f:[{p:[23,5,439],t:7,e:"b",f:["Disabled"]}],r:"data.is_operator"}]}," ",{p:[26,3,480],t:7,e:"div",a:{"class":"itemLabel"},f:["Controls:"]}," ",{p:[29,3,532],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[30,4,562],t:7,e:"table",f:[{p:[31,5,575],t:7,e:"tr",f:[{p:[31,9,579],t:7,e:"td",f:[{p:[31,13,583],t:7,e:"ui-button",a:{action:"PRG_speak"},f:["Send message"]}]}]},{p:[32,5,643],t:7,e:"tr",f:[{p:[32,9,647],t:7,e:"td",f:[{p:[32,13,651],t:7,e:"ui-button",a:{action:"PRG_changename"},f:["Change nickname"]}]}]},{p:[33,5,719],t:7,e:"tr",f:[{p:[33,9,723],t:7,e:"td",f:[{p:[33,13,727],t:7,e:"ui-button",a:{action:"PRG_toggleadmin"},f:["Toggle administration mode"]}]}]},{p:[34,5,807],t:7,e:"tr",f:[{p:[34,9,811],t:7,e:"td",f:[{p:[34,13,815],t:7,e:"ui-button",a:{action:"PRG_leavechannel"},f:["Leave channel"]}]}]},{p:[35,5,883],t:7,e:"tr",f:[{p:[35,9,887],t:7,e:"td",f:[{p:[35,13,891],t:7,e:"ui-button",a:{action:"PRG_savelog"},f:["Save log to local drive"]}," ",{t:4,f:[{p:[37,6,995],t:7,e:"tr",f:[{p:[37,10,999],t:7,e:"td",f:[{p:[37,14,1003],t:7,e:"ui-button",a:{action:"PRG_renamechannel"},f:["Rename channel"]}]}]},{p:[38,6,1074],t:7,e:"tr",f:[{p:[38,10,1078],t:7,e:"td",f:[{p:[38,14,1082],t:7,e:"ui-button",a:{action:"PRG_setpassword"},f:["Set password"]}]}]},{p:[39,6,1149],t:7,e:"tr",f:[{p:[39,10,1153],t:7,e:"td",f:[{p:[39,14,1157],t:7,e:"ui-button",a:{action:"PRG_deletechannel"},f:["Delete channel"]}]}]}],n:50,r:"data.is_operator",p:[36,5,964]}]}]}]}]}," ",{p:[43,3,1263],t:7,e:"b",f:["Chat Window"]}," ",{p:[44,4,1286],t:7,e:"div",a:{"class":"statusDisplay",style:"overflow: auto;"},f:[{p:[45,4,1342],t:7,e:"div",a:{"class":"item"},f:[{p:[46,5,1366],t:7,e:"div",a:{"class":"itemContent",style:"width: 100%;"},f:[{t:4,f:[{t:2,r:"msg",p:[48,7,1450]},{p:[48,14,1457],t:7,e:"br"}],n:52,r:"data.messages",p:[47,6,1419]}]}]}]}," ",{p:[53,3,1516],t:7,e:"b",f:["Connected Users"]},{p:[53,25,1538],t:7,e:"br"}," ",{t:4,f:[{t:2,r:"name",p:[55,4,1573]},{p:[55,12,1581],t:7,e:"br"}],n:52,r:"data.clients",p:[54,3,1546]}],n:50,r:"data.title",p:[9,2,148]},{t:4,n:51,f:[{p:[58,3,1613],t:7,e:"b",f:["Controls:"]}," ",{p:[59,3,1633],t:7,e:"table",f:[{p:[60,4,1645],t:7,e:"tr",f:[{p:[60,8,1649],t:7,e:"td",f:[{p:[60,12,1653],t:7,e:"ui-button",a:{action:"PRG_changename"},f:["Change nickname"]}]}]},{p:[61,4,1720],t:7,e:"tr",f:[{p:[61,8,1724],t:7,e:"td",f:[{p:[61,12,1728],t:7,e:"ui-button",a:{action:"PRG_newchannel"},f:["New Channel"]}]}]},{p:[62,4,1791],t:7,e:"tr",f:[{p:[62,8,1795],t:7,e:"td",f:[{p:[62,12,1799],t:7,e:"ui-button",a:{action:"PRG_toggleadmin"},f:["Toggle administration mode"]}]}]}]}," ",{p:[64,3,1889],t:7,e:"b",f:["Available channels:"]}," ",{p:[65,3,1919],t:7,e:"table",f:[{t:4,f:[{p:[67,4,1964],t:7,e:"tr",f:[{p:[67,8,1968],t:7,e:"td",f:[{p:[67,12,1972],t:7,e:"ui-button",a:{action:"PRG_joinchannel",params:['{"id": "',{t:2,r:"id",p:[67,64,2024]},'"}']},f:[{t:2,r:"chan",p:[67,74,2034]}]},{p:[67,94,2054],t:7,e:"br"}]}]}],n:52,r:"data.all_channels",p:[66,3,1930]}]}],r:"data.title"}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(431)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,431:431}],423:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{t:4,f:["##SYSTEM ERROR: ",{t:2,r:"data.error",p:[6,19,117]},{p:[6,33,131],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["RESET"]}],n:50,r:"data.error",p:[5,2,79]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.target"],s:"_0"},f:["##DoS traffic generator active. Tx: ",{t:2,r:"data.speed",p:[8,39,243]},"GQ/s",{p:[8,57,261],t:7,e:"br"}," ",{t:4,f:[{t:2,r:"nums",p:[10,4,300]},{p:[10,12,308],t:7,e:"br"}],n:52,r:"data.dos_strings",p:[9,3,269]}," ",{p:[12,3,329],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["ABORT"]}]},{t:4,n:50,x:{r:["data.target"],s:"!(_0)"},f:[" ##DoS traffic generator ready. Select target device.",{p:[14,55,443],t:7,e:"br"}," ",{t:4,f:["Targeted device ID: ",{t:2,r:"data.focus",p:[16,24,494]}],n:50,r:"data.focus",p:[15,3,451]},{t:4,n:51,f:["Targeted device ID: None"],r:"data.focus"}," ",{p:[20,3,564],t:7,e:"ui-button",a:{action:"PRG_execute"},f:["EXECUTE"]},{p:[20,54,615],t:7,e:"div",a:{style:"clear:both"}}," Detected devices on network:",{p:[21,31,677],t:7,e:"br"}," ",{t:4,f:[{p:[23,4,711],t:7,e:"ui-button",a:{action:"PRG_target_relay",params:['{"targid": "',{t:2,r:"id",p:[23,61,768]},'"}']},f:[{t:2,r:"id",p:[23,71,778]}]}],n:52,r:"data.relays",p:[22,3,685]}]}],r:"data.error"}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(431)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,431:431}],424:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{p:[5,2,79],t:7,e:"i",f:["Welcome to software download utility. Please select which software you wish to download."]},{p:[5,97,174],t:7,e:"hr"}," ",{t:4,f:[{p:[7,3,203],t:7,e:"ui-display",a:{title:"Download Error"},f:[{p:[8,4,243],t:7,e:"ui-section",a:{label:"Information"},f:[{t:2,r:"data.error",p:[9,5,281]}]}," ",{p:[11,4,318],t:7,e:"ui-section",a:{label:"Reset Program"},f:[{p:[12,5,358],t:7,e:"ui-button",a:{icon:"times",action:"PRG_reseterror"},f:["RESET"]}]}]}],n:50,r:"data.error",p:[6,2,181]},{t:4,n:51,f:[{t:4,f:[{p:[19,4,516],t:7,e:"ui-display",a:{title:"Download Running"},f:[{p:[20,5,559],t:7,e:"i",f:["Please wait..."]}," ",{p:[21,5,586],t:7,e:"ui-section",a:{label:"File name"},f:[{t:2,r:"data.downloadname",p:[22,6,623]}]}," ",{p:[24,5,669],t:7,e:"ui-section",a:{label:"File description"},f:[{t:2,r:"data.downloaddesc",p:[25,6,713]}]}," ",{p:[27,5,759],t:7,e:"ui-section",a:{label:"File size"},f:[{t:2,r:"data.downloadsize",p:[28,6,796]},"GQ"]}," ",{p:[30,5,844],t:7,e:"ui-section",a:{label:"Transfer Rate"},f:[{t:2,r:"data.downloadspeed",p:[31,6,885]}," GQ/s"]}," ",{p:[33,5,937],t:7,e:"ui-section",a:{label:"Download progress"},f:[{p:[34,6,982],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.downloadsize",p:[34,27,1003]}],value:[{t:2,r:"adata.downloadcompletion",p:[34,58,1034]}],state:"good"},f:[{t:2,x:{r:["adata.downloadcompletion"],s:"Math.round(_0)"},p:[34,101,1077]},"GQ / ",{t:2,r:"adata.downloadsize",p:[34,146,1122]},"GQ"]}]}]}],n:50,r:"data.downloadname",p:[18,3,486]}],r:"data.error"}," ",{t:4,f:[{t:4,f:[{p:[41,4,1270],t:7,e:"ui-display",a:{title:"File System"},f:[{p:[42,5,1308],t:7,e:"ui-section",a:{label:"Used Capacity"},f:[{p:[43,6,1349],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.disk_size",p:[43,27,1370]}],value:[{t:2,r:"adata.disk_used",p:[43,55,1398]}],state:"good"},f:[{t:2,x:{r:["adata.disk_used"],s:"Math.round(_0)"},p:[43,89,1432]},"GQ / ",{t:2,r:"adata.disk_size",p:[43,125,1468]},"GQ"]}]}]}," ",{p:[47,4,1545],t:7,e:"ui-display",a:{title:"Primary Software Repository"},f:[{t:4,f:[{p:[49,6,1642],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"filedesc",p:[49,28,1664]}]},f:[{p:[50,7,1686],t:7,e:"div",a:{style:"display: table-caption; margin-left: 3px"},f:[{t:2,r:"fileinfo",p:[50,61,1740]}]}," ",{p:[52,7,1774],t:7,e:"ui-section",a:{label:"File name"},f:[{t:2,r:"filename",p:[53,8,1813]}," (",{t:2,r:"size",p:[53,22,1827]}," GQ)"]}," ",{p:[55,7,1868],t:7,e:"ui-section",a:{label:"Compatibility"},f:[{t:2,r:"compatibility",p:[56,8,1911]}]}," ",{p:[58,7,1957],t:7,e:"ui-button",a:{icon:"signal",action:"PRG_downloadfile",params:['{"filename": "',{t:2,r:"filename",p:[58,80,2030]},'"}']},f:["DOWNLOAD"]}]}," ",{p:[62,6,2113],t:7,e:"br"}],n:52,r:"data.downloadable_programs",p:[48,5,1599]}]}," ",{t:4,f:[{p:[67,5,2194],t:7,e:"ui-display",a:{title:"UNKNOWN Software Repository"},f:[{p:[68,6,2249],t:7,e:"i",f:["Please note that Nanotrasen does not recommend download of software from non-official servers."]}," ",{t:4,f:[{p:[70,7,2395],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"filedesc",p:[70,29,2417]}]},f:[{p:[71,8,2440],t:7,e:"div",a:{style:"display: table-caption; margin-left: 3px"},f:[{t:2,r:"fileinfo",p:[71,62,2494]}]}," ",{p:[73,8,2530],t:7,e:"ui-section",a:{label:"File name"},f:[{t:2,r:"filename",p:[74,9,2570]}," (",{t:2,r:"size",p:[74,23,2584]}," GQ)"]}," ",{p:[76,8,2627],t:7,e:"ui-section",a:{label:"Compatibility"},f:[{t:2,r:"compatibility",p:[77,9,2671]}]}," ",{p:[79,8,2719],t:7,e:"ui-button",a:{icon:"signal",action:"PRG_downloadfile",params:['{"filename": "',{t:2,r:"filename",p:[79,81,2792]},'"}']},f:["DOWNLOAD"]}]}," ",{p:[83,7,2879],t:7,e:"br"}],n:52,r:"data.hacked_programs",p:[69,6,2357]}]}],n:50,r:"data.hackedavailable",p:[66,4,2160]}],n:50,x:{r:["data.error"],s:"!_0"},p:[40,3,1246]}],n:50,x:{r:["data.downloadname"],s:"!_0"},p:[39,2,1216]}," ",{p:[89,2,2954],t:7,e:"br"},{p:[89,6,2958],t:7,e:"br"},{p:[89,10,2962],t:7,e:"hr"},{p:[89,14,2966],t:7,e:"i",f:["NTOS v2.0.4b Copyright Nanotrasen 2557 - 2559"]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(431)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,431:431}],425:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{p:[6,2,81],t:7,e:"ui-display",a:{title:"WIRELESS CONNECTIVITY"},f:[{p:[8,3,129],t:7,e:"ui-section",a:{label:"Active NTNetRelays"},f:[{p:[9,4,173],t:7,e:"b",f:[{t:2,r:"data.ntnetrelays",p:[9,7,176]}]}]}," ",{t:4,f:[{p:[12,4,250],t:7,e:"ui-section",a:{label:"System status"},f:[{p:[13,6,291],t:7,e:"b",f:[{t:2,x:{r:["data.ntnetstatus"],s:'_0?"ENABLED":"DISABLED"'},p:[13,9,294]}]}]}," ",{p:[15,4,366],t:7,e:"ui-section",a:{label:"Control"},f:[{p:[17,4,401],t:7,e:"ui-button",a:{icon:"plus",action:"toggleWireless"},f:["TOGGLE"]}]}," ",{p:[21,4,500],t:7,e:"br"},{p:[21,8,504],t:7,e:"br"}," ",{p:[22,4,513],t:7,e:"i",f:["Caution - Disabling wireless transmitters when using wireless device may prevent you from re-enabling them again!"]}],n:50,r:"data.ntnetrelays",p:[11,3,221]},{t:4,n:51,f:[{p:[24,4,650],t:7,e:"br"},{p:[24,8,654],t:7,e:"p",f:["Wireless coverage unavailable, no relays are connected."]}],r:"data.ntnetrelays"}]}," ",{p:[29,2,750],t:7,e:"ui-display",a:{title:"FIREWALL CONFIGURATION"},f:[{p:[31,2,798],t:7,e:"table",f:[{p:[32,3,809],t:7,e:"tr",f:[{p:[33,4,818],t:7,e:"th",f:["PROTOCOL"]},{p:[34,4,835],t:7,e:"th",f:["STATUS"]},{p:[35,4,850],t:7,e:"th",f:["CONTROL"]}]},{p:[36,3,865],t:7,e:"tr",f:[" ",{p:[37,4,874],t:7,e:"td",f:["Software Downloads"]},{p:[38,4,901],t:7,e:"td",f:[{t:2,x:{r:["data.config_softwaredownload"],s:'_0?"ENABLED":"DISABLED"'},p:[38,8,905]}]},{p:[39,4,967],t:7,e:"td",f:[" ",{p:[39,9,972],t:7,e:"ui-button",a:{action:"toggle_function", params:'{"id": "1"}'},f:["TOGGLE"]}]}]},{p:[40,3,1051],t:7,e:"tr",f:[" ",{p:[41,4,1060],t:7,e:"td",f:["Peer to Peer Traffic"]},{p:[42,4,1089],t:7,e:"td",f:[{t:2,x:{r:["data.config_peertopeer"],s:'_0?"ENABLED":"DISABLED"'},p:[42,8,1093]}]},{p:[43,4,1149],t:7,e:"td",f:[{p:[43,8,1153],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "2"}'},f:["TOGGLE"]}]}]},{p:[44,3,1232],t:7,e:"tr",f:[" ",{p:[45,4,1241],t:7,e:"td",f:["Communication Systems"]},{p:[46,4,1271],t:7,e:"td",f:[{t:2,x:{r:["data.config_communication"],s:'_0?"ENABLED":"DISABLED"'},p:[46,8,1275]}]},{p:[47,4,1334],t:7,e:"td",f:[{p:[47,8,1338],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "3"}'},f:["TOGGLE"]}]}]},{p:[48,3,1417],t:7,e:"tr",f:[" ",{p:[49,4,1426],t:7,e:"td",f:["Remote System Control"]},{p:[50,4,1456],t:7,e:"td",f:[{t:2,x:{r:["data.config_systemcontrol"],s:'_0?"ENABLED":"DISABLED"'},p:[50,8,1460]}]},{p:[51,4,1519],t:7,e:"td",f:[{p:[51,8,1523],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "4"}'},f:["TOGGLE"]}]}]}]}]}," ",{p:[55,2,1630],t:7,e:"ui-display",a:{title:"SECURITY SYSTEMS"},f:[{t:4,f:[{p:[58,4,1699],t:7,e:"ui-notice",f:[{p:[59,5,1716],t:7,e:"h1",f:["NETWORK INCURSION DETECTED"]}]}," ",{p:[61,5,1774],t:7,e:"i",f:["An abnormal activity has been detected in the network. Please verify system logs for more information"]}],n:50,r:"data.idsalarm",p:[57,3,1673]}," ",{p:[64,3,1902],t:7,e:"ui-section",a:{label:"Intrusion Detection System"},f:[{p:[65,4,1954],t:7,e:"b",f:[{t:2,x:{r:["data.idsstatus"],s:'_0?"ENABLED":"DISABLED"'},p:[65,7,1957]}]}]}," ",{p:[68,3,2029],t:7,e:"ui-section",a:{label:"Maximal Log Count"},f:[{p:[69,4,2072],t:7,e:"b",f:[{t:2,r:"data.ntnetmaxlogs",p:[69,7,2075]}]}]}," ",{p:[72,3,2125],t:7,e:"ui-section",a:{label:"Controls"},f:[]}," ",{p:[74,4,2176],t:7,e:"table",f:[{p:[75,4,2188],t:7,e:"tr",f:[{p:[75,8,2192],t:7,e:"td",f:[{p:[75,12,2196],t:7,e:"ui-button",a:{action:"resetIDS"},f:["RESET IDS"]}]}]},{p:[76,4,2251],t:7,e:"tr",f:[{p:[76,8,2255],t:7,e:"td",f:[{p:[76,12,2259],t:7,e:"ui-button",a:{action:"toggleIDS"},f:["TOGGLE IDS"]}]}]},{p:[77,4,2316],t:7,e:"tr",f:[{p:[77,8,2320],t:7,e:"td",f:[{p:[77,12,2324],t:7,e:"ui-button",a:{action:"updatemaxlogs"},f:["SET LOG LIMIT"]}]}]},{p:[78,4,2388],t:7,e:"tr",f:[{p:[78,8,2392],t:7,e:"td",f:[{p:[78,12,2396],t:7,e:"ui-button",a:{action:"purgelogs"},f:["PURGE LOGS"]}]}]}]}," ",{p:[81,3,2467],t:7,e:"ui-subdisplay",a:{title:"System Logs"},f:[{p:[82,3,2506],t:7,e:"div",a:{"class":"statusDisplay",style:"overflow: auto;"},f:[{p:[83,3,2561],t:7,e:"div",a:{"class":"item"},f:[{p:[84,4,2584],t:7,e:"div",a:{"class":"itemContent",style:"width: 100%;"},f:[{t:4,f:[{t:2,r:"entry",p:[86,6,2667]},{p:[86,15,2676],t:7,e:"br"}],n:52,r:"data.ntnetlogs",p:[85,5,2636]}]}]}]}]}]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(431)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,431:431}],426:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{t:4,f:[{p:[7,2,102],t:7,e:"div",a:{"class":"item"},f:[{p:[8,3,124],t:7,e:"h2",f:["An error has occurred during operation..."]}," ",{p:[9,3,178],t:7,e:"b",f:["Additional information:"]},{t:2,r:"data.error",p:[9,34,209]},{p:[9,48,223],t:7,e:"br"}," ",{p:[10,3,231],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Clear"]}]}],n:50,r:"data.error",p:[6,2,81]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.downloading"],s:"_0"},f:[{p:[13,3,321],t:7,e:"h2",f:["Download in progress..."]}," ",{p:[14,3,357],t:7,e:"div",a:{"class":"itemLabel"},f:["Downloaded file:"]}," ",{p:[17,3,416],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.download_name",p:[18,4,446]}]}," ",{p:[20,3,483],t:7,e:"div",a:{"class":"itemLabel"},f:["Download progress:"]}," ",{p:[23,3,544],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.download_progress",p:[24,4,574]}," / ",{t:2,r:"data.download_size",p:[24,33,603]}," GQ"]}," ",{p:[26,3,642],t:7,e:"div",a:{"class":"itemLabel"},f:["Transfer speed:"]}," ",{p:[29,3,700],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.download_netspeed",p:[30,4,730]},"GQ/s"]}," ",{p:[32,3,774],t:7,e:"div",a:{"class":"itemLabel"},f:["Controls:"]}," ",{p:[35,3,826],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[36,4,856],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Abort download"]}]}]},{t:4,n:50,x:{r:["data.downloading","data.uploading"],s:"(!(_0))&&(_1)"},f:[" ",{p:[39,3,954],t:7,e:"h2",f:["Server enabled"]}," ",{p:[40,3,981],t:7,e:"div",a:{"class":"itemLabel"},f:["Connected clients:"]}," ",{p:[43,3,1042],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.upload_clients",p:[44,4,1072]}]}," ",{p:[46,3,1109],t:7,e:"div",a:{"class":"itemLabel"},f:["Provided file:"]}," ",{p:[49,3,1166],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.upload_filename",p:[50,4,1196]}]}," ",{p:[52,3,1234],t:7,e:"div",a:{"class":"itemLabel"},f:["Server password:"]}," ",{p:[55,3,1293],t:7,e:"div",a:{"class":"itemContent"},f:[{t:4,f:["ENABLED"],n:50,r:"data.upload_haspassword",p:[56,4,1323]},{t:4,n:51,f:["DISABLED"],r:"data.upload_haspassword"}]}," ",{p:[62,3,1420],t:7,e:"div",a:{"class":"itemLabel"},f:["Commands:"]}," ",{p:[65,3,1472],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[66,4,1502],t:7,e:"ui-button",a:{action:"PRG_setpassword"},f:["Set password"]}," ",{p:[67,4,1567],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Exit server"]}]}]},{t:4,n:50,x:{r:["data.downloading","data.uploading","data.upload_filelist"],s:"(!(_0))&&((!(_1))&&(_2))"},f:[" ",{p:[70,3,1668],t:7,e:"h2",f:["File transfer server ready. Select file to upload:"]}," ",{p:[71,3,1732],t:7,e:"table",f:[{p:[72,3,1743],t:7,e:"tr",f:[{p:[72,7,1747],t:7,e:"th",f:["File name"]},{p:[72,20,1760],t:7,e:"th",f:["File size"]},{p:[72,33,1773],t:7,e:"th",f:["Controls ",{t:4,f:[{p:[74,4,1824],t:7,e:"tr",f:[{p:[74,8,1828],t:7,e:"td",f:[{t:2,r:"filename",p:[74,12,1832]}]},{p:[75,4,1849],t:7,e:"td",f:[{t:2,r:"size",p:[75,8,1853]},"GQ"]},{p:[76,4,1868],t:7,e:"td",f:[{p:[76,8,1872],t:7,e:"ui-button",a:{action:"PRG_uploadfile",params:['{"id": "',{t:2,r:"uid",p:[76,59,1923]},'"}']},f:["Select"]}]}]}],n:52,r:"data.upload_filelist",p:[73,3,1789]}]}]}]}," ",{p:[79,3,1981],t:7,e:"hr"}," ",{p:[80,3,1989],t:7,e:"ui-button",a:{action:"PRG_setpassword"},f:["Set password"]}," ",{p:[81,3,2053],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Return"]}]},{t:4,n:50,x:{r:["data.downloading","data.uploading","data.upload_filelist"],s:"(!(_0))&&((!(_1))&&(!(_2)))"},f:[" ",{p:[83,3,2116],t:7,e:"h2",f:["Available files:"]}," ",{p:[84,3,2145],t:7,e:"table",a:{border:"1",style:"border-collapse: collapse"},f:[{p:[84,55,2197],t:7,e:"tr",f:[{p:[84,59,2201],t:7,e:"th",f:["Server UID"]},{p:[84,73,2215],t:7,e:"th",f:["File Name"]},{p:[84,86,2228],t:7,e:"th",f:["File Size"]},{p:[84,99,2241],t:7,e:"th",f:["Password Protection"]},{p:[84,122,2264],t:7,e:"th",f:["Operations ",{t:4,f:[{p:[86,5,2311],t:7,e:"tr",f:[{p:[86,9,2315],t:7,e:"td",f:[{t:2,r:"uid",p:[86,13,2319]}]},{p:[87,5,2332],t:7,e:"td",f:[{t:2,r:"filename",p:[87,9,2336]}]},{p:[88,5,2354],t:7,e:"td",f:[{t:2,r:"size",p:[88,9,2358]},"GQ ",{t:4,f:[{p:[90,6,2400],t:7,e:"td",f:["Enabled"]}],n:50,r:"haspassword",p:[89,5,2374]}," ",{t:4,f:[{p:[93,6,2457],t:7,e:"td",f:["Disabled"]}],n:50,x:{r:["haspassword"],s:"!_0"},p:[92,5,2430]}]},{p:[96,5,2494],t:7,e:"td",f:[{p:[96,9,2498],t:7,e:"ui-button",a:{action:"PRG_downloadfile",params:['{"id": "',{t:2,r:"uid",p:[96,62,2551]},'"}']},f:["Download"]}]}]}],n:52,r:"data.servers",p:[85,4,2283]}]}]}]}," ",{p:[99,3,2612],t:7,e:"hr"}," ",{p:[100,3,2620],t:7,e:"ui-button",a:{action:"PRG_uploadmenu"},f:["Send file"]}]}],r:"data.error"}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(431)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,431:431}],427:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{chargingState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}},chargingMode:function(t){return 2==t?"Full":1==t?"Charging":"Draining"},channelState:function(t){return t>=2?"good":"bad"},channelPower:function(t){return t>=2?"On":"Off"},channelMode:function(t){return 1==t||3==t?"Auto":"Manual"}},computed:{graphData:function(){var t=this.get("data.history");return Object.keys(t).map(function(e){return t[e].map(function(t,e){return{x:e,y:t}})})}}}}(r),r.exports.template={v:3,t:[" "," ",{p:[43,1,1082],t:7,e:"ntosheader"}," ",{p:[45,1,1099],t:7,e:"ui-display",a:{title:"Network"},f:[{t:4,f:[{p:[47,5,1157],t:7,e:"ui-linegraph",a:{points:[{t:2,r:"graphData",p:[47,27,1179]}],height:"500",legend:'["Available", "Load"]',colors:'["rgb(0, 102, 0)", "rgb(153, 0, 0)"]',xunit:"seconds ago",xfactor:[{t:2,r:"data.interval",p:[49,38,1331]}],yunit:"W",yfactor:"1",xinc:[{t:2,x:{r:["data.stored"],s:"_0/10"},p:[50,15,1387]}],yinc:"9"}}],n:50,r:"config.fancy",p:[46,3,1131]},{t:4,n:51,f:[{p:[52,5,1437],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[53,7,1475],t:7,e:"span",f:[{t:2,r:"data.supply",p:[53,13,1481]}]}]}," ",{p:[55,5,1528],t:7,e:"ui-section",a:{label:"Load"},f:[{p:[56,9,1563],t:7,e:"span",f:[{t:2,r:"data.demand",p:[56,15,1569]}]}]}],r:"config.fancy"}]}," ",{p:[60,1,1638],t:7,e:"ui-display",a:{title:"Areas"},f:[{p:[61,3,1668],t:7,e:"ui-section",a:{nowrap:0},f:[{p:[62,5,1693],t:7,e:"div",a:{"class":"content"},f:["Area"]}," ",{p:[63,5,1730],t:7,e:"div",a:{"class":"content"},f:["Charge"]}," ",{p:[64,5,1769],t:7,e:"div",a:{"class":"content"},f:["Load"]}," ",{p:[65,5,1806],t:7,e:"div",a:{"class":"content"},f:["Status"]}," ",{p:[66,5,1845],t:7,e:"div",a:{"class":"content"},f:["Equipment"]}," ",{p:[67,5,1887],t:7,e:"div",a:{"class":"content"},f:["Lighting"]}," ",{p:[68,5,1928],t:7,e:"div",a:{"class":"content"},f:["Environment"]}]}," ",{t:4,f:[{p:[71,5,2013],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[71,24,2032]}],nowrap:0},f:[{p:[72,7,2057],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.areas"],s:"Math.round(_1[_0].charge)"},p:[72,28,2078]}," %"]}," ",{p:[73,7,2136],t:7,e:"div",a:{"class":"content"},f:[{t:2,rx:{r:"adata.areas",m:[{t:30,n:"@index"},"load"]},p:[73,28,2157]}]}," ",{p:[74,7,2199],t:7,e:"div",a:{"class":"content"},f:[{p:[74,28,2220],t:7,e:"span",a:{"class":[{t:2,x:{r:["chargingState","charging"],s:"_0(_1)"},p:[74,41,2233]}]},f:[{t:2,x:{r:["chargingMode","charging"],s:"_0(_1)"},p:[74,70,2262]}]}]}," ",{p:[75,7,2309],t:7,e:"div",a:{"class":"content"},f:[{p:[75,28,2330],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","eqp"],s:"_0(_1)"},p:[75,41,2343]}]},f:[{t:2,x:{r:["channelPower","eqp"],s:"_0(_1)"},p:[75,64,2366]}," [",{p:[75,87,2389],t:7,e:"span",f:[{t:2,x:{r:["channelMode","eqp"],s:"_0(_1)"},p:[75,93,2395]}]},"]"]}]}," ",{p:[76,7,2444],t:7,e:"div",a:{"class":"content"},f:[{p:[76,28,2465],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","lgt"],s:"_0(_1)"},p:[76,41,2478]}]},f:[{t:2,x:{r:["channelPower","lgt"],s:"_0(_1)"},p:[76,64,2501]}," [",{p:[76,87,2524],t:7,e:"span",f:[{t:2,x:{r:["channelMode","lgt"],s:"_0(_1)"},p:[76,93,2530]}]},"]"]}]}," ",{p:[77,7,2579],t:7,e:"div",a:{"class":"content"},f:[{p:[77,28,2600],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","env"],s:"_0(_1)"},p:[77,41,2613]}]},f:[{t:2,x:{r:["channelPower","env"],s:"_0(_1)"},p:[77,64,2636]}," [",{p:[77,87,2659],t:7,e:"span",f:[{t:2,x:{r:["channelMode","env"],s:"_0(_1)"},p:[77,93,2665]}]},"]"]}]}]}],n:52,r:"data.areas",p:[70,3,1987]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(431)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,431:431}],428:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{p:[5,2,79],t:7,e:"div",a:{"class":"item"},f:[{p:[6,3,101],t:7,e:"div",a:{"class":"itemLabel"},f:["Payload status:"]}," ",{p:[9,3,158],t:7,e:"div",a:{"class":"itemContent"},f:[{t:4,f:["ARMED"],n:50,r:"data.armed",p:[10,4,188]},{t:4,n:51,f:["DISARMED"],r:"data.armed"}]}," ",{p:[16,3,270],t:7,e:"div",a:{"class":"itemLabel"},f:["Controls:"]}," ",{p:[19,3,321],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[20,4,351],t:7,e:"table",f:[{p:[21,4,363],t:7,e:"tr",f:[{p:[21,8,367],t:7,e:"td",f:[{p:[21,12,371],t:7,e:"ui-button",a:{action:"PRG_obfuscate"},f:["OBFUSCATE PROGRAM NAME"]}]}]},{p:[22,4,444],t:7,e:"tr",f:[{p:[22,8,448],t:7,e:"td",f:[{p:[22,12,452],t:7,e:"ui-button",a:{action:"PRG_arm",state:[{t:2,x:{r:["data.armed"],s:'_0?"danger":null'},p:[22,47,487]}]},f:[{t:2,x:{r:["data.armed"],s:'_0?"DISARM":"ARM"'},p:[22,81,521]}]}," ",{p:[23,4,571],t:7,e:"ui-button",a:{icon:"radiation",state:[{t:2,x:{r:["data.armed"],s:'_0?null:"disabled"'},p:[23,39,606]}],action:"PRG_activate"},f:["ACTIVATE"]}]}]}]}]}]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(431)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,431:431}],429:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{t:4,f:[{p:[5,3,95],t:7,e:"ui-display",a:{title:[{t:2,r:"class",p:[5,22,114]}," Alarms"]},f:[{p:[6,5,138],t:7,e:"ul",f:[{t:4,f:[{p:[8,9,171],t:7,e:"li",f:[{t:2,r:".",p:[8,13,175]}]}],n:52,r:".",p:[7,7,150]},{t:4,n:51,f:[{p:[10,9,211],t:7,e:"li",f:["System Nominal"]}],r:"."}]}]}],n:52,i:"class",r:"data.alarms",p:[4,1,64]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(431)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,431:431}],430:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{integState:function(t){var e=100;return t==e?"good":t>e/2?"average":"bad"},bigState:function(t,e,n){return charge>n?"bad":t>e?"average":"good"}}}}(r),r.exports.template={v:3,t:[" "," ",{p:[23,1,421],t:7,e:"ntosheader"}," ",{t:4,f:[{p:[27,2,462],t:7,e:"ui-button",a:{action:"PRG_clear"},f:["Back to Menu"]},{p:[27,56,516],t:7,e:"br"}," ",{p:[28,3,524],t:7,e:"ui-display",a:{title:"Supermatter Status:"},f:[{p:[29,3,568],t:7,e:"ui-section",a:{label:"Core Integrity"},f:[{p:[30,5,609],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"adata.SM_integrity",p:[30,38,642]}],state:[{t:2,x:{r:["integState","adata.SM_integrity"],s:"_0(_1)"},p:[30,69,673]}]},f:[{t:2,r:"data.SM_integrity",p:[30,105,709]},"%"]}]}," ",{p:[32,3,761],t:7,e:"ui-section",a:{label:"Relative EER"},f:[{p:[33,5,800],t:7,e:"span",a:{"class":[{t:2,x:{r:["bigState","data.SM_power"],s:"_0(_1,150,300)"},p:[33,18,813]}]},f:[{t:2,r:"data.SM_power",p:[33,55,850]}," MeV/cm3"]}]}," ",{p:[35,3,903],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[36,5,941],t:7,e:"span",a:{"class":[{t:2,x:{r:["bigState","data.SM_ambienttemp"],s:"_0(_1,4000,5000)"},p:[36,18,954]}]},f:[{t:2,r:"data.SM_ambienttemp",p:[36,63,999]}," K"]}]}," ",{p:[38,3,1052],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[39,5,1087],t:7,e:"span",a:{"class":[{t:2,x:{r:["bigState","data.SM_ambientpressure"],s:"_0(_1,5000,10000)"},p:[39,18,1100]}]},f:[{t:2,r:"data.SM_ambientpressure",p:[39,68,1150]}," kPa"]}]}]}," ",{p:[42,3,1227],t:7,e:"hr"},{p:[42,7,1231],t:7,e:"br"}," ",{p:[43,3,1239],t:7,e:"ui-display",a:{title:"Gas Composition:"},f:[{t:4,f:[{p:[45,5,1307],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[45,24,1326]}]},f:[{t:2,r:"amount",p:[46,6,1343]}," %"]}],n:52,r:"data.gases",p:[44,4,1281]}]}],n:50,r:"data.active",p:[26,1,440]},{t:4,n:51,f:[{p:[51,2,1418],t:7,e:"ui-button",a:{action:"PRG_refresh"},f:["Refresh"]},{p:[51,53,1469],t:7,e:"br"}," ",{p:[52,2,1476],t:7,e:"ui-display",a:{title:"Detected Supermatters"},f:[{t:4,f:[{p:[54,3,1552],t:7,e:"ui-section",a:{label:"Area"},f:[{t:2,r:"area_name",p:[55,5,1583]}," - (#",{t:2,r:"uid",p:[55,23,1601]},")"]}," ",{p:[57,3,1630],t:7,e:"ui-section",a:{label:"Integrity"},f:[{t:2,r:"integrity",p:[58,5,1666]}," %"]}," ",{p:[60,3,1702],t:7,e:"ui-section",a:{label:"Options"},f:[{p:[61,5,1736],t:7,e:"ui-button",a:{action:"PRG_set",params:['{"target" : "',{t:2,r:"uid",p:[61,54,1785]},'"}']},f:["View Details"]}]}],n:52,r:"data.supermatters",p:[53,2,1521]}]}],r:"data.active"}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(431)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,431:431}],431:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"item",style:"float: left"},f:[{p:[2,2,41],t:7,e:"table",f:[{p:[2,9,48],t:7,e:"tr",f:[{t:4,f:[{p:[4,3,113],t:7,e:"td",f:[{p:[4,7,117],t:7,e:"img",a:{src:[{t:2,r:"data.PC_batteryicon",p:[4,17,127]}]}}]}],n:50,x:{r:["data.PC_batteryicon","data.PC_showbatteryicon"],s:"_0&&_1"},p:[3,2,55]}," ",{t:4,f:[{p:[7,3,226],t:7,e:"td",f:[{p:[7,7,230],t:7,e:"b",f:[{t:2,r:"data.PC_batterypercent",p:[7,10,233]}]}]}],n:50,x:{r:["data.PC_batterypercent","data.PC_showbatteryicon"],s:"_0&&_1"},p:[6,2,165]}," ",{t:4,f:[{p:[10,3,305],t:7,e:"td",f:[{p:[10,7,309],t:7,e:"img",a:{src:[{t:2,r:"data.PC_ntneticon",p:[10,17,319]}]}}]}],n:50,r:"data.PC_ntneticon",p:[9,2,276]}," ",{t:4,f:[{p:[13,3,386],t:7,e:"td",f:[{p:[13,7,390],t:7,e:"img",a:{src:[{t:2,r:"data.PC_apclinkicon",p:[13,17,400]}]}}]}],n:50,r:"data.PC_apclinkicon",p:[12,2,355]}," ",{t:4,f:[{p:[16,3,469],t:7,e:"td",f:[{p:[16,7,473],t:7,e:"b",f:[{t:2,r:"data.PC_stationtime",p:[16,10,476]}]}]}],n:50,r:"data.PC_stationtime",p:[15,2,438]}," ",{t:4,f:[{p:[19,3,552],t:7,e:"td",f:[{p:[19,7,556],t:7,e:"img",a:{src:[{t:2,r:"icon",p:[19,17,566]}]}}]}],n:52,r:"data.PC_programheaders",p:[18,2,516]}]}]}]}," ",{p:[23,1,609],t:7,e:"div",a:{style:"float: right; margin-top: 5px"},f:[{p:[24,2,655],t:7,e:"ui-button",a:{action:"PC_shutdown"},f:["Shutdown"]}," ",{t:4,f:[{p:[26,3,745],t:7,e:"ui-button",a:{action:"PC_exit"},f:["EXIT PROGRAM"]}," ",{p:[27,3,801],t:7,e:"ui-button",a:{action:"PC_minimize"},f:["Minimize Program"]}],n:50,r:"data.PC_showexitprogram",p:[25,2,710]}]}," ",{p:[30,1,881],t:7,e:"div",a:{style:"clear: both"}}]},e.exports=a.extend(r.exports)},{341:341}],432:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Auth. Disk:"},f:[{t:4,f:[{p:[3,7,69],t:7,e:"ui-button",a:{icon:"eject",style:"selected",action:"eject_disk"},f:["++++++++++"]}],n:50,r:"data.disk_present",p:[2,3,36]},{t:4,n:51,f:[{p:[5,7,172],t:7,e:"ui-button",a:{icon:"plus",action:"insert_disk"},f:["----------"]}],r:"data.disk_present"}]}," ",{p:[8,1,266],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[9,3,297],t:7,e:"span",f:[{t:2,r:"data.status1",p:[9,9,303]},"-",{t:2,r:"data.status2",p:[9,26,320]}]}]}," ",{p:[11,1,360],t:7,e:"ui-display",a:{title:"Timer"},f:[{p:[12,3,390],t:7,e:"ui-section",a:{label:"Time to Detonation"},f:[{p:[13,5,435],t:7,e:"span",f:[{t:2,x:{r:["data.timing","data.time_left","data.timer_set"],s:"_0?_1:_2"},p:[13,11,441]}]}]}," ",{t:4,f:[{p:[16,5,540],t:7,e:"ui-section",a:{label:"Adjust Timer"},f:[{p:[17,7,581],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.timer_is_not_default"],s:'_0&&_1&&_2?null:"disabled"'},p:[17,40,614]}],action:"timer",params:'{"change": "reset"}'},f:["Reset"]}," ",{p:[19,7,786],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.timer_is_not_min"],s:'_0&&_1&&_2?null:"disabled"'},p:[19,38,817]}],action:"timer",params:'{"change": "decrease"}'},f:["Decrease"]}," ",{p:[21,7,991],t:7,e:"ui-button",a:{icon:"pencil",state:[{t:2,x:{r:["data.disk_present","data.code_approved"],s:'_0&&_1?null:"disabled"'},p:[21,39,1023]}],action:"timer",params:'{"change": "input"}'},f:["Set"]}," ",{p:[22,7,1155],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.timer_is_not_max"],s:'_0&&_1&&_2?null:"disabled"'},p:[22,37,1185]}],action:"timer",params:'{"change": "increase"}'},f:["Increase"]}]}],n:51,r:"data.timing",p:[15,3,518]}," ",{p:[26,3,1394],t:7,e:"ui-section",a:{label:"Timer"},f:[{p:[27,5,1426],t:7,e:"ui-button",a:{icon:"clock-o",style:[{t:2,x:{r:["data.timing"],s:'_0?"danger":"caution"'},p:[27,38,1459]}],action:"toggle_timer",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.safety"],s:'_0&&_1&&!_2?null:"disabled"'},p:[29,14,1542]}]},f:[{t:2,x:{r:["data.timing"],s:'_0?"On":"Off"'},p:[30,7,1631]}]}]}]}," ",{p:[34,1,1713],t:7,e:"ui-display",a:{title:"Anchoring"},f:[{p:[35,3,1747],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.disk_present","data.code_approved"],s:'_0&&_1?null:"disabled"'},p:[36,12,1770]}],icon:[{t:2,x:{r:["data.anchored"],s:'_0?"lock":"unlock"'},p:[37,11,1846]}],style:[{t:2,x:{r:["data.anchored"],s:'_0?null:"caution"'},p:[38,12,1897]}],action:"anchor"},f:[{t:2,x:{r:["data.anchored"],s:'_0?"Engaged":"Off"'},p:[39,21,1956]}]}]}," ",{p:[41,1,2022],t:7,e:"ui-display",a:{title:"Safety"},f:[{p:[42,3,2053],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.disk_present","data.code_approved"],s:'_0&&_1?null:"disabled"'},p:[43,12,2076]}],icon:[{t:2,x:{r:["data.safety"],s:'_0?"lock":"unlock"'},p:[44,11,2152]}],action:"safety",style:[{t:2,x:{r:["data.safety"],s:'_0?"caution":"danger"'},p:[45,12,2217]}]},f:[{p:[46,7,2265],t:7,e:"span",f:[{t:2,x:{r:["data.safety"],s:'_0?"On":"Off"'},p:[46,13,2271]}]}]}]}," ",{p:[49,1,2341],t:7,e:"ui-display",a:{title:"Code"},f:[{p:[50,3,2370],t:7,e:"ui-section",a:{label:"Message"},f:[{t:2,r:"data.message",p:[50,31,2398]}]}," ",{p:[51,3,2431],t:7,e:"ui-section",a:{label:"Keypad"},f:[{p:[52,5,2464],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[52,39,2498]}],params:'{"digit":"1"}'},f:["1"]}," ",{p:[53,5,2583],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[53,39,2617]}],params:'{"digit":"2"}'},f:["2"]}," ",{p:[54,5,2702],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[54,39,2736]}],params:'{"digit":"3"}'},f:["3"]}," ",{p:[55,5,2821],t:7,e:"br"}," ",{p:[56,5,2831],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[56,39,2865]}],params:'{"digit":"4"}'},f:["4"]}," ",{p:[57,5,2950],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[57,39,2984]}],params:'{"digit":"5"}'},f:["5"]}," ",{p:[58,5,3069],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[58,39,3103]}],params:'{"digit":"6"}'},f:["6"]}," ",{p:[59,5,3188],t:7,e:"br"}," ",{p:[60,5,3198],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[60,39,3232]}],params:'{"digit":"7"}'},f:["7"]}," ",{p:[61,5,3317],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[61,39,3351]}],params:'{"digit":"8"}'},f:["8"]}," ",{p:[62,5,3436],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[62,39,3470]}],params:'{"digit":"9"}'},f:["9"]}," ",{p:[63,5,3555],t:7,e:"br"}," ",{p:[64,5,3565],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[64,39,3599]}],params:'{"digit":"R"}'},f:["R"]}," ",{p:[65,5,3684],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[65,39,3718]}],params:'{"digit":"0"}'},f:["0"]}," ",{p:[66,5,3803],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[66,39,3837]}],params:'{"digit":"E"}'},f:["E"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],433:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,25],t:7,e:"ui-button",a:{icon:"undo",action:"change_menu",params:'{"menu": "1"}'},f:["Return"]}," ",{p:[3,2,113],t:7,e:"ui-display",a:{title:"Advanced Surgery Procedures"},f:[{p:[4,3,165],t:7,e:"ui-button",a:{icon:"download",action:"sync"},f:["Sync with research database"]}," ",{t:4,f:[{p:[6,4,278],t:7,e:"ui-display",f:[{p:[7,6,297],t:7,e:"ui-section",f:[{p:[7,18,309],t:7,e:"b",f:[{t:2,r:"name",p:[7,21,312]}]}]}," ",{p:[8,6,344],t:7,e:"ui-section",f:[{t:2,r:"desc",p:[8,18,356]}]}]}],n:52,r:"data.surgeries",p:[5,3,249]}]}],n:50,x:{r:["data.menu"],s:"_0==2"},p:[1,1,0]},{t:4,n:51,f:[{p:[13,2,437],t:7,e:"ui-button",a:{action:"change_menu",params:'{"menu": "2"}'},f:["View Surgery Procedures"]}," ",{t:4,f:[{p:[15,3,556],t:7,e:"ui-notice",f:["No table detected!"]}],n:51,r:"data.table",p:[14,2,530]}," ",{p:[19,2,623],t:7,e:"ui-display",f:[{p:[20,3,639],t:7,e:"ui-display",a:{title:"Patient State"},f:[{t:4,f:[{p:[22,5,704],t:7,e:"ui-section",a:{label:"State"},f:[{p:[23,6,737],t:7,e:"span",a:{"class":[{t:2,r:"data.patient.statstate",p:[23,19,750]}]},f:[{t:2,r:"data.patient.stat",p:[23,47,778]}]}]}," ",{p:[25,5,831],t:7,e:"ui-section",a:{label:"Blood Type"},f:[{p:[26,6,869],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.patient.blood_type",p:[26,28,891]}]}]}," ",{p:[28,5,950],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[29,6,984],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.patient.minHealth",p:[29,19,997]}],max:[{t:2,r:"data.patient.maxHealth",p:[29,52,1030]}],value:[{t:2,r:"data.patient.health",p:[29,87,1065]}],state:[{t:2,x:{r:["data.patient.health"],s:'_0>=0?"good":"average"'},p:[30,13,1103]}]},f:[{t:2,x:{r:["adata.patient.health"],s:"Math.round(_0)"},p:[30,64,1154]}]}]}," ",{t:4,f:[{p:[33,6,1389],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[33,25,1408]}]},f:[{p:[34,7,1427],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.patient.maxHealth",p:[34,28,1448]}],value:[{t:2,rx:{r:"data.patient",m:[{t:30,n:"type"}]},p:[34,63,1483]}],state:"bad"},f:[{t:2,x:{r:["type","adata.patient"],s:"Math.round(_1[_0])"},p:[34,99,1519]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Respiratory",type:"oxyLoss"}]'},p:[32,5,1224]}],n:50,r:"data.patient",p:[21,4,678]},{t:4,n:51,f:["No patient detected."],r:"data.patient"}]}," ",{p:[41,3,1670],t:7,e:"ui-display",a:{title:"Initiated Procedures"},f:[{t:4,f:[{t:4,f:[{p:[44,6,1777],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"name",p:[44,28,1799]}]},f:[{p:[45,7,1817],t:7,e:"ui-section",a:{label:"Next Step"},f:[{p:[46,8,1856],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"next_step",p:[46,30,1878]}]}," ",{t:4,f:[{p:[48,9,1937],t:7,e:"span",a:{"class":"content"},f:[{p:[48,31,1959],t:7,e:"b",f:["Required chemicals:"]},{p:[48,57,1985],t:7,e:"br"}," ",{t:2,r:"chems_needed",p:[48,62,1990]}]}],n:50,r:"chems_needed",p:[47,8,1907]}]}," ",{t:4,f:[{p:[52,8,2091],t:7,e:"ui-section",a:{label:"Alternative Step"},f:[{p:[53,9,2138],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"alternative_step",p:[53,31,2160]}]}," ",{t:4,f:[{p:[55,10,2232],t:7,e:"span",a:{"class":"content"},f:[{p:[55,32,2254],t:7,e:"b",f:["Required chemicals:"]},{p:[55,58,2280],t:7,e:"br"}," ",{t:2,r:"chems_needed",p:[55,63,2285]}]}],n:50,r:"alt_chems_needed",p:[54,9,2197]}]}],n:50,r:"alternative_step",p:[51,7,2058]}]}],n:52,r:"data.procedures",p:[43,5,1745]}],n:50,r:"data.procedures",p:[42,4,1716]},{t:4,n:51,f:["No active procedures."],r:"data.procedures"}]}]}],x:{r:["data.menu"],s:"_0==2"}}]},e.exports=a.extend(r.exports)},{341:341}],434:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,2,15],t:7,e:"ui-section",f:["This machine only accepts ore. Gibtonite and Slag are not accepted."]}," ",{p:[5,2,117],t:7,e:"ui-section",f:["Current unclaimed points: ",{t:2,r:"data.unclaimedPoints",p:[6,29,159]}," ",{t:4,f:[{p:[8,4,220],t:7,e:"ui-button",a:{action:"Claim"},f:["Claim Points"]}],n:50,r:"data.unclaimedPoints",p:[7,3,187]}]}," ",{p:[13,2,311],t:7,e:"ui-section",f:[{t:4,f:[{p:[15,4,350],t:7,e:"ui-button",a:{action:"Eject"},f:["Eject ID"]}," You have ",{t:2,r:"data.claimedPoints",p:[18,13,421]}," mining points collected."],n:50,r:"data.hasID",p:[14,3,327]},{t:4,n:51,f:[{p:[20,4,485],t:7,e:"ui-button",a:{action:"Insert"},f:["Insert ID"]}],r:"data.hasID"}]}]}," ",{p:[26,1,588],t:7,e:"ui-display",f:[{t:4,f:[{p:[28,3,627],t:7,e:"ui-section",f:[{p:[29,4,644],t:7,e:"ui-button",a:{action:"diskEject",icon:"eject"},f:["Eject Disk"]}]}," ",{t:4,f:[{p:[34,4,772],t:7,e:"ui-section",a:{"class":"candystripe"},f:[{p:[35,5,808],t:7,e:"ui-button",a:{action:"diskUpload",state:[{t:2,x:{r:["canupload"],s:'(_0)?null:"disabled"'},p:[35,42,845]}],icon:"upload",align:"right",params:['{ "design" : "',{t:2,r:"index",p:[35,129,932]},'" }']},f:["Upload"]}," File ",{t:2,r:"index",p:[38,10,988]},": ",{t:2,r:"name",p:[38,21,999]}]}],n:52,r:"data.diskDesigns",p:[33,3,741]}],n:50,r:"data.hasDisk",p:[27,2,603]},{t:4,n:51,f:[{p:[42,3,1053],t:7,e:"ui-section",f:[{p:[43,4,1070],t:7,e:"ui-button",a:{action:"diskInsert",icon:"floppy-o"},f:["Insert Disk"]}]}],r:"data.hasDisk"}]}," ",{t:4,f:[{p:[50,2,1223],t:7,e:"ui-display",f:[{p:[51,3,1239],t:7,e:"ui-section",f:[{p:[52,4,1256],t:7,e:"b",f:["Warning"]},": ",{t:2,r:"data.disconnected",p:[52,20,1272]},". Please contact the quartermaster."]}]}],n:50,r:"data.disconnected",p:[49,1,1195]},{t:4,f:[{p:[57,2,1412],t:7,e:"div",a:{"class":"display tabular"},f:[{p:[58,3,1445],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[59,5,1480],t:7,e:"section",a:{"class":"cell"},f:["Mineral"]}," ",{p:[62,5,1538],t:7,e:"section",a:{"class":"cell"},f:["Sheets"]}," ",{p:[65,5,1595],t:7,e:"section",a:{"class":"cell"},f:[]}," ",{p:[67,5,1639],t:7,e:"section",a:{"class":"cell"},f:[]}," ",{p:[69,5,1683],t:7,e:"section",a:{"class":"cell"},f:["Ore Value"]}]}," ",{t:4,f:[{p:[74,4,1785],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[75,5,1820],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[76,6,1849]}]}," ",{p:[78,5,1879],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"amount",p:[79,6,1922]}]}," ",{p:[81,5,1954],t:7,e:"section",a:{"class":"cell"},f:[{p:[82,6,1983],t:7,e:"input",a:{value:[{t:2,r:"sheets",p:[82,19,1996]}],placeholder:"###","class":"number"}}]}," ",{p:[84,5,2063],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{p:[85,6,2106],t:7,e:"ui-button",a:{"class":"center",grid:0,action:"Release",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[85,60,2160]}],params:['{ "id" : ',{t:2,r:"id",p:[85,115,2215]},', "sheets" : ',{t:2,r:"sheets",p:[85,134,2234]}," }"]},f:["Release"]}]}," ",{p:[89,5,2305],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"value",p:[90,6,2348]}]}]}],n:52,r:"data.materials",p:[73,3,1756]}," ",{t:4,f:[{p:[95,4,2431],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[96,5,2466],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[97,6,2495]}]}," ",{p:[99,5,2525],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"amount",p:[100,6,2568]}]}," ",{p:[102,5,2600],t:7,e:"section",a:{"class":"cell"},f:[{p:[103,6,2629],t:7,e:"input",a:{value:[{t:2,r:"sheets",p:[103,19,2642]}],placeholder:"###","class":"number"}}]}," ",{p:[105,5,2709],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{p:[106,6,2752],t:7,e:"ui-button",a:{"class":"center",grid:0,action:"Smelt",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[106,58,2804]}],params:['{ "id" : ',{t:2,r:"id",p:[106,114,2860]},', "sheets" : ',{t:2,r:"sheets",p:[106,133,2879]}," }"]},f:["Smelt"]}]}," ",{p:[110,5,2947],t:7,e:"section",a:{"class":"cell",align:"right"},f:[]}]}],n:52,r:"data.alloys",p:[94,3,2405]}]}],n:50,x:{r:["data.materials","data.alloys"],s:"_0||_1"},p:[56,1,1372]}]},e.exports=a.extend(r.exports)},{341:341}],435:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:{button:[{p:[4,4,87],t:7,e:"ui-button",a:{icon:"remove",state:[{t:2,x:{r:["data.has_beaker"],s:'_0?null:"disabled"'},p:[4,36,119]}],action:"empty_eject_beaker"},f:["Empty and eject"]}," ",{p:[7,4,231],t:7,e:"ui-button",a:{icon:"trash",state:[{t:2,x:{r:["data.has_beaker"],s:'_0?null:"disabled"'},p:[7,35,262]}],action:"empty_beaker"},f:["Empty"] diff --git a/tgui/src/interfaces/crayon.ract b/tgui/src/interfaces/crayon.ract index 8d34e8e82c..42c4df9a50 100644 --- a/tgui/src/interfaces/crayon.ract +++ b/tgui/src/interfaces/crayon.ract @@ -29,7 +29,7 @@ {{/each}} - {{text_buffer}} + {{data.text_buffer}} New Text From 05d839029a05efab0099a5eedffb8c213904ea59 Mon Sep 17 00:00:00 2001 From: Ghommie Date: Wed, 17 Jul 2019 16:03:05 +0200 Subject: [PATCH 006/324] Late night coding that was yesterday's. --- code/game/objects/items/crayons.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index cb490bd9b2..db26f643b5 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -157,9 +157,7 @@ update_icon() /obj/item/toy/crayon/proc/staticDrawables() - var/list/data = list() - data["drawables"] = list() . = list() var/list/g_items = list() @@ -182,7 +180,6 @@ for(var/D in drawings) D_items += list(list("item" = D)) - var/list/O_items = list() . += list(list(name = "Oriented", "items" = O_items)) for(var/O in oriented) @@ -198,8 +195,6 @@ for(var/i in randoms) rand_items += list(list("item" = i)) - data["selected_stencil"] = drawtype - data["text_buffer"] = text_buffer /obj/item/toy/crayon/ui_data() From fe148a9f7b6dfa809412277f589e671758e3cf11 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Fri, 26 Jul 2019 17:37:46 -0500 Subject: [PATCH 007/324] Delete civilian.dm --- code/modules/jobs/job_types/civilian.dm | 206 ------------------------ 1 file changed, 206 deletions(-) delete mode 100644 code/modules/jobs/job_types/civilian.dm diff --git a/code/modules/jobs/job_types/civilian.dm b/code/modules/jobs/job_types/civilian.dm deleted file mode 100644 index feca1a402d..0000000000 --- a/code/modules/jobs/job_types/civilian.dm +++ /dev/null @@ -1,206 +0,0 @@ -/* -Clown -*/ -/datum/job/clown - title = "Clown" - flag = CLOWN - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the head of personnel" - selection_color = "#dddddd" - - outfit = /datum/outfit/job/clown - - access = list(ACCESS_THEATRE) - minimal_access = list(ACCESS_THEATRE) - -/datum/job/clown/after_spawn(mob/living/carbon/human/H, mob/M) - . = ..() - H.apply_pref_name("clown", M.client) - -/datum/outfit/job/clown - name = "Clown" - jobtype = /datum/job/clown - - belt = /obj/item/pda/clown - uniform = /obj/item/clothing/under/rank/clown - shoes = /obj/item/clothing/shoes/clown_shoes - mask = /obj/item/clothing/mask/gas/clown_hat - l_pocket = /obj/item/bikehorn - backpack_contents = list( - /obj/item/stamp/clown = 1, - /obj/item/reagent_containers/spray/waterflower = 1, - /obj/item/reagent_containers/food/snacks/grown/banana = 1, - /obj/item/instrument/bikehorn = 1, - ) - - implants = list(/obj/item/implant/sad_trombone) - - backpack = /obj/item/storage/backpack/clown - satchel = /obj/item/storage/backpack/clown - duffelbag = /obj/item/storage/backpack/duffelbag/clown //strangely has a duffel - - box = /obj/item/storage/box/hug/survival - - chameleon_extras = /obj/item/stamp/clown - - -/datum/outfit/job/clown/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - ..() - if(visualsOnly) - return - - H.fully_replace_character_name(H.real_name, pick(GLOB.clown_names)) - -/datum/outfit/job/clown/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - ..() - if(visualsOnly) - return - - H.dna.add_mutation(CLOWNMUT) - H.dna.add_mutation(SMILE) - -/* -Mime -*/ -/datum/job/mime - title = "Mime" - flag = MIME - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the head of personnel" - selection_color = "#dddddd" - - outfit = /datum/outfit/job/mime - - access = list(ACCESS_THEATRE) - minimal_access = list(ACCESS_THEATRE) - -/datum/job/mime/after_spawn(mob/living/carbon/human/H, mob/M) - H.apply_pref_name("mime", M.client) - -/datum/outfit/job/mime - name = "Mime" - jobtype = /datum/job/mime - - belt = /obj/item/pda/mime - uniform = /obj/item/clothing/under/rank/mime - mask = /obj/item/clothing/mask/gas/mime - gloves = /obj/item/clothing/gloves/color/white - head = /obj/item/clothing/head/frenchberet - suit = /obj/item/clothing/suit/suspenders - backpack_contents = list(/obj/item/reagent_containers/food/drinks/bottle/bottleofnothing=1) - - accessory = /obj/item/clothing/accessory/pocketprotector/cosmetology - backpack = /obj/item/storage/backpack/mime - satchel = /obj/item/storage/backpack/mime - - -/datum/outfit/job/mime/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - ..() - - if(visualsOnly) - return - - if(H.mind) - H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall(null)) - H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/mime/speak(null)) - H.mind.miming = 1 - -/* -Curator -*/ -/datum/job/curator - title = "Curator" - flag = CURATOR - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 1 - spawn_positions = 1 - supervisors = "the head of personnel" - selection_color = "#dddddd" - - outfit = /datum/outfit/job/curator - - access = list(ACCESS_LIBRARY) - minimal_access = list(ACCESS_LIBRARY, ACCESS_CONSTRUCTION,ACCESS_MINING_STATION) - -/datum/outfit/job/curator - name = "Curator" - jobtype = /datum/job/curator - - belt = /obj/item/pda/curator - uniform = /obj/item/clothing/under/rank/curator - l_hand = /obj/item/storage/bag/books - r_pocket = /obj/item/key/displaycase - l_pocket = /obj/item/laser_pointer - accessory = /obj/item/clothing/accessory/pocketprotector/full - backpack_contents = list( - /obj/item/melee/curator_whip = 1, - /obj/item/soapstone = 1, - /obj/item/barcodescanner = 1 - ) - - -/datum/outfit/job/curator/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - ..() - - if(visualsOnly) - return - - H.grant_all_languages(omnitongue=TRUE) -/* -Lawyer -*/ -/datum/job/lawyer - title = "Lawyer" - flag = LAWYER - department_head = list("Head of Personnel") - department_flag = CIVILIAN - faction = "Station" - total_positions = 2 - spawn_positions = 2 - supervisors = "the head of personnel" - selection_color = "#dddddd" - var/lawyers = 0 //Counts lawyer amount - - outfit = /datum/outfit/job/lawyer - - access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) - minimal_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) - - mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) - -/datum/outfit/job/lawyer - name = "Lawyer" - jobtype = /datum/job/lawyer - - belt = /obj/item/pda/lawyer - ears = /obj/item/radio/headset/headset_sec - uniform = /obj/item/clothing/under/lawyer/bluesuit - suit = /obj/item/clothing/suit/toggle/lawyer - shoes = /obj/item/clothing/shoes/laceup - l_hand = /obj/item/storage/briefcase/lawyer - l_pocket = /obj/item/laser_pointer - r_pocket = /obj/item/clothing/accessory/lawyers_badge - - chameleon_extras = /obj/item/stamp/law - - -/datum/outfit/job/lawyer/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - ..() - if(visualsOnly) - return - - var/datum/job/lawyer/J = SSjob.GetJobType(jobtype) - J.lawyers++ - if(J.lawyers>1) - uniform = /obj/item/clothing/under/lawyer/purpsuit - suit = /obj/item/clothing/suit/toggle/lawyer/purple From 58a27fa082b21ad64a08cb2c4fe72f49df0ddad2 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Wed, 31 Jul 2019 19:37:53 -0500 Subject: [PATCH 008/324] tabby boi --- code/modules/mob/dead/new_player/new_player.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index a74e11ea46..58de99945b 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -477,7 +477,7 @@ var/available_ghosts = 0 for(var/spawner in GLOB.mob_spawners) - if(!LAZYLEN(spawner)) + if(!LAZYLEN(spawner)) continue var/obj/effect/mob_spawn/S = pick(GLOB.mob_spawners[spawner]) if(!istype(S) || !S.can_latejoin()) From 1893a8f31994caeb18e43237229cb1a30082ef37 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 1 Aug 2019 11:14:50 -0500 Subject: [PATCH 009/324] correctly copy/pasta's the chaplain stuff --- code/game/gamemodes/revolution/revolution.dm | 4 +- code/modules/jobs/job_types/chaplain.dm | 67 ++++++++++++++------ 2 files changed, 49 insertions(+), 22 deletions(-) diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 38dd128505..1f2aa8ad30 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -12,8 +12,8 @@ config_tag = "revolution" antag_flag = ROLE_REV false_report_weight = 10 - restricted_jobs = list("Security Officer", "Warden", "Detective", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer") - required_jobs = list(list("Captain"=1),list("Head of Personnel"=1),list("Head of Security"=1),list("Chief Engineer"=1),list("Research Director"=1),list("Chief Medical Officer"=1)) //Any head present + restricted_jobs = list("Security Officer", "Warden", "Detective", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer", "Quartermaster") + required_jobs = list(list("Captain"=1),list("Head of Personnel"=1),list("Head of Security"=1),list("Chief Engineer"=1),list("Research Director"=1),list("Chief Medical Officer"=1),list("Quartermaster"=1)) //Any head present required_players = 30 required_enemies = 2 recommended_enemies = 3 diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm index 8de228db2a..f6648fdf86 100644 --- a/code/modules/jobs/job_types/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain.dm @@ -1,6 +1,3 @@ -/* -Chaplain -*/ /datum/job/chaplain title = "Chaplain" flag = CHAPLAIN @@ -17,6 +14,9 @@ Chaplain access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE) minimal_access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE) + display_order = JOB_DISPLAY_ORDER_CHAPLAIN + + /datum/job/chaplain/after_spawn(mob/living/H, mob/M) . = ..() if(H.mind) @@ -36,11 +36,11 @@ Chaplain H.put_in_hands(N) return - var/new_religion = "Christianity" + var/new_religion = DEFAULT_RELIGION if(M.client && M.client.prefs.custom_names["religion"]) new_religion = M.client.prefs.custom_names["religion"] - var/new_deity = "Space Jesus" + var/new_deity = DEFAULT_DEITY if(M.client && M.client.prefs.custom_names["deity"]) new_deity = M.client.prefs.custom_names["deity"] @@ -48,29 +48,55 @@ Chaplain switch(lowertext(new_religion)) - if("christianity") + if("christianity") // DEFAULT_RELIGION B.name = pick("The Holy Bible","The Dead Sea Scrolls") - if("satanism") - B.name = "The Unholy Bible" - if("cthulhu") - B.name = "The Necronomicon" - if("islam") - B.name = "Quran" - if("scientology") - B.name = pick("The Biography of L. Ron Hubbard","Dianetics") + if("buddhism") + B.name = "The Sutras" + if("clownism","honkmother","honk","honkism","comedy") + B.name = pick("The Holy Joke Book", "Just a Prank", "Hymns to the Honkmother") if("chaos") B.name = "The Book of Lorgar" + if("cthulhu") + B.name = "The Necronomicon" + if("hinduism") + B.name = "The Vedas" + if("homosexuality") + B.name = pick("Guys Gone Wild","Coming Out of The Closet") if("imperium") B.name = "Uplifting Primer" - if("toolboxia") - B.name = "Toolbox Manifesto" - if("homosexuality") - B.name = "Guys Gone Wild" + if("islam") + B.name = "Quran" + if("judaism") + B.name = "The Torah" + if("lampism") + B.name = "Fluorescent Incandescence" if("lol", "wtf", "gay", "penis", "ass", "poo", "badmin", "shitmin", "deadmin", "cock", "cocks", "meme", "memes") - B.name = pick("Woodys Got Wood: The Aftermath", "War of the Cocks", "Sweet Bro and Hella Jef: Expanded Edition") + B.name = pick("Woodys Got Wood: The Aftermath", "War of the Cocks", "Sweet Bro and Hella Jef: Expanded Edition","F.A.T.A.L. Rulebook") H.adjustBrainLoss(100) // starts off retarded as fuck + if("monkeyism","apism","gorillism","primatism") + B.name = pick("Going Bananas", "Bananas Out For Harambe") + if("mormonism") + B.name = "The Book of Mormon" + if("pastafarianism") + B.name = "The Gospel of the Flying Spaghetti Monster" + if("rastafarianism","rasta") + B.name = "The Holy Piby" + if("satanism") + B.name = "The Unholy Bible" if("science") B.name = pick("Principle of Relativity", "Quantum Enigma: Physics Encounters Consciousness", "Programming the Universe", "Quantum Physics and Theology", "String Theory for Dummies", "How To: Build Your Own Warp Drive", "The Mysteries of Bluespace", "Playing God: Collector's Edition") + if("scientology") + B.name = pick("The Biography of L. Ron Hubbard","Dianetics") + if("servicianism", "partying") + B.name = "The Tenets of Servicia" + B.deity_name = pick("Servicia", "Space Bacchus", "Space Dionysus") + B.desc = "Happy, Full, Clean. Live it and give it." + if("subgenius") + B.name = "Book of the SubGenius" + if("toolboxia","greytide") + B.name = pick("Toolbox Manifesto","iGlove Assistants") + if("weeaboo","kawaii") + B.name = pick("Fanfiction Compendium","Japanese for Dummies","The Manganomicon","Establishing Your O.T.P") else B.name = "The Holy Book of [new_religion]" @@ -88,7 +114,8 @@ Chaplain jobtype = /datum/job/chaplain belt = /obj/item/pda/chaplain + ears = /obj/item/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/chaplain backpack_contents = list(/obj/item/camera/spooky = 1) backpack = /obj/item/storage/backpack/cultpack - satchel = /obj/item/storage/backpack/cultpack + satchel = /obj/item/storage/backpack/cultpack \ No newline at end of file From f59b60e83a09c1cf65c4bc9f160999233fafcfab Mon Sep 17 00:00:00 2001 From: Sishen Date: Thu, 8 Aug 2019 01:11:20 -0400 Subject: [PATCH 010/324] QOL OOGA BOOGA --- _maps/map_files/BoxStation/BoxStation.dmm | 6 +- .../map_files/Deltastation/DeltaStation2.dmm | 14 +- _maps/map_files/MetaStation/MetaStation.dmm | 8 +- _maps/map_files/PubbyStation/PubbyStation.dmm | 6 +- _maps/map_files/debug/runtimestation.dmm | 2 +- _maps/map_files/generic/CentCom.dmm | 6 +- code/game/machinery/_machinery.dm | 116 ++++++- code/game/machinery/computer/apc_control.dm | 1 - code/game/machinery/computer/card.dm | 3 - .../game/machinery/computer/communications.dm | 1 - code/game/machinery/computer/medical.dm | 286 +++++++++--------- code/game/machinery/computer/prisoner.dm | 142 --------- .../machinery/computer/prisoner/_prisoner.dm | 52 ++++ .../computer/prisoner/gulag_teleporter.dm | 142 +++++++++ .../machinery/computer/prisoner/management.dm | 139 +++++++++ code/game/machinery/computer/security.dm | 115 +++---- code/game/machinery/gulag_item_reclaimer.dm | 41 +-- .../circuitboards/computer_circuitboards.dm | 7 +- code/modules/mining/laborcamp/laborstacker.dm | 70 ++--- code/modules/mining/machine_redemption.dm | 61 ++-- code/modules/mining/machine_vending.dm | 119 ++------ tgstation.dme | 3 + tgui/src/interfaces/gulag_item_reclaimer.ract | 5 +- tgui/src/interfaces/labor_claim_console.ract | 25 +- .../interfaces/ore_redemption_machine.ract | 18 +- 25 files changed, 726 insertions(+), 662 deletions(-) create mode 100644 code/game/machinery/computer/prisoner/_prisoner.dm create mode 100644 code/game/machinery/computer/prisoner/gulag_teleporter.dm create mode 100644 code/game/machinery/computer/prisoner/management.dm diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 980e23188a..7350b4f0c6 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -2924,7 +2924,7 @@ /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "agp" = ( -/obj/machinery/computer/prisoner, +/obj/machinery/computer/prisoner/management, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "agq" = ( @@ -4489,7 +4489,7 @@ /turf/open/space, /area/solar/port/fore) "ajr" = ( -/obj/machinery/computer/gulag_teleporter_computer, +/obj/machinery/computer/prisoner/gulag_teleporter_computer, /turf/open/floor/plasteel, /area/security/processing) "ajs" = ( @@ -19371,7 +19371,7 @@ /turf/closed/wall, /area/bridge) "aTR" = ( -/obj/machinery/computer/prisoner, +/obj/machinery/computer/prisoner/management, /obj/effect/turf_decal/tile/red{ dir = 1 }, diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index fd7c0a3c00..88f3704091 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -4503,7 +4503,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint) "anx" = ( -/obj/machinery/computer/prisoner{ +/obj/machinery/computer/prisoner/management{ dir = 8 }, /obj/machinery/status_display{ @@ -36400,7 +36400,7 @@ /turf/open/floor/plasteel/grimy, /area/crew_quarters/heads/hos) "boc" = ( -/obj/machinery/computer/prisoner{ +/obj/machinery/computer/prisoner/management{ dir = 8 }, /turf/open/floor/plasteel/grimy, @@ -38706,7 +38706,7 @@ /turf/open/floor/plasteel/grimy, /area/crew_quarters/heads/hos) "brE" = ( -/obj/machinery/computer/prisoner{ +/obj/machinery/computer/prisoner/management{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -39610,7 +39610,7 @@ /turf/open/floor/plasteel/dark, /area/security/execution/transfer) "bth" = ( -/obj/machinery/computer/gulag_teleporter_computer{ +/obj/machinery/computer/prisoner/gulag_teleporter_computer{ dir = 1 }, /obj/structure/disposalpipe/segment{ @@ -42723,7 +42723,7 @@ /turf/open/floor/plasteel/dark, /area/bridge) "byk" = ( -/obj/machinery/computer/prisoner, +/obj/machinery/computer/prisoner/management, /obj/effect/turf_decal/tile/red{ dir = 1 }, @@ -56938,7 +56938,7 @@ /turf/open/floor/plasteel, /area/security/warden) "bTh" = ( -/obj/machinery/computer/prisoner{ +/obj/machinery/computer/prisoner/management{ dir = 8 }, /obj/structure/cable/white{ @@ -125921,7 +125921,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/escape) "egj" = ( -/obj/machinery/computer/prisoner{ +/obj/machinery/computer/prisoner/management{ dir = 1 }, /obj/structure/cable/white{ diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 75d7466371..13f774d25d 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -2017,7 +2017,7 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hos) "aeu" = ( -/obj/machinery/computer/prisoner, +/obj/machinery/computer/prisoner/management, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/hos) "aev" = ( @@ -8416,7 +8416,7 @@ /turf/open/floor/plating, /area/security/warden) "apI" = ( -/obj/machinery/computer/prisoner{ +/obj/machinery/computer/prisoner/management{ dir = 4 }, /obj/structure/cable/yellow{ @@ -10514,7 +10514,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "atK" = ( -/obj/machinery/computer/gulag_teleporter_computer{ +/obj/machinery/computer/prisoner/gulag_teleporter_computer{ dir = 1 }, /turf/open/floor/plasteel/dark, @@ -30781,7 +30781,7 @@ /obj/structure/cable/yellow{ icon_state = "2-4" }, -/obj/machinery/computer/prisoner, +/obj/machinery/computer/prisoner/management, /obj/effect/turf_decal/tile/red{ dir = 1 }, diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index ee97af14fc..2e8887c75f 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -4897,7 +4897,7 @@ /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "amT" = ( -/obj/machinery/computer/prisoner, +/obj/machinery/computer/prisoner/management, /obj/machinery/airalarm{ pixel_y = 22 }, @@ -6072,7 +6072,7 @@ /turf/open/floor/plating, /area/security/brig) "apF" = ( -/obj/machinery/computer/gulag_teleporter_computer{ +/obj/machinery/computer/prisoner/gulag_teleporter_computer{ dir = 1 }, /turf/open/floor/plasteel/dark, @@ -7048,7 +7048,7 @@ /turf/open/floor/plasteel/dark, /area/bridge) "arR" = ( -/obj/machinery/computer/prisoner, +/obj/machinery/computer/prisoner/management, /obj/effect/turf_decal/tile/red{ dir = 1 }, diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index 3bdf64ac27..feb8fc8cc0 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -523,7 +523,7 @@ /turf/open/floor/plasteel, /area/science) "bC" = ( -/obj/machinery/computer/gulag_teleporter_computer{ +/obj/machinery/computer/prisoner/gulag_teleporter_computer{ dir = 4 }, /turf/open/floor/plasteel, diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 115ad3d363..8d743b7f71 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -3864,7 +3864,7 @@ /turf/open/floor/plasteel, /area/centcom/control) "jS" = ( -/obj/machinery/computer/prisoner, +/obj/machinery/computer/prisoner/management, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/control) @@ -5857,7 +5857,7 @@ /turf/open/floor/plasteel, /area/centcom/control) "nY" = ( -/obj/machinery/computer/prisoner{ +/obj/machinery/computer/prisoner/management{ dir = 1 }, /obj/effect/turf_decal/stripes/line{ @@ -10495,7 +10495,7 @@ /turf/open/floor/plasteel/dark, /area/centcom/control) "yv" = ( -/obj/machinery/computer/prisoner{ +/obj/machinery/computer/prisoner/management{ dir = 1 }, /obj/machinery/light, diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index b0e4c699d7..e5fd73228a 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -113,6 +113,11 @@ Class Procs: var/atom/movable/occupant = null var/speed_process = FALSE // Process as fast as possible? var/obj/item/circuitboard/circuit // Circuit to be created and inserted when the machinery is created + var/obj/item/card/id/inserted_scan_id + var/obj/item/card/id/inserted_modify_id + var/list/region_access = null // For the identification console (card.dm) + var/list/head_subordinates = null // For the identification console (card.dm) + var/authenticated = 0 // For the identification console (card.dm) var/interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_SET_MACHINE @@ -131,7 +136,7 @@ Class Procs: else START_PROCESSING(SSfastprocess, src) power_change() - AddComponent(/datum/component/redirect, list(COMSIG_ENTER_AREA = CALLBACK(src, .proc/power_change))) + RegisterSignal(src, COMSIG_ENTER_AREA, .proc/power_change) if (occupant_typecache) occupant_typecache = typecacheof(occupant_typecache) @@ -143,6 +148,10 @@ Class Procs: else STOP_PROCESSING(SSfastprocess, src) dropContents() + if(length(component_parts)) + for(var/atom/A in component_parts) + qdel(A) + component_parts.Cut() return ..() /obj/machinery/proc/locate_machinery() @@ -179,12 +188,15 @@ Class Procs: L.update_canmove() occupant = null +/obj/machinery/proc/can_be_occupant(atom/movable/am) + return occupant_typecache ? is_type_in_typecache(am, occupant_typecache) : isliving(am) + /obj/machinery/proc/close_machine(atom/movable/target = null) state_open = FALSE density = TRUE if(!target) for(var/am in loc) - if (!(occupant_typecache ? is_type_in_typecache(am, occupant_typecache) : isliving(am))) + if (!(can_be_occupant(am))) continue var/atom/movable/AM = am if(AM.has_buckled_mobs()) @@ -311,6 +323,7 @@ Class Procs: spawn_frame(disassembled) for(var/obj/item/I in component_parts) I.forceMove(loc) + component_parts.Cut() qdel(src) /obj/machinery/proc/spawn_frame(disassembled) @@ -348,8 +361,8 @@ Class Procs: panel_open = FALSE icon_state = icon_state_closed to_chat(user, "You close the maintenance hatch of [src].") - return 1 - return 0 + return TRUE + return FALSE /obj/machinery/proc/default_change_direction_wrench(mob/user, obj/item/I) if(panel_open && I.tool_behaviour == TOOL_WRENCH) @@ -401,7 +414,7 @@ Class Procs: var/obj/item/circuitboard/machine/CB = locate(/obj/item/circuitboard/machine) in component_parts var/P if(W.works_from_distance) - display_parts(user) + to_chat(user, display_parts(user)) for(var/obj/item/A in component_parts) for(var/D in CB.req_components) if(ispath(A.type, D)) @@ -429,34 +442,38 @@ Class Procs: break RefreshParts() else - display_parts(user) + to_chat(user, display_parts(user)) if(shouldplaysound) W.play_rped_sound() return TRUE return FALSE /obj/machinery/proc/display_parts(mob/user) - to_chat(user, "It contains the following parts:") + . = list() + . += "It contains the following parts:" for(var/obj/item/C in component_parts) - to_chat(user, "[icon2html(C, user)] \A [C].") + . += "[icon2html(C, user)] \A [C]." + . = jointext(., "") /obj/machinery/examine(mob/user) - ..() + . = ..() if(stat & BROKEN) - to_chat(user, "It looks broken and non-functional.") + . += "It looks broken and non-functional." if(!(resistance_flags & INDESTRUCTIBLE)) if(resistance_flags & ON_FIRE) - to_chat(user, "It's on fire!") + . += "It's on fire!" var/healthpercent = (obj_integrity/max_integrity) * 100 switch(healthpercent) if(50 to 99) - to_chat(user, "It looks slightly damaged.") + . += "It looks slightly damaged." if(25 to 50) - to_chat(user, "It appears heavily damaged.") + . += "It appears heavily damaged." if(0 to 25) - to_chat(user, "It's falling apart!") + . += "It's falling apart!" if(user.research_scanner && component_parts) - display_parts(user) + . += display_parts(user, TRUE) + if(inserted_scan_id || inserted_modify_id) + . += "Alt-click to eject the ID card." //called on machinery construction (i.e from frame to machinery) but not on initialization /obj/machinery/proc/on_construction() @@ -490,3 +507,72 @@ Class Procs: . = . % 9 AM.pixel_x = -8 + ((.%3)*8) AM.pixel_y = -8 + (round( . / 3)*8) + +/obj/machinery/proc/id_insert_scan(mob/user, obj/item/card/id/I) + I = user.get_active_held_item() + if(istype(I)) + if(inserted_scan_id) + to_chat(user, "There's already an ID card in the console!") + return + if(!user.transferItemToLoc(I, src)) + return + inserted_scan_id = I + user.visible_message("[user] inserts an ID card into the console.", \ + "You insert the ID card into the console.") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + updateUsrDialog() + +/obj/machinery/proc/id_eject_scan(mob/user) + if(!inserted_scan_id) + to_chat(user, "There's no ID card in the console!") + return + if(inserted_scan_id) + inserted_scan_id.forceMove(drop_location()) + if(!issilicon(user) && Adjacent(user)) + user.put_in_hands(inserted_scan_id) + inserted_scan_id = null + user.visible_message("[user] gets an ID card from the console.", \ + "You get the ID card from the console.") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + updateUsrDialog() + +/obj/machinery/proc/id_eject_modify(mob/user) + if(inserted_modify_id) + GLOB.data_core.manifest_modify(inserted_modify_id.registered_name, inserted_modify_id.assignment) + inserted_modify_id.update_label() + inserted_modify_id.forceMove(drop_location()) + if(!issilicon(user) && Adjacent(user)) + user.put_in_hands(inserted_modify_id) + user.visible_message("[user] gets an ID card from the console.", \ + "You get the ID card from the console.") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + inserted_modify_id = null + region_access = null + head_subordinates = null + updateUsrDialog() + +/obj/machinery/proc/id_insert_modify(mob/user) + var/obj/item/card/id/I = user.get_active_held_item() + if(istype(I)) + if(inserted_modify_id) + to_chat(user, "There's already an ID card in the console!") + return + if(!user.transferItemToLoc(I, src)) + return + inserted_modify_id = I + user.visible_message("[user] inserts an ID card into the console.", \ + "You insert the ID card into the console.") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE) + updateUsrDialog() + +/obj/machinery/AltClick(mob/user) + if(!user.canUseTopic(src, !issilicon(user)) || !is_operational()) + return + if(inserted_modify_id) + id_eject_modify(user) + authenticated = FALSE + return + if(inserted_scan_id) + id_eject_scan(user) + authenticated = FALSE + return diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index e51d623c2f..d433c55724 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -11,7 +11,6 @@ var/list/result_filters //For sorting the results var/checking_logs = 0 var/list/logs - var/authenticated = 0 var/auth_id = "\[NULL\]" /obj/machinery/computer/apc_control/Initialize() diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 09bf401e12..0cce853c49 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -13,11 +13,8 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) circuit = /obj/item/circuitboard/computer/card var/obj/item/card/id/scan = null var/obj/item/card/id/modify = null - var/authenticated = 0 var/mode = 0 var/printing = null - var/list/region_access = null - var/list/head_subordinates = null var/target_dept = 0 //Which department this computer has access to. 0=all departments //Cooldown for closing positions in seconds diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 752765baa1..c79fb385b3 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -6,7 +6,6 @@ icon_keyboard = "tech_key" req_access = list(ACCESS_HEADS) circuit = /obj/item/circuitboard/computer/communications - var/authenticated = 0 var/auth_id = "Unknown" //Who is currently logged in? var/list/datum/comm_message/messages = list() var/datum/comm_message/currmsg diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 8af83ae08e..d4fe3e27a2 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -7,13 +7,10 @@ icon_keyboard = "med_key" req_one_access = list(ACCESS_MEDICAL, ACCESS_FORENSICS_LOCKERS) circuit = /obj/item/circuitboard/computer/med_data - var/obj/item/card/id/scan = null - var/authenticated = null var/rank = null var/screen = null var/datum/data/record/active1 var/datum/data/record/active2 - var/a_id = null var/temp = null var/printing = null //Sorting Variables @@ -25,24 +22,22 @@ /obj/machinery/computer/med_data/syndie icon_keyboard = "syndie_key" -/obj/machinery/computer/med_data/attackby(obj/item/O, mob/user, params) - if(istype(O, /obj/item/card/id) && !scan) - if(!user.transferItemToLoc(O, src)) - return - scan = O - to_chat(user, "You insert [O].") +/obj/machinery/computer/med_data/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/card/id)) + id_insert_scan(user) else return ..() /obj/machinery/computer/med_data/ui_interact(mob/user) . = ..() + if(isliving(user)) + playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) var/dat if(temp) dat = text("[temp]

Clear Screen") else - dat = text("Confirm Identity: []
", (src.scan ? text("[]", src.scan.name) : "----------")) - if(src.authenticated) - switch(src.screen) + if(authenticated) + switch(screen) if(1) dat += {" Search Records @@ -116,7 +111,7 @@ dat += "
ID:[active1.fields["id"]]
Sex: [active1.fields["sex"]] 
Gender: [active1.fields["gender"]] 
Age: [active1.fields["age"]] 
Species: [active1.fields["species"]] 
Fingerprint: [active1.fields["fingerprint"]] 

Comments/Log
[active2.fields[text("com_[]", counter)]]
Delete Entry
Add Entry
\s*$/g,rb={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"
- + "} dat += "" dat += {" @@ -309,36 +288,39 @@ What a mess.*/ active1 = null active2 = null - if("Confirm Identity") - eject_id(usr) - if("Log Out") authenticated = null screen = null active1 = null active2 = null + playsound(src, 'sound/machines/terminal_off.ogg', 50, FALSE) if("Log In") - if(issilicon(usr)) - var/mob/living/silicon/borg = usr + var/mob/M = usr + var/obj/item/card/id/I = M.get_idcard(TRUE) + if(issilicon(M)) + var/mob/living/silicon/borg = M active1 = null active2 = null authenticated = borg.name rank = "AI" screen = 1 - else if(IsAdminGhost(usr)) + else if(IsAdminGhost(M)) active1 = null active2 = null - authenticated = usr.client.holder.admin_signature + authenticated = M.client.holder.admin_signature rank = "Central Command" screen = 1 - else if(istype(scan, /obj/item/card/id)) + else if(I && check_access(I)) active1 = null active2 = null - if(check_access(scan)) - authenticated = scan.registered_name - rank = scan.assignment - screen = 1 + authenticated = I.registered_name + rank = I.assignment + screen = 1 + else + to_chat(usr, "Unauthorized Access.") + playsound(src, 'sound/machines/terminal_on.ogg', 50, FALSE) + //RECORD FUNCTIONS if("Record Maintenance") screen = 2 @@ -346,16 +328,14 @@ What a mess.*/ active2 = null if("Browse Record") - var/datum/data/record/R = locate(href_list["d_rec"]) - var/S = locate(href_list["d_rec"]) - if(!( GLOB.data_core.general.Find(R) )) + var/datum/data/record/R = locate(href_list["d_rec"]) in GLOB.data_core.general + if(!R) temp = "Record Not Found!" else + active1 = active2 = R for(var/datum/data/record/E in GLOB.data_core.security) if((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) - S = E - active1 = R - active2 = S + active2 = E screen = 3 @@ -368,7 +348,7 @@ What a mess.*/ var/obj/item/paper/P = new /obj/item/paper( loc ) P.info = "
Security Record - (SR-[GLOB.data_core.securityPrintCount])

" if((istype(active1, /datum/data/record) && GLOB.data_core.general.Find(active1))) - P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
", active1.fields["name"], active1.fields["id"], active1.fields["sex"], active1.fields["age"]) + P.info += text("Name: [] ID: []
\nGender: []
\nAge: []
", active1.fields["name"], active1.fields["id"], active1.fields["gender"], active1.fields["age"]) P.info += "\nSpecies: [active1.fields["species"]]
" P.info += text("\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", active1.fields["fingerprint"], active1.fields["p_stat"], active1.fields["m_stat"]) else @@ -419,6 +399,7 @@ What a mess.*/ P.info += "Security Record Lost!
" P.name = text("SR-[] '[]'", GLOB.data_core.securityPrintCount, "Record Lost") P.info += "" + P.update_icon() printing = null if("Print Poster") if(!( printing )) @@ -512,7 +493,7 @@ What a mess.*/ G.fields["name"] = "New Record" G.fields["id"] = "[num2hex(rand(1, 1.6777215E7), 6)]" G.fields["rank"] = "Unassigned" - G.fields["sex"] = "Male" + G.fields["gender"] = "Male" G.fields["age"] = "Unknown" G.fields["species"] = "Human" G.fields["photo_front"] = new /icon() @@ -584,12 +565,14 @@ What a mess.*/ if(!canUseSecurityRecordsConsole(usr, t1, a1)) return active1.fields["fingerprint"] = t1 - if("sex") + if("gender") if(istype(active1, /datum/data/record)) - if(active1.fields["sex"] == "Male") - active1.fields["sex"] = "Female" + if(active1.fields["gender"] == "Male") + active1.fields["gender"] = "Female" + else if(active1.fields["gender"] == "Female") + active1.fields["gender"] = "Other" else - active1.fields["sex"] = "Male" + active1.fields["gender"] = "Male" if("age") if(istype(active1, /datum/data/record)) var/t1 = input("Please input age:", "Secure. records", active1.fields["age"], null) as num @@ -767,19 +750,14 @@ What a mess.*/ P = user.get_active_held_item() return P -/obj/machinery/computer/secure_data/proc/print_photo(icon/temp, name) +/obj/machinery/computer/secure_data/proc/print_photo(icon/temp, person_name) if (printing) return printing = TRUE sleep(20) var/obj/item/photo/P = new/obj/item/photo(drop_location()) - var/icon/small_img = icon(temp) - var/icon/ic = icon('icons/obj/items_and_weapons.dmi',"photo") - small_img.Scale(8, 8) - ic.Blend(small_img,ICON_OVERLAY, 13, 13) - P.icon = ic - P.picture.picture_image = temp - P.desc = "The photo on file for [name]." + var/datum/picture/toEmbed = new(name = person_name, desc = "The photo on file for [person_name].", image = temp) + P.set_picture(toEmbed, TRUE, TRUE) P.pixel_x = rand(-10, 10) P.pixel_y = rand(-10, 10) printing = FALSE @@ -799,7 +777,7 @@ What a mess.*/ else R.fields["name"] = "[pick(pick(GLOB.first_names_male), pick(GLOB.first_names_female))] [pick(GLOB.last_names)]" if(2) - R.fields["sex"] = pick("Male", "Female") + R.fields["gender"] = pick("Male", "Female", "Other") if(3) R.fields["age"] = rand(5, 85) if(4) @@ -823,7 +801,7 @@ What a mess.*/ /obj/machinery/computer/secure_data/proc/canUseSecurityRecordsConsole(mob/user, message1 = 0, record1, record2) if(user) if(authenticated) - if(user.canUseTopic(src)) + if(user.canUseTopic(src, BE_CLOSE)) if(!trim(message1)) return 0 if(!record1 || record1 == active1) @@ -831,22 +809,3 @@ What a mess.*/ return 1 return 0 -/obj/machinery/computer/secure_data/AltClick(mob/user) - if(user.canUseTopic(src)) - eject_id(user) - -/obj/machinery/computer/secure_data/proc/eject_id(mob/user) - if(scan) - scan.forceMove(drop_location()) - if(!issilicon(user) && Adjacent(user)) - user.put_in_hands(scan) - scan = null - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) - else //switching the ID with the one you're holding - if(issilicon(user) || !Adjacent(user)) - return - var/obj/item/card/id/held_id = user.is_holding_item_of_type(/obj/item/card/id) - if(QDELETED(held_id) || !user.transferItemToLoc(held_id, src)) - return - scan = held_id - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) diff --git a/code/game/machinery/gulag_item_reclaimer.dm b/code/game/machinery/gulag_item_reclaimer.dm index f6cb58bbbc..89ec0dec7a 100644 --- a/code/game/machinery/gulag_item_reclaimer.dm +++ b/code/game/machinery/gulag_item_reclaimer.dm @@ -9,7 +9,6 @@ idle_power_usage = 100 active_power_usage = 2500 var/list/stored_items = list() - var/obj/item/card/id/prisoner/inserted_id = null var/obj/machinery/gulag_teleporter/linked_teleporter = null /obj/machinery/gulag_item_reclaimer/Destroy() @@ -18,9 +17,6 @@ I.forceMove(get_turf(src)) if(linked_teleporter) linked_teleporter.linked_reclaimer = null - if(inserted_id) - inserted_id.forceMove(get_turf(src)) - inserted_id = null return ..() /obj/machinery/gulag_item_reclaimer/emag_act(mob/user) @@ -29,18 +25,6 @@ req_access = list() obj_flags |= EMAGGED -/obj/machinery/gulag_item_reclaimer/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/card/id)) - if(!inserted_id) - if(!user.transferItemToLoc(I, src)) - return - inserted_id = I - to_chat(user, "You insert [I].") - return - else - to_chat(user, "There's an ID inserted already.") - return ..() - /obj/machinery/gulag_item_reclaimer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) @@ -55,15 +39,19 @@ if(allowed(user)) can_reclaim = TRUE - if(inserted_id) - data["id"] = inserted_id - data["id_name"] = inserted_id.registered_name - if(inserted_id.points >= inserted_id.goal) + var/obj/item/card/id/I = user.get_idcard(TRUE) + if(istype(I, /obj/item/card/id/prisoner)) + var/obj/item/card/id/prisoner/P = I + if(P.points >= P.goal) can_reclaim = TRUE var/list/mobs = list() for(var/i in stored_items) var/mob/thismob = i + if(QDELETED(thismob)) + say("Alert! Unable to locate vital signals of a previously processed prisoner. Ejecting equipment!") + drop_items(thismob) + continue var/list/mob_info = list() mob_info["name"] = thismob.real_name mob_info["mob"] = "[REF(thismob)]" @@ -78,16 +66,6 @@ /obj/machinery/gulag_item_reclaimer/ui_act(action, list/params) switch(action) - if("handle_id") - if(inserted_id) - usr.put_in_hands(inserted_id) - inserted_id = null - else - var/obj/item/I = usr.is_holding_item_of_type(/obj/item/card/id) - if(I) - if(!usr.transferItemToLoc(I, src)) - return - inserted_id = I if("release_items") var/mob/M = locate(params["mobref"]) if(M == usr || allowed(usr)) @@ -98,8 +76,9 @@ /obj/machinery/gulag_item_reclaimer/proc/drop_items(mob/user) if(!stored_items[user]) return + var/drop_location = drop_location() for(var/i in stored_items[user]) var/obj/item/W = i stored_items[user] -= W - W.forceMove(get_turf(src)) + W.forceMove(drop_location) stored_items -= user diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index 7d2ffe0a02..9035c8d47c 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -162,10 +162,11 @@ /obj/item/circuitboard/computer/prisoner name = "Prisoner Management Console (Computer Board)" - build_path = /obj/machinery/computer/prisoner + build_path = /obj/machinery/computer/prisoner/management + /obj/item/circuitboard/computer/gulag_teleporter_console name = "Labor Camp teleporter console (Computer Board)" - build_path = /obj/machinery/computer/gulag_teleporter_computer + build_path = /obj/machinery/computer/prisoner/gulag_teleporter_computer /obj/item/circuitboard/computer/rdconsole/production name = "R&D Console Production Only (Computer Board)" @@ -366,4 +367,4 @@ /obj/item/circuitboard/computer/nanite_cloud_controller name = "Nanite Cloud Control (Computer Board)" - build_path = /obj/machinery/computer/nanite_cloud_controller \ No newline at end of file + build_path = /obj/machinery/computer/nanite_cloud_controller diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index 4a628c5f34..b8a536279d 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -10,12 +10,10 @@ GLOBAL_LIST(labor_sheet_values) density = FALSE var/obj/machinery/mineral/stacking_machine/laborstacker/stacking_machine = null var/machinedir = SOUTH - var/obj/item/card/id/prisoner/inserted_id var/obj/machinery/door/airlock/release_door var/door_tag = "prisonshuttle" var/obj/item/radio/Radio //needed to send messages to sec radio - /obj/machinery/mineral/labor_claim_console/Initialize() . = ..() Radio = new/obj/item/radio(src) @@ -34,18 +32,6 @@ GLOBAL_LIST(labor_sheet_values) /proc/cmp_sheet_list(list/a, list/b) return a["value"] - b["value"] -/obj/machinery/mineral/labor_claim_console/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/card/id/prisoner)) - if(!inserted_id) - if(!user.transferItemToLoc(I, src)) - return - inserted_id = I - to_chat(user, "You insert [I].") - return - else - to_chat(user, "There's an ID inserted already.") - return ..() - /obj/machinery/mineral/labor_claim_console/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) @@ -58,14 +44,20 @@ GLOBAL_LIST(labor_sheet_values) var/can_go_home = FALSE data["emagged"] = (obj_flags & EMAGGED) ? 1 : 0 - if(inserted_id) - data["id"] = inserted_id - data["id_name"] = inserted_id.registered_name - data["points"] = inserted_id.points - data["goal"] = inserted_id.goal - if(check_auth()) + if(obj_flags & EMAGGED) can_go_home = TRUE + data["status_info"] = "No Prisoner ID detected." + var/obj/item/card/id/I = user.get_idcard(TRUE) + if(istype(I, /obj/item/card/id/prisoner)) + var/obj/item/card/id/prisoner/P = I + data["id_points"] = P.points + if(P.points >= P.goal) + can_go_home = TRUE + data["status_info"] = "Goal met!" + else + data["status_info"] = "You are [(P.goal - P.points)] points away." + if(stacking_machine) data["unclaimed_points"] = stacking_machine.points @@ -78,29 +70,19 @@ GLOBAL_LIST(labor_sheet_values) if(..()) return switch(action) - if("handle_id") - if(inserted_id) - if(!usr.get_active_held_item()) - usr.put_in_hands(inserted_id) - inserted_id = null - else - inserted_id.forceMove(get_turf(src)) - inserted_id = null - else - var/obj/item/I = usr.get_active_held_item() - if(istype(I, /obj/item/card/id/prisoner)) - if(!usr.transferItemToLoc(I, src)) - return - inserted_id = I if("claim_points") - inserted_id.points += stacking_machine.points - stacking_machine.points = 0 - to_chat(usr, "Points transferred.") + var/mob/M = usr + var/obj/item/card/id/I = M.get_idcard(TRUE) + if(istype(I, /obj/item/card/id/prisoner)) + var/obj/item/card/id/prisoner/P = I + P.points += stacking_machine.points + stacking_machine.points = 0 + to_chat(usr, "Points transferred.") + else + to_chat(usr, "No valid id for point transfer detected.") if("move_shuttle") if(!alone_in_area(get_area(src), usr)) to_chat(usr, "Prisoners are only allowed to be released while alone.") - else if(!check_auth()) - to_chat(usr, "Prisoners are only allowed to be released when they reach their point goal.") else switch(SSshuttle.moveShuttle("laborcamp", "laborcamp_home", TRUE)) if(1) @@ -112,14 +94,9 @@ GLOBAL_LIST(labor_sheet_values) else if(!(obj_flags & EMAGGED)) Radio.set_frequency(FREQ_SECURITY) - Radio.talk_into(src, "[inserted_id.registered_name] has returned to the station. Minerals and Prisoner ID card ready for retrieval.", FREQ_SECURITY) + Radio.talk_into(src, "A prisoner has returned to the station. Minerals and Prisoner ID card ready for retrieval.", FREQ_SECURITY) to_chat(usr, "Shuttle received message and will be sent shortly.") -/obj/machinery/mineral/labor_claim_console/proc/check_auth() - if(obj_flags & EMAGGED) - return 1 //Shuttle is emagged, let any ol' person through - return (istype(inserted_id) && inserted_id.points >= inserted_id.goal) //Otherwise, only let them out if the prisoner's reached his quota. - /obj/machinery/mineral/labor_claim_console/proc/locate_stacking_machine() stacking_machine = locate(/obj/machinery/mineral/stacking_machine, get_step(src, machinedir)) if(stacking_machine) @@ -132,10 +109,8 @@ GLOBAL_LIST(labor_sheet_values) obj_flags |= EMAGGED to_chat(user, "PZZTTPFFFT") - /**********************Prisoner Collection Unit**************************/ - /obj/machinery/mineral/stacking_machine/laborstacker force_connect = TRUE var/points = 0 //The unclaimed value of ore stacked. @@ -151,6 +126,7 @@ GLOBAL_LIST(labor_sheet_values) return ..() /**********************Point Lookup Console**************************/ + /obj/machinery/mineral/labor_points_checker name = "points checking console" desc = "A console used by prisoners to check the progress on their quotas. Simply swipe a prisoner ID." diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 4605f7d693..6c1a00b020 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -13,7 +13,6 @@ speed_process = TRUE circuit = /obj/item/circuitboard/machine/ore_redemption layer = BELOW_OBJ_LAYER - var/obj/item/card/id/inserted_id var/points = 0 var/ore_pickup_rate = 15 var/sheet_per_ore = 1 @@ -48,18 +47,23 @@ point_upgrade = point_upgrade_temp sheet_per_ore = sheet_per_ore_temp +/obj/machinery/mineral/ore_redemption/examine(mob/user) + . = ..() + if(in_range(user, src) || isobserver(user)) + . += "The status display reads: Smelting [sheet_per_ore] sheet(s) per piece of ore.
Ore pickup speed at [ore_pickup_rate].
" + /obj/machinery/mineral/ore_redemption/proc/smelt_ore(obj/item/stack/ore/O) var/datum/component/material_container/mat_container = materials.mat_container if (!mat_container) return - if(istype(O, /obj/item/stack/ore/bluespace_crystal/refined)) + if(O.refined_type == null) return ore_buffer -= O if(O && O.refined_type) - points += O.points * point_upgrade * O.amount + points += O.points * O.amount var/material_amount = mat_container.get_item_material_amount(O) @@ -72,11 +76,8 @@ else var/mats = O.materials & mat_container.materials var/amount = O.amount - var/id = inserted_id && inserted_id.registered_name - if (id) - id = " (ID: [id])" mat_container.insert_item(O, sheet_per_ore) //insert it - materials.silo_log(src, "smelted", amount, "ores[id]", mats) + materials.silo_log(src, "smelted", amount, "ores", mats) qdel(O) /obj/machinery/mineral/ore_redemption/proc/can_smelt_alloy(datum/design/D) @@ -168,15 +169,7 @@ return if(!powered()) - return - if(istype(W, /obj/item/card/id)) - var/obj/item/card/id/I = user.get_active_held_item() - if(istype(I) && !istype(inserted_id)) - if(!user.transferItemToLoc(I, src)) - return - inserted_id = I - interact(user) - return + return ..() if(istype(W, /obj/item/disk/design_disk)) if(user.transferItemToLoc(W, src)) @@ -205,9 +198,6 @@ /obj/machinery/mineral/ore_redemption/ui_data(mob/user) var/list/data = list() data["unclaimedPoints"] = points - if(inserted_id) - data["hasID"] = TRUE - data["claimedPoints"] = inserted_id.mining_points data["materials"] = list() var/datum/component/material_container/mat_container = materials.mat_container @@ -245,32 +235,24 @@ return var/datum/component/material_container/mat_container = materials.mat_container switch(action) - if("Eject") - if(!inserted_id) - return - usr.put_in_hands(inserted_id) - inserted_id = null - return TRUE - if("Insert") - var/obj/item/card/id/I = usr.get_active_held_item() - if(istype(I)) - if(!usr.transferItemToLoc(I,src)) - return - inserted_id = I - else - to_chat(usr, "Not a valid ID!") - return TRUE if("Claim") - if(inserted_id) - inserted_id.mining_points += points - points = 0 + var/mob/M = usr + var/obj/item/card/id/I = M.get_idcard(TRUE) + if(points) + if(I) + I.mining_points += points + points = 0 + else + to_chat(usr, "No ID detected.") + else + to_chat(usr, "No points to claim.") return TRUE if("Release") if(!mat_container) return if(materials.on_hold()) to_chat(usr, "Mineral access is on hold, please contact the quartermaster.") - else if(!check_access(inserted_id) && !allowed(usr)) //Check the ID inside, otherwise check the user + else if(!allowed(usr)) //Check the ID inside, otherwise check the user to_chat(usr, "Required access not found.") else var/mat_id = params["id"] @@ -293,6 +275,7 @@ var/list/mats = list() mats[mat_id] = MINERAL_MATERIAL_AMOUNT materials.silo_log(src, "released", -count, "sheets", mats) + //Logging deleted for quick coding return TRUE if("diskInsert") var/obj/item/disk/design_disk/disk = usr.get_active_held_item() @@ -321,7 +304,7 @@ return var/alloy_id = params["id"] var/datum/design/alloy = stored_research.isDesignResearchedID(alloy_id) - if((check_access(inserted_id) || allowed(usr)) && alloy) + if((check_access(inserted_scan_id) || allowed(usr)) && alloy) var/smelt_amount = can_smelt_alloy(alloy) var/desired = 0 if (params["sheets"]) diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index aed90cebdf..e49f2e73ed 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -20,6 +20,7 @@ new /datum/data/mining_equipment("Soap", /obj/item/soap/nanotrasen, 200), new /datum/data/mining_equipment("Laser Pointer", /obj/item/laser_pointer, 300), new /datum/data/mining_equipment("Alien Toy", /obj/item/clothing/mask/facehugger/toy, 300), + new /datum/data/mining_equipment("Stabilizing Serum", /obj/item/hivelordstabilizer, 400), new /datum/data/mining_equipment("Fulton Beacon", /obj/item/fulton_core, 400), new /datum/data/mining_equipment("Shelter Capsule", /obj/item/survivalcapsule, 400), new /datum/data/mining_equipment("Survival Knife", /obj/item/kitchen/knife/combat/survival, 450), @@ -28,8 +29,6 @@ new /datum/data/mining_equipment("Larger Ore Bag", /obj/item/storage/bag/ore/large, 500), new /datum/data/mining_equipment("500 Point Transfer Card", /obj/item/card/mining_point_card/mp500, 500), new /datum/data/mining_equipment("Tracking Implant Kit", /obj/item/storage/box/minertracker, 600), - new /datum/data/mining_equipment("Survival Medipen", /obj/item/reagent_containers/hypospray/medipen/survival, 750), - new /datum/data/mining_equipment("Stabilizing Serum", /obj/item/hivelordstabilizer, 750), new /datum/data/mining_equipment("Jaunter", /obj/item/wormhole_jaunter, 750), new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/twohanded/required/kinetic_crusher, 750), new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750), @@ -54,7 +53,6 @@ new /datum/data/mining_equipment("Super Resonator", /obj/item/resonator/upgraded, 2500), new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500), new /datum/data/mining_equipment("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 3000), - new /datum/data/mining_equipment("Miner Full Replacement", /obj/item/storage/backpack/duffelbag/mining_cloned, 3000), new /datum/data/mining_equipment("Nanotrasen Minebot", /mob/living/simple_animal/hostile/mining_drone, 800), new /datum/data/mining_equipment("Minebot Melee Upgrade", /obj/item/mine_bot_upgrade, 400), new /datum/data/mining_equipment("Minebot Armor Upgrade", /obj/item/mine_bot_upgrade/health, 400), @@ -68,9 +66,7 @@ new /datum/data/mining_equipment("KA Range Increase", /obj/item/borg/upgrade/modkit/range, 1000), new /datum/data/mining_equipment("KA Damage Increase", /obj/item/borg/upgrade/modkit/damage, 1000), new /datum/data/mining_equipment("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000), - new /datum/data/mining_equipment("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000), - new /datum/data/mining_equipment("Premium Accelerator", /obj/item/gun/energy/kinetic_accelerator/premiumka, 8000) - + new /datum/data/mining_equipment("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000) ) /datum/data/mining_equipment @@ -95,60 +91,42 @@ /obj/machinery/mineral/equipment_vendor/ui_interact(mob/user) . = ..() - var/dat - dat +="
" - if(istype(inserted_id)) - dat += "You have [inserted_id.mining_points] mining points collected. Eject ID.
" - else - dat += "No ID inserted. Insert ID.
" - dat += "
" + var/list/dat = list() dat += "
Equipment point cost list:
Name: [active1.fields["name"]] 
ID: [active1.fields["id"]] 
Sex: [active1.fields["sex"]] 
Gender: [active1.fields["gender"]] 
Age: [active1.fields["age"]] 
Species: [active1.fields["species"]] 
Rank: [active1.fields["rank"]] 
" for(var/datum/data/mining_equipment/prize in prize_list) dat += "" dat += "
[prize.equipment_name][prize.cost]Purchase
" var/datum/browser/popup = new(user, "miningvendor", "Mining Equipment Vendor", 400, 350) - popup.set_content(dat) + popup.set_content(dat.Join()) popup.open() return /obj/machinery/mineral/equipment_vendor/Topic(href, href_list) if(..()) return - if(href_list["choice"]) - if(istype(inserted_id)) - if(href_list["choice"] == "eject") - to_chat(usr, "You eject the ID from [src]'s card slot.") - inserted_id.forceMove(loc) - inserted_id.verb_pickup() - inserted_id = null - else if(href_list["choice"] == "insert") - var/obj/item/card/id/I = usr.get_active_held_item() - if(istype(I)) - if(!usr.transferItemToLoc(I, src)) - return - inserted_id = I - to_chat(usr, "You insert the ID into [src]'s card slot.") - else - to_chat(usr, "Error: No valid ID!") - flick(icon_deny, src) if(href_list["purchase"]) - if(istype(inserted_id)) - var/datum/data/mining_equipment/prize = locate(href_list["purchase"]) + var/mob/M = usr + var/obj/item/card/id/I = M.get_idcard(TRUE) + if(istype(I)) + var/datum/data/mining_equipment/prize = locate(href_list["purchase"]) in prize_list if (!prize || !(prize in prize_list)) to_chat(usr, "Error: Invalid choice!") flick(icon_deny, src) return - if(prize.cost > inserted_id.mining_points) - to_chat(usr, "Error: Insufficient points for [prize.equipment_name]!") + if(prize.cost > I.mining_points) + to_chat(usr, "Error: Insufficient credits for [prize.equipment_name] on [I]!") flick(icon_deny, src) else - inserted_id.mining_points -= prize.cost - to_chat(usr, "[src] clanks to life briefly before vending [prize.equipment_name]!") - new prize.equipment_path(src.loc) - SSblackbox.record_feedback("nested tally", "mining_equipment_bought", 1, list("[type]", "[prize.equipment_path]")) + if (I.mining_points -= prize.cost) + to_chat(usr, "[src] clanks to life briefly before vending [prize.equipment_name]!") + new prize.equipment_path(src.loc) + SSblackbox.record_feedback("nested tally", "mining_equipment_bought", 1, list("[type]", "[prize.equipment_path]")) + else + to_chat(usr, "Error: Transaction failure, please try again later!") + flick(icon_deny, src) else - to_chat(usr, "Error: Please insert a valid ID!") + to_chat(usr, "Error: An ID with a registered account is required!") flick(icon_deny, src) updateUsrDialog() return @@ -157,18 +135,6 @@ if(istype(I, /obj/item/mining_voucher)) RedeemVoucher(I, user) return - if(istype(I, /obj/item/suit_voucher)) - RedeemSVoucher(I, user) - return - if(istype(I, /obj/item/card/id)) - var/obj/item/card/id/C = usr.get_active_held_item() - if(istype(C) && !istype(inserted_id)) - if(!usr.transferItemToLoc(C, src)) - return - inserted_id = C - to_chat(usr, "You insert the ID into [src]'s card slot.") - interact(user) - return if(default_deconstruction_screwdriver(user, "mining-open", "mining", I)) updateUsrDialog() return @@ -212,7 +178,6 @@ if(prob(50 / severity) && severity < 3) qdel(src) - /****************Golem Point Vendor**************************/ /obj/machinery/mineral/equipment_vendor/golem @@ -228,7 +193,6 @@ new /datum/data/mining_equipment("Monkey Cube", /obj/item/reagent_containers/food/snacks/monkeycube, 300), new /datum/data/mining_equipment("Toolbelt", /obj/item/storage/belt/utility, 350), new /datum/data/mining_equipment("Royal Cape of the Liberator", /obj/item/bedsheet/rd/royal_cape, 500), - new /datum/data/mining_equipment("Sulphuric Acid", /obj/item/reagent_containers/glass/beaker/sulphuric, 500), new /datum/data/mining_equipment("Grey Slime Extract", /obj/item/slime_extract/grey, 1000), new /datum/data/mining_equipment("Modification Kit", /obj/item/borg/upgrade/modkit/trigger_guard, 1700), new /datum/data/mining_equipment("The Liberator's Legacy", /obj/item/storage/box/rndboards, 2000) @@ -315,52 +279,13 @@ desc = "A kit containing everything a crewmember needs to support a shaft miner in the field." /obj/item/storage/backpack/duffelbag/mining_conscript/PopulateContents() - new /obj/item/pickaxe/mini(src) new /obj/item/clothing/glasses/meson(src) new /obj/item/t_scanner/adv_mining_scanner/lesser(src) new /obj/item/storage/bag/ore(src) - new /obj/item/clothing/suit/hooded/explorer/standard(src) - new /obj/item/encryptionkey/headset_cargo(src) + new /obj/item/clothing/suit/hooded/explorer(src) + new /obj/item/encryptionkey/headset_mining(src) new /obj/item/clothing/mask/gas/explorer(src) new /obj/item/card/mining_access_card(src) - -//CITADEL ADDITIONS BELOW - -/obj/item/storage/backpack/duffelbag/mining_cloned - name = "mining replacement kit" - desc = "A large bag that has advance tools and a spare jumpsuit, boots, and gloves for a newly cloned miner to get back in the field. Even as a new Id!" - -/obj/item/storage/backpack/duffelbag/mining_cloned/PopulateContents() - new /obj/item/pickaxe/mini(src) - new /obj/item/clothing/under/rank/miner/lavaland(src) - new /obj/item/clothing/shoes/workboots/mining(src) - new /obj/item/clothing/gloves/color/black(src) - new /obj/item/implanter/tracking/gps(src) + new /obj/item/gun/energy/kinetic_accelerator(src) new /obj/item/kitchen/knife/combat/survival(src) - new /obj/item/storage/firstaid/regular(src) - new /obj/item/reagent_containers/hypospray/medipen/survival(src) - new /obj/item/t_scanner/adv_mining_scanner(src) - new /obj/item/clothing/suit/hooded/explorer/standard(src) - new /obj/item/encryptionkey/headset_cargo(src) - new /obj/item/clothing/mask/gas/explorer(src) - new /obj/item/card/id/mining(src) - new /obj/item/storage/bag/ore(src) - new /obj/item/clothing/glasses/meson/prescription(src) - -/obj/machinery/mineral/equipment_vendor/proc/RedeemSVoucher(obj/item/suit_voucher/voucher, mob/redeemer) - var/items = list("Exo-suit", "SEVA suit") - - var/selection = input(redeemer, "Pick your suit.", "Suit Voucher Redemption") as null|anything in items - if(!selection || !Adjacent(redeemer) || QDELETED(voucher) || voucher.loc != redeemer) - return - var/drop_location = drop_location() - switch(selection) - if("Exo-suit") - new /obj/item/clothing/suit/hooded/explorer/exo(drop_location) - new /obj/item/clothing/mask/gas/exo(drop_location) - if("SEVA suit") - new /obj/item/clothing/suit/hooded/explorer/seva(drop_location) - new /obj/item/clothing/mask/gas/seva(drop_location) - - SSblackbox.record_feedback("tally", "suit_voucher_redeemed", 1, selection) - qdel(voucher) + new /obj/item/flashlight/seclite(src) diff --git a/tgstation.dme b/tgstation.dme index da990c169a..2238cb9145 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -646,6 +646,9 @@ #include "code\game\machinery\computer\arcade\minesweeper.dm" #include "code\game\machinery\computer\arcade\misc_arcade.dm" #include "code\game\machinery\computer\arcade\orion_trail.dm" +#include "code\game\machinery\computer\prisoner\_prisoner.dm" +#include "code\game\machinery\computer\prisoner\gulag_teleporter.dm" +#include "code\game\machinery\computer\prisoner\management.dm" #include "code\game\machinery\doors\airlock.dm" #include "code\game\machinery\doors\airlock_electronics.dm" #include "code\game\machinery\doors\airlock_types.dm" diff --git a/tgui/src/interfaces/gulag_item_reclaimer.ract b/tgui/src/interfaces/gulag_item_reclaimer.ract index 7c315d869c..ac6d5d5165 100644 --- a/tgui/src/interfaces/gulag_item_reclaimer.ract +++ b/tgui/src/interfaces/gulag_item_reclaimer.ract @@ -1,10 +1,7 @@ - -
{{data.id ? data.id_name : "-------------"}}
-
{{#each data.mobs}} Drop Items {{/each}} - \ No newline at end of file + diff --git a/tgui/src/interfaces/labor_claim_console.ract b/tgui/src/interfaces/labor_claim_console.ract index 16b3ae0491..21e69f9aa9 100644 --- a/tgui/src/interfaces/labor_claim_console.ract +++ b/tgui/src/interfaces/labor_claim_console.ract @@ -6,24 +6,15 @@ {{/each}} - - {{data.id ? data.id_name : "-------------"}} + + {{data.unclaimed_points}} + Claim points - {{#if data.id}} - - {{data.points}} - - - {{data.goal}} - - - {{data.unclaimed_points}} - Claim points - - {{/if}} -
+ Points: {{data.id_points}} + + {{data.status_info}} Move shuttle -
-
\ No newline at end of file + + diff --git a/tgui/src/interfaces/ore_redemption_machine.ract b/tgui/src/interfaces/ore_redemption_machine.ract index 596b624e98..650c5ddd5e 100644 --- a/tgui/src/interfaces/ore_redemption_machine.ract +++ b/tgui/src/interfaces/ore_redemption_machine.ract @@ -3,24 +3,10 @@ This machine only accepts ore. Gibtonite and Slag are not accepted. - Current unclaimed points: {{data.unclaimedPoints}} - {{#if data.unclaimedPoints}} + Current unclaimed credits: {{data.unclaimedPoints}} - Claim Points + Claim - {{/if}} - - - {{#if data.hasID}} - - Eject ID - - You have {{data.claimedPoints}} mining points collected. - {{else}} - - Insert ID - - {{/if}} From 4ba3d851ed3bed202097a2eaa022ff1bac5dd7f6 Mon Sep 17 00:00:00 2001 From: Sishen Date: Fri, 9 Aug 2019 00:46:14 -0400 Subject: [PATCH 011/324] IT JUST WORKS --- code/__DEFINES/maths.dm | 6 + code/__HELPERS/roundend.dm | 7 + code/__HELPERS/time.dm | 8 + code/game/gamemodes/dynamic/dynamic.dm | 750 ++++++++++++++++++ .../gamemodes/dynamic/dynamic_rulesets.dm | 211 +++++ .../dynamic/dynamic_rulesets_latejoin.dm | 110 +++ .../dynamic/dynamic_rulesets_midround.dm | 460 +++++++++++ .../dynamic/dynamic_rulesets_roundstart.dm | 729 +++++++++++++++++ code/game/gamemodes/dynamic/readme.md | 57 ++ code/game/gamemodes/game_mode.dm | 4 + code/modules/admin/admin.dm | 57 ++ code/modules/admin/topic.dm | 290 +++++++ tgstation.dme | 9 + 13 files changed, 2698 insertions(+) create mode 100644 code/game/gamemodes/dynamic/dynamic.dm create mode 100644 code/game/gamemodes/dynamic/dynamic_rulesets.dm create mode 100644 code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm create mode 100644 code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm create mode 100644 code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm create mode 100644 code/game/gamemodes/dynamic/readme.md diff --git a/code/__DEFINES/maths.dm b/code/__DEFINES/maths.dm index d344f7f010..5bce51293f 100644 --- a/code/__DEFINES/maths.dm +++ b/code/__DEFINES/maths.dm @@ -201,4 +201,10 @@ return list(region_x1 & region_x2, region_y1 & region_y2) +#define EXP_DISTRIBUTION(desired_mean) ( -(1/(1/desired_mean)) * log(rand(1, 1000) * 0.001) ) + +#define LORENTZ_DISTRIBUTION(x, s) ( s*TAN(TODEGREES(PI*(rand()-0.5))) + x ) +#define LORENTZ_CUMULATIVE_DISTRIBUTION(x, y, s) ( (1/PI)*TORADIANS(arctan((x-y)/s)) + 1/2 ) + +#define RULE_OF_THREE(a, b, x) ((a*x)/b) // ) diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index 55d9e7a6cd..0e9413520b 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -308,6 +308,13 @@ //ignore this comment, it fixes the broken sytax parsing caused by the " above else parts += "[GLOB.TAB]Nobody died this shift!" + if(istype(SSticker.mode, /datum/game_mode/dynamic)) + var/datum/game_mode/dynamic/mode = SSticker.mode + parts += "[GLOB.TAB]Threat level: [mode.threat_level]" + parts += "[GLOB.TAB]Threat left: [mode.threat]" + parts += "[GLOB.TAB]Executed rules:" + for(var/datum/dynamic_ruleset/rule in mode.executed_rules) + parts += "[GLOB.TAB][GLOB.TAB][rule.ruletype] - [rule.name]: -[rule.cost] threat" return parts.Join("
") /client/proc/roundend_report_file() diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index b28e7b5807..f0d5a7b252 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -73,3 +73,11 @@ GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0) /proc/daysSince(realtimev) return round((world.realtime - realtimev) / (24 HOURS)) + +/proc/worldtime2text() + return gameTimestamp("hh:mm:ss", world.time) + +/proc/gameTimestamp(format = "hh:mm:ss", wtime=null) + if(!wtime) + wtime = world.time + return time2text(wtime - GLOB.timezoneOffset, format) diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm new file mode 100644 index 0000000000..ab4ac4d5c6 --- /dev/null +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -0,0 +1,750 @@ +#define CURRENT_LIVING_PLAYERS 1 +#define CURRENT_LIVING_ANTAGS 2 +#define CURRENT_DEAD_PLAYERS 3 +#define CURRENT_OBSERVERS 4 + +#define ONLY_RULESET 1 +#define HIGHLANDER_RULESET 2 +#define TRAITOR_RULESET 4 +#define MINOR_RULESET 8 + +#define RULESET_STOP_PROCESSING 1 + +// -- Injection delays +GLOBAL_VAR_INIT(dynamic_latejoin_delay_min, (5 MINUTES)) +GLOBAL_VAR_INIT(dynamic_latejoin_delay_max, (25 MINUTES)) + +GLOBAL_VAR_INIT(dynamic_midround_delay_min, (15 MINUTES)) +GLOBAL_VAR_INIT(dynamic_midround_delay_max, (35 MINUTES)) + +// Are HIGHLANDER_RULESETs allowed to stack? +GLOBAL_VAR_INIT(dynamic_no_stacking, TRUE) +// A number between -5 and +5. +// A negative value will give a more peaceful round and +// a positive value will give a round with higher threat. +GLOBAL_VAR_INIT(dynamic_curve_centre, 0) +// A number between 0.5 and 4. +// Higher value will favour extreme rounds and +// lower value rounds closer to the average. +GLOBAL_VAR_INIT(dynamic_curve_width, 1.8) +// If enabled only picks a single starting rule and executes only autotraitor midround ruleset. +GLOBAL_VAR_INIT(dynamic_classic_secret, FALSE) +// How many roundstart players required for high population override to take effect. +GLOBAL_VAR_INIT(dynamic_high_pop_limit, 55) +// If enabled does not accept or execute any rulesets. +GLOBAL_VAR_INIT(dynamic_forced_extended, FALSE) +// How high threat is required for HIGHLANDER_RULESETs stacking. +// This is independent of dynamic_no_stacking. +GLOBAL_VAR_INIT(dynamic_stacking_limit, 90) +// List of forced roundstart rulesets. +GLOBAL_LIST_EMPTY(dynamic_forced_roundstart_ruleset) +// Forced threat level, setting this to zero or higher forces the roundstart threat to the value. +GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) + +/datum/game_mode/dynamic + name = "dynamic mode" + config_tag = "dynamic" + + announce_span = "danger" + announce_text = "Dynamic mode!" // This needs to be changed maybe + + reroll_friendly = FALSE; + + // Threat logging vars + /// The "threat cap", threat shouldn't normally go above this and is used in ruleset calculations + var/threat_level = 0 + /// Set at the beginning of the round. Spent by the mode to "purchase" rules. + var/threat = 0 + /// Running information about the threat. Can store text or datum entries. + var/list/threat_log = list() + /// List of roundstart rules used for selecting the rules. + var/list/roundstart_rules = list() + /// List of latejoin rules used for selecting the rules. + var/list/latejoin_rules = list() + /// List of midround rules used for selecting the rules. + var/list/midround_rules = list() + /** # Pop range per requirement. + * If the value is five the range is: + * 0-4, 5-9, 10-14, 15-19, 20-24, 25-29, 30-34, 35-39, 40-54, 45+ + * If it is six the range is: + * 0-5, 6-11, 12-17, 18-23, 24-29, 30-35, 36-41, 42-47, 48-53, 54+ + * If it is seven the range is: + * 0-6, 7-13, 14-20, 21-27, 28-34, 35-41, 42-48, 49-55, 56-62, 63+ + */ + var/pop_per_requirement = 6 + /// The requirement used for checking if a second rule should be selected. + var/list/second_rule_req = list(100, 100, 80, 70, 60, 50, 30, 20, 10, 0) + /// The requirement used for checking if a third rule should be selected. + var/list/third_rule_req = list(100, 100, 100, 90, 80, 70, 60, 50, 40, 30) + /// Threat requirement for a second ruleset when high pop override is in effect. + var/high_pop_second_rule_req = 40 + /// Threat requirement for a third ruleset when high pop override is in effect. + var/high_pop_third_rule_req = 60 + /// Number of players who were ready on roundstart. + var/roundstart_pop_ready = 0 + /// List of candidates used on roundstart rulesets. + var/list/candidates = list() + /// Rules that are processed, rule_process is called on the rules in this list. + var/list/current_rules = list() + /// List of executed rulesets. + var/list/executed_rules = list() + /// Associative list of current players, in order: living players, living antagonists, dead players and observers. + var/list/list/current_players = list(CURRENT_LIVING_PLAYERS, CURRENT_LIVING_ANTAGS, CURRENT_DEAD_PLAYERS, CURRENT_OBSERVERS) + /// When world.time is over this number the mode tries to inject a latejoin ruleset. + var/latejoin_injection_cooldown = 0 + /// When world.time is over this number the mode tries to inject a midround ruleset. + var/midround_injection_cooldown = 0 + /// When TRUE GetInjectionChance returns 100. + var/forced_injection = FALSE + /// Forced ruleset to be executed for the next latejoin. + var/datum/dynamic_ruleset/latejoin/forced_latejoin_rule = null + /// When current_players was updated last time. + var/pop_last_updated = 0 + /// How many percent of the rounds are more peaceful. + var/peaceful_percentage = 50 + /// If a highlander executed. + var/highlander_executed = FALSE + /// If a only ruleset has been executed. + var/only_ruleset_executed = FALSE + +/datum/game_mode/dynamic/admin_panel() + var/list/dat = list("Game Mode Panel

Game Mode Panel

") + dat += "Dynamic Mode \[VV\]
" + dat += "Threat Level: [threat_level]
" + + dat += "Threat to Spend: [threat] \[Adjust\] \[View Log\]
" + dat += "
" + dat += "Parameters: centre = [GLOB.dynamic_curve_centre] ; width = [GLOB.dynamic_curve_width].
" + dat += "On average, [peaceful_percentage]% of the rounds are more peaceful.
" + dat += "Forced extended: [GLOB.dynamic_forced_extended ? "On" : "Off"]
" + dat += "Classic secret (only autotraitor): [GLOB.dynamic_classic_secret ? "On" : "Off"]
" + dat += "No stacking (only one round-ender): [GLOB.dynamic_no_stacking ? "On" : "Off"]
" + dat += "Stacking limit: [GLOB.dynamic_stacking_limit] \[Adjust\]" + dat += "
" + dat += "Executed rulesets: " + if (executed_rules.len > 0) + dat += "
" + for (var/datum/dynamic_ruleset/DR in executed_rules) + dat += "[DR.ruletype] - [DR.name]
" + else + dat += "none.
" + dat += "
Injection Timers: ([get_injection_chance(TRUE)]% chance)
" + dat += "Latejoin: [(latejoin_injection_cooldown-world.time)>60*10 ? "[round((latejoin_injection_cooldown-world.time)/60/10,0.1)] minutes" : "[(latejoin_injection_cooldown-world.time)] seconds"] \[Now!\]
" + dat += "Midround: [(midround_injection_cooldown-world.time)>60*10 ? "[round((midround_injection_cooldown-world.time)/60/10,0.1)] minutes" : "[(midround_injection_cooldown-world.time)] seconds"] \[Now!\]
" + usr << browse(dat.Join(), "window=gamemode_panel;size=500x500") + +/datum/game_mode/dynamic/Topic(href, href_list) + if (..()) // Sanity, maybe ? + return + if(!check_rights(R_ADMIN)) + message_admins("[usr.key] has attempted to override the game mode panel!") + log_admin("[key_name(usr)] tried to use the game mode panel without authorization.") + return + if (href_list["forced_extended"]) + GLOB.dynamic_forced_extended = !GLOB.dynamic_forced_extended + else if (href_list["no_stacking"]) + GLOB.dynamic_no_stacking = !GLOB.dynamic_no_stacking + else if (href_list["classic_secret"]) + GLOB.dynamic_classic_secret = !GLOB.dynamic_classic_secret + else if (href_list["adjustthreat"]) + var/threatadd = input("Specify how much threat to add (negative to subtract). This can inflate the threat level.", "Adjust Threat", 0) as null|num + if(!threatadd) + return + if(threatadd > 0) + create_threat(threatadd) + else + spend_threat(-threatadd) + else if (href_list["injectlate"]) + latejoin_injection_cooldown = 0 + forced_injection = TRUE + message_admins("[key_name(usr)] forced a latejoin injection.", 1) + else if (href_list["injectmid"]) + midround_injection_cooldown = 0 + forced_injection = TRUE + message_admins("[key_name(usr)] forced a midround injection.", 1) + else if (href_list["threatlog"]) + show_threatlog(usr) + else if (href_list["stacking_limit"]) + GLOB.dynamic_stacking_limit = input(usr,"Change the threat limit at which round-endings rulesets will start to stack.", "Change stacking limit", null) as num + + admin_panel() // Refreshes the window + +// Checks if there are HIGHLANDER_RULESETs and calls the rule's round_result() proc +/datum/game_mode/dynamic/set_round_result() + for(var/datum/dynamic_ruleset/rule in executed_rules) + if(rule.flags & HIGHLANDER_RULESET) + if(rule.check_finished()) // Only the rule that actually finished the round sets round result. + return rule.round_result() + // If it got to this part, just pick one highlander if it exists + for(var/datum/dynamic_ruleset/rule in executed_rules) + if(rule.flags & HIGHLANDER_RULESET) + return rule.round_result() + return ..() + +/datum/game_mode/dynamic/send_intercept() + . = "Central Command Status Summary
" + switch(round(threat_level)) + if(0 to 19) + update_playercounts() + if(!current_players[CURRENT_LIVING_ANTAGS].len) + . += "Peaceful Waypoint
" + . += "Your station orbits deep within controlled, core-sector systems and serves as a waypoint for routine traffic through Nanotrasen's trade empire. Due to the combination of high security, interstellar traffic, and low strategic value, it makes any direct threat of violence unlikely. Your primary enemies will be incompetence and bored crewmen: try to organize team-building events to keep staffers interested and productive." + else + . += "Core Territory
" + . += "Your station orbits within reliably mundane, secure space. Although Nanotrasen has a firm grip on security in your region, the valuable resources and strategic position aboard your station make it a potential target for infiltrations. Monitor crew for non-loyal behavior, but expect a relatively tame shift free of large-scale destruction. We expect great things from your station." + if(20 to 39) + . += "Anomalous Exogeology
" + . += "Although your station lies within what is generally considered Nanotrasen-controlled space, the course of its orbit has caused it to cross unusually close to exogeological features with anomalous readings. Although these features offer opportunities for our research department, it is known that these little understood readings are often correlated with increased activity from competing interstellar organizations and individuals, among them the Wizard Federation and Cult of the Geometer of Blood - all known competitors for Anomaly Type B sites. Exercise elevated caution." + if(40 to 65) + . += "Contested System
" + . += "Your station's orbit passes along the edge of Nanotrasen's sphere of influence. While subversive elements remain the most likely threat against your station, hostile organizations are bolder here, where our grip is weaker. Exercise increased caution against elite Syndicate strike forces, or Executives forbid, some kind of ill-conceived unionizing attempt." + if(66 to 79) + . += "Uncharted Space
" + . += "Congratulations and thank you for participating in the NT 'Frontier' space program! Your station is actively orbiting a high value system far from the nearest support stations. Little is known about your region of space, and the opportunity to encounter the unknown invites greater glory. You are encouraged to elevate security as necessary to protect Nanotrasen assets." + if(80 to 99) + . += "Black Orbit
" + . += "As part of a mandatory security protocol, we are required to inform you that as a result of your orbital pattern directly behind an astrological body (oriented from our nearest observatory), your station will be under decreased monitoring and support. It is anticipated that your extreme location and decreased surveillance could pose security risks. Avoid unnecessary risks and attempt to keep your station in one piece." + if(100) + . += "Impending Doom
" + . += "Your station is somehow in the middle of hostile territory, in clear view of any enemy of the corporation. Your likelihood to survive is low, and station destruction is expected and almost inevitable. Secure any sensitive material and neutralize any enemy you will come across. It is important that you at least try to maintain the station.
" + . += "Good luck." + + if(station_goals.len) + . += "
Special Orders for [station_name()]:" + for(var/datum/station_goal/G in station_goals) + G.on_report() + . += G.get_report() + + print_command_report(., "Central Command Status Summary", announce=FALSE) + priority_announce("A summary has been copied and printed to all communications consoles.", "Security level elevated.", 'sound/ai/intercept.ogg') + if(GLOB.security_level < SEC_LEVEL_BLUE) + set_security_level(SEC_LEVEL_BLUE) + +// Yes, this is copy pasted from game_mode +/datum/game_mode/dynamic/check_finished(force_ending) + if(!SSticker.setup_done || !gamemode_ready) + return FALSE + if(replacementmode && round_converted == 2) + return replacementmode.check_finished() + if(SSshuttle.emergency && (SSshuttle.emergency.mode == SHUTTLE_ENDGAME)) + return TRUE + if(station_was_nuked) + return TRUE + if(force_ending) + return TRUE + for(var/datum/dynamic_ruleset/rule in executed_rules) + if(rule.flags & HIGHLANDER_RULESET) + return rule.check_finished() + +/datum/game_mode/dynamic/proc/show_threatlog(mob/admin) + if(!SSticker.HasRoundStarted()) + alert("The round hasn't started yet!") + return + + if(!check_rights(R_ADMIN)) + return + + var/list/out = list("Threat LogThreat Log
Starting Threat: [threat_level]
") + + for(var/entry in threat_log) + if(istext(entry)) + out += "[entry]
" + + out += "Remaining threat/threat_level: [threat]/[threat_level]" + + usr << browse(out.Join(), "window=threatlog;size=700x500") + +/// Generates the threat level using lorentz distribution and assigns peaceful_percentage. +/datum/game_mode/dynamic/proc/generate_threat() + var/relative_threat = LORENTZ_DISTRIBUTION(GLOB.dynamic_curve_centre, GLOB.dynamic_curve_width) + threat_level = round(lorentz_to_threat(relative_threat), 0.1) + + peaceful_percentage = round(LORENTZ_CUMULATIVE_DISTRIBUTION(relative_threat, GLOB.dynamic_curve_centre, GLOB.dynamic_curve_width), 0.01)*100 + + threat = threat_level + +/datum/game_mode/dynamic/can_start() + /* Disabled for now, had some changes that need to be tested and this might interfere with that. + if(GLOB.dynamic_curve_centre == 0) + // 10 is when the centre starts to decrease + // 6 is just 1 + 5 (from the maximum value and the one decreased) + // 1 just makes the curve look better, I don't know. + // Limited between 1 and 5 then inverted and rounded + // With this you get a centre curve that stays at -5 until 10 then first rapidly decreases but slows down at the end + GLOB.dynamic_curve_centre = round(-CLAMP((10*6/GLOB.player_list.len)-1, 0, 5), 0.5) + */ + message_admins("Dynamic mode parameters for the round:") + message_admins("Centre is [GLOB.dynamic_curve_centre], Width is [GLOB.dynamic_curve_width], Forced extended is [GLOB.dynamic_forced_extended ? "Enabled" : "Disabled"], No stacking is [GLOB.dynamic_no_stacking ? "Enabled" : "Disabled"].") + message_admins("Stacking limit is [GLOB.dynamic_stacking_limit], Classic secret is [GLOB.dynamic_classic_secret ? "Enabled" : "Disabled"], High population limit is [GLOB.dynamic_high_pop_limit].") + log_game("DYNAMIC: Dynamic mode parameters for the round:") + log_game("DYNAMIC: Centre is [GLOB.dynamic_curve_centre], Width is [GLOB.dynamic_curve_width], Forced extended is [GLOB.dynamic_forced_extended ? "Enabled" : "Disabled"], No stacking is [GLOB.dynamic_no_stacking ? "Enabled" : "Disabled"].") + log_game("DYNAMIC: Stacking limit is [GLOB.dynamic_stacking_limit], Classic secret is [GLOB.dynamic_classic_secret ? "Enabled" : "Disabled"], High population limit is [GLOB.dynamic_high_pop_limit].") + if(GLOB.dynamic_forced_threat_level >= 0) + threat_level = round(GLOB.dynamic_forced_threat_level, 0.1) + threat = threat_level + else + generate_threat() + + var/latejoin_injection_cooldown_middle = 0.5*(GLOB.dynamic_latejoin_delay_max + GLOB.dynamic_latejoin_delay_min) + latejoin_injection_cooldown = round(CLAMP(EXP_DISTRIBUTION(latejoin_injection_cooldown_middle), GLOB.dynamic_latejoin_delay_min, GLOB.dynamic_latejoin_delay_max)) + world.time + + var/midround_injection_cooldown_middle = 0.5*(GLOB.dynamic_midround_delay_max + GLOB.dynamic_midround_delay_min) + midround_injection_cooldown = round(CLAMP(EXP_DISTRIBUTION(midround_injection_cooldown_middle), GLOB.dynamic_midround_delay_min, GLOB.dynamic_midround_delay_max)) + world.time + message_admins("Dynamic Mode initialized with a Threat Level of... [threat_level]!") + log_game("DYNAMIC: Dynamic Mode initialized with a Threat Level of... [threat_level]!") + return TRUE + +/datum/game_mode/dynamic/pre_setup() + for (var/rule in subtypesof(/datum/dynamic_ruleset)) + var/datum/dynamic_ruleset/ruleset = new rule() + // Simple check if the ruleset should be added to the lists. + if(ruleset.name == "") + continue + switch(ruleset.ruletype) + if("Roundstart") + roundstart_rules += ruleset + if ("Latejoin") + latejoin_rules += ruleset + if ("Midround") + if (ruleset.weight) + midround_rules += ruleset + for(var/mob/dead/new_player/player in GLOB.player_list) + if(player.ready == PLAYER_READY_TO_PLAY && player.mind) + roundstart_pop_ready++ + candidates.Add(player) + log_game("DYNAMIC: Listing [roundstart_rules.len] round start rulesets, and [candidates.len] players ready.") + if (candidates.len <= 0) + return TRUE + if (roundstart_rules.len <= 0) + return TRUE + + if(GLOB.dynamic_forced_roundstart_ruleset.len > 0) + rigged_roundstart() + else + roundstart() + + var/starting_rulesets = "" + for (var/datum/dynamic_ruleset/roundstart/DR in executed_rules) + starting_rulesets += "[DR.name], " + candidates.Cut() + return TRUE + +/datum/game_mode/dynamic/post_setup(report) + update_playercounts() + + for(var/datum/dynamic_ruleset/roundstart/rule in executed_rules) + rule.candidates.Cut() // The rule should not use candidates at this point as they all are null. + if(!rule.execute()) + stack_trace("The starting rule \"[rule.name]\" failed to execute.") + ..() + +/// A simple roundstart proc used when dynamic_forced_roundstart_ruleset has rules in it. +/datum/game_mode/dynamic/proc/rigged_roundstart() + message_admins("[GLOB.dynamic_forced_roundstart_ruleset.len] rulesets being forced. Will now attempt to draft players for them.") + log_game("DYNAMIC: [GLOB.dynamic_forced_roundstart_ruleset.len] rulesets being forced. Will now attempt to draft players for them.") + for (var/datum/dynamic_ruleset/roundstart/rule in GLOB.dynamic_forced_roundstart_ruleset) + message_admins("Drafting players for forced ruleset [rule.name].") + log_game("DYNAMIC: Drafting players for forced ruleset [rule.name].") + rule.mode = src + rule.candidates = candidates.Copy() + rule.trim_candidates() + if (rule.ready(TRUE)) + picking_roundstart_rule(list(rule), forced = TRUE) + +/datum/game_mode/dynamic/proc/roundstart() + if (GLOB.dynamic_forced_extended) + log_game("DYNAMIC: Starting a round of forced extended.") + return TRUE + var/list/drafted_rules = list() + for (var/datum/dynamic_ruleset/roundstart/rule in roundstart_rules) + if (rule.acceptable(roundstart_pop_ready, threat_level) && threat >= rule.cost) // If we got the population and threat required + rule.candidates = candidates.Copy() + rule.trim_candidates() + if (rule.ready() && rule.candidates.len > 0) + drafted_rules[rule] = rule.weight + + var/indice_pop = min(10,round(roundstart_pop_ready/pop_per_requirement)+1) + var/extra_rulesets_amount = 0 + if (GLOB.dynamic_classic_secret) + extra_rulesets_amount = 0 + else + if (roundstart_pop_ready > GLOB.dynamic_high_pop_limit) + message_admins("High Population Override is in effect! Threat Level will have more impact on which roles will appear, and player population less.") + log_game("DYNAMIC: High Population Override is in effect! Threat Level will have more impact on which roles will appear, and player population less.") + if (threat_level > high_pop_second_rule_req) + extra_rulesets_amount++ + if (threat_level > high_pop_third_rule_req) + extra_rulesets_amount++ + else + if (threat_level >= second_rule_req[indice_pop]) + extra_rulesets_amount++ + if (threat_level >= third_rule_req[indice_pop]) + extra_rulesets_amount++ + + if (drafted_rules.len > 0 && picking_roundstart_rule(drafted_rules)) + if (extra_rulesets_amount > 0) // We've got enough population and threat for a second rulestart rule + for (var/datum/dynamic_ruleset/roundstart/rule in drafted_rules) + if (rule.cost > threat) + drafted_rules -= rule + if (drafted_rules.len > 0 && picking_roundstart_rule(drafted_rules)) + if (extra_rulesets_amount > 1) // We've got enough population and threat for a third rulestart rule + for (var/datum/dynamic_ruleset/roundstart/rule in drafted_rules) + if (rule.cost > threat) + drafted_rules -= rule + picking_roundstart_rule(drafted_rules) + else + return FALSE + return TRUE + +/// Picks a random roundstart rule from the list given as an argument and executes it. +/datum/game_mode/dynamic/proc/picking_roundstart_rule(list/drafted_rules = list(), forced = FALSE) + var/datum/dynamic_ruleset/roundstart/starting_rule = pickweight(drafted_rules) + if(!starting_rule) + return FALSE + + if(!forced) + if(only_ruleset_executed) + return FALSE + // Check if a blocking ruleset has been executed. + else if(check_blocking(starting_rule.blocking_rules, executed_rules)) + drafted_rules -= starting_rule + if(drafted_rules.len <= 0) + return FALSE + starting_rule = pickweight(drafted_rules) + // Check if the ruleset is highlander and if a highlander ruleset has been executed + else if(starting_rule.flags & HIGHLANDER_RULESET) + if(threat < GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking) + if(highlander_executed) + drafted_rules -= starting_rule + if(drafted_rules.len <= 0) + return FALSE + starting_rule = pickweight(drafted_rules) + + message_admins("Picking a [istype(starting_rule, /datum/dynamic_ruleset/roundstart/delayed/) ? " delayed " : ""] ruleset [starting_rule.name]") + log_game("DYNAMIC: Picking a [istype(starting_rule, /datum/dynamic_ruleset/roundstart/delayed/) ? " delayed " : ""] ruleset [starting_rule.name]") + + roundstart_rules -= starting_rule + drafted_rules -= starting_rule + + if (istype(starting_rule, /datum/dynamic_ruleset/roundstart/delayed/)) + var/datum/dynamic_ruleset/roundstart/delayed/rule = starting_rule + addtimer(CALLBACK(src, .proc/execute_delayed, rule), rule.delay) + + starting_rule.trim_candidates() + if (starting_rule.pre_execute()) + spend_threat(starting_rule.cost) + threat_log += "[worldtime2text()]: Roundstart [starting_rule.name] spent [starting_rule.cost]" + if(starting_rule.flags & HIGHLANDER_RULESET) + highlander_executed = TRUE + else if(starting_rule.flags & ONLY_RULESET) + only_ruleset_executed = TRUE + executed_rules += starting_rule + if (starting_rule.persistent) + current_rules += starting_rule + for(var/mob/M in starting_rule.assigned) + for (var/datum/dynamic_ruleset/roundstart/rule in roundstart_rules) + if (!rule.ready()) + drafted_rules -= rule // And removing rules that are no longer elligible + return TRUE + else + stack_trace("The starting rule \"[starting_rule.name]\" failed to pre_execute.") + return FALSE + +/// Executes delayed roundstart rules and has a hack in it. +/datum/game_mode/dynamic/proc/execute_delayed(datum/dynamic_ruleset/roundstart/delayed/rule) + update_playercounts() + rule.candidates = current_players[CURRENT_LIVING_PLAYERS].Copy() + rule.trim_candidates() + if(rule.execute()) + executed_rules += rule + if (rule.persistent) + current_rules += rule + return TRUE + else + stack_trace("The delayed roundstart rule \"[rule.name]\" failed to execute.") + return FALSE + +/// Picks a random midround OR latejoin rule from the list given as an argument and executes it. +/// Also this could be named better. +/datum/game_mode/dynamic/proc/picking_midround_latejoin_rule(list/drafted_rules = list(), forced = FALSE) + var/datum/dynamic_ruleset/rule = pickweight(drafted_rules) + if(!rule) + return FALSE + + if(!forced) + if(only_ruleset_executed) + return FALSE + // Check if a blocking ruleset has been executed. + else if(check_blocking(rule.blocking_rules, executed_rules)) + drafted_rules -= rule + if(drafted_rules.len <= 0) + return FALSE + rule = pickweight(drafted_rules) + // Check if the ruleset is highlander and if a highlander ruleset has been executed + else if(rule.flags & HIGHLANDER_RULESET) + if(threat < GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking) + if(highlander_executed) + drafted_rules -= rule + if(drafted_rules.len <= 0) + return FALSE + rule = pickweight(drafted_rules) + + if(!rule.repeatable) + if(rule.ruletype == "Latejoin") + latejoin_rules = remove_from_list(latejoin_rules, rule.type) + else if(rule.type == "Midround") + midround_rules = remove_from_list(midround_rules, rule.type) + + if (rule.execute()) + log_game("DYNAMIC: Injected a [rule.ruletype == "latejoin" ? "latejoin" : "midround"] ruleset [rule.name].") + spend_threat(rule.cost) + threat_log += "[worldtime2text()]: [rule.ruletype] [rule.name] spent [rule.cost]" + if(rule.flags & HIGHLANDER_RULESET) + highlander_executed = TRUE + else if(rule.flags & ONLY_RULESET) + only_ruleset_executed = TRUE + if(rule.ruletype == "Latejoin") + var/mob/M = pick(rule.candidates) + message_admins("[key_name(M)] joined the station, and was selected by the [rule.name] ruleset.") + log_game("DYNAMIC: [key_name(M)] joined the station, and was selected by the [rule.name] ruleset.") + executed_rules += rule + rule.candidates.Cut() + if (rule.persistent) + current_rules += rule + return TRUE + else + stack_trace("The [rule.ruletype] rule \"[rule.name]\" failed to execute.") + return FALSE + +/// An experimental proc to allow admins to call rules on the fly or have rules call other rules. +/datum/game_mode/dynamic/proc/picking_specific_rule(ruletype, forced = FALSE) + var/datum/dynamic_ruleset/midround/new_rule + if(ispath(ruletype)) + new_rule = new ruletype() // You should only use it to call midround rules though. + else if(istype(ruletype, /datum/dynamic_ruleset)) + new_rule = ruletype + else + return FALSE + + if(!new_rule) + return FALSE + + if(!forced) + if(only_ruleset_executed) + return FALSE + // Check if a blocking ruleset has been executed. + else if(check_blocking(new_rule.blocking_rules, executed_rules)) + return FALSE + // Check if the ruleset is highlander and if a highlander ruleset has been executed + else if(new_rule.flags & HIGHLANDER_RULESET) + if(threat < GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking) + if(highlander_executed) + return FALSE + + update_playercounts() + if ((forced || (new_rule.acceptable(current_players[CURRENT_LIVING_PLAYERS].len, threat_level) && new_rule.cost <= threat))) + new_rule.candidates = current_players.Copy() + new_rule.trim_candidates() + if (new_rule.ready(forced)) + spend_threat(new_rule.cost) + threat_log += "[worldtime2text()]: Forced rule [new_rule.name] spent [new_rule.cost]" + if (new_rule.execute()) // This should never fail since ready() returned 1 + if(new_rule.flags & HIGHLANDER_RULESET) + highlander_executed = TRUE + else if(new_rule.flags & ONLY_RULESET) + only_ruleset_executed = TRUE + log_game("DYNAMIC: Making a call to a specific ruleset...[new_rule.name]!") + executed_rules += new_rule + if (new_rule.persistent) + current_rules += new_rule + return TRUE + else if (forced) + log_game("DYNAMIC: The ruleset [new_rule.name] couldn't be executed due to lack of elligible players.") + return FALSE + +/datum/game_mode/dynamic/process() + if (pop_last_updated < world.time - (60 SECONDS)) + pop_last_updated = world.time + update_playercounts() + + for (var/datum/dynamic_ruleset/rule in current_rules) + if(rule.rule_process() == RULESET_STOP_PROCESSING) // If rule_process() returns 1 (RULESET_STOP_PROCESSING), stop processing. + current_rules -= rule + + if (midround_injection_cooldown < world.time) + if (GLOB.dynamic_forced_extended) + return + + // Somehow it manages to trigger midround multiple times so this was moved here. + // There is no way this should be able to trigger an injection twice now. + var/midround_injection_cooldown_middle = 0.5*(GLOB.dynamic_midround_delay_max + GLOB.dynamic_midround_delay_min) + midround_injection_cooldown = (round(CLAMP(EXP_DISTRIBUTION(midround_injection_cooldown_middle), GLOB.dynamic_midround_delay_min, GLOB.dynamic_midround_delay_max)) + world.time) + + // Time to inject some threat into the round + if(EMERGENCY_ESCAPED_OR_ENDGAMED) // Unless the shuttle is gone + return + + log_game("DYNAMIC: Checking state of the round.") + + update_playercounts() + + if (prob(get_injection_chance())) + var/list/drafted_rules = list() + for (var/datum/dynamic_ruleset/midround/rule in midround_rules) + if (rule.acceptable(current_players[CURRENT_LIVING_PLAYERS].len, threat_level) && threat >= rule.cost) + // Classic secret : only autotraitor/minor roles + if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET))) + continue + rule.candidates = list() + rule.candidates = current_players.Copy() + rule.trim_candidates() + if (rule.ready() && rule.candidates.len > 0) + drafted_rules[rule] = rule.get_weight() + if (drafted_rules.len > 0) + picking_midround_latejoin_rule(drafted_rules) + +/// Updates current_players. +/datum/game_mode/dynamic/proc/update_playercounts() + current_players[CURRENT_LIVING_PLAYERS] = list() + current_players[CURRENT_LIVING_ANTAGS] = list() + current_players[CURRENT_DEAD_PLAYERS] = list() + current_players[CURRENT_OBSERVERS] = list() + for (var/mob/M in GLOB.player_list) + if (istype(M, /mob/dead/new_player)) + continue + if (M.stat != DEAD) + current_players[CURRENT_LIVING_PLAYERS].Add(M) + if (M.mind && (M.mind.special_role || M.mind.antag_datums?.len > 0)) + current_players[CURRENT_LIVING_ANTAGS].Add(M) + else + if (istype(M,/mob/dead/observer)) + var/mob/dead/observer/O = M + if (O.started_as_observer) // Observers + current_players[CURRENT_OBSERVERS].Add(M) + continue + current_players[CURRENT_DEAD_PLAYERS].Add(M) // Players who actually died (and admins who ghosted, would be nice to avoid counting them somehow) + +/// Gets the chance for latejoin and midround injection, the dry_run argument is only used for forced injection. +/datum/game_mode/dynamic/proc/get_injection_chance(dry_run = FALSE) + if(forced_injection) + forced_injection = !dry_run + return 100 + var/chance = 0 + // If the high pop override is in effect, we reduce the impact of population on the antag injection chance + var/high_pop_factor = (current_players[CURRENT_LIVING_PLAYERS].len >= GLOB.dynamic_high_pop_limit) + var/max_pop_per_antag = max(5,15 - round(threat_level/10) - round(current_players[CURRENT_LIVING_PLAYERS].len/(high_pop_factor ? 10 : 5))) + if (!current_players[CURRENT_LIVING_ANTAGS].len) + chance += 50 // No antags at all? let's boost those odds! + else + var/current_pop_per_antag = current_players[CURRENT_LIVING_PLAYERS].len / current_players[CURRENT_LIVING_ANTAGS].len + if (current_pop_per_antag > max_pop_per_antag) + chance += min(50, 25+10*(current_pop_per_antag-max_pop_per_antag)) + else + chance += 25-10*(max_pop_per_antag-current_pop_per_antag) + if (current_players[CURRENT_DEAD_PLAYERS].len > current_players[CURRENT_LIVING_PLAYERS].len) + chance -= 30 // More than half the crew died? ew, let's calm down on antags + if (threat > 70) + chance += 15 + if (threat < 30) + chance -= 15 + return round(max(0,chance)) + +/// Removes type from the list +/datum/game_mode/dynamic/proc/remove_from_list(list/type_list, type) + for(var/I in type_list) + if(istype(I, type)) + type_list -= I + return type_list + +/// Checks if a type in blocking_list is in rule_list. +/datum/game_mode/dynamic/proc/check_blocking(list/blocking_list, list/rule_list) + if(blocking_list.len > 0) + for(var/blocking in blocking_list) + for(var/datum/executed in rule_list) + if(blocking == executed.type) + return TRUE + return FALSE + +/// Checks if client age is age or older. +/datum/game_mode/dynamic/proc/check_age(client/C, age) + enemy_minimum_age = age + if(get_remaining_days(C) == 0) + enemy_minimum_age = initial(enemy_minimum_age) + return TRUE // Available in 0 days = available right now = player is old enough to play. + enemy_minimum_age = initial(enemy_minimum_age) + return FALSE + +/datum/game_mode/dynamic/make_antag_chance(mob/living/carbon/human/newPlayer) + if (GLOB.dynamic_forced_extended) + return + if(EMERGENCY_ESCAPED_OR_ENDGAMED) // No more rules after the shuttle has left + return + + update_playercounts() + + if (forced_latejoin_rule) + forced_latejoin_rule.candidates = list(newPlayer) + forced_latejoin_rule.trim_candidates() + log_game("DYNAMIC: Forcing ruleset [forced_latejoin_rule]") + if (forced_latejoin_rule.ready(TRUE)) + picking_midround_latejoin_rule(list(forced_latejoin_rule), forced = TRUE) + forced_latejoin_rule = null + + else if (latejoin_injection_cooldown < world.time && prob(get_injection_chance())) + var/list/drafted_rules = list() + for (var/datum/dynamic_ruleset/latejoin/rule in latejoin_rules) + if (rule.acceptable(current_players[CURRENT_LIVING_PLAYERS].len, threat_level) && threat >= rule.cost) + // Classic secret : only autotraitor/minor roles + if (GLOB.dynamic_classic_secret && !((rule.flags & TRAITOR_RULESET) || (rule.flags & MINOR_RULESET))) + continue + // No stacking : only one round-enter, unless > stacking_limit threat. + if (threat < GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking) + if(rule.flags & HIGHLANDER_RULESET && highlander_executed) + continue + + rule.candidates = list(newPlayer) + rule.trim_candidates() + if (rule.ready()) + drafted_rules[rule] = rule.get_weight() + + if (drafted_rules.len > 0 && picking_midround_latejoin_rule(drafted_rules)) + var/latejoin_injection_cooldown_middle = 0.5*(GLOB.dynamic_latejoin_delay_max + GLOB.dynamic_latejoin_delay_min) + latejoin_injection_cooldown = round(CLAMP(EXP_DISTRIBUTION(latejoin_injection_cooldown_middle), GLOB.dynamic_latejoin_delay_min, GLOB.dynamic_latejoin_delay_max)) + world.time + +/// Refund threat, but no more than threat_level. +/datum/game_mode/dynamic/proc/refund_threat(regain) + threat = min(threat_level,threat+regain) + +/// Generate threat and increase the threat_level if it goes beyond, capped at 100 +/datum/game_mode/dynamic/proc/create_threat(gain) + threat = min(100, threat+gain) + if(threat > threat_level) + threat_level = threat + +/// Expend threat, can't fall under 0. +/datum/game_mode/dynamic/proc/spend_threat(cost) + threat = max(threat-cost,0) + +/// Turns the value generated by lorentz distribution to threat value between 0 and 100. +/datum/game_mode/dynamic/proc/lorentz_to_threat(x) + switch (x) + if (-INFINITY to -20) + return rand(0, 10) + if (-20 to -10) + return RULE_OF_THREE(-40, -20, x) + 50 + if (-10 to -5) + return RULE_OF_THREE(-30, -10, x) + 50 + if (-5 to -2.5) + return RULE_OF_THREE(-20, -5, x) + 50 + if (-2.5 to -0) + return RULE_OF_THREE(-10, -2.5, x) + 50 + if (0 to 2.5) + return RULE_OF_THREE(10, 2.5, x) + 50 + if (2.5 to 5) + return RULE_OF_THREE(20, 5, x) + 50 + if (5 to 10) + return RULE_OF_THREE(30, 10, x) + 50 + if (10 to 20) + return RULE_OF_THREE(40, 20, x) + 50 + if (20 to INFINITY) + return rand(90, 100) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets.dm b/code/game/gamemodes/dynamic/dynamic_rulesets.dm new file mode 100644 index 0000000000..66afcbfb92 --- /dev/null +++ b/code/game/gamemodes/dynamic/dynamic_rulesets.dm @@ -0,0 +1,211 @@ +/datum/dynamic_ruleset + /// For admin logging and round end screen. + var/name = "" + /// For admin logging and round end screen, do not change this unless making a new rule type. + var/ruletype = "" + /// If set to TRUE, the rule won't be discarded after being executed, and dynamic will call rule_process() every time it ticks. + var/persistent = FALSE + /// If set to TRUE, dynamic mode will be able to draft this ruleset again later on. (doesn't apply for roundstart rules) + var/repeatable = FALSE + /// If set higher than 0 decreases weight by itself causing the ruleset to appear less often the more it is repeated. + var/repeatable_weight_decrease = 2 + /// List of players that are being drafted for this rule + var/list/mob/candidates = list() + /// List of players that were selected for this rule + var/list/datum/mind/assigned = list() + /// Preferences flag such as ROLE_WIZARD that need to be turned on for players to be antag + var/antag_flag = null + /// The antagonist datum that is assigned to the mobs mind on ruleset execution. + var/datum/antagonist/antag_datum = null + /// The required minimum account age for this ruleset. + var/minimum_required_age = 7 + /// If set, and config flag protect_roles_from_antagonist is false, then the rule will not pick players from these roles. + var/list/protected_roles = list() + /// If set, rule will deny candidates from those roles always. + var/list/restricted_roles = list() + /// If set, rule will only accept candidates from those roles, IMPORTANT: DOES NOT WORK ON ROUNDSTART RULESETS. + var/list/exclusive_roles = list() + /// If set, there needs to be a certain amount of players doing those roles (among the players who won't be drafted) for the rule to be drafted IMPORTANT: DOES NOT WORK ON ROUNDSTART RULESETS. + var/list/enemy_roles = list() + /// If enemy_roles was set, this is the amount of enemy job workers needed per threat_level range (0-10,10-20,etc) IMPORTANT: DOES NOT WORK ON ROUNDSTART RULESETS. + var/required_enemies = list(1,1,0,0,0,0,0,0,0,0) + /// The rule needs this many candidates (post-trimming) to be executed (example: Cult needs 4 players at round start) + var/required_candidates = 0 + /// 1 -> 9, probability for this rule to be picked against other rules + var/weight = 5 + /// Threat cost for this rule, this is decreased from the mode's threat when the rule is executed. + var/cost = 0 + /// A flag that determines how the ruleset is handled + /// HIGHLANDER_RULESET are rulesets can end the round. + /// TRAITOR_RULESET and MINOR_RULESET can't end the round and have no difference right now. + var/flags = 0 + /// Pop range per requirement. If zero defaults to mode's pop_per_requirement. + var/pop_per_requirement = 0 + /// Requirements are the threat level requirements per pop range. + /// With the default values, The rule will never get drafted below 10 threat level (aka: "peaceful extended"), and it requires a higher threat level at lower pops. + var/list/requirements = list(40,30,20,10,10,10,10,10,10,10) + /// An alternative, static requirement used instead when pop is over mode's high_pop_limit. + var/high_population_requirement = 10 + /// Reference to the mode, use this instead of SSticker.mode. + var/datum/game_mode/dynamic/mode = null + /// If a role is to be considered another for the purpose of banning. + var/antag_flag_override = null + /// If a ruleset type which is in this list has been executed, then the ruleset will not be executed. + var/list/blocking_rules = list() + /// The minimum amount of players required for the rule to be considered. + var/minimum_players = 0 + /// The maximum amount of players required for the rule to be considered. + /// Anything below zero or exactly zero is ignored. + var/maximum_players = 0 + + +/datum/dynamic_ruleset/New() + ..() + if(CONFIG_GET(flag/protect_roles_from_antagonist)) + restricted_roles += protected_roles + if(CONFIG_GET(flag/protect_assistant_from_antagonist)) + restricted_roles += "Assistant" + + if (istype(SSticker.mode, /datum/game_mode/dynamic)) + mode = SSticker.mode + else if (GLOB.master_mode != "dynamic") // This is here to make roundstart forced ruleset function. + qdel(src) + +/datum/dynamic_ruleset/roundstart // One or more of those drafted at roundstart + ruletype = "Roundstart" + +/datum/dynamic_ruleset/roundstart/delayed/ // Executed with a 30 seconds delay + var/delay = 30 SECONDS + var/required_type = /mob/living/carbon/human // No ghosts, new players or silicons allowed. + +// Can be drafted when a player joins the server +/datum/dynamic_ruleset/latejoin + ruletype = "Latejoin" + +/// By default, a rule is acceptable if it satisfies the threat level/population requirements. +/// If your rule has extra checks, such as counting security officers, do that in ready() instead +/datum/dynamic_ruleset/proc/acceptable(population = 0, threat_level = 0) + if(minimum_players > population) + return FALSE + if(maximum_players > 0 && population > maximum_players) + return FALSE + if (population >= GLOB.dynamic_high_pop_limit) + return (threat_level >= high_population_requirement) + else + pop_per_requirement = pop_per_requirement > 0 ? pop_per_requirement : mode.pop_per_requirement + var/indice_pop = min(10,round(population/pop_per_requirement)+1) + return (threat_level >= requirements[indice_pop]) + +/// This is called if persistent variable is true everytime SSTicker ticks. +/datum/dynamic_ruleset/proc/rule_process() + return + +/// Called on game mode pre_setup, used for non-delayed roundstart rulesets only. +/// Do everything you need to do before job is assigned here. +/// IMPORTANT: ASSIGN special_role HERE +/datum/dynamic_ruleset/proc/pre_execute() + return TRUE + +/// Called on post_setup on roundstart and when the rule executes on midround and latejoin. +/// Give your candidates or assignees equipment and antag datum here. +/datum/dynamic_ruleset/proc/execute() + for(var/datum/mind/M in assigned) + M.add_antag_datum(antag_datum) + return TRUE + +/// Called after delay set in ruleset. +/// Give your candidates or assignees equipment and antag datum here. +/datum/dynamic_ruleset/roundstart/delayed/execute() + if (SSticker && SSticker.current_state < GAME_STATE_PLAYING) + CRASH("The delayed ruleset [name] executed before the round started.") + +/// Here you can perform any additional checks you want. (such as checking the map etc) +/// Remember that on roundstart no one knows what their job is at this point. +/// IMPORTANT: If ready() returns TRUE, that means pre_execute() or execute() should never fail! +/datum/dynamic_ruleset/proc/ready(forced = 0) + if (required_candidates > candidates.len) + return FALSE + return TRUE + +/// Gets weight of the ruleset +/// Note that this decreases weight if repeatable is TRUE and repeatable_weight_decrease is higher than 0 +/// Note: If you don't want repeatable rulesets to decrease their weight use the weight variable directly +/datum/dynamic_ruleset/proc/get_weight() + if(repeatable && weight > 1 && repeatable_weight_decrease > 0) + for(var/datum/dynamic_ruleset/DR in mode.executed_rules) + if(istype(DR, type)) + weight = max(weight-repeatable_weight_decrease,1) + return weight + +/// Here you can remove candidates that do not meet your requirements. +/// This means if their job is not correct or they have disconnected you can remove them from candidates here. +/// Usually this does not need to be changed unless you need some specific requirements from your candidates. +/datum/dynamic_ruleset/proc/trim_candidates() + return + +/// Counts how many players are ready at roundstart. +/// Used only by non-delayed roundstart rulesets. +/datum/dynamic_ruleset/proc/num_players() + . = 0 + for(var/mob/dead/new_player/P in GLOB.player_list) + if(P.client && P.ready == PLAYER_READY_TO_PLAY) + . ++ + +/// Set mode result and news report here. +/// Only called if ruleset is flagged as HIGHLANDER_RULESET +/datum/dynamic_ruleset/proc/round_result() + +/// Checks if round is finished, return true to end the round. +/// Only called if ruleset is flagged as HIGHLANDER_RULESET +/datum/dynamic_ruleset/proc/check_finished() + return FALSE + +////////////////////////////////////////////// +// // +// ROUNDSTART RULESETS // +// // +////////////////////////////////////////////// + +/// Checks if candidates are connected and if they are banned or don't want to be the antagonist. +/datum/dynamic_ruleset/roundstart/trim_candidates() + for(var/mob/dead/new_player/P in candidates) + if (!P.client || !P.mind) // Are they connected? + candidates.Remove(P) + continue + if(!mode.check_age(P.client, minimum_required_age)) + candidates.Remove(P) + continue + if(P.mind.special_role) // We really don't want to give antag to an antag. + candidates.Remove(P) + continue + if (!(antag_flag in P.client.prefs.be_special) || jobban_isbanned(P.ckey, list(antag_flag, ROLE_SYNDICATE)) || (antag_flag_override && jobban_isbanned(P.ckey, list(antag_flag_override, ROLE_SYNDICATE))))//are they willing and not antag-banned? + candidates.Remove(P) + continue + +/// Checks if candidates are required mob type, connected, banned and if the job is exclusive to the role. +/datum/dynamic_ruleset/roundstart/delayed/trim_candidates() + . = ..() + for (var/mob/P in candidates) + if (!istype(P, required_type)) + candidates.Remove(P) // Can be a new_player, etc. + continue + if(!mode.check_age(P.client, minimum_required_age)) + candidates.Remove(P) + continue + if (!P.client || !P.mind || !P.mind.assigned_role) // Are they connected? + candidates.Remove(P) + continue + if(P.mind.special_role || P.mind.antag_datums?.len > 0) // Are they an antag already? + candidates.Remove(P) + continue + if (!(antag_flag in P.client.prefs.be_special) || jobban_isbanned(P.ckey, list(antag_flag, ROLE_SYNDICATE)) || (antag_flag_override && jobban_isbanned(P.ckey, list(antag_flag_override, ROLE_SYNDICATE))))//are they willing and not antag-banned? + candidates.Remove(P) + continue + if ((exclusive_roles.len > 0) && !(P.mind.assigned_role in exclusive_roles)) // Is the rule exclusive to their job? + candidates.Remove(P) + continue + +/// Do your checks if the ruleset is ready to be executed here. +/// Should ignore certain checks if forced is TRUE +/datum/dynamic_ruleset/roundstart/ready(forced = FALSE) + return ..() diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm new file mode 100644 index 0000000000..dbaeaf0163 --- /dev/null +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -0,0 +1,110 @@ +////////////////////////////////////////////// +// // +// LATEJOIN RULESETS // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/latejoin/trim_candidates() + for(var/mob/P in candidates) + if (!P.client || !P.mind || !P.mind.assigned_role) // Are they connected? + candidates.Remove(P) + continue + if(!mode.check_age(P.client, minimum_required_age)) + candidates.Remove(P) + continue + if (!(antag_flag in P.client.prefs.be_special) || jobban_isbanned(P.ckey, list(antag_flag, ROLE_SYNDICATE)) || (antag_flag_override && jobban_isbanned(P.ckey, list(antag_flag_override))))//are they willing and not antag-banned? + candidates.Remove(P) + continue + if (P.mind.assigned_role in restricted_roles) // Does their job allow for it? + candidates.Remove(P) + continue + if ((exclusive_roles.len > 0) && !(P.mind.assigned_role in exclusive_roles)) // Is the rule exclusive to their job? + candidates.Remove(P) + continue + +/datum/dynamic_ruleset/latejoin/ready(forced = 0) + if (!forced) + var/job_check = 0 + if (enemy_roles.len > 0) + for (var/mob/M in mode.current_players[CURRENT_LIVING_PLAYERS]) + if (M.stat == DEAD) + continue // Dead players cannot count as opponents + if (M.mind && M.mind.assigned_role && (M.mind.assigned_role in enemy_roles) && (!(M in candidates) || (M.mind.assigned_role in restricted_roles))) + job_check++ // Checking for "enemies" (such as sec officers). To be counters, they must either not be candidates to that rule, or have a job that restricts them from it + + var/threat = round(mode.threat_level/10) + if (job_check < required_enemies[threat]) + return FALSE + return ..() + +/datum/dynamic_ruleset/latejoin/execute() + var/mob/M = pick(candidates) + assigned += M.mind + M.mind.special_role = antag_flag + M.mind.add_antag_datum(antag_datum) + return TRUE + +////////////////////////////////////////////// +// // +// SYNDICATE TRAITORS // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/latejoin/infiltrator + name = "Syndicate Infiltrator" + antag_datum = /datum/antagonist/traitor + antag_flag = ROLE_TRAITOR + protected_roles = list("Security Officer", "Warden", "Head of Personnel", "Detective", "Head of Security", "Captain") + restricted_roles = list("AI","Cyborg") + required_candidates = 1 + weight = 7 + cost = 5 + requirements = list(40,30,20,10,10,10,10,10,10,10) + high_population_requirement = 10 + repeatable = TRUE + flags = TRAITOR_RULESET + +////////////////////////////////////////////// +// // +// REVOLUTIONARY PROVOCATEUR // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/latejoin/provocateur + name = "Provocateur" + antag_datum = /datum/antagonist/rev/head + antag_flag = ROLE_REV_HEAD + antag_flag_override = ROLE_REV + restricted_roles = list("AI", "Cyborg", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director") + enemy_roles = list("AI", "Cyborg", "Security Officer","Detective","Head of Security", "Captain", "Warden") + required_enemies = list(2,2,1,1,1,1,1,0,0,0) + required_candidates = 1 + weight = 2 + cost = 20 + requirements = list(101,101,70,40,30,20,20,20,20,20) + high_population_requirement = 50 + flags = HIGHLANDER_RULESET + var/required_heads = 3 + +/datum/dynamic_ruleset/latejoin/provocateur/ready(forced=FALSE) + if (forced) + required_heads = 1 + if(!..()) + return FALSE + var/head_check = 0 + for(var/mob/player in mode.current_players[CURRENT_LIVING_PLAYERS]) + if (player.mind.assigned_role in GLOB.command_positions) + head_check++ + return (head_check >= required_heads) + +/datum/dynamic_ruleset/latejoin/provocateur/execute() + var/mob/M = pick(candidates) + assigned += M.mind + M.mind.special_role = antag_flag + var/datum/antagonist/rev/head/new_head = new() + new_head.give_flash = TRUE + new_head.give_hud = TRUE + new_head.remove_clumsy = TRUE + new_head = M.mind.add_antag_datum(new_head) + new_head.rev_team.max_headrevs = 1 // Only one revhead if it is latejoin. + return TRUE diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm new file mode 100644 index 0000000000..440765718b --- /dev/null +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -0,0 +1,460 @@ +////////////////////////////////////////////// +// // +// MIDROUND RULESETS // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/midround // Can be drafted once in a while during a round + ruletype = "Midround" + /// If the ruleset should be restricted from ghost roles. + var/restrict_ghost_roles = TRUE + /// What type the ruleset is restricted to. + var/required_type = /mob/living/carbon/human + var/list/living_players = list() + var/list/living_antags = list() + var/list/dead_players = list() + var/list/list_observers = list() + +/datum/dynamic_ruleset/midround/from_ghosts + weight = 0 + /// Whether the ruleset should call generate_ruleset_body or not. + var/makeBody = TRUE + +/datum/dynamic_ruleset/midround/trim_candidates() + // Unlike the previous two types, these rulesets are not meant for /mob/dead/new_player + // And since I want those rulesets to be as flexible as possible, I'm not gonna put much here, + // + // All you need to know is that here, the candidates list contains 4 lists itself, indexed with the following defines: + // Candidates = list(CURRENT_LIVING_PLAYERS, CURRENT_LIVING_ANTAGS, CURRENT_DEAD_PLAYERS, CURRENT_OBSERVERS) + // So for example you can get the list of all current dead players with var/list/dead_players = candidates[CURRENT_DEAD_PLAYERS] + // Make sure to properly typecheck the mobs in those lists, as the dead_players list could contain ghosts, or dead players still in their bodies. + // We're still gonna trim the obvious (mobs without clients, jobbanned players, etc) + living_players = trim_list(candidates[CURRENT_LIVING_PLAYERS]) + living_antags = trim_list(candidates[CURRENT_LIVING_ANTAGS]) + dead_players = trim_list(candidates[CURRENT_DEAD_PLAYERS]) + list_observers = trim_list(candidates[CURRENT_OBSERVERS]) + +/datum/dynamic_ruleset/midround/proc/trim_list(list/L = list()) + var/list/trimmed_list = L.Copy() + var/antag_name = initial(antag_flag) + for(var/mob/M in trimmed_list) + if (!istype(M, required_type)) + trimmed_list.Remove(M) + continue + if (!M.client) // Are they connected? + trimmed_list.Remove(M) + continue + if(!mode.check_age(M.client, minimum_required_age)) + trimmed_list.Remove(M) + continue + if (!(antag_name in M.client.prefs.be_special) || jobban_isbanned(M.ckey, list(antag_name, ROLE_SYNDICATE)))//are they willing and not antag-banned? + trimmed_list.Remove(M) + continue + if (M.mind) + if (restrict_ghost_roles && M.mind.assigned_role in GLOB.exp_specialmap[EXP_TYPE_SPECIAL]) // Are they playing a ghost role? + trimmed_list.Remove(M) + continue + if (M.mind.assigned_role in restricted_roles || HAS_TRAIT(M, TRAIT_MINDSHIELD)) // Does their job allow it or are they mindshielded? + trimmed_list.Remove(M) + continue + if ((exclusive_roles.len > 0) && !(M.mind.assigned_role in exclusive_roles)) // Is the rule exclusive to their job? + trimmed_list.Remove(M) + continue + return trimmed_list + +// You can then for example prompt dead players in execute() to join as strike teams or whatever +// Or autotator someone + +// IMPORTANT, since /datum/dynamic_ruleset/midround may accept candidates from both living, dead, and even antag players, you need to manually check whether there are enough candidates +// (see /datum/dynamic_ruleset/midround/autotraitor/ready(var/forced = FALSE) for example) +/datum/dynamic_ruleset/midround/ready(forced = FALSE) + if (!forced) + var/job_check = 0 + if (enemy_roles.len > 0) + for (var/mob/M in living_players) + if (M.stat == DEAD) + continue // Dead players cannot count as opponents + if (M.mind && M.mind.assigned_role && (M.mind.assigned_role in enemy_roles) && (!(M in candidates) || (M.mind.assigned_role in restricted_roles))) + job_check++ // Checking for "enemies" (such as sec officers). To be counters, they must either not be candidates to that rule, or have a job that restricts them from it + + var/threat = round(mode.threat_level/10) + if (job_check < required_enemies[threat]) + return FALSE + return TRUE + +/datum/dynamic_ruleset/midround/from_ghosts/execute() + var/list/possible_candidates = list() + possible_candidates.Add(dead_players) + possible_candidates.Add(list_observers) + send_applications(possible_candidates) + if(assigned.len > 0) + return TRUE + else + return FALSE + +/// This sends a poll to ghosts if they want to be a ghost spawn from a ruleset. +/datum/dynamic_ruleset/midround/from_ghosts/proc/send_applications(list/possible_volunteers = list()) + if (possible_volunteers.len <= 0) // This shouldn't happen, as ready() should return FALSE if there is not a single valid candidate + message_admins("Possible volunteers was 0. This shouldn't appear, because of ready(), unless you forced it!") + return + message_admins("Polling [possible_volunteers.len] players to apply for the [name] ruleset.") + log_game("DYNAMIC: Polling [possible_volunteers.len] players to apply for the [name] ruleset.") + + candidates = pollGhostCandidates("The mode is looking for volunteers to become [antag_flag] for [name]", antag_flag, SSticker.mode, antag_flag, poll_time = 300) + + if(!candidates || candidates.len <= 0) + message_admins("The ruleset [name] received no applications.") + log_game("DYNAMIC: The ruleset [name] received no applications.") + mode.refund_threat(cost) + mode.threat_log += "[worldtime2text()]: Rule [name] refunded [cost] (no applications)" + mode.executed_rules -= src + return + + message_admins("[candidates.len] players volunteered for the ruleset [name].") + log_game("DYNAMIC: [candidates.len] players volunteered for [name].") + review_applications() + +/// Here is where you can check if your ghost applicants are valid for the ruleset. +/// Called by send_applications(). +/datum/dynamic_ruleset/midround/from_ghosts/proc/review_applications() + for (var/i = 1, i <= required_candidates, i++) + if(candidates.len <= 0) + if(i == 1) + // We have found no candidates so far and we are out of applicants. + mode.refund_threat(cost) + mode.threat_log += "[worldtime2text()]: Rule [name] refunded [cost] (all applications invalid)" + mode.executed_rules -= src + break + var/mob/applicant = pick(candidates) + candidates -= applicant + if(!isobserver(applicant)) + if(applicant.stat == DEAD) // Not an observer? If they're dead, make them one. + applicant = applicant.ghostize(FALSE) + else // Not dead? Disregard them, pick a new applicant + i-- + continue + + if(!applicant) + i-- + continue + + var/mob/new_character = applicant + + if (makeBody) + new_character = generate_ruleset_body(applicant) + + finish_setup(new_character, i) + assigned += applicant + notify_ghosts("[new_character] has been picked for the ruleset [name]!", source = new_character, action = NOTIFY_ORBIT, header="Something Interesting!") + +/datum/dynamic_ruleset/midround/from_ghosts/proc/generate_ruleset_body(mob/applicant) + var/mob/living/carbon/human/new_character = makeBody(applicant) + new_character.dna.remove_all_mutations() + return new_character + +/datum/dynamic_ruleset/midround/from_ghosts/proc/finish_setup(mob/new_character, index) + var/datum/antagonist/new_role = new antag_datum() + setup_role(new_role) + new_character.mind.add_antag_datum(new_role) + new_character.mind.special_role = antag_flag + +/datum/dynamic_ruleset/midround/from_ghosts/proc/setup_role(datum/antagonist/new_role) + return + +////////////////////////////////////////////// +// // +// SYNDICATE TRAITORS // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/midround/autotraitor + name = "Syndicate Sleeper Agent" + antag_datum = /datum/antagonist/traitor + antag_flag = ROLE_TRAITOR + protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel") + restricted_roles = list("Cyborg", "AI", "Positronic Brain") + required_candidates = 1 + weight = 7 + cost = 10 + requirements = list(50,40,30,20,10,10,10,10,10,10) + repeatable = TRUE + high_population_requirement = 10 + flags = TRAITOR_RULESET + +/datum/dynamic_ruleset/midround/autotraitor/acceptable(population = 0, threat = 0) + var/player_count = mode.current_players[CURRENT_LIVING_PLAYERS].len + var/antag_count = mode.current_players[CURRENT_LIVING_ANTAGS].len + var/max_traitors = round(player_count / 10) + 1 + if ((antag_count < max_traitors) && prob(mode.threat_level))//adding traitors if the antag population is getting low + return ..() + else + return FALSE + +/datum/dynamic_ruleset/midround/autotraitor/trim_candidates() + ..() + for(var/mob/living/player in living_players) + if(issilicon(player)) // Your assigned role doesn't change when you are turned into a silicon. + living_players -= player + continue + if(is_centcom_level(player.z)) + living_players -= player // We don't autotator people in CentCom + continue + if(player.mind && (player.mind.special_role || player.mind.antag_datums?.len > 0)) + living_players -= player // We don't autotator people with roles already + +/datum/dynamic_ruleset/midround/autotraitor/ready(forced = FALSE) + if (required_candidates > living_players.len) + return FALSE + return ..() + +/datum/dynamic_ruleset/midround/autotraitor/execute() + var/mob/M = pick(living_players) + assigned += M + living_players -= M + var/datum/antagonist/traitor/newTraitor = new + M.mind.add_antag_datum(newTraitor) + return TRUE + + +////////////////////////////////////////////// +// // +// Malfunctioning AI // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/midround/malf + name = "Malfunctioning AI" + antag_datum = /datum/antagonist/traitor + antag_flag = ROLE_MALF + enemy_roles = list("Security Officer", "Warden","Detective","Head of Security", "Captain", "Scientist", "Chemist", "Research Director", "Chief Engineer") + exclusive_roles = list("AI") + required_enemies = list(4,4,4,4,4,4,2,2,2,0) + required_candidates = 1 + weight = 3 + cost = 35 + requirements = list(101,101,80,70,60,60,50,50,40,40) + high_population_requirement = 35 + required_type = /mob/living/silicon/ai + var/ion_announce = 33 + var/removeDontImproveChance = 10 + +/datum/dynamic_ruleset/midround/malf/trim_candidates() + ..() + candidates = candidates[CURRENT_LIVING_PLAYERS] + for(var/mob/living/player in candidates) + if(!isAI(player)) + candidates -= player + continue + if(is_centcom_level(player.z)) + candidates -= player + continue + if(player.mind && (player.mind.special_role || player.mind.antag_datums?.len > 0)) + candidates -= player + +/datum/dynamic_ruleset/midround/malf/execute() + if(!candidates || !candidates.len) + return FALSE + var/mob/living/silicon/ai/M = pick(candidates) + candidates -= M + assigned += M.mind + var/datum/antagonist/traitor/AI = new + M.mind.special_role = antag_flag + M.mind.add_antag_datum(AI) + if(prob(ion_announce)) + priority_announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", 'sound/ai/ionstorm.ogg') + if(prob(removeDontImproveChance)) + M.replace_random_law(generate_ion_law(), list(LAW_INHERENT, LAW_SUPPLIED, LAW_ION)) + else + M.add_ion_law(generate_ion_law()) + return TRUE + +////////////////////////////////////////////// +// // +// WIZARD (GHOST) // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/midround/from_ghosts/wizard + name = "Wizard" + antag_datum = /datum/antagonist/wizard + antag_flag = ROLE_WIZARD + enemy_roles = list("Security Officer","Detective","Head of Security", "Captain") + required_enemies = list(2,2,1,1,1,1,1,0,0,0) + required_candidates = 1 + weight = 1 + cost = 20 + requirements = list(90,90,70,40,30,20,10,10,10,10) + high_population_requirement = 50 + repeatable = TRUE + +/datum/dynamic_ruleset/midround/from_ghosts/wizard/ready(forced = FALSE) + if (required_candidates > (dead_players.len + list_observers.len)) + return FALSE + if(GLOB.wizardstart.len == 0) + log_admin("Cannot accept Wizard ruleset. Couldn't find any wizard spawn points.") + message_admins("Cannot accept Wizard ruleset. Couldn't find any wizard spawn points.") + return FALSE + return ..() + +/datum/dynamic_ruleset/midround/from_ghosts/wizard/finish_setup(mob/new_character, index) + ..() + new_character.forceMove(pick(GLOB.wizardstart)) + +////////////////////////////////////////////// +// // +// NUCLEAR OPERATIVES (MIDROUND) // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/midround/from_ghosts/nuclear + name = "Nuclear Assault" + antag_flag = ROLE_OPERATIVE + antag_datum = /datum/antagonist/nukeop + enemy_roles = list("AI", "Cyborg", "Security Officer", "Warden","Detective","Head of Security", "Captain") + required_enemies = list(3,3,3,3,3,2,1,1,0,0) + required_candidates = 5 + weight = 5 + cost = 35 + requirements = list(90,90,90,80,60,40,30,20,10,10) + high_population_requirement = 10 + var/operative_cap = list(2,2,3,3,4,5,5,5,5,5) + var/datum/team/nuclear/nuke_team + flags = HIGHLANDER_RULESET + +/datum/dynamic_ruleset/midround/from_ghosts/nuclear/acceptable(population=0, threat=0) + if (locate(/datum/dynamic_ruleset/roundstart/nuclear) in mode.executed_rules) + return FALSE // Unavailable if nuke ops were already sent at roundstart + var/indice_pop = min(10,round(living_players.len/5)+1) + required_candidates = operative_cap[indice_pop] + return ..() + +/datum/dynamic_ruleset/midround/from_ghosts/nuclear/ready(forced = FALSE) + if (required_candidates > (dead_players.len + list_observers.len)) + return FALSE + return ..() + +/datum/dynamic_ruleset/midround/from_ghosts/nuclear/finish_setup(mob/new_character, index) + new_character.mind.special_role = "Nuclear Operative" + new_character.mind.assigned_role = "Nuclear Operative" + if (index == 1) // Our first guy is the leader + var/datum/antagonist/nukeop/leader/new_role = new + nuke_team = new_role.nuke_team + new_character.mind.add_antag_datum(new_role) + else + return ..() + +////////////////////////////////////////////// +// // +// BLOB (GHOST) // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/midround/from_ghosts/blob + name = "Blob" + antag_datum = /datum/antagonist/blob + antag_flag = ROLE_BLOB + enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain") + required_enemies = list(2,2,1,1,1,1,1,0,0,0) + required_candidates = 1 + weight = 4 + cost = 10 + requirements = list(101,101,101,80,60,50,30,20,10,10) + high_population_requirement = 50 + repeatable = TRUE + +/datum/dynamic_ruleset/midround/from_ghosts/blob/generate_ruleset_body(mob/applicant) + var/body = applicant.become_overmind() + return body + +////////////////////////////////////////////// +// // +// XENOMORPH (GHOST) // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/midround/from_ghosts/xenomorph + name = "Alien Infestation" + antag_datum = /datum/antagonist/xeno + antag_flag = ROLE_ALIEN + enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain") + required_enemies = list(2,2,1,1,1,1,1,0,0,0) + required_candidates = 1 + weight = 3 + cost = 10 + requirements = list(101,101,101,70,50,40,20,15,10,10) + high_population_requirement = 50 + repeatable = TRUE + var/list/vents = list() + +/datum/dynamic_ruleset/midround/from_ghosts/xenomorph/execute() + // 50% chance of being incremented by one + required_candidates += prob(50) + for(var/obj/machinery/atmospherics/components/unary/vent_pump/temp_vent in GLOB.machines) + if(QDELETED(temp_vent)) + continue + if(is_station_level(temp_vent.loc.z) && !temp_vent.welded) + var/datum/pipeline/temp_vent_parent = temp_vent.parents[1] + if(!temp_vent_parent) + continue // No parent vent + // Stops Aliens getting stuck in small networks. + // See: Security, Virology + if(temp_vent_parent.other_atmosmch.len > 20) + vents += temp_vent + if(!vents.len) + return FALSE + . = ..() + +/datum/dynamic_ruleset/midround/from_ghosts/xenomorph/generate_ruleset_body(mob/applicant) + var/obj/vent = pick_n_take(vents) + var/mob/living/carbon/alien/larva/new_xeno = new(vent.loc) + new_xeno.key = applicant.key + message_admins("[ADMIN_LOOKUPFLW(new_xeno)] has been made into an alien by the midround ruleset.") + log_game("DYNAMIC: [key_name(new_xeno)] was spawned as an alien by the midround ruleset.") + return new_xeno + +////////////////////////////////////////////// +// // +// NIGHTMARE (GHOST) // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/midround/from_ghosts/nightmare + name = "Nightmare" + antag_datum = /datum/antagonist/nightmare + antag_flag = "Nightmare" + antag_flag_override = ROLE_ALIEN + enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain") + required_enemies = list(2,2,1,1,1,1,1,0,0,0) + required_candidates = 1 + weight = 3 + cost = 10 + requirements = list(101,101,101,70,50,40,20,15,10,10) + high_population_requirement = 50 + repeatable = TRUE + var/list/spawn_locs = list() + +/datum/dynamic_ruleset/midround/from_ghosts/nightmare/execute() + for(var/X in GLOB.xeno_spawn) + var/turf/T = X + var/light_amount = T.get_lumcount() + if(light_amount < SHADOW_SPECIES_LIGHT_THRESHOLD) + spawn_locs += T + if(!spawn_locs.len) + return FALSE + . = ..() + +/datum/dynamic_ruleset/midround/from_ghosts/nightmare/generate_ruleset_body(mob/applicant) + var/datum/mind/player_mind = new /datum/mind(applicant.key) + player_mind.active = TRUE + + var/mob/living/carbon/human/S = new (pick(spawn_locs)) + player_mind.transfer_to(S) + player_mind.assigned_role = "Nightmare" + player_mind.special_role = "Nightmare" + player_mind.add_antag_datum(/datum/antagonist/nightmare) + S.set_species(/datum/species/shadow/nightmare) + + playsound(S, 'sound/magic/ethereal_exit.ogg', 50, 1, -1) + message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a Nightmare by the midround ruleset.") + log_game("DYNAMIC: [key_name(S)] was spawned as a Nightmare by the midround ruleset.") + return S diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm new file mode 100644 index 0000000000..76b1952492 --- /dev/null +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -0,0 +1,729 @@ + +////////////////////////////////////////////// +// // +// SYNDICATE TRAITORS // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/roundstart/traitor + name = "Traitors" + persistent = TRUE + antag_flag = ROLE_TRAITOR + antag_datum = /datum/antagonist/traitor/ + minimum_required_age = 0 + protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain") + restricted_roles = list("Cyborg") + required_candidates = 1 + weight = 5 + cost = 10 + requirements = list(10,10,10,10,10,10,10,10,10,10) + high_population_requirement = 10 + var/autotraitor_cooldown = 450 // 15 minutes (ticks once per 2 sec) + +/datum/dynamic_ruleset/roundstart/traitor/pre_execute() + var/traitor_scaling_coeff = 10 - max(0,round(mode.threat_level/10)-5) // Above 50 threat level, coeff goes down by 1 for every 10 levels + var/num_traitors = min(round(mode.candidates.len / traitor_scaling_coeff) + 1, candidates.len) + for (var/i = 1 to num_traitors) + var/mob/M = pick(candidates) + candidates -= M + assigned += M.mind + M.mind.special_role = ROLE_TRAITOR + M.mind.restricted_roles = restricted_roles + return TRUE + +/datum/dynamic_ruleset/roundstart/traitor/rule_process() + if (autotraitor_cooldown > 0) + autotraitor_cooldown-- + else + autotraitor_cooldown = 450 // 15 minutes + message_admins("Checking if we can turn someone into a traitor.") + log_game("DYNAMIC: Checking if we can turn someone into a traitor.") + mode.picking_specific_rule(/datum/dynamic_ruleset/midround/autotraitor) + +////////////////////////////////////////// +// // +// BLOOD BROTHERS // +// // +////////////////////////////////////////// + +/datum/dynamic_ruleset/roundstart/traitorbro + name = "Blood Brothers" + antag_flag = ROLE_BROTHER + antag_datum = /datum/antagonist/brother/ + protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain") + restricted_roles = list("Cyborg", "AI") + required_candidates = 2 + weight = 4 + cost = 10 + requirements = list(40,30,30,20,20,15,15,15,10,10) + high_population_requirement = 15 + var/list/datum/team/brother_team/pre_brother_teams = list() + var/const/team_amount = 2 // Hard limit on brother teams if scaling is turned off + var/const/min_team_size = 2 + +/datum/dynamic_ruleset/roundstart/traitorbro/pre_execute() + var/num_teams = team_amount + var/bsc = CONFIG_GET(number/brother_scaling_coeff) + if(bsc) + num_teams = max(1, round(num_players() / bsc)) + + for(var/j = 1 to num_teams) + if(candidates.len < min_team_size || candidates.len < required_candidates) + break + var/datum/team/brother_team/team = new + var/team_size = prob(10) ? min(3, candidates.len) : 2 + for(var/k = 1 to team_size) + var/mob/bro = pick(candidates) + candidates -= bro + assigned += bro.mind + team.add_member(bro.mind) + bro.mind.special_role = "brother" + bro.mind.restricted_roles = restricted_roles + pre_brother_teams += team + return TRUE + +/datum/dynamic_ruleset/roundstart/traitorbro/execute() + for(var/datum/team/brother_team/team in pre_brother_teams) + team.pick_meeting_area() + team.forge_brother_objectives() + for(var/datum/mind/M in team.members) + M.add_antag_datum(/datum/antagonist/brother, team) + team.update_name() + mode.brother_teams += pre_brother_teams + return TRUE + +////////////////////////////////////////////// +// // +// CHANGELINGS // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/roundstart/changeling + name = "Changelings" + antag_flag = ROLE_CHANGELING + antag_datum = /datum/antagonist/changeling + protected_roles = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain") + restricted_roles = list("AI", "Cyborg") + required_candidates = 1 + weight = 3 + cost = 30 + requirements = list(80,70,60,50,40,20,20,10,10,10) + high_population_requirement = 10 + var/team_mode_probability = 30 + +/datum/dynamic_ruleset/roundstart/changeling/pre_execute() + var/num_changelings = min(round(mode.candidates.len / 10) + 1, candidates.len) + for (var/i = 1 to num_changelings) + var/mob/M = pick(candidates) + candidates -= M + assigned += M.mind + M.mind.restricted_roles = restricted_roles + M.mind.special_role = ROLE_CHANGELING + return TRUE + +/datum/dynamic_ruleset/roundstart/changeling/execute() + var/team_mode = FALSE + if(prob(team_mode_probability)) + team_mode = TRUE + var/list/team_objectives = subtypesof(/datum/objective/changeling_team_objective) + var/list/possible_team_objectives = list() + for(var/T in team_objectives) + var/datum/objective/changeling_team_objective/CTO = T + if(assigned.len >= initial(CTO.min_lings)) + possible_team_objectives += T + + if(possible_team_objectives.len && prob(20*assigned.len)) + GLOB.changeling_team_objective_type = pick(possible_team_objectives) + for(var/datum/mind/changeling in assigned) + var/datum/antagonist/changeling/new_antag = new antag_datum() + new_antag.team_mode = team_mode + changeling.add_antag_datum(new_antag) + return TRUE + +////////////////////////////////////////////// +// // +// WIZARDS // +// // +////////////////////////////////////////////// + +// Dynamic is a wonderful thing that adds wizards to every round and then adds even more wizards during the round. +/datum/dynamic_ruleset/roundstart/wizard + name = "Wizard" + antag_flag = ROLE_WIZARD + antag_datum = /datum/antagonist/wizard + minimum_required_age = 14 + restricted_roles = list("Head of Security", "Captain") // Just to be sure that a wizard getting picked won't ever imply a Captain or HoS not getting drafted + required_candidates = 1 + weight = 2 + cost = 30 + requirements = list(90,90,70,40,30,20,10,10,10,10) + high_population_requirement = 10 + var/list/roundstart_wizards = list() + +/datum/dynamic_ruleset/roundstart/wizard/acceptable(population=0, threat=0) + if(GLOB.wizardstart.len == 0) + log_admin("Cannot accept Wizard ruleset. Couldn't find any wizard spawn points.") + message_admins("Cannot accept Wizard ruleset. Couldn't find any wizard spawn points.") + return FALSE + return ..() + +/datum/dynamic_ruleset/roundstart/wizard/pre_execute() + if(GLOB.wizardstart.len == 0) + return FALSE + + var/mob/M = pick(candidates) + if (M) + candidates -= M + assigned += M.mind + M.mind.assigned_role = ROLE_WIZARD + M.mind.special_role = ROLE_WIZARD + + return TRUE + +/datum/dynamic_ruleset/roundstart/wizard/execute() + for(var/datum/mind/M in assigned) + M.current.forceMove(pick(GLOB.wizardstart)) + M.add_antag_datum(new antag_datum()) + return TRUE + +////////////////////////////////////////////// +// // +// BLOOD CULT // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/roundstart/bloodcult + name = "Blood Cult" + antag_flag = ROLE_CULTIST + antag_datum = /datum/antagonist/cult + minimum_required_age = 14 + restricted_roles = list("AI", "Cyborg", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Chaplain", "Head of Personnel") + required_candidates = 2 + weight = 3 + cost = 30 + requirements = list(100,90,80,60,40,30,10,10,10,10) + high_population_requirement = 10 + flags = HIGHLANDER_RULESET + var/cultist_cap = list(2,2,2,3,3,4,4,4,4,4) + var/datum/team/cult/main_cult + +/datum/dynamic_ruleset/roundstart/bloodcult/ready(forced = FALSE) + var/indice_pop = min(10,round(mode.roundstart_pop_ready/pop_per_requirement)+1) + required_candidates = cultist_cap[indice_pop] + . = ..() + +/datum/dynamic_ruleset/roundstart/bloodcult/pre_execute() + var/indice_pop = min(10,round(mode.roundstart_pop_ready/pop_per_requirement)+1) + var/cultists = cultist_cap[indice_pop] + for(var/cultists_number = 1 to cultists) + if(candidates.len <= 0) + break + var/mob/M = pick(candidates) + candidates -= M + assigned += M.mind + M.mind.special_role = ROLE_CULTIST + M.mind.restricted_roles = restricted_roles + return TRUE + +/datum/dynamic_ruleset/roundstart/bloodcult/execute() + main_cult = new + for(var/datum/mind/M in assigned) + var/datum/antagonist/cult/new_cultist = new antag_datum() + new_cultist.cult_team = main_cult + new_cultist.give_equipment = TRUE + M.add_antag_datum(new_cultist) + main_cult.setup_objectives() + return TRUE + +/datum/dynamic_ruleset/roundstart/bloodcult/round_result() + ..() + if(main_cult.check_cult_victory()) + SSticker.mode_result = "win - cult win" + SSticker.news_report = CULT_SUMMON + else + SSticker.mode_result = "loss - staff stopped the cult" + SSticker.news_report = CULT_FAILURE + +////////////////////////////////////////////// +// // +// NUCLEAR OPERATIVES // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/roundstart/nuclear + name = "Nuclear Emergency" + antag_flag = ROLE_OPERATIVE + antag_datum = /datum/antagonist/nukeop + var/datum/antagonist/antag_leader_datum = /datum/antagonist/nukeop/leader + minimum_required_age = 14 + restricted_roles = list("Head of Security", "Captain") // Just to be sure that a nukie getting picked won't ever imply a Captain or HoS not getting drafted + required_candidates = 5 + weight = 3 + cost = 40 + requirements = list(90,90,90,80,60,40,30,20,10,10) + high_population_requirement = 10 + flags = HIGHLANDER_RULESET + var/operative_cap = list(2,2,2,3,3,3,4,4,5,5) + var/datum/team/nuclear/nuke_team + +/datum/dynamic_ruleset/roundstart/nuclear/ready(forced = FALSE) + var/indice_pop = min(10,round(mode.roundstart_pop_ready/pop_per_requirement)+1) + required_candidates = operative_cap[indice_pop] + . = ..() + +/datum/dynamic_ruleset/roundstart/nuclear/pre_execute() + // If ready() did its job, candidates should have 5 or more members in it + + var/indice_pop = min(10,round(mode.roundstart_pop_ready/5)+1) + var/operatives = operative_cap[indice_pop] + for(var/operatives_number = 1 to operatives) + if(candidates.len <= 0) + break + var/mob/M = pick(candidates) + candidates -= M + assigned += M.mind + M.mind.assigned_role = "Nuclear Operative" + M.mind.special_role = "Nuclear Operative" + return TRUE + +/datum/dynamic_ruleset/roundstart/nuclear/execute() + var/leader = TRUE + for(var/datum/mind/M in assigned) + if (leader) + leader = FALSE + var/datum/antagonist/nukeop/leader/new_op = M.add_antag_datum(antag_leader_datum) + nuke_team = new_op.nuke_team + else + var/datum/antagonist/nukeop/new_op = new antag_datum() + M.add_antag_datum(new_op) + return TRUE + +/datum/dynamic_ruleset/roundstart/nuclear/round_result() + var result = nuke_team.get_result() + switch(result) + if(NUKE_RESULT_FLUKE) + SSticker.mode_result = "loss - syndicate nuked - disk secured" + SSticker.news_report = NUKE_SYNDICATE_BASE + if(NUKE_RESULT_NUKE_WIN) + SSticker.mode_result = "win - syndicate nuke" + SSticker.news_report = STATION_NUKED + if(NUKE_RESULT_NOSURVIVORS) + SSticker.mode_result = "halfwin - syndicate nuke - did not evacuate in time" + SSticker.news_report = STATION_NUKED + if(NUKE_RESULT_WRONG_STATION) + SSticker.mode_result = "halfwin - blew wrong station" + SSticker.news_report = NUKE_MISS + if(NUKE_RESULT_WRONG_STATION_DEAD) + SSticker.mode_result = "halfwin - blew wrong station - did not evacuate in time" + SSticker.news_report = NUKE_MISS + if(NUKE_RESULT_CREW_WIN_SYNDIES_DEAD) + SSticker.mode_result = "loss - evacuation - disk secured - syndi team dead" + SSticker.news_report = OPERATIVES_KILLED + if(NUKE_RESULT_CREW_WIN) + SSticker.mode_result = "loss - evacuation - disk secured" + SSticker.news_report = OPERATIVES_KILLED + if(NUKE_RESULT_DISK_LOST) + SSticker.mode_result = "halfwin - evacuation - disk not secured" + SSticker.news_report = OPERATIVE_SKIRMISH + if(NUKE_RESULT_DISK_STOLEN) + SSticker.mode_result = "halfwin - detonation averted" + SSticker.news_report = OPERATIVE_SKIRMISH + else + SSticker.mode_result = "halfwin - interrupted" + SSticker.news_report = OPERATIVE_SKIRMISH + +////////////////////////////////////////////// +// // +// REVS // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/roundstart/delayed/revs + name = "Revolution" + persistent = TRUE + antag_flag = ROLE_REV_HEAD + antag_flag_override = ROLE_REV + antag_datum = /datum/antagonist/rev/head + minimum_required_age = 14 + restricted_roles = list("AI", "Cyborg", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director") + required_candidates = 3 + weight = 2 + cost = 35 + requirements = list(101,101,70,40,30,20,10,10,10,10) + high_population_requirement = 10 + delay = 5 MINUTES + flags = HIGHLANDER_RULESET + // I give up, just there should be enough heads with 35 players... + minimum_players = 35 + var/datum/team/revolution/revolution + var/finished = 0 + +/datum/dynamic_ruleset/roundstart/delayed/revs/execute() + var/max_canditates = 4 + revolution = new() + for(var/i = 1 to max_canditates) + if(candidates.len <= 0) + break + var/mob/M = pick(candidates) + candidates -= M + assigned += M.mind + M.mind.restricted_roles = restricted_roles + M.mind.special_role = antag_flag + var/datum/antagonist/rev/head/new_head = new antag_datum() + new_head.give_flash = TRUE + new_head.give_hud = TRUE + new_head.remove_clumsy = TRUE + M.mind.add_antag_datum(new_head,revolution) + + revolution.update_objectives() + revolution.update_heads() + SSshuttle.registerHostileEnvironment(src) + + return TRUE + +/datum/dynamic_ruleset/roundstart/delayed/revs/rule_process() + if(check_rev_victory()) + finished = 1 + else if(check_heads_victory()) + finished = 2 + return + +/datum/dynamic_ruleset/roundstart/delayed/revs/check_finished() + if(CONFIG_GET(keyed_list/continuous)["revolution"]) + if(finished) + SSshuttle.clearHostileEnvironment(src) + return ..() + if(finished != 0) + return TRUE + else + return ..() + +/datum/dynamic_ruleset/roundstart/delayed/revs/proc/check_rev_victory() + for(var/datum/objective/mutiny/objective in revolution.objectives) + if(!(objective.check_completion())) + return FALSE + return TRUE + +/datum/dynamic_ruleset/roundstart/delayed/revs/proc/check_heads_victory() + for(var/datum/mind/rev_mind in revolution.head_revolutionaries()) + var/turf/T = get_turf(rev_mind.current) + if(!considered_afk(rev_mind) && considered_alive(rev_mind) && is_station_level(T.z)) + if(ishuman(rev_mind.current) || ismonkey(rev_mind.current)) + return FALSE + return TRUE + +/datum/dynamic_ruleset/roundstart/delayed/revs/round_result() + if(finished == 1) + SSticker.mode_result = "win - heads killed" + SSticker.news_report = REVS_WIN + else if(finished == 2) + SSticker.mode_result = "loss - rev heads killed" + SSticker.news_report = REVS_LOSE + +// Admin only rulesets. The threat requirement is 101 so it is not possible to roll them. + +////////////////////////////////////////////// +// // +// EXTENDED // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/roundstart/extended + name = "Extended" + antag_flag = null + antag_datum = null + restricted_roles = list() + required_candidates = 0 + weight = 3 + cost = 0 + requirements = list(101,101,101,101,101,101,101,101,101,101) + high_population_requirement = 101 + +/datum/dynamic_ruleset/roundstart/extended/pre_execute() + message_admins("Starting a round of extended.") + log_game("Starting a round of extended.") + mode.spend_threat(mode.threat) + return TRUE + +////////////////////////////////////////////// +// // +// CLOCKCULT // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/roundstart/clockcult + name = "Clockcult" + antag_flag = ROLE_SERVANT_OF_RATVAR + antag_datum = /datum/antagonist/clockcult + restricted_roles = list("AI", "Cyborg", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Chaplain", "Head of Personnel") + required_candidates = 4 + weight = 3 + cost = 0 + requirements = list(101,101,101,101,101,101,101,101,101,101) + high_population_requirement = 101 + flags = HIGHLANDER_RULESET + var/ark_time + +/datum/dynamic_ruleset/roundstart/clockcult/pre_execute() + var/list/errorList = list() + var/list/reebes = SSmapping.LoadGroup(errorList, "Reebe", "map_files/generic", "City_of_Cogs.dmm", default_traits = ZTRAITS_REEBE, silent = TRUE) + if(errorList.len) + message_admins("Reebe failed to load!") + log_game("Reebe failed to load!") + return FALSE + for(var/datum/parsed_map/PM in reebes) + PM.initTemplateBounds() + + var/starter_servants = 4 + var/number_players = num_players() + if(number_players > 30) + number_players -= 30 + starter_servants += round(number_players / 10) + starter_servants = min(starter_servants, 8) + for (var/i in 1 to starter_servants) + var/mob/servant = pick(candidates) + candidates -= servant + assigned += servant.mind + servant.mind.assigned_role = ROLE_SERVANT_OF_RATVAR + servant.mind.special_role = ROLE_SERVANT_OF_RATVAR + ark_time = 30 + round((number_players / 5)) + ark_time = min(ark_time, 35) + return TRUE + +/datum/dynamic_ruleset/roundstart/clockcult/execute() + var/list/spread_out_spawns = GLOB.servant_spawns.Copy() + for(var/datum/mind/servant in assigned) + var/mob/S = servant.current + if(!spread_out_spawns.len) + spread_out_spawns = GLOB.servant_spawns.Copy() + log_game("[key_name(servant)] was made an initial servant of Ratvar") + var/turf/T = pick_n_take(spread_out_spawns) + S.forceMove(T) + greet_servant(S) + equip_servant(S) + add_servant_of_ratvar(S, TRUE) + var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = GLOB.ark_of_the_clockwork_justiciar //that's a mouthful + G.final_countdown(ark_time) + return TRUE + +/datum/dynamic_ruleset/roundstart/clockcult/proc/greet_servant(mob/M) //Description of their role + if(!M) + return 0 + to_chat(M, "You are a servant of Ratvar, the Clockwork Justiciar!") + to_chat(M, "You have approximately [ark_time] minutes until the Ark activates.") + to_chat(M, "Unlock Script scripture by converting a new servant.") + to_chat(M, "Application scripture will be unlocked halfway until the Ark's activation.") + M.playsound_local(get_turf(M), 'sound/ambience/antag/clockcultalr.ogg', 100, FALSE, pressure_affected = FALSE) + return 1 + +/datum/dynamic_ruleset/roundstart/clockcult/proc/equip_servant(mob/living/M) //Grants a clockwork slab to the mob, with one of each component + if(!M || !ishuman(M)) + return FALSE + var/mob/living/carbon/human/L = M + L.equipOutfit(/datum/outfit/servant_of_ratvar) + var/obj/item/clockwork/slab/S = new + var/slot = "At your feet" + var/list/slots = list("In your left pocket" = SLOT_L_STORE, "In your right pocket" = SLOT_R_STORE, "In your backpack" = SLOT_IN_BACKPACK, "On your belt" = SLOT_BELT) + if(ishuman(L)) + var/mob/living/carbon/human/H = L + slot = H.equip_in_one_of_slots(S, slots) + if(slot == "In your backpack") + slot = "In your [H.back.name]" + if(slot == "At your feet") + if(!S.forceMove(get_turf(L))) + qdel(S) + if(S && !QDELETED(S)) + to_chat(L, "There is a paper in your backpack! It'll tell you if anything's changed, as well as what to expect.") + to_chat(L, "[slot] is a clockwork slab, a multipurpose tool used to construct machines and invoke ancient words of power. If this is your first time \ + as a servant, you can find a concise tutorial in the Recollection category of its interface.") + to_chat(L, "If you want more information, you can read the wiki page to learn more.") + return TRUE + return FALSE + +/datum/dynamic_ruleset/roundstart/clockcult/round_result() + if(GLOB.clockwork_gateway_activated) + SSticker.news_report = CLOCK_SUMMON + SSticker.mode_result = "win - servants completed their objective (summon ratvar)" + else + SSticker.news_report = CULT_FAILURE + SSticker.mode_result = "loss - servants failed their objective (summon ratvar)" + +////////////////////////////////////////////// +// // +// CLOWN OPS // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/roundstart/nuclear/clown_ops + name = "Clown Ops" + antag_datum = /datum/antagonist/nukeop/clownop + antag_leader_datum = /datum/antagonist/nukeop/leader/clownop + requirements = list(101,101,101,101,101,101,101,101,101,101) + high_population_requirement = 101 + +/datum/dynamic_ruleset/roundstart/nuclear/clown_ops/pre_execute() + . = ..() + if(.) + for(var/obj/machinery/nuclearbomb/syndicate/S in GLOB.nuke_list) + var/turf/T = get_turf(S) + if(T) + qdel(S) + new /obj/machinery/nuclearbomb/syndicate/bananium(T) + for(var/datum/mind/V in assigned) + V.assigned_role = "Clown Operative" + V.special_role = "Clown Operative" + +////////////////////////////////////////////// +// // +// DEVIL // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/roundstart/devil + name = "Devil" + antag_flag = ROLE_DEVIL + antag_datum = /datum/antagonist/devil + restricted_roles = list("Lawyer", "Curator", "Chaplain", "Head of Security", "Captain", "AI") + required_candidates = 1 + weight = 3 + cost = 0 + requirements = list(101,101,101,101,101,101,101,101,101,101) + high_population_requirement = 101 + var/devil_limit = 4 // Hard limit on devils if scaling is turned off + +/datum/dynamic_ruleset/roundstart/devil/pre_execute() + var/tsc = CONFIG_GET(number/traitor_scaling_coeff) + var/num_devils = 1 + + if(tsc) + num_devils = max(required_candidates, min(round(num_players() / (tsc * 3)) + 2, round(num_players() / (tsc * 1.5)))) + else + num_devils = max(required_candidates, min(num_players(), devil_limit)) + + for(var/j = 0, j < num_devils, j++) + if (!candidates.len) + break + var/mob/devil = pick(candidates) + assigned += devil + candidates -= devil + devil.mind.special_role = ROLE_DEVIL + devil.mind.restricted_roles = restricted_roles + + log_game("[key_name(devil)] has been selected as a devil") + return TRUE + +/datum/dynamic_ruleset/roundstart/devil/execute() + for(var/datum/mind/devil in assigned) + add_devil(devil.current, ascendable = TRUE) + add_devil_objectives(devil,2) + return TRUE + +/datum/dynamic_ruleset/roundstart/devil/proc/add_devil_objectives(datum/mind/devil_mind, quantity) + var/list/validtypes = list(/datum/objective/devil/soulquantity, /datum/objective/devil/soulquality, /datum/objective/devil/sintouch, /datum/objective/devil/buy_target) + var/datum/antagonist/devil/D = devil_mind.has_antag_datum(/datum/antagonist/devil) + for(var/i = 1 to quantity) + var/type = pick(validtypes) + var/datum/objective/devil/objective = new type(null) + objective.owner = devil_mind + D.objectives += objective + if(!istype(objective, /datum/objective/devil/buy_target)) + validtypes -= type + else + objective.find_target() + +////////////////////////////////////////////// +// // +// MONKEY // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/roundstart/monkey + name = "Monkey" + antag_flag = ROLE_MONKEY + antag_datum = /datum/antagonist/monkey/leader + restricted_roles = list("Cyborg", "AI") + required_candidates = 1 + weight = 3 + cost = 0 + requirements = list(101,101,101,101,101,101,101,101,101,101) + high_population_requirement = 101 + var/players_per_carrier = 30 + var/monkeys_to_win = 1 + var/escaped_monkeys = 0 + var/datum/team/monkey/monkey_team + +/datum/dynamic_ruleset/roundstart/monkey/pre_execute() + var/carriers_to_make = max(round(num_players()/players_per_carrier, 1), 1) + + for(var/j = 0, j < carriers_to_make, j++) + if (!candidates.len) + break + var/mob/carrier = pick(candidates) + candidates -= carrier + assigned += carrier.mind + carrier.mind.special_role = "Monkey Leader" + carrier.mind.restricted_roles = restricted_roles + log_game("[key_name(carrier)] has been selected as a Jungle Fever carrier") + return TRUE + +/datum/dynamic_ruleset/roundstart/monkey/execute() + for(var/datum/mind/carrier in assigned) + var/datum/antagonist/monkey/M = add_monkey_leader(carrier) + if(M) + monkey_team = M.monkey_team + return TRUE + +/datum/dynamic_ruleset/roundstart/monkey/proc/check_monkey_victory() + if(SSshuttle.emergency.mode != SHUTTLE_ENDGAME) + return FALSE + var/datum/disease/D = new /datum/disease/transformation/jungle_fever() + for(var/mob/living/carbon/monkey/M in GLOB.alive_mob_list) + if (M.HasDisease(D)) + if(M.onCentCom() || M.onSyndieBase()) + escaped_monkeys++ + if(escaped_monkeys >= monkeys_to_win) + return TRUE + else + return FALSE + +// This does not get called. Look into making it work. +/datum/dynamic_ruleset/roundstart/monkey/round_result() + if(check_monkey_victory()) + SSticker.mode_result = "win - monkey win" + else + SSticker.mode_result = "loss - staff stopped the monkeys" + +////////////////////////////////////////////// +// // +// METEOR // +// // +////////////////////////////////////////////// + +/datum/dynamic_ruleset/roundstart/meteor + name = "Meteor" + persistent = TRUE + required_candidates = 0 + weight = 3 + cost = 0 + requirements = list(101,101,101,101,101,101,101,101,101,101) + high_population_requirement = 101 + var/meteordelay = 2000 + var/nometeors = 0 + var/rampupdelta = 5 + +/datum/dynamic_ruleset/roundstart/meteor/rule_process() + if(nometeors || meteordelay > world.time - SSticker.round_start_time) + return + + var/list/wavetype = GLOB.meteors_normal + var/meteorminutes = (world.time - SSticker.round_start_time - meteordelay) / 10 / 60 + + if (prob(meteorminutes)) + wavetype = GLOB.meteors_threatening + + if (prob(meteorminutes/2)) + wavetype = GLOB.meteors_catastrophic + + var/ramp_up_final = CLAMP(round(meteorminutes/rampupdelta), 1, 10) + + spawn_meteors(ramp_up_final, wavetype) diff --git a/code/game/gamemodes/dynamic/readme.md b/code/game/gamemodes/dynamic/readme.md new file mode 100644 index 0000000000..6bd064cf7c --- /dev/null +++ b/code/game/gamemodes/dynamic/readme.md @@ -0,0 +1,57 @@ +# DYNAMIC + +## ROUNDSTART + +Dynamic rolls threat based on a special sauce formula: +"dynamic_curve_width \* tan((3.1416 \* (rand() - 0.5) \* 57.2957795)) + dynamic_curve_centre" + +Latejoin and midround injection cooldowns are set using exponential distribution between +5 minutes and 25 for latejoin +15 minutes and 35 for midround +this value is then added to world.time and assigned to the injection cooldown variables. + +rigged_roundstart() is called instead if there are forced rules (an admin set the mode) + +can_start() -> pre_setup() -> roundstart() OR rigged_roundstart() -> picking_roundstart_rule(drafted_rules) -> post_setup() + +## PROCESS + +Calls rule_process on every rule which is in the current_rules list. +Every sixty seconds, update_playercounts() +Midround injection time is checked against world.time to see if an injection should happen. +If midround injection time is lower than world.time, it updates playercounts again, then tries to inject and generates a new cooldown regardless of whether a rule is picked. + +## LATEJOIN + +make_antag_chance(newPlayer) -> [For each latespawn rule...] +-> acceptable(living players, threat_level) -> trim_candidates() -> ready(forced=FALSE) +**If true, add to drafted rules +**NOTE that acceptable uses threat_level not threat! +**NOTE Latejoin timer is ONLY reset if at least one rule was drafted. +**NOTE the new_player.dm AttemptLateSpawn() calls OnPostSetup for all roles (unless assigned role is MODE) +[After collecting all draftble rules...] +-> picking_latejoin_ruleset(drafted_rules) -> spend threat -> ruleset.execute() +## MIDROUND +process() -> [For each midround rule...] +-> acceptable(living players, threat_level) -> trim_candidates() -> ready(forced=FALSE) +[After collecting all draftble rules...] +-> picking_midround_ruleset(drafted_rules) -> spend threat -> ruleset.execute() +## FORCED +For latejoin, it simply sets forced_latejoin_rule +make_antag_chance(newPlayer) -> trim_candidates() -> ready(forced=TRUE) **NOTE no acceptable() call +For midround, calls the below proc with forced = TRUE +picking_specific_rule(ruletype,forced) -> forced OR acceptable(living_players, threat_level) -> trim_candidates() -> ready(forced) -> spend threat -> execute() +**NOTE specific rule can be called by RS traitor->MR autotraitor w/ forced=FALSE +**NOTE that due to short circuiting acceptable() need not be called if forced. +## RULESET +acceptable(population,threat) just checks if enough threat_level for population indice. +**NOTE that we currently only send threat_level as the second arg, not threat. +ready(forced) checks if enough candidates and calls the map's map_ruleset(dynamic_ruleset) at the parent level +trim_candidates() varies significantly according to the ruleset type +Roundstart: All candidates are new_player mobs. Check them for standard stuff: connected, desire role, not banned, etc. +**NOTE Roundstart deals with both candidates (trimmed list of valid players) and mode.candidates (everyone readied up). Don't confuse them! +Latejoin: Only one candidate, the latejoiner. Standard checks. +Midround: Instead of building a single list candidates, candidates contains four lists: living, dead, observing, and living antags. Standard checks in trim_list(list). +Midround - Rulesets have additional types +/from_ghosts: execute() -> send_applications() -> review_applications() -> finish_setup(mob/newcharacter, index) -> setup_role(role) +**NOTE: execute() here adds dead players and observers to candidates list diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index d16cbebb2a..cc992fefbc 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -558,3 +558,7 @@ SSticker.news_report = STATION_EVACUATED if(SSshuttle.emergency.is_hijacked()) SSticker.news_report = SHUTTLE_HIJACK + +/// Mode specific admin panel. +/datum/game_mode/proc/admin_panel() + return diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index b400f44b98..555c35980d 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -423,6 +423,25 @@ if(GLOB.master_mode == "secret") dat += "(Force Secret Mode)
" + if(GLOB.master_mode == "dynamic") + if(SSticker.current_state <= GAME_STATE_PREGAME) + dat += "(Force Roundstart Rulesets)
" + if (GLOB.dynamic_forced_roundstart_ruleset.len > 0) + for(var/datum/dynamic_ruleset/roundstart/rule in GLOB.dynamic_forced_roundstart_ruleset) + dat += {"-> [rule.name] <-
"} + dat += "(Clear Rulesets)
" + dat += "(Dynamic mode options)
" + else if (SSticker.IsRoundInProgress()) + dat += "(Force Next Latejoin Ruleset)
" + if (SSticker && SSticker.mode && istype(SSticker.mode,/datum/game_mode/dynamic)) + var/datum/game_mode/dynamic/mode = SSticker.mode + if (mode.forced_latejoin_rule) + dat += {"-> [mode.forced_latejoin_rule.name] <-
"} + dat += "(Execute Midround Ruleset!)
" + dat += "
" + if(SSticker.IsRoundInProgress()) + dat += "(Game Mode Panel)
" + dat += {"
Create Object
@@ -839,6 +858,44 @@ browser.set_content(dat.Join()) browser.open() +/datum/admins/proc/dynamic_mode_options(mob/user) + var/dat = {" +

Dynamic Mode Options


+
+

Common options

+ All these options can be changed midround.
+
+ Force extended: - Option is [GLOB.dynamic_forced_extended ? "ON" : "OFF"]. +
This will force the round to be extended. No rulesets will be drafted.
+
+ No stacking: - Option is [GLOB.dynamic_no_stacking ? "ON" : "OFF"]. +
Unless the threat goes above [GLOB.dynamic_stacking_limit], only one "round-ender" ruleset will be drafted.
+
+ Classic secret mode: - Option is [GLOB.dynamic_classic_secret ? "ON" : "OFF"]. +
Only one roundstart ruleset will be drafted. Only traitors and minor roles will latespawn.
+
+
+ Forced threat level: Current value : [GLOB.dynamic_forced_threat_level]. +
The value threat is set to if it is higher than -1.
+
+ High population limit: Current value : [GLOB.dynamic_high_pop_limit]. +
The threshold at which "high population override" will be in effect.
+
+ Stacking threeshold: Current value : [GLOB.dynamic_stacking_limit]. +
The threshold at which "round-ender" rulesets will stack. A value higher than 100 ensure this never happens.
+

Advanced parameters

+ Curve centre: -> [GLOB.dynamic_curve_centre] <-
+ Curve width: -> [GLOB.dynamic_curve_width] <-
+ Latejoin injection delay:
+ Minimum: -> [GLOB.dynamic_latejoin_delay_min / 60 / 10] <- Minutes
+ Maximum: -> [GLOB.dynamic_latejoin_delay_max / 60 / 10] <- Minutes
+ Midround injection delay:
+ Minimum: -> [GLOB.dynamic_midround_delay_min / 60 / 10] <- Minutes
+ Maximum: -> [GLOB.dynamic_midround_delay_max / 60 / 10] <- Minutes
+ "} + + user << browse(dat, "window=dyn_mode_options;size=900x650") + /datum/admins/proc/create_or_modify_area() set category = "Debug" set name = "Create or modify area" diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index d881044757..91df9ef85c 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -291,6 +291,11 @@ else if(href_list["editrights"]) edit_rights_topic(href_list) + else if(href_list["gamemode_panel"]) + if(!check_rights(R_ADMIN)) + return + SSticker.mode.admin_panel() + else if(href_list["call_shuttle"]) if(!check_rights(R_ADMIN)) return @@ -1342,6 +1347,291 @@ else if(href_list["f_secret"]) return HandleFSecret() + + else if(href_list["f_dynamic_roundstart"]) + if(!check_rights(R_ADMIN)) + return + if(SSticker && SSticker.mode) + return alert(usr, "The game has already started.", null, null, null, null) + if(GLOB.master_mode != "dynamic") + return alert(usr, "The game mode has to be dynamic mode.", null, null, null, null) + var/roundstart_rules = list() + for (var/rule in subtypesof(/datum/dynamic_ruleset/roundstart)) + var/datum/dynamic_ruleset/roundstart/newrule = new rule() + roundstart_rules[newrule.name] = newrule + var/added_rule = input(usr,"What ruleset do you want to force? This will bypass threat level and population restrictions.", "Rigging Roundstart", null) as null|anything in roundstart_rules + if (added_rule) + GLOB.dynamic_forced_roundstart_ruleset += roundstart_rules[added_rule] + log_admin("[key_name(usr)] set [added_rule] to be a forced roundstart ruleset.") + message_admins("[key_name(usr)] set [added_rule] to be a forced roundstart ruleset.", 1) + Game() + + else if(href_list["f_dynamic_roundstart_clear"]) + if(!check_rights(R_ADMIN)) + return + GLOB.dynamic_forced_roundstart_ruleset = list() + Game() + log_admin("[key_name(usr)] cleared the rigged roundstart rulesets. The mode will pick them as normal.") + message_admins("[key_name(usr)] cleared the rigged roundstart rulesets. The mode will pick them as normal.", 1) + + else if(href_list["f_dynamic_roundstart_remove"]) + if(!check_rights(R_ADMIN)) + return + var/datum/dynamic_ruleset/roundstart/rule = locate(href_list["f_dynamic_roundstart_remove"]) + GLOB.dynamic_forced_roundstart_ruleset -= rule + Game() + log_admin("[key_name(usr)] removed [rule] from the forced roundstart rulesets.") + message_admins("[key_name(usr)] removed [rule] from the forced roundstart rulesets.", 1) + + else if(href_list["f_dynamic_latejoin"]) + if(!check_rights(R_ADMIN)) + return + if(!SSticker || !SSticker.mode) + return alert(usr, "The game must start first.", null, null, null, null) + if(GLOB.master_mode != "dynamic") + return alert(usr, "The game mode has to be dynamic mode!", null, null, null, null) + var/latejoin_rules = list() + for (var/rule in subtypesof(/datum/dynamic_ruleset/latejoin)) + var/datum/dynamic_ruleset/latejoin/newrule = new rule() + latejoin_rules[newrule.name] = newrule + var/added_rule = input(usr,"What ruleset do you want to force upon the next latejoiner? This will bypass threat level and population restrictions.", "Rigging Latejoin", null) as null|anything in latejoin_rules + if (added_rule) + var/datum/game_mode/dynamic/mode = SSticker.mode + mode.forced_latejoin_rule = latejoin_rules[added_rule] + log_admin("[key_name(usr)] set [added_rule] to proc on the next latejoin.") + message_admins("[key_name(usr)] set [added_rule] to proc on the next latejoin.", 1) + Game() + + else if(href_list["f_dynamic_latejoin_clear"]) + if(!check_rights(R_ADMIN)) + return + if (SSticker && SSticker.mode && istype(SSticker.mode,/datum/game_mode/dynamic)) + var/datum/game_mode/dynamic/mode = SSticker.mode + mode.forced_latejoin_rule = null + Game() + log_admin("[key_name(usr)] cleared the forced latejoin ruleset.") + message_admins("[key_name(usr)] cleared the forced latejoin ruleset.", 1) + + else if(href_list["f_dynamic_midround"]) + if(!check_rights(R_ADMIN)) + return + if(!SSticker || !SSticker.mode) + return alert(usr, "The game must start first.", null, null, null, null) + if(GLOB.master_mode != "dynamic") + return alert(usr, "The game mode has to be dynamic mode!", null, null, null, null) + var/midround_rules = list() + for (var/rule in subtypesof(/datum/dynamic_ruleset/midround)) + var/datum/dynamic_ruleset/midround/newrule = new rule() + midround_rules[newrule.name] = rule + var/added_rule = input(usr,"What ruleset do you want to force right now? This will bypass threat level and population restrictions.", "Execute Ruleset", null) as null|anything in midround_rules + if (added_rule) + var/datum/game_mode/dynamic/mode = SSticker.mode + log_admin("[key_name(usr)] executed the [added_rule] ruleset.") + message_admins("[key_name(usr)] executed the [added_rule] ruleset.", 1) + mode.picking_specific_rule(midround_rules[added_rule],1) + + else if (href_list["f_dynamic_options"]) + if(!check_rights(R_ADMIN)) + return + + if(SSticker && SSticker.mode) + return alert(usr, "The game has already started.", null, null, null, null) + if(GLOB.master_mode != "dynamic") + return alert(usr, "The game mode has to be dynamic mode!", null, null, null, null) + + dynamic_mode_options(usr) + + else if(href_list["f_dynamic_roundstart_centre"]) + if(!check_rights(R_ADMIN)) + return + if(SSticker && SSticker.mode) + return alert(usr, "The game has already started.", null, null, null, null) + if(GLOB.master_mode != "dynamic") + return alert(usr, "The game mode has to be dynamic mode!", null, null, null, null) + + var/new_centre = input(usr,"Change the centre of the dynamic mode threat curve. A negative value will give a more peaceful round ; a positive value, a round with higher threat. Any number between -5 and +5 is allowed.", "Change curve centre", null) as num + if (new_centre < -5 || new_centre > 5) + return alert(usr, "Only values between -5 and +5 are allowed.", null, null, null, null) + + log_admin("[key_name(usr)] changed the distribution curve center to [new_centre].") + message_admins("[key_name(usr)] changed the distribution curve center to [new_centre]", 1) + GLOB.dynamic_curve_centre = new_centre + dynamic_mode_options(usr) + + else if(href_list["f_dynamic_roundstart_width"]) + if(!check_rights(R_ADMIN)) + return + if(SSticker && SSticker.mode) + return alert(usr, "The game has already started.", null, null, null, null) + if(GLOB.master_mode != "dynamic") + return alert(usr, "The game mode has to be dynamic mode!", null, null, null, null) + + var/new_width = input(usr,"Change the width of the dynamic mode threat curve. A higher value will favour extreme rounds ; a lower value, a round closer to the average. Any Number between 0.5 and 4 are allowed.", "Change curve width", null) as num + if (new_width < 0.5 || new_width > 4) + return alert(usr, "Only values between 0.5 and +2.5 are allowed.", null, null, null, null) + + log_admin("[key_name(usr)] changed the distribution curve width to [new_width].") + message_admins("[key_name(usr)] changed the distribution curve width to [new_width]", 1) + GLOB.dynamic_curve_width = new_width + dynamic_mode_options(usr) + + else if(href_list["f_dynamic_roundstart_latejoin_min"]) + if(!check_rights(R_ADMIN)) + return + if(SSticker && SSticker.mode) + return alert(usr, "The game has already started.", null, null, null, null) + if(GLOB.master_mode != "dynamic") + return alert(usr, "The game mode has to be dynamic mode!", null, null, null, null) + var/new_min = input(usr,"Change the minimum delay of latejoin injection in minutes.", "Change latejoin injection delay minimum", null) as num + if(new_min <= 0) + return alert(usr, "The minimum can't be zero or lower.", null, null, null, null) + if((new_min MINUTES) > GLOB.dynamic_latejoin_delay_max) + return alert(usr, "The minimum must be lower than the maximum.", null, null, null, null) + + log_admin("[key_name(usr)] changed the latejoin injection minimum delay to [new_min] minutes.") + message_admins("[key_name(usr)] changed the latejoin injection minimum delay to [new_min] minutes", 1) + GLOB.dynamic_latejoin_delay_min = (new_min MINUTES) + dynamic_mode_options(usr) + + else if(href_list["f_dynamic_roundstart_latejoin_max"]) + if(!check_rights(R_ADMIN)) + return + if(SSticker && SSticker.mode) + return alert(usr, "The game has already started.", null, null, null, null) + if(GLOB.master_mode != "dynamic") + return alert(usr, "The game mode has to be dynamic mode!", null, null, null, null) + var/new_max = input(usr,"Change the maximum delay of latejoin injection in minutes.", "Change latejoin injection delay maximum", null) as num + if(new_max <= 0) + return alert(usr, "The maximum can't be zero or lower.", null, null, null, null) + if((new_max MINUTES) < GLOB.dynamic_latejoin_delay_min) + return alert(usr, "The maximum must be higher than the minimum.", null, null, null, null) + + log_admin("[key_name(usr)] changed the latejoin injection maximum delay to [new_max] minutes.") + message_admins("[key_name(usr)] changed the latejoin injection maximum delay to [new_max] minutes", 1) + GLOB.dynamic_latejoin_delay_max = (new_max MINUTES) + dynamic_mode_options(usr) + + else if(href_list["f_dynamic_roundstart_midround_min"]) + if(!check_rights(R_ADMIN)) + return + if(SSticker && SSticker.mode) + return alert(usr, "The game has already started.", null, null, null, null) + if(GLOB.master_mode != "dynamic") + return alert(usr, "The game mode has to be dynamic mode!", null, null, null, null) + var/new_min = input(usr,"Change the minimum delay of midround injection in minutes.", "Change midround injection delay minimum", null) as num + if(new_min <= 0) + return alert(usr, "The minimum can't be zero or lower.", null, null, null, null) + if((new_min MINUTES) > GLOB.dynamic_midround_delay_max) + return alert(usr, "The minimum must be lower than the maximum.", null, null, null, null) + + log_admin("[key_name(usr)] changed the midround injection minimum delay to [new_min] minutes.") + message_admins("[key_name(usr)] changed the midround injection minimum delay to [new_min] minutes", 1) + GLOB.dynamic_midround_delay_min = (new_min MINUTES) + dynamic_mode_options(usr) + + else if(href_list["f_dynamic_roundstart_midround_max"]) + if(!check_rights(R_ADMIN)) + return + if(SSticker && SSticker.mode) + return alert(usr, "The game has already started.", null, null, null, null) + if(GLOB.master_mode != "dynamic") + return alert(usr, "The game mode has to be dynamic mode!", null, null, null, null) + var/new_max = input(usr,"Change the maximum delay of midround injection in minutes.", "Change midround injection delay maximum", null) as num + if(new_max <= 0) + return alert(usr, "The maximum can't be zero or lower.", null, null, null, null) + if((new_max MINUTES) > GLOB.dynamic_midround_delay_max) + return alert(usr, "The maximum must be higher than the minimum.", null, null, null, null) + + log_admin("[key_name(usr)] changed the midround injection maximum delay to [new_max] minutes.") + message_admins("[key_name(usr)] changed the midround injection maximum delay to [new_max] minutes", 1) + GLOB.dynamic_midround_delay_max = (new_max MINUTES) + dynamic_mode_options(usr) + + else if(href_list["f_dynamic_force_extended"]) + if(!check_rights(R_ADMIN)) + return + + if(GLOB.master_mode != "dynamic") + return alert(usr, "The game mode has to be dynamic mode!", null, null, null, null) + + GLOB.dynamic_forced_extended = !GLOB.dynamic_forced_extended + log_admin("[key_name(usr)] set 'forced_extended' to [GLOB.dynamic_forced_extended].") + message_admins("[key_name(usr)] set 'forced_extended' to [GLOB.dynamic_forced_extended].") + dynamic_mode_options(usr) + + else if(href_list["f_dynamic_no_stacking"]) + if(!check_rights(R_ADMIN)) + return + + if(GLOB.master_mode != "dynamic") + return alert(usr, "The game mode has to be dynamic mode!", null, null, null, null) + + GLOB.dynamic_no_stacking = !GLOB.dynamic_no_stacking + log_admin("[key_name(usr)] set 'no_stacking' to [GLOB.dynamic_no_stacking].") + message_admins("[key_name(usr)] set 'no_stacking' to [GLOB.dynamic_no_stacking].") + dynamic_mode_options(usr) + + else if(href_list["f_dynamic_classic_secret"]) + if(!check_rights(R_ADMIN)) + return + + if(GLOB.master_mode != "dynamic") + return alert(usr, "The game mode has to be dynamic mode!", null, null, null, null) + + GLOB.dynamic_classic_secret = !GLOB.dynamic_classic_secret + log_admin("[key_name(usr)] set 'classic_secret' to [GLOB.dynamic_classic_secret].") + message_admins("[key_name(usr)] set 'classic_secret' to [GLOB.dynamic_classic_secret].") + dynamic_mode_options(usr) + + else if(href_list["f_dynamic_stacking_limit"]) + if(!check_rights(R_ADMIN)) + return + + if(GLOB.master_mode != "dynamic") + return alert(usr, "The game mode has to be dynamic mode!", null, null, null, null) + + GLOB.dynamic_stacking_limit = input(usr,"Change the threat limit at which round-endings rulesets will start to stack.", "Change stacking limit", null) as num + log_admin("[key_name(usr)] set 'stacking_limit' to [GLOB.dynamic_stacking_limit].") + message_admins("[key_name(usr)] set 'stacking_limit' to [GLOB.dynamic_stacking_limit].") + dynamic_mode_options(usr) + + else if(href_list["f_dynamic_high_pop_limit"]) + if(!check_rights(R_ADMIN)) + return + + if(SSticker && SSticker.mode) + return alert(usr, "The game has already started.", null, null, null, null) + + if(GLOB.master_mode != "dynamic") + return alert(usr, "The game mode has to be dynamic mode!", null, null, null, null) + + var/new_value = input(usr, "Enter the high-pop override threshold for dynamic mode.", "High pop override") as num + if (new_value < 0) + return alert(usr, "Only positive values allowed!", null, null, null, null) + GLOB.dynamic_high_pop_limit = new_value + + log_admin("[key_name(usr)] set 'high_pop_limit' to [GLOB.dynamic_high_pop_limit].") + message_admins("[key_name(usr)] set 'high_pop_limit' to [GLOB.dynamic_high_pop_limit].") + dynamic_mode_options(usr) + + else if(href_list["f_dynamic_forced_threat"]) + if(!check_rights(R_ADMIN)) + return + + if(SSticker && SSticker.mode) + return alert(usr, "The game has already started.", null, null, null, null) + + if(GLOB.master_mode != "dynamic") + return alert(usr, "The game mode has to be dynamic mode!", null, null, null, null) + + var/new_value = input(usr, "Enter the forced threat level for dynamic mode.", "Forced threat level") as num + if (new_value > 100) + return alert(usr, "The value must be be under 100.", null, null, null, null) + GLOB.dynamic_forced_threat_level = new_value + + log_admin("[key_name(usr)] set 'forced_threat_level' to [GLOB.dynamic_forced_threat_level].") + message_admins("[key_name(usr)] set 'forced_threat_level' to [GLOB.dynamic_forced_threat_level].") + dynamic_mode_options(usr) else if(href_list["c_mode2"]) if(!check_rights(R_ADMIN|R_SERVER)) diff --git a/tgstation.dme b/tgstation.dme index da990c169a..7ea5546fca 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -544,6 +544,11 @@ #include "code\game\gamemodes\devil\game_mode.dm" #include "code\game\gamemodes\devil\objectives.dm" #include "code\game\gamemodes\devil\devil agent\devil_agent.dm" +#include "code\game\gamemodes\dynamic\dynamic.dm" +#include "code\game\gamemodes\dynamic\dynamic_rulesets.dm" +#include "code\game\gamemodes\dynamic\dynamic_rulesets_latejoin.dm" +#include "code\game\gamemodes\dynamic\dynamic_rulesets_midround.dm" +#include "code\game\gamemodes\dynamic\dynamic_rulesets_roundstart.dm" #include "code\game\gamemodes\extended\extended.dm" #include "code\game\gamemodes\meteor\meteor.dm" #include "code\game\gamemodes\meteor\meteors.dm" @@ -2926,6 +2931,7 @@ #include "modular_citadel\code\modules\arousal\toys\dildos.dm" #include "modular_citadel\code\modules\awaymissions\citadel_ghostrole_spawners.dm" #include "modular_citadel\code\modules\cargo\console.dm" +#include "modular_citadel\code\modules\cargo\packs.dm" #include "modular_citadel\code\modules\client\client_defines.dm" #include "modular_citadel\code\modules\client\client_procs.dm" #include "modular_citadel\code\modules\client\preferences.dm" @@ -2959,6 +2965,7 @@ #include "modular_citadel\code\modules\clothing\under\trek_under.dm" #include "modular_citadel\code\modules\clothing\under\turtlenecks.dm" #include "modular_citadel\code\modules\clothing\under\under.dm" +#include "modular_citadel\code\modules\crafting\recipes.dm" #include "modular_citadel\code\modules\custom_loadout\custom_items.dm" #include "modular_citadel\code\modules\custom_loadout\load_to_mob.dm" #include "modular_citadel\code\modules\custom_loadout\read_from_file.dm" @@ -2983,6 +2990,7 @@ #include "modular_citadel\code\modules\mentor\mentorhelp.dm" #include "modular_citadel\code\modules\mentor\mentorpm.dm" #include "modular_citadel\code\modules\mentor\mentorsay.dm" +#include "modular_citadel\code\modules\mining\mine_items.dm" #include "modular_citadel\code\modules\mining\mining_ruins.dm" #include "modular_citadel\code\modules\mob\cit_emotes.dm" #include "modular_citadel\code\modules\mob\mob.dm" @@ -3040,6 +3048,7 @@ #include "modular_citadel\code\modules\research\designs\xenobio_designs.dm" #include "modular_citadel\code\modules\research\designs\weapon_designs\weapon_designs.dm" #include "modular_citadel\code\modules\research\techweb\_techweb.dm" +#include "modular_citadel\code\modules\research\techweb\all_nodes.dm" #include "modular_citadel\code\modules\research\xenobiology\xenobio_camera.dm" #include "modular_citadel\code\modules\vehicles\secway.dm" #include "modular_citadel\code\modules\vore\hook-defs_vr.dm" From 921e12dd64b8c7dbcd22bee2bd0137a5f6827dfa Mon Sep 17 00:00:00 2001 From: Sishen Date: Fri, 9 Aug 2019 01:43:36 -0400 Subject: [PATCH 012/324] Update tgstation.dme --- tgstation.dme | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tgstation.dme b/tgstation.dme index 7ea5546fca..807c7f28a1 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2931,7 +2931,6 @@ #include "modular_citadel\code\modules\arousal\toys\dildos.dm" #include "modular_citadel\code\modules\awaymissions\citadel_ghostrole_spawners.dm" #include "modular_citadel\code\modules\cargo\console.dm" -#include "modular_citadel\code\modules\cargo\packs.dm" #include "modular_citadel\code\modules\client\client_defines.dm" #include "modular_citadel\code\modules\client\client_procs.dm" #include "modular_citadel\code\modules\client\preferences.dm" @@ -2965,7 +2964,6 @@ #include "modular_citadel\code\modules\clothing\under\trek_under.dm" #include "modular_citadel\code\modules\clothing\under\turtlenecks.dm" #include "modular_citadel\code\modules\clothing\under\under.dm" -#include "modular_citadel\code\modules\crafting\recipes.dm" #include "modular_citadel\code\modules\custom_loadout\custom_items.dm" #include "modular_citadel\code\modules\custom_loadout\load_to_mob.dm" #include "modular_citadel\code\modules\custom_loadout\read_from_file.dm" @@ -2990,7 +2988,6 @@ #include "modular_citadel\code\modules\mentor\mentorhelp.dm" #include "modular_citadel\code\modules\mentor\mentorpm.dm" #include "modular_citadel\code\modules\mentor\mentorsay.dm" -#include "modular_citadel\code\modules\mining\mine_items.dm" #include "modular_citadel\code\modules\mining\mining_ruins.dm" #include "modular_citadel\code\modules\mob\cit_emotes.dm" #include "modular_citadel\code\modules\mob\mob.dm" @@ -3048,7 +3045,6 @@ #include "modular_citadel\code\modules\research\designs\xenobio_designs.dm" #include "modular_citadel\code\modules\research\designs\weapon_designs\weapon_designs.dm" #include "modular_citadel\code\modules\research\techweb\_techweb.dm" -#include "modular_citadel\code\modules\research\techweb\all_nodes.dm" #include "modular_citadel\code\modules\research\xenobiology\xenobio_camera.dm" #include "modular_citadel\code\modules\vehicles\secway.dm" #include "modular_citadel\code\modules\vore\hook-defs_vr.dm" From 251ac24e02de6d13973ecef5ac7818ecc69f8217 Mon Sep 17 00:00:00 2001 From: Fermi Date: Sun, 11 Aug 2019 00:35:36 +0100 Subject: [PATCH 013/324] [NEED TO TEST] {Preview} Fixes Neurotoxin and adjusts it's reaction. --- .../food_and_drinks/recipes/drinks_recipes.dm | 25 ++++++++++++++++++- .../chemistry/reagents/alcohol_reagents.dm | 18 +++++++++++++ .../reagents/chemistry/recipes/fermi.dm | 6 ++--- 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index 7c44857b1d..b97b919e1e 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -381,6 +381,29 @@ id = "neurotoxin" results = list("neurotoxin" = 2) required_reagents = list("gargleblaster" = 1, "morphine" = 1) + //FermiChem vars: Easy to make, but hard to make potent + OptimalTempMin = 200 // Lower area of bell curve for determining heat based rate reactions + OptimalTempMax = 950 // Upper end for above + ExplodeTemp = 999 //Temperature at which reaction explodes + OptimalpHMin = 2 // Lowest value of pH determining pH a 1 value for pH based rate reactions (Plateu phase) + OptimalpHMax = 2.8 // Higest value for above + ReactpHLim = 5 // How far out pH wil react, giving impurity place (Exponential phase) + CatalystFact = 0 // How much the catalyst affects the reaction (0 = no catalyst) + CurveSharpT = 2 // How sharp the temperature exponential curve is (to the power of value) + CurveSharppH = 4 // How sharp the pH exponential curve is (to the power of value) + ThermicConstant = 10 //Temperature change per 1u produced + HIonRelease = 0.02 //pH change per 1u reaction + RateUpLim = 5 //Optimal/max rate possible if all conditions are perfect + FermiChem = TRUE//If the chemical uses the Fermichem reaction mechanics + FermiExplode = FALSE //If the chemical explodes in a special way + PurityMin = 0 //The minimum purity something has to be above, otherwise it explodes. + +/datum/chemical_reaction/neurotoxin/FermiFinish(datum/reagents/holder, var/atom/my_atom) + var/datum/reagent/consumable/ethanol/neurotoxin/Nt = locate(/datum/reagent/consumable/ethanol/neurotoxin) in my_atom.reagents.reagent_list + var/cached_volume = Nt.volume + if(Nt.purity < 0.5) + holder.remove_reagent(src.id, cached_volume) + holder.add_reagent("neuroweak", cached_volume) /datum/chemical_reaction/snowwhite name = "Snow White" @@ -794,4 +817,4 @@ name = "Red Queen" id = "red_queen" results = list("red_queen" = 10) - required_reagents = list("tea" = 6, "mercury" = 2, "blackpepper" = 1, "growthserum" = 1) \ No newline at end of file + required_reagents = list("tea" = 6, "mercury" = 2, "blackpepper" = 1, "growthserum" = 1) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 79b6f96781..0817d04cb8 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -1373,6 +1373,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/neurotoxin name = "Neurotoxin" + id = "neurotoxin" description = "A strong neurotoxin that puts the subject into a death-like state." color = "#2E2E61" // rgb: 46, 46, 97 boozepwr = 50 @@ -1382,6 +1383,9 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "neurotoxinglass" glass_name = "Neurotoxin" glass_desc = "A drink that is guaranteed to knock you silly." + ImpureChem = "neuroweak" + InverseChemVal = 0 //Clear conversion + InverseChem = "neuroweak" /datum/reagent/consumable/ethanol/neurotoxin/proc/pickt() return (pick(TRAIT_PARALYSIS_L_ARM,TRAIT_PARALYSIS_R_ARM,TRAIT_PARALYSIS_R_LEG,TRAIT_PARALYSIS_L_LEG)) @@ -1417,6 +1421,20 @@ All effects don't start immediately, but rather get worse over time; the rate is M.adjustStaminaLoss(10) ..() +/datum/reagent/consumable/ethanol/neuroweak + name = "Neuroalcohol" + id = "neuroweak" + description = "A mostly safe alcoholic drink for the true daredevils. Do not mix with Neurotoxin." + boozepwr = 60 + +/datum/reagent/consumable/ethanol/neuroweak/on_mob_life(mob/living/carbon/M) + if(holder.has_reagent("neurotoxin")) + M.adjustBrainLoss(0.5*REM, 150) + else + M.adjustBrainLoss(-0.5*REM, 150) + M.dizziness +=2 + ..() + /datum/reagent/consumable/ethanol/hippies_delight name = "Hippie's Delight" id = "hippiesdelight" diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index 078e1c8a71..bd327809eb 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -2,15 +2,15 @@ mix_sound = 'sound/effects/bubbles.ogg' //Called for every reaction step -/datum/chemical_reaction/fermi/proc/FermiCreate(holder) +/datum/chemical_reaction/proc/FermiCreate(holder) return //Called when reaction STOP_PROCESSING -/datum/chemical_reaction/fermi/proc/FermiFinish(datum/reagents/holder) +/datum/chemical_reaction/proc/FermiFinish(datum/reagents/holder) return //Called when temperature is above a certain threshold, or if purity is too low. -/datum/chemical_reaction/fermi/proc/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH, Exploding = FALSE) +/datum/chemical_reaction/proc/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH, Exploding = FALSE) if (Exploding == TRUE) return From 57835e2f81369b2a2cc7a845b62d557cf2d04b92 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sat, 10 Aug 2019 19:20:05 -0500 Subject: [PATCH 014/324] head announce datums --- code/modules/jobs/job_types/chief_engineer.dm | 2 +- code/modules/jobs/job_types/chief_medical_officer.dm | 2 +- code/modules/jobs/job_types/head_of_personnel.dm | 2 +- code/modules/jobs/job_types/head_of_security.dm | 2 +- code/modules/jobs/job_types/quartermaster.dm | 2 +- code/modules/jobs/job_types/research_director.dm | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index dd89e925b5..3a91a89992 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -4,7 +4,7 @@ // auto_deadmin_role_flags = DEADMIN_POSITION_HEAD department_head = list("Captain") department_flag = ENGSEC - head_announce = list("Engineering") + head_announce = list(RADIO_CHANNEL_ENGINEERING) faction = "Station" total_positions = 1 spawn_positions = 1 diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index 54963b1bc1..35af7b20ba 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -4,7 +4,7 @@ department_head = list("Captain") department_flag = MEDSCI // auto_deadmin_role_flags = DEADMIN_POSITION_HEAD - head_announce = list("Medical") + head_announce = list(RADIO_CHANNEL_MEDICAL) faction = "Station" total_positions = 1 spawn_positions = 1 diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index d658a49380..0d0b0e7e2f 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -4,7 +4,7 @@ // auto_deadmin_role_flags = DEADMIN_POSITION_HEAD department_head = list("Captain") department_flag = CIVILIAN - head_announce = list("Service") + head_announce = list(RADIO_CHANNEL_SERVICE) faction = "Station" total_positions = 1 spawn_positions = 1 diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 0ca0e393ac..5c0d254769 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -4,7 +4,7 @@ // auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY department_head = list("Captain") department_flag = ENGSEC - head_announce = list("Security") + head_announce = list(RADIO_CHANNEL_SECURITY) faction = "Station" total_positions = 1 spawn_positions = 1 diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index b85a4ad404..3ba6ca9e36 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -3,7 +3,7 @@ flag = QUARTERMASTER department_head = list("Captain") department_flag = CIVILIAN - head_announce = list("Supply") + head_announce = list(RADIO_CHANNEL_SUPPLY) // auto_deadmin_role_flags = DEADMIN_POSITION_HEAD faction = "Station" total_positions = 1 diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index 2df606bd20..d1be81df38 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -4,7 +4,7 @@ // auto_deadmin_role_flags = DEADMIN_POSITION_HEAD department_head = list("Captain") department_flag = MEDSCI - head_announce = list("Science") + head_announce = list(RADIO_CHANNEL_SCIENCE) faction = "Station" total_positions = 1 spawn_positions = 1 From a3cd143131c83329a259d1883f3517767048591f Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sat, 10 Aug 2019 19:28:47 -0500 Subject: [PATCH 015/324] whaccky github hijinks --- code/modules/jobs/job_types/captain.dm | 64 ++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 code/modules/jobs/job_types/captain.dm diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm new file mode 100644 index 0000000000..79a31b89eb --- /dev/null +++ b/code/modules/jobs/job_types/captain.dm @@ -0,0 +1,64 @@ +/datum/job/captain + title = "Captain" + flag = CAPTAIN +// auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY //:eyes: + department_head = list("CentCom") + department_flag = ENGSEC + faction = "Station" + total_positions = 1 + spawn_positions = 1 + supervisors = "Nanotrasen officials and Space law" + selection_color = "#ccccff" + req_admin_notify = 1 + minimal_player_age = 14 + exp_requirements = 180 + exp_type = EXP_TYPE_CREW + exp_type_department = EXP_TYPE_COMMAND + + outfit = /datum/outfit/job/captain + + access = list() //See get_access() + minimal_access = list() //See get_access() + + mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) +// mind_traits = list(TRAIT_DISK_VERIFIER) + + display_order = JOB_DISPLAY_ORDER_CAPTAIN + +/datum/job/captain/get_access() + return get_all_accesses() + +/datum/job/captain/announce(mob/living/carbon/human/H) + ..() + SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/minor_announce, "Captain [H.nameless ? "" : "[H.real_name] "]on deck!")) + +/datum/outfit/job/captain + name = "Captain" + jobtype = /datum/job/captain + + id = /obj/item/card/id/gold + belt = /obj/item/pda/captain + glasses = /obj/item/clothing/glasses/sunglasses + ears = /obj/item/radio/headset/heads/captain/alt + gloves = /obj/item/clothing/gloves/color/captain + uniform = /obj/item/clothing/under/rank/captain + suit = /obj/item/clothing/suit/armor/vest/capcarapace + shoes = /obj/item/clothing/shoes/sneakers/brown + head = /obj/item/clothing/head/caphat + backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/station_charter=1) + + backpack = /obj/item/storage/backpack/captain + satchel = /obj/item/storage/backpack/satchel/cap + duffelbag = /obj/item/storage/backpack/duffelbag/captain + + implants = list(/obj/item/implant/mindshield) + accessory = /obj/item/clothing/accessory/medal/gold/captain + + chameleon_extras = list(/obj/item/gun/energy/e_gun, /obj/item/stamp/captain) + +/datum/outfit/job/captain/hardsuit + name = "Captain (Hardsuit)" + + mask = /obj/item/clothing/mask/gas/sechailer + suit = /obj/item/clothing/suit/space/hardsuit/captain + suit_store = /obj/item/tank/internals/oxygen From 821463f59c80c45a4f742120d6f7d7bf72f6dfe6 Mon Sep 17 00:00:00 2001 From: TrilbySpaceClone Date: Sun, 11 Aug 2019 11:47:56 -0400 Subject: [PATCH 016/324] Nya --- .../food_and_drinks/recipes/drinks_recipes.dm | 8 +++++++- code/modules/hydroponics/grown/tea_coffee.dm | 19 +++++++++++++++++- .../chemistry/reagents/drink_reagents.dm | 17 ++++++++++++++++ .../chemistry/reagents/other_reagents.dm | 12 +++++++++++ icons/obj/hydroponics/growing_flowers.dmi | Bin 13230 -> 14070 bytes icons/obj/hydroponics/harvest.dmi | Bin 51063 -> 51397 bytes icons/obj/hydroponics/seeds.dmi | Bin 22003 -> 22135 bytes 7 files changed, 54 insertions(+), 2 deletions(-) diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index 7c44857b1d..364cf7ec65 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -794,4 +794,10 @@ name = "Red Queen" id = "red_queen" results = list("red_queen" = 10) - required_reagents = list("tea" = 6, "mercury" = 2, "blackpepper" = 1, "growthserum" = 1) \ No newline at end of file + required_reagents = list("tea" = 6, "mercury" = 2, "blackpepper" = 1, "growthserum" = 1) + +/datum/chemical_reaction/catnip_tea + name = "Catnip Tea" + id = "catnip_tea" + results = list("catnip_tea" = 3) + required_reagents = list("tea" = 5, "catnip" = 2) \ No newline at end of file diff --git a/code/modules/hydroponics/grown/tea_coffee.dm b/code/modules/hydroponics/grown/tea_coffee.dm index fc84617ed8..e7e3679a30 100644 --- a/code/modules/hydroponics/grown/tea_coffee.dm +++ b/code/modules/hydroponics/grown/tea_coffee.dm @@ -32,7 +32,7 @@ species = "teaastra" plantname = "Tea Astra Plant" product = /obj/item/reagent_containers/food/snacks/grown/tea/astra - mutatelist = list() + mutatelist = list(/obj/item/seeds/tea/catnip) reagents_add = list("synaptizine" = 0.1, "vitamin" = 0.04, "teapowder" = 0.1) rarity = 20 @@ -43,6 +43,23 @@ filling_color = "#4582B4" grind_results = list("teapowder" = 0, "salglu_solution" = 0) +// Kitty drugs +/obj/item/seeds/tea/catnip + name = "pack of catnip seeds" + icon_state = "seed-catnip" + desc = "Long stocks with flowering tips that has a chemical to make feline attracted to it." + species = "catnip" + plantname = "Catnip Plant" + product = /obj/item/reagent_containers/food/snacks/grown/tea/catnip + reagents_add = list("catnip" = 0.1, "vitamin" = 0.06, "teapowder" = 0.3) + rarity = 50 + +/obj/item/reagent_containers/food/snacks/grown/tea/catnip + seed = /obj/item/seeds/tea/catnip + name = "Catnip buds" + icon_state = "catnip_leaves" + filling_color = "#4582B4" + grind_results = list("catnp" = 2, "water" = 1) // Coffee /obj/item/seeds/coffee diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 8aa555944a..2f4714bf2f 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -881,3 +881,20 @@ to_chat(M, "[pick("Diamond skies where white deer fly.","Sipping strawberry tea.","Silver raindrops drift through timeless, Neverending June.","Crystal ... pearls free, with love!","Beaming love into me.")]") ..() . = 1 + +/datum/reagent/consumable/catnip_tea + name = "Catnip Tea" + id = "catnip_tea" + description = "A sleepy and tasty catnip tea!" + color = "#101000" // rgb: 16, 16, 0 + nutriment_factor = 0 + taste_description = "sugar and catnip" + glass_icon_state = "teaglass" + glass_name = "glass of catnip tea" + glass_desc = "A purfect drink for a cat." + +/datum/reagent/consumable/catnip_tea/on_mob_life(mob/living/carbon/M) + M.emote("nya") + to_chat(M, "[pick("Headpats feel nice.", "Backrubs would be nice.", "Mew")]") + M.adjustArousalLoss(5) + M.adjustStaminaLoss(3) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index db927411c0..5914183549 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1962,3 +1962,15 @@ /datum/reagent/changeling_string/Destroy() qdel(original_dna) return ..() + +/datum/reagent/pax/catnip + name = "catnip" + id = "catnip" + taste_description = "grass" + description = "A colorless liquid that makes people more peaceful and felines more happy." + metabolization_rate = 1.75 * REAGENTS_METABOLISM + +/datum/reagent/pax/catnip/on_mob_life(mob/living/carbon/M) + M.emote("nya") + to_chat(M, "[pick("Headpats feel nice.", "The feeling of a hairball...", "Backrubs would be nice.", "Whats behind those doors?")]") + M.adjustArousalLoss(2) \ No newline at end of file diff --git a/icons/obj/hydroponics/growing_flowers.dmi b/icons/obj/hydroponics/growing_flowers.dmi index 2752ad8dc502f25ae1a5bcb088a1798f511fc91e..2f541dfc9b5ff6331a0978036de299e618adca58 100644 GIT binary patch literal 14070 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%0A(EyekoocH+ZSs+rW$ET8!%3GCBWk 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 delta 16532 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 Nt*EI`BWD@@e*m?)=vM#$ diff --git a/icons/obj/hydroponics/seeds.dmi b/icons/obj/hydroponics/seeds.dmi index 30be27486b0e35af955d8cb0575b3eb2471168a0..b65f395598697a0f832209bcf774799e4b5adc3a 100644 GIT binary patch literal 22135 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 literal 22003 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 Date: Sun, 11 Aug 2019 13:10:14 -0400 Subject: [PATCH 017/324] Update machine_vending.dm --- code/modules/mining/machine_vending.dm | 47 ++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index e49f2e73ed..e6f57cb1f6 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -279,13 +279,56 @@ desc = "A kit containing everything a crewmember needs to support a shaft miner in the field." /obj/item/storage/backpack/duffelbag/mining_conscript/PopulateContents() + new /obj/item/pickaxe/mini(src) new /obj/item/clothing/glasses/meson(src) new /obj/item/t_scanner/adv_mining_scanner/lesser(src) new /obj/item/storage/bag/ore(src) - new /obj/item/clothing/suit/hooded/explorer(src) - new /obj/item/encryptionkey/headset_mining(src) + new /obj/item/clothing/suit/hooded/explorer/standard(src) + new /obj/item/encryptionkey/headset_cargo(src) new /obj/item/clothing/mask/gas/explorer(src) new /obj/item/card/mining_access_card(src) new /obj/item/gun/energy/kinetic_accelerator(src) new /obj/item/kitchen/knife/combat/survival(src) new /obj/item/flashlight/seclite(src) + + //CITADEL ADDITIONS BELOW + +/obj/item/storage/backpack/duffelbag/mining_cloned + name = "mining replacement kit" + desc = "A large bag that has advance tools and a spare jumpsuit, boots, and gloves for a newly cloned miner to get back in the field. Even as a new Id!" + +/obj/item/storage/backpack/duffelbag/mining_cloned/PopulateContents() + new /obj/item/pickaxe/mini(src) + new /obj/item/clothing/under/rank/miner/lavaland(src) + new /obj/item/clothing/shoes/workboots/mining(src) + new /obj/item/clothing/gloves/color/black(src) + new /obj/item/implanter/tracking/gps(src) + new /obj/item/gun/energy/kinetic_accelerator(src) + new /obj/item/kitchen/knife/combat/survival(src) + new /obj/item/storage/firstaid/regular(src) + new /obj/item/reagent_containers/hypospray/medipen/survival(src) + new /obj/item/t_scanner/adv_mining_scanner(src) + new /obj/item/clothing/suit/hooded/explorer/standard(src) + new /obj/item/encryptionkey/headset_cargo(src) + new /obj/item/clothing/mask/gas/explorer(src) + new /obj/item/card/id/mining(src) + new /obj/item/storage/bag/ore(src) + new /obj/item/clothing/glasses/meson/prescription(src) + +/obj/machinery/mineral/equipment_vendor/proc/RedeemSVoucher(obj/item/suit_voucher/voucher, mob/redeemer) + var/items = list("Exo-suit", "SEVA suit") + + var/selection = input(redeemer, "Pick your suit.", "Suit Voucher Redemption") as null|anything in items + if(!selection || !Adjacent(redeemer) || QDELETED(voucher) || voucher.loc != redeemer) + return + var/drop_location = drop_location() + switch(selection) + if("Exo-suit") + new /obj/item/clothing/suit/hooded/explorer/exo(drop_location) + new /obj/item/clothing/mask/gas/exo(drop_location) + if("SEVA suit") + new /obj/item/clothing/suit/hooded/explorer/seva(drop_location) + new /obj/item/clothing/mask/gas/seva(drop_location) + + SSblackbox.record_feedback("tally", "suit_voucher_redeemed", 1, selection) + qdel(voucher) From ffa574b1be73646583be67145cd7c8a0ed82da5e Mon Sep 17 00:00:00 2001 From: Sishen Date: Sun, 11 Aug 2019 13:17:55 -0400 Subject: [PATCH 018/324] Update machine_vending.dm --- code/modules/mining/machine_vending.dm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index e6f57cb1f6..38d2e3e100 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -32,6 +32,7 @@ new /datum/data/mining_equipment("Jaunter", /obj/item/wormhole_jaunter, 750), new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/twohanded/required/kinetic_crusher, 750), new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750), + new /datum/data/mining_equipment("Survival Medipen", /obj/item/reagent_containers/hypospray/medipen/survival, 750), new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 800), new /datum/data/mining_equipment("Burn First-Aid Kit", /obj/item/storage/firstaid/fire, 800), new /datum/data/mining_equipment("First-Aid Kit", /obj/item/storage/firstaid/regular, 800), @@ -66,7 +67,9 @@ new /datum/data/mining_equipment("KA Range Increase", /obj/item/borg/upgrade/modkit/range, 1000), new /datum/data/mining_equipment("KA Damage Increase", /obj/item/borg/upgrade/modkit/damage, 1000), new /datum/data/mining_equipment("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000), - new /datum/data/mining_equipment("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000) + new /datum/data/mining_equipment("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000), + new /datum/data/mining_equipment("Miner Full Replacement", /obj/item/storage/backpack/duffelbag/mining_cloned, 3000), + new /datum/data/mining_equipment("Premium Accelerator", /obj/item/gun/energy/kinetic_accelerator/premiumka, 8000) ) /datum/data/mining_equipment @@ -135,6 +138,9 @@ if(istype(I, /obj/item/mining_voucher)) RedeemVoucher(I, user) return + if(istype(I, /obj/item/suit_voucher)) + RedeemSVoucher(I, user) + return if(default_deconstruction_screwdriver(user, "mining-open", "mining", I)) updateUsrDialog() return From 0f4469e59fde4832090e784bfbf81c7c1dd15f63 Mon Sep 17 00:00:00 2001 From: Fermi Date: Mon, 12 Aug 2019 01:03:35 +0100 Subject: [PATCH 019/324] Re-enables fermiexplosions in grenades. --- code/modules/reagents/chemistry/holder.dm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 300e73a6fd..e9eb00a180 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -495,7 +495,12 @@ //Standard reaction mechanics: else if (C.FermiChem == TRUE)//Just to make sure - return 0 + if (chem_temp > C.ExplodeTemp) //To allow fermigrenades + var/datum/chemical_reaction/fermi/Ferm = selected_reaction + fermiIsReacting = FALSE + SSblackbox.record_feedback("tally", "fermi_chem", 1, ("[Ferm] explosion")) + Ferm.FermiExplode(src, my_atom, volume = total_volume, temp = chem_temp, pH = pH) + return 0 for(var/B in cached_required_reagents) // multiplier = min(multiplier, round((get_reagent_amount(B) / cached_required_reagents[B]), 0.01)) @@ -693,7 +698,7 @@ //Make sure things are limited. pH = CLAMP(pH, 0, 14) - + //return said amount to compare for next step. return (reactedVol) From 10ca106f065d77e2552bfa10c810db5c34ad654a Mon Sep 17 00:00:00 2001 From: Fermi Date: Mon, 12 Aug 2019 01:36:21 +0100 Subject: [PATCH 020/324] [TO TEST] Adds nuance to hatmium and SDGF explosions. --- .../reagents/chemistry/recipes/fermi.dm | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index 078e1c8a71..c6e3c801ea 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -137,12 +137,14 @@ /datum/chemical_reaction/fermi/SDGF/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)//Spawns an angery teratoma! var/turf/T = get_turf(my_atom) - var/mob/living/simple_animal/slime/S = new(T,"green") - S.damage_coeff = list(BRUTE = 0.9 , BURN = 2, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) - S.name = "Living teratoma" - S.real_name = "Living teratoma" - S.rabid = 1//Make them an angery boi - S.color = "#810010" + var/amount_to_spawn = round((volume/30), 1) + for(var/i in 1 to amount_to_spawn) + var/mob/living/simple_animal/slime/S = new(T,"green") + S.damage_coeff = list(BRUTE = 0.9 , BURN = 2, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) + S.name = "Living teratoma" + S.real_name = "Living teratoma" + S.rabid = 1//Make them an angery boi + S.color = "#810010" my_atom.reagents.clear_reagents() var/list/seen = viewers(8, get_turf(my_atom)) for(var/mob/M in seen) @@ -353,11 +355,13 @@ PurityMin = 0.5 /datum/chemical_reaction/fermi/hatmium/FermiExplode(src, var/atom/my_atom, volume, temp, pH) - var/obj/item/clothing/head/hattip/hat = new /obj/item/clothing/head/hattip(get_turf(my_atom)) - hat.animate_atom_living() + var/amount_to_spawn = round((volume/30), 1) + for(var/i in 1 to amount_to_spawn) + var/obj/item/clothing/head/hattip/hat = new /obj/item/clothing/head/hattip(get_turf(my_atom)) + hat.animate_atom_living() var/list/seen = viewers(8, get_turf(my_atom)) for(var/mob/M in seen) - to_chat(M, "The makes an off sounding pop, as a hat suddenly climbs out of the beaker!") + to_chat(M, "The [src] makes an off sounding pop, as a hat suddenly climbs out of it!") my_atom.reagents.clear_reagents() /datum/chemical_reaction/fermi/furranium From 75440a48c50f9eb4a3e9b9cefa243d9c1ceab377 Mon Sep 17 00:00:00 2001 From: Fermi Date: Mon, 12 Aug 2019 01:36:46 +0100 Subject: [PATCH 021/324] 30 might be too much --- .../code/modules/reagents/chemistry/recipes/fermi.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index c6e3c801ea..6625207a71 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -137,7 +137,7 @@ /datum/chemical_reaction/fermi/SDGF/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)//Spawns an angery teratoma! var/turf/T = get_turf(my_atom) - var/amount_to_spawn = round((volume/30), 1) + var/amount_to_spawn = round((volume/50), 1) for(var/i in 1 to amount_to_spawn) var/mob/living/simple_animal/slime/S = new(T,"green") S.damage_coeff = list(BRUTE = 0.9 , BURN = 2, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) @@ -355,7 +355,7 @@ PurityMin = 0.5 /datum/chemical_reaction/fermi/hatmium/FermiExplode(src, var/atom/my_atom, volume, temp, pH) - var/amount_to_spawn = round((volume/30), 1) + var/amount_to_spawn = round((volume/50), 1) for(var/i in 1 to amount_to_spawn) var/obj/item/clothing/head/hattip/hat = new /obj/item/clothing/head/hattip(get_turf(my_atom)) hat.animate_atom_living() From 08bba425e41a2d8a09981fd0ee3693615f3c0ad5 Mon Sep 17 00:00:00 2001 From: Sishen Date: Mon, 12 Aug 2019 19:42:58 -0400 Subject: [PATCH 022/324] run in a straight line to win gamemode lol --- code/game/mecha/combat/gygax.dm | 3 +++ code/modules/mob/living/carbon/human/human_defense.dm | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index 95137938d0..98330fae88 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -6,6 +6,7 @@ dir_in = 1 //Facing North. max_integrity = 250 deflect_chance = 5 + force = 20 armor = list("melee" = 25, "bullet" = 20, "laser" = 30, "energy" = 15, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) max_temperature = 25000 infra_luminosity = 6 @@ -13,6 +14,7 @@ internal_damage_threshold = 35 max_equip = 3 step_energy_drain = 3 + leg_overload_coeff = 300 /obj/mecha/combat/gygax/dark desc = "A lightweight exosuit, painted in a dark scheme. This model appears to have some modifications." @@ -20,6 +22,7 @@ icon_state = "darkgygax" max_integrity = 300 deflect_chance = 15 + force = 25 armor = list("melee" = 40, "bullet" = 40, "laser" = 50, "energy" = 35, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) max_temperature = 35000 leg_overload_coeff = 100 diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index ff4878aa13..5af295a5dd 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -348,10 +348,15 @@ if(temp) var/update = 0 var/dmg = rand(M.force/2, M.force) + var/atom/throw_target = get_edge_target_turf(src, M.dir) switch(M.damtype) if("brute") - if(M.force > 20) - Unconscious(20) + if(M.force > 35) // durand and other heavy mechas + Knockdown(50) + src.throw_at(throw_target, rand(1,5), 7) + else if(M.force >= 20 && !IsKnockdown()) // lightweight mechas like gygax + Knockdown(30) + src.throw_at(throw_target, rand(1,3), 7) update |= temp.receive_damage(dmg, 0) playsound(src, 'sound/weapons/punch4.ogg', 50, 1) if("fire") From 3224e6ca4aa8b64216c67b3681c8a64fed4e5e8d Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Tue, 13 Aug 2019 11:46:52 -0400 Subject: [PATCH 023/324] ..() --- code/modules/reagents/chemistry/reagents/drink_reagents.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 2f4714bf2f..75e265d2fd 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -898,3 +898,4 @@ to_chat(M, "[pick("Headpats feel nice.", "Backrubs would be nice.", "Mew")]") M.adjustArousalLoss(5) M.adjustStaminaLoss(3) + ..() From 0056e3eb61a22de7871bc315a14d055243a6e26c Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Tue, 13 Aug 2019 11:49:00 -0400 Subject: [PATCH 024/324] Update other_reagents.dm --- code/modules/reagents/chemistry/reagents/other_reagents.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 5914183549..2e093a7459 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1973,4 +1973,5 @@ /datum/reagent/pax/catnip/on_mob_life(mob/living/carbon/M) M.emote("nya") to_chat(M, "[pick("Headpats feel nice.", "The feeling of a hairball...", "Backrubs would be nice.", "Whats behind those doors?")]") - M.adjustArousalLoss(2) \ No newline at end of file + M.adjustArousalLoss(2) + ..() From 522566551696b252941263b8ffc503e3aceb6c47 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Fri, 16 Aug 2019 23:48:41 -0400 Subject: [PATCH 025/324] kev fix --- code/modules/reagents/chemistry/reagents/drink_reagents.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 75e265d2fd..7bc807aa14 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -892,10 +892,11 @@ glass_icon_state = "teaglass" glass_name = "glass of catnip tea" glass_desc = "A purfect drink for a cat." + var/staminaloss = M.getStaminaLoss() /datum/reagent/consumable/catnip_tea/on_mob_life(mob/living/carbon/M) + M.getStaminaLoss(min(50 - staminaloss, 3)) M.emote("nya") to_chat(M, "[pick("Headpats feel nice.", "Backrubs would be nice.", "Mew")]") M.adjustArousalLoss(5) - M.adjustStaminaLoss(3) ..() From c81fd8fcd454ae56e22112b7fccac2fae6b078ac Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sat, 17 Aug 2019 00:02:22 -0400 Subject: [PATCH 026/324] Update drink_reagents.dm --- code/modules/reagents/chemistry/reagents/drink_reagents.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 7bc807aa14..fc408e0a91 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -896,7 +896,9 @@ /datum/reagent/consumable/catnip_tea/on_mob_life(mob/living/carbon/M) M.getStaminaLoss(min(50 - staminaloss, 3)) - M.emote("nya") - to_chat(M, "[pick("Headpats feel nice.", "Backrubs would be nice.", "Mew")]") + if(prob(20)) + M.emote("nya") + if(prob(20)) + to_chat(M, "[pick("Headpats feel nice.", "Backrubs would be nice.", "Mew")]") M.adjustArousalLoss(5) ..() From 3851739533bb39de89c13a1a68cfa1359e670974 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sat, 17 Aug 2019 00:06:58 -0400 Subject: [PATCH 027/324] Update other_reagents.dm --- code/modules/reagents/chemistry/reagents/other_reagents.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 2e093a7459..6680920442 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1971,7 +1971,9 @@ metabolization_rate = 1.75 * REAGENTS_METABOLISM /datum/reagent/pax/catnip/on_mob_life(mob/living/carbon/M) - M.emote("nya") - to_chat(M, "[pick("Headpats feel nice.", "The feeling of a hairball...", "Backrubs would be nice.", "Whats behind those doors?")]") + if(prob(20)) + M.emote("nya") + if(prob(20)) + to_chat(M, "[pick("Headpats feel nice.", "The feeling of a hairball...", "Backrubs would be nice.", "Whats behind those doors?")]") M.adjustArousalLoss(2) ..() From bcf65dc90181508f5340f049241b7904f250b399 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Sat, 17 Aug 2019 00:58:02 -0400 Subject: [PATCH 028/324] Update drink_reagents.dm --- code/modules/reagents/chemistry/reagents/drink_reagents.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index fc408e0a91..978fa54d0f 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -892,10 +892,9 @@ glass_icon_state = "teaglass" glass_name = "glass of catnip tea" glass_desc = "A purfect drink for a cat." - var/staminaloss = M.getStaminaLoss() /datum/reagent/consumable/catnip_tea/on_mob_life(mob/living/carbon/M) - M.getStaminaLoss(min(50 - staminaloss, 3)) + M.getStaminaLoss(min(50 - M.getStaminaLoss(), 3)) if(prob(20)) M.emote("nya") if(prob(20)) From 4b6b2cf19524032efdf170d30f87a1ae644bfda8 Mon Sep 17 00:00:00 2001 From: Code-Cygnet <54194215+Code-Cygnet@users.noreply.github.com> Date: Sat, 17 Aug 2019 01:37:28 -0400 Subject: [PATCH 029/324] Adds new drink to drink recipes It's a drink for Captains --- code/modules/food_and_drinks/recipes/drinks_recipes.dm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index 7c44857b1d..d35955d2d3 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -794,4 +794,11 @@ name = "Red Queen" id = "red_queen" results = list("red_queen" = 10) - required_reagents = list("tea" = 6, "mercury" = 2, "blackpepper" = 1, "growthserum" = 1) \ No newline at end of file + required_reagents = list("tea" = 6, "mercury" = 2, "blackpepper" = 1, "growthserum" = 1) + +/datum/chemical_reaction/commander_and_chief + name = "Commander and Chief" + id = "commander_and_chief" + results = list("commander_and_chief" = 50) + required_reagents = list("allies_cocktail" = 50, "champagne" = 20, "doctors_delight" = 10, "quintiple_sec" = 10, "screwdriver" = 10) + mix_message = "When your powers combine, I am Captain Pl-..." From 372c53b3da679aef0f5a2a34a6b71587109d3a35 Mon Sep 17 00:00:00 2001 From: Code-Cygnet <54194215+Code-Cygnet@users.noreply.github.com> Date: Sat, 17 Aug 2019 01:47:25 -0400 Subject: [PATCH 030/324] Uploads new drinks.dmi Adds Commander and Chif --- icons/obj/drinks.dmi | Bin 85302 -> 85723 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 7822cdb8c236ea58fc03d4812f74561781b6b0b2..c255e0a104b992bda3df8d0882a0c808d87ea506 100644 GIT binary patch delta 8618 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 Date: Sat, 17 Aug 2019 11:10:09 -0400 Subject: [PATCH 031/324] some updates thanks to thechosenevilone --- code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index 440765718b..064a325ca1 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -29,10 +29,10 @@ // So for example you can get the list of all current dead players with var/list/dead_players = candidates[CURRENT_DEAD_PLAYERS] // Make sure to properly typecheck the mobs in those lists, as the dead_players list could contain ghosts, or dead players still in their bodies. // We're still gonna trim the obvious (mobs without clients, jobbanned players, etc) - living_players = trim_list(candidates[CURRENT_LIVING_PLAYERS]) - living_antags = trim_list(candidates[CURRENT_LIVING_ANTAGS]) - dead_players = trim_list(candidates[CURRENT_DEAD_PLAYERS]) - list_observers = trim_list(candidates[CURRENT_OBSERVERS]) + living_players = trim_list(mode.current_players[CURRENT_LIVING_PLAYERS]) + living_antags = trim_list(mode.current_players[CURRENT_LIVING_ANTAGS]) + dead_players = trim_list(mode.current_players[CURRENT_DEAD_PLAYERS]) + list_observers = trim_list(mode.current_players[CURRENT_OBSERVERS]) /datum/dynamic_ruleset/midround/proc/trim_list(list/L = list()) var/list/trimmed_list = L.Copy() From 1d0cb91aafc6b6339fbab2d89248eb58b6f98663 Mon Sep 17 00:00:00 2001 From: Code-Cygnet <54194215+Code-Cygnet@users.noreply.github.com> Date: Sat, 17 Aug 2019 19:02:30 -0400 Subject: [PATCH 032/324] Update traits.dm Adds new mob trait at line 121 --- code/__DEFINES/traits.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index ed0007135d..a4bca2f2c8 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -118,6 +118,7 @@ #define TRAIT_LAW_ENFORCEMENT_METABOLISM "law-enforcement-metabolism" #define TRAIT_STRONG_GRABBER "strong_grabber" #define TRAIT_CALCIUM_HEALER "calcium_healer" +#define TRAIT_CAPTAIN_METABOLISM "captain-metabolism" //non-mob traits #define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it @@ -203,4 +204,4 @@ #define FLIGHTSUIT_TRAIT "flightsuit" #define LOCKED_HELMET_TRAIT "locked-helmet" #define NINJA_SUIT_TRAIT "ninja-suit" -#define ANTI_DROP_IMPLANT_TRAIT "anti-drop-implant" \ No newline at end of file +#define ANTI_DROP_IMPLANT_TRAIT "anti-drop-implant" From d2760287e10335173865f1ca0348ca5407b4a49c Mon Sep 17 00:00:00 2001 From: Code-Cygnet <54194215+Code-Cygnet@users.noreply.github.com> Date: Sat, 17 Aug 2019 19:27:11 -0400 Subject: [PATCH 033/324] Update captain.dm Adds mind trait at line 24 --- code/modules/jobs/job_types/captain.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index 80c78220e6..dd8cc5a887 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -21,6 +21,8 @@ Captain access = list() //See get_access() minimal_access = list() //See get_access() + mind_traits = list(TRAIT_CAPTAIN_METABOLISM) + /datum/job/captain/get_access() return get_all_accesses() From 975a33aad78f4d27b37be223970d53877283c924 Mon Sep 17 00:00:00 2001 From: Code-Cygnet <54194215+Code-Cygnet@users.noreply.github.com> Date: Sat, 17 Aug 2019 19:38:58 -0400 Subject: [PATCH 034/324] Update alcohol_reagents.dm Adds commander and chief, starting at line 2125 and ending at 2146.. hopefully. --- .../chemistry/reagents/alcohol_reagents.dm | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 79b6f96781..35efd651df 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -2122,6 +2122,29 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Planet Cracker" glass_desc = "Although historians believe the drink was originally created to commemorate the end of an important conflict in man's past, its origins have largely been forgotten and it is today seen more as a general symbol of human supremacy." +/datum/reagent/consumable/ethanol/commander_and_chief + name = "Commander and Chief" + id = "commander_and_chief" + description = "A cocktail for the captain on the go." + color = "#ffffc9" + boozepwr = 50 + quality = DRINK_FANTASTIC + taste_description = "Tastes like...duty and responsibility?" + glass_icon_state = "commander_and_chief" + glass_name = "Commander and Chief" + glass_desc = "The gems of this majestic chalice represent the departments and their Heads." + +/datum/reagent/consumable/ethanol/commander_and_chief/on_mob_life(mob/living/carbon/M) + if(M.mind && HAS_TRAIT(M.mind, TRAIT_CAPTAIN_METABOLISM))) + M.heal_bodypart_damage(2,2,2) + M.adjustBruteLoss(-3.5,0) + M.adjustOxyLoss(-3.5,0) + M.adjustFireLoss(-3.5,0) + M.adjustToxLoss(-3.5,0) + M.radiation = max(M.raddiation - 25, 0) + . = 1 + return ..() + /datum/reagent/consumable/ethanol/fruit_wine name = "Fruit Wine" id = "fruit_wine" From b5842048b4d6e40230bc79617680779751af0932 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sat, 17 Aug 2019 23:42:01 -0500 Subject: [PATCH 035/324] blacklisting quirks --- code/modules/jobs/job_types/chief_engineer.dm | 1 + code/modules/jobs/job_types/chief_medical_officer.dm | 1 + code/modules/jobs/job_types/detective.dm | 1 + code/modules/jobs/job_types/head_of_personnel.dm | 2 ++ code/modules/jobs/job_types/head_of_security.dm | 1 + code/modules/jobs/job_types/quartermaster.dm | 1 + code/modules/jobs/job_types/research_director.dm | 1 + code/modules/jobs/job_types/security_officer.dm | 1 + code/modules/jobs/job_types/warden.dm | 1 + 9 files changed, 10 insertions(+) diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index 3a91a89992..7fca1c9faf 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -28,6 +28,7 @@ ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM) display_order = JOB_DISPLAY_ORDER_CHIEF_ENGINEER + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/paraplegic, /datum/quirk/insanity) /datum/outfit/job/ce name = "Chief Engineer" diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index 35af7b20ba..b464141ae2 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -26,6 +26,7 @@ ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS) display_order = JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity) /datum/outfit/job/cmo name = "Chief Medical Officer" diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index 6c12c1db09..82745ae9fb 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -21,6 +21,7 @@ mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) display_order = JOB_DISPLAY_ORDER_DETECTIVE + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/nonviolent, /datum/quirk/paraplegic) /datum/outfit/job/detective name = "Detective" diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index 0d0b0e7e2f..96a7932f46 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -33,6 +33,8 @@ display_order = JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/prosopagnosia, /datum/quirk/insanity) + /datum/outfit/job/hop name = "Head of Personnel" jobtype = /datum/job/hop diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 5c0d254769..07dfa05774 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -29,6 +29,7 @@ ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) display_order = JOB_DISPLAY_ORDER_HEAD_OF_SECURITY + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/insanity) /datum/outfit/job/hos name = "Head of Security" diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index 3ba6ca9e36..2c68d005db 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -24,6 +24,7 @@ ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT) display_order = JOB_DISPLAY_ORDER_QUARTERMASTER + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity) /datum/outfit/job/quartermaster name = "Quartermaster" diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index d1be81df38..6f23f403dc 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -30,6 +30,7 @@ ACCESS_TECH_STORAGE, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_NETWORK) display_order = JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity) /datum/outfit/job/rd name = "Research Director" diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index 05ba91aa4a..24c2e3cde0 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -21,6 +21,7 @@ mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) display_order = JOB_DISPLAY_ORDER_SECURITY_OFFICER + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/nonviolent, /datum/quirk/paraplegic) /datum/job/officer/get_access() var/list/L = list() diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index 821ce352f7..d7691cb488 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -21,6 +21,7 @@ mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) display_order = JOB_DISPLAY_ORDER_WARDEN + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/nonviolent, /datum/quirk/paraplegic) /datum/job/warden/get_access() var/list/L = list() From 933db4d05fa8ed01fe679048ce8fc82428f753b4 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 18 Aug 2019 01:00:16 -0500 Subject: [PATCH 036/324] reverts the overly greyish colors back to vibrant ones --- code/modules/jobs/job_types/captain.dm | 2 +- code/modules/jobs/job_types/chief_engineer.dm | 2 +- code/modules/jobs/job_types/chief_medical_officer.dm | 2 +- code/modules/jobs/job_types/head_of_personnel.dm | 2 +- code/modules/jobs/job_types/head_of_security.dm | 2 +- code/modules/jobs/job_types/quartermaster.dm | 2 +- code/modules/jobs/job_types/research_director.dm | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index 5abe3c021a..d334cff772 100644 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -8,7 +8,7 @@ total_positions = 1 spawn_positions = 1 supervisors = "Nanotrasen officials and Space law" - selection_color = "#ccccff" + selection_color = "#aac1ee" req_admin_notify = 1 minimal_player_age = 14 exp_requirements = 180 diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index 7fca1c9faf..a4b197d479 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -9,7 +9,7 @@ total_positions = 1 spawn_positions = 1 supervisors = "the captain" - selection_color = "#ffeeaa" + selection_color = "#ffd699" req_admin_notify = 1 minimal_player_age = 7 exp_requirements = 180 diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index b464141ae2..f0f044e6b1 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -9,7 +9,7 @@ total_positions = 1 spawn_positions = 1 supervisors = "the captain" - selection_color = "#ffddf0" + selection_color = "#99ffe6" req_admin_notify = 1 minimal_player_age = 7 exp_requirements = 180 diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index 96a7932f46..d373b8c181 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -9,7 +9,7 @@ total_positions = 1 spawn_positions = 1 supervisors = "the captain" - selection_color = "#ddddff" + selection_color = "#cccccc" req_admin_notify = 1 minimal_player_age = 10 exp_requirements = 180 diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 07dfa05774..961b9ea58f 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -9,7 +9,7 @@ total_positions = 1 spawn_positions = 1 supervisors = "the captain" - selection_color = "#ffdddd" + selection_color = "#ff9999" req_admin_notify = 1 minimal_player_age = 14 exp_requirements = 300 diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index 2c68d005db..a3830e389f 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -9,7 +9,7 @@ total_positions = 1 spawn_positions = 1 supervisors = "the captain" - selection_color = "#d7b088" + selection_color = "#ead4ae" req_admin_notify = 1 minimal_player_age = 7 exp_requirements = 180 diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index 6f23f403dc..5b239c44e0 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -9,7 +9,7 @@ total_positions = 1 spawn_positions = 1 supervisors = "the captain" - selection_color = "#ffddff" + selection_color = "#e6b3e6" req_admin_notify = 1 minimal_player_age = 7 exp_type_department = EXP_TYPE_SCIENCE From b5da43c1b7b7ce8ec05bc82111e69da97f9608c9 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 18 Aug 2019 04:04:05 -0500 Subject: [PATCH 037/324] Gives Sec Officers back their stun combat weapons --- code/modules/jobs/job_types/security_officer.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index 24c2e3cde0..bb54ed0a6c 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -122,7 +122,7 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S shoes = /obj/item/clothing/shoes/jackboots l_pocket = /obj/item/restraints/handcuffs r_pocket = /obj/item/assembly/flash/handheld - suit_store = /obj/item/gun/energy/disabler + suit_store = /obj/item/gun/energy/e_gun/advtaser backpack_contents = list(/obj/item/melee/baton/loaded=1) backpack = /obj/item/storage/backpack/security From 5e03f5be3d794fce94c7d2bca8075211a890f63b Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 18 Aug 2019 04:24:48 -0500 Subject: [PATCH 038/324] Update shaft_miner.dm --- code/modules/jobs/job_types/shaft_miner.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index 59d29954fd..6b7f8ecb6f 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -31,6 +31,7 @@ /obj/item/flashlight/seclite=1,\ /obj/item/kitchen/knife/combat/survival=1,\ /obj/item/mining_voucher=1,\ + /obj/item/suit_voucher=1,\ /obj/item/stack/marker_beacon/ten=1) backpack = /obj/item/storage/backpack/explorer From c4198296d03ab2aaaa03a25080dbdfc8f4d2794e Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 18 Aug 2019 04:26:30 -0500 Subject: [PATCH 039/324] and this too --- code/modules/jobs/job_types/shaft_miner.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index 6b7f8ecb6f..1c662b8e8f 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -43,7 +43,7 @@ /datum/outfit/job/miner/equipped name = "Shaft Miner (Equipment)" - suit = /obj/item/clothing/suit/hooded/explorer + suit = /obj/item/clothing/suit/hooded/explorer/standard mask = /obj/item/clothing/mask/gas/explorer glasses = /obj/item/clothing/glasses/meson suit_store = /obj/item/tank/internals/oxygen From 867b11215887543f5f4eac186aabe27c52562023 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 18 Aug 2019 07:44:46 -0500 Subject: [PATCH 040/324] HOW DID THIS NOT GET UPDATED???? --- code/controllers/subsystem/job.dm | 3 +- code/modules/client/preferences_savefile.dm | 68 ++++++++++++++++++--- 2 files changed, 60 insertions(+), 11 deletions(-) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 4001c666ee..f70309b6b2 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -297,7 +297,8 @@ SUBSYSTEM_DEF(job) // Loop through all levels from high to low var/list/shuffledoccupations = shuffle(occupations) - for(var/level = 1 to 3) + var/list/levels = list(JP_HIGH,JP_MEDIUM,JP_LOW) + for(var/level in levels) //Check the head jobs first each level CheckHeadPositions(level) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 7911d92495..d3eb94c253 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 20 +#define SAVEFILE_VERSION_MAX 21 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -49,6 +49,59 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car pda_style = "mono" if(current_version < 20) pda_color = "#808000" + if(current_version < 21) + job_preferences = list() //It loaded null from nonexistant savefile field. + var/job_civilian_high = 0 + var/job_civilian_med = 0 + var/job_civilian_low = 0 + + var/job_medsci_high = 0 + var/job_medsci_med = 0 + var/job_medsci_low = 0 + + var/job_engsec_high = 0 + var/job_engsec_med = 0 + var/job_engsec_low = 0 + + S["job_civilian_high"] >> job_civilian_high + S["job_civilian_med"] >> job_civilian_med + S["job_civilian_low"] >> job_civilian_low + S["job_medsci_high"] >> job_medsci_high + S["job_medsci_med"] >> job_medsci_med + S["job_medsci_low"] >> job_medsci_low + S["job_engsec_high"] >> job_engsec_high + S["job_engsec_med"] >> job_engsec_med + S["job_engsec_low"] >> job_engsec_low + + //Can't use SSjob here since this happens right away on login + for(var/job in subtypesof(/datum/job)) + var/datum/job/J = job + var/new_value + var/fval = initial(J.flag) + switch(initial(J.department_flag)) + if(CIVILIAN) + if(job_civilian_high & fval) + new_value = JP_HIGH + else if(job_civilian_med & fval) + new_value = JP_MEDIUM + else if(job_civilian_low & fval) + new_value = JP_LOW + if(MEDSCI) + if(job_medsci_high & fval) + new_value = JP_HIGH + else if(job_medsci_med & fval) + new_value = JP_MEDIUM + else if(job_medsci_low & fval) + new_value = JP_LOW + if(ENGSEC) + if(job_engsec_high & fval) + new_value = JP_HIGH + else if(job_engsec_med & fval) + new_value = JP_MEDIUM + else if(job_engsec_low & fval) + new_value = JP_LOW + if(new_value) + job_preferences[initial(J.title)] = new_value /datum/preferences/proc/load_path(ckey,filename="preferences.sav") if(!ckey) @@ -425,15 +478,10 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["moth_wings"] = sanitize_inlist(features["moth_wings"], GLOB.moth_wings_list) joblessrole = sanitize_integer(joblessrole, 1, 3, initial(joblessrole)) - job_civilian_high = sanitize_integer(job_civilian_high, 0, 65535, initial(job_civilian_high)) - job_civilian_med = sanitize_integer(job_civilian_med, 0, 65535, initial(job_civilian_med)) - job_civilian_low = sanitize_integer(job_civilian_low, 0, 65535, initial(job_civilian_low)) - job_medsci_high = sanitize_integer(job_medsci_high, 0, 65535, initial(job_medsci_high)) - job_medsci_med = sanitize_integer(job_medsci_med, 0, 65535, initial(job_medsci_med)) - job_medsci_low = sanitize_integer(job_medsci_low, 0, 65535, initial(job_medsci_low)) - job_engsec_high = sanitize_integer(job_engsec_high, 0, 65535, initial(job_engsec_high)) - job_engsec_med = sanitize_integer(job_engsec_med, 0, 65535, initial(job_engsec_med)) - job_engsec_low = sanitize_integer(job_engsec_low, 0, 65535, initial(job_engsec_low)) + //Validate job prefs + for(var/j in job_preferences) + if(job_preferences[j] != JP_LOW && job_preferences[j] != JP_MEDIUM && job_preferences[j] != JP_HIGH) + job_preferences -= j all_quirks = SANITIZE_LIST(all_quirks) positive_quirks = SANITIZE_LIST(positive_quirks) From 9cbd8af5b97d5712bc44d1ba70ae46569c17f3e8 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 18 Aug 2019 14:38:10 -0500 Subject: [PATCH 041/324] Updates colors, fixes alignment issues. --- code/__DEFINES/jobs.dm | 24 +++++++------- .../jobs/job_types/atmospheric_technician.dm | 2 +- .../jobs/job_types/cargo_technician.dm | 2 +- code/modules/jobs/job_types/chemist.dm | 2 +- code/modules/jobs/job_types/chief_engineer.dm | 2 +- .../jobs/job_types/chief_medical_officer.dm | 2 +- code/modules/jobs/job_types/detective.dm | 2 +- code/modules/jobs/job_types/geneticist.dm | 2 +- .../jobs/job_types/head_of_personnel.dm | 2 +- .../jobs/job_types/head_of_security.dm | 2 +- code/modules/jobs/job_types/medical_doctor.dm | 2 +- code/modules/jobs/job_types/quartermaster.dm | 2 +- .../jobs/job_types/research_director.dm | 2 +- code/modules/jobs/job_types/roboticist.dm | 2 +- code/modules/jobs/job_types/scientist.dm | 2 +- .../jobs/job_types/security_officer.dm | 2 +- code/modules/jobs/job_types/shaft_miner.dm | 2 +- .../jobs/job_types/station_engineer.dm | 2 +- code/modules/jobs/job_types/virologist.dm | 2 +- code/modules/jobs/job_types/warden.dm | 2 +- .../modules/mob/dead/new_player/new_player.dm | 31 +++++++++++-------- 21 files changed, 49 insertions(+), 44 deletions(-) diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index e6b1d77f8a..e6eb9f313e 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -57,18 +57,18 @@ #define JOB_DISPLAY_ORDER_ASSISTANT 1 #define JOB_DISPLAY_ORDER_CAPTAIN 2 #define JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL 3 -#define JOB_DISPLAY_ORDER_QUARTERMASTER 4 -#define JOB_DISPLAY_ORDER_CARGO_TECHNICIAN 5 -#define JOB_DISPLAY_ORDER_SHAFT_MINER 6 -#define JOB_DISPLAY_ORDER_BARTENDER 7 -#define JOB_DISPLAY_ORDER_COOK 8 -#define JOB_DISPLAY_ORDER_BOTANIST 9 -#define JOB_DISPLAY_ORDER_JANITOR 10 -#define JOB_DISPLAY_ORDER_CLOWN 11 -#define JOB_DISPLAY_ORDER_MIME 12 -#define JOB_DISPLAY_ORDER_CURATOR 13 -#define JOB_DISPLAY_ORDER_LAWYER 14 -#define JOB_DISPLAY_ORDER_CHAPLAIN 15 +#define JOB_DISPLAY_ORDER_BARTENDER 4 +#define JOB_DISPLAY_ORDER_COOK 5 +#define JOB_DISPLAY_ORDER_BOTANIST 6 +#define JOB_DISPLAY_ORDER_JANITOR 7 +#define JOB_DISPLAY_ORDER_CLOWN 8 +#define JOB_DISPLAY_ORDER_MIME 9 +#define JOB_DISPLAY_ORDER_CURATOR 10 +#define JOB_DISPLAY_ORDER_LAWYER 11 +#define JOB_DISPLAY_ORDER_CHAPLAIN 12 +#define JOB_DISPLAY_ORDER_QUARTERMASTER 13 +#define JOB_DISPLAY_ORDER_CARGO_TECHNICIAN 14 +#define JOB_DISPLAY_ORDER_SHAFT_MINER 15 #define JOB_DISPLAY_ORDER_CHIEF_ENGINEER 16 #define JOB_DISPLAY_ORDER_STATION_ENGINEER 17 #define JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN 18 diff --git a/code/modules/jobs/job_types/atmospheric_technician.dm b/code/modules/jobs/job_types/atmospheric_technician.dm index 31d66eced2..93775beca9 100644 --- a/code/modules/jobs/job_types/atmospheric_technician.dm +++ b/code/modules/jobs/job_types/atmospheric_technician.dm @@ -7,7 +7,7 @@ total_positions = 3 spawn_positions = 2 supervisors = "the chief engineer" - selection_color = "#fff5cc" + selection_color = "#ff9b3d" exp_requirements = 60 exp_type = EXP_TYPE_CREW diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm index 9699f12be5..3ceb29bae2 100644 --- a/code/modules/jobs/job_types/cargo_technician.dm +++ b/code/modules/jobs/job_types/cargo_technician.dm @@ -7,7 +7,7 @@ total_positions = 3 spawn_positions = 2 supervisors = "the quartermaster" - selection_color = "#dcba97" + selection_color = "#ca8f55" outfit = /datum/outfit/job/cargo_tech diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm index 908209ef69..a915d261ed 100644 --- a/code/modules/jobs/job_types/chemist.dm +++ b/code/modules/jobs/job_types/chemist.dm @@ -7,7 +7,7 @@ total_positions = 2 spawn_positions = 2 supervisors = "the chief medical officer" - selection_color = "#ffeef0" + selection_color = "#74b5e0" exp_type = EXP_TYPE_CREW exp_requirements = 60 diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index a4b197d479..da3f281267 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -9,7 +9,7 @@ total_positions = 1 spawn_positions = 1 supervisors = "the captain" - selection_color = "#ffd699" + selection_color = "#ee7400" req_admin_notify = 1 minimal_player_age = 7 exp_requirements = 180 diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index f0f044e6b1..4c7249f048 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -9,7 +9,7 @@ total_positions = 1 spawn_positions = 1 supervisors = "the captain" - selection_color = "#99ffe6" + selection_color = "#509ed1" req_admin_notify = 1 minimal_player_age = 7 exp_requirements = 180 diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index 82745ae9fb..27a54fbd1f 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -8,7 +8,7 @@ total_positions = 1 spawn_positions = 1 supervisors = "the head of security" - selection_color = "#ffeeee" + selection_color = "#c02f2f" minimal_player_age = 7 exp_requirements = 300 exp_type = EXP_TYPE_CREW diff --git a/code/modules/jobs/job_types/geneticist.dm b/code/modules/jobs/job_types/geneticist.dm index 6006ff1083..d7f59ff883 100644 --- a/code/modules/jobs/job_types/geneticist.dm +++ b/code/modules/jobs/job_types/geneticist.dm @@ -7,7 +7,7 @@ total_positions = 2 spawn_positions = 2 supervisors = "the chief medical officer and research director" - selection_color = "#ffeef0" + selection_color = "#74b5e0" exp_type = EXP_TYPE_CREW exp_requirements = 60 diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index d373b8c181..e320ce20b4 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -9,7 +9,7 @@ total_positions = 1 spawn_positions = 1 supervisors = "the captain" - selection_color = "#cccccc" + selection_color = "#3a8529" req_admin_notify = 1 minimal_player_age = 10 exp_requirements = 180 diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 961b9ea58f..3ccbcbfc15 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -9,7 +9,7 @@ total_positions = 1 spawn_positions = 1 supervisors = "the captain" - selection_color = "#ff9999" + selection_color = "#b90000" req_admin_notify = 1 minimal_player_age = 14 exp_requirements = 300 diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm index e3379e4be1..19fa1c7158 100644 --- a/code/modules/jobs/job_types/medical_doctor.dm +++ b/code/modules/jobs/job_types/medical_doctor.dm @@ -7,7 +7,7 @@ total_positions = 5 spawn_positions = 3 supervisors = "the chief medical officer" - selection_color = "#ffeef0" + selection_color = "#74b5e0" outfit = /datum/outfit/job/doctor diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index a3830e389f..49a93026ba 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -9,7 +9,7 @@ total_positions = 1 spawn_positions = 1 supervisors = "the captain" - selection_color = "#ead4ae" + selection_color = "#a06121" req_admin_notify = 1 minimal_player_age = 7 exp_requirements = 180 diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index 5b239c44e0..5368ceee64 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -9,7 +9,7 @@ total_positions = 1 spawn_positions = 1 supervisors = "the captain" - selection_color = "#e6b3e6" + selection_color = "#7544cc" req_admin_notify = 1 minimal_player_age = 7 exp_type_department = EXP_TYPE_SCIENCE diff --git a/code/modules/jobs/job_types/roboticist.dm b/code/modules/jobs/job_types/roboticist.dm index ef3c1277a1..782b175ad4 100644 --- a/code/modules/jobs/job_types/roboticist.dm +++ b/code/modules/jobs/job_types/roboticist.dm @@ -7,7 +7,7 @@ total_positions = 2 spawn_positions = 2 supervisors = "the research director" - selection_color = "#ffeeff" + selection_color = "#9574cd" exp_requirements = 60 exp_type = EXP_TYPE_CREW diff --git a/code/modules/jobs/job_types/scientist.dm b/code/modules/jobs/job_types/scientist.dm index e3f04f0b29..f40a25d6ba 100644 --- a/code/modules/jobs/job_types/scientist.dm +++ b/code/modules/jobs/job_types/scientist.dm @@ -7,7 +7,7 @@ total_positions = 5 spawn_positions = 3 supervisors = "the research director" - selection_color = "#ffeeff" + selection_color = "#9574cd" exp_requirements = 60 exp_type = EXP_TYPE_CREW diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index bb54ed0a6c..4f12d6a19c 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -8,7 +8,7 @@ total_positions = 5 //Handled in /datum/controller/occupations/proc/setup_officer_positions() spawn_positions = 5 //Handled in /datum/controller/occupations/proc/setup_officer_positions() supervisors = "the head of security, and the head of your assigned department (if applicable)" - selection_color = "#ffeeee" + selection_color = "#c02f2f" minimal_player_age = 7 exp_requirements = 300 exp_type = EXP_TYPE_CREW diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index 1c662b8e8f..c1b0c643c6 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -7,7 +7,7 @@ total_positions = 3 spawn_positions = 3 supervisors = "the quartermaster" - selection_color = "#dcba97" + selection_color = "#ca8f55" outfit = /datum/outfit/job/miner diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm index 4a2a2c7fd2..55381549ba 100644 --- a/code/modules/jobs/job_types/station_engineer.dm +++ b/code/modules/jobs/job_types/station_engineer.dm @@ -7,7 +7,7 @@ total_positions = 5 spawn_positions = 5 supervisors = "the chief engineer" - selection_color = "#fff5cc" + selection_color = "#ff9b3d" exp_requirements = 60 exp_type = EXP_TYPE_CREW diff --git a/code/modules/jobs/job_types/virologist.dm b/code/modules/jobs/job_types/virologist.dm index 26f38e594b..dcc13af627 100644 --- a/code/modules/jobs/job_types/virologist.dm +++ b/code/modules/jobs/job_types/virologist.dm @@ -7,7 +7,7 @@ total_positions = 1 spawn_positions = 1 supervisors = "the chief medical officer" - selection_color = "#ffeef0" + selection_color = "#74b5e0" exp_type = EXP_TYPE_CREW exp_requirements = 60 diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index d7691cb488..eb0ce292c8 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -8,7 +8,7 @@ total_positions = 1 spawn_positions = 1 supervisors = "the head of security" - selection_color = "#ffeeee" + selection_color = "#c02f2f" minimal_player_age = 7 exp_requirements = 300 exp_type = EXP_TYPE_CREW diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 5ea556304e..cd0d19f543 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -37,7 +37,8 @@ return /mob/dead/new_player/proc/new_player_panel() - var/output = "

Setup Character

" + var/output = "

Welcome, [client ? client.prefs.real_name : "Unknown User"]

" + output += "

Setup Character

" if(SSticker.current_state <= GAME_STATE_PREGAME) switch(ready) @@ -444,7 +445,7 @@ if(SEC_LEVEL_RED) level = "red" if(SEC_LEVEL_DELTA) - level = "delta" + level = "delta" var/dat = "
Round Duration: [DisplayTimeText(world.time - SSticker.round_start_time)]
Alert Level: [capitalize(level)]
" if(SSshuttle.emergency) @@ -457,17 +458,18 @@ for(var/datum/job/prioritized_job in SSjob.prioritized_jobs) if(prioritized_job.current_positions >= prioritized_job.total_positions) SSjob.prioritized_jobs -= prioritized_job - dat += "
" + dat += "
" var/column_counter = 0 - for(var/list/category in list(GLOB.command_positions) + list(GLOB.engineering_positions) + list(GLOB.supply_positions) + list(GLOB.nonhuman_positions - "pAI") + list(GLOB.civilian_positions) + list(GLOB.medical_positions) + list(GLOB.science_positions) + list(GLOB.security_positions)) + var/free_space = 0 + for(var/list/category in list(GLOB.command_positions) + list(GLOB.supply_positions) + list(GLOB.engineering_positions) + list(GLOB.nonhuman_positions - "pAI") + list(GLOB.civilian_positions) + list(GLOB.medical_positions) + list(GLOB.science_positions) + list(GLOB.security_positions)) var/cat_color = "fff" //random default if(SSjob.name_occupations && SSjob.name_occupations[category[1]]) cat_color = SSjob.name_occupations[category[1]].selection_color //use the color of the first job in the category (the department head) as the category color else cat_color = SSjob.occupations[category[1]].selection_color - dat += "
" dat += "[SSjob.name_occupations[category[1]].exp_type_department]" + var/list/dept_dat = list() for(var/job in category) var/datum/job/job_datum = SSjob.name_occupations[job] @@ -484,10 +486,16 @@ dat += jointext(dept_dat, "") dat += "

" column_counter++ - if(column_counter > 0 && (column_counter % 3 == 0)) + if(free_space <=4) + free_space++ + if(column_counter > 0 && (column_counter % 3 == 0)) + dat += "
" + if(free_space >= 5 && (free_space % 5 == 0) && (column_counter % 3 != 0)) + free_space = 0 + column_counter = 0 dat += "" - dat += "
" - dat += "" + + dat += "
" var/available_ghosts = 0 for(var/spawner in GLOB.mob_spawners) @@ -502,7 +510,6 @@ if(!available_ghosts) dat += "
There are currently no open ghost spawners.
" else - dat += "
Currently open Ghost roles:

" var/list/categorizedJobs = list("Ghost Role" = list(jobs = list(), titles = GLOB.mob_spawners, color = "#ffffff")) for(var/spawner in GLOB.mob_spawners) if(!LAZYLEN(spawner)) @@ -512,10 +519,8 @@ continue categorizedJobs["Ghost Role"]["jobs"] += spawner - dat += "\s*$/g,rb={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"
" + dat += "
" for(var/jobcat in categorizedJobs) - if(categorizedJobs[jobcat]["colBreak"]) - dat += "" if(!length(categorizedJobs[jobcat]["jobs"])) continue var/color = categorizedJobs[jobcat]["color"] @@ -528,7 +533,7 @@ dat += "
" dat += "" - var/datum/browser/popup = new(src, "latechoices", "Choose Profession", 680, 580) + var/datum/browser/popup = new(src, "latechoices", "Choose Profession", 720, 600) popup.add_stylesheet("playeroptions", 'html/browser/playeroptions.css') popup.set_content(jointext(dat, "")) popup.open(FALSE) // FALSE is passed to open so that it doesn't use the onclose() proc From 2ad94dccac95846cb236584e614d241110de662b Mon Sep 17 00:00:00 2001 From: Sishen Date: Sun, 18 Aug 2019 21:11:16 -0400 Subject: [PATCH 042/324] Update dynamic_rulesets_roundstart.dm --- code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index 76b1952492..2d829e448a 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -203,6 +203,7 @@ cost = 30 requirements = list(100,90,80,60,40,30,10,10,10,10) high_population_requirement = 10 + pop_per_requirement = 5 flags = HIGHLANDER_RULESET var/cultist_cap = list(2,2,2,3,3,4,4,4,4,4) var/datum/team/cult/main_cult @@ -262,6 +263,7 @@ cost = 40 requirements = list(90,90,90,80,60,40,30,20,10,10) high_population_requirement = 10 + pop_per_requirement = 5 flags = HIGHLANDER_RULESET var/operative_cap = list(2,2,2,3,3,3,4,4,5,5) var/datum/team/nuclear/nuke_team From 8fdb1c59d5220870e4bf70b3cf60ffa69bfe593d Mon Sep 17 00:00:00 2001 From: Sishen Date: Sun, 18 Aug 2019 21:16:07 -0400 Subject: [PATCH 043/324] Update dynamic_rulesets_roundstart.dm --- code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index 2d829e448a..ee5ad46fb7 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -154,7 +154,7 @@ minimum_required_age = 14 restricted_roles = list("Head of Security", "Captain") // Just to be sure that a wizard getting picked won't ever imply a Captain or HoS not getting drafted required_candidates = 1 - weight = 2 + weight = 1 cost = 30 requirements = list(90,90,70,40,30,20,10,10,10,10) high_population_requirement = 10 From a351d8f99574653405447c65d356c2627b38d85f Mon Sep 17 00:00:00 2001 From: Code-Cygnet <54194215+Code-Cygnet@users.noreply.github.com> Date: Sun, 18 Aug 2019 21:34:31 -0400 Subject: [PATCH 044/324] Update captain.dm Attempted error fix. --- code/modules/jobs/job_types/captain.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index dd8cc5a887..1e64773607 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -21,8 +21,12 @@ Captain access = list() //See get_access() minimal_access = list() //See get_access() + mind_traits = list(TRAIT_CAPTAIN_METABOLISM) + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/prosopagnosia, /datum/quirk/insanity) + + /datum/job/captain/get_access() return get_all_accesses() From 5840284e9ea12f6cdd52681e9c2588236f8a4b7d Mon Sep 17 00:00:00 2001 From: Code-Cygnet <54194215+Code-Cygnet@users.noreply.github.com> Date: Sun, 18 Aug 2019 22:14:41 -0400 Subject: [PATCH 045/324] Update alcohol_reagents.dm Edited a typo at line 2144. --- code/modules/reagents/chemistry/reagents/alcohol_reagents.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 35efd651df..8b787b5839 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -2141,7 +2141,7 @@ All effects don't start immediately, but rather get worse over time; the rate is M.adjustOxyLoss(-3.5,0) M.adjustFireLoss(-3.5,0) M.adjustToxLoss(-3.5,0) - M.radiation = max(M.raddiation - 25, 0) + M.radiation = max(M.radiation - 25, 0) . = 1 return ..() From c8810be706cecde36d49a54a8a5970fb628e346e Mon Sep 17 00:00:00 2001 From: Code-Cygnet <54194215+Code-Cygnet@users.noreply.github.com> Date: Sun, 18 Aug 2019 22:15:52 -0400 Subject: [PATCH 046/324] Update captain.dm --- code/modules/jobs/job_types/captain.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index 3d705ffef5..58943df4e4 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -21,7 +21,7 @@ Captain access = list() //See get_access() minimal_access = list() //See get_access() - mind_traits = list(TRAIT_CAPTAIN_METABOLISM) + mind_traits = list(TRAIT_CAPTAIN_METABOLISM) blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity) From 70e3964fd2561f7bfcdd790613196c8b68e57f68 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 18 Aug 2019 21:22:10 -0500 Subject: [PATCH 047/324] Update head_of_security.dm --- code/modules/jobs/job_types/head_of_security.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 961b9ea58f..249e426c96 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -47,7 +47,7 @@ suit_store = /obj/item/gun/energy/e_gun r_pocket = /obj/item/assembly/flash/handheld l_pocket = /obj/item/restraints/handcuffs - backpack_contents = list(/obj/item/melee/baton/loaded=1) + backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1) backpack = /obj/item/storage/backpack/security satchel = /obj/item/storage/backpack/satchel/sec From 43541b043d177e484f45d499143c10a608b8e993 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 18 Aug 2019 21:27:00 -0500 Subject: [PATCH 048/324] Update warden.dm --- code/modules/jobs/job_types/warden.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index d7691cb488..23d964dad3 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -42,7 +42,7 @@ glasses = /obj/item/clothing/glasses/hud/security/sunglasses r_pocket = /obj/item/assembly/flash/handheld l_pocket = /obj/item/restraints/handcuffs - suit_store = /obj/item/gun/energy/disabler + suit_store = /obj/item/gun/energy/e_gun/advtaser backpack_contents = list(/obj/item/melee/baton/loaded=1) backpack = /obj/item/storage/backpack/security From 8ad705ec74ccf8237699f10ed827930361f2b072 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Mon, 19 Aug 2019 02:16:30 -0500 Subject: [PATCH 049/324] Update curator.dm --- code/modules/jobs/job_types/curator.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/curator.dm b/code/modules/jobs/job_types/curator.dm index 6199d812df..7f02b6721f 100644 --- a/code/modules/jobs/job_types/curator.dm +++ b/code/modules/jobs/job_types/curator.dm @@ -30,7 +30,8 @@ accessory = /obj/item/clothing/accessory/pocketprotector/full backpack_contents = list( /obj/item/soapstone = 1, - /obj/item/barcodescanner = 1 + /obj/item/barcodescanner = 1, + /obj/item/melee/curator_whip = 1 ) /datum/outfit/job/curator/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) From cce33ec7e58be535aa982c2620a14d038a49b2ac Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 19 Aug 2019 07:17:57 -0400 Subject: [PATCH 050/324] Update drink_reagents.dm --- code/modules/reagents/chemistry/reagents/drink_reagents.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 978fa54d0f..f80206c04a 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -891,10 +891,10 @@ taste_description = "sugar and catnip" glass_icon_state = "teaglass" glass_name = "glass of catnip tea" - glass_desc = "A purfect drink for a cat." + glass_desc = "A purrfect drink for a cat." /datum/reagent/consumable/catnip_tea/on_mob_life(mob/living/carbon/M) - M.getStaminaLoss(min(50 - M.getStaminaLoss(), 3)) + M.adjustStaminaLoss(min(50 - M.getStaminaLoss(), 3)) if(prob(20)) M.emote("nya") if(prob(20)) From c10c78eb2737871428840604a7a78515a6107446 Mon Sep 17 00:00:00 2001 From: TrilbySpaceClone Date: Mon, 19 Aug 2019 07:56:20 -0400 Subject: [PATCH 051/324] readds cotten sprites --- icons/obj/hydroponics/harvest.dmi | Bin 51397 -> 51850 bytes icons/obj/hydroponics/seeds.dmi | Bin 22135 -> 22302 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi index ef84c20d5676413280a17f1d0b4c722a0dec8dd0..5f1a9b0515798506bddc2fdddd12d975a779c929 100644 GIT binary patch delta 17450 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 SZnGx?5O})!xvX1ns6oy6`q#Fh)X@OyYVdfv- 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 diff --git a/icons/obj/hydroponics/seeds.dmi b/icons/obj/hydroponics/seeds.dmi index b65f395598697a0f832209bcf774799e4b5adc3a..1cdb720dca490f167c133b8d48d09d57c0a90399 100644 GIT binary patch literal 22302 zcmbSz1yoy6m+lP|cUqtn*HW}taVw=1DbiA0+akqX0|Y5hoZ@aRh2rkP-Q5bo-91S1 z(*K`%Yu3#C@6DREl6#YD=j?rN&bQC^?VWFGD)I!lPjCSMAW(So>Ky=pj8SiCY)sS^ z|Dilj06^RI)X;W*W$N_F@r%9l7du-3a8FB5Y_omDiyt)7sLJba6~=bnYRZ#Ow(AE) zbL3kJuU4TJQTa76;WRt$&sNl7qjiJmd?aHuFwlo;53Yd}u98YbR~O_wDNqAS!+X4FVVcH3$HK$HyjgeXfGy$pKk>QhJ| zqtNS<_AF~2KJQK5i4iI?yrYx##zqA8A;ZJz=L)4=P%p`EBlY?%5Ew&JO`*P4POicz zNqZVOhVQMcXG{yjbaGk0a~2#8AL|*$uEEC!7rrE9k66xjLi@RSp!fMPaXJC(Gl8Ri z<9te;G@3`27qrHt8Cdpt`z*X(9b{j>rwwRkvzi(k*JemFJ=(hQliMt>C*LqCzKr*z z36Zq#iLoFZ5G}j&OHvP(q<9IqRd|+QIcmzh>-_$RUDU1%`}XYh$Sf8aj5ONm5c6=B zy)!$UE9-Ie2+`=%hx@9B-|oqovCIX};a*qSQHPyo5uBdvUh3`-Q&ptcWg)xYAc6-HU0jAF`8!OTEi-7M?;GWA&BGFpGDXe?5hpEHKDkU z?w}k_#;iw=IKP7Qa1&lW`&vUSvE!}c3`75I3p(xJN6j;A9*B909w#A7kw27XQJIygZ#7l5 z$TnN5RZs7J{9xvmlA>#CYb(=uNJ`2)qWU(qkL=MV6WjC03A_0uskZfZzs;XIz~K08 zMv5x!?+$JdDr0bVUa8JEs2*~2vJsom(yHCwNbBi;tT5Bkpl{4ldxx|5&z{0>u-Xe# ziJF?c)eLn%RwN|GXI)!n{~$Fig-3^V8oReXlo)%MXy5m_xRv1ZYTOS}pF)S??eQjTAN$}L?X3uKOnUX0*_LXX$$SnlvQ0)iCppo|EPnpR@z_Ed6><>~EMa9+j z_I6@w>hQ9%=bz2ZQ;Xnmc<=CVf<}A67ykOJEaF!LQ1ts7N&hnuqm&}bUp}()RMPt|X40AQDjO0>Mu z_YPb@!ePW?=Wz-O`Ch8FAsr6>>Up4BybfOhxt8H&m}o*tI?QDfTPR^al~TDhp(Z9K zr3!vH1^kokIz*8nkgF z==rPYq5^gyiLnXm_|)=G_Yu3@zwNE>KyMm;r78Gy9_yGD{=xn(_+jI9bXtLD;T9h1 zbMem!tQGBVM`lCjL*^;v*UJ3U7W2afUgb_RhH^Dqy**ClmMi+yaQ6~Mcu}VpzvGO7 z+p}hzT0y@S)x&d9W)VEbjR$2;-Z_s7E55BQ2{nnP`IA3ih1W$+2QFInsvG-ga zP$k=r#6)eaZYk5B39D&u4hbxT9KaYER){Bh8w&ewWN;q9mxf7~Dm@Ar>rt1U9+2xBK^!0_wDqNO;~|8ji66Gh>t-qf-pW z85kJs!aF{dh(0W$(^jf0c8-re{&^0IcDfTLJeX}0zn#5mj7g0NGi>(SV;NNJ23;v* zUWvC#*oilv&@M15Z-Evd+3q@_?wb83&0uo_aeN?2z`@@T`aW;atbzuJ4teFQH*?dL zh$x#GQnhxL_?Wv#7E|_JUlBbWzj2+f z&e}4D^u`ud5ufNmHq0Dv>VEv3XEY%#i^s0Gf4{4cwsWT0xZ}vbw~A^SBTqSbNFVA~ z;+?!fQk-OYP+^TB^x_2w*exu{&ijofSiKMRj*nZCo||%VUoCfdJyA*#|9k;6_kh;| zhhpydNQ`B9q52jCeE)SMf0y8pKoJ)cK^NZDP1LPxsP^&!yrG@Ulx<3t$AwGqtaM%G z+aZ>0Aa}^@wrAaS4@UzR=QFN`NE}(MEL2+;7cO<0?io6l&HQ;Qp6cJm?2p2~ut8Ip zyj;Ivp#vH&AJa86gD|To>_o7XJ=x1UOgFNM-Gf2PhDP1YUi0Iuk_tXTEd@v z6i8?BcjrOVzHZYl^4Tn#+xYnd|0f&2`#xIDeGAPup=aN`r7Td61^#HBVn9}|7E6zu zxS%Nk$zci4hg#ga1%TE(w}ib)9c$TpA~9uG{zo9}JCooKTLAhC>}%JAQV6|?iT*Qg zG_@OMPKr9lhsoDvmoVj1TXHyVS;A4aY_RCQt*~>*K`lteU$I^H4p^Rj-TtyxcA2P# zCcLTvk8!i_Rh-i(5$6UTusf4z@;Hl5dqB$=WyYiUqkVJ2y^Vp2i`0-;Y4VXi#?Oqh znyurbOT&Ddaux|~Ob2wKwPKM{`=dmDTmi+}Q)uKqwpNM_^B+CL+P{L|kDJEZ*+SE* z?&}@&P7)IPQ+e+G%*NSo+)!3Pj-5WeAC~}M|1N?z+zp{d22j>oLMgXzWf43`O6c%S z!`$3l#irg({SiEk$8HDQkx7-BV#k%k-Hi^^)3G{y)SCAyIoJBsuy|&qm&_rGyh!vK za1<0MALw`aw`Em6@qp1|e(t@`^-t#g(6L?}`C40}Kp_#&kUX7^wCXfrV5Znp#TmM| zdiA6E$rBmk2MiL$N^n-+<$Xz;(6v$bTD z?^Z?>0AXQ!0HBkh(t2&YX8Nua^i>dm90NkeuiT16y_BC&4kYvFw*DR3{oBD0Ffcpb z(FlHwUDx`dC5rr96vUwhlA$&(AQXva9H5~LW%p}j+CN^SOz+#>BGftTJ+^4aFDb7f zi7bgM(`b1!uM8)RjVoH|AMk7Zs3Ghe&9Bqk1POHCf%#@4*XZ;uRR|BG!aENKm1A8r zU{Lq{Ok^B0%t2atH<>R>9ZPtYVXw__6|v~|GV2GSeTBTcg_iMWq9Rd;PEX3pUJ91w z$*N?1H8t!UOqgGOn{2eh?vK6{hh3o`G`D2$>EaIGW;rAJvog78(nobkz_?M8~ChFtkt7zcrMuv+N~oPwGH9dxk~@i9%b(Q=C0J4G=uM!WLRpD zj#lMu2<;5k&Mi+;5g7qtU5Yo^f{>2_oHPby9&7lP9qcjX#REQm$(=GYQ{TWmQLp{Q z8Rmk(%uL<@s;OF@CIf?$)ie?Jz1%2eO(_ZrYhfR1s}~EG@@yYp4X&eq)z%*$pFelR z?8ca@S*(w5opa3kO|rcja{OGi==TU8&&O$aj&1)lO&|4u;Mtm=LLN|UI3YEkMgmyM z4F#2=w&-OHgp`R?%tLODPLEjVvJ)Ca-a+w`VtI_V==s+k_BpKu5p-nUoXfQEej4n* z>Jo9XNA!}U@@bgx7R+t5Cgb%wR>@AwdcV5M&3oONy-`2C1Bk6T;d(Znp#y2`a++q( zSOwwToR`j+Xn2H?4V0(F4IF$x^SbhfdUa8wf1oMKfhgE~6}9)N<{eaAxK03lnZ>#U zcc8B;%xN>Jc-paBh?NXb3+1GvpnoxXcS?(A-YG)+*3Y2N1u_9jyuP=AI?-EhHib0E zZ#rMgJl-E70xAGwd0FLMNKQa*(a@EX95tZd;EW^Tb@^)HBu7^}9#$|hTGgkJ4&Qp= zbS;KRSbiGWMI~X@_09CoCsU_pe4E#b`i$-!^VI>g5da*98^dWUe;}0Y?pssFu&R>0 zY@*anBVuFeri*WhRaAWJ9Zx@{EFP=`FA&u5^-`5-fqY7^Yni1+984S{8e0MvzoBK- zf3tJBtipP^Z=9JLG4I&ory_2xp zAvIvwp2%&`PO*pl^Z|N+Hr*{-JdLJXbIQ-6r%C#PMK6KW_3nm2*bt2UW`kw_`k@#} z%c2{F%0{hX?ZGGV$;_RIt<9Fe;3E&(v3u6#{SsEQxm+R(5=!;JL)qNpQ7Uf|$xn|M znL?8kXZ!kyj+$%Hv~c|v8@2cbFpS^T)F>tmND3=@l>k3oS|jxXkA~#y3QP;do9x?% z2@0AU7(158C@)LiXo;)^HgiOetmwZ*Z^t6!ORg5m91-?KU)j6*A>&nI94`n*!bg1V zw?`S=Jv`c`rpShehwWWmyK7-SVNp_u$1tB;uF$Zs;{MtOyj8Q6W49Cg3v<{FnQ%EL z4!2s~#lrRIj6KRw<3|t;1TTkSZ*oZO?O}WD0F6VrcCaDT_1ay53AMGC*(lm>1upuC zf+APT!dE%vIh~kWaTnyUJ#UsWTKO@t@iz^pi&$~ZP zrSwcrEH_uK9fyk?4#<0+-0bXp(|TQ^W|u z>nvV)Z{6o-_27S-=5#G z*>6?+MJ3xdKg_nzwlJeVCog>-fgziCdTYgIX!1l!*iKO6$m*n?XyK2rIkbzT_v&Lg z;jdHp4%P158|~Ja8H)LHfjYN?eop?gaJmMhMo_erTgOHME+A!ditbr97Zeo4C@cbJ zK$4DTIuH%|JrhL^NS;MGN0KxL2 z3>$@4y9o)0X>VQXOPjuKs@c>dEfIvL@1koGn82ak*~I7n7=;%f{Oq3j;HR0Re3q(3g9)b#;#eu*yZQ*@-FD9~}9iXc5$+ z?(TiEk0{6dB|IUayiekIJvM|^i14kPocjt4i3v0vANl4Ms=A5>P^`e! zW4%7bU+RN|Ba!n^i5ce^2m@^6WZj&Flc#3Taa($dgbODzP0-)e#MJlj9#jMPs9iQJ~zix{_jUU znUfzk@u5g9+sTQ%6|kr1@32rcuQkk5-&=xeA=|8meC(}>iEP`L@;GhMm0Ajh^EpLE z!)ds0U4Z>0*5JbzYgXWs(%|P8$XOc5L*maI&SGV8rGU~-%?7Gz-_~NR^LUmk7?SUW zjp4UDC2B)YI9cA@?w5(I#RjtboZOY&9UP#dZ-)52cNGNcO9m)ko-7r?HCw`>3O(j1 zYuvwn;iSAx{G29CKB55)!Z%2P@DFIRGa7+d)|J@8>;c=&@WhC`@~rwM>PthzgU^ML zA)_OSsWps&;p3(;b{{BSbr;0mILI^voeHM$VA;$_IlEWP!QY+T_C0(Z#gqWGc7;w_ z2qj7NER5d`e}^Jp{@Q#GJ<#VWk@eVN1)A&$u>4NP-`34L_Hl~{`>tcB3=F&_tU=(< zkq4H5o;6U$4N`auRt;eAIDOQ5LR$6iw2=2%y06Qo@)#VE`lIE^0%~R-Hk`O-X%QtM zA?u9TLdGL3jcdJp-c$|oI=qU94*+IX<|hW}9K6qBcF5}DhM(FJh)$u^;Dsgci#}(q9)bJB{+y@p z{{>b;9q5Sni>tGn=f&zC9rX3Pckjd)Dte7h`f)jvYXd!?tp_(ZFh#hgQRKL(@!SQ&U6&$_ROpzHdL>P+rPzU1qH$+#KgnF<5#t9wzPb^0MzUT=KMYCKu~vqE0o z?&4G`?#w1mFG<_88KmZb5QlLOh_}GJAM%=J**Lfe%j?_1GWu6(1)Am0QOBbtt-Z9` zE~_CIs+b$^q0z{V$=Mj-`0AN&Pnmph+tbOOd@|klh5_ex6DtpQ15!?(aB4RJ{4FB( z8j)b6y|3hibi3{1wM`6%(au)p=|-R3)8!Bn-dLhX9~~6J4w}>a9Au_#MOAHC>}#m= zEgv)pGl~yBEZnUelp={!g$KcnR3akKAtL2Y%PU8Iyirkpg}*o~?IznhVCa#Q6&`wG{~cjt*3C7Vm?2X0!xuhJ5%(bS9lk zs1xbh`ooZsH022h3xN)#6PEFND<5e*v(HAe7-#r1L5a;NEZlD)`)ae%ryx{m1U*OA zucrEv#5Uj$T=58bkbvxso~@G)mI&R(83Q0PSNQ$`mFUz4G%MTtAt*OYF6DQ{s74uI zOi$fhaHZ7{=OT`HsD2DzZLj!+T9J8z@c2remBz5ZIBVPXd<(YGQpAxLl>vGFa~+*h{fXk0~n{-jB8a{pfEL1rRS05T_D7R(gDq3T!3J zS4ezhwzfiiB{NtHO8bog2yg6-5?f>adW^_&dynMxWYGIwRt(>gQtwJ1q_(joi8B;q zSU4-yfYP`9ea5DT2ndG>JxLNa<5wq`GSL9qrZpL$Rj9@LlctYv71(cT%PH~6#McZOnk%=+<33|gHw`gU@sGTaO40ido^vV-xa`u%VxVz4+%wKMX zOS>@9HTkGMIozhIvV_dQX+EBT3`=(G3RZK<3qG_HKQ(%Gs!HhkH71Z~er4TQD_q>| z!CRWDke`EFnOhHg>xu%*W}gGn4qrs}pYUua_SF?NZk%Ey<1m83gKMu>Z%^0#2%_-6 zMci)I+Jz^yd^p8`E+V*q<*pv1SNBs^*nUEhv*~RG$S>-piu~{^B3Cx0oRLE97C+g<|vy1uC?&rdDXJWGQ@Egg0 z3>k_0T-rs4u=zFddbb{`?*bED+gABM$wwmff#-x7hb~L`{PQW`EN{0!5x8QyuZf&i z?)}l3BH6^f5Ey}?9m+0^J8WWk-Vi_MYS0s*0|W{&DVvd;)$TuseYGZf*kJF%v?52O zT5CfH=%NCi^1I8og}kUfwWavgSTK>ZrS9au{!h$A(RWYT_+g<}xnuS;Z&ei( zVz{nSGmln$?$v|G+!os2c^?ncF~cIm-;OvGP^3Qporumkm7jd1kWo69vyz38g~>S; zw=>>CII%QkFX#c$V>2$WHK6zQ34h)3ZO+ZYFMzL!D1LZGLv=a24W!Pl{rj20W&af- z3@h3?PZy4O=%QNptdef!uH$ZHWioKv!8;m?^zYLhTZR@@ah^mS$h;iS9Gmom{jB`y%~?q>SAm^YcP<6IgQVAn)ZL zY;*j};+}$!6E3p45{g#Bojf`mI#9Eipq7&>17Olpx=_%72-J)AZYkzaFzK=+$mw#U zheD$K!4bIP&u0t>A6J=EgfpBsOhCWSx%C$ZXMgDr+~YYk>NtDkKh0VePWC0i7W)3s3_ui-Gb0__Bs2nY%ehHNCnZ&`JLa%oxyF{ z16^us*W>`cB3m&skG2!5A@CaUZjwT;(p zcLU8*6?MvQ4yiqaUasCBP0G~SeSar*HX=6UjpxQYu=@tOH&Z%8^h-6f8)d$lni>S< z0p0~}Ke}p%!HRC@skV(*W{oEc-Ohyeo7cU)$WUdZ#}!@$68k7#3G{Dk`m1z0JR_y5e?DdxQ2dhR3oMESBi@}te8Bk~c?|y`KWl!aicTIL(&|q_l7A+Yz>61ISgl5N zXU_J?s=OX=b>#gG2tbJcq?_Old5EzVP`uGBA?M1ea4qTFIo^csN`pSivcEgHOxv^%*L9`NnJ&byEl|Oc|A!4-MMpxW& zAEZo~@c|B=bWp!vUgbU?2HcVW!BLNy%3>W0u?ynH&hGMpwHs8p$t1lLrtf(NMU%2z zJ3lpDyur}jD8#lDL<*|Q`46Yo3t-H8cEEQH94F571l*Yjn< zXA(?w1;L)uQnTzvt=$3k{?-JIjN0QLq7T}YXC>zF491jdisIrP#lOy7=?E(op5Loh?^JqnDprdF%Je=C!z&pMt1Ulri=xq3K-Yc=HoLUMp$VA1;1vw|O(3PX=We#Ki?aP8%FrrLv6m$9Cs~1D3~i-auEC!R`i)0?A3S|EfX@W{)Y@^ic74V$zh8ZT;BzcQNL3Mk9 zj0Y(vy+Fa3hbAiPX9&jCqz$RAm@0Pwb!DvHehij3K^)L@MHJJt1Nl|)YH@aabkhTcoDbs#v>OTTD8MO?V0Tm^d|zmY#5 z3nfj=WyW5e4)~{_?ktc0f8`Bz`nK(V&jtA3N*(_%fPZ<;^-W;vq3~yW={Vd3OU1{e{=-)w|9q-;Mh_HG5 zoxgMNU>%04uZ+qJf4(?HBVGLoLwbzRY@Twb$y#J0$~0!0g)~p^R%OL$`-k0UzJ*M=8PaCmPidx$_M=8M%%hrbQ<&qAo3;p@pa{R?-A!~J zJG!{UgruSkQx-O;E?Yq$IhUme0yHopb5AOuTiR%4jmi2y}RV z@y*STQ$Yv_J#2x9z)xKWQG!Q|xKqfIf8EF+|60PN z2BjK&rKf!VLGuAlt8zSixHa@pDrX=$>%AbD`c5*ff)tzeZUiC$jX`PU!f!1rys9(vG;4hkV!A4d`ZJMV_vXuAPe|&C zVP+N|T&pZroYLO*>P1K;KrU9N(E7N#r^2-Gn3>&?);A2;bv=3ZQNat~>s2goSN}rOjXVDbsn*1)+D> zx_}7w*%#PZd|IpTb!_m-2Qf}c6F%3j>0zlN-$HpX_%ZO@3PEyTrL!ZyjweqA&$+nA zTDkApK6u)z_1M=(q_O0=Or0)Je}=CD9-FI?Ox0_>As9a;9X6lBCGWKA<>EGU!ag}nK^#Bb20QLqGBR~7`-MMhW+YeMB&G{LOVDs@Md+y zr*y|KYAdnPc<8(6+}YPyu1O1*%;$^bqAbS6?Xa6z(rd!yz#oJ^z)^zW^7NcH7h z*kyR_aMRrj7n$=Uo4Z7MBR>^)87M%U*}DA*`|F9qsv1TW6_5pz_NBaqVDL30WdCST zL)MLRKQ=%NBCwknv0&egohw=#U{-vSJ#*d0%)m=1 z8is_vx_62l{03S7wDM0)nfNtpmgMl&MNMXjv``XSPll`rwDgMFeFr!GD;Q&%vtZ)t zwt}=2;whXZG0hh_{hQWy;YM^3tLPDqg2GLL-Kotu21Dz+nmo0fDXZS>SQ56OTTI|q z(pc{ELeSh!aJl-zI0o;6 zpTJT*oa~loWNI`ghpY4jQ+n)%rA2A+AXziAwB?UpMq&0hczt0f#VUy!YKS-QYC*oo z>^(+ES#{m|Ld3OXA2t@PYsoTU`_uo}in@6J*`Gc{@4rhe`)}r*|G#Xse|ZYSO~NbQ zCj`Foz)B6h*>2mTozjp}XM}{5Z`Y2GIBsL3eEYlmmEmBPk&%H>`voMHvIkJ6A)EUH zhWv|Kydx5mr+-LR;axlqQ}OZJtA~V2E(=uAXHrJBZ{+${NjTT3)z)z^PbnxRFc{ry^ zr&*CEhQ8`GC_J#(t_`J!Dl;LtX5~Owxd2}Sad#RniY3p@AK?Cj?#gW2Fw6Y%(e5M z;Ml3*A+j%0`?5SZEaG3rnM?F)ZAW*U?HwFs3=GoyEX~b>Q30a@%iZYyGkuFBsk<~t zl7qLsJrX0fIv>GB32vdCpR~0t*!Px z-8;U^afTWR&B}e%i95o)@Gc9(MZarMctSTy^H}0f1^D2GyJvgl?zDn_lPUzi&dU?U z(xHs77P|?Uv#e|S97qIc83Yikx}`zmqB11zM2i?Q4o9aZ(N@rzBivkFgH(P61O%Y( z?(QzHuTPq|*xN%;TPiCnf51y@RdUv;_)CcH(ymddK~`#X>Zdfsa}=PqmF*{!^5b9; zBi}tcrBYj?5d>C+_qA=!9l`D`YRX%_*Z9Xeo=i{_jEML>=$4l*dP-aQfzWc-YI$cJ zh!4ZVtnT$z8(DU(u7J{JR9EL0l*R}c{hDYS9wu~kbwxQ51R*ReOH=t3D*%f|`3-eV zO5(X0>v(ijlc_}Q1(Oim*7K(juFTm6@`YzNmST>qEkCq<^j52294Vy(I*fZal_*Sh z)mTIvOpH1DI{$GNb+2z|Zw^S;%y5}$wLj@;eY^hn z^0up1MYHej;(ZpXRq?#2Ry%^Pb$cgR7ZbG-&r^pm9~1w&r*)V=8ml^DJF|w^!FL@K zmiHE|Pa_LKJ!Ul2sS(Kj%r~E6QQe^t`N9IwOT_vv#Yfx2BdE67U3@F!;e>?KSB$O+ z?M(Xigi@xSu7fudAC!*YTN&5?ThU5SEArwZR5( zMEEnxJq&7aW{k>E6q+HT; zZ6=Z?o1qsk5*i(0(t2nvNiIL9L&@|*#S;&3#1Q>j2aR-$;cez)&GHWcgm7xRU;?hZ|`fxHmT(1y`f$- z>kCnUn)sHIav60X3^looTD75Q{$L$a-d(OV1#c37$3&*H=-PIG9Dm8@k%5E+31Y=? z`QAnO40h;66L1#Q-qr?MNtRl+)_5^-$D12awhiZf%rA<4R3zd*#w5#Y<{Z6Wzfg0M zd4#8>w7kFKhnY?&@^pB$eTp;}&iO{=`)k*9E6`JP;u@x<^VN4u&Qcb8JZsOcV(wT) zg3A_w*8ByTg6UFvqk6p-&vDVmz_QSblc2|nNi2FV?8c&y-_LpTs>10cJkt~q;~6s- zYkRWX9~Hx{UUc_+(f?-BM!6$TC8Ddw1}hr={)y+sd5@h`QBPT$x5M(@{cO#_-@T?4 zG`X)M+BfdNo!#B5cj#BHmIj)5+NQJj^u04>ES&u9pgOTMw2M$R}Iz;S_VG?hXZ-E@hZ|a63C)i-=QW*QuvHY*|XeLxkZOqP!v&QElMtEG>d%sVs zxJRyi9+5n?0-?!zC-rF=?@nqzni0$`TV{XfBNB;6fw#Q5-l_}@0*`gncI-?yA*O2~ z1dVj0S&5~ji$r@IQM(%hzi&a$4_%W^%oxw!kK#AdK*7G>_J3tj@;N`?S*Ss`f>->g z(FxuYysJ<5O}_@%_3m7^(216<05`!&^pRn705#~gJ5Z;j!V#G>-0ry*8?Cpnil!46 zN&7@Mbj;6zAc&8MW>e)R_Jla#e%kkK)@l1e2E6C?+Ox-J?iNB|6Ay^LxX8DOlZR0E?D!JY?voio{?JuLDI{0f_^w&V&m*ad`ya%*bH-@bi|0>Fcyygb&)>FJ#MdP??qaq|tjKfZ0- zCslpugTsj_mC2hU!sP-m&2{j-oIyAi@Uh0?74nOOut88^_Omo8p989#v#TNB52tq{ zGhr}fPsaBhON);_hg>IL-5-!c??SiljhY?5uEQxP#0S3ZEI3uy%9gsp62+0(!L+NL zRkk14$)JcEtG+XHiTkAOEo3FqhuZ_O#?wMCikyfaH^5esE}1c^`kS+l{U!Ua@cqBe zn*4uJ3IA3O@Xr8@*jrV2h@9Y83suF}6vhskX99ZPMJ!Z7yQtLt_jx@^8JXAJ)+H4c zAa&VBrnOF&*r~-uoNuMJapJxQVQckN)zpXhl|3VKL#&0r3USY1^H24B-Y7iez7gifR1#(*ti5virk1J_7UD6LDFM7BK<}4 z23k?v&l~g`G&{CJ0a?g^2)T87DlMhqh z4x$u+qw!Sc_~pOl4u?J0dM7vXfYwM-37{tOM}7QGr*vck4KaxaJZG@vyfmYJp#xg( z=b>PUKW?DpuQPO;$`b9sid>4c;It9YX?zvGyviV?z>=2oA{Gx9S7vfqj9Aben@=TO zK!;!DKB($b%g5b-aiurUSS5>B_6;DmmaSfo)KV-P625ql9Nm;U-}*ZAKeD}Ue%Sh9 z##n8{7!^C&Rm|7dGadwcZ?n8>U)623G%2Gua#7;13p)^7a6lOQlrbA2PwwcxaodvG z0mS124`niPhx*+#&YRilPB?rdG*H}-JA`K6-#jVa4pjj#x?$Jtw)4Fww-L*j!rBmu zAc1hx<;O|VW@Ilt-Vqrs0zZ8f(KSZZvi8@~5eg(1uTFojQrbSMLDKSMc!}f$;p}4i9QfJ1qJ>tCBB>a7GYt37eXp-dBCV&}ug-dQ>^NHiX7jl%`4FVC8WCkL}We{$8zto4NVlxbCev{IC!0MJ7h} zwB~)k*Ol5+OMsU** z+3HT{@I~!Bv+-glEL(!mBI+zkN9p?Nn*?Mn@(y5QHTkLD^K=J`#eGfS7oDxp%a0mt z?1?p{Gfy6@peD4>f>;N;zWpHL6)@qh9Fz~H?#Y#n%uQ`@(Z}hx`y;KTI-*i6d;Z13 zMxDrttc(%g%9`xCEVx+ZKYHRAFQzc){SyvcBHQA!%;rPSc%-8PRZ2lUYU|P zrE@p(S#9e3q7-x)D?ta~@@N3Zkjz95)Cc;qD6Ck0K-g=S4hZk!P=4j(js4-GL z+D1+meY)9|q~#HLdq*Em6ro5Yj|$71I~fue zL|rJR*`9GnmQ{p|fB*o9o<3~`6a1=_zVHz+ytl_~@bp}rBKn2;S~aw{JIS*$$>nSR z$O?zZYA4{+Ea{7>e$%NNvN|xFk5oiON*@YN_VCfA{6(j|k!rb7VR?^sM@dBCD!?|5 zF;=s;Vzv`%te`hnk-!t#gMM;y&|}lO$&C#XY}EAa!T;n-|0?>R3HC5KOe-}FZ~>F5 zWQczeXs)YEQa}_2X#Bl-+LEK}3mZCc^+fWZN5K z(1ERwau|&fZ!nRCu$ncl$roW#cV8=nVHNg{PmRGoX+2iPioOV%_{+UF>&!^Pi5@D881nVFk$=vo8^ZWzXLqW(cCu; z;`M9Oja+H#zTex>zWdplZKlm0osbw(GgqM6 z>CC2UYKf3QP*6BCH8_+?2z70kZGN2t`j*q#sM>pUEw2+@G8bOjEEL(n7;|80k#n|D z|3vo)VMv}hAfd&*fTBZQa<-IFCc0D@5DYQFDva6ve>M|GwHD26IU3%Bxwy4_pw|ga zPv$rL6Xmvo9~8%lBe#5E9R^mru)|<-g$}>KPu&9<4Ntz&5^mXV!F;2w#aJbHmZTi@ z2@Y2M%|&><8%r)-w=YVr@%&KAfedjiPu_z+B#zkEnqN`kK_DB{@Lp)Fcr=(C5xmZU z_Rng)QLb+&rsdzu_5LM6@~(+pad(KuzTM@`AXVfMM&FslrEjO;v`~)H6>UD$XXvwwv+Jv_I+5>NJa^2I zh2k^#SBT3p4K1m1nNu*5rC$Hah~42{^{`B%l>3P5o<?3Q(tOWp07xHG&?ou%^2owV z=FvZag*z<@>?SkF;qQX%W()T7u)Vv3Ec_Yvne=Y(c?Tvu)h&K|1i)_?Z|62s3b^t%rAwu_hGrgC%u3 zja;8rK7o*;I)@2VR;yL8btwnz(t)?^DG5|-6*ck~vUK(fRk^VN^jA6xYalu!&g8Q? zL^eun;YPlhzlLN$bJiEM4w!80@fHIDXJ7>Qes=I?BqPPaHYqme=dF$Pv?)9MNT-lb8%W24p8H%aVe{knf zfeIBGRxtiOR9N4_;pgOb+A{Pw!smK3t$_i#x$&Gk#pp}t2t+-5Sf><8tiN;-cSe-wuvU zw&S*vHr+g$d5AITskZ&0tt?rdATbiR6N#v7H@U2a$Dw_-4*H}y&q*TQ_^%-zTn0)|z-nvqd~@J)y~VS(PFDa z!o=8s-5E!SH9!Ikm&KP#Q^3wb`?M5X4+jE%VZnC&3bBCJiH@m!xk3M@u)`?SdqiM@ z4asCA4v*of6z6#=bbmeeYspp!rqa_^u47)67I%I7MCr1AOP`mX5vQD&d$zfeP(_7? z=cyoS&N``O@;uF!OS2Y&0q=fYd&ysJ3rhU(Ay;pPJ3l}F<<;SmawSGxSE(%7)swoB z9Q9mjL`iie2q04$F}bNQO5PGXR8=d%Yo9{TFUHt!2K3kHwBC5kPKXDsl66b@tWYKevn17xu&3wkb&icl?)FD(G01% z=0)eZGrhpQOZKvzbA;=Jj=I+SuMH{e0^s(`R4l;TN-L`>9M1YC=&b>#9bV95tLY#czDP7ATB946BZ-CC?nxtZ(ya8zAEK8-Ysyu^j8<& zO`=ULE#2Zs)Kgye#fhfDgS!*`p_Flg*ZcIKZruhn6oJG$VI+`}_du~vOBx4G%d@5@ z6~y(oR^@NPgJQ@Go6$;utpRlA*>?_VNUBIjv5MRw06d)e`@aAftyni-IMwb11Pq{X zBTAhV80GH)J7c?HjDP0oH;YiH8F0f!j7#pSa^IhcDP2rMRECZ?J?e|G^dIaz>7TKO zQva!UtL&0dajarVPl4%_n3*|S`k1rX<;#>@2F{r}RzFo+q8|~F(F)sBGwhEN5_n8> zW5ck#ksbzsvTU>LF9@g-fsMRR?DSKx{>EFW6#wRJ}`5T%e5l!NAB|)sNIwB=O zFYLNd6##pNF^4b3(GC|%!iG!J<_&HNvx^s*MWsv;%6(@cla&i^UpJj3DY+C4tH=n_Gc7!gDl(R&Dq-g}qmV)QzUUZb}N z(L(eV1kss?=tT4~6Kx*7Gc$}i^PKbHyzhBGo-b?deeJ#0zVB;)xc6S`|Ns5lkVUYL zWTe1zCoz^5!0+(#U{A%wi-0nu(x4P%;{%#|52u@u=7YDu*lN|3ni*7zg*hbNG$Xr_NQ7%C8;p)>mI#?=ST6@_uQh z%nCK;;jF#b@3sGnY;t&*gp-q#Q8rLm`?K_%odEyVF}10_{*$U`g#3#l0|g(U1Bj6F zu>!Tqkq)=!{7%GLF~*i!{?@kc9m?veenXa^v!4S9uu{7DB7IyiV(zs~=0TT}kkhzj zMFSI9=0vZnMQ1~!uxWWUZJu{f60U)5ok_=GL{r2ea2?zul zpv0?kC`9XZQQXFDwq^62XAlo92TZU8^M}@UE!m6nFtWYx}>F$ zV%WYp_f#j`k$qjsAxpvIStG3Y+vq=XhtXu9nSl`%SN5{qjsullg;XC=pX$fjrN_MP zyhe5henbbz3zUFX9>-^%}98O_t9C`Rkra0Lr z>~=A*XZ3?k_r%|)lM0|0O=YqyryoRuWiJrV9%!f!5{OA7A8)~ZXilVlCM_U<3R4K6 za4i`+sE0&KR`*M$Ur5$d@iTsVj;VolFY*J{HelKC4e8OT{H^Tz@MnT4k+q!KLm8QF zDm8StP<_`=O3IBJn_Jmi-NqkjogB~2=j-G1BW5dfd~hl?M|7NOT7xbT>RSeGS*V2U z>>mIbi~7^bf?RK&!QKkvHmWEB=Fw_ zW}e>mH-7SNH`>va9MS@IHALXo_AS-6e(cw?2yM&$J*A_K(IgfCp#X*9Jpuq-t>6}! zF~j<|I`}_fq^GCHfA~PCagW(w%KfJYD+nB`b!SE}b^C6b8FHQJen#2JLU9fGrQ`nN z2?g%(TxXTX#w7YkLa~h%d9)cc9W%KvjD?*ePS4xU$HvrfLB^9@5a8w`yMEQmAxRal zc}GE&0ytQ5SDwH6Oj;yz@1aRO5IkC@t+rSjZgaOnJb6+}tX!3oYXYy#mk91&)tKAg zwpOiM`!2#&rtFMj3PS>}1mH!>EMyLA_#U0uT8qB-=Vqxp zV}$Wi#-F-BwFFo|9!H%Jf#uS8AZ(357++N!jqskJrJCGto_qQ4TN`e53drC$0m`e& zaKxXu(!?i#zN{6?`Y2*beFsNJ?*Yjg%Mzm6SNjaY&Uk#&Xd(*pKAkqQT%&yk=l6IZ z#Tw6TcMLw@dQGu-Dz7 zWMk6tW>vd45x~=S0rXK4YnP9EE)3lUy;#{OUS^|wIl#Z9P2{^pZX^vWJXM67 z_`v)od*-bLEhju*rRVy`Jkim}cy~7>-s=JIr~j|?s(74rbu+2C9XqV|M4$V&N znNMzvtn2MSQJk-gnC#qMT=>3v{W|}%5cj3urKi7_xQq?`?{k0`l+3 zn3xzxhzGwVxsu?d&4}1dQro$Sx5ETOn1{PZPwVtwfpJ1$;|${ApiJ>s{q9rg@7{uf%5r()=MaxdEdW4 z6+j}}urL(i>1zaafRuV}#PiG-8cppbk37G>rXR+mlI8&84tHE9Vhmzi6M7byhx`cqkW$rG$~-@)o*4?bR%g<>k^t{@gDNa|r6h z9BGEV*383@BG`7QsVlf}7=fq@41?x;A~A{OL{H)&b8psx^2dvrr-Ef5Ieh%X>F!R} zdYgs3S`#wA_JU3Rs%V&%e5yv^78M{o4g@l!Lwu?Qq+M)-GSrbcas@dlnd)y{F=DDm zi7=f)VcbT8vsafe+XG03c4Q>jU^Cb5_i=8zv@q0H%bGVS+F;hv`{hgacqTAODKYg+ zoEeqNZKw*C=6_(K89IF?9^b=L!H6QhI>iH6@(HyDll+fW?|(rG9}o(c(*$0zsS6NH zFQv09)F4%EF)Wz8dky!Ssh$0VubD3M6ZkECh%`Y25y@+_Oqjm~SXNGV2ay;oS~@;u zB=nXZ1rRoRAzKfEh5a0nN`22WEUs8VaPT3uYBU`S(a}oE&lF~6<9rV-h+abWR($;n z;?JQm`nc_DcxG1t7jPxDXvKH7%3vH}He;FgHx{+;E;Ymvj-r~AlNw<3hCBsKP?7r`=? zg2*T`q>s8NZ_hp%g1H8khlv=INFEkVxUh*cWDjRwK?3oF03_60*de$(d!G9@kp%p0~z=ZoQLEx%~N6=lu@ZnC!P_SyO{1&dWmI*V}W7|Tj-|#ybKt7hfjeFjE$CsGG z>SzFw%ygVrSt#bI{~dYG5W8g6K@`50ZNc~mW!l{1+>dO2|7maKFl6I#UZWsEk0jVn z4n$(Ry^~FlQsr{A9(8A7NF7|I4c01}Sbso)^s*_kb@l{0`hH!5Jvj}me&adKJm(ox zDIX9-G5q^NjT7C#64Gzpyuva|Nqk!y&9ErWV8_`-BSU<0DUi=2Q7`}O#heb*Swzoc zmDYrpof#b}9+J9pXz%O^Pj_BC^e?Y#sN570zl?JcdRAQB$xsA}tv<3|CMPqL_~YrE zK80<5C7HG68+Bh*Ret9-#?IOu^?0E|$&_iYUH+kdE44Jl$+C(oVW=jC7MB%HtONKs z;i#^zzUXvowtQIjIWnzX5}YkJL?%dOQ{K@eIO_6{@9qTGaG%`a#kah2LDk~Fs0CHfAm82vj#ODW4~g>< z&v8%OJLYF%Wnu{|6WX84opoxyev|Il;YG4NxYX9z>M#-4X1XR^`Ur)wl`H4NxpFm>5E`mcHGzG$A?K!EuQU94XF2c<<^So7ntT@LAvc;FCEAYTR@!uIvjEqVV{yzkCj!B zr(I}p-y5?D*|P-c*gpy05VGF4fXW(vybm{ zXJ>o@e`dH4EulmRp76;D9pc{D%S-!?H$`;3aXwA}&GvbuDW{?GLlxLN9&@V+wrn**se~>IF^04^SWZYD}6$AL%N;dOOd7hMpZ`a-u1m3K5r-vQs~ zz3yR>%c*r|Edk?p%|sn$SHcT$nN3^R3~L`tb4Pm0Td&iwaj=e|N8AbcNG0OxyXvG3 zs&_%yNtUGVoMA3V{DE^r34sR8SAO=q6PZvpyqT6L zV`sablU}#)HR(BcW4X-SG7a<@w3S@XF2ojcbC?%I8H7<`zLyK)qtBM47-Whxv{NU~ zl7b2Ps-B|m)wgopTK#iftZAXJp#2{W(^cv zNB;90oP@_;*7P UH=Sp2+*^Q}iuS8|CELjV0xwgJ?*IS* literal 22135 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 From 167b18d045386e1444bef0400fad23dbb9f85655 Mon Sep 17 00:00:00 2001 From: Code-Cygnet <54194215+Code-Cygnet@users.noreply.github.com> Date: Mon, 19 Aug 2019 15:28:51 -0400 Subject: [PATCH 052/324] Update code/modules/reagents/chemistry/reagents/alcohol_reagents.dm Error spotted at 2138 and fixed by Sishen, aka Papa Pax! Co-Authored-By: Sishen1542 --- code/modules/reagents/chemistry/reagents/alcohol_reagents.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 8b787b5839..afd2be3f53 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -2135,7 +2135,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "The gems of this majestic chalice represent the departments and their Heads." /datum/reagent/consumable/ethanol/commander_and_chief/on_mob_life(mob/living/carbon/M) - if(M.mind && HAS_TRAIT(M.mind, TRAIT_CAPTAIN_METABOLISM))) + if(M.mind && HAS_TRAIT(M.mind, TRAIT_CAPTAIN_METABOLISM)) M.heal_bodypart_damage(2,2,2) M.adjustBruteLoss(-3.5,0) M.adjustOxyLoss(-3.5,0) From e7d08d1fed42049545e41f6580519b11213b90fc Mon Sep 17 00:00:00 2001 From: Code-Cygnet <54194215+Code-Cygnet@users.noreply.github.com> Date: Mon, 19 Aug 2019 15:53:13 -0400 Subject: [PATCH 053/324] Update drinks_recipes.dm Fixed error at line 803, allies_cocktail to alliescocktail. Am bone-head :(. --- code/modules/food_and_drinks/recipes/drinks_recipes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index d35955d2d3..3ba16dfa48 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -800,5 +800,5 @@ name = "Commander and Chief" id = "commander_and_chief" results = list("commander_and_chief" = 50) - required_reagents = list("allies_cocktail" = 50, "champagne" = 20, "doctors_delight" = 10, "quintiple_sec" = 10, "screwdriver" = 10) + required_reagents = list("alliescocktail" = 50, "champagne" = 20, "doctors_delight" = 10, "quintiple_sec" = 10, "screwdriver" = 10) mix_message = "When your powers combine, I am Captain Pl-..." From d6c9daa4eb17ea293d0a22b891d867ccbd9aaec4 Mon Sep 17 00:00:00 2001 From: Code-Cygnet <54194215+Code-Cygnet@users.noreply.github.com> Date: Mon, 19 Aug 2019 16:04:16 -0400 Subject: [PATCH 054/324] Update drinks_recipes.dm Fixed more errors, spelling and id errors to be exact with the help of Papa Pax :D. --- code/modules/food_and_drinks/recipes/drinks_recipes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index 3ba16dfa48..82e80d7584 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -800,5 +800,5 @@ name = "Commander and Chief" id = "commander_and_chief" results = list("commander_and_chief" = 50) - required_reagents = list("alliescocktail" = 50, "champagne" = 20, "doctors_delight" = 10, "quintiple_sec" = 10, "screwdriver" = 10) + required_reagents = list("alliescocktail" = 50, "champagne" = 20, "doctorsdelight" = 10, "quintuple_sec" = 10, "screwdrivercocktail" = 10) mix_message = "When your powers combine, I am Captain Pl-..." From 044ef51dfa446f482eec0ce6ce566adf7dba05a4 Mon Sep 17 00:00:00 2001 From: TrilbySpaceClone Date: Tue, 20 Aug 2019 18:32:39 -0400 Subject: [PATCH 055/324] Relies on a PR --- .../food_and_drinks/food/snacks_cake.dm | 21 +++++++++-- .../food_and_drinks/food/snacks_frozen.dm | 16 +++++++++ .../food_and_drinks/food/snacks_pie.dm | 10 +++++- .../kitchen_machinery/icecream_vat.dm | 34 +++++++++++++++--- .../recipes/tablecraft/recipes_cake.dm | 9 +++++ .../recipes/tablecraft/recipes_frozen.dm | 22 ++++++++++++ .../recipes/tablecraft/recipes_pie.dm | 9 +++++ icons/obj/food/piecake.dmi | Bin 29604 -> 31055 bytes icons/obj/food/snowcones.dmi | Bin 1388 -> 1436 bytes 9 files changed, 113 insertions(+), 8 deletions(-) diff --git a/code/modules/food_and_drinks/food/snacks_cake.dm b/code/modules/food_and_drinks/food/snacks_cake.dm index d66cfdd667..98f80331a7 100644 --- a/code/modules/food_and_drinks/food/snacks_cake.dm +++ b/code/modules/food_and_drinks/food/snacks_cake.dm @@ -335,7 +335,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake icon_state = "vanillacake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/vanilla_slice bonus_reagents = list("sugar" = 15, "vanilla" = 15) - tastes = list("caje" = 1, "sugar" = 1, "vanilla" = 10) + tastes = list("cake" = 1, "sugar" = 1, "vanilla" = 10) foodtype = GRAIN | SUGAR | DAIRY /obj/item/reagent_containers/food/snacks/cakeslice/vanilla_slice @@ -361,4 +361,21 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake icon_state = "clowncake_slice" filling_color = "#00FFFF" tastes = list("cake" = 1, "sugar" = 1, "joy" = 10) - foodtype = GRAIN | SUGAR | DAIRY \ No newline at end of file + foodtype = GRAIN | SUGAR | DAIRY + +/obj/item/reagent_containers/food/snacks/store/cake/peach_cake + name = "peach cake" + desc = "A peach filled cake." + icon_state = "peachcake" + slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/peach_slice + bonus_reagents = list("sugar" = 5, "peachjuice" = 15) + tastes = list("cake" = 1, "sugar" = 1, "peachjuice" = 10) + foodtype = GRAIN | SUGAR | DAIRY + +/obj/item/reagent_containers/food/snacks/cakeslice/peach_slice + name = "peach cake slice" + desc = "A slice of peach cake." + icon_state = "peach_slice" + filling_color = "#00FFFF" + tastes = list("cake" = 1, "sugar" = 1, "peachjuice" = 10) + foodtype = GRAIN | SUGAR | DAIRY diff --git a/code/modules/food_and_drinks/food/snacks_frozen.dm b/code/modules/food_and_drinks/food/snacks_frozen.dm index c4f8ccf76b..3aa483d420 100644 --- a/code/modules/food_and_drinks/food/snacks_frozen.dm +++ b/code/modules/food_and_drinks/food/snacks_frozen.dm @@ -126,6 +126,22 @@ tastes = list("ice" = 1, "water" = 1, "berries" = 5) foodtype = FRUIT +/obj/item/reagent_containers/food/snacks/snowcones/peach + name = "peach flavored snowcone" + desc = "A peach flavord snowball in a paper cup." + icon_state = "peach_sc" + list_reagents = list("nutriment" = 1, "peachjuice" = 10) + tastes = list("ice" = 1, "water" = 1, " peach" = 5) + foodtype = FRUIT + +/obj/item/reagent_containers/food/snacks/snowcones/strawberry + name = "strawberry flavored snowcone" + desc = "A strawberry flavord snowball in a paper cup." + icon_state = "blue_sc" + list_reagents = list("nutriment" = 1, "berryjuice" = 10) + tastes = list("ice" = 1, "water" = 1, " strawberry" = 5) + foodtype = FRUIT + /obj/item/reagent_containers/food/snacks/snowcones/fruitsalad name = "mixed fruit flavored snowcone" desc = "A mix of different flavors dizzled on a snowball in a paper cup." diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm index be6c11fd68..0bd9ed43c4 100644 --- a/code/modules/food_and_drinks/food/snacks_pie.dm +++ b/code/modules/food_and_drinks/food/snacks_pie.dm @@ -319,8 +319,16 @@ /obj/item/reagent_containers/food/snacks/pie/strawberrypie name = "strawberry pie" - desc = "A strawberry.pie." + desc = "A strawberry pie." icon_state = "strawberrypie" bonus_reagents = list("nutriment" = 6, "vitamin" = 6) tastes = list("strawberry" = 1, "pie" = 1) foodtype = GRAIN | FRUIT | SUGAR + +/obj/item/reagent_containers/food/snacks/pie/peachpie + name = "peach pie" + desc = "A peach pie." + icon_state = "strawberrypie" + bonus_reagents = list("nutriment" = 5, "vitamin" = 6, "peachjuice" = 15) + tastes = list("peach" = 1, "pie" = 1) + foodtype = GRAIN | FRUI diff --git a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm index 58d3ef69bb..0f901f2412 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm @@ -1,9 +1,13 @@ #define ICECREAM_VANILLA 1 #define ICECREAM_CHOCOLATE 2 #define ICECREAM_STRAWBERRY 3 -#define ICECREAM_BLUE 4 -#define CONE_WAFFLE 5 -#define CONE_CHOC 6 +#define ICECREAM_PEACH 4 +#define ICECREAM_GRAPE 5 +#define ICECREAM_BLUE 6 +#define CONE_WAFFLE 7 +#define CONE_CHOC 8 + + /obj/machinery/icecream_vat name = "ice cream vat" @@ -26,7 +30,9 @@ "cocoa" = 5, "vanilla" = 5, "berryjuice" = 5, - "singulo" = 5) + "singulo" = 5, + "peachjuice" = 5, + "grapejuice" = 5) /obj/machinery/icecream_vat/proc/get_ingredient_list(type) switch(type) @@ -34,6 +40,10 @@ return list("milk", "ice", "cocoa") if(ICECREAM_STRAWBERRY) return list("milk", "ice", "berryjuice") + if(ICECREAM_PEACH) + return list("milk", "ice", "peachjuice") + if(ICECREAM_GRAPE) + return list("milk", "ice", "grapejuice") if(ICECREAM_BLUE) return list("milk", "ice", "singulo") if(CONE_WAFFLE) @@ -50,6 +60,10 @@ return "chocolate" if(ICECREAM_STRAWBERRY) return "strawberry" + if(ICECREAM_PEACH) + return "peach" + if(ICECREAM_GRAPE) + return "grape" if(ICECREAM_BLUE) return "blue" if(CONE_WAFFLE) @@ -62,7 +76,7 @@ /obj/machinery/icecream_vat/Initialize() . = ..() - while(product_types.len < 6) + while(product_types.len < 8) product_types.Add(5) create_reagents(100, OPENCONTAINER | NO_REACT) for(var/reagent in icecream_vat_reagents) @@ -76,6 +90,8 @@ dat += "Vanilla ice cream: Select Make x5 [product_types[ICECREAM_VANILLA]] scoops left. (Ingredients: milk, ice)
" dat += "Strawberry ice cream: Select Make x5 [product_types[ICECREAM_STRAWBERRY]] dollops left. (Ingredients: milk, ice, berry juice)
" dat += "Chocolate ice cream: Select Make x5 [product_types[ICECREAM_CHOCOLATE]] dollops left. (Ingredients: milk, ice, coco powder)
" + dat += "Peach ice cream: Select Make x5 [product_types[ICECREAM_PEACH]] dollops left. (Ingredients: milk, ice, peach juice)
" + dat += "Grape ice cream: Select Make x5 [product_types[ICECREAM_GRAPE]] dollops left. (Ingredients: milk, ice, grape juice)
" dat += "Blue ice cream: Select Make x5 [product_types[ICECREAM_BLUE]] dollops left. (Ingredients: milk, ice, singulo)
" dat += "
CONES
" dat += "Waffle cones: Dispense Make x5 [product_types[CONE_WAFFLE]] cones left. (Ingredients: flour, sugar)
" @@ -207,6 +223,12 @@ if ("strawberry") desc = "A delicious [cone_type] cone filled with strawberry ice cream. Definitely not made with real strawberries." reagents.add_reagent("berryjuice", 2) + if ("peach") + desc = "A delicious [cone_type] cone filled with peach ice cream. Definitely made with real peaches!" + reagents.add_reagent("peachjuice", 2) + if ("grape") + desc = "A delicious [cone_type] cone filled with grape ice cream. Surprisingly, made with real pink grape, likely not real sugarcanes used." + reagents.add_reagent("grapejuice", 2) if ("blue") desc = "A delicious [cone_type] cone filled with blue ice cream. Made with real... blue?" reagents.add_reagent("singulo", 2) @@ -228,6 +250,8 @@ #undef ICECREAM_VANILLA #undef ICECREAM_CHOCOLATE #undef ICECREAM_STRAWBERRY +#undef ICECREAM_PEACH +#undef ICECREAM_GRAPE #undef ICECREAM_BLUE #undef CONE_WAFFLE #undef CONE_CHOC diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm index e26d15dbd3..c7c1da11f7 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm @@ -169,6 +169,15 @@ result = /obj/item/reagent_containers/food/snacks/store/cake/vanilla_cake subcategory = CAT_CAKE +/datum/crafting_recipe/food/peachcake + name = "Peach cake" + reqs = list( + /obj/item/reagent_containers/food/snacks/store/cake/plain = 1, + /obj/item/reagent_containers/food/snacks/grown/peach = 5 + ) + result = /obj/item/reagent_containers/food/snacks/store/cake/peach + subcategory = CAT_CAKE + /datum/crafting_recipe/food/cak name = "Living cat/cake hybrid" reqs = list( diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm index 73b09df68d..213744de4a 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm @@ -232,6 +232,28 @@ result = /obj/item/reagent_containers/food/snacks/snowcones/honey subcategory = CAT_ICE +/datum/crafting_recipe/food/peach_sc + name = "Peach snowcone" + reqs = list( + /obj/item/reagent_containers/food/drinks/sillycup = 1, + /datum/reagent/water = 5, + /datum/reagent/consumable/ice = 15, + /obj/item/reagent_containers/food/snacks/grown/peach = 1 + ) + result = /obj/item/reagent_containers/food/snacks/snowcones/peach + subcategory = CAT_ICE + +/datum/crafting_recipe/food/strawberry_sc + name = "Strawberry snowcone" + reqs = list( + /obj/item/reagent_containers/food/drinks/sillycup = 1, + /datum/reagent/water = 5, + /datum/reagent/consumable/ice = 15, + /obj/item/reagent_containers/food/snacks/grown/strawberry = 2 + ) + result = /obj/item/reagent_containers/food/snacks/snowcones/strawberry + subcategory = CAT_ICE + /datum/crafting_recipe/food/honey_sc name = "Rainbow snowcone" reqs = list( diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm index 81824dc4b8..34b8773274 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm @@ -214,4 +214,13 @@ /obj/item/slime_extract = 1 ) result = /obj/item/reagent_containers/food/snacks/pie/cocolavatart + subcategory = CAT_PIE + +/datum/crafting_recipe/food/peachpie + name = "Peach Pie" + reqs = list( + /obj/item/reagent_containers/food/snacks/pie/plain = 1, + /obj/item/reagent_containers/food/snacks/grown/peach = 3 + ) + result = /obj/item/reagent_containers/food/snacks/pie/peach subcategory = CAT_PIE \ No newline at end of file diff --git a/icons/obj/food/piecake.dmi b/icons/obj/food/piecake.dmi index df1e61c8490bd905d15b00d828057b984123e1c6..a74acb4e292ac8265109584b8128c09f4c86bc45 100644 GIT binary patch delta 13224 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 a@Qj4k^JDfq!=WS`_>+@TmaGyt3H)CSdJp3O delta 11772 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 AMF0Q* delta 1242 zcmV<01SR{N3+xJzBmsVrC4zrs1V=-0C=2@(#;BkFboIqvwe!9_pz_*E<+g}<|~Y-QNwC0X_64shkwiah+MIR#bTLPaHN#Z)=qGfceCrdgWO#+5U5vTp7dc*T5y)wejso0t5l#U{`G)O9 zI0YEx6kmk%A0U6-+*~TBJ#M?MyI`K&(hjjNaBePpTr{U0Zt*300i5=@aGpf&@r&Rp zl}e>jsZ=V}c~p>o-~3f~_xH3C*w2~X7}H}uY{zlfVqVu3tsrMtg{9LQOB>*LGRF?@ zP(MfZdVV23mgC445f^)?A0%7GJn*sw>Ic~zdqnveNzi{7)DLdQVJs;{)UVc(U|j>w z`Ps<%6X%XTzlXV`MhB~!T8PtxM}8yj?bY!7?j|v~ACzk_(%-qe81s?yiySZZ zV&`Xz(SCoB@{9L>Y%jv;4vBI~Fv{usYd@&{;6?MZ_kY?CYCot_sZ=VJN~QX*^(dl^ zr!aqhetCI)O>lo`i^A?O-%k@Q%;&dxp5HKk@=6}V{QccK1pS@qxrN+)Aikf(;U00a z_r@>8ACCfm-*|_(e=R7&j~#mcaGE5+3FS9Sg7bfj`oX88!rXd??JN2MZp7^_%-I{O z-G{lPM<&}D82ll>BJHe((?=_-*=mbO;Rch$9Jh8;LN|54yWJ)(>)g__y=HAw0f!HwivJMHufN z*6aye{T%%& zF093TZHc{pfzJnuy~4u(FJ4={3vgLLK7|X=+B4;sEPXBx+a=7MyTZ2U@wv6N_z^G2 z;2}Zu2<+O*+<^N9^>>E|QGd6#x{c%)>F-V?!N~J{Ypd%hz-WI*4rBe@+B*IDzO{97 zf48jss6Tp0EI7f2mFx1egFUf07*qoM6N<$ Ef*W{i0{{R3 From 20f4e260e19fa883af0324c85e79a64482bbdd8d Mon Sep 17 00:00:00 2001 From: Sishen Date: Fri, 23 Aug 2019 19:39:20 -0400 Subject: [PATCH 056/324] minigun ooga --- code/modules/crafting/recipes.dm | 12 ++ .../projectiles/ammunition/energy/laser.dm | 5 + .../projectiles/guns/energy/minigun.dm | 147 ++++++++++++++++++ sound/weapons/gatling.ogg | Bin 0 -> 62540 bytes tgstation.dme | 1 + 5 files changed, 165 insertions(+) create mode 100644 code/modules/projectiles/guns/energy/minigun.dm create mode 100644 sound/weapons/gatling.ogg diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 2790a8cec7..4b1bb960e0 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -133,6 +133,18 @@ category = CAT_WEAPONRY subcategory = CAT_WEAPON +/datum/crafting_recipe/minigun + name = "Laser Minigun" + result = /obj/item/minigunpack2 + reqs = list(/obj/item/gun/energy/laser = 3, + /obj/item/stack/sheet/plasteel = 5, + /obj/item/stack/cable_coil = 30, + /obj/item/stock_parts/cell/bluespace = 2) + tools = list(TOOL_WIRECUTTER, TOOL_SCREWDRIVER, TOOL_WELDER) + time = 150 + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + /datum/crafting_recipe/ed209 name = "ED209" result = /mob/living/simple_animal/bot/ed209 diff --git a/code/modules/projectiles/ammunition/energy/laser.dm b/code/modules/projectiles/ammunition/energy/laser.dm index 089c79effd..40f929a816 100644 --- a/code/modules/projectiles/ammunition/energy/laser.dm +++ b/code/modules/projectiles/ammunition/energy/laser.dm @@ -68,3 +68,8 @@ projectile_type = /obj/item/projectile/beam/mindflayer select_name = "MINDFUCK" fire_sound = 'sound/weapons/laser.ogg' + +/obj/item/ammo_casing/energy/laser/weak + projectile_type = /obj/item/projectile/beam/weak + e_cost = 20 + fire_sound = 'sound/weapons/gatling.ogg' diff --git a/code/modules/projectiles/guns/energy/minigun.dm b/code/modules/projectiles/guns/energy/minigun.dm new file mode 100644 index 0000000000..07fc374a23 --- /dev/null +++ b/code/modules/projectiles/guns/energy/minigun.dm @@ -0,0 +1,147 @@ +//The ammo/gun is stored in a back slot item +/obj/item/minigunpack2 + name = " Laser Gatling Pack" + desc = "A massive battery pack with an attached laser gatling gun!" + icon = 'icons/obj/guns/minigun.dmi' + icon_state = "holstered" + item_state = "backpack" + lefthand_file = 'icons/mob/inhands/equipment/backpack_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi' + slot_flags = ITEM_SLOT_BACK + w_class = WEIGHT_CLASS_HUGE + var/obj/item/gun/energy/minigun/gun + var/armed = 0 //whether the gun is attached, 0 is attached, 1 is the gun is wielded. + var/overheat = 0 + var/overheat_max = 50 + var/heat_diffusion = 2 + +/obj/item/minigunpack2/Initialize() + . = ..() + gun = new(src) + START_PROCESSING(SSobj, src) + +/obj/item/minigunpack2/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/item/minigunpack2/process() + overheat = max(0, overheat - heat_diffusion) + +//ATTACK HAND IGNORING PARENT RETURN VALUE +/obj/item/minigunpack2/attack_hand(var/mob/living/carbon/user) + if(src.loc == user) + if(!armed) + if(user.get_item_by_slot(SLOT_BACK) == src) + armed = 1 + if(!user.put_in_hands(gun)) + armed = 0 + to_chat(user, "You need a free hand to hold the gun!") + return + update_icon() + user.update_inv_back() + else + to_chat(user, "You are already holding the gun!") + else + ..() + +/obj/item/minigunpack2/attackby(obj/item/W, mob/user, params) + if(W == gun) //Don't need armed check, because if you have the gun assume its armed. + user.dropItemToGround(gun, TRUE) + else + ..() + +/obj/item/minigunpack2/dropped(mob/user) + if(armed) + user.dropItemToGround(gun, TRUE) + +/obj/item/minigunpack2/MouseDrop(atom/over_object) + . = ..() + if(armed) + return + if(iscarbon(usr)) + var/mob/M = usr + + if(!over_object) + return + + if(!M.incapacitated()) + + if(istype(over_object, /obj/screen/inventory/hand)) + var/obj/screen/inventory/hand/H = over_object + M.putItemFromInventoryInHandIfPossible(src, H.held_index) + + +/obj/item/minigunpack2/update_icon() + if(armed) + icon_state = "notholstered" + else + icon_state = "holstered" + +/obj/item/minigunpack2/proc/attach_gun(var/mob/user) + if(!gun) + gun = new(src) + gun.forceMove(src) + armed = 0 + if(user) + to_chat(user, "You attach the [gun.name] to the [name].") + else + src.visible_message("The [gun.name] snaps back onto the [name]!") + update_icon() + user.update_inv_back() + + +/obj/item/gun/energy/minigun + name = "laser gatling gun" + desc = "An advanced laser cannon with an incredible rate of fire. Requires a bulky backpack power source to use." + icon = 'icons/obj/guns/minigun.dmi' + icon_state = "minigun_spin" + item_state = "minigun" + flags_1 = CONDUCT_1 + slowdown = 1 + slot_flags = null + w_class = WEIGHT_CLASS_HUGE + materials = list() + ammo_type = list(/obj/item/ammo_casing/energy/laser/weak) + burst_size = 2 + automatic = 1 + can_charge = 0 + selfcharge = EGUN_SELFCHARGE + charge_tick = 2 + charge_delay = 5 + weapon_weight = WEAPON_HEAVY + item_flags = NEEDS_PERMIT | SLOWS_WHILE_IN_HAND + var/obj/item/minigunpack2/ammo_pack + +/obj/item/gun/energy/minigun/Initialize() + if(istype(loc, /obj/item/minigunpack2)) //We should spawn inside an ammo pack so let's use that one. + ammo_pack = loc + else + return INITIALIZE_HINT_QDEL //No pack, no gun + + return ..() + +/obj/item/gun/energy/minigun/attack_self(mob/living/user) + return + +/obj/item/gun/energy/minigun/dropped(mob/user) + if(ammo_pack) + ammo_pack.attach_gun(user) + else + qdel(src) + +/obj/item/gun/energy/minigun/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 15) + if(ammo_pack) + if(ammo_pack.overheat < ammo_pack.overheat_max) + ammo_pack.overheat += burst_size + ..() + else + to_chat(user, "The gun's heat sensor locked the trigger to prevent lens damage.") + +/obj/item/gun/energy/minigun/afterattack(atom/target, mob/living/user, flag, params) + if(!ammo_pack || ammo_pack.loc != user) + to_chat(user, "You need the backpack power source to fire the gun!") + . = ..() + +/obj/item/gun/energy/minigun/dropped(mob/living/user) + ammo_pack.attach_gun(user) + diff --git a/sound/weapons/gatling.ogg b/sound/weapons/gatling.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ad3170e8ebbbe042c3b934d5710c742059ba1e63 GIT binary patch literal 62540 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

u!J-Ws`|xuF6Quz;8g9HC>bYwzTWw_2OHHgx< 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%0DP|ag1&l_VJLU*g zfj!8LVuhPg;1O^?*ACVeGgon26}hNl@jP+S)_G9ew8Cl5=S20D0}!@VDR z4&3hi#qH?^lWyQQ3e^S_B{kZdl6^j2BQfMT9i|@1g;9VlL-W6?V;%YUK3RS9CHuBb zKSv7wvvGdwM=sCy#o}o`_Qvs`)wGRcEjLH*oET{^86vNjP_Z>az7=0IUTE+&hD}>0 z$}VIzf6ZG(t}{#H%0ZM(Ge`>*6{VGF1(JBHWfwg8z(Vpg%4V}gT(3$*m>pUGKR=>D zH(!Tva)ZPpF?Gq9h@u3^MhtyyO%cs=H!Jsxy1PLeZL*gA^MC*GjOfq%l=qKRpRy&7{()FqQvOxA{##HrBVAhd`|EtTW z5nM`4e%V)FnHcZ5knUx^2a@cnu$I=rDrO!7`9<3RF&rxD3^}i9c4mA(j z%8bA>3?H^c&l-*XGJ{SGtxKqgVR!oVTjM71j(gXwR}*<=onXv8WoXy`-AHtO* zo^(-5WXTA}QTF9mvCp9rVUx!K^;$bextzTLA7Z z2?qo!I}=hPV5zbsfs7RXeG7Im7a>SIhk_-J8cK?TeIHUQ>F-ch^+_rInqn$L>;MET zexnt>7^s)4)aq=y2g+c9Iwtc`&ki+9Yo6_pvk)BL)!b-tGrI2)H(Q6?4>)o5Tzw6q zo)b7BE@<$?%P87xNwL?DCGv3a5gQu00{-b$0D2ulUqqz)J#6+24lyz`#HRHS%mJZm z@<9zEZfWu(*yffMu8Y~h;`fMF0sBko=!s)Nhk}6F!m-o9y(Y8fVIVV{%9bao4;4OU zG;#G>XgfgPaw#N03v0GwGaC0MKkiUUBZhk=e7 zEgx&g6ILJwAY-h#sIaxvPHmA-y(JHd7nZvi_Murp)CKLO+dz2HFaT8C@)x+A+NBy$ z)oc2Nim)BrELj7H5Z)cAOC_j{HuFf7)76&b?p=Ib9N(yUUm#{#IP67quKxH7l$j;e z$l_z;IAOUQD00Iq*pJT^7lwy@r!MhvBCD`u+vBcNdAs#%w#f!Nq*?1|E`({44yoEUi74bl5v{U4bHviMstZNc>dOxOq>+Y%PPDm-j~ZI;0oTXZTS#vo*~X9ekaaDlh%fQ9k@V}Zhe@>gENOwUhQ|Kr*un|7 zDRx~l+*s*2T32!PJ!>SkciWJa=R7*ictE!+EO-px!$u6OijXHSiU2yeZoAv)f=95!k5 z^B@m3C*x`$NQF3NGY?^euEK?K2^|NaXX%l;1I(Qk6i6LI6-cG96*inOu?#@(A@_R z0RbmeATCi3Vhv^{08S_ZDae(e^Dxr}Jc^9KZh&Qm_<;;z4NKj7o7Rw=`L#fAC&n^X z8eElPPP-wC6|dPosBk`J^7=az^|=8wE}-ta%>^n7O(&!2RA@q}yjVG+h$ooc{YsSw zBGKf=JUHuYK@psYc-WuIXvO2ytk!@6f{}P-qhigVM)KxWaBWuOq?x6;G!MH`9PJP% zx2i#6fknkRq|kff=tfY2ve_NQS!^E-8S%5(R@WdFNDUyM2DAGN0JcPUO#_RGh&eez z6=lehMYD~lOb~mVZ=Xfm=^bW-2@r9BHYaQfDq;n#nrVeOzO;A{GRsq8jZBcc;m2o@ z!slxnzUtqt(Qar(OkbQ%y#mpowZT1+8p2pkMCQKqQc)KXFfsCFfoDDLr< zt{+ogx>t~WH7%;K>qn{Qn~Lq6DZFrZQW(5NrctvXhz7=&;0Dn(h zZ>J}F3lAGu%2rrGR;v4j?usIy^fV(1{qToB(|%Z}XtcllY;ma~EIFw&($`QdOcp1l zjg;75e!Mm`VjJ^vQX_ARwR;oGZXe!vW@xGY7pIzS8?x_vRtd&Nu!%f4Ak+<)5r6IHh2;M literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index bc1c1a134b..782bdf12e0 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2416,6 +2416,7 @@ #include "code\modules\projectiles\guns\energy\kinetic_accelerator.dm" #include "code\modules\projectiles\guns\energy\laser.dm" #include "code\modules\projectiles\guns\energy\megabuster.dm" +#include "code\modules\projectiles\guns\energy\minigun.dm" #include "code\modules\projectiles\guns\energy\mounted.dm" #include "code\modules\projectiles\guns\energy\plasma_cit.dm" #include "code\modules\projectiles\guns\energy\pulse.dm" From db317b65afdbe67f47fd0404440facfd7a9dfa80 Mon Sep 17 00:00:00 2001 From: TrilbySpaceClone Date: Sat, 24 Aug 2019 19:39:15 -0400 Subject: [PATCH 057/324] Grand! --- code/game/objects/items/granters.dm | 18 +++---- code/modules/cargo/bounties/reagent.dm | 3 +- .../food_and_drinks/food/snacks_frozen.dm | 44 +++++++++++++++++ .../food_and_drinks/food/snacks_pie.dm | 4 +- .../food_and_drinks/recipes/drinks_recipes.dm | 12 ----- .../recipes/tablecraft/recipes_frozen.dm | 46 ++++++++++++++++++ code/modules/vending/wardrobes.dm | 7 +-- icons/obj/drinks.dmi | Bin 85302 -> 84766 bytes icons/obj/food/food.dmi | Bin 62122 -> 63326 bytes 9 files changed, 106 insertions(+), 28 deletions(-) diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index 71687f0d5a..20a3de4a0d 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -440,7 +440,15 @@ oneuse = FALSE remarks = list("So that is how icing is made!", "Placing fruit on top? How simple...", "Huh layering cake seems harder then this...", "This book smells like candy", "A clown must have made this page, or they forgot to spell check it before printing...", "Wait, a way to cook slime to be safe?") -//Later content when I have free time - Trilby Date:02-Aug-2019 +/obj/item/book/granter/crafting_recipe/coldcooking //IceCream + name = "Cooking with Ice" + desc = "A cook book that teaches you many old icecream treats." + crafting_recipe_types = list(/datum/crafting_recipe/food/banana_split, /datum/crafting_recipe/food/root_float, /datum/crafting_recipe/food/bluecharrie_float, /datum/crafting_recipe/food/charrie_float) + icon_state = "cooking_learing_ice" + oneuse = FALSE + remarks = list("Looks like these would sell much better in a plasma fire...", "Using glass bowls rather then cones?", "Mixing soda and ice-cream?", "Tall glasses with of liquids and solids...") + +//Later content when I have free time - Trilby Date:24-Aug-2019 /obj/item/book/granter/crafting_recipe/under_the_oven //Illegal cook book name = "Under The Oven" @@ -448,12 +456,4 @@ crafting_recipe_types = list() icon_state = "cooking_learing_illegal" oneuse = FALSE - remarks = list() - -/obj/item/book/granter/crafting_recipe/coldcooking //IceCream - name = "Cooking with Ice" - desc = "A cook book that teaches you many old icecream treats." - crafting_recipe_types = list() - icon_state = "cooking_learing_ice" - oneuse = FALSE remarks = list() \ No newline at end of file diff --git a/code/modules/cargo/bounties/reagent.dm b/code/modules/cargo/bounties/reagent.dm index 3f458e2b12..9f1c76db3d 100644 --- a/code/modules/cargo/bounties/reagent.dm +++ b/code/modules/cargo/bounties/reagent.dm @@ -109,10 +109,9 @@ datum/bounty/reagent/complex_drink/New() /datum/reagent/consumable/ethanol/patron,\ /datum/reagent/consumable/ethanol/quadruple_sec,\ /datum/reagent/consumable/ethanol/quintuple_sec,\ - /datum/reagent/consumable/bluecherryshake,\ /datum/reagent/consumable/doctor_delight,\ /datum/reagent/consumable/ethanol/silencer) - + var/reagent_type = pick(possible_reagents) wanted_reagent = new reagent_type name = wanted_reagent.name diff --git a/code/modules/food_and_drinks/food/snacks_frozen.dm b/code/modules/food_and_drinks/food/snacks_frozen.dm index 3aa483d420..026f38b6a4 100644 --- a/code/modules/food_and_drinks/food/snacks_frozen.dm +++ b/code/modules/food_and_drinks/food/snacks_frozen.dm @@ -28,6 +28,50 @@ tastes = list("ice cream" = 1, "banana" = 1, "a bad joke" = 1) foodtype = FRUIT | DAIRY | SUGAR +/obj/item/reagent_containers/food/snacks/banana_split + name = "banana split" + trash = /obj/item/reagent_containers/food/drinks/drinkingglass + desc = "A long glass dish filled with ice-cream, chocolate and a banana down the middle. A timeless classic by any standards." + icon_state = "banana_split" + bonus_reagents = list("nutriment" = 5, "vitamin" = 3) + list_reagents = list("nutriment" = 3, "banana" = 10, "vitamin" = 2) + filling_color = "#FFFACD" + tastes = list("ice cream" = 1, "banana" = 1, "charries" = 1) + foodtype = FRUIT | DAIRY | SUGAR + +/obj/item/reagent_containers/food/snacks/cola_float + name = "Root Beer Float" + trash = /obj/item/reagent_containers/food/drinks/drinkingglass + desc = "A glass filled with cream, soda and ice-cream with a charrie on top." + icon_state = "cola_float" + bonus_reagents = list("nutriment" = 3, "vitamin" = 1) + list_reagents = list("nutriment" = 3, "vitamin" = 2) + filling_color = "#FFFACD" + tastes = list("ice cream" = 1, "space coal" = 1, "charries" = 1) + foodtype = FRUIT | DAIRY | SUGAR + +/obj/item/reagent_containers/food/snacks/charrie_float + name = "Cherry Shake" + trash = /obj/item/reagent_containers/food/drinks/drinkingglass + desc = "Cherries mixed with ice-cream, known for its filling tastes" + icon_state = "cherryshake" + bonus_reagents = list("nutriment" = 3, "vitamin" = 1) + list_reagents = list("nutriment" = 3, "vitamin" = 2, "cherryshake" = 15) + filling_color = "#FFFACD" + tastes = list("ice cream" = 1, "charries" = 1) + foodtype = FRUIT | DAIRY | SUGAR + +/obj/item/reagent_containers/food/snacks/bluecharrie_float + name = "Blue Cherry Shake" + trash = /obj/item/reagent_containers/food/drinks/drinkingglass + desc = "Cherries mixed with ice-cream, known for its filling tastes. This one is a exotic blue!" + icon_state = "bluecherryshake" + bonus_reagents = list("nutriment" = 3, "vitamin" = 1) + list_reagents = list("nutriment" = 3, "vitamin" = 2, "bluecherryshake" = 10) + filling_color = "#FFFACD" + tastes = list("ice cream" = 1, "blue charries" = 1) + foodtype = FRUIT | DAIRY | SUGAR + /obj/item/reagent_containers/food/snacks/spacefreezy name = "space freezy" desc = "The best icecream in space." diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm index 0bd9ed43c4..5114aa7333 100644 --- a/code/modules/food_and_drinks/food/snacks_pie.dm +++ b/code/modules/food_and_drinks/food/snacks_pie.dm @@ -327,8 +327,8 @@ /obj/item/reagent_containers/food/snacks/pie/peachpie name = "peach pie" - desc = "A peach pie." + desc = "A pei with peach filling." icon_state = "strawberrypie" bonus_reagents = list("nutriment" = 5, "vitamin" = 6, "peachjuice" = 15) tastes = list("peach" = 1, "pie" = 1) - foodtype = GRAIN | FRUI + foodtype = GRAIN | FRUIT diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index 7c44857b1d..d614902b6a 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -454,18 +454,6 @@ results = list("vanillapudding" = 20) required_reagents = list("vanilla" = 5, "milk" = 5, "eggyolk" = 5) -/datum/chemical_reaction/cherryshake - name = "Cherry Shake" - id = "cherryshake" - results = list("cherryshake" = 3) - required_reagents = list("cherryjelly" = 1, "ice" = 1, "cream" = 1) - -/datum/chemical_reaction/bluecherryshake - name = "Blue Cherry Shake" - id = "bluecherryshake" - results = list("bluecherryshake" = 3) - required_reagents = list("bluecherryjelly" = 1, "ice" = 1, "cream" = 1) - /datum/chemical_reaction/drunkenblumpkin name = "Drunken Blumpkin" id = "drunkenblumpkin" diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm index 213744de4a..8f4c5d05f1 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm @@ -42,6 +42,52 @@ result = /obj/item/reagent_containers/food/snacks/honkdae subcategory = CAT_ICE +/datum/crafting_recipe/food/banana_split + name = "Banana Split" + always_availible = FALSE + reqs = list( + /obj/item/reagent_containers/food/snacks/icecream = 3, + /obj/item/reagent_containers/food/snacks/grown/banana = 1, + /obj/item/reagent_containers/food/snacks/grown/cherries = 1, + /obj/item/reagent_containers/food/snacks/chocolatebar = 1 + ) + result = /obj/item/reagent_containers/food/snacks/banana_split + subcategory = CAT_ICE + +/datum/crafting_recipe/food/root_float + name = "Cola Float" + always_availible = FALSE + reqs = list( + /obj/item/reagent_containers/food/snacks/icecream = 1, + /obj/item/reagent_containers/food/snacks/grown/cherries = 1, + /datum/reagent/consumable/space_cola = 10, + /obj/item/reagent_containers/food/drinks/drinkingglass = 1 + ) + result = /obj/item/reagent_containers/food/snacks/cola_float + subcategory = CAT_ICE + +/datum/crafting_recipe/food/charrie_float + name = "Cherry Shake" + always_availible = FALSE + reqs = list( + /obj/item/reagent_containers/food/snacks/icecream = 1, + /obj/item/reagent_containers/food/snacks/grown/cherries = 3, + /obj/item/reagent_containers/food/drinks/drinkingglass = 1 + ) + result = /obj/item/reagent_containers/food/snacks/charrie_float + subcategory = CAT_ICE + +/datum/crafting_recipe/food/bluecharrie_float + name = "Blue Cherry Shake" + always_availible = FALSE + reqs = list( + /obj/item/reagent_containers/food/snacks/icecream = 1, + /obj/item/reagent_containers/food/snacks/grown/bluecherries = 3, + /obj/item/reagent_containers/food/drinks/drinkingglass = 1 + ) + result = /obj/item/reagent_containers/food/snacks/bluecharrie_float + subcategory = CAT_ICE + //////////////////////////SNOW CONES/////////////////////// /datum/crafting_recipe/food/flaverless_sc diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 08ed655297..40c2a8bd22 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -227,8 +227,8 @@ name = "ChefDrobe" desc = "This vending machine might not dispense meat, but it certainly dispenses chef related clothing." icon_state = "chefdrobe" - product_ads = "Our clothes are guaranteed to protect you from food splatters!" - vend_reply = "Thank you for using the ChefDrobe!" + product_ads = "Our clothes are guaranteed to protect you from food splatters!;Now stocking recipe books!" + vend_reply = "Thank you for using the ChefDrobe!;Just like your grandmother's old recipes!" products = list(/obj/item/clothing/under/waiter = 3, /obj/item/radio/headset/headset_srv = 4, /obj/item/clothing/accessory/waistcoat = 3, @@ -241,7 +241,8 @@ /obj/item/clothing/under/rank/chef/skirt = 2, /obj/item/clothing/head/chefhat = 2, /obj/item/reagent_containers/rag = 3, - /obj/item/book/granter/crafting_recipe/cooking_sweets_101 = 2) + /obj/item/book/granter/crafting_recipe/cooking_sweets_101 = 2, + /obj/item/book/granter/crafting_recipe/coldcooking = 2) refill_canister = /obj/item/vending_refill/wardrobe/chef_wardrobe /obj/item/vending_refill/wardrobe/chef_wardrobe diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 7822cdb8c236ea58fc03d4812f74561781b6b0b2..653ad29b2d35b488f1f551b7dd75d3a2aaf8ae08 100644 GIT binary patch delta 47142 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 Kwp7|A@c#g)kyhvc diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index 6fda702cb3b3e3274ca2759b6973315b231f42a5..f5535094c5f11ec595e37824dcb9f93236904d00 100644 GIT binary patch delta 9286 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 delta 8058 zcma)gWmFtN)9$cHa1R>)XasoZL=A)_WCS&1h?(*5m?X#l;0C;63r~h@J z6vXZuJ=3T^;^)YyUKZW1Tr?wKUl8jIly-hMDE~9%n}^5wrLU7s6Ndp0H}+h+<4?F6 zvG`A&2XQf&JKO?(b^$v!o*)dp@qD;(Tsi(TvsS#idbGNH{6{2gezptxA$Q`*0X_j@ z)cIVvcy0%$z?PpZJ^5Mag&v=%n`%r?8s|csXP#|V6Af2QafXX+O%wz!&*XnQm7=Wu z+Q|I3D$F}ObH|$E_=+qON7IGzJ+W6UPJ{ZF%8W6+sJUN6koaD84SE0kJyZrMhM24D z({HGx`wwI2?=hs0*$Q9RwC;v)6yW~=O?PC*A~bCn-sHjwVlZA{OrhMr(Xi?HEzipH zz2_Z9v5M?K$5)j;%t_*+wn?pDEZ>qjD`hu?=CbZ7?Uy)Y2a*3x#0#J3p@peID2c5k zDE2A5Fkm&zlug{U>}dMmnOK9+xSA6v%=ZKH{JUh4bUQTApR00@By@X zp+KyM9o8RI;N5!p(a}>U?v>p`6YTGmDiq3yYd6Ep6V8rCN5$Y%zjoc0Ewf@oBfgri zA$|BB#oZ2#hN&>0kUizgR<~MRk|JBft4y9*?Fkw6xs)@4IaJUkfg_*OCr|1(QpUV6^ckPyUJL?f1ZzbE@@? zwSpc8-omqK2qCK^Yr6x^-b0X<6n#Nna2{G;%*(F>|4dTk2SOJH$fzZ=G5!+NFBEIz zz1OB}RQt(VyWtN;x6S3$6`)_P-*STD@^d7S4Qx))IG^wIUy@e=H_jt<7h&_^m)f*<7@chA-yvDEBc*=TGbyZ4EFd z|BIc)o9p4(W=&0&o^M^4in5MHHL4Y*JU5vPT+>k&njehqNpDj*bbEZ|Xv|W+- zK9PQLZm_o*sP1-5>bfcuDmNA&aNSw02bn|Si_B&~<7QlEn$caFeWS7!E`QOZeEJY} z{I5jiCWtiBUzn46Oxj^Vj!4o_RFZ0}`WkoGszOiugJ$K6Ua9A$;lja~bE~lDYT++B z)GjaS;vjg6a6Z=!6!I7~b)%cVBtbmv_WP?{GtHYn%%E`DleW&#cZ#|cE?!tTI z>}sBGY8FvN$SeJ4#BI<#Xobr38$6 z@?gaxTFisntmtd&*vTKMIo>t!%k9ml&E1D(c$OsQ%`3CP`6_x;rAhFiyl}8N9vlUb zBlCiZSiWyGhG!&n2vzJW?zn$0wP?^2%{*RUE6U$ajAkIni<(&Yk^d|C0{|3O5j|EKbB3LWcuF!ImV@*bD3a8CEwd(3Ale>_XaZm#PIKz(= zSewR42iyujjlNX$Qn)`H)iUeHE$A$0(kD-L0kabZ5;+|W6qLRabLH&D_>J~yTMR!lwR6tkFw4}3Z-1v9?*#ZOE zH^|Q-Li1WjLRZ$u0U3<9a$zs!!zwjxcG1l%qjGe`q!&7M`Pb@;#ZwNfXH(kb%Bdy4MB${H4NJQy)NZp zC!9SRLBfm$Ax#j|=q({GONm-*LZCJ|OiRRRsT3 z_Ciph_Ie|k*M7frY*mCX9G=x(U1aa?qG-`+CVq^X^$h$@BMgvOS3Gv0hekYGFOuCD zJJosn31YtRdi|yOH>Y;uP$XEf6HH~?sOOWQp7u-83v;Z=$2&}?-)Z7ld43%qtBk^d zpqBy(FS+rr05N=&_1F|kZET6V^~lnx45e`$rYFgF?_yvQ9DidA`BPsp3zW3Pdx%)t zKUc%bDsuy0mp5tqIW?-F3fayNj3xXFppra1xi$RushVGwrpi}UvbF35Qh z?T}Vi>84xK#;GOtt7>6Q*BY_W;sG?fgMNuzw3r&;i;k>qfnCzl;HNX*Q-X;fMyeK( zo+9CL6$TvLXNOCRX=0!0FBRyhG*s%D?6x z+wO1(mJ#4%S8%{FOYl*`*MRT?>5{zyi+sQXY0kyrj@5mq2Z;Qqv3;Fq(oC#C>adX! zgxBdJht&PF3b_@-)5RrqmN22M?&QM#J8Bb^YTfh?vU@MUy8(A=Q+bCSsWPMT@?#d; z8tu9M^f{UB4kpsNJ-BbuoPl+mo(+EF%0t_sT+&0_k+WQ!L-SVkRkfrnP zZA)Ca^uxxjIFPI>Av{46Sjd0M0bPJkmz=W(2%^Y(v3N4bWHU&Lzr8S-nn&-$T>|n? zKmTSAt;@TlWtSKZM_T)}$NOegn6T{LDSc4Z?|xYX0B9Kg8V}v*Ks*Wmf^OditO`+3D3FA=L=cqJPD)P=(u?4KsudTq$ zl0B-SwCKCs^9fcDmU~;D1_PoTLT2me4&$o%)%Dw}Hsk)_E!VqQWC4$CG9h2T+7&w|bkG2KAOS)v-|uZ20*#TupA~tu#6FTl zSWwcN1k<7igQv(xD>zXIjTYUV7KsQ&5T4MvD&{afU%{e5_#>kuU}2+G7k?AJ>n0P z{8YDx9>S6>KMZfx*3Z0_AR@uDoupQNfwjX)`QHUZQUj!`LCDVlfQV7~ zRIi@RL~Qqy#w|0T_d>CbRO*Wsa!mv%lFX8Fyzd!$hK5YJjDfWii%*}*4-f5L z($R&8dRsvVH+wfLEQXd+X31CjQ%}0orCR^9>JpVeMidDNk*)Ny{6@5tL1O?|_^R** zIvF}_eNzt_VWh=)?yZsOG;vFa61bklwRqM~9`%W{ngUU2w2`(%Ruh|2+CrOd&!OUV zToL2eGRn%Cl$SoDuV24To40#sw&X>e;y;<2MwQGp8sKj+5sHpBgsq!-J;x_J)MIPy zV+a7S0VcB4az;D70|JB8u1&_h!l3alF*ldwKPEx{t;OV&@|}WKM8~Zh!~2`Bj!YOt zD9#+~teab8*k}TuvMB4^m^Z8A*+5a@0Q`VsN~|B_=!pZNdwbSE`&vf`65zS&{}wR0 zIbQzIfS4FI8uG9uubWVIpT(fQC{%@lJm>)J(p6}>U$2T6aL>p=(xse%SSNCkmc6(G z3$0c9v0sR|WIL*ijciehcfP^mcq&3E7$xIzbHXO&(NOFh*|LSA(!dK*5MJq+^Nlb+ zZ0T}-{6YARkP$skcr*UXq*$x}k|7#$Af}9*oOIc&(yKS=%5TWu0#mcIO4~bx*CeW2 z2kaMGmH+1T603Oc7U(R8;~SQar}^kX-#ZexX7C17(Qd^xnTjo_#jnBbXq65b0)pM$`W0 z^uZN(y7F9;CzmoKQBE^2k|TRogvC%whc#c`pFblzya%&osX4xhu=8yO*h|n@r<%$5 z;c)hY;pB0J$Y5aXw$;z!>q~OFXpmL%F>?Kl9yck^XcD3upO|cIV14=A@H0lQ)S#XH zYs0vf$Tl_($xig_S7%MEZ?$&>VP@Hp89x?ipyFm8T7^%rp&A3YLF;2phlx|a04b*d zy2J~E=`v&Ssi~>kEN7ogXYj((!n-#c3XPwd(tJGa!Xp#);R8(0HhSL2|HB1`bSPw= z<8$$g3wH(Z#MM3-zwNvERPenWSU-IWM;l|*&4CS8nY11uTJO|M0?m>WxK)@Ab#G9C zzQb8Pl4kQ|Qu(xBO_p5pKWsfJ$N7cHv1;dp;)evJm>F;wbK*?6gy~!ameuN#0m@`>--5-4pUFvOS$SN; z*Z}oMp}+q;I6v2H9ULmz!!3yaMC!Fov_*Q`J$Q|*S(Lvq=#K9qxi^SY&!*x zEz_oQda4)1_k}i06jc;GEy^3$JhQDV@U%J1(S%>?oq|Q4b>%#G9N+GBRkH+;5(iMK z=Is)luaB1(cLXL2R7oy1CgZjRqk}qFUu|d{DY2zsh!dapwq< zjWzI9tsKYMLYJ&v{KCf7))13iJ>mEMut=+%obF9sO3qGAX9DTt06>=1Vb6)25G~8B z?dd{P25%oPfB+)WhR@>ul+(L4yprG7R2Ap$11r;mlc#XCO4r=)_MPlsfqO@eXA#eO zJ$+!KO9Wxdcv{8U@W-crP(KpOt`qYav}TbCQ1bNiLtpl zIfO$~?Ylzhif7>A7;<(SH98=t@u>0d>DQ&&LtYvep@__TXJF**;f=s_C?fd)k@FTF z9y%WMncio$xB5RMAcD8CQ7H3iJMQ|dF=SP-Tq864 zs9bY4GNkB}%6PM5n)t`e>uP>sUmnGblsvbP-`Hd1xc<`9?)7}9AX-v{$74WJMe0q3 zn3bwzB)aDpo#mMm^J09EK9p%00$A7EpaPl^tH&2KRx-=G*g$7+_o}Ts>M8`tdsZ_Y z@%x;``3ceV(S-AQ%B*iPu@c9x?jEv~Ec>AR8!A|^I~crzR$0=dj351Ha|JJ$eYXDNAzIk&$)?m`+t!bP*THf9B1kZs!Fc2(V$0`IdQjsI zLT^$hGvzndrvHl zm2;sxu@6GqgPhcGD!_(CYZQ6khl>gny+0g!E?NkRL;6(0DypXnDu0SLMfsz?=<}|lr1S=R`j>j`5+tGN`ay>Sq@yj{Tf~6kLg+$8c_#?IC`g9T5-AeN|7sDSM zjDw$hL+{<5^y@ez)@xPqQ~AbBeSNRM)gz_yfJqT393Fp|wV?&$^0s155f}V$c5i&K zpa7;kq)r-5gM&-3x%+cSoyGbD@*~|!T=z{){H*@D_GsN#6RQE8II*oL581;aFF|?} zymB}yw!}T8Q3~U3aC4~b@|^4if6qaQh{VHH?&V!m^i6@4(&^byoKj-3Iy`JqOw#6> z_YIGLVbRkCuaV@&=8c;otgVIl8MvHq44#tn?}JbJA!qTVi-Ti`oZDtpZFWItB_ami zEeGM!hz&m`pWU+ssD`5)qK>qBji~K+ZnD>kW;=H{%ULCJ9L=j7c9DiRl)&#Cajy3} zcX6(F>%BTipjE>8k%bRgXXpLujds6xmU?C!Gj=PVum11-mbnu~0z_b2{XfGhkwVZZMDT<&o$*x*d8pC=Uw=uzhy;}}AW z>-TeLHIAE!DFUf|Yans?*mn(VM*<{#d>S``*EW>o<((Q-)zt|AcbUD>+X~bM<+nWV zeU^2vfBe19VcxpDcR!q)ot^{b;<(HF_!kKuniD*Ho-Ycyg_So4Q0Y(l7Rk9wv6&Lc zjOLq@pLS%ARFx~ZYBk{Z_4MSHlnfsQBr>U{(3j8)ug-U%;l4o6ejfpLcgqlykO(cu z4>|7&3#WY}y!7+~#_=iUab?Az3R*VSRFzyuj_v?;;yCpNA%dpWWP>NfD#63kXc@l#U&2j@e4Ev*I3qvQZFVEr$K}v#`jgFlD$? zNq>zBsOjpWSIr-mgV6T{i8)O4^vsNsVBfRA^PdcmkD0lP%+k8U7D-G|^NxPoif8~% z?^x}q!H+KrDi(lR<0Z-C+3fC|W8Y=Rz-CRow;xIz=t}VL>raE_Xf`eS_UXs=>vPn= z-?3WO&9n|pdGZwoiRtMqqN9U@QkIsCm6es6aSP$|cC}x#!KRzC#5a{$I4@UT>x8O z1ov%xyu{aBv>%BNW&w9LwSw2)-?%05kMjCyOHvwzs;8z|oSEz9hP0m+5-n{QD-fcgnTd2&(kRfMm(X;>383h&G>nE}*6#k82WXSJUq?8A(s7pI7wVe#IF z{X25pj7J>S0QO2oXk|4d>5n+(g%9mfNYO3yASKZYBlr}(4Arlp0ynp%)6hY~*CEZ zGMCKlm*xWXNz-flU-O64y#)RA*He|!DG2|-c~l1*+g2aZ-~9!#EIy+Gf%T;d+y&3q zx+^~ZgqudK2BN2Z(gyN;RT5+Il?nz+Rqh3Dgs|mO`$6I zw+Fhw+FkDUd&vWnc>!SO^X~VD4WG1v?8Ix8W)3}PjG^ttIiZ;~-5oc2tD~^z?c>@6 zaM$I!J%71Y?(HhKT6o-x|8CDlO<*bLzFjC=GGuR~uBXR>)4icr-i#-}%Bolsqzjx* z6eGCTXsOrGXEaQJErlWPSF2RbZJFIIv1Qe~g&!h(9!`)~;1ct52)xk#QRzekI(kKf z3pqZn#N#;Kfc7@Q_|6ZXz22jsyFw!$)wd%i7awuzz4X~X{%dj68SZw}29MByFN+zW zb(5H5l)ykLExIZKyE*whh4->U;rc?OKk)8V|P)4_1nv*A4Y=E_`PlwA=5Ae44SvF{`CfoSH1^tx8_ zrGE6)-~8JoSq?%wxxmFr6UzBk6SmDxu6ULeyd_;dmZ-YCjgr5$(GeQ>Z7}qe_iXKB zkA8$)lK9kP7H4o9yn(Tn)Qm3r zX~v^5O;#rT?8&PkaNPD@^pYcz<^j8Q>5YSFoAdP9Wm!f88|;K#_X(^vdKG{`X)HKy zyLM|}#(bIKqio#SBsFzt>0)xcJ(p<}&r)u>V5!cL8wSv^P)6?P;d}Z zyZsPSg{k3I9?RQI@wAf(Le_h@id+Mv`U+0*&-t#ss*i0L`I5 z7}ctlt4jzEamzwVRQSKXQ;(Y))STs~M$gRcvf@z8Khp+@hMGgB0 z223B{As>wwsM2UTbOS&H2{j6d&}#3yNHMi4jD^)RL-m|$nLxf*jjk!*HT7!|H8fi? z6(r@RRrEp>G)~7ZrqwduLApmX)DSd@z}tH&ET_x`l`%u6R?*q>#!-a5%{T`Nw#3!L zqfgJV3ce*L5b)VIR>?|OHQ*^u6(2?NR=JL#T%4fbmUt~)*0ZLS2B9q&>V~k zs`j7HQjj!=7F}Eta-CoZlFlNh#Hhv1+oc>&{tkb9M3_7yI>f{&mG zM1xWg#>gBjL`{E0M_hb3ZB| Date: Sat, 24 Aug 2019 19:46:51 -0400 Subject: [PATCH 058/324] Fixes that make this complie --- code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm | 2 +- code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm index c7c1da11f7..284affe2ec 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm @@ -175,7 +175,7 @@ /obj/item/reagent_containers/food/snacks/store/cake/plain = 1, /obj/item/reagent_containers/food/snacks/grown/peach = 5 ) - result = /obj/item/reagent_containers/food/snacks/store/cake/peach + result = /obj/item/reagent_containers/food/snacks/store/cake/peach_cake subcategory = CAT_CAKE /datum/crafting_recipe/food/cak diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm index 34b8773274..30c265e237 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm @@ -222,5 +222,5 @@ /obj/item/reagent_containers/food/snacks/pie/plain = 1, /obj/item/reagent_containers/food/snacks/grown/peach = 3 ) - result = /obj/item/reagent_containers/food/snacks/pie/peach + result = /obj/item/reagent_containers/food/snacks/pie/peachpie subcategory = CAT_PIE \ No newline at end of file From b01f135d3a91fa04fda32b2969198a587c0f1303 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sat, 24 Aug 2019 19:09:56 -0500 Subject: [PATCH 059/324] addresses a few concerns --- code/modules/jobs/job_types/_job.dm | 2 ++ code/modules/jobs/job_types/captain.dm | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index cc18560cbb..2eeffa8b7a 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -139,6 +139,8 @@ return 0 if(!SSdbcore.Connect()) return 0 //Without a database connection we can't get a player's age so we'll assume they're old enough for all jobs + if(C.prefs.db_flags & DB_FLAG_EXEMPT) + return 0 if(!isnum(minimal_player_age)) return 0 diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index d334cff772..00a710bdf4 100644 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -25,7 +25,7 @@ display_order = JOB_DISPLAY_ORDER_CAPTAIN - blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/insanity) + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity) /datum/job/captain/get_access() return get_all_accesses() From 5e94a5db8002e33e392abd37f55aef33fd4afab0 Mon Sep 17 00:00:00 2001 From: Rob Bailey Date: Sun, 9 Jun 2019 04:54:02 -0700 Subject: [PATCH 060/324] ports #44155 from /tg/station --- code/__DEFINES/mobs.dm | 3 + code/__DEFINES/movespeed_modification.dm | 3 + code/datums/components/footstep.dm | 212 +++++++++--------- code/datums/components/riding.dm | 45 +++- code/game/objects/structures/tables_racks.dm | 9 +- code/modules/mob/living/carbon/human/human.dm | 105 ++++++--- code/modules/mob/living/living.dm | 7 + code/modules/mob/living/living_defense.dm | 16 +- code/modules/mob/living/living_defines.dm | 2 + code/modules/mob/living/living_movement.dm | 9 + .../modules/mob/living/silicon/robot/robot.dm | 9 +- code/modules/mob/mob.dm | 7 +- 12 files changed, 261 insertions(+), 166 deletions(-) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 1d1dda6d99..b5d203a166 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -264,3 +264,6 @@ #define BODYPART_LIFE_UPDATE_HEALTH (1<<0) #define HUMAN_FIRE_STACK_ICON_NUM 3 + +#define PULL_PRONE_SLOWDOWN 1.5 +#define HUMAN_CARRY_SLOWDOWN 0.35 \ No newline at end of file diff --git a/code/__DEFINES/movespeed_modification.dm b/code/__DEFINES/movespeed_modification.dm index c0aac36415..4336ad28f7 100644 --- a/code/__DEFINES/movespeed_modification.dm +++ b/code/__DEFINES/movespeed_modification.dm @@ -31,3 +31,6 @@ #define MOVESPEED_ID_PAI_SPACEWALK_SPEEDMOD "PAI_SPACEWALK_MODIFIER" #define MOVESPEED_ID_SANITY "MOOD_SANITY" + +#define MOVESPEED_ID_PRONE_DRAGGING "PRONE_DRAG" +#define MOVESPEED_ID_HUMAN_CARRYING "HUMAN_CARRY" \ No newline at end of file diff --git a/code/datums/components/footstep.dm b/code/datums/components/footstep.dm index e6c9f20de6..e9c9597068 100644 --- a/code/datums/components/footstep.dm +++ b/code/datums/components/footstep.dm @@ -1,108 +1,104 @@ -/datum/component/footstep - var/steps = 0 - var/volume - var/e_range - -/datum/component/footstep/Initialize(volume_ = 0.5, e_range_ = -1) - if(!isliving(parent)) - return COMPONENT_INCOMPATIBLE - volume = volume_ - e_range = e_range_ - RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/play_footstep) - -/datum/component/footstep/proc/play_footstep() - var/turf/open/T = get_turf(parent) - if(!istype(T)) - return - - var/mob/living/LM = parent - var/v = volume - var/e = e_range - if(!T.footstep || LM.buckled || LM.lying || !LM.canmove || LM.resting || LM.buckled || LM.throwing || LM.movement_type & (VENTCRAWLING | FLYING)) - if (LM.lying && !LM.buckled && !(!T.footstep || LM.movement_type & (VENTCRAWLING | FLYING))) //play crawling sound if we're lying - playsound(T, 'sound/effects/footstep/crawl1.ogg', 15 * v) - return - - if(HAS_TRAIT(LM, TRAIT_SILENT_STEP)) - return - - if(iscarbon(LM)) - var/mob/living/carbon/C = LM - if(!C.get_bodypart(BODY_ZONE_L_LEG) && !C.get_bodypart(BODY_ZONE_R_LEG)) - return - if(ishuman(C) && C.m_intent == MOVE_INTENT_WALK) - v /= 2 - e -= 5 - steps++ - - if(steps >= 3) - steps = 0 - - else - return - - if(prob(80) && !LM.has_gravity(T)) // don't need to step as often when you hop around - return - - //begin playsound shenanigans// - - //for barefooted non-clawed mobs like monkeys - if(isbarefoot(LM)) - playsound(T, pick(GLOB.barefootstep[T.barefootstep][1]), - GLOB.barefootstep[T.barefootstep][2] * v, - TRUE, - GLOB.barefootstep[T.barefootstep][3] + e) - return - - //for xenomorphs, dogs, and other clawed mobs - if(isclawfoot(LM)) - if(isalienadult(LM)) //xenos are stealthy and get quieter footsteps - v /= 3 - e -= 5 - - playsound(T, pick(GLOB.clawfootstep[T.clawfootstep][1]), - GLOB.clawfootstep[T.clawfootstep][2] * v, - TRUE, - GLOB.clawfootstep[T.clawfootstep][3] + e) - return - - //for megafauna and other large and imtimidating mobs such as the bloodminer - if(isheavyfoot(LM)) - playsound(T, pick(GLOB.heavyfootstep[T.heavyfootstep][1]), - GLOB.heavyfootstep[T.heavyfootstep][2] * v, - TRUE, - GLOB.heavyfootstep[T.heavyfootstep][3] + e) - return - - //for slimes - if(isslime(LM)) - playsound(T, 'sound/effects/footstep/slime1.ogg', 15 * v) - return - - //for (simple) humanoid mobs (clowns, russians, pirates, etc.) - if(isshoefoot(LM)) - if(!ishuman(LM)) - playsound(T, pick(GLOB.footstep[T.footstep][1]), - GLOB.footstep[T.footstep][2] * v, - TRUE, - GLOB.footstep[T.footstep][3] + e) - return - if(ishuman(LM)) //for proper humans, they're special - var/mob/living/carbon/human/H = LM - var/feetCover = (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)) || (H.w_uniform && (H.w_uniform.body_parts_covered & FEET)) - - if (H.dna.features["taur"] == "Naga" || H.dna.features["taur"] == "Tentacle") //are we a naga or tentacle taur creature - playsound(T, 'sound/effects/footstep/crawl1.ogg', 15 * v) - return - - if(H.shoes || feetCover) //are we wearing shoes - playsound(T, pick(GLOB.footstep[T.footstep][1]), - GLOB.footstep[T.footstep][2] * v, - TRUE, - GLOB.footstep[T.footstep][3] + e) - - if((!H.shoes && !feetCover)) //are we NOT wearing shoes - playsound(T, pick(GLOB.barefootstep[T.barefootstep][1]), - GLOB.barefootstep[T.barefootstep][2] * v, - TRUE, - GLOB.barefootstep[T.barefootstep][3] + e) \ No newline at end of file +/datum/component/footstep + var/steps = 0 + var/volume + var/e_range + +/datum/component/footstep/Initialize(volume_ = 0.5, e_range_ = -1) + if(!isliving(parent)) + return COMPONENT_INCOMPATIBLE + volume = volume_ + e_range = e_range_ + RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/play_footstep) + +/datum/component/footstep/proc/play_footstep() + var/turf/open/T = get_turf(parent) + if(!istype(T)) + return + + var/mob/living/LM = parent + var/v = volume + var/e = e_range + if(!T.footstep || LM.buckled || LM.lying || !CHECK_MULTIPLE_BITFIELDS(LM.mobility_flags, MOBILITY_STAND | MOBILITY_MOVE) || LM.throwing || LM.movement_type & (VENTCRAWLING | FLYING)) + if (LM.lying && !LM.buckled && !(!T.footstep || LM.movement_type & (VENTCRAWLING | FLYING))) //play crawling sound if we're lying + playsound(T, 'sound/effects/footstep/crawl1.ogg', 15 * v) + return + + if(iscarbon(LM)) + var/mob/living/carbon/C = LM + if(!C.get_bodypart(BODY_ZONE_L_LEG) && !C.get_bodypart(BODY_ZONE_R_LEG)) + return + if(ishuman(C) && C.m_intent == MOVE_INTENT_WALK) + v /= 2 + e -= 5 + steps++ + + if(steps >= 6) + steps = 0 + + if(steps % 2) + return + + if(!LM.has_gravity(T) && steps != 0) // don't need to step as often when you hop around + return + + //begin playsound shenanigans// + + //for barefooted non-clawed mobs like monkeys + if(isbarefoot(LM)) + playsound(T, pick(GLOB.barefootstep[T.barefootstep][1]), + GLOB.barefootstep[T.barefootstep][2] * v, + TRUE, + GLOB.barefootstep[T.barefootstep][3] + e) + return + + //for xenomorphs, dogs, and other clawed mobs + if(isclawfoot(LM)) + if(isalienadult(LM)) //xenos are stealthy and get quieter footsteps + v /= 3 + e -= 5 + + playsound(T, pick(GLOB.clawfootstep[T.clawfootstep][1]), + GLOB.clawfootstep[T.clawfootstep][2] * v, + TRUE, + GLOB.clawfootstep[T.clawfootstep][3] + e) + return + + //for megafauna and other large and imtimidating mobs such as the bloodminer + if(isheavyfoot(LM)) + playsound(T, pick(GLOB.heavyfootstep[T.heavyfootstep][1]), + GLOB.heavyfootstep[T.heavyfootstep][2] * v, + TRUE, + GLOB.heavyfootstep[T.heavyfootstep][3] + e) + return + + //for slimes + if(isslime(LM)) + playsound(T, 'sound/effects/footstep/slime1.ogg', 15 * v) + return + + //for (simple) humanoid mobs (clowns, russians, pirates, etc.) + if(isshoefoot(LM)) + if(!ishuman(LM)) + playsound(T, pick(GLOB.footstep[T.footstep][1]), + GLOB.footstep[T.footstep][2] * v, + TRUE, + GLOB.footstep[T.footstep][3] + e) + return + if(ishuman(LM)) //for proper humans, they're special + var/mob/living/carbon/human/H = LM + var/feetCover = (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)) || (H.w_uniform && (H.w_uniform.body_parts_covered & FEET)) + + if(H.shoes || feetCover) //are we wearing shoes + playsound(T, pick(GLOB.footstep[T.footstep][1]), + GLOB.footstep[T.footstep][2] * v, + TRUE, + GLOB.footstep[T.footstep][3] + e) + + if((!H.shoes && !feetCover)) //are we NOT wearing shoes + if(H.dna.species.special_step_sounds) + playsound(T, pick(H.dna.species.special_step_sounds), 50, TRUE) + else + playsound(T, pick(GLOB.barefootstep[T.barefootstep][1]), + GLOB.barefootstep[T.barefootstep][2] * v, + TRUE, + GLOB.barefootstep[T.barefootstep][3] + e) \ No newline at end of file diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm index 7b80f87657..6fc58b9f5d 100644 --- a/code/datums/components/riding.dm +++ b/code/datums/components/riding.dm @@ -195,21 +195,47 @@ . = ..() RegisterSignal(parent, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, .proc/on_host_unarmed_melee) +/datum/component/riding/human/vehicle_mob_unbuckle(datum/source, mob/living/M, force = FALSE) + var/mob/living/carbon/human/H = parent + H.remove_movespeed_modifier(MOVESPEED_ID_HUMAN_CARRYING) + . = ..() + +/datum/component/riding/human/vehicle_mob_buckle(datum/source, mob/living/M, force = FALSE) + . = ..() + var/mob/living/carbon/human/H = parent + H.add_movespeed_modifier(MOVESPEED_ID_HUMAN_CARRYING, multiplicative_slowdown = HUMAN_CARRY_SLOWDOWN) + /datum/component/riding/human/proc/on_host_unarmed_melee(atom/target) - var/mob/living/carbon/human/AM = parent - if(AM.a_intent == INTENT_DISARM && (target in AM.buckled_mobs)) + var/mob/living/carbon/human/H = parent + if(H.a_intent == INTENT_DISARM && (target in H.buckled_mobs)) force_dismount(target) /datum/component/riding/human/handle_vehicle_layer() var/atom/movable/AM = parent if(AM.buckled_mobs && AM.buckled_mobs.len) - if(AM.dir == SOUTH) - AM.layer = ABOVE_MOB_LAYER + for(var/mob/M in AM.buckled_mobs) //ensure proper layering of piggyback and carry, sometimes weird offsets get applied + M.layer = MOB_LAYER + if(!AM.buckle_lying) + if(AM.dir == SOUTH) + AM.layer = ABOVE_MOB_LAYER + else + AM.layer = OBJ_LAYER else - AM.layer = OBJ_LAYER + if(AM.dir == NORTH) + AM.layer = OBJ_LAYER + else + AM.layer = ABOVE_MOB_LAYER else AM.layer = MOB_LAYER +/datum/component/riding/human/get_offsets(pass_index) + var/mob/living/carbon/human/H = parent + if(H.buckle_lying) + return list(TEXT_NORTH = list(0, 6), TEXT_SOUTH = list(0, 6), TEXT_EAST = list(0, 6), TEXT_WEST = list(0, 6)) + else + return list(TEXT_NORTH = list(0, 6), TEXT_SOUTH = list(0, 6), TEXT_EAST = list(-6, 4), TEXT_WEST = list( 6, 4)) + + /datum/component/riding/human/force_dismount(mob/living/user) var/atom/movable/AM = parent AM.unbuckle_mob(user) @@ -273,12 +299,15 @@ M.throw_at(target, 14, 5, AM) M.Knockdown(60) -/datum/component/riding/proc/equip_buckle_inhands(mob/living/carbon/human/user, amount_required = 1) +/datum/component/riding/proc/equip_buckle_inhands(mob/living/carbon/human/user, amount_required = 1, riding_target_override = null) var/atom/movable/AM = parent var/amount_equipped = 0 for(var/amount_needed = amount_required, amount_needed > 0, amount_needed--) var/obj/item/riding_offhand/inhand = new /obj/item/riding_offhand(user) - inhand.rider = user + if(!riding_target_override) + inhand.rider = user + else + inhand.rider = riding_target_override inhand.parent = AM if(user.put_in_hands(inhand, TRUE)) amount_equipped++ @@ -318,7 +347,7 @@ . = ..() /obj/item/riding_offhand/equipped() - if(loc != rider) + if(loc != rider && loc != parent) selfdeleting = TRUE qdel(src) . = ..() diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 8c29c1b2c5..b02c10dc5e 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -115,6 +115,9 @@ log_combat(user, pushed_mob, "placed") /obj/structure/table/proc/tablepush(mob/living/user, mob/living/pushed_mob) + if(HAS_TRAIT(user, TRAIT_PACIFISM)) + to_chat(user, "Throwing [pushed_mob] onto the table might hurt them!") + return var/added_passtable = FALSE if(!pushed_mob.pass_flags & PASSTABLE) added_passtable = TRUE @@ -125,9 +128,9 @@ if(pushed_mob.loc != loc) //Something prevented the tabling return pushed_mob.Knockdown(40) - pushed_mob.visible_message("[user] pushes [pushed_mob] onto [src].", \ - "[user] pushes [pushed_mob] onto [src].") - log_combat(user, pushed_mob, "pushed") + pushed_mob.visible_message("[user] slams [pushed_mob] onto [src]!", \ + "[user] slams you onto [src]!") + log_combat(user, pushed_mob, "tabled", null, "onto [src]") if(!ishuman(pushed_mob)) return var/mob/living/carbon/human/H = pushed_mob diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 528b55c921..9e1adf4604 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -854,52 +854,83 @@ .["Copy outfit"] = "?_src_=vars;[HrefToken()];copyoutfit=[REF(src)]" /mob/living/carbon/human/MouseDrop_T(mob/living/target, mob/living/user) - //If they dragged themselves and we're currently aggressively grabbing them try to piggyback - if(user == target && can_piggyback(target) && pulling == target && (HAS_TRAIT(src, TRAIT_PACIFISM) || grab_state >= GRAB_AGGRESSIVE) && stat == CONSCIOUS) - buckle_mob(target,TRUE,TRUE) + if(pulling == target && grab_state >= GRAB_AGGRESSIVE && stat == CONSCIOUS) + //If they dragged themselves and we're currently aggressively grabbing them try to piggyback + if(user == target && can_piggyback(target)) + piggyback(target) + return + //If you dragged them to you and you're aggressively grabbing try to fireman carry them + else if(user != target && can_be_firemanned(target)) + fireman_carry(target) + return . = ..() -/mob/living/carbon/human/proc/piggyback_instant(mob/living/M) - return buckle_mob(M, TRUE, TRUE, FALSE, TRUE) +//src is the user that will be carrying, target is the mob to be carried +/mob/living/carbon/human/proc/can_piggyback(mob/living/carbon/target) + return (istype(target) && target.stat == CONSCIOUS) -//Can C try to piggyback at all. -/mob/living/carbon/human/proc/can_piggyback(mob/living/carbon/C) - if(istype(C) && C.stat == CONSCIOUS) - return TRUE - return FALSE +/mob/living/carbon/human/proc/can_be_firemanned(mob/living/carbon/target) + return (ishuman(target) && !(target.mobility_flags & MOBILITY_STAND)) -/mob/living/carbon/human/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE, bypass_piggybacking = FALSE, no_delay = FALSE) +/mob/living/carbon/human/proc/fireman_carry(mob/living/carbon/target) + if(can_be_firemanned(target)) + visible_message("[src] starts lifting [target] onto their back...", + "You start lifting [target] onto your back...") + if(do_after(src, 50, TRUE, target)) + //Second check to make sure they're still valid to be carried + if(can_be_firemanned(target) && !incapacitated(FALSE, TRUE)) + buckle_mob(target, TRUE, TRUE, 90, 1, 0) + return + visible_message("[src] fails to fireman carry [target]!") + else + to_chat(src, "You can't fireman carry [target] while they're standing!") + +/mob/living/carbon/human/proc/piggyback(mob/living/carbon/target) + if(can_piggyback(target)) + visible_message("[target] starts to climb onto [src]...") + if(do_after(target, 15, target = src)) + if(can_piggyback(target)) + if(target.incapacitated(FALSE, TRUE) || incapacitated(FALSE, TRUE)) + target.visible_message("[target] can't hang onto [src]!") + return + buckle_mob(target, TRUE, TRUE, FALSE, 0, 2) + else + visible_message("[target] fails to climb onto [src]!") + else + to_chat(target, "You can't piggyback ride [src] right now!") + +/mob/living/carbon/human/buckle_mob(mob/living/target, force = FALSE, check_loc = TRUE, lying_buckle = FALSE, hands_needed = 0, target_hands_needed = 0) if(!force)//humans are only meant to be ridden through piggybacking and special cases return - if(bypass_piggybacking) - return ..() - if(!is_type_in_typecache(M, can_ride_typecache)) - M.visible_message("[M] really can't seem to mount [src]...") + if(!is_type_in_typecache(target, can_ride_typecache)) + target.visible_message("[target] really can't seem to mount [src]...") return + buckle_lying = lying_buckle var/datum/component/riding/human/riding_datum = LoadComponent(/datum/component/riding/human) - riding_datum.ride_check_rider_incapacitated = TRUE - riding_datum.ride_check_rider_restrained = TRUE - riding_datum.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 6), TEXT_SOUTH = list(0, 6), TEXT_EAST = list(-6, 4), TEXT_WEST = list( 6, 4))) - if(buckled_mobs && ((M in buckled_mobs) || (buckled_mobs.len >= max_buckled_mobs)) || buckled || (M.stat != CONSCIOUS)) + if(target_hands_needed) + riding_datum.ride_check_rider_restrained = TRUE + if(buckled_mobs && ((target in buckled_mobs) || (buckled_mobs.len >= max_buckled_mobs)) || buckled) return - if(can_piggyback(M)) - riding_datum.ride_check_ridden_incapacitated = TRUE - visible_message("[M] starts to climb onto [src]...") - if(no_delay || do_after(M, 15, target = src)) - if(can_piggyback(M)) - if(M.incapacitated(FALSE, TRUE) || incapacitated(FALSE, TRUE)) - M.visible_message("[M] can't hang onto [src]!") - return - if(!riding_datum.equip_buckle_inhands(M, 2)) //MAKE SURE THIS IS LAST!! - M.visible_message("[M] can't climb onto [src]!") - return - . = ..(M, force, check_loc) - stop_pulling() - else - visible_message("[M] fails to climb onto [src]!") - else - . = ..(M,force,check_loc) - stop_pulling() + var/equipped_hands_self + var/equipped_hands_target + if(hands_needed) + equipped_hands_self = riding_datum.equip_buckle_inhands(src, hands_needed, target) + if(target_hands_needed) + equipped_hands_target = riding_datum.equip_buckle_inhands(target, target_hands_needed) + + if(hands_needed || target_hands_needed) + if(hands_needed && !equipped_hands_self) + src.visible_message("[src] can't get a grip on [target] because their hands are full!", + "You can't get a grip on [target] because your hands are full!") + return + else if(target_hands_needed && !equipped_hands_target) + target.visible_message("[target] can't get a grip on [src] because their hands are full!", + "You can't get a grip on [src] because your hands are full!") + return + + stop_pulling() + riding_datum.handle_vehicle_layer() + . = ..(target, force, check_loc) /mob/living/carbon/human/proc/is_shove_knockdown_blocked() //If you want to add more things that block shove knockdown, extend this for(var/obj/item/clothing/C in get_equipped_items()) //doesn't include pockets diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 19f18f9973..2c48e56be4 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -286,6 +286,8 @@ var/mob/living/carbon/C = L if(HAS_TRAIT(src, TRAIT_STRONG_GRABBER)) C.grippedby(src) + + update_pull_movespeed() //mob verbs are a lot faster than object verbs //for more info on why this is not atom/pull, see examinate() in mob.dm @@ -300,6 +302,7 @@ /mob/living/stop_pulling() ..() + update_pull_movespeed() update_pull_hud_icon() /mob/living/verb/stop_pulling1() @@ -520,6 +523,10 @@ var/old_direction = dir var/turf/T = loc + + if(pulling) + update_pull_movespeed() + . = ..() if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1)//separated from our puller and not in the middle of a diagonal move. diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index e434bc4e95..9d04f288cd 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -153,7 +153,7 @@ to_chat(user, "[src] can't be grabbed more aggressively!") return FALSE - if(HAS_TRAIT(user, TRAIT_PACIFISM)) + if(user.grab_state >= GRAB_AGGRESSIVE && HAS_TRAIT(user, TRAIT_PACIFISM)) to_chat(user, "You don't want to risk hurting [src]!") return FALSE @@ -184,11 +184,17 @@ user.grab_state++ switch(user.grab_state) if(GRAB_AGGRESSIVE) - log_combat(user, src, "grabbed", addition="aggressive grab") - visible_message("[user] has grabbed [src] aggressively!", \ - "[user] has grabbed [src] aggressively!") - drop_all_held_items() + var/add_log = "" + if(HAS_TRAIT(user, TRAIT_PACIFISM)) + visible_message("[user] has firmly gripped [src]!", + "[user] has firmly gripped you!") + add_log = " (pacifist)" + else + visible_message("[user] has grabbed [src] aggressively!", \ + "[user] has grabbed you aggressively!") + drop_all_held_items() stop_pulling() + log_combat(user, src, "grabbed", addition="aggressive grab[add_log]") if(GRAB_NECK) log_combat(user, src, "grabbed", addition="neck grab") visible_message("[user] has grabbed [src] by the neck!",\ diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index c24e6ab108..d5fa479189 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -110,3 +110,5 @@ //List of active diseases var/list/diseases = list() // list of all diseases in a mob var/list/disease_resistances = list() + + var/drag_slowdown = TRUE //Whether the mob is slowed down when dragging another prone mob diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index 9566edc2ed..d8d7c40ee2 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /mob/living/Moved() . = ..() update_turf_movespeed(loc) @@ -25,3 +26,11 @@ add_movespeed_modifier(MOVESPEED_ID_LIVING_TURF_SPEEDMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = T.slowdown) else remove_movespeed_modifier(MOVESPEED_ID_LIVING_TURF_SPEEDMOD) + +/mob/living/proc/update_pull_movespeed() + if(pulling && isliving(pulling)) + var/mob/living/L = pulling + if(drag_slowdown && !(L.mobility_flags & MOBILITY_STAND) && !L.buckled && grab_state < GRAB_AGGRESSIVE) + add_movespeed_modifier(MOVESPEED_ID_PRONE_DRAGGING, multiplicative_slowdown = PULL_PRONE_SLOWDOWN) + return + remove_movespeed_modifier(MOVESPEED_ID_PRONE_DRAGGING) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 29fbd39e2c..94c0cad81c 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1207,14 +1207,15 @@ return if(incapacitated()) return - if(M.incapacitated()) - return if(module) if(!module.allow_riding) M.visible_message("Unfortunately, [M] just can't seem to hold onto [src]!") return - if(iscarbon(M) && (!riding_datum.equip_buckle_inhands(M, 1))) - M.visible_message("[M] can't climb onto [src] because [M.p_their()] hands are full!") + if(iscarbon(M) && !M.incapacitated() && !riding_datum.equip_buckle_inhands(M, 1)) + if(M.get_num_arms() <= 0) + M.visible_message("[M] can't climb onto [src] because [M.p_they()] don't have any usable arms!") + else + M.visible_message("[M] can't climb onto [src] because [M.p_their()] hands are full!") return . = ..(M, force, check_loc) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index c64702f9ef..0b29b19aa5 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -524,7 +524,12 @@ return if(isAI(M)) return - show_inv(usr) + +/mob/MouseDrop_T(atom/dropping, atom/user) + . = ..() + if(ismob(dropping) && dropping != user) + var/mob/M = dropping + M.show_inv(user) /mob/proc/is_muzzled() return 0 From 9651ae45b1b250510cfedb88be287d7d2036a741 Mon Sep 17 00:00:00 2001 From: Linzolle Date: Sat, 24 Aug 2019 20:27:47 -0500 Subject: [PATCH 061/324] love to work with merge conflicts --- code/modules/mob/living/living_movement.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index d8d7c40ee2..116be93cec 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -1,4 +1,3 @@ -<<<<<<< HEAD /mob/living/Moved() . = ..() update_turf_movespeed(loc) From 14ba00d477e7a7d5ece424cfccb91dff7951df57 Mon Sep 17 00:00:00 2001 From: Linzolle Date: Sat, 24 Aug 2019 22:21:46 -0500 Subject: [PATCH 062/324] shakes my head --- code/datums/components/footstep.dm | 26 +++++++++++-------- code/modules/mob/living/carbon/human/human.dm | 2 +- code/modules/mob/living/living.dm | 2 +- code/modules/mob/living/living_defines.dm | 2 +- code/modules/mob/living/living_movement.dm | 2 +- 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/code/datums/components/footstep.dm b/code/datums/components/footstep.dm index e9c9597068..a8c46e5488 100644 --- a/code/datums/components/footstep.dm +++ b/code/datums/components/footstep.dm @@ -18,11 +18,14 @@ var/mob/living/LM = parent var/v = volume var/e = e_range - if(!T.footstep || LM.buckled || LM.lying || !CHECK_MULTIPLE_BITFIELDS(LM.mobility_flags, MOBILITY_STAND | MOBILITY_MOVE) || LM.throwing || LM.movement_type & (VENTCRAWLING | FLYING)) + if(!T.footstep || LM.buckled || LM.lying || !LM.canmove || LM.resting || LM.buckled || LM.throwing || LM.movement_type & (VENTCRAWLING | FLYING)) if (LM.lying && !LM.buckled && !(!T.footstep || LM.movement_type & (VENTCRAWLING | FLYING))) //play crawling sound if we're lying playsound(T, 'sound/effects/footstep/crawl1.ogg', 15 * v) return + if(HAS_TRAIT(LM, TRAIT_SILENT_STEP)) + return + if(iscarbon(LM)) var/mob/living/carbon/C = LM if(!C.get_bodypart(BODY_ZONE_L_LEG) && !C.get_bodypart(BODY_ZONE_R_LEG)) @@ -32,13 +35,13 @@ e -= 5 steps++ - if(steps >= 6) + if(steps >= 3) steps = 0 - if(steps % 2) + else return - if(!LM.has_gravity(T) && steps != 0) // don't need to step as often when you hop around + if(prob(80) && !LM.has_gravity(T)) // don't need to step as often when you hop around return //begin playsound shenanigans// @@ -88,6 +91,10 @@ var/mob/living/carbon/human/H = LM var/feetCover = (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)) || (H.w_uniform && (H.w_uniform.body_parts_covered & FEET)) + if (H.dna.features["taur"] == "Naga" || H.dna.features["taur"] == "Tentacle") //are we a naga or tentacle taur creature + playsound(T, 'sound/effects/footstep/crawl1.ogg', 15 * v) + return + if(H.shoes || feetCover) //are we wearing shoes playsound(T, pick(GLOB.footstep[T.footstep][1]), GLOB.footstep[T.footstep][2] * v, @@ -95,10 +102,7 @@ GLOB.footstep[T.footstep][3] + e) if((!H.shoes && !feetCover)) //are we NOT wearing shoes - if(H.dna.species.special_step_sounds) - playsound(T, pick(H.dna.species.special_step_sounds), 50, TRUE) - else - playsound(T, pick(GLOB.barefootstep[T.barefootstep][1]), - GLOB.barefootstep[T.barefootstep][2] * v, - TRUE, - GLOB.barefootstep[T.barefootstep][3] + e) \ No newline at end of file + playsound(T, pick(GLOB.barefootstep[T.barefootstep][1]), + GLOB.barefootstep[T.barefootstep][2] * v, + TRUE, + GLOB.barefootstep[T.barefootstep][3] + e) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 9e1adf4604..3213f923ff 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -870,7 +870,7 @@ return (istype(target) && target.stat == CONSCIOUS) /mob/living/carbon/human/proc/can_be_firemanned(mob/living/carbon/target) - return (ishuman(target) && !(target.mobility_flags & MOBILITY_STAND)) + return (ishuman(target) && target.lying) /mob/living/carbon/human/proc/fireman_carry(mob/living/carbon/target) if(can_be_firemanned(target)) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 2c48e56be4..d2c9042b92 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -286,7 +286,7 @@ var/mob/living/carbon/C = L if(HAS_TRAIT(src, TRAIT_STRONG_GRABBER)) C.grippedby(src) - + update_pull_movespeed() //mob verbs are a lot faster than object verbs diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index d5fa479189..a38eee9442 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -111,4 +111,4 @@ var/list/diseases = list() // list of all diseases in a mob var/list/disease_resistances = list() - var/drag_slowdown = TRUE //Whether the mob is slowed down when dragging another prone mob + var/drag_slowdown = TRUE //Whether the mob is slowed down when dragging another prone mob \ No newline at end of file diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index 116be93cec..1ee563bc1f 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -29,7 +29,7 @@ /mob/living/proc/update_pull_movespeed() if(pulling && isliving(pulling)) var/mob/living/L = pulling - if(drag_slowdown && !(L.mobility_flags & MOBILITY_STAND) && !L.buckled && grab_state < GRAB_AGGRESSIVE) + if(drag_slowdown && L.lying && !L.buckled && grab_state < GRAB_AGGRESSIVE) add_movespeed_modifier(MOVESPEED_ID_PRONE_DRAGGING, multiplicative_slowdown = PULL_PRONE_SLOWDOWN) return remove_movespeed_modifier(MOVESPEED_ID_PRONE_DRAGGING) \ No newline at end of file From 955fafee11588a2ebd99979c794c27013cbe67b3 Mon Sep 17 00:00:00 2001 From: Linzolle Date: Sat, 24 Aug 2019 23:22:02 -0500 Subject: [PATCH 063/324] make it Work --- code/modules/mob/living/carbon/human/human.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 3213f923ff..29b7fe78c8 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -879,6 +879,7 @@ if(do_after(src, 50, TRUE, target)) //Second check to make sure they're still valid to be carried if(can_be_firemanned(target) && !incapacitated(FALSE, TRUE)) + target.resting = FALSE buckle_mob(target, TRUE, TRUE, 90, 1, 0) return visible_message("[src] fails to fireman carry [target]!") From 1ba9d374fe5f5a8f6db95a0589117fc5b3083ecd Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 25 Aug 2019 01:19:16 -0500 Subject: [PATCH 064/324] whatever, I guess --- code/modules/mob/dead/new_player/new_player.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index cd0d19f543..1cd32d43ac 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -546,7 +546,7 @@ var/frn = CONFIG_GET(flag/force_random_names) if(!frn) - frn = jobban_isbanned(src, "Appearance") + frn = jobban_isbanned(src, "appearance") if(QDELETED(src)) return if(frn) From 3e782795dd14a63016995d58da0442b4690802a6 Mon Sep 17 00:00:00 2001 From: Linzolle Date: Sun, 25 Aug 2019 13:14:57 -0500 Subject: [PATCH 065/324] get up --- code/modules/mob/living/living.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index d2c9042b92..cdce80225b 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1030,6 +1030,9 @@ stop_pulling() //CIT CHANGE - Ditto... else if(has_legs || ignore_legs) lying = 0 + if (pulledby) + var/mob/living/L = pulledby + L.update_pull_movespeed() if(buckled) lying = 90*buckle_lying else if(!lying) From a4fd2be7f7fd97fb74fb4607362e677b35086a7d Mon Sep 17 00:00:00 2001 From: Tupinambis Date: Mon, 26 Aug 2019 14:45:12 -0500 Subject: [PATCH 066/324] Various Shotgun Nerfs. --- code/modules/projectiles/guns/ballistic/shotgun.dm | 2 ++ .../projectiles/projectile/bullets/shotgun.dm | 12 ++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index 856dfed78b..04f24794ef 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -5,6 +5,7 @@ item_state = "shotgun" w_class = WEIGHT_CLASS_BULKY force = 10 + fire_delay = 10 flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BACK mag_type = /obj/item/ammo_box/magazine/internal/shot @@ -205,6 +206,7 @@ name = "combat shotgun" desc = "A semi automatic shotgun with tactical furniture and a six-shell capacity underneath." icon_state = "cshotgun" + fire_delay = 5 mag_type = /obj/item/ammo_box/magazine/internal/shot/com w_class = WEIGHT_CLASS_HUGE unique_reskin = list("Tatical" = "cshotgun", diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm index f9aa47c6a3..3595df098a 100644 --- a/code/modules/projectiles/projectile/bullets/shotgun.dm +++ b/code/modules/projectiles/projectile/bullets/shotgun.dm @@ -1,11 +1,11 @@ /obj/item/projectile/bullet/shotgun_slug name = "12g shotgun slug" - damage = 60 + damage = 50 /obj/item/projectile/bullet/shotgun_beanbag name = "beanbag slug" damage = 5 - stamina = 80 + stamina = 70 /obj/item/projectile/bullet/incendiary/shotgun name = "incendiary slug" @@ -47,7 +47,7 @@ /obj/item/projectile/bullet/shotgun_frag12 name ="frag12 slug" - damage = 25 + damage = 20 knockdown = 50 /obj/item/projectile/bullet/shotgun_frag12/on_hit(atom/target, blocked = FALSE) @@ -61,12 +61,12 @@ /obj/item/projectile/bullet/pellet/shotgun_buckshot name = "buckshot pellet" - damage = 12.5 + damage = 10 /obj/item/projectile/bullet/pellet/shotgun_rubbershot name = "rubbershot pellet" - damage = 3 - stamina = 25 + damage = 2 + stamina = 12.5 /obj/item/projectile/bullet/pellet/Range() ..() From 13638ed5d67a2269c9181bce3dc36294038e48bf Mon Sep 17 00:00:00 2001 From: Tupinambis Date: Mon, 26 Aug 2019 15:08:36 -0500 Subject: [PATCH 067/324] Reverts some changes I deemed unneccesary. Undoes a fuckup --- code/modules/projectiles/guns/ballistic/shotgun.dm | 1 - code/modules/projectiles/projectile/bullets/shotgun.dm | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index 04f24794ef..951d227a89 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -5,7 +5,6 @@ item_state = "shotgun" w_class = WEIGHT_CLASS_BULKY force = 10 - fire_delay = 10 flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BACK mag_type = /obj/item/ammo_box/magazine/internal/shot diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm index 3595df098a..3555cd3b75 100644 --- a/code/modules/projectiles/projectile/bullets/shotgun.dm +++ b/code/modules/projectiles/projectile/bullets/shotgun.dm @@ -1,6 +1,6 @@ /obj/item/projectile/bullet/shotgun_slug name = "12g shotgun slug" - damage = 50 + damage = 60 /obj/item/projectile/bullet/shotgun_beanbag name = "beanbag slug" @@ -47,7 +47,7 @@ /obj/item/projectile/bullet/shotgun_frag12 name ="frag12 slug" - damage = 20 + damage = 25 knockdown = 50 /obj/item/projectile/bullet/shotgun_frag12/on_hit(atom/target, blocked = FALSE) From d43b4599ef18cbea53cb2bae31380185a027e38e Mon Sep 17 00:00:00 2001 From: Tupinambis Date: Mon, 26 Aug 2019 15:53:44 -0500 Subject: [PATCH 068/324] I was bullied to reduce click delay. --- code/modules/projectiles/guns/ballistic/shotgun.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index 951d227a89..9962bb3424 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -205,7 +205,7 @@ name = "combat shotgun" desc = "A semi automatic shotgun with tactical furniture and a six-shell capacity underneath." icon_state = "cshotgun" - fire_delay = 5 + fire_delay = 3 mag_type = /obj/item/ammo_box/magazine/internal/shot/com w_class = WEIGHT_CLASS_HUGE unique_reskin = list("Tatical" = "cshotgun", From 5b4347c5abd8c5a4345051ec674e91bb077567f1 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Tue, 27 Aug 2019 04:30:31 -0500 Subject: [PATCH 069/324] Initial commit. needs to be added alongside all med_hud_set_status and tested to even fukkin' work. --- code/__DEFINES/atom_hud.dm | 3 ++- code/game/data_huds.dm | 18 +++++++++++++++++- .../mob/living/carbon/carbon_defines.dm | 2 +- .../mob/living/carbon/human/human_defines.dm | 2 +- code/modules/mob/living/living_defines.dm | 2 +- icons/mob/hud.dmi | Bin 14934 -> 15921 bytes 6 files changed, 22 insertions(+), 5 deletions(-) diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm index 4fd1669771..0e4f0f3a6e 100644 --- a/code/__DEFINES/atom_hud.dm +++ b/code/__DEFINES/atom_hud.dm @@ -23,8 +23,9 @@ #define AI_DETECT_HUD "19" #define NANITE_HUD "20" #define DIAG_NANITE_FULL_HUD "21" +#define RAD_HUD "22" //radation alerts for medical huds //for antag huds. these are used at the /mob level -#define ANTAG_HUD "22" +#define ANTAG_HUD "23" //by default everything in the hud_list of an atom is an image //a value in hud_list with one of these will change that behavior diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 8506a4133a..7a1fe16faa 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -18,7 +18,7 @@ /datum/atom_hud/data /datum/atom_hud/data/human/medical - hud_icons = list(STATUS_HUD, HEALTH_HUD, NANITE_HUD) + hud_icons = list(STATUS_HUD, HEALTH_HUD, NANITE_HUD, RAD_HUD) /datum/atom_hud/data/human/medical/basic @@ -211,6 +211,22 @@ holder.icon_state = "hudhealthy" +/mob/living/carbon/proc/med_hud_set_radstatus() + var/image/radholder = hud_list[RAD_HUD] + var/icon/I = icon(icon, icon_state, dir) + radholder.pixel_y = I.Height() - world.icon_size + var/mob/living/carbon/M = src + var/rads = M.radiation + switch(rads) + if(-INFINITY to RAD_MOB_SAFE) + radholder.icon_state = "hudradsafe" + if((RAD_MOB_SAFE+1) to RAD_MOB_MUTATE) + radholder.icon_state = "hudraddanger" + if((RAD_MOB_MUTATE+1) to RAD_MOB_VOMIT) + radholder.icon_state = "hudradlethal" + if((RAD_MOB_VOMIT+1) to INFINITY) + radholder.icon_state = "hudradnuke" + /*********************************************** Security HUDs! Basic mode shows only the job. ************************************************/ diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index a067be798f..7a1039fdac 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -2,7 +2,7 @@ gender = MALE pressure_resistance = 15 possible_a_intents = list(INTENT_HELP, INTENT_HARM) - hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD,GLAND_HUD,NANITE_HUD,DIAG_NANITE_FULL_HUD) + hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD,GLAND_HUD,NANITE_HUD,DIAG_NANITE_FULL_HUD,RAD_HUD) has_limbs = 1 held_items = list(null, null) var/list/stomach_contents = list() diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 7a0a2d8ad8..69f1675a41 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -1,5 +1,5 @@ /mob/living/carbon/human - hud_possible = list(HEALTH_HUD,STATUS_HUD,ID_HUD,WANTED_HUD,IMPLOYAL_HUD,IMPCHEM_HUD,IMPTRACK_HUD, NANITE_HUD, DIAG_NANITE_FULL_HUD,ANTAG_HUD,GLAND_HUD,SENTIENT_DISEASE_HUD) + hud_possible = list(HEALTH_HUD,STATUS_HUD,ID_HUD,WANTED_HUD,IMPLOYAL_HUD,IMPCHEM_HUD,IMPTRACK_HUD, NANITE_HUD, DIAG_NANITE_FULL_HUD,ANTAG_HUD,GLAND_HUD,SENTIENT_DISEASE_HUD,RAD_HUD) hud_type = /datum/hud/human possible_a_intents = list(INTENT_HELP, INTENT_DISARM, INTENT_GRAB, INTENT_HARM) pressure_resistance = 25 diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index c24e6ab108..998f2d5536 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -2,7 +2,7 @@ see_invisible = SEE_INVISIBLE_LIVING sight = 0 see_in_dark = 2 - hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD,NANITE_HUD,DIAG_NANITE_FULL_HUD) + hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD,NANITE_HUD,DIAG_NANITE_FULL_HUD,RAD_HUD) pressure_resistance = 10 var/resize = 1 //Badminnery resize diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 10474f94da8c8e6a2667411520ebb65c5f18d096..164fabe8063e39972b342358fc0786ad3fd4472e 100644 GIT binary patch literal 15921 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 literal 14934 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 Date: Tue, 27 Aug 2019 12:41:47 -0400 Subject: [PATCH 070/324] Fancy_part1 --- code/game/objects/items/tools/crowbar.dm | 2 +- code/game/objects/items/tools/screwdriver.dm | 2 +- code/game/objects/items/tools/weldingtool.dm | 2 +- code/game/objects/items/tools/wirecutters.dm | 4 ++-- code/game/objects/items/tools/wrench.dm | 2 +- icons/obj/clothing/belt_overlays.dmi | Bin 4840 -> 5402 bytes icons/obj/tools.dmi | Bin 23306 -> 26057 bytes modular_citadel/icons/obj/tools.dmi | Bin 16853 -> 18597 bytes 8 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm index 70bfebb799..f891a48df6 100644 --- a/code/game/objects/items/tools/crowbar.dm +++ b/code/game/objects/items/tools/crowbar.dm @@ -31,7 +31,7 @@ name = "brass crowbar" desc = "A brass crowbar. It feels faintly warm to the touch." resistance_flags = FIRE_PROOF | ACID_PROOF - icon_state = "crowbar_brass" + icon_state = "crowbar_clock" toolspeed = 0.5 /obj/item/crowbar/bronze diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index 68946f73cd..6cbede78a8 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -81,7 +81,7 @@ name = "brass screwdriver" desc = "A screwdriver made of brass. The handle feels freezing cold." resistance_flags = FIRE_PROOF | ACID_PROOF - icon_state = "screwdriver_brass" + icon_state = "screwdriver_clock" item_state = "screwdriver_brass" toolspeed = 0.5 random_color = FALSE diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 9b622a14c4..fb38e4335e 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -360,7 +360,7 @@ name = "brass welding tool" desc = "A brass welder that seems to constantly refuel itself. It is faintly warm to the touch." resistance_flags = FIRE_PROOF | ACID_PROOF - icon_state = "brasswelder" + icon_state = "clockwelder" item_state = "brasswelder" /obj/item/weldingtool/bronze diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm index 527891afdb..e40ae8bdc1 100644 --- a/code/game/objects/items/tools/wirecutters.dm +++ b/code/game/objects/items/tools/wirecutters.dm @@ -63,9 +63,9 @@ /obj/item/wirecutters/brass name = "brass wirecutters" - desc = "A pair of wirecutters made of brass. The handle feels freezing cold to the touch." + desc = "A pair of eloquent wirecutters made of brass. The handle feels freezing cold to the touch." resistance_flags = FIRE_PROOF | ACID_PROOF - icon_state = "cutters_brass" + icon_state = "cutters_clock" random_color = FALSE toolspeed = 0.5 diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm index 8ff960825a..462eb22aaa 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -32,7 +32,7 @@ name = "brass wrench" desc = "A brass wrench. It's faintly warm to the touch." resistance_flags = FIRE_PROOF | ACID_PROOF - icon_state = "wrench_brass" + icon_state = "wrench_clock" toolspeed = 0.5 /obj/item/wrench/bronze diff --git a/icons/obj/clothing/belt_overlays.dmi b/icons/obj/clothing/belt_overlays.dmi index 717937c0340ca2f25f7358e58b694d008c93838a..da8ff0a20bd6c93dbbb17545017ddf5de03911ab 100644 GIT binary patch literal 5402 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 f8@CtDDIg_{bR$R$NJxW(bVzsi-e>WB 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

x1^}5BkKl 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 C29T%# From 3b2be43bd870a55a545f97435efc849576ae8e03 Mon Sep 17 00:00:00 2001 From: Tupinambis Date: Tue, 27 Aug 2019 18:35:08 -0500 Subject: [PATCH 071/324] Slightly increased rubbershot damage from 12.5 to 15 per pellet. --- code/modules/projectiles/projectile/bullets/shotgun.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm index 3555cd3b75..4a1c954b1b 100644 --- a/code/modules/projectiles/projectile/bullets/shotgun.dm +++ b/code/modules/projectiles/projectile/bullets/shotgun.dm @@ -66,7 +66,7 @@ /obj/item/projectile/bullet/pellet/shotgun_rubbershot name = "rubbershot pellet" damage = 2 - stamina = 12.5 + stamina = 15 /obj/item/projectile/bullet/pellet/Range() ..() From 124d8503dc9892acfe8223b21c5501c4f7f187f1 Mon Sep 17 00:00:00 2001 From: Fermi Date: Thu, 29 Aug 2019 00:12:16 +0100 Subject: [PATCH 072/324] Tests and fixes. --- .../food_and_drinks/recipes/drinks_recipes.dm | 8 ++- .../chemistry/machinery/chem_master.dm | 4 +- code/modules/reagents/chemistry/reagents.dm | 58 +++++++++++++++++-- .../chemistry/reagents/alcohol_reagents.dm | 11 +++- .../chemistry/reagents/drink_reagents.dm | 3 + .../chemistry/reagents/fermi_reagents.dm | 47 +-------------- .../reagents/chemistry/recipes/fermi.dm | 4 +- 7 files changed, 77 insertions(+), 58 deletions(-) diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index b97b919e1e..af1b5337a1 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -385,8 +385,8 @@ OptimalTempMin = 200 // Lower area of bell curve for determining heat based rate reactions OptimalTempMax = 950 // Upper end for above ExplodeTemp = 999 //Temperature at which reaction explodes - OptimalpHMin = 2 // Lowest value of pH determining pH a 1 value for pH based rate reactions (Plateu phase) - OptimalpHMax = 2.8 // Higest value for above + OptimalpHMin = 3 // Lowest value of pH determining pH a 1 value for pH based rate reactions (Plateu phase) + OptimalpHMax = 3.6 // Higest value for above ReactpHLim = 5 // How far out pH wil react, giving impurity place (Exponential phase) CatalystFact = 0 // How much the catalyst affects the reaction (0 = no catalyst) CurveSharpT = 2 // How sharp the temperature exponential curve is (to the power of value) @@ -405,6 +405,10 @@ holder.remove_reagent(src.id, cached_volume) holder.add_reagent("neuroweak", cached_volume) +/datum/chemical_reaction/neurotoxin/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)//reduced size + volume = volume/10 + ..() + /datum/chemical_reaction/snowwhite name = "Snow White" id = "snowwhite" diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 002c54be94..0a4b3b8f53 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -391,9 +391,9 @@ state = "Gas" var/const/P = 3 //The number of seconds between life ticks var/T = initial(R.metabolization_rate) * (60 / P) - if(istype(R, /datum/reagent/fermi)) + var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.id) + if(Rcr && Rcr.FermiChem) fermianalyze = TRUE - var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.id) var/pHpeakCache = (Rcr.OptimalpHMin + Rcr.OptimalpHMax)/2 analyzeVars = list("name" = initial(R.name), "state" = state, "color" = initial(R.color), "description" = initial(R.description), "metaRate" = T, "overD" = initial(R.overdose_threshold), "addicD" = initial(R.addiction_threshold), "purityF" = initial(R.purity), "inverseRatioF" = initial(R.InverseChemVal), "purityE" = initial(Rcr.PurityMin), "minTemp" = initial(Rcr.OptimalTempMin), "maxTemp" = initial(Rcr.OptimalTempMax), "eTemp" = initial(Rcr.ExplodeTemp), "pHpeak" = pHpeakCache) else diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index c21629ce8f..4a51f3e760 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -33,18 +33,21 @@ var/addiction_stage4_end = 40 var/overdosed = 0 // You fucked up and this is now triggering its overdose effects, purge that shit quick. var/self_consuming = FALSE + var/metabolizing = FALSE + var/invisible = FALSE //Set to true if it doesn't appear on handheld health analyzers. //Fermichem vars: + var/FermiChem = FALSE //If it's a fermichem var/purity = 1 //How pure a chemical is from 0 - 1. var/addProc = FALSE //If the chemical should force an on_new() call - var/turf/loc = null //Should be the creation location! + var/turf/loc = null //Should be the creation location! var/pH = 7 //pH of the specific reagent, used for calculating the sum pH of a holder. + var/SplitChem = FALSE //If the chem splits on metabolism var/ImpureChem = "fermiTox"// What chemical is metabolised with an inpure reaction var/InverseChemVal = 0.25 // If the impurity is below 0.5, replace ALL of the chem with InverseChem upon metabolising var/InverseChem = "fermiTox"// What chem is metabolised when purity is below InverseChemVal, this shouldn't be made, but if it does, well, I guess I'll know about it. var/DoNotSplit = FALSE // If impurity is handled within the main chem itself var/OnMobMergeCheck = FALSE //Call on_mob_life proc when reagents are merging. - var/metabolizing = FALSE - var/invisible = FALSE //Set to true if it doesn't appear on handheld health analyzers. + /datum/reagent/Destroy() // This should only be called by the holder, so it's already handled clearing its references . = ..() @@ -74,7 +77,27 @@ return // Called when this reagent is first added to a mob -/datum/reagent/proc/on_mob_add(mob/living/L) +/datum/reagent/proc/on_mob_add(mob/living/L, amount) + if(SplitChem) + var/mob/living/carbon/M = L + if(!M) + return + if(purity < 0) + CRASH("Purity below 0 for chem: [id], Please let Fermis Know!") + if (purity == 1 || DoNotSplit == TRUE) + log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [id]") + return + else if (InverseChemVal > purity)//Turns all of a added reagent into the inverse chem + M.reagents.remove_reagent(id, amount, FALSE) + M.reagents.add_reagent(InverseChem, amount, FALSE, other_purity = 1) + log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [InverseChem]") + return + else + var/impureVol = amount * (1 - purity) //turns impure ratio into impure chem + M.reagents.remove_reagent(id, (impureVol), FALSE) + M.reagents.add_reagent(ImpureChem, impureVol, FALSE, other_purity = 1) + log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume - impureVol]u of [id]") + log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [ImpureChem]") return // Called when this reagent is removed while inside a mob @@ -97,7 +120,32 @@ return // Called when two reagents of the same are mixing. -/datum/reagent/proc/on_merge(data) +/datum/reagent/proc/on_merge(data, amount, mob/living/carbon/M, purity) + if(SplitChem) + if(!ishuman(M)) + return + if (purity < 0) + CRASH("Purity below 0 for chem: [id], Please let Fermis Know!") + if (purity == 1 || DoNotSplit == TRUE) + log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [id] in themselves") + return + else if (InverseChemVal > purity) + M.reagents.remove_reagent(id, amount, FALSE) + M.reagents.add_reagent(InverseChem, amount, FALSE, other_purity = 1) + for(var/datum/reagent/fermi/R in M.reagents.reagent_list) + if(R.name == "") + R.name = name//Negative effects are hidden + log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [InverseChem]") + return + else + var/impureVol = amount * (1 - purity) + M.reagents.remove_reagent(id, impureVol, FALSE) + M.reagents.add_reagent(ImpureChem, impureVol, FALSE, other_purity = 1) + for(var/datum/reagent/fermi/R in M.reagents.reagent_list) + if(R.name == "") + R.name = name//Negative effects are hidden + log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume - impureVol]u of [id]") + log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [ImpureChem]") return /datum/reagent/proc/on_update(atom/A) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 0817d04cb8..97f94d596d 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -1383,6 +1383,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_icon_state = "neurotoxinglass" glass_name = "Neurotoxin" glass_desc = "A drink that is guaranteed to knock you silly." + SplitChem = TRUE ImpureChem = "neuroweak" InverseChemVal = 0 //Clear conversion InverseChem = "neuroweak" @@ -1422,14 +1423,18 @@ All effects don't start immediately, but rather get worse over time; the rate is ..() /datum/reagent/consumable/ethanol/neuroweak - name = "Neuroalcohol" + name = "Neuro-Smash" id = "neuroweak" - description = "A mostly safe alcoholic drink for the true daredevils. Do not mix with Neurotoxin." + description = "A mostly safe alcoholic drink for the true daredevils. Counteracts Neurotoxins." boozepwr = 60 /datum/reagent/consumable/ethanol/neuroweak/on_mob_life(mob/living/carbon/M) if(holder.has_reagent("neurotoxin")) - M.adjustBrainLoss(0.5*REM, 150) + M.adjustBrainLoss(-1*REM, 150) + M.reagents.remove_reagent("neurotoxin", 0.25, FALSE) + if(holder.has_reagent("fentanyl")) + M.adjustBrainLoss(-1*REM, 150) + M.reagents.remove_reagent("fentanyl", 0.25, FALSE) else M.adjustBrainLoss(-0.5*REM, 150) M.dizziness +=2 diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index bfefc073f8..913a6b3ef7 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -13,6 +13,7 @@ glass_icon_state = "glass_orange" glass_name = "glass of orange juice" glass_desc = "Vitamins! Yay!" + pH = 3.3 /datum/reagent/consumable/orangejuice/on_mob_life(mob/living/carbon/M) if(M.getOxyLoss() && prob(30)) @@ -45,6 +46,7 @@ glass_icon_state = "glass_green" glass_name = "glass of lime juice" glass_desc = "A glass of sweet-sour lime juice." + pH = 2.2 /datum/reagent/consumable/limejuice/on_mob_life(mob/living/carbon/M) if(M.getToxLoss() && prob(20)) @@ -125,6 +127,7 @@ glass_icon_state = "lemonglass" glass_name = "glass of lemon juice" glass_desc = "Sour..." + pH = 2 /datum/reagent/consumable/banana name = "Banana Juice" diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm index 275c244a83..d7122e85e3 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -6,58 +6,17 @@ id = "fermi" taste_description = "affection and love!" can_synth = FALSE + SplitChem = TRUE //This should process fermichems to find out how pure they are and what effect to do. /datum/reagent/fermi/on_mob_add(mob/living/carbon/M, amount) . = ..() - if(!M) - return - if(purity < 0) - CRASH("Purity below 0 for chem: [id], Please let Fermis Know!") - if (purity == 1 || DoNotSplit == TRUE) - log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [id]") - return - else if (InverseChemVal > purity)//Turns all of a added reagent into the inverse chem - M.reagents.remove_reagent(id, amount, FALSE) - M.reagents.add_reagent(InverseChem, amount, FALSE, other_purity = 1) - log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [InverseChem]") - return - else - var/impureVol = amount * (1 - purity) //turns impure ratio into impure chem - M.reagents.remove_reagent(id, (impureVol), FALSE) - M.reagents.add_reagent(ImpureChem, impureVol, FALSE, other_purity = 1) - log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume - impureVol]u of [id]") - log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [ImpureChem]") - return + //When merging two fermichems, see above /datum/reagent/fermi/on_merge(data, amount, mob/living/carbon/M, purity)//basically on_mob_add but for merging . = ..() - if(!ishuman(M)) - return - if (purity < 0) - CRASH("Purity below 0 for chem: [id], Please let Fermis Know!") - if (purity == 1 || DoNotSplit == TRUE) - log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [id] in themselves") - return - else if (InverseChemVal > purity) - M.reagents.remove_reagent(id, amount, FALSE) - M.reagents.add_reagent(InverseChem, amount, FALSE, other_purity = 1) - for(var/datum/reagent/fermi/R in M.reagents.reagent_list) - if(R.name == "") - R.name = name//Negative effects are hidden - log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [InverseChem]") - return - else - var/impureVol = amount * (1 - purity) - M.reagents.remove_reagent(id, impureVol, FALSE) - M.reagents.add_reagent(ImpureChem, impureVol, FALSE, other_purity = 1) - for(var/datum/reagent/fermi/R in M.reagents.reagent_list) - if(R.name == "") - R.name = name//Negative effects are hidden - log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume - impureVol]u of [id]") - log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [ImpureChem]") - return + //////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index bd327809eb..ef48ccb789 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -101,10 +101,10 @@ PurityMin = 0.4 //The minimum purity something has to be above, otherwise it explodes. /datum/chemical_reaction/fermi/eigenstate/FermiFinish(datum/reagents/holder, var/atom/my_atom)//Strange how this doesn't work but the other does. - if(!locate(/datum/reagent/fermi/eigenstate) in my_atom.reagents.reagent_list) + var/datum/reagent/fermi/eigenstate/E = locate(/datum/reagent/fermi/eigenstate) in my_atom.reagents.reagent_list + if(!E) return var/turf/open/location = get_turf(my_atom) - var/datum/reagent/fermi/eigenstate/E = locate(/datum/reagent/fermi/eigenstate) in my_atom.reagents.reagent_list if(location) E.location_created = location E.data.["location_created"] = location From 5b144ef1c6a8c610491bc6ff3028a79c06a864aa Mon Sep 17 00:00:00 2001 From: Fermi Date: Thu, 29 Aug 2019 00:13:24 +0100 Subject: [PATCH 073/324] Removed unused var --- code/modules/reagents/chemistry/reagents.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index 4a51f3e760..520148848c 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -36,7 +36,6 @@ var/metabolizing = FALSE var/invisible = FALSE //Set to true if it doesn't appear on handheld health analyzers. //Fermichem vars: - var/FermiChem = FALSE //If it's a fermichem var/purity = 1 //How pure a chemical is from 0 - 1. var/addProc = FALSE //If the chemical should force an on_new() call var/turf/loc = null //Should be the creation location! From a5b8a56f9a92153413e95004c2a0ee49cfa8dda3 Mon Sep 17 00:00:00 2001 From: Fermi Date: Thu, 29 Aug 2019 00:32:05 +0100 Subject: [PATCH 074/324] Realised it was impossible. --- code/modules/food_and_drinks/recipes/drinks_recipes.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index af1b5337a1..c704c185a3 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -385,8 +385,8 @@ OptimalTempMin = 200 // Lower area of bell curve for determining heat based rate reactions OptimalTempMax = 950 // Upper end for above ExplodeTemp = 999 //Temperature at which reaction explodes - OptimalpHMin = 3 // Lowest value of pH determining pH a 1 value for pH based rate reactions (Plateu phase) - OptimalpHMax = 3.6 // Higest value for above + OptimalpHMin = 4.6 // Lowest value of pH determining pH a 1 value for pH based rate reactions (Plateu phase) + OptimalpHMax = 5.2 // Higest value for above ReactpHLim = 5 // How far out pH wil react, giving impurity place (Exponential phase) CatalystFact = 0 // How much the catalyst affects the reaction (0 = no catalyst) CurveSharpT = 2 // How sharp the temperature exponential curve is (to the power of value) From c1d9e3f03b456f3cbcaafbf11a382964bd9314bb Mon Sep 17 00:00:00 2001 From: Fermi Date: Thu, 29 Aug 2019 00:37:18 +0100 Subject: [PATCH 075/324] Failing is frustrating --- code/modules/reagents/chemistry/reagents/alcohol_reagents.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 97f94d596d..a58a328003 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -1427,6 +1427,7 @@ All effects don't start immediately, but rather get worse over time; the rate is id = "neuroweak" description = "A mostly safe alcoholic drink for the true daredevils. Counteracts Neurotoxins." boozepwr = 60 + pH = 8 /datum/reagent/consumable/ethanol/neuroweak/on_mob_life(mob/living/carbon/M) if(holder.has_reagent("neurotoxin")) From 47ee3a8a6d43fe654c77fbad332a2f75782806f4 Mon Sep 17 00:00:00 2001 From: Sishen Date: Wed, 28 Aug 2019 23:56:08 -0400 Subject: [PATCH 076/324] fuck --- code/__DEFINES/combat.dm | 1 + code/modules/projectiles/ammunition/energy/laser.dm | 5 +++-- code/modules/projectiles/guns/energy/minigun.dm | 7 +++++-- code/modules/projectiles/projectile/beams.dm | 6 ++++++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index e31d2a278e..b16a937f3e 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -47,6 +47,7 @@ #define CLICK_CD_MELEE 8 #define CLICK_CD_RANGE 4 #define CLICK_CD_RAPID 2 +#define CLICK_CD_HYPERSPEED 1 #define CLICK_CD_CLICK_ABILITY 6 #define CLICK_CD_BREAKOUT 100 #define CLICK_CD_HANDCUFFED 10 diff --git a/code/modules/projectiles/ammunition/energy/laser.dm b/code/modules/projectiles/ammunition/energy/laser.dm index 40f929a816..6f54782641 100644 --- a/code/modules/projectiles/ammunition/energy/laser.dm +++ b/code/modules/projectiles/ammunition/energy/laser.dm @@ -70,6 +70,7 @@ fire_sound = 'sound/weapons/laser.ogg' /obj/item/ammo_casing/energy/laser/weak - projectile_type = /obj/item/projectile/beam/weak - e_cost = 20 + projectile_type = /obj/item/projectile/beam/weak/minigun + e_cost = 5 + delay = 0 fire_sound = 'sound/weapons/gatling.ogg' diff --git a/code/modules/projectiles/guns/energy/minigun.dm b/code/modules/projectiles/guns/energy/minigun.dm index 07fc374a23..f8ae3a4847 100644 --- a/code/modules/projectiles/guns/energy/minigun.dm +++ b/code/modules/projectiles/guns/energy/minigun.dm @@ -12,8 +12,8 @@ var/obj/item/gun/energy/minigun/gun var/armed = 0 //whether the gun is attached, 0 is attached, 1 is the gun is wielded. var/overheat = 0 - var/overheat_max = 50 - var/heat_diffusion = 2 + var/overheat_max = 200 + var/heat_diffusion = 5 /obj/item/minigunpack2/Initialize() . = ..() @@ -105,6 +105,7 @@ burst_size = 2 automatic = 1 can_charge = 0 + firing_burst = FALSE selfcharge = EGUN_SELFCHARGE charge_tick = 2 charge_delay = 5 @@ -136,6 +137,8 @@ ..() else to_chat(user, "The gun's heat sensor locked the trigger to prevent lens damage.") + if(user.a_intent == INTENT_HARM) + user.changeNext_move(CLICK_CD_HYPERSPEED) /obj/item/gun/energy/minigun/afterattack(atom/target, mob/living/user, flag, params) if(!ammo_pack || ammo_pack.loc != user) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index cbd0348743..71dd748dac 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -39,6 +39,12 @@ /obj/item/projectile/beam/weak damage = 15 +/obj/item/projectile/beam/weak/minigun + +/obj/item/projectile/beam/weak/minigun/Initialize() + .=..() + speed = pick(0.7,0.75,0.8,0.85,0.9,0.95,1,1.05,1.1,1.15) + /obj/item/projectile/beam/weak/penetrator armour_penetration = 50 From d3852ebd56eb3381463cde62fe407e02c3d1d71d Mon Sep 17 00:00:00 2001 From: TrilbySpaceClone Date: Thu, 29 Aug 2019 19:39:10 -0400 Subject: [PATCH 077/324] even more --- code/game/objects/items/trash.dm | 3 +++ .../modules/food_and_drinks/food/condiment.dm | 7 +++++++ .../food_and_drinks/food/snacks_meat.dm | 8 ++++++++ .../food_and_drinks/food/snacks_other.dm | 10 +++++++++- .../recipes/tablecraft/recipes_meat.dm | 12 ++++++++++++ code/modules/hydroponics/grown/misc.dm | 5 +++-- .../chemistry/reagents/food_reagents.dm | 7 +++++++ .../chemistry/reagents/other_reagents.dm | 9 +++++++++ .../reagents/chemistry/recipes/others.dm | 6 ++++++ code/modules/vending/drinnerware.dm | 2 ++ icons/obj/food/containers.dmi | Bin 11226 -> 11309 bytes icons/obj/food/food.dmi | Bin 63326 -> 64034 bytes icons/obj/janitor.dmi | Bin 23842 -> 24146 bytes 13 files changed, 66 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index 539a60986a..5cb7e18011 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -44,6 +44,9 @@ icon_state = "plate" resistance_flags = NONE +/obj/item/trash/plate/alt + icon_state = "plate1" + /obj/item/trash/pistachios name = "pistachios pack" icon_state = "pistachios_pack" diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index 31e99535d1..1d0b626d98 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -16,6 +16,7 @@ //Possible_states has the reagent id as key and a list of, in order, the icon_state, the name and the desc as values. Used in the on_reagent_change(changetype) to change names, descs and sprites. var/list/possible_states = list( "ketchup" = list("ketchup", "ketchup bottle", "You feel more American already."), + "mustard" = list("mustard", "mustard bottle", "A spice mixed with enzymes and water."), "capsaicin" = list("hotsauce", "hotsauce bottle", "You can almost TASTE the stomach ulcers now!"), "enzyme" = list("enzyme", "universal enzyme bottle", "Used in cooking various dishes"), "soysauce" = list("soysauce", "soy sauce bottle", "A salty soy-based flavoring"), @@ -282,6 +283,12 @@ originalname = "ketchup" list_reagents = list("ketchup" = 10) +//Mustard +/obj/item/reagent_containers/food/condiment/pack/mustard + name = "mustard pack" + originalname = "mustard" + list_reagents = list("mustard" = 10) + //Hot sauce /obj/item/reagent_containers/food/condiment/pack/hotsauce name = "hotsauce pack" diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index cf99bd78d9..0b53ec8822 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -322,6 +322,14 @@ filling_color = "#800000" tastes = list("meat" = 1, "butter" = 1) +/obj/item/reagent_containers/food/snacks/corndog + name = "corndog plate" + desc = "A plate with two small corn dogs, with two dimples of ketchup and mustard to dip them in." + icon_state = "dorndog" + trash = /obj/item/trash/plate/alt + tastes = list("hotdog" = 2, "mustard and ketchup" = 1, "fryed bread" = 1) + bonus_reagents = list("nutriment" = 6, "vitamin" = 2, "mustard" = 5, "ketchup" = 5) + /obj/item/reagent_containers/food/snacks/kebab/rat name = "rat-kebab" desc = "Not so delicious rat meat, on a stick." diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index c4b9451c7f..ad0824dd79 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -581,6 +581,14 @@ icon_state = "chocolatestrawberry" list_reagents = list("sugar" = 5, "nutriment" = 2) filling_color = "#ffdf26" - w_class = WEIGHT_CLASS_NORMAL tastes = list("strawberries" = 5, "chocolate" = 3) + foodtype = FRUIT | SUGAR + +/obj/item/reagent_containers/food/snacks/chocolatebanana + name = "Chocolate dipped banana" + desc = "A banana dipped in a bit of chocolate and held on a stick." + icon_state = "banana_coco" + list_reagents = list("sugar" = 5, "nutriment" = 3, "vitamin" = 1) + filling_color = "#ffdf26" + tastes = list("banana" = 5, "chocolate" = 3) foodtype = FRUIT | SUGAR \ No newline at end of file diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm index 7eff2820c5..c2c399649f 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm @@ -128,6 +128,18 @@ result = /obj/item/reagent_containers/food/snacks/pigblanket subcategory = CAT_MEAT +/datum/crafting_recipe/food/corndog + name = "Corndog meal" + reqs = list( + /obj/item/stack/rods = 1, + /obj/item/reagent_containers/food/snacks/meat/cutlet = 1, + /obj/item/reagent_containers/food/snacks/bun = 1, + /datum/chemical_reaction/mustard = 5, + /datum/reagent/consumable/ketchup = 5 + ) + result = /obj/item/reagent_containers/food/snacks/corndog + subcategory = CAT_MEAT + /datum/crafting_recipe/food/ratkebab name = "Rat Kebab" reqs = list( diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 107a6a94f9..0902052a11 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -1,7 +1,7 @@ // Starthistle /obj/item/seeds/starthistle name = "pack of starthistle seeds" - desc = "A robust species of weed that often springs up in-between the cracks of spaceship parking lots." + desc = "A robust species of weed that often springs up in-between the cracks of spaceship parking lots. Grind down these seeds for a substitution for mustardgrind." icon_state = "seed-starthistle" species = "starthistle" plantname = "Starthistle" @@ -9,9 +9,10 @@ endurance = 50 // damm pesky weeds maturation = 5 production = 1 - yield = 2 + yield = 6 potency = 10 growthstages = 3 + grind_results = list("mustardgrind" = 1) growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' genes = list(/datum/plant_gene/trait/plant_type/weed_hardy) mutatelist = list(/obj/item/seeds/harebell) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 19aeaeb25e..ace92936f7 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -191,6 +191,13 @@ color = "#731008" // rgb: 115, 16, 8 taste_description = "ketchup" +/datum/reagent/consumable/mustard + name = "Mustard" + id = "mustard" + description = "Mustard, mostly used on hotdogs, corndogs and burgards." + nutriment_factor = 5 * REAGENTS_METABOLISM + color = "#DDED26" // rgb: 221, 237, 38 + taste_description = "mustard" /datum/reagent/consumable/capsaicin name = "Capsaicin Oil" diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 07c9b166ff..bbde4852c8 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -2031,3 +2031,12 @@ /datum/reagent/changeling_string/Destroy() qdel(original_dna) return ..() + +/datum/reagent/mustardgrind + name = "Mustardgrind" + id = "mustardgrind" + description = "A powerd that is mixed with water and enzymes to make mustard." + color = "#BCC740" //RGB: 188, 199, 64 + taste_description = "plant dust" + + diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index e34f34675c..b5868d8b0a 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -82,6 +82,12 @@ required_temp = 374 mob_react = FALSE +/datum/chemical_reaction/mustard + name = "Mustard" + id = "mustard" + results = list("mustard" = 5) + required_reagents = list("mustardgrind" = 1, "water" = 10, "enzyme"= 1) + /datum/chemical_reaction/soapification/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) for(var/i = 1, i <= created_volume, i++) diff --git a/code/modules/vending/drinnerware.dm b/code/modules/vending/drinnerware.dm index 749a3b7c2b..3b036c0d90 100644 --- a/code/modules/vending/drinnerware.dm +++ b/code/modules/vending/drinnerware.dm @@ -9,7 +9,9 @@ /obj/item/kitchen/rollingpin = 2, /obj/item/reagent_containers/food/drinks/drinkingglass = 8, /obj/item/clothing/suit/apron/chef = 2, + /obj/item/storage/box/cups = 2, /obj/item/reagent_containers/food/condiment/pack/ketchup = 5, + /obj/item/reagent_containers/food/condiment/pack/mustard = 5, /obj/item/reagent_containers/food/condiment/pack/hotsauce = 5, /obj/item/reagent_containers/food/condiment/pack/astrotame = 5, /obj/item/reagent_containers/food/condiment/saltshaker = 5, diff --git a/icons/obj/food/containers.dmi b/icons/obj/food/containers.dmi index f64dfd47408222a3ede3542b7e69d93c11ef0d9e..51f0cc6d6cc1001124b2b9304b78781049c6d534 100644 GIT binary patch literal 11309 zcmb7qcRbtQ+joLeYAdBROO2|gN~t13?b@SiQ+q2)ji9K}TDA8cwL(#|f@*8m3b9jF zdsPV%BG1S7caP_J-S_>xp68F`m7H9k>pD5-8t?PIPK=J03JukDDi8=nqo%5;2Lge) zFJ70)K_Jl8a6~BZWjVm$nUA8Kw~d#Rr;n3|I|%eDCwHpbeeNDL`A_e&s|tZ4k!2fA zyNQE|MSX?vH?WUvrqO&T zyXAGtK7FT+R&|)N#~O${@^TYc)?^U2om##7FywO;OWfeM>fw45_Ies|3rpQ4uouM$ ze9CCcv`W}{PByAo3hes9fAB6$IE=!Mr}Qheznb8l~NM!Dm?w3?4hl6QNye_D%VmkS zAEYGi>Y!ZM<}Cwu-barNF!#H9#Q ztidU#NN;_zP% zBd}6(Xnb|Pi&eyrM(DvBey}yf!$MBN{s38X4pNn>(>{4VE&~E_gVYq|4PNE!!Z6qr=(e!PN}j%UW4;9pN_PEG~|?u;lNDp4{LWsT}nmGVc1ljaMClZKy?clR7> zEX>=F5cu8Q%JUBvw05CMG52 zDmsCN$6nM8CTLNkYCB_;>{}huW*g&k`r9&V`j_3+vmGSiMbha)L zH&$~!P6jB|m@&bpHSUWmgXtV-fv=PrlHH6su1P+P2vSgqZkzt~xui2}Ff(vodB>`8+`SRE9)lAUuzH*0=ye7lj)kk8J>%=W_ z!>hl`kSzJQli;&FNo0ihf?3py631bRd{(5DalJ`#bmnEi9Dq31v(_CPzjW#eBjjwdbj&;();a(br zOl>}cr%#`w5#|!8dx;a}+Qs$tNqCfz^>nEHkDS-MD(Z=eiJ>EMM6=ZNoSfKNB%X?J zdfYpdDfSaPOXN}98dR*pfnWgv0n^Fi;{^SDyt;-GtjCDf#k@^Qb@$#+-YcIrVfZmu zXlQM*=eM`a@#YFw&=m57=?TdoVPz$yH{u7yY}SJ{9PPAP)QVS2iQQ@bGFBCC@IWjH70#;TaH2wYk zf_EhvRJ^0d6OQ^+Rs+=(UcNM?2vJw3+T7f9eNtZfh7<9Rby@lsz(Te`BhavHuu#76|SN`Ky?frY*D5@1|_I2pw-Ugtu?nq$4Ns4@*57q1}fxH%3*saF3o{ zzkc1va=^=%*97wc7t!YQ;3jpJ_J{1JJ@3=fR^>ADvO*xr37j?R4khJL8g%^wRMQsi zAq{x-`{KD7vxkXyu*=5Vqv&9ZF?``BuYzUZ+3@BK_b| z@A0$pk?yevx`k}EjxTc(7=U>VGGwJZdaTb>)g%e%^!m#yV6v6l;?Zs!|U`p}LfmRMVB6*-wL`@&&-K zu_YpW0lzZ|G9>2{XG`k7E?+2)Yv%2yxmvorVswm z35bu#JCEU;z4gds@{Hu<@GoB!DmpR~2SUduCVGO^-X|h5)g_)mu@ziZ_#zse@5B67 z0&azO&D(ww5kXYuZ9e;*H#G-qJ$Hq-q_OuaYmGv5@xGJ2ci~mo7wQ;C`20BfNz_C- z&1i+uLsGJ!)#L|`^eMF`Ef2r;eybRtJ=58!mJj#Q)SRSf^w_i5c-^jyo7lq4M5#`g zD93Tu1kzu`#@6TI;o;~6bp8O;45FMN2pqiehM9BVlY4pU)moLwK zTKvm9)A=S9kA#GTDtCA_Z;a6yhA`lLr+R4#s+-FZ$V_}oA=hm}$JI7FUi?{lMNNfn zX=kesrICYuQBxT?#;h%3HtTxM9Z2tFW+r$8*%7#0ywLvQrF|KXh#^xo;6}B?{&y&p z!RK=U2oS6{wMe`45B9Koa#y{OW)|)65+`0DP9O@HANc7)E;V@0sH8rZ~d#-X3?fhm{?Sva1d*3odZG0ZXHudGEuvJx6KvYL= zZaT+u%3cpV-o=)SjZf(68dqdh-VXzBqt$=|k2D<`!eNi=>(AVc&CTP^38z)#3vIq}f^w)R z!22t>0`cJEFfdfWfTc;AgLV_h${!24P(X}*r8$xL4}9|9#nOKZWd0GnOr)P-y(K4y znaTt=(mgK%?2KgVK2FNdhs3doeNTe}i`qM`27_;^G(c$tsc|^mxJ`mA%YN|D9>xR5 z2gF~oVLlvo_r-*!F4|AAS6?t2;5jdW&+3DGM%_=)qnBf&v_-aZl>zKp)%{+TvFTh0M7A&EA#vTel$V?M^nomX1Uwfrf0dGTnAKpG}~4OlHhmjq~TfT2zX%oIuqd|ieQ3e2V% z)tI~iK-ar54>x>kWymi(*oz8HnH?mdL*&L0BsGEcE_EGl>t@?=6@7cNk@pIC< zJ%NaOa_OJgO7@U1eTX0(9UX3P*LCV^N@1{bXXG{C}%h84?9ULmEP;z(!vD0pRCj zB_2W~>Z+=VVI93xMRIb$o`~Sf+`sh=4W&3cJC8PdU`ih;<=ufm{IN4~ls`laTemLfifD#&^B&+A-~jqLjcNcbsU z34gq|m+z0PtaOgev9z#oZ)5b`aIm*m*E%OX+?hjn=7cD;DO*^aJsz=^!fcE{4*F_? zS1c`#&JNCl%CV*5s_6s`$&>7VNr?Q?6teV{Vx+AM(%^!=OZ3vxir>QL=Q&Fg z5jWOXaei!|KVKmMcx=dNdF`F8>`hXtHP5@sFwq*!tNkKpcr(J>e6l$U*od_smndJG zqnfiYoLCVRm=~&W*iV>*u@u6qB3pErE=&B3c{Ptp=cSk0WGIEG$hvQl!u0f#v$@=3*cs#rF#Za$vna79p6f~y%@^SfCEu1{X#VLC**LY!N?m%-BA2q*Xx2F3g4y@kASDt-*)In zk;KL2mHnvX{75z-x3nCvb;yntwc8M3jYjk`U@Bd$@?SHE@03KCT4SYUT zZOjPze2(8jEYct*uNhK|-XgbTF z{Wt5*Eni~x1za%#r=hA*wiqN_Kqc<_n_vRo`r@)O?KetEWddAnSskipPX;xRR7HU3C!Y%`2}M5Nn`Ct zDQ*vg=2z%L?R+GABD#De6|s?DiTGZ8u(q6;PDc11`gz$%|xy0?89+~X}IlT{ib3|Yo zHZ$X;&rsJ1ce3QTOfkW8lOvGqgz<>^x1mt{THa7mvqaU@%7U1bKJxZT7Se%_8~!WA zuZlLApZ)9M2E=N5@bT;Cpl@9z?E<8%YZx|@Dv5-fVNCE(HldR1w{C6e=+*yVuGzHd{C3`{*$uoty5*Nq_w~uuCF@|CiFTbhn$h`K zEfJA*)OZ-C_SsS;bkrU?3+4WGx5u9PTb=b|^D*@sf63hOGyL<14Vq0m$qe*Zk&VG& zh@IG-GN7z&F!9vix+Qta@>Ye!QvmOElcav0q9mQ`37q?5b?r59>llSNu&^us#~LiY z%&yxsHUkHB0!+sm?xy~Ja_G%EyVJ`cZR_y`g25Jx%x1OwY@$FSzrb!&`ACdW_oKRC z;9$5u^{MI}yaDH1|8uN&FqQZH0+Pp|YR{LWDHby?!FV0yIV4qMq0~3w^T=bvFyhiH znO|_zx1mjzwCtBN;7U0z#IF2HY?q~|_7NK)n>6g$#kFg@O5ApKc3^)tHa5hDqz8uM z!kuVp!<0l#)2@Ariy#jTKiWp8fK$`c16eqQ)Bjc1ECn&yaDn{doXk2D{mjJFWm_9Ioh7NSDHI{O)pCGMkrJbxiYafKiR~P zfZk#@r%=!+hM%B6=oTYbDu88Zq~ktt=U98j^w7@+5s?QfYet+%hlYo8jF1)q2huM^ zaOx_KRniL#Okyn{{(mrh|B0ZxUq?rLeYl@4M}NP<`XIGA066e|y|gqMraYLEDeinuzFnO`_o zDExkQfe-gEm>0Q94%!b9@~AU+QaPwBa1`OpI}}kb|1q_2JTn`k9~c0BAT$-y)3G2$~~l0m-2oI)UY`>IiY! z?&h=aDP~Ti{DHehV-r~~@7^fad-rj|y5>mXN8}}EQo*Nddjb33J`ic2zgg^1DLC{j zz@ZS(=(h>P*w`B(@sVQr6s|`5`}trHo8)Gi>_D3JnN}M!^eXHM%=R_kVYE}^RFgEKAfD4-1bh26L9(|$VYRishykg z2xeI3cRWIz{C z-nG%TH!865wqVcqU^UxA*|zc+6Vkb}rnno)zWmapj*jaf9cclszVplw z!hTiT()>9cfxlQWKGrs1g!A?6B*n*-Erym)rNg7@>9voayRbbb=Tngr_;EV!bv30~ zDX8JG3$$LSFZw=3c|}!Ka>^iZ5RVT=non39o)i~Y*-B%`+M6ZU_ zsty0a?$aM_+-61q1n-7(_mcdrI)f*)fv?&~czGK=DbsYsxLc*{1y<)K?^%juM@!)Q zTlUw^1y#!qal^sIW4yO-7Cht4SZc9XaCEcpS58^TTC2kawK+7Wp#349PLR<{UAM?W zD0CVr#$VdFH<{&!g^{Q^$(S~~e`?H+VG_X8R0B}`Eh^%|^xtE*lx^37S4}UOHalu- zCRiO^oSjZ1um1?*q-XB8BPrtg*7TXV=cd2kaSy~}_@HxMVZ>2SPfupxL!XdLl_~Gg z%%ALp@@ZVtGk~)kOSELSdLh$zV$8$$Pz52(W8wp-%{>|MO zhvZM5ZM=_mHQueXShzs%10-eIk&&h49wwcg zMv0x0nY8NN>zRhvlQp{Q+f)3R_d85#D_rSYnPxFB&L;g-HL#hQQxnO$?QL%MU#eaB zN&WxSCJ%parnAia=weSkDeCiK;QLzPdKcKBHi*hHXFe|5;+)=pdEpdIr!>|gb0-%n zYnv%B2=)HTZhO#w-V>10K`0}oat2tIlGxZFkkMvJpNi7A=e^m_L3Q0q%iz$IMjusU zZ65d2D?Ed0OnD0G8|i7{jEq4>qrSWIlwEE6eSLFiG}>nEM=q3bE+>9{ESftu*lXhUd~3Il>_5Y{OB&y7Ez$dGlXuP**IDcnNf}`aHap zfG}=Q9{AzDWfg-8O5qa_D6XiW1SRI?#yxPEQl*nUOymt=JU)lBv4}W}<dZmgm@XtvNp%?Ec%hrQk;QtcC4?+xZn$v4+>&z@##SA6;zlCE`BFBIxI> zGu&=4!f~MQJ86ppw6(Q$eB1Q{o~54I-=a3q=(^o9o7f`?2bXy3g@Gsn|J5oov3$G1 zH1M;McFoUgp{U~H%L_pQQl_V`Z7Z4D0#@{=iG!v&l?isYg@wVOndRQo;qq6#v^oCA z<{^3dwnS@L7N2YPxXV(nTsx21UGUIh(`#&SU+G~5tb~gNSdT24uaEg%)|ynD6udIA zo;hNfgdOg^gJ~9LGjWLg;1nkGez;fYuP;lXV~~Yu=g5i7@0~j&obY*3O*Xp&;j|BT zWZyCvcYr|U&N8fK-qgLq$gde=Qqv87*T|0y(>2+caL)?j!w|UnroPeCdmZPQ_*t7u zpYj&6Ak27#)(br0SvR#%>v3X%9S!D+grmy)+6mkSGm?3M>7HYhwA@3nzVF`Bp}(Ye zJy8*F&+%`ZN0+sFQ&8)f2@_>kt8urMpNb7N5H7(0Xk+g~J4M8j%CsMLqU`R?R@`os zR>;yOL!mjZIExo*sCvNRJEG=H_u0X+7AC*BC}}_{aqjCRmO!2C@;W-%7ep@8rXVaK zl_pKz73&;7Re$2IIEv*z>A}bkJZ>5V)AF#(Q__?xJ?8DVX^hTHX`nZ zB(1dHZtO`?tA@Tl)AzU=6d*wnkxwg4)B?j4mpyI=;0l|r*emE-!+>tvv!mpEkQ|Ou z$M6yeyy5t~gkR*wn1KAito(=7^w^2vx^7;?!I|5L5@v^$M-cBTj=15Sdkb!Nl`oqf zG^os{@~9p+%}jV`2fe>k#MN5CJmflbMECL)>A;+E#7$DWS<{eI!?z8ujaKYV(o*-v zhJbW^bajVPw(@RLVAm=zWg$VqMCDl4B}twFH>)D!-#g%Z9J|b`d%xCuoetD?W%+EG zG@NdBZcN)NbZ>q3A}Qv#xP7xi`rEI(LZMH~BtiR@w|Bh|Bs@jj%|j5z zaM7^&tAhgrB%o9V%k#n99FxSG!tpPuPXeSF*U^)a37Z{r60xQlIL;JtaH#P82fd7xR? z_2d0WK<*?~56ig-3%yI*}in?E=^hGjkkoIo} z&?ahhaX+RYo;H3je89(6Jf?MzT6?eCbhT!FAUzh^Z;JG{iB0C}UozdwZ9vr4~9!EF=Zn z^aY71AEmEgy`1e8E_rRuc$u3&Z`IMUf)?JBx1&Z!G zd!5Lpm|gpM5}?_Vr*AlHDw<8Jx=&t^(H#MM)q8YIAwK@#~ZJGA-tXD8%W}Oyq ze&|zd+>o>);iy*oc{=S&X4k$%Q&HQ#nzVxo%trvQk1Z)HIM~{rXnU>nLxJ(WzCIYx z_bbK^-nj0AO_vn6vVLB)Sk^RJr*GM5?Lf-dD^&%-p9+jAMZFC@3TdGQI?}*1U8oBE z7a@;HgQrJB^+Y_|Kp;xo#a)03{c^l^urQp#{_q+-`S%pPDNP_GuNOa7f(-;;(D?HcZ9$c7j~v;`u`5&t`9;VZz;R<;hrERPK=}6U zKOg7kanq9IO75KO(nqgtE@oR-XDGLClYid(2ROrt31DydN)$Xd^Mtqhua^AF!aiYb zZEfz6hVA~ZZ=bg@@qjwAF0NIIcIu!B5ixdjdbV-V;fj5lAY8JOcy<=#1aPwqdk$YB zD4%_DW?mi6c6eM9o$Dh=nxy?oY6xvX?%PIujo;mvbAy(^#|xnBwTu6V4yAt=XJ-dg+3HcP6lemyl5Y2T)^+EWCuq% zhrOTfi4W#3PYm&yf&I zei;aahfm|2Zg|`*zJT==E}M z0x3v6p7Y!Oa_>Gc!Yw5=^Xbv_C7S3))9vf6uFbfMb<3NdH?uY>jHKh*^(PXJOEEQO zF~DH})A>V$V3m*A`XoV+0-ks>dn#-CG{n<)scea?2Qe}N{cn0QOYLlv-d%^>MGJ#m zMx`DWCrM8G_8S41;Y3t|6P&UA)n^OHzbA^O`Ts~1le5WMgy|`PkMD^0&v4%5k6DJK z8rj+rxvq}oK;DR2$Y%j~Eoh9Uj76=H565L5Q7Y-e|B1?;@avJgzbDeq#!;%_ z>Y`tQb0?j9kno8HE%_k8iK33J2SU%`N4GZygadhnT~tTU#>Z`1f?8Q>Yw{ej!Pxxs z0+c}MJLiRsHV=}aZ~vymN9JR;^TN-_@1YR1qtr#q$Ss32`ed)c2xqeSZDbh(b@DJZwqGHCNDslGQ~XBv4!}PlMs~WExKc#M%Nr(bhhLa# zt9##+*|TeJuhL2Nq&BG6g;Ry%c@D!rla^Y-t*g z-!a8_lA%6%H#iHJ9OxprQot3}MR$wJGMePpPOo4JCN{)i`38o3S81zs6OZ1>8V1}c z(71<2r#0XqS3RvvgDlIvv{7^@bQ&;%Kn428cdaEn zqnI1qdpx+{FiDOb{L&_q3;ye)NNUx&v-@EpaQRy`OcPi&W@qRuliA!zq2?SR+|dI+ z>l<9X8~lSd2%zKW1* zQ(^HzPs0ME=z1*UgIGpCR_?5gmZh%jaX_!CK!v+A1jo@$2R7!G*(^1++n1XjTh4uS zEe~$bW1CD4VlD}=$?eoClIc!eHcJsi-`J@G?lI(!O3qrlUR^ogo|0UkG{<-@Zu6(L zY+@he0ru`Z$hQSJ+AS9iI?9X=-;Um6NC7QZc%1i`DWsja{b{QLpv)<{J;@C8PfNE5 zu+Ul|38!f~O%;WDoZ{R2S1*MnP*62lod3O$+p<}=xQDy_?1S!T_sPj zov*r(7kxXG2INNXi-`L-1!7fV#v?){c*l>h({BGLY~;A?W{TeZN31G1Dknq7Me)8C zTLR0@>%K;sq8N`|4OJiqWyZ> z<=x#8>$m9{8}5<(UoV8Pwo%vS&f&V_JT7(MhJaKNJtYwF@bPrE?v=fEmGK`tGA)Io zKYQI8bBuGQ)*f;zd}XMoZ zDsC|;poT81DC|!dj2yRy55V6E!O>^jf6Yhc=H^^Mkvo$P9GXoDIs_l9rD}q zo(pBxR0>+l(}V2am0(H^kz9x)ip6%7x0SU@*-z6XAF06uCxHK!P-rR|>jSF&&qO3S z5BOxmX@e>7C#c&PMgdoo9S~GhuI(&EE;0T<=jqiX7t;wdrDsmkH9;9KrXR5rF_jhC zB*o`ldC01j%6U+}Dw1;9_jH?{$1dE6U;5XQr2{aoE zn?wIHD6eJ01J@(J0_oqjQJH&rYLZ|2Ut&q%{yt^y&HK$9{|GR=2P=_YNOrd`{ny&` bok$@rJA5AVz+VEm1`JYD(o#eyScUyBIRAYi literal 11226 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 RY|Sn}RZ&x+O3o_ue*nZt0}cQH diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index f5535094c5f11ec595e37824dcb9f93236904d00..4fc9910c45906d3dd4f51308934127978233ca7d 100644 GIT binary patch delta 46406 zcma&N1yEeUvoDOh1PB&1cyI}>2^QSl-8}^75Fo)JxI=;jhv2>tf&_P$#eIRrb@?{` z`|kH%)vH_esHM)Htuu3a+NOWqJ!>b(1((R*=mAs&e{KDbGB#dTo(}FG9o$?I5PWk| zGk?3T2;qDkAJkG_b~1eH&>k>k)7(d=-w=cnmS(S1tL*s3!7jH1{HG|{A*Kvw&fSf3 zX7JM?T2i5N=?QvJ)6UhNkblbgY{RBu?B};pn7Rr%xj(n$HM~1}2slRjv*ukJa8`Y@?!ug9S7kEtB||Bn4r-Kc zs6(=5Owk&1E=E6cw8GA8-#TyQNM?WhS~bqPKW#;baaDTXc_egEK|{`cmcKek$wa** zij{uthE++o*=%vd-ZzS(17+*lH^Nw;vg+|L*~40 zXjwI*Y{ad7akPPk=Vk0-ZHa^83i#mXbP8Ea^=^cRK)7 zRvsMJR?>Q^#!g_WWZCNv=lX@T0Us9R(d|>Re$iwy|9yX^<3g)sYsizfC(N9bH8{uF zarVJV5~++BNt?y#>w5>6>6Z@+e{CuL+K&1S_g{V10?Tf`SKcl=9etA~wONa`L;H$X zTC^sPA)Xz1jq7zafpTxugXq==ky%t0Kn722{GxThKfrH8c(SQ|)x_-S^6sEt!<>S@ zID^=IYO+_#t_Rl4Oz&15pMSdj^6x5}78S*dE#*e-pQsuPHBzgZtfz~lt5Q`}&TP!Y z%22APgyT2##U~%$zYo)z*Fz-Dz&=GrrnpG7!DpZ#wO6ZaBD^=U(yUPNbuW+H1Ymbp zM_`|P(+=NB!JfYy&U-B}MOnZMK}opYAbqaM;~VZJWi$!HkH@hN91OuUCi`8EaZ#OR zWm?FgZ~IbzAQT%A)x3yKek1YC4`Vc{$dcHVwk80_M94#@aw30s7EE^BUlhB51ZS9%VP7-b{rT3*K4_R}}Y1{xN1L`jF@yu4i z`|V9{p))|y_c~h2@r$)mvkH|sJF090l&lZ(OgMi&w>q=LdA{dlS(^CaPN5)m&8>@o zYFbvUj9H{oHlwV|a1GAJKAfTND{AoD6)9@E)(f&$LS@aBpDP=EDmcw1fPSvbZwkY5 z`%oYn5>i|L^TT(2$vX2t>cH~bS{lM}JL0VyKB`59BboyCl>1;~q*kd`0~(XeLkaHL z-|tS>h{V97ZFXM$e?!vC4N=FaSP`F;7)zv8QC`YF#ac0hK_%mqAg2$tv;LrF-*e@h z0U0FRL8B_?{SPNn^)-s9Wa|prwJdfKD3agxjqbzo{w69gc{I3_-vf5~@(n<&x6A{x z{njlGQBJ^D0%mt`EK!SFf7ECYpXxe@T#h)K+uy~?l1x&DN%LffMOm1cx;rd^W!b$_ zJrO;YHPcwq$&QJX60vYZ-ks4p#6_{Vj)ph+Ep1tfV*^dT)+BW&^y3>5T2|rLe!KeC z=^^BoIJ!i*T2mLV9$z}%91IVv4vhPxKO^rm8O$y^uz>0rP<5rrPog`f{`QL* zly~fOks6xFFe6FjS2z}Fj&Tj zwIHUjT|MI3-o@hh$w)^#ICFK;@A@GKoC)#Nu4i4`V&f!n-HBUrx|9R4ij!lmX1f1| z0hQme^ixj?)R2Hi=iAnpVf{-5TC++w;xi{U1wY4>lOwJ40_)#amSMsvI#V0e-Fynb zod_Ms?cne-{C?!p|@$3VFt%5-Wj2ro>+?6WRl`p8>9^;zE(F8 z7k!V|sS?w~H9r%DYQKbk>6BFCuf0X9<=+m1`2FefSC;{DvGY47(s1`q9zT2OorX|` zfQCtzc(rUt_UAF|JF5d{lM^RbCui;Vsh`Nh`Yd@el$r1-g=k~t=v`f14KvAU+1RiV zk_U?_eA}bJADMoDmBeHQ$WdYJV4ads8Lv8RfqbGI(Xa4zD@$6q?hHT?c~ zm709($%DFm1VHI`TM&W7f^~O!tkYpOciYEY;>*-cOO~=4D`jVHYHCGH)lNy@f_QU$ zHDL3Yu+=KC&0`x{D4 zSb9%n;yam<47IVem%1HU{Yg%bfS;E)>dh+U$aAMj&$%SSx6EV(EeENHq`sbe`aoN3c`y0wVKZY&cj^m z-Qp8Z@3-;j4=D=5 zFUR+tWd0oPn_+Nw@1!j8Jpb4L0gA-D=ExsR55D;G#Gj$KS#A;OKMtsL+#R^EJBVME z{w|KvfYLXzncKXbsXc@M#%sQQ0_2hqJFf$bVAGp0*YpBsHA^Ti(t0wf=iTc=W0PJ{ z{n|8lpC?eRM;*xg&H8lskFN|K?~BO3zDl`B^Cmha4`BuW{K@p^1`KeGiJpo{!%P$k zB*V&81(WhfEMa|n7OswT-JPg7XdPlJETv!DmK+TYM~a;FacOse3VLv-dsK`0lKYIZ zeyYpyfE#0AGgH(K3aJ!eb4@jryH=-PH`Sg_PY%4H+?1Fz8C}c zF0EF=AB%MMJk4j9PJYHbUKlpSD$c8dy{; zaQ)7fiBc?50N)%e(Qeldf5+Py?PRdXs=AiSr%wVrJUk;g;@QJ{qr`Su;qnnwGiw)r zzF46LF53WsTN5rM%Zy5bb_P+scT@s(SGC z&aUjd2^(F{pU9{vMAc_y{nZWWO*xGmzi_v;=cH{D;gx_><3}sGg(oF$vaNit-$DrF z&p46!zOFGWV`7`XZohY++Z|qu-aokEqd{2qdv$;clyp-pBIftTIdtGs7BW#1R@Rq; z)MBNPf~<;zv3z`~*Hssl^_#Howq1~&HaLTE?@+&3+u0@O=8m4-`f}zA>ZNCd#Z6kE z%gSDBu+}A<|F%*iA{4|5$%AKK_TSrPuI++Ll!qaWypkG_2ZI$ zdSf9}z;WMq_IGd*Gm?qw60kNz>DsJ{G>o(qyieq`C#>!`U=n%`L|_U*Sm*+P8i2~c zu8UckLrFe7BGF78!`(2wFhA%MGQd|NhwMIyi;cKLdVroFUiI{fnkwwqe9h$8rrGmZ zCdG3B1?2-Q{|z*TFF{>Pd(tKFIfEb;PqZ}P@!y(ZiM-UUcEs>mlE3-BQ3EyL{EBm{ zxdGKfX#U=^uJ$$0Ke%zBnP3_wyBX*3TCIvO9_cu6S?Nq6cz9^%0TO_LfdQ4NpnyQr zJfW`A$iUQeJ3EJ&gj==y&GnBTKeINVPy|XPHS~#MhNlB*L8q?6YtlKM*CX}P*+0%Sd|;J$HBZM& z9GywOSiz5>J*vaw5V$MBG7`6W<9A{E{ge)N`6F9axrM7%TKe{e^daNLt^)iH0e;)? zX*u|>IbcB*!n9wJ7ig4D#SL8{@u;JMje2t-4{>c@cgX;7{XIBmBs+$RigM$8eEg@! zM>N6RuK(e8V$ckeME4cGBsc9cSSRq;>0Zrs`%f1WJ0gJgrfaMT_;vhT67X2y!X`gwESrLnF4-o)zd^Nw*Y+ zo(k}K!8PAX2jt=5(mbTN3^H3^yQ}|D!R_7R&9qZ(Us`rj8~BdESz3i3E*o-c8a22* zBk`u5JR@ZVaUZg!JR)Me+QEFn!@zvA!g-o-3` z>4-`+?&9!}3LW`mMBYs5VN6+RG%zO{gM*2Q*)uv?rG)DyQ;OqGH>`GaMlrYde)aqc>4I4Q)@yTk9Lkzh@91|IruNW~ zd|C8}>@p>~7wWM@`mW|&ZL^i5r|t1(qAndl^_AJ_xt1N&PBm_BC?B$g%)nsk*nGZh z9*NHkJVS`VqQDG|-F&y}jU+i3l>eOh(#&QoN7!=urwUrg)zN%RS{e!HZkGa%IKDS3 zC@9oMHT#^JdcdXX(~8#?8~W+yV`1yhw9Adpy)RdZRo94l{!C?SYwJr#pnWFBML(v2xwN2>Q}m_@Ux=PQ ztbR-+W@19!^!|||&BTLX(4aBPc=q_Fc)V*P>?*r8*mT*3H@V*Nb%kzr@YSF3T7CA; zrLWgw565UO5nZqi^cI$j4-sYsj_m=zcjxT^^&9jfuAHS)zp2}su~{@rAy&}ZF^p4( z=p>UG=vsa{eH#m|IL(i(33yb=79baJUZ4$z-P!fWlK+XI3I5>W!GrL8J0R)1|0BY= zZe!jwK;`z~!N;gzt{A@sR80`m`h}-If;;}1^kmwUd0Ws4!|+xZl6&ADd#(5yeq z;J_{xMRY(xFvilf;K~Q18Rr)%;|ilfHNY(*q(kh=@5zR{S8wO&@9o@Et`cYGRxA+L zwLK+DNe#Zg06&?OOW$;Tj>NY+xiPaDh^Ojt7Py%2g3Y?$?W9v^-yt0@)<^8_+D=VR z4-O3xDy4H0!~gk>10ap7)IQ#C-jN1+RAF=(=L2Y(@|5NJb~FN+Pz6OCRaMoVfq@9P zL|sfZGzeyAXM+eQ{{=+w%>`J^i?&wF$;kqv|uV%Ahw?`F;q?2&|nQP=q&^Njm|2D%;wjU;JsY~Y6g zsI8Wko7rwr!>RRu)M(Ao&xa8$rq8mpy1Hpl_kk7sFZ}sBFyKVG;Qo>%rtcp#c3%(S zeiaAD4h})x^W)hnpWYGwqx^S~Z=UZ1-)e6~!STotvF%I@Lc?=x<#^0Yz#h#Av{U+t zicr$!2oULzPSrY_xkYeeGIgB4l`2`Tc~YldzYQ5Z&~t%6h@Pzjx_Ove8RSjCm_O>;T*RJxPSaLr9OMhmLcg$6)gwqk6 zFYUg-4Bozd8wnR4596r>Jkf4OF-xAC`aQtV@|QmQ*P$Ur$eiAt zYPLwR8hr*twj$D{39^GP!Ovhfn`EM1+*m7r3=bZ0hf)C&$BVq6Phr>kPsYc6=5c0P z+8f_)+q;x@5(9J{hW|O8>KAWcK!1OFnDr*xznv5Ed=^dKGBQh>C4l~hfxE8R4S|Ng zXWhv7Wc>*=ZY|eKP6n->#lBl{g1sY|d;#8%kOq|8%NvHtTQkYnG5)u2@66ZS1$;3a zhkmTLkasO0h_Tz;hKKr%f$u!;QgJ$=Y^y`LbIgm)T%x6$je9keIv_Zc@HoV8zKT|N zDPDRPdAZfXV!uNyagaSW+hg4*05gt(ys~AkEx6uLnW;IW93LIAVPRuqW{9TS)84kQ zjd9v4O6IA0OLNTfe~wIJdjFUW#l9*y3GI73v%9fN?(E@lJCw5X_qSGFohiKFU`xP#wm1YUO;3%IV7 zK44LEQaY)-wRPPpd;`u?|Dm7Gg9d!xy|G+6Ua=gr+#mr9qmv@kGmMWVP5r&l`uuLo z+V#!N(Drsw$8@>O4sN*os^n#RsLuIB!i-7;eX8$MFvi?@@FwK;hlr(h&Y{B0W zMqvWOhXbzt@%yWzFEKILwY9YfrG%=Aib-Mgj7ih~@R{|u+TbUDL~hIQbLOql(NTo( zhzR6gj`fzy1*n$B=C{-D=b(IfukVDlVV!@Z)@)a!hOB zt9&^#(%jl=ke2_C9ut(u?a98f^jx1Gyaaqnr1j|~YYxV*8QBvrlgi6kv9PcZFtD%+ z%F7i2qn~Ntivt<$=r-h&oK^cSJoQfaEVa-s+kb8T6khUY2Yj@;EN=o{%;kgh8G@f9 zl<<%qAD?P#yF}b>--U22l7E0h!A^Oq9ZCX%NecrlEu!M$;#`Sw4bAKETb~H86gD}S z22ASPe$QF1Lcv;%N(-Xtx>%8mpU08g%x6NNmUVq_O}b@!2lnLR(#5;ZoWQ9{B`Jm& z;v;!);kr4>doqjUH9#?2k#61+}b@F>9Yf& z<>5A(y-5;$fp$smSP{Q8xlcdeZ+wH4u)|qlO}V+eB*dnGlM>DxfPVnez~8SAdA{tU z+c-QOx0%P4ygiYZjOEW*?)M^wa8Xf+yx#w=r`*8FcDIQ=jvW%NQFzPgEy<^=V)LmN zr8>(enJhBw7o1{II#6RI*HTwL4iIgBeg0=(TfY9cR8SFL(frolp<;deXN_z@E6T%> zavh9LMrV4HuEeE3{Y-oX+uR8K-5LljsBAY^vJp^`$AVI-ppukdMQSMX@5s$1kWQG~ zB{4o%4G;Cd_wyZyz11#IW3>0~)>(_6szsPPCmtiAD?z71`Do;dIk}$*avH;`SQom2rel zg>IC>;NV+%ieKBI$;m{V92{@uu-IGI_jct#dK_!S)ibC9TRN`2i_W`y*jzIlMDZiR zD*8(EmbEG&Dk`J;>_~fUTfn+#fpq(B9Zpd=W01vC8Uv3t;S7xy!%EIt(+IO%;xDa= zaNGy;J@yB?ZZj~C-UHHQGs^1G^tZ|#3Ssg6@0~joL`2d{iSz>KT^mFx8Ph<;BZ=aN z4=>Prnj%N<9t>J7xUw&9mML-2MPNg?0e-*F@gw?tF0YaC;%elNVL&f>P?K44Z%yJ) zBHKU{6OZW7EN&>uwzk)-VqLFHOHK3G~@RNn*ahKR@f} z-|n~!lx+{-ouj&Y@~&@Nn@2ulbl`Qd)Yxzw5ETqz`*6{Sh0~d&9y())VKm|*cd5QM z9Sirp0&u))P%4L-0sAgGFt^o={zhfsqR!negoP@*&GUHyHZ-4geC!N?o?)swKR-!) zRdct5>kvW@65hr$Of??Td?sZ;Un6gfv+wibSm7~fSYmS1EmJgok${Mj1U$J6;9B4% z0JP3AWbk0?A%AU|#`GvEBAKYTu@U37y_l|&SHtH+`bHp}+P#2PdmZhifPiK6uXTfy zDTvecOa6yO5;rAT5e`(zkh0i;Q?=bV^yJ^#XtM3jZiEVe$MwLAwinXJNH~))1WKBM z6{$q`%TL?~&BH!1tZVH)67#3?hp9a@ub^`+{|p*8_eIc)?)}4_qN1pm0z1?r%NimA zZt@2UX~5J-JP2;p0@IGy7D8$VM!}b5Ziw)N&HM9eO4on`N7j&kusHQ|wc=00 z&-+fozXYL(uGs-ie>TT+UXAwh2}uZDKQ#})N<6oxlrUHCh+)N?GdqT7muKCK^5#(< zJ?cUzHIKGgCdOw}hp}p96y#m4IOi7+M0Hw#A?pErNo~J8gPzs_ z9_#x&ub8+5Tb>)$Y{Fq+-SQsL166)qWKz9f*Bn$p$oMI zByow=@Kz2!`2QunR}T%g?={+TtoMq9##1cMEL08(diqcNjz;!-;uNi5U|`638{oVB z8(X*uT#$<3HVXdRn_g|}1q&9~J1yD#>L8{*_qXTDU++by90(LYW46P397#%EIvpP8}>zQ3vX@^zgA9ud1o zzkE5`k`_D6X{FTy06h-j)*#E|Crj3?+J_{+-C)_K(U97!Z}SW(1EW$g2-s%}L4#Sp z9)^dEl6u=jlVk?Z86wi^`c7~+Z`*uiZ7neQiH8o%Q8VSE&OL3P1D;Ml9mc-_h)=O~ zKoJR~+~-jY8foc&_Gw8EyNr2Rh8{ub3{kyz3YLS0K@t_YQD$VXsI$}-wNABWaO7Fn zi|1C$OUZfTaVrC_iqvF}9Y&(A^lo41_e?p zhvH9)b(9^FQaAAt|Ayd)I5gS6t|FAUbE}CAnpm&j;PkAR>%A#5&SU_XP(z!sXWmMC z^WC;|e{lO-s&TUSctbigJnSt>ZD7~oVe#AAmU>`WGBPV#vu7&>m^A5R;}{uPY6{rBc{B9Ud=J-{WnBrCZ=esfp`zE1^TZ`$CU4x zS5&Bm1+R}+<%8e7?r)QW*MeR`DkkuPe-J&9OZ<*KW0Se}APBF#vq8Bmmq;9we`h3foQq*2CEv z_EB5*(NSkya@C>IAI{_?Vb86RW@K`IbY4)Uxg;eNKje!c{EdG4Ns+f)>a+* zL05sw@i6N0d1wx5>UdqD+D^W{W@j5}L>s4KTPm`4lsGYWp1WT2m%sQ06Dn&`mBUwY zo9Mt!la!r+p%maDz2?>UNqe%4l$2CgJvaYW@sF?PD@4{LY3f#vGijvO)Qp_$WFc^N zk9s#A2SYSW>bkER*aym>LQ*CQ& zL+th_l9PLr+m{l3BMY!`G5@(qVz3B$08{QrtYG%!t^;av#ko$U;st*mn%@-YouX%f z6WUbTuhLC(zZMO_*{%0Lw|a44Q|3Rc*Ecw*Ko%!QNJz+?sjMs#K&O&dO*R%YhZj6> z%?7^Z@Y-`6*TN5UaBz6b&u>wye}Ac@@GrMcPP3ltvqoT$K333Lji=Z>xcDW;@qBP( zq``p{ASE4;^N~eDkv{(E!fsGk1SWs~VVA9kk^6_s3*F!NV!;6K4^{V-$_D61&HKtF zYiP{B@6-dcjqeVr%?>oD&rT9HXuS!~ee~GB^*lREjE@^T5mHJ(&i@y;i3FD%S-Udv z@g>J_fimJK1d$rVsfj9mT2wJzIK=UJLYm(V`se$9Vj5q`A9)&YSiR8!>FDS@`fc2; z@V|N z-b2HN7}m`7+QtcsX8TR?85@a-%Fx`)Xo}oHp`*74CV@NK?S!%0F8!{t!I*J@m@y>Ni{0{-f+h)I!8d!_SS@=;FQv)d zpZOx|YKL)eB*W}Ko}X$h0tP$PlZt8BO_{C%f8=onmPZ>ouw6$ZD@LRvv96h$i$bS}4#LsioO7^p(7$C-AC`I`Y%eX1 zoM9&PK!a)FkUp<`a-9FG!IKqOlj%i`9=z7q&ySvR+;XM4K`vkC0aR5nzHM-8To>Fc zA(KmD;Qhoh4f!JK66uNT`-_0n%Qd@6@9yqnp%J2}A!x1?{eAKv101W{89!b-ue2n> zwP4}IBYMkK5QQqhprKT+iPz{~M81(%bK2mbC-ABD_dTfQ_Wpj;=h^UjMJ!+8bF^_q z_VUn(k)JcgZq; zmsqWGy}ZQ98!iN1dQxqM>4J&uhIDbk@MepBx6 zng`0ygw3-^4WZ`iyYk{a4`8)Cs<~_R^(lt}Pj5#V&Zi+);>sZ{$WlCIb6h{2^+7A? z$2aD0%%ZH_6D4e;Rmj_(co8gI$^Yt1rNXHP{#-+rzreStWG0o(s%3g>h_E`NR)Fn}R7^~4q23OkDLD$h2Gf{{wxic@(rlgsE0*^Tc+kGrFCf&a!6pj# zj)d{v5g-0-R4C9OH~X2IG3y{@+Zps-2~p`zks&PXwVa-zIvPS>U*F>8lPg?*T7VXz zDMTeNzJj|MV(#xzn#54~_V^`sv!&{%!JiMTYu7@aI8tg>%U)F4Ybl|#xiB*oL%PHT zDrQoyi0tvk#$@5%?EL%@-G3(NHm3k+CnF@D zsD8-MkqfQ)?NK4RTb_SG$mj$PQ&Dx1TphUIk>iM75`}Q?A;2rU4|MSIbPio9-B^cE zV%kqRm2M7Grmrr^o2egE`Qhd1B&}FMct^}1#@ixa_znJl*Qcdwo@3wrr!cMXocRA# z*9QKl!Zz*yDvE~mqz^ayv5`EkiD&@-x)jO`(*YrlB ze^C-fj(&A8&?ki_(jy4HpMKNT331?B$(-J79C&^lmxEol$0)32x?WJev3^qU-y!`R zFb|C2NrgqFEDtO{JxShPU-b+C(=;K6ZCEa#H9F8m6FBDVJ8jmets)y6;v37sGL;e} z)!1Mi{bAkIn(Lz1)ty+H^X3+j!Vf8FXW^0V(BU}~fz3F|`d`xR9nxl+NdyYo%Iw0` zJ)Fx%H;Xy~beA3HTJ4~ka$lW|{`j2l92GTsu0&N|t z2Wl7=xz`PTUH-@^X>(JtmUIdJxKrO%xeC&o#Q||PU4ZVBQj9hs_iL1a5B@yBH0Rx zC(DZwCoK+04{;^l&ee6^Iy0FOL)*`SkQu zT3R|2(1;)l3N9qtI3s7UaN}xm7eGN}o4>VbR@o5+9G(PY1FG%(xTH<|GqXEz+|% z-Uf_o%H*7rpo2lCmwG)AJ}|AMq)HFZhQ-_L(MJm?$C3zcO01q)`^;{{89zg0~Il9$O!iK4C(mHQWK<~7vfwiFn&W$2(;?P zQF8(7wBwPVeQxyb7O}K@{IW#EW$BJKiKLH^olYRISQ8hBI+Mxn>nEyVRA}989oflrG@#-2NtDxf@%$r+p7g%A2% zOT&Uw;K$m_?aC*RG)M5?9IO;lMB zF>$JZjeRGy>hXPxTr4Urb4AX+zR)V4g$n2oy)!B0@TtCkQ&`|^r5@ynO8nF{O9S9t zgR|9c`nordoi6z@TDc_ipB2RgR;3SwM{H~!k0fQgzWiPj3D-Go8G&B=DJokW6!Q$8 zZw|X;y71rjIV@^=WjrW4;ys<{c|3L$TZo+*E25jPge#SmUp^(C72M>J=1bo2-k^h} zrKAvcc6MG8lWquDWVCGNi6Q_-gXNn~kFDv0+&Z=UZun8K55A*W{Fc8%QAhG6^WinK z=;-JVYHH{&oaQPKof(}NP2azN?|U&SC<`zIy7j&15#AG#OIPk5SdPeAdKDd`WFWpv z57oMq52>=&fvS$R;xTJc-^3fUs4{KfA;q72^?B*>8$2TO6QL~)Hah`_%F!R4oKi-b z*}1UBO=e~8{M2V-aGOm_E^%>tr1Rcbs?V}S46seESA=eB1mh7NAWcrQO zn{m>k%3+Jk;aq zI*Wky&0}YJGo7ZnOgFpX2zmKQXMy_dpA=uH33Yd{*N-*_@2UY?WV} zx>5s0`wZ(Kdk4S&iEUgA#?XGw_lA|z5*}~K$jH5TMX30-Ec)Tu6JLvd^Pd14Zp(dV z_bwy&o#rALmD22|R^f39yj`GoU;vIIdLHjCc*t-B7He783JU0&T$bl*Zf|tiUnWo6 zsvG%a)YSo4=NB>DuS_uT@OlSR1~NK{pg6DkIvZ>TlD(?`Ong&PfmkRi4t=*8E0{cR z_|U3CEdwcMit$EhqB}ur9B*b8t>p*4z?OU>r>f$`kkPxjH&J&Mq&lAKM3BzHTlFifYR*J*N_RlV-bqcE5)h zSya{KbJ@{;XY+Is+a)y^JWJR>E%vm61%Y}cbh&FT8rt>GP2W61#(jO|_hFgGRl~Y< z>$^>a4Qn5n&74%{Tp3sVmygZ@-=A((oCD&4GQtJhdpl0&I(>%P#=V^DnFIMn9maRn zb{XXhbvD=pi3A-_uz;7rEtqf*IS6iKMP}6~~X3HNLNx{^a1_lUk1q3z@9T`|yLh93uvc=9;8l&6FBpM`X$hx(? zkOWVEWH_o$Y*L1mt%PF6FquFa4No6J?*lu;N*8Q@7Byu?%FvrqOTQ&>%5=MXhz@@P zxt9$X%nL)06!pQ{PXER&hN!rd2F#|g&~!8gcCEIiMmp>r61I1Xr4Vcr9=H`X%*FaZ z35-8i5Xzq)%;Bto`BSio%E>8q-hI<+F8Op59ilLdvlC!SC|QzvQ4ubHSwUXQx^lgV z8nlDW64ViqiX#-QB|Vkci;t`WQz zhD8&zMJ6OLv$A5jxw$zyI*R-i6c;ziMqjWVglBsmkIbGAy&gxiKfR#bjj5>-gf|*z zD95FwzA0HsO-myp+gEdN5Qd8zp4))Sy|ooJt5j)l2g25M;s?-hPrS?FI0^PWDKFY5 z-AR|CGSIEED*c1RB3fc})YoXZ@)TK62R?^5=Z@joGx;Q7A2i~k1hjHP$Ap{WRLZ3E zOKPTR@B(Y`YJR=w5EsM9;*RfsBvb+MUtP^)WOJt+N^agfMjAKm$n&%nM1B9U<$+E9 zrBvkoxAc0ZjX%J^_g1+(p(|=!DsG2Ni)#k;`i-@elq(7RmZ4M6FgF+}QVQ=!xG{f9 zKRtQai}Bm2emS3&c`S}1MFfTW;!+1hDVM_N+Z?;O>j0CVYWZUU_$Hs1Wo#x)>_2dq zMNDJjUG5#v`Q6>2BCK=-VG2rKWmYdsUhm@L{EPA6@h`EXw+Slqb@znA&?Q`$hI80b zPVGbib@$>3*z4Cu&q&>DHP2z)Qb1Prr~of)ewu6X64S`8XKZZ9u2>KARSF31S9qbk zWM#xEGfjA)A?asC{btDL)Z~`N8pfSe_am2p^*f1vE`>Erz7n3hy5U=g3tc+-1cp<0 zGy))z;IYAvE!mEFDN--hYt5oq^bm3b)-v7d2la8WveNPLCY6@5czSt3uda&A%l|0= z{3a?ox{kn2MFkf@M@Lb9Z>iC#v9g8hZMwnP9sRBIIlQuqrl&_A7pDTx4rm$}gw@pO zIiXcf%oIJcyEr@dm~*?|>ODAc)`tMkgLEI$5u1m6K1egd)gYH2H4ITE0-Fx;Ua{p# zL{Z5vE$gq>INGuA{Umiu97sVw+06x94^HcGR7~?B_Rpk#71p%1UlRfxBY~UUUi++SM)YLvbc6i z39nb|?9+1D@nWd});rq^Cf#9i<+0DvP*P*t<`L5MBhlSx_+Hs?tjpM2j#9^-gJrmzSQ`BXrrU;F4LB zyN#`WJ8jD2Gnb=^x}t7UZ1abv@-9{Zd-n*0S00X-HtIRKjh&N-geKc_oy5gL?jBHU zh<#^$u5$|EVHqaSS6X;=HI@8OPvN|~EDg^mmH=d(b?3q>D@&>ol~q;EF@aR0tEN$* z;=j)4n*2;~JEo3S%u-`W%s33ODli{ZjC{ZgzcTO$$I2^;ntmEKdjUFYzFWBPe&(S{ z1DCJ|F>!Ix4?^PNxqttDSRH%PxtpFuE%5BhT*r=E5}Q|hYOHHu-8i3m)p2Tna7}5E znhcm?x7p58(G86^f(bcG9S^;Bmy^Bg21Aft&5sg_KRrzm!y5DuMskafBj=D{=A(89 zpAu`L{rTB-dJ#6pn8^q>1Ld%MX%~W?0}&^FymVo-;NQ~0gnG&)NUZOFt~`+5qZOb@z+9crR~4f{pXhooJ#< zW4!Z6kZy-f3@?Iu!jzYqeLit|V8tckP0?lLRB=d^M!i~yyBR&Ij>?jiebM)!@1yfZ zZ4ia0n^T#5{CtS@ukX>m-+Py-b$XE**RD(Hs9B&*^28o) zy%kedi1-3>E`ZcylAgT3M|bK!*!ydqk}SeaQp03 z%557Pz9NPEzk?hhD@YN&x_zRqAH@g=HV`TS*C>RdNJhJt{|5Z}^(`rhkd7Xp|3c5W zVswW@rm3lU++j!<6|9Ua%7E~RIR3yB{nVj-tspJCu&{^69|dVb+w3O>`7a-mM>rAD z9)(+t4m#be0XI*UKA2$tS?8+l6Ke#eqnV?8*R=C=9J2Dj8_4oNZxoRZrYHl^Nlf66 z^m(kk+5he(AU`WVP5@l)+erG1mu+bOE6)Ls^qe=j%s?Igl?pl0e$6vEZ2QpcS_ScJ zpSfOb6eZqNgA@2lMu=2CWk0Zz> zNEPEiLSk=+8!67t&dkRudl932PI0|tG-E~E&s6|r44%5K7R(SbGdtH#$EI(DX*e(E z;Qs33{2T)ZhjQX-zasEQ#D8f0;#F)OrSw8#lD>3ISW(9tHNU0V{90?%KuMRl#;bUp z>(5Upu+x6exIxUOi=n5d7abD=2P8k6n$o7GH02VgRjjP&&DjieI^bQ1@OIGk?d^|% zqLL8Lq|%uR!5gn#0<4#a2i;ZKbAM!igj8+6)d<$=-4MPY!! zMS%!$S$VE+T}+t52#_Td<36CxA(Uf>AK`yi^fB&OLbN{9kbr@gTl8&;XcGa zoOCPoUys=G!Gi&9ZEbiT{lC6q7M94bU(p<$oG|h5ng-)dOiaouDhkWXqtDL)&&|!v zdk_*H6Pyc_0y%{WZuslCy~q)JBZU|rmKySUW8N?KPOwT`2^Xqu+?EH%D5W^mBiJEl znS(o?Z(7>kOe0jgelx3VxLdABsJp+?>E-n8pmCazv)i#FZp4A`hJ@ArRL&|@5R&YY zN_JN;=#vU>rr3oni$4DK$m0PD2TmP;{4RL2A5~u0|n2A=%>1k{mw`D%T+P8ZKPv@Se1E3m`@vs^pYGvzQv*VU9GDDkh#8Q z7N@ZE@A72Rt$e}3!2v&HwY9x11J@b2y4>E~X_)?hti5$m98uFZiiRXWa0qU}g9Z(r z;2IKwyAzz?Hn_Vx1Pu_J;ILSh;O?@xyX$f%&-1=@>sH0I<_~Z^^sFRMs$HKD2cXNaB=f zGM-&tsvVVBT3J=7&EI&iOjM&&G|1l)kIId5RGIGNt>J$7=r1drxh&p=9Morx*fBKM zXVwf!ZLlM%Wy@YLgeOOldU%zphis>inGReX<}u*vIZTk9E<}X5zK0Z_0-oYx#UsZh zzAx1)0YbwW9pg`wEgl|ghugis3V|xi>&*$}Flh7p$@=L-B9Rj+grd@K?H)%@J*L-- zy-#}HP13madg}X!?WU{v87^fD!<_sd>8^URLn>k)~oy-1@ z9hMVCn15sRg*VWJ|N261F7Slf7KzEpXG=d{q1Z~?zR4IhbCaz|H#(=HhXXWM2p1*C3jqy?zt0PMng+8pWTkg@r z!No-A0E4vUTAP<6zE2zu!bXAlY@M(jR0g^!IVYoKd2Bmzl^pcNqNLQwT(Ij3i5c{Me-2-GP5vXZ%Z zm|D_eVz9vTz0sFnlmlm|*v8O0^4WlZB$1~0_;@zdC2g*EGbbu#Cyt2vD>&T(5{ONV zp9^?spV8qc$lbBR>R-N>J)nR09n=1Y?wY>+v8pt3Dst9DZQiqq(FWvY-uoTqrF$Pi7SXbwraR%s`T#zBd&$!E1tCGo>|a+Z zeic)Z-6>Be6$kaRhn+7cuaO`vM0y_0HtoH!(Kh?q)+v%v`SaXy7j;{mC%2*T?6+zz|P2fL$*4W4o;tt*R z%Nv{?KRx3@CR}@mL%Of5vxt<pSd}rD|c@)a(z0h zAy|**1Ou1H;%jhm05l(6-*`5dcJFyhV*Yy2*uS27yrBKs4i($qZ8`D95dn$7n;car zf_ATaLPGWuxCspZ9SGW55H|)!1y%~Up2^6_PzeZV&WzXQS0z)y@Ew*i0e6L9CDWaS zyUdn_JKg)X$LMIgDCOPawT@_So$vcJHp{RSkq_cQG`7dG`X}x)jkYb%&sfD) z0~BolXNPa!wUg9R$v~NGm5T5{$I#y~}jeWoDyOrYxK7@Y8 z9c@CTxHI7wZSAXH zi)&va0;gZtXah!SEUk{mM!<;PS&)xjc#XGOWzxcS!lyAkkd0AvtH4pzSp$LZr)voZK^>&mF}aho;~Us9!TyPwZpSk6{L1!&DX>H+3>>o{r5)pABsT zT-Z)@`blLYlu(9+=<|Q`Abq;)C%%OLXOK$28ZDy{G~h=?h_`tqXiqECyYbVzez=Lw zUSI1w59fE9*uG_U(wIm?o}xFBS+>J}WV1@Rz3SYU9IVVkZrbc`T2qKS>D#cP0EmaB z8>$&W%(W)-(o7fxxFiPif5x~yMdKh^__KXFNN-80Fvq<6n3!0M%Zv5~1qo4rCX6f(H%QK!pj>TV z<+hM8;_`!b-8B1G2&;af5y8Gnx%BBzEi2(zX68vZs!$YUMieA!>X|KI+1jNR1PyLq z_nPo#Aj|x9Qo~Ehc;-Pce2W>HMAG-D}1mH zpVg5oUe3hl8oYYN69Tzs(29|dJZo`=dV38<@XVx#hbVyZ{D#sMg6lix511WI4cFr)qXFtB@R0GaU zkeTFhKY$ps7ty$7nUaPI7d@HEJHOo$abjt}fRE$ybY&Nfq*aJL!+V=UI+xbrfg!?5 zQgd<6IUY4MBB1^wR_L$?L)YMxxE)}39>qZ%(>8|PbU&}dsZ+VnNp6crVX?8W;1!dy z4BfZqkGArh0zyM#+)H4uO11YIkC3l^>CprS?S9BJHg?(`&h%q@i}58jyW2FRPa#aY zc#7sZ5_!zx>kE;Zf`T`kqh6OD-lIHEuBSmp3V|`G3Hc=z<>xuRE~?yI?B5k)96Lu- zl;JqKmDNreh$szqpQAlY-z~N&c(@OvCmSidup=94Dg);+`3ndk`T8zzq5-!hEgWP1 zqm4g}2}F4Dr!1CDBL07WZE9>Shj0$dEM?q^TRn|bHp&PIQY6!S5)!! z&OEsSuovr9W^35+FMiG=fv0=E%Gp3#hu9!|@qH{FyEn~T!3-LB>f6DP(Xje^>ie`Z z5WU*9FYtZOWRRX#uQDcD+V%od&6sNE(t{IRV%2GttE#J`d$j3I?qB9D91 zV?31M$UH{AO6up;=$sw+PQA2z;aORFT^EK5X+nq+9K;um^O=bYnGY+)Gt_TliVyPv zYyz9D`+$(pNRF}D@o<;h@8P00Ea3c6o=19kk{*NJaS$=ACc!=`L8K6Ub?yH9eP(2K zZ0F7kVuab!(l8EUP*RMcI~u%4fTh|mc7BdWmW*6$FULJ~Uc?=x0p_^)q~D(VNG3UB zkL^`uY)E3*U&cmj54k2Nj^$+0R_k-)gy0CEoYXaGhgo`o^#k!+R7=%QYjx@7Ee2W> z9A-qsAJa(_V-Gt2iAyF9`W?1C+FLtkr)zns)JQnvjVf{MW&hLC+hHK%&E@e`hRZ7s z{U!{jjN?zzqSE(rOi#7~C0{6hXeJEXlx zVpx`sb-jjo{oi6PP8&>Q1IoLYv;Vx{&%!2QskA|6sQWGO!-p=j#edGVRi=b%CR=zk zLy#1}n+5<>QJFM8#&2Nq{xnOTNeYZPzZdvjN z?_3?W6vhlYXXoF!fw%DEHS|A2Wj@UPICg5OXp8jibcG*oXSkR6 z``ZB~m>6EaNWSOok!gRCG4hv@HcdyS4Ytv^7O`#pD|o=teo|!ny%nF#`I)>eB)((^ zh!cTR6{ZPB_D1(k}$e_h@af;BwpBn5NljkyN?7n>_dxq_W5$x9)Cm`;>b4pzwbJSdK zS?vYVkll9qLetiIl+O976vC6L*&XmemZ8a4k5KK+Z-Vo-e)$p|hlhtBEPfHIhekirp{1pt zkV9wrxhizR&mm7;WLZ6a{olBt=GZgik$T0OU|59{Zd;z~xdHX5h>D3>Rskwo6?pYx z$A@xtCP`%i$97^|OeZiEc%)GxrNAsf5082?mvVpS(ER%iO1HI?sNmW$$;Y-WXp1&KT{z&4>Bl^cd+pvUW_NF>* zh(Ug_vUie#Bq-Xjvq7$LV0_IZvP$V7{rzT;jm_kY>{i23%r)0}axwm=qcE5kGL2zF z3I)BFgHr2SvosC;2Uu@l5(TmF=Pm8epSvbYzBshB;K7HYoyPTj7VQ4|!klI*^<%nM zcR201Nyhds50=|nM8npN?h*tRzwf&giO!Kn9UbscDon#pc!?l40QbI~+XCcZjfnl2 zvl4$DS|pc0N?tzs4dcyhII3&QkPf%%!82zsV{p{w=x;~lN{19BXIruN5G_c*Er?$C9KW9@zP ztY9Oengy5lKP-3>zSu#&qHqtd4R3Of?TVi>IkvCz-ujAmmCx#TMTY}YY{O|1W!-(PgPg4oyCPI>&=!Yvsb$X# zikCY_`-6%npXPWPPkq1iA{IxVN@2Zt)`vpTSm7xebZIZXCq?*Hg9-_m*Pr5!={@{; zm9@bgldfhZdriv)-z)K_G3m6ceSKsO$ZL4x%FbPi&ht5k&-lz(NDKV7c##R}YpAC;5c3uA-SV*RS0}ksj_3M!&eNd^+ z8?)D*;FK0*d2E!;8DVH#vUNFLKIB{T%PlzVSLJIa)`w*Ua6)CX-cIBUc53Pa1w;7j zGIyY)3tHSseL>-wN`l{tKHNL|oC4kQvh^**cqQAHo~{Uj{MN4L!}W#MB}wgQUpvq# zWlG++v<3APB+`B(JD1h4Df3|q&kG$hFxcyH2>gcfD@rl(>ol&*^@*?rvj4lkdm1Rw zzItBmV9n|LWdk7#T6%gZYfH=347>K#HtAzTst@a@(kWa?uXY1rdkJ~S0=Pgx`{uC5 z9iw@cGa*`myM!jvm<=9V_*EQ5= zQr)2ZbzQ!nU(BY?I9VoG(o9|DhQVWLjoS2J#~uv}<&CG$KDWbNIGNPODMVSPAP*fC zj$&MWlMzq2b?Y3NcNFFk{DAQmnU2jc1wF>+H#(c&jHOb=%AsOOWl=UQh2k0wdQa-f zA~(vwTu%W$#;TNy^@9KKYo5mEuc;ogA?OIy%8NALB;vY`>I0rRD$veIz)M;Swr+h&dMYN6eA>@= zW{$z!4@P>}z=|Fz_4T}v7YG*95b5s&=ED7ISLeAIOe*i(8tw!U*d8yLpZY|FgffRR z_!837Jto-$OGRt$7?7ns7EP)s+NojT_!d=Mj#^rJ43${W?|J&SkPOeddnaz#1o2!b zCiEmfxt0guA)jzFRYev-WMXG0y7UkR>$TMV{$1^`4mGx$#6l;0O9ft{tLp=(&U}^O zrSQLdWfvP34J4PY>?bmhU*g024OB31Q0PaWM~D2#z5xj^rLLkP@Ebh%MvT}0thyZCK}oq`D?-UQz5j9CxM_WTqihZK0$ zT38uDy*m>*Tdj7fZ0DVX7ZC4yevcwToKj9+e=NBxA924^`~*osD+I<#stP&PFYag% zD}gzoN69twBdh>8;)B)q0yp?CFhnb?I^!u5KEVkB+o#)G011VgIPH}1fgG=^L{VyY zd3_?pwfJ{Gk3B>)8H~O@T}-PB0K83hTj8kc1Sp&Dc5NDWCkXFg$FpaM@3tPQl!@su zn;KT7{uFX{u9`xa0z>QRwYrV(5(Sc}bDW;g$TX8!g7*ur`_R*0ypupOu(F}9cth;_ zO2=#S)o{v+eg^Fy_jg~af4gw;GGTlVbi%B?T6%$ynvywIJP5$As6_8J+YlzzlWtP%?nfX9sa}=# zqW_yr@O@#SSC@TGHGge9)WRySrX(#f)dC#s!#PQQbO8q~fl}OH06 z)pDCda9{nJLKm@G{cLU~t~<{ToSxH7M}c3M9a0gnPkkkKHKY~TjrK?1|B~61M}B#T z2sw&xR0mm6J-dHXjB9Q5HEovS@cJ~nw`H|VOUlnghdNb?9!qY=WPzy1Rcbg_4RHg~ zJ8!+KkP!Q1_Lp9t3?o0nUK};!n7L$Br4_H7<1Gzs#b>wmRU2 zb(D+)Dkl(L>2Ode=hU?(jBn|hjKg@WZe4N`vOLRtSEM`53+Te`E87!nS|F?DFre?+ zbV_^zoqI}b9)LGJdC$T|_Fc6L6=t>Xnp3&X(Ih4!f0v>*ECD4Bx5^?mQ#uvAJ)5##Rkf3(9(v95_B* zD(ib|w_v>@9BbXz7Ah=MB~)Lv4|LqI!qTEnh=w}mMP*nno#K{bY7U~ed>n%r<+ktN zGsWK`q2=7;@$3D_ufa3WxaeIJ4LWFe)19P0kqrqBvwJ43&kK8cI23mQtZ!FRH$^@6 z9T5JsV|_?S98=(w%jW7_Ei62vGAEWojz5*Ey5HnESb9v=j9udt0mSbrz4IB;q{$jVe-Em*B;7{o z`4b`I-6ggwO**RdgmZLE_qbO$66@A&am8A`l9`b-CVH|&n3pHbc`mJvv;<|oKD;`* z&f?q-f!k=OlOk9EzZiw!F9U;a?!Rj@V|^wzre`)KA{Xqr{ri-M9?S|<%Eo%Uv(a4OmJ;56MoUT&hLek%| zK!UT>lNqy#?rV*(HIz}j#1v%=71R{Sf_#SpBAn=~bncK?&yL)rW$3`?j!bA@hFDGgK>CfJe-2tZc$KZ^mXb>5)ecwfhk?zSwxMe`sgL(xpa3F0nZKC4H*xtYC){1&uH4o}+@i!V zablRSp3B$xRoC8(uWS2h-BYgVat;f0M3&A+iFx`2Q)nj1vQSR-wl#H{uQt&ax3984n=w=B%CBwpp7Z}X}z*Etn25cng+ z4DcW`N^mV&7lgjf9fc_EIyvd%C0$6Wg!>kj`~vC@gQN4i#VrDZMxUcoj0H$vjA}gz zTz;j4FR1#5l>&D=($4hjwo`c7M&glJs52CMq=!y*J>wViu&^e3HuZ-iG@ps`$D&x9 zW3LYrez^2QEwLApDJR8K%f{&BvikQpz>%6T4mt}bYkKtdQi#V+iqA6iXFsLbUbF4v zl-RU#8u#%BGm$1+nY-zI5t_9WbKL5x_)>G1YP)F~h|i)9<6~>o9>L8e*3vm;eR;6A z{8MLvJCS4Gu(Q{D6mQ?ug9Vh>Nbb?VO&N8)=^R}Kvqy3KkU*6zVEPNjBu9S^C zUZW#*yZPO|P^^}WZ2x%Pw8kRu|6TACmQLIF@bZdK@>zeA%WCbmS-8HEPsGCjy?t(% z;u<3>8uKE^iB)B37SndT^-@V`U`h(tQSDQUHyz30P|q8J@lOiZpQI1 zT@I%5N;yqi|55oJ$Go(*UaE}cJ(ARu>F|zI_U3XyT~uLqNuW;jfy2;M_HK0m-Jy9u zEKFHKz4j|vxDSw8NB>mL=wFN7z)DDN+_-YE`EXrUDA$LfCF(xpSbFqY0C-#iG>0b_ zq?Lez7~qx&puSv;z@H!%eE-$jV?&a;pOq{fFMzEppf8thaVc6Hc&@A_wEMyo|EPrC zV=_o0I-K?~JST4=xazD~T6Wa7d(-ce%^PFs;_wjWezZ%{*bC~l2RlUmhiO9STkph1 zD9}kn>bX;l)I)c7i4M~TB(AvK9u87M3hdI+qdDW-SA$O@HSd0M@34qLG#QfYj#CE{ zXOe$_7cjogkG;z23Amz|A-%`K49`BACzvT8hjl`(bD(r8W zZP^c#rj4*h<_F7d<0Uk&9-ZBbGCRWdr-_%<`Ka%;sG5Ffjy?y(_B_qFNpCLD`K_Ef zq;#PRb6+c?lMx$E8!c*)b$2gc=~%SYSE!8kV|BgUNS3WUn`{x?uRa*~(5Tvy$tpNt za1;@~^LK0e*IYQ0JE9^?G^%nvyW*!h*V6o2gY4hd%-}Oz>w9%WIXyAyDXGk5RQ^(4 zBRM^U%g!;ZmVGv0-mj|V24iz0eu zF?9_fO!y-$XZ8|P4NWD^gN(-o$~%o+aw%3u-iaNR-Y*v37^V?@yrqHqynNEi=%|^oqQ3n4N*zlV z0*^qR6orHy*iEbGT_GOLkiKXV46ois^3-E^OM}Gav8UfuLHK!wyul~u&PlSHbFTlu zt_tIdNgWwj{VBR&1+;v=*(Pr?a{Jbh796!VU!~4xWv)Itx15B!W8oJ~g_8G*Xs0{6 z>T`6Ur*zLtu45=sP}WnEWb3;bnUI#GtD=vo@kI_h_pIELGygh4)vxDS;+qQCnW+{e zXHpKLP`%|!oL_U4&=*YZi;Z;`xTHIt_D5@gs)YhVDF9UL*FB#&#ZgZSRbidVkcuCnN6g>HzAWonNj(YsoT))Yr z)%VH!tNrGE-4j$PH4(*bQkH&kWQkgQ46>5`VyU4MVM?1Qj@y&m>oUi1?D*%~j=Qnq z0w7a>a5%EyZsDUUw*0puM=ej+LsRI1bsg&=LY*sAMf1SKsOTA|5RzwE*3LVf^6T0SlmG#7SE((;R<}UL_w6z3RV0C!kTn1T5DhSYV+XQ=y z0$E{pc|YO1UB1r@o$Gw5Q9sbW39zw4*!Ih2cXzi4ymkHE(^5`M^EMkx>KnD`p+ub4!8kn#Tki>n9UZ)EGS_t3Ln-JunPy zHWx(`xkX)mh4w;#AkT>Pyk~#jG^PWx3}Sn&guVw;F#~+fI)-)dWBvM{~y%;U({RA`p0 zv^7f5LPlsRzP$H1hF1Gsv^xBTq~!|zU=lVovb-2{-LCbDFr|M>a0ll5%Z|^MW^2s3 zM-P1L!b22-Q;*cA9JZxpnth@pf8Bf3uHhEH#)FS;$7P!n0U7uc+aeFZ9V>g{F@43d_7^H059#Yrvyc5_11-#jmLZDsE*4XQytcbYNgDZ1@}Fam ze0Kwi3vr{Sedh{_hrH-l>$yk{UT$jLjin2@bMgGfd{Z20c+arF;o~DP>@s)KfEdeh z^ma{w=KXi(-$|y$kv_mIu)p+hdBA=`6#mm#*EdKoXg z4+K*wQO2N5I^0c-sE9g**OA>gNFZI7JV_7Yo*?ki(|4qP{|PiiuD6iGR!{5lV_p$m zK-Xg)Odex+1H<317qLAi?QDO%sz;I0l^%@Obc@}p1w3C})@zczeO2KzD9uq#>8;l! zuJSnHhj>YL$!ln%`m~8OG2F?e@9F3#_O)Vmw2)RbHGgcEX8bv;3z1~=3MpXW_BMED zEOe?RG(0TtcR9eiqh(ec;1L2M&V~Azj8B@=5uZm8%gYb>MAG9_mZkMHR)|mn;G5>+ zT=&{bv{4Bs<5KCs&UZD?x&kU8_m_ohzXmOw=+O;1EgMO(#>YPm9XXCo;Lg7N{G{c9<>VDoZARu7#y z%B4eSsZRqOm8kv{7E_pTfI9Q=yq~DL0|jHfl+gXggnLXt)fWI^LwH1dhx!!j%Yc} zU2`V3d|dwf5H`#ADSOy>O{>65?AI;6wtu__HF)1WUY$)wZ_p%qfO zS-T~bK&VxT7@8B$Sm^E24!AZStyykL$mi@W9Nmbb9)2@EH!UOok!PzB|LREeZ^g&) zM}SIh#s3NQV*KddT>=Ni;{%`Bg{l6WJ|A%kD|M(&Q58eMSz5TM1^Xg4& z1#9_FbVdK1n0>zAI+z(yYfedw3f%wW`%?mkBN7(&$f&Mx|LrDHhPQK-7gAT*9Hm~l z@AJa0jGpXo=1$aFn#$B3zzMn{W%-$&B3E}!i7o~D79Vaxil-o_&+WFu(};I-S^rF- zn3@xzv_1Mk1$ENfhWM}>%y0G_Xug}N{{A_0(5bc8`RjKcrEoCo5W3R7G3a0A!hSza z@EW7$ba-$W$w1o>=Ur{>&+@YCO43)f$@xliuOFNW*1xfm6MhWk1d!%G-<3;a#}27i z2AEl$T;6pb?pk(vkmJXE(p5s)lCZ-sFQoWTN4Pi?5*9V`!D@WTTq=SLnx zf+W1u1RA6xn^vl{%1G-jgiV64zGqSgd`qEDkWY%6MROpeIliJ!1OWJ`^|D4 z2Oan~k?)y>H&}3xxM3g}WaQ*fa+{lkz$ikGI6-|D2&_Yt34#76kbv&x+1QT zBQT81osq*(vh@|`M0xe^7O94mEI1KaIXMa5&4L1n(lRTV&=~Y!vfxlB49@t~(YPc1 zqpJ%qa<&(G9=tRknh`j9oFrGvADk#0``KQ-}ap2&9*k+`}mQahHIOsADX_t zpZ1f`_7`OKxJz-3AaoV}s>BMu`k=3j@aAQBU2gQjW6M&c2zU`ks&#C}8KT(RprjbD zv!?!5`!N4YLtfaen>BT!X2-tAV87~9wYeZ=dv$Vi(fbchB75n3_+xgnttyL+*3|%` zNK1Spks1y70XkW09OjIw4bP>j8#o6B!k4|$z^*IKql6?^yMBU!@iWF6Ki2&{iZAZB z!qZQ>Mm_J)Xs2$$!w zJe7AT>Vnab&R!ahJ|euAV(1qOocaD^ivONd!( zH_>g{kD-Uen+&88NVLVGSBr@In-=`MKcY->OL;S6HQs@g!%qqg1bTS^DkxOjUL79? zmps7d;`O2kdiCk3hFTz93ER>(zC~$$3>6p(OF8p&u6{N2yLs1-_07` z2j-^)OdH!k#SktUMgyE$Fnj*X8wXH;}|z#i>5wOshIAr*u>-^ zA>IbaMKL(S)rpDf$5;CMxuvQfYN8dV!4Z%u`aWxr^tO@WyO_lL;C zed*NE1Nu>B=jV+SqyhWYoMbwlL@Hr;VRD%=Qcwx6?h#c2xgJg!WDkKRjH_hex|m{n%&4jAd3XDe8l%heX~y91{@H zz}ngYBTYW)TJwjybJB|~F={XRhm-GsAA*05zU}F=H0Stf^~!6j@>8YR_w%EJdNAtu zD%{doy?>4b`!@Y!SrQJ~2QD_e&loOO)*vdZYq&_AQsP&|+4V8Bw`W4&T7>#29Ks0q zW-0l#)!gzFB5PRHpvwgde`UF}3{?E&A9W*dKjL~t`CMN8(`WaGUYb#_Vrls;ErXx~ zjXo1?!Q3hpF4*((y7nrS^mh1wj>ElO;uGtjQf)Oo3trow$SJe#Z?%T?shSB%eFxm6 zw%66yoT~N9hDZ63%U4V!q=b(HZ@n+sYk%JL{s4MJ47P6yBL_m>qt#6wd<1H5-PaU9 zeXfa_9vZ>BOqi-`cTRyhecV1;U)kCYyXpIeu%BEJGU` z;Aj1-VtSlntTLy1=Er=|kY>zOkZxKZLIMNZ2b7--o*{!HXN1A@m#-}gLmS-+YJD>Q|>rG~IuA7MT z#Q!GE%H?e)9+v*J^T$r{p%D+`g^pS zEjIB9)Amz(3vRX^0Uv-#Dk1DJqk+=y`{Tc*Usrt>&C{W@bY6Xh-l=wMbfBBN-zS&) z3+4v7XJ2iD=!>};5H9KM4U)=!C$0&PQ6Wtx3maF+@uxx8TY{#w8rjeD0;67) zqze;XBVlM|Eel?(9(`V$GIM*$G?sMHy`^8v0@12slgyF_hre}y`^_mhBd3<0hE@eW z6=W2xom^40k}3ko<01tq>+=XwJG|d|gTMq;_X+W>HS7M-eVrCv_na25!Xf)WAh#=} z_xR#QlIbh?d)e)(JUoGKMsuPYV5pEIPdr%c;D{{)>p5su%Db3?|C z2#9dC&WRwm_3h3?&?Fc7GzG86xtYc#HjZ!j0#tmWaNx(uMNLFcn(q0TaHk(e%I%dI zKZO*vo*va-71!e(wP=h9e<1|fBlKjRn1)EO03>zNk)LMUkbcSgzw|;s^umLY6<_=Q zWP)>b=Fu64Vb6@@LJVlGVYav118diZNHa^1qP|Xp5HD*}%6DwX*fORTkL?Hp^s-Xu z!n8}vW<%@a)s-K2(~!R1jQ0 zdj~>$j6m$-r*^a&ACQ=Hmb_|7vUjx;1v~ec4W1eo5x;mDs|+N^Vc(M25EheHEuW^5 zcDper(MptE_%9yEDjsf&5l!#b$3@R4R znL^8vxjDi>FA!zHL|Jv~!Ks>KyEtO*Y$Qc8c6?%Hsp*5(?S@>tb;95+SwZ`{%Ew7k zpshxX@qolSiJS$qE`DOr5yS^XJ~cxYKo!_MY-agL`$RGCN)0~c5M>v|ZhHTRf}G^G zGx3Vr;2<{I`9kNpv)+RG{BT0^#4j0lh}_=p2{1!;Y9?`r*4Eg=fIA{^Ge z`ojn)6i@3@lsEZ|St2TxeAvX62d=>Hr6X1DHDSUBKCX}dn@ph0-Xe1mZO5=7Hp^t! z$}G)bAIOUVqvcX|t$#Q-byz6QXgs>xN4)7}sYLh~Yc?7`dX}bAd-yyPiAOyg3HDWrynZkEMuZU^dT%jmqawLJu~=~gc2Z%71BQMvpHY+pB=c|Q>aH< zHuwl5ALX93<1M65UYg=Dn`dDSAV642pTds$Vdu{3?9HR#9bb0te%WElMaZbnf0Kox zqn{*%u<`l9G^66M_WuqY`6GyffOqn=IkYUv<$%daUv%_&3<&boxSwh&bl=07H$M5e;!#i;mAkyrAw*AOv72OqS`&BW* zU3=1gFhuoXXF<$v4c31bNQkF>B8~5_`YsRu@bu0uN9%qp>_%vvvqOKx)^>6G-epGp z`3?}cArTdu=|te4D~+w@7I6*43@!KFHqq*;|N9R-k||$hY}-D4M);8&9#h|GZix07 zQK)kHl3QNd34ZlN%O~p^Rs>rjNlGJA0_uDtY(ejv{#T+gwdEu?bXBH-`=wyAlH-T` zqFiMvp+l`-(Pmz3Sjw#OTgeYWMh2=v0PY~%B*Ev3A!DuCjJ5|_blkI-jy<-GEaCM- z@BNjRy!0uX*KqRd9JS03-^QiQ7i=1`Y#Jn^O_u)SiZPjdeuHB4l>KbHOA1E{Evx*b zMLu6Pt$=uU@`B7@?m(IM@T6;^qp1VG)55n=gZq`BkvzJS$7ztCauu!Gq@)EvLSr6m zI_&O~`rna`=Zd`8M_EgLKwZQ7LQO5v!!;!l%0!ZdXkBMapEx^P$L~Xb?WM;$KV8WYk5f#)fU9mntk8&DeF*oEv|Q6$s{` zyH!FK6J>E;#1jJ{BtZ7;{Ex`qj2A)Iex{xa0Jz${K(@nu$b#D zS)bEAh&jv8m+A;GaEE(wvLAcNT@zMsRf}>6-y69QR`iZ(bODgL0aSBE+>mcw_vzdP ze{Mo)FnqyrR#`@D=&I|VqUx z+by~9Z0WTs!0;Gm%mU> zaZEd4VT%*FE^J0hi3>Ipm%W@BwD)UZEZ0UD0PMs`kp%{-|X3^YE9G8?lPIV{U zTF_7X=uWykt$T^_T1N3D z!|kY1zLb$Fs@ul`g)_a#1SJWDwQsO3aS?0bJ6T9`7USsm|L^50jZlVi#LwUA zJybVmy@E*(NL|i90QCz&h}3~zh)d7Og``s!{jBf_s>R=B8q-EJv?Hv`Y-gwHCuozcQzPLW<>j(7 zDG5h8AC`b{(9X+!#w`2w-4|p4aW`)3Q|c?M%Fk6;<&^VA>DitcUl1-}G2rfVR7h@o zyM_U@dr#n;<{~7aYc1h|0gj*oWd6u1pm4S^A_p#8$3o7YR4!zqG{*w|c15i5(@4o5 z$ohX7C={z32$==`4mf{zhQy<&(KFFb3OKsq6@jVl1YeqnvV5`jJ5(sku<)S?N(ZYx zhw4yR9qzBXs*xjyGd5&Sd;~^s>4Sdj6ybZPr z;9{ZZz^lfNN5|dhS8ZNbg1bLy{iF_%F^7J6mLe?)$KZRTNDV(Y>SjM(<=av-I46AB z1zs@GN9SB{BrVB!np);j@;SWL6Vx(J1y^XwIz?QcM$G{X1!O8@-EF8bn_zsJU_54;#oPp+nwHpux2XsCs27`#o_z@sxHNY?Ag(NO*4e)zgCM@u+VSwAc<5u-b5zd$B>(mfqXB$+<|=U1 zE3g)Y*=Q#Jhe-g>WhIPnwepsOZ^ZiNNPpp+{Ia@%%*Wr0Eu1&Mnw+RSP&CjV;7U?M zVYRaoml(6Ky5#%4Vm_#AY=81J0+*dMy56lAA$YyyX-#5M6OCKF9MxTim4~aq-_l4* zG-;^5JKgIO+=e(;{#O+zU_^{WJBMMphez}?xl;Wf^99`#bgLIwP*uQ?=?jp3t)H7eleW{J{N}{T0E_~+|w)N{SLYAUt*`e>C zNwyn(kPljK8vzU|g(e4u%twa5JIvy@hOpGZ9NOJBv0V@y!gmQ*aDV5^(!#AWAFW(I zrF{q65`MM{dl@~J+|QIBeWPzRj;!Qjqf;)-k-RUEB~(CBpH#Pd=C3xy8V`CYQfo(q z-|9N#^Cv31m#bs}913nRB!ST2XiO>06HiCF@&mvyY7$;VCsv*MIo{drPq)j9FsA7U zhxSpLBxXrVk_1nT`#l_@K7yyxxs&156S!%FMpYTwb+AZuHbkJkrT`=uBNqcx7R7G^ zCMJsBIe}F`eo1TQkI!l!v)P}k4Sp_Z{pFnK+pI#WfERTXeMgO%5pVXrbk>Z>i}F@G zTmk|eOQ(wXhI+=lp6<@T3O#z^K&d)ow74U|rzL^3_0G33!5B(B;o64X$8W?^U}mny>ATphqrsf>w1noVo&z!LZZu|Y{zdlpk)xo;-wUxx z)nccVVhf8wLca;~tTdJ+>id`>|9R>O$R8?lqL|IidN7pkn=H80V3 zPF1vGeht#=@Bdm6p}MqvQp=(*2DgGXHmtsb_8 z5h}dJ!$a3J>Zp#W8?UDHiFv)qj>EJ3k4FY4?zOH6W@t%hdql@?*uRGv8PsgLa8$h5 z6Qb#{SPJt}qx#M38J?IGWjibrFS4IESEANy@9}25ck6)N@(`2Ro(2H zKD%^nvv(xe_H}%$Z1roSl>5{e{j+@hH`dQ~i}ReDY8r>*#WDZF#1Gq(PW@<#{o`z_ zq}^Jbzej5PQ*D|e4Tp;!gRR=rXGwRnpCKjf7-e5Ak3v?&j~XVJph#-m(~5xMLqt#) zF8R498ynAOCDFPTacCUZ$>?&6L}ogY&iimD^b)(7C3` z)arNMZJ1N4h}K^Q-oYO}C{6NPuhrBS9J3)cSLd!M%_tJogKSlf|YUWt)0rsjBMJ{6vM&d+bi?d zQyoRnJ5)tOHyW?NlQ^YZt3g0_id^`Efh$|_3N@o-NpxS!YqC#F9u2>C;>U4)R>JQ1 z(K~X#3h>vvS4yNcg?t@WtK;K;4Sk#crdKyPY~a|`-Q=tZ-qyWz4*X{NVuyPyk9!$D zH1u$G)XtW3?9_6mqP-!ox#gL(+lE-qR!NxBG+oI#trMKa`-Z1c`SARDQ|4K(IF(2T z7sQwA<1=sYZ@f_?m4a%_@Wd41h1C-V_c-@n5ppS`d*AI>;4=2$SN)Swi?PC+ zZH(oG{~kz;CKf=UfGUT&qsNq>M8Sl+xa@*Juu>y=`~Ak8i6E-LE-i-Htc&WBzRV8X z?(dLZC(^d{Zgctd<@s2qV&-x%D<8SeTRscFu$6#?B`zp5R2zf5l1`}XPWo|O_cxQ5 z!PG}v=hYJ2rLh`J4@98{%6V{Y*)!Z93-d7x2OzcX52O8WW@HsNg8>lu15plqVRr2E24^7DIMO?9ufW7V}FaY=8W^B zSCFjx#`5Y?WCO%HycU8%O(6VUh1tf_J1a-MmCp~r{-P&I(C`Hg5w~Lb;!DsvJ!k)L z4py4nT4&~1GgQ;EKfA4)Uv~W)7<4vb^vkhp!jdow^Ngl02$m3)^D1D z_gcp~_R^34P0Jrqu;`2mjL*N@@Se+xrY^RcK#K!>)=%z2MC^L~RS2lhosA}+sn{7w zEZ$%bnHQNSMc3#noZHHfvPJuBHSmM0PYUFT2>_EanM@La&{d_+&xw8UpNZyP;-Ru4 zNB-JGtSo=)SJXN}AOwdT37Hi1h*3kP37*hT&!h#-SKkCGSXt$K4Pp_UpAo3%Q!I;? zx1;yicbja;em~24U~QH(v5{%Rsy?@APs?VC{64!S^!XyHmvpCeb{aUG^{YKOZ;faqhqlF{T7q_$b7|IU|Jst9>?D=zEqMAL_@zr zM_FZBq}WEmM;p{W$oh!}x%F3XRLq%WC%_YIycgMvjeX3t3|r~%WD{9@;2Krn+R=Ul zKSKk8T1{L$7}*|OkHP+?ryYY=xTsx2`kd~6*h~C&m5l|1yX2D|OMMqK->x~)G^tW{ zd?)og%BRqJS9#Dhnt_8O9$Fj%EI4J#DgKUScsT$Bv!NdfNx~x{QXn6jiflbj0gZ;W z*BSAD(dG@~^woMQ5x58H8y44{M9*7hCRteYnTM}7On;yOzkdOlt1;mFsQb0Oy%3vR zb&PSkb(IflKIflB_A8HNg3WN17ReTiG8q|`hM7tOt>`N{jgjElV|k*cFj}hD+#yeu zSGQiS9wwp#3!;hsogL}KNXekc8;p#E-j7e9BcQzuZR7_}2$v?E;9 z+dMxP27}AGIsHfv8su`d+;C&Z4VKZ$LUGs$@u8Zy4NsF*lj?#z=%#>2*D0Hn7E zG%EXKCAl-hC$)ht*=wZY;5@^G4Q9;4tu(u&!TtGbgyINX4ei zI^5(&`#O;0^q``%rPP2C2S@N}0iS!O%M=elZE&JVDPgtE*mHp{Iz&=N^URn8^+ zx^*#RF{}mz;-Z~#q*!j2MdjO3sM@^cAAj_>NckA#gzSWKChrzU!#C}jS+X(Kh;hLX z?%A0>D|_XL2VfTcnYQyxVzOlqT5`u-Ds&shQ|+b1%Ll)fE!R{kMX-*Rs!?)TB4Ub zKO454>qA1f&rKLx)FA`Z`f zI~%mhEvvP5Ufx+z1rZ9+2!7u7Hy#amai zAbp~^y2^O_Z2~#0JDHxarqM@n>Cy#+dB>QoYUC4Pr z8>^9{4$Q8R0$MQ)-unHJ_(u32*pKG9x6I2OZ!YQJuLh>Dt%-sjaq$TDgv<9jwYbM) zAq7$1_e2#OW)hZu6xruS6MB18Ys6ygW{4WRf)pUnH+jSvU@^krMEexo^~VAVh{~Kl zVx;&ISd0VCk+P}<#I^wPczc{|@*3Pz;77{$pV<;wSl4U?U!=^dAYR9^89S)2Q&A|p z6T(mg=vUMLfLJmEWyyF5yZrivs_MHlS7#|4uZ_Eo8&MjB5fu$sMZF%EG(e1~P~dp= zkv#9~tAcM6@o}D{NG>g-OE@4#-%2__hK>2^F6XI?h`A|>*3$CJ)wN1Kv&FNZ z;x?l41H|ZWVf1&es>yJa#y;jhJy(P26D2;%l$*9|ntY zibm(53dYDd88qVJdK|{PS|Dt>{Rm1iDfdxkw>gxHNSyP1!*Lw+FzDCY5Ul@QB<(^S z{x1;Q9N8MW3H>`74-!B08McO;8BG4~ZWkoAuK!}S0LXp;C^gOJw z^wIc@s}(xR2Jpm|K_D$4+zJqZzt4Rj`&SlpAny9|a0wfL9LXx>Q9;h_UqFtX-sW_h z1GGy9o#y zbb*c$ku73w&Zx$KUMNdn4I5)s)zz6)595{8u19><54@SSJX^4Cb!Q(J8cAU0=k=_&WK5^a;v~+NiKHVZm<{{)Kiw}w6+|i;FPjww6%;Pf3 z_~&`INa^)r{*2u}aN?C1-t;&t1r5Mo9{trscTk0e`XDt-Q_4I<CcYU;%FkTS|>mEi(l&Y*ZM@9UJR>Tg4!jNQ`Lc_ueX6(=i^>uZh z^Em;wwzdR=>P#FZL%v=A8ums;G1h7EytAb|3dK_j2Uz6cl(9+tk$%8U+(Gc2XY(7_I0-5}}QpJl-;FF35;5Rp> ze-&nC#_c`$Is7i(4E6-@93=7c9Ql3qY?W;4@MwQLQC8aqhJtkbKFYdJiA`v0Eu5trrmz z6Ke&pik>&KxHvLIcYDyenf!|$R-n`O&0|L!xL;+HmX@BLneoha6?>e)1HYL2M5m>piB^C))%SQ1j}f6z-i=rWB3<)zs>L3Lohgn6(J|w6wY2T|(qQ z^adXvV(ZOY9arFHt80hM3mAN2vfmvChLOfa?;6w5oCk(wJwmO!a+8^-tbU(wLeQXJpt=jG9xc>S4wB225^L9?+8?8!a z-$EJa2NMxB+JTBluoWe1# zJ*uHG8xt6AxzP}6)~S5cu?CIHF)9kOx++7gX1r*kO2|MGBh#!!`cy@zYa7P4qS=D7%K{<`OHa}(PzI@axw~C()%3@|1g< zrAMibiUBl7Wm-ky@%~G#o&d*GmTezrB1&G}T!(WC%I=xkCVL_h_Yi~=Bj)rfWg_HC-MA+2D9#O2;PxUtniwZpcZFmXPyqjV^ zU2yJPD@u|I6$$e76%7asv=GWhLjtSKI;n>~a1trK5%+WODy3_5YKziD((xE7b`N0n zs7RqaEq>0(k$V=G*sVt{W|70Y;D)2y<)(UN$n^OJgYWY$qu(jEftv5yYvbIM**!$B z=iTH$SxiyeQqo}az5wDirR0^YF&n$0Wj1*utocF=20mQ<=$DTuptBIUI{^Oz!O6Av ze^*jkxA#t_Zaba*KfA1FpGE4I4(pd+H|N`k>_)Yffu+lvl~e%!ui8@vr>70D7Z3uV#oO)^&~wYFV1;U0FZ$) z4%~X27F^GP8bDWn7!99Ro;LwNK>4;D-+wD@<9hE5PfQna<%IP^U*pvvb>5?AqKdz% zX7cu=Ef4SwzPYsO?12ZjOQ~Y1_3)zwYSx>T$*a=y=3B&B2`w1l3u;v-nw7KbUkJiJ zkqh^(scLBxCSeN8K?5Ioe9}n8b(A70f{Xx`^O#1_6Q}pB)8+KP7#5)m=6s*ZIyY&c<;?Y%kb76Z+i-y(f zmH?Fb4m%tY5G0F@f7IahFJ}UxM|F`&izb`cgn$v%|#h}%wZl2VIw?XifD9} zRP2**^G@1Dz!&sZw<=dIcCLjxuLMq4?$Fm<8N?lrD&R+*j%c&a2Gf5Lh>-nx$qK}i zyl^_J0iSsY0CAS*vu3LPx`-*#{q8?=d529Lx_-f+{f~w0>%ftg5Nga!ZNwHz_@hiy z`ZS$p&#Vgw=gybhOs*DzU8`~@%4%u1Hw~hAn9#VP>C%d?hA^R1?gnDS7XQC3}IY@;}>-wbK#Wgtp-&q6r zf203oTdlMwNrV2qeK8pRn)!A0o=we;CjaYO(}46 zZ#n*p=F5K*=VI1k5cT7)_4+a`D1Z#j7!(7x@xxXAmn3VTU1-TEmC)O0+Lb<9(Bf_b z+k5>a0u;Y9e*Rx#=oB3!H3l%27lUF0bES180{nWdWj;gib6X^$J-e!-bua&2-vD`PrfUYs++?EPyM#xhZDqubGapnN#e|3lkFtUIwLqWs3 zkS%P&>x%W+Gax@6(}Y}_kvq=TIud&<`$eK^lUbbHOQ)ZVQD8-H?gD>{qLuy6Hac!s zY*qcV5esg2R@|(&2dkg$OJ2tReMzXkEmBHVUB59ekB4Qpr{A-yg$}VB4JzKBW1~8y zXqJamF{*80A7|C=KOP-v%83AbxivRc38|?QA?^pKt8790540Ad1Ms)lB8JZE=lw*GyMCIV5W?cHl&^|fWp&JK11UK|oY267=GZ^e6fCi9BK_`BV+Ap@mJ z@DN1&4~)^EWdi$YS>;2$;|k@P z($`kB-BbpW=TPymTUbtu?=&}m2HEt%G=@2YU*L9eJ`PswD)}vzSpi}IK8Z&O+)$&RZPqY|y0bHC8o1%Kiuz>c4f(mRr)T-8?z z;9<2ipQf|lZQXesMSiogQT{VDq|ae0Kg5g&G_d5->-MnarBfZznvpnhngO=<6|z%` zK?_gj>E|KdS9ODz8XC%mh7^-iQ%@4@x*=ug?cCCB$m12mGN^rju3daex7D7BF%lnY zqb`L$62I;ZUW>*(V_IuMQOPkhmng9j+hP<^DP@3XZyewCNZjZ85-e&;{XjtTtOa45+Y6YD{qY#=8qREYOGb%C zt6>Ua>74W}@_n0Xx~I8ud=cBScCF`TzG0c!a4cU2ggYh55A;Y7S4*RA_?fR=8lC(( zejnscuVP;fzCiHtNI;y<+S<@_r=R;e_gGr^o_-H|swBSyH2n8ihgRl?UmscS zJ^1%bTgW#-99{(-OE~!W!YyrI2tGa#u5WDQ@IAQh*3cOt3wN@|tjt==-IuKyeIk@D zeXVXvc9fJv6G+V}3ON~V*oZiR=iGw5wak%JTvC$69{dpc5QlNb^=>{A$2YMG)5%!k@pNWw9In$35(lknMZ zd6#x^8vIMM7QE3MzUku=qf$j5C!mVY6};&&=g3F(yr7n&;h{B?=1J!U0oxLaVEr3c z+`jO$@y+;P-nI4`=V8vY6olpD6n-L-q2_YSuia}6qM4sy*w#Rln8Ll|A6Xoj$=Jwp zj@sp7?!=dCtF4RZ1QUfsO5Y5W*3mcR=52#+y(kfHEJ+FRy*rnQv4P~(rN`%XPO?@? zp}VcwgAsYDgBXSa0e|<6>@}{|2QNSZ$mM zm_1t`qIpzU|7RMQh!fC8NI&5<*P{3y8_)*!uXM)p$4t0rrH4xi9v{CY}BgF#ul|K@C0zl8o@ zbHJHQjk7qLa}!+9jvmx!vv3b2j~vmrKDUvT4S5UyB7*I;419eAbW_p)$+%I@-$`P# z;O^{}eWcQYJSOc=y6m$jE`e~MT=rqdACn#u4uqY20Jp+7g+(xf`J|C4hC0x?e-AqK zG8Am>-(6(p4s0Q82SS*`+ARh~}lMBi@%Ql^)PwyyGlXq+_?KP^b23EM?>~uNNK0b2L>n^=1uBY90NR!Cm9wP$TU8^Pmlr?rvK|{QP3w)LPJbE}sM3 z&}rKwjtP7*K$>hC5Nh4obQ_$`^viCZennRPnxwWh@1+=Qq9i{>#jkoPQ8=714?kM zNcPu#%6;t)FnkdjS&jr)D%8u25r0DK zQuRCk)NF;Ij_p+yHPWNw;11gJpMPUb?JAu8djb2(Z^l$5kK`}fCQ`I~mu)_ASMvg% z#o>K9CfP{RcZeYZ$!s`B`qi(|w5T|n8yd|v_4LhpGp*G>hf=((O(wJ8T|PfqNAUvl z_M&^U+ev{mL8*|qk*rn4qZs0kh3`tfXdC^(_%cm^Zo-=WVA^)fvRD!5`27BlibKc9 z)8!3JOkgn;Ie1Je-68al3yyNde#RgZK!>+ivh{OUe<0t*YKy(3t^`f?`*f(sju=zc z{aoW>rz!XeAUPRiHQ`kOYY!@h84j(#!-^u_WeVV7Vra&lzk{2uIEkYMXSn>5gkeGz z2o28+<{p&6Q#H%*qza3kh5+dP(#!zz2i&MXcE?v|ODeW${Hqc-$X(nv`Ys?vj^gh@ z?QlI9$DwV)8Yf3eL!jx zgLOzP^|?9YJRX4;s?WYK4iB?#w(;gXm~O9B_{07uaf?Re;EwS_jhE7S%U+bQe~`AZ z%Hr}(WBTD)5*zRe={~JO6+m9S9IYmB?hNv&X8{5(FLvZax3Zxg7`3S2bcN#Jxs8x? z+(v15pKg^Tm?1rxH8Qq-Es9@VJ{@$Q8Y3uug&W19$_#5rsfShO^KYu&Y;k~cQx$o; zbn4lSt92{YDY?FfyLuQ%alLd(3F?Y!1XU%Dxv;V75OAh!rz0P~*~&nAo{K$% zqa+=Ll{vwAFR>sYf!H^pvJVZZ7WSY(!v&5Ul0mlkFB|-1Z`?l4oa-+?Z`~hOJ2p&` zPF_9t>-aL%wf)!O&Vd~wFMpgH_jgJArqUF&AxDFl(0CEtF?Ck^P?F}FP~3E)ekCWA zV4~hq(xfD^HbUT$2I+`*WH`EEK+a1RcdTkI$hL)7d%zF(>v}^N%S(~a6X=(oocAy7 z_n?VD_Sd;3!hE;i!Jk8jp*b^@Uz9RT$2ADsU0`Ja6( a7=iD5;@rr$@`fCM{!|oSDpbjthyEYyCZyv4 delta 45692 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

  • fp}az*FI8)G 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 z zJrK{{SXKNhIC}**bZ@z%%Uf_b&_KZ8N*5V}@e|&JkOeauOT1M<>>ZA5S`_&@OMU21 zk)OL;n!9D4Qu6Zt9P+m_5qdm+s0n)P&@Lw@*8$Gg+K_=`Z{*K*r{tp_Z~^VBm}Ko} zHw&|zZbPv}Puq#ZZnk*i^&mXR%8#CSOUu_yXD_W}b zB&|jp8T09F?icj-om-dFKz!<-n1J)>#;|J;&ga*60Rb4v^6y+3`rzrNmyB!P#_h^< zamJjatfM<>9k(L?WdQ1OrP|IcQI$CBNGfamW<>wH90hB_=9lzp==}HJ83EqVI}?Zh o=~9SbkU3rkns-0{pK<>q6d^_A9U~*I6af9?q!p#gBn|!k4`$}76951J diff --git a/icons/obj/janitor.dmi b/icons/obj/janitor.dmi index 687fef6065a24c7a5ba580fe889eaec9afd9b593..556da9f7ad1ce837f8f68ab53ba7c16a980bb061 100644 GIT binary patch literal 24146 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 literal 23842 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 yLsF!M4QS$=!uJ5_Yunwuw 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 w9^S^xAyD(s! Date: Thu, 29 Aug 2019 21:07:57 -0400 Subject: [PATCH 078/324] complie --- code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm index c2c399649f..d17ccf585e 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm @@ -134,7 +134,7 @@ /obj/item/stack/rods = 1, /obj/item/reagent_containers/food/snacks/meat/cutlet = 1, /obj/item/reagent_containers/food/snacks/bun = 1, - /datum/chemical_reaction/mustard = 5, + /datum/reagent/consumable/mustard = 5, /datum/reagent/consumable/ketchup = 5 ) result = /obj/item/reagent_containers/food/snacks/corndog From 96aae12057109cbde4ce2ed81d086d89c15bac69 Mon Sep 17 00:00:00 2001 From: TrilbySpaceClone Date: Thu, 29 Aug 2019 21:19:16 -0400 Subject: [PATCH 079/324] readds --- icons/obj/hydroponics/seeds.dmi | Bin 22302 -> 22704 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/hydroponics/seeds.dmi b/icons/obj/hydroponics/seeds.dmi index 1cdb720dca490f167c133b8d48d09d57c0a90399..24363fccfe379b4cfa5cf19d5e825876509b84d2 100644 GIT binary patch delta 3138 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 O0E`VRP^4RKnEwJ+@b?J- delta 2733 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 nfCU19KqG_!3j_jzM*J7b Date: Fri, 30 Aug 2019 20:42:22 +0100 Subject: [PATCH 080/324] Heat plays a component now. --- .../code/modules/reagents/chemistry/recipes/fermi.dm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index 6625207a71..89ef2a329c 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -24,26 +24,32 @@ if (500 to 750) for(var/turf/turf in range(1,T)) new /obj/effect/hotspot(turf) + volume*=1.1 if (751 to 1100) for(var/turf/turf in range(2,T)) new /obj/effect/hotspot(turf) + volume*=1.2 if (1101 to 1500) //If you're crafty for(var/turf/turf in range(3,T)) new /obj/effect/hotspot(turf) + volume*=1.3 if (1501 to 2500) //requested for(var/turf/turf in range(4,T)) new /obj/effect/hotspot(turf) + volume*=1.4 if (2501 to 5000) for(var/turf/turf in range(5,T)) new /obj/effect/hotspot(turf) + volume*=1.5 if (5001 to INFINITY) for(var/turf/turf in range(6,T)) new /obj/effect/hotspot(turf) + volume*=1.6 message_admins("Fermi explosion at [T], with a temperature of [temp], pH of [pH], Impurity tot of [ImpureTot].") @@ -66,7 +72,7 @@ if (pH > 10) //if alkaline, small explosion. var/datum/effect_system/reagents_explosion/e = new() - e.set_up(round((volume/30)*(pH-9)), T, 0, 0) + e.set_up(round((volume/28)*(pH-9)), T, 0, 0) e.start() if(!ImpureTot == 0) //If impure, v.small emp (0.6 or less) From 85fc947dd78609ab641fbad1b47f55af9f6ee1ba Mon Sep 17 00:00:00 2001 From: Fermi Date: Fri, 30 Aug 2019 20:44:39 +0100 Subject: [PATCH 081/324] Allows furranium grown from organic sources. --- .../code/modules/reagents/chemistry/recipes/fermi.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index 078e1c8a71..94bad98752 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -382,6 +382,9 @@ FermiChem = TRUE PurityMin = 0.3 +/datum/chemical_reaction/fermi/furranium/organic + required_reagents = list("aphro" = 0.1, "catnip" = 0.1, "silver" = 0.2, "salglu_solution" = 0.1) + //FOR INSTANT REACTIONS - DO NOT MULTIPLY LIMIT BY 10. //There's a weird rounding error or something ugh. From 58458a67409ee03f97904ce75f1c9f4e6fa86096 Mon Sep 17 00:00:00 2001 From: TrilbySpaceClone Date: Sat, 31 Aug 2019 21:12:27 -0400 Subject: [PATCH 082/324] the seeds --- icons/obj/hydroponics/harvest.dmi | Bin 51762 -> 52053 bytes icons/obj/hydroponics/seeds.dmi | Bin 22779 -> 22917 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi index fe126cadd8dfd2d06060e64c00e6c711249d5415..7796e1b1996c0c7fa23b7b38fadffcc42668b0f9 100644 GIT binary patch delta 18445 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 Date: Sat, 31 Aug 2019 21:16:14 -0400 Subject: [PATCH 083/324] huh --- code/modules/hydroponics/grown/tea_coffee.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/hydroponics/grown/tea_coffee.dm b/code/modules/hydroponics/grown/tea_coffee.dm index 8de7c9358f..06cbb1df0c 100644 --- a/code/modules/hydroponics/grown/tea_coffee.dm +++ b/code/modules/hydroponics/grown/tea_coffee.dm @@ -51,6 +51,7 @@ desc = "Long stocks with flowering tips that has a chemical to make feline attracted to it." species = "catnip" plantname = "Catnip Plant" + growthstages = 3 product = /obj/item/reagent_containers/food/snacks/grown/tea/catnip reagents_add = list("catnip" = 0.1, "vitamin" = 0.06, "teapowder" = 0.3) rarity = 50 From b474af1a66abeef7d43c019bf963bb32f1974749 Mon Sep 17 00:00:00 2001 From: EmeraldSundisk Date: Sun, 1 Sep 2019 09:58:22 -0700 Subject: [PATCH 084/324] Update DeltaStation2.dmm --- .../map_files/Deltastation/DeltaStation2.dmm | 32 ++++++------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index f02a4f4a31..cefc0eb1a5 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -114276,11 +114276,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -114288,6 +114283,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Chapel Maintenance"; + req_access_txt = "27" + }, /turf/open/floor/plasteel, /area/maintenance/port/aft) "dKE" = ( @@ -118987,7 +118986,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -119332,7 +119330,6 @@ /turf/closed/wall, /area/chapel/office) "dTx" = ( -/obj/structure/bodycontainer/morgue, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -119343,6 +119340,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/closet/crate/coffin, /turf/open/floor/plasteel/dark, /area/chapel/office) "dTy" = ( @@ -121768,7 +121766,6 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "dYv" = ( -/obj/structure/bodycontainer/morgue, /obj/structure/sign/poster/official/ian{ pixel_y = -32 }, @@ -121782,6 +121779,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/closet/crate/coffin, /turf/open/floor/plasteel/dark, /area/chapel/office) "dYw" = ( @@ -126476,6 +126474,7 @@ name = "Mass Driver" }, /obj/machinery/mass_driver{ + id = "chapelgun"; name = "Holy Driver" }, /turf/open/floor/plating, @@ -126706,7 +126705,7 @@ /area/science/mixing) "iyd" = ( /turf/open/space, -/area/space/nearstation) +/area/space) "iQh" = ( /obj/structure/bodycontainer/morgue{ dir = 1 @@ -126946,19 +126945,6 @@ }, /turf/open/floor/plasteel, /area/maintenance/port) -"kzR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Chapel Maintenance"; - req_access_txt = "27" - }, -/turf/open/floor/plasteel, -/area/chapel/office) "kLu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -160100,7 +160086,7 @@ dYu dZg jhK jhK -kzR +dZN owr mXJ gJj From c616c0e2883de06ea77e46b040de367b632a8852 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Mon, 2 Sep 2019 20:00:38 -0400 Subject: [PATCH 085/324] Update food_reagents.dm --- code/modules/reagents/chemistry/reagents/food_reagents.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index ace92936f7..5e68f84792 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -194,7 +194,7 @@ /datum/reagent/consumable/mustard name = "Mustard" id = "mustard" - description = "Mustard, mostly used on hotdogs, corndogs and burgards." + description = "Mustard, mostly used on hotdogs, corndogs and burgers." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#DDED26" // rgb: 221, 237, 38 taste_description = "mustard" From a3967b6f77d86d881e564bda8940fe862d287c46 Mon Sep 17 00:00:00 2001 From: Sishen Date: Tue, 3 Sep 2019 02:29:08 -0400 Subject: [PATCH 086/324] aaaaaaaa --- code/__DEFINES/combat.dm | 1 - code/modules/crafting/recipes.dm | 2 +- .../projectiles/ammunition/energy/laser.dm | 4 ++-- .../projectiles/guns/energy/minigun.dm | 9 ++++----- code/modules/projectiles/projectile/beams.dm | 2 ++ sound/weapons/gatling.ogg | Bin 62540 -> 69462 bytes 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index b16a937f3e..e31d2a278e 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -47,7 +47,6 @@ #define CLICK_CD_MELEE 8 #define CLICK_CD_RANGE 4 #define CLICK_CD_RAPID 2 -#define CLICK_CD_HYPERSPEED 1 #define CLICK_CD_CLICK_ABILITY 6 #define CLICK_CD_BREAKOUT 100 #define CLICK_CD_HANDCUFFED 10 diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 4b1bb960e0..91416b560b 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -136,7 +136,7 @@ /datum/crafting_recipe/minigun name = "Laser Minigun" result = /obj/item/minigunpack2 - reqs = list(/obj/item/gun/energy/laser = 3, + reqs = list(/obj/item/gun/energy/laser/carbine = 3, /obj/item/stack/sheet/plasteel = 5, /obj/item/stack/cable_coil = 30, /obj/item/stock_parts/cell/bluespace = 2) diff --git a/code/modules/projectiles/ammunition/energy/laser.dm b/code/modules/projectiles/ammunition/energy/laser.dm index 6f54782641..b14994cf25 100644 --- a/code/modules/projectiles/ammunition/energy/laser.dm +++ b/code/modules/projectiles/ammunition/energy/laser.dm @@ -71,6 +71,6 @@ /obj/item/ammo_casing/energy/laser/weak projectile_type = /obj/item/projectile/beam/weak/minigun - e_cost = 5 - delay = 0 + e_cost = 10 fire_sound = 'sound/weapons/gatling.ogg' + click_cooldown_override = 1 diff --git a/code/modules/projectiles/guns/energy/minigun.dm b/code/modules/projectiles/guns/energy/minigun.dm index f8ae3a4847..d903cda47c 100644 --- a/code/modules/projectiles/guns/energy/minigun.dm +++ b/code/modules/projectiles/guns/energy/minigun.dm @@ -12,7 +12,7 @@ var/obj/item/gun/energy/minigun/gun var/armed = 0 //whether the gun is attached, 0 is attached, 1 is the gun is wielded. var/overheat = 0 - var/overheat_max = 200 + var/overheat_max = 60 var/heat_diffusion = 5 /obj/item/minigunpack2/Initialize() @@ -97,6 +97,8 @@ icon_state = "minigun_spin" item_state = "minigun" flags_1 = CONDUCT_1 + force = 15 + recoil = 2 slowdown = 1 slot_flags = null w_class = WEIGHT_CLASS_HUGE @@ -105,7 +107,6 @@ burst_size = 2 automatic = 1 can_charge = 0 - firing_burst = FALSE selfcharge = EGUN_SELFCHARGE charge_tick = 2 charge_delay = 5 @@ -130,15 +131,13 @@ else qdel(src) -/obj/item/gun/energy/minigun/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 15) +/obj/item/gun/energy/minigun/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) if(ammo_pack) if(ammo_pack.overheat < ammo_pack.overheat_max) ammo_pack.overheat += burst_size ..() else to_chat(user, "The gun's heat sensor locked the trigger to prevent lens damage.") - if(user.a_intent == INTENT_HARM) - user.changeNext_move(CLICK_CD_HYPERSPEED) /obj/item/gun/energy/minigun/afterattack(atom/target, mob/living/user, flag, params) if(!ammo_pack || ammo_pack.loc != user) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 71dd748dac..e89794bacd 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -40,6 +40,8 @@ damage = 15 /obj/item/projectile/beam/weak/minigun + damage = 12.5 + armour_penetration = 40 /obj/item/projectile/beam/weak/minigun/Initialize() .=..() diff --git a/sound/weapons/gatling.ogg b/sound/weapons/gatling.ogg index ad3170e8ebbbe042c3b934d5710c742059ba1e63..0f8045560d934c79345d46ae59164e56700963b1 100644 GIT binary patch literal 69462 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 delta 58874 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 Kxa{8$=>GyK7$SWD From 5168f2b23351105a4409f987a29493dfeb972f3b Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Tue, 3 Sep 2019 07:37:37 -0400 Subject: [PATCH 087/324] Update granters.dm --- code/game/objects/items/granters.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index 20a3de4a0d..d2ecc0cd70 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -446,7 +446,7 @@ crafting_recipe_types = list(/datum/crafting_recipe/food/banana_split, /datum/crafting_recipe/food/root_float, /datum/crafting_recipe/food/bluecharrie_float, /datum/crafting_recipe/food/charrie_float) icon_state = "cooking_learing_ice" oneuse = FALSE - remarks = list("Looks like these would sell much better in a plasma fire...", "Using glass bowls rather then cones?", "Mixing soda and ice-cream?", "Tall glasses with of liquids and solids...") + remarks = list("Looks like these would sell much better in a plasma fire...", "Using glass bowls rather then cones?", "Mixing soda and ice-cream?", "Tall glasses with of liquids and solids...", "Just add a bit of icecream and charry on top?") //Later content when I have free time - Trilby Date:24-Aug-2019 @@ -456,4 +456,4 @@ crafting_recipe_types = list() icon_state = "cooking_learing_illegal" oneuse = FALSE - remarks = list() \ No newline at end of file + remarks = list() From 3f957ea488cf6ce27a3b390229374729164a0323 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Tue, 3 Sep 2019 10:43:29 -0400 Subject: [PATCH 088/324] grammer --- code/game/objects/items/granters.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index d2ecc0cd70..e4e16fbfb4 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -446,7 +446,7 @@ crafting_recipe_types = list(/datum/crafting_recipe/food/banana_split, /datum/crafting_recipe/food/root_float, /datum/crafting_recipe/food/bluecharrie_float, /datum/crafting_recipe/food/charrie_float) icon_state = "cooking_learing_ice" oneuse = FALSE - remarks = list("Looks like these would sell much better in a plasma fire...", "Using glass bowls rather then cones?", "Mixing soda and ice-cream?", "Tall glasses with of liquids and solids...", "Just add a bit of icecream and charry on top?") + remarks = list("Looks like these would sell much better in a plasma fire...", "Using glass bowls rather then cones?", "Mixing soda and ice-cream?", "Tall glasses with of liquids and solids...", "Just add a bit of icecream and cherry on top?") //Later content when I have free time - Trilby Date:24-Aug-2019 From 8394f2f1c70a81c3abb6bc301ce9e9c931fb474b Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Tue, 3 Sep 2019 10:44:59 -0400 Subject: [PATCH 089/324] grammer --- code/modules/food_and_drinks/food/snacks_frozen.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/food_and_drinks/food/snacks_frozen.dm b/code/modules/food_and_drinks/food/snacks_frozen.dm index 026f38b6a4..3988909b30 100644 --- a/code/modules/food_and_drinks/food/snacks_frozen.dm +++ b/code/modules/food_and_drinks/food/snacks_frozen.dm @@ -42,12 +42,12 @@ /obj/item/reagent_containers/food/snacks/cola_float name = "Root Beer Float" trash = /obj/item/reagent_containers/food/drinks/drinkingglass - desc = "A glass filled with cream, soda and ice-cream with a charrie on top." + desc = "A glass filled with cream, soda and ice-cream with a cherry on top." icon_state = "cola_float" bonus_reagents = list("nutriment" = 3, "vitamin" = 1) list_reagents = list("nutriment" = 3, "vitamin" = 2) filling_color = "#FFFACD" - tastes = list("ice cream" = 1, "space coal" = 1, "charries" = 1) + tastes = list("ice cream" = 1, "space coal" = 1, "cherries" = 1) foodtype = FRUIT | DAIRY | SUGAR /obj/item/reagent_containers/food/snacks/charrie_float @@ -69,7 +69,7 @@ bonus_reagents = list("nutriment" = 3, "vitamin" = 1) list_reagents = list("nutriment" = 3, "vitamin" = 2, "bluecherryshake" = 10) filling_color = "#FFFACD" - tastes = list("ice cream" = 1, "blue charries" = 1) + tastes = list("ice cream" = 1, "blue cherries" = 1) foodtype = FRUIT | DAIRY | SUGAR /obj/item/reagent_containers/food/snacks/spacefreezy From 7476f117da35080f7fc6da26e7e52ff37df7e0c8 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Tue, 3 Sep 2019 10:45:33 -0400 Subject: [PATCH 090/324] pie --- code/modules/food_and_drinks/food/snacks_pie.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm index 5114aa7333..bc66d353e1 100644 --- a/code/modules/food_and_drinks/food/snacks_pie.dm +++ b/code/modules/food_and_drinks/food/snacks_pie.dm @@ -327,7 +327,7 @@ /obj/item/reagent_containers/food/snacks/pie/peachpie name = "peach pie" - desc = "A pei with peach filling." + desc = "A pie with peach filling." icon_state = "strawberrypie" bonus_reagents = list("nutriment" = 5, "vitamin" = 6, "peachjuice" = 15) tastes = list("peach" = 1, "pie" = 1) From 5eba0d55f9ba976e35fc1e4cf8f777a556610e71 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Tue, 3 Sep 2019 11:09:03 -0400 Subject: [PATCH 091/324] Update trash.dm --- code/game/objects/items/trash.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index 5cb7e18011..37ab948332 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -45,6 +45,7 @@ resistance_flags = NONE /obj/item/trash/plate/alt + desc = "Still some dip left. Sadly still just trash..." icon_state = "plate1" /obj/item/trash/pistachios From 74fc240f0e92eebc6de305915a40fd828145e282 Mon Sep 17 00:00:00 2001 From: TrilbySpaceClone Date: Tue, 3 Sep 2019 11:13:11 -0400 Subject: [PATCH 092/324] weh --- icons/obj/food/containers.dmi | Bin 11309 -> 11417 bytes icons/obj/food/food.dmi | Bin 64034 -> 63743 bytes icons/obj/janitor.dmi | Bin 24146 -> 24465 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/food/containers.dmi b/icons/obj/food/containers.dmi index 51f0cc6d6cc1001124b2b9304b78781049c6d534..d3bdc1b1ea3e77b3d874b35e124ead385eee8125 100644 GIT binary patch literal 11417 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 bok$@rJA5AVz+VEm1`JYD(o#eyScUyBIRAYi diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index 4fc9910c45906d3dd4f51308934127978233ca7d..75df4b5cc5ecc8b7aadf44aa25db699500a189c7 100644 GIT binary patch delta 46111 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%0D0EzLc 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

    mPu;toozv?~g9Jn)dVH=le(Nmwat;bkg5;EL?Q| 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 E4=VYo-~a#s delta 46405 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

    G8)_;87cu#Z2qF3Uu5Y3N_hl^{WB%jK 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 Y-|NJoo_qN{836q$$-S1XkTwbWKf*wz3;+NC diff --git a/icons/obj/janitor.dmi b/icons/obj/janitor.dmi index 556da9f7ad1ce837f8f68ab53ba7c16a980bb061..f96bd66a451935d24fb58d0623720bde6844dc4a 100644 GIT binary patch literal 24465 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 From eee1ccbe2ca72dbdbe295f95ee2fad9afbdef4ae Mon Sep 17 00:00:00 2001 From: Alonefromhell Date: Tue, 27 Aug 2019 22:12:00 +0200 Subject: [PATCH 093/324] merge oracle ui from kepler --- code/controllers/subsystem/assets.dm | 12 +- code/modules/paperwork/paper.dm | 54 ++- code/modules/recycling/disposal/bin.dm | 50 ++- .../code/modules/oracle_ui/README.md | 233 ++++++++++++ .../code/modules/oracle_ui/assets.dm | 9 + .../code/modules/oracle_ui/hookup_procs.dm | 44 +++ .../code/modules/oracle_ui/oracle_ui.dm | 134 +++++++ .../code/modules/oracle_ui/themed.dm | 82 ++++ .../oracle_ui/content/disposal_bin/index.html | 27 ++ .../html/oracle_ui/editor_tool.html | 103 +++++ .../html/oracle_ui/themes/nano/index.html | 19 + .../oracle_ui/themes/nano/sui-nano-common.css | 353 ++++++++++++++++++ .../oracle_ui/themes/nano/sui-nano-common.js | 47 +++ .../themes/nano/sui-nano-jquery.min.js | 4 + tgstation.dme | 4 + 15 files changed, 1141 insertions(+), 34 deletions(-) create mode 100644 modular_kepler/code/modules/oracle_ui/README.md create mode 100644 modular_kepler/code/modules/oracle_ui/assets.dm create mode 100644 modular_kepler/code/modules/oracle_ui/hookup_procs.dm create mode 100644 modular_kepler/code/modules/oracle_ui/oracle_ui.dm create mode 100644 modular_kepler/code/modules/oracle_ui/themed.dm create mode 100644 modular_kepler/html/oracle_ui/content/disposal_bin/index.html create mode 100644 modular_kepler/html/oracle_ui/editor_tool.html create mode 100644 modular_kepler/html/oracle_ui/themes/nano/index.html create mode 100644 modular_kepler/html/oracle_ui/themes/nano/sui-nano-common.css create mode 100644 modular_kepler/html/oracle_ui/themes/nano/sui-nano-common.js create mode 100644 modular_kepler/html/oracle_ui/themes/nano/sui-nano-jquery.min.js diff --git a/code/controllers/subsystem/assets.dm b/code/controllers/subsystem/assets.dm index 7285298283..7b6554bd3f 100644 --- a/code/controllers/subsystem/assets.dm +++ b/code/controllers/subsystem/assets.dm @@ -6,7 +6,17 @@ SUBSYSTEM_DEF(assets) var/list/preload = list() /datum/controller/subsystem/assets/Initialize(timeofday) - for(var/type in typesof(/datum/asset)) + + var/list/priority_assets = list( + /datum/asset/simple/oui_theme_nano, + /datum/asset/simple/goonchat + ) + + for(var/type in priority_assets) + var/datum/asset/A = new type() + A.register() + + for(var/type in typesof(/datum/asset) - (priority_assets | list(/datum/asset, /datum/asset/simple))) var/datum/asset/A = type if (type != initial(A._abstract)) get_asset_datum(type) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 37877ffb09..a342b23c24 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -31,6 +31,7 @@ var/spam_flag = 0 var/contact_poison // Reagent ID to transfer on contact var/contact_poison_volume = 0 + var/datum/oracle_ui/ui = null /obj/item/paper/pickup(user) @@ -40,16 +41,40 @@ if(!istype(G) || G.transfer_prints) H.reagents.add_reagent(contact_poison,contact_poison_volume) contact_poison = null + ui.check_view_all() ..() +/obj/item/paper/dropped(mob/user) + ui.check_view(user) + return ..() + /obj/item/paper/Initialize() . = ..() pixel_y = rand(-8, 8) pixel_x = rand(-9, 9) + ui = new /datum/oracle_ui(src, 420, 600, get_asset_datum(/datum/asset/spritesheet/simple/paper)) + ui.can_resize = FALSE update_icon() updateinfolinks() +/obj/item/paper/oui_getcontent(mob/target) + if(!target.is_literate()) + return "[name][stars(info)]


    [stamps]" + else if(istype(target.get_active_held_item(), /obj/item/pen) | istype(target.get_active_held_item(), /obj/item/toy/crayon)) + return "[name][info_links]
    [stamps]" + else + return "[name][info]
    [stamps]" + +/obj/item/paper/oui_canview(mob/target) + if(check_rights_for(target.client, R_FUN)) //Allows admins to view faxes + return TRUE + if(isAI(target)) + var/mob/living/silicon/ai/ai = target + return get_dist(src, ai.current) < 2 + if(iscyborg(target)) + return get_dist(src, target) < 2 + return ..() /obj/item/paper/update_icon() @@ -65,20 +90,13 @@ /obj/item/paper/examine(mob/user) ..() to_chat(user, "Alt-click to fold it.") - - var/datum/asset/assets = get_asset_datum(/datum/asset/spritesheet/simple/paper) - assets.send(user) - - if(in_range(user, src) || isobserver(user)) - if(user.is_literate()) - user << browse("[name][info]
    [stamps]", "window=[name]") - onclose(user, "[name]") - else - user << browse("[name][stars(info)]
    [stamps]", "window=[name]") - onclose(user, "[name]") + if(oui_canview(user)) + ui.render(user) else to_chat(user, "You're too far away to read it!") +/obj/item/paper/proc/show_content(mob/user) + user.examinate(src) /obj/item/paper/verb/rename() set name = "Rename paper" @@ -98,7 +116,7 @@ if((loc == usr && usr.stat == CONSCIOUS)) name = "paper[(n_name ? text("- '[n_name]'") : null)]" add_fingerprint(usr) - + ui.render_all() /obj/item/paper/suicide_act(mob/user) user.visible_message("[user] scratches a grid on [user.p_their()] wrist with the paper! It looks like [user.p_theyre()] trying to commit sudoku...") @@ -108,7 +126,7 @@ spam_flag = FALSE /obj/item/paper/attack_self(mob/user) - user.examinate(src) + show_content(user) if(rigged && (SSevents.holidays && SSevents.holidays[APRIL_FOOLS])) if(!spam_flag) spam_flag = TRUE @@ -123,11 +141,9 @@ else //cyborg or AI not seeing through a camera dist = get_dist(src, user) if(dist < 2) - usr << browse("[name][info]
    [stamps]", "window=[name]") - onclose(usr, "[name]") + show_content(user) else - usr << browse("[name][stars(info)]
    [stamps]", "window=[name]") - onclose(usr, "[name]") + to_chat(user, "You can't quite see it.") /obj/item/paper/proc/addtofield(id, text, links = 0) @@ -173,6 +189,7 @@ for(var/i in 1 to min(fields, 15)) addtofield(i, "
    write", 1) info_links = info_links + "write" + ui.render_all() /obj/item/paper/proc/clearpaper() @@ -289,7 +306,7 @@ if(istype(P, /obj/item/pen) || istype(P, /obj/item/toy/crayon)) if(user.is_literate()) - user << browse("[name][info_links]
    [stamps]", "window=[name]") + show_content(user) return else to_chat(user, "You don't know how to read or write.") @@ -312,6 +329,7 @@ add_overlay(stampoverlay) to_chat(user, "You stamp the paper with your rubber stamp.") + ui.render_all() if(P.is_hot()) if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(10)) diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index 871fd32b16..082b1a7d11 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -264,6 +264,13 @@ name = "disposal unit" desc = "A pneumatic waste disposal unit." icon_state = "disposal" + var/datum/oracle_ui/themed/nano/ui + +/obj/machinery/disposal/bin/Initialize(mapload, obj/structure/disposalconstruct/make_from) + . = ..() + ui = new /datum/oracle_ui/themed/nano(src, 330, 190, "disposal_bin") + ui.auto_refresh = TRUE + ui.can_resize = FALSE // attack by item places it in to disposal /obj/machinery/disposal/bin/attackby(obj/item/I, mob/user, params) @@ -275,32 +282,43 @@ STR.remove_from_storage(O,src) T.update_icon() update_icon() + ui.soft_update_fields() else + ui.soft_update_fields() return ..() // handle machine interaction -/obj/machinery/disposal/bin/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ - datum/tgui/master_ui = null, datum/ui_state/state = GLOB.notcontained_state) +/obj/machinery/disposal/bin/ui_interact(mob/user, state) if(stat & BROKEN) return - ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) - if(!ui) - ui = new(user, src, ui_key, "disposal_unit", name, 300, 200, master_ui, state) - ui.open() + if(user.loc == src) + to_chat(user, "You cannot reach the controls from inside!") + return + ui.render(user) -/obj/machinery/disposal/bin/ui_data(mob/user) +/obj/machinery/disposal/bin/oui_canview(mob/user) + if(user.loc == src) + return FALSE + if(stat & BROKEN) + return FALSE + if(Adjacent(user)) + return TRUE + return ..() + + +/obj/machinery/disposal/bin/oui_data(mob/user) var/list/data = list() - data["flush"] = flush - data["full_pressure"] = full_pressure - data["pressure_charging"] = pressure_charging - data["panel_open"] = panel_open - var/per = CLAMP(100* air_contents.return_pressure() / (SEND_PRESSURE), 0, 100) - data["per"] = round(per, 1) + data["flush"] = flush ? ui.act("Disengage", user, "handle-0", class="active") : ui.act("Engage", user, "handle-1") + data["full_pressure"] = full_pressure ? "Ready" : (pressure_charging ? "Pressurizing" : "Off") + data["pressure_charging"] = pressure_charging ? ui.act("Turn Off", user, "pump-0", class="active", disabled=full_pressure) : ui.act("Turn On", user, "pump-1", disabled=full_pressure) + var/per = full_pressure ? 100 : CLAMP(100* air_contents.return_pressure() / (SEND_PRESSURE), 0, 99) + data["per"] = "[round(per, 1)]%" + data["contents"] = ui.act("Eject Contents", user, "eject", disabled=contents.len < 1) data["isai"] = isAI(user) return data -/obj/machinery/disposal/bin/ui_act(action, params) +/obj/machinery/disposal/bin/oui_act(mob/user, action, list/params) if(..()) return @@ -327,6 +345,7 @@ if("eject") eject() . = TRUE + ui.soft_update_fields() /obj/machinery/disposal/bin/hitby(atom/movable/AM) @@ -346,6 +365,7 @@ full_pressure = FALSE pressure_charging = TRUE update_icon() + ui.soft_update_fields() /obj/machinery/disposal/bin/update_icon() cut_overlays() @@ -389,7 +409,7 @@ do_flush() flush_count = 0 - updateDialog() + ui.soft_update_fields() if(flush && air_contents.return_pressure() >= SEND_PRESSURE) // flush can happen even without power do_flush() diff --git a/modular_kepler/code/modules/oracle_ui/README.md b/modular_kepler/code/modules/oracle_ui/README.md new file mode 100644 index 0000000000..8aaf73f513 --- /dev/null +++ b/modular_kepler/code/modules/oracle_ui/README.md @@ -0,0 +1,233 @@ +# `/datum/oracle_ui` + +This datum is a replacement for tgui which does not use any Node.js dependencies, and works entirely through raw HTML, JS and CSS. It's designed to be reasonably easy to port something from tgui to oracle_ui. + +### How to create a UI + +For this example, we're going to port the disposals bin from tgui to oracle_ui. + +#### Step 1 + +In order to create a UI, you will first need to create an instance of `/datum/oracle_ui` or one of its subclasses, in this case `/datum/oracle_ui/themed/nano`. + +You need to pass in `src`, the width of the window, the height of the window, and the template to render from. You can optionally set some flags to disallow window resizing and whether to automatically refresh the UI. + +`code/modules/recycling/disposal-unit.dm` +```dm +/obj/machinery/disposal/bin/Initialize(mapload, obj/structure/disposalconstruct/make_from) + . = ..() + ui = new /datum/oracle_ui/themed/nano(src, 330, 190, "disposal_bin") + ui.auto_refresh = TRUE + ui.can_resize = FALSE +``` + +#### Step 2 + +You will now need to make a template in `modular_kepler/html/oracle_ui/content/{template_name}`. + +Values defined as `@{value}` will get replaced at runtime by oracle_ui. + +`modular_kepler/html/oracle_ui/content/disposal_bin/index.html` +```html +
    +
    + State: +
    @{full_pressure}
    +
    +
    + Pressure: +
    +
    +
    +
    @{per}
    +
    +
    +
    +
    + Handle: +
    @{flush}
    +
    +
    + Eject: +
    @{contents}
    +
    +
    + Compressor: +
    @{pressure_charging}
    +
    +
    +``` + +#### Step 3 + +Now you need to implement the methods that provide data to oracle_ui. `oui_data` can be adapted from the `ui_data` proc that tgui uses. + +The `act` proc generates a hyperlink that will result in `oui_act` getting called on your object when clicked. The `class` argument defines a css class to be added to the hyperlink, and disabled determines whether the hyperlink will be disabled or not. + +Calling `soft_update_fields` will result in the UI being updated on all clients, which is useful when the object changes state. + +`code/modules/recycling/disposal-unit.dm` +```dm +/obj/machinery/disposal/bin/oui_data(mob/user) + var/list/data = list() + data["flush"] = flush ? ui.act("Disengage", user, "handle-0", class="active") : ui.act("Engage", user, "handle-1") + data["full_pressure"] = full_pressure ? "Ready" : (pressure_charging ? "Pressurizing" : "Off") + data["pressure_charging"] = pressure_charging ? ui.act("Turn Off", user, "pump-0", class="active", disabled=full_pressure) : ui.act("Turn On", user, "pump-1", disabled=full_pressure) + var/per = full_pressure ? 100 : Clamp(100* air_contents.return_pressure() / (SEND_PRESSURE), 0, 99) + data["per"] = "[round(per, 1)]%" + data["contents"] = ui.act("Eject Contents", user, "eject", disabled=contents.len < 1) + data["isai"] = isAI(user) + return data +/obj/machinery/disposal/bin/oui_act(mob/user, action, list/params) + if(..()) + return + switch(action) + if("handle-0") + flush = FALSE + update_icon() + . = TRUE + if("handle-1") + if(!panel_open) + flush = TRUE + update_icon() + . = TRUE + if("pump-0") + if(pressure_charging) + pressure_charging = FALSE + update_icon() + . = TRUE + if("pump-1") + if(!pressure_charging) + pressure_charging = TRUE + update_icon() + . = TRUE + if("eject") + eject() + . = TRUE + ui.soft_update_fields() +``` + +#### Step 4 + +You now need to hook in and ensure oracle_ui is invoked upon clicking. `render` should be used to open the UI for a user, typically on click. + +`code/modules/recycling/disposal-unit.dm` +```dm +/obj/machinery/disposal/bin/ui_interact(mob/user, state) + if(stat & BROKEN) + return + if(user.loc == src) + to_chat(user, "You cannot reach the controls from inside!") + return + ui.render(user) +``` + +#### Done + +![gif](https://user-images.githubusercontent.com/202160/37561879-1bb9179e-2a52-11e8-902c-80e6e6df7204.gif) + +You should have a functional UI at this point. Some additional odds and ends can be discovered throughout `code/modules/recycling/disposal-unit.dm`. For a full diff of the changes made to it, refer to [the original pull request on GitHub](https://github.com/OracleStation/OracleStation/pull/702/files#diff-4b6c20ec7d37222630e7524d9577e230). + +### API Reference + +#### `/datum/oracle_ui` + +The main datum which handles the UI. + +##### `get_content(mob/target)` +Returns the HTML that should be displayed for a specified target mob. Calls `oui_getcontent` on the datasource to get the return value. *This proc is not used in the themed subclass.* + +##### `can_view(mob/target)` +Returns whether the specified target mob can view the UI. Calls `oui_canview` on the datasource to get the return value. + +##### `test_viewer(mob/target, updating)` +Tests whether the client is valid and can view the UI. If updating is TRUE, checks to see if they still have the UI window open. + +##### `render(mob/target, updating = FALSE)` +Opens the UI for a target mob, sending HTML. If updating is TRUE, will only do it to clients which still have the window open. + +##### `render_all()` +Does the above, but for all viewers and with updating set to TRUE. + +##### `close(mob/target)` +Closes the UI for the specified target mob. + +##### `close_all()` +Does the above, but for all viewers. + +##### `check_view(mob/target)` +Checks if the specified target mob can view the UI, and if they can't closes their UI + +##### `check_view_all()` +Does the above, but for all viewers. + +##### `call_js(mob/target, js_func, list/parameters = list())` +Invokes `js_func` in the UI of the specified target mob with the specified parameters. + +##### `call_js_all(js_func, list/parameters = list()))` +Does the above, but for all viewers. + +##### `steal_focus(mob/target)` +Causes the UI to steal focus for the specified target mob. + +##### `steal_focus_all()` +Does the above, but for all viewers. + +##### `flash(mob/target, times = -1)` +Causes the UI to flash for the specified target mob the specified number of times, the default keeps the element flashing until focused. + +##### `flash_all()` +Does the above, but for all viewers. + +##### `href(mob/user, action, list/parameters = list())` +Generates a href for the specified user which will invoke `oui_act` on the datasource with the specified action and parameters. + +#### `/datum/oracle_ui/themed` + +A subclass which supports templating and theming. + +##### `get_file(path)` +Loads a file from disk and returns the contents. Caches files loaded from disk for you. + +##### `get_content_file(filename)` +Loads a file from the current content folder and returns the contents. + +##### `get_themed_file(filename)` +Loads a file from the current theme folder and returns the contents. + +##### `process_template(template, variables)` +Processes a template and populates it with the provided variables. + +##### `get_inner_content(mob/target)` +Returns the templated content to be inserted into the main template for the specified target mob. + +##### `soft_update_fields()` +For all viewers, updates the fields in the template via the `updateFields` javaScript function. + +##### `soft_update_all()` +For all viewers, updates the content body in the template via the `replaceContent` javaScript function. + +##### `change_page(var/newpage)` +Changes the template to use to draw the page and forces an update to all viewers + +##### `act(label, mob/user, action, list/parameters = list(), class = "", disabled = FALSE` +Returns a fully formatted hyperlink for the specified user. `label` will be the hyperlink label, `action` and `parameters` are what will be passed to `oui_act`, `class` is any CSS classes to apply to the hyperlink and `disabled` will disable the hyperlink. + +#### `/datum` + +Functions built into all objects to support oracle_ui. There are default implementations for most major superclasses. + +##### `oui_canview(mob/user)` +Returns whether the specified user view the UI at this time. + +##### `oui_getcontent(mob/user)` +Returns the raw HTML to be sent to the specified user. *This proc is not used in the themed subclass of oracle_ui.* + +##### `oui_data(mob/user)` +Returns templating data for the specified user. *This proc is only used in the themed subclass of oracle_ui.* + +##### `oui_data_debug(mob/user)` +Returns the above, but JSON-encoded and escaped, for copy pasting into the web IDE. *This proc is only used for debugging purposes.* + +##### `oui_act(mob/user, action, list/params)` +Called when a hyperlink is clicked in the UI. diff --git a/modular_kepler/code/modules/oracle_ui/assets.dm b/modular_kepler/code/modules/oracle_ui/assets.dm new file mode 100644 index 0000000000..e68fce38a7 --- /dev/null +++ b/modular_kepler/code/modules/oracle_ui/assets.dm @@ -0,0 +1,9 @@ +/datum/asset/simple/oui_theme_nano + assets = list( + // JavaScript + "sui-nano-common.js" = 'modular_kepler/html/oracle_ui/themes/nano/sui-nano-common.js', + "sui-nano-jquery.min.js" = 'modular_kepler/html/oracle_ui/themes/nano/sui-nano-jquery.min.js', + // Stylesheets + "sui-nano-common.css" = 'modular_kepler/html/oracle_ui/themes/nano/sui-nano-common.css', + ) + \ No newline at end of file diff --git a/modular_kepler/code/modules/oracle_ui/hookup_procs.dm b/modular_kepler/code/modules/oracle_ui/hookup_procs.dm new file mode 100644 index 0000000000..e6038744c1 --- /dev/null +++ b/modular_kepler/code/modules/oracle_ui/hookup_procs.dm @@ -0,0 +1,44 @@ +/datum/proc/oui_canview(mob/user) + return TRUE + +/datum/proc/oui_getcontent(mob/user) + return "Default Implementation" + +/datum/proc/oui_canuse(mob/user) + if(isobserver(user) && !user.has_unlimited_silicon_privilege) + return FALSE + return oui_canview(user) + +/datum/proc/oui_data(mob/user) + return list() + +/datum/proc/oui_data_debug(mob/user) + return html_encode(json_encode(oui_data(user))) + +/datum/proc/oui_act(mob/user, action, list/params) + // No Implementation + +/atom/oui_canview(mob/user) + if(isobserver(user)) + return TRUE + if(user.incapacitated()) + return FALSE + if(isturf(src.loc) && Adjacent(user)) + return TRUE + return FALSE + +/obj/item/oui_canview(mob/user) + if(src.loc == user) + return src in user.held_items + return ..() + +/obj/machinery/oui_canview(mob/user) + if(user.has_unlimited_silicon_privilege) + return TRUE + if(!can_interact()) + return FALSE + if(iscyborg(user)) + return can_see(user, src, 7) + if(isAI(user)) + return GLOB.cameranet.checkTurfVis(get_turf_pixel(src)) + return ..() diff --git a/modular_kepler/code/modules/oracle_ui/oracle_ui.dm b/modular_kepler/code/modules/oracle_ui/oracle_ui.dm new file mode 100644 index 0000000000..5e8d6b9c7b --- /dev/null +++ b/modular_kepler/code/modules/oracle_ui/oracle_ui.dm @@ -0,0 +1,134 @@ +/datum/oracle_ui + var/width = 512 + var/height = 512 + var/can_close = TRUE + var/can_minimize = FALSE + var/can_resize = TRUE + var/titlebar = TRUE + var/window_id = null + var/viewers[0] + var/auto_check_view = TRUE + var/auto_refresh = FALSE + var/atom/datasource = null + var/datum/asset/assets = null + +/datum/oracle_ui/New(atom/n_datasource, n_width = 512, n_height = 512, n_assets = null) + datasource = n_datasource + window_id = REF(src) + width = n_width + height = n_height + +/datum/oracle_ui/Destroy() + close_all() + if(src.datum_flags & DF_ISPROCESSING) + STOP_PROCESSING(SSobj, src) + return ..() + +/datum/oracle_ui/process() + if(auto_check_view) + check_view_all() + if(auto_refresh) + render_all() + +/datum/oracle_ui/proc/get_content(mob/target) + return call(datasource, "oui_getcontent")(target) + +/datum/oracle_ui/proc/can_view(mob/target) + return call(datasource, "oui_canview")(target) + +/datum/oracle_ui/proc/test_viewer(mob/target, updating) + //If the target is null or does not have a client, remove from viewers and return + if(!target | !target.client | !can_view(target)) + viewers -= target + if(viewers.len < 1 && (src.datum_flags & DF_ISPROCESSING)) + STOP_PROCESSING(SSobj, src) //No more viewers, stop polling + close(target) + return FALSE + //If this is an update, and they have closed the window, remove from viewers and return + if(updating && winget(target, window_id, "is-visible") != "true") + viewers -= target + if(viewers.len < 1 && (src.datum_flags & DF_ISPROCESSING)) + STOP_PROCESSING(SSobj, src) //No more viewers, stop polling + return FALSE + return TRUE + +/datum/oracle_ui/proc/render(mob/target, updating = FALSE) + set waitfor = FALSE //Makes this an async call + if(!can_view(target)) + return + //Check to see if they have the window open still if updating + if(updating && !test_viewer(target, updating)) + return + //Send assets + if(!updating && assets) + assets.send(target) + //Add them to the viewers if they aren't there already + viewers |= target + if(!(src.datum_flags & DF_ISPROCESSING) && (auto_refresh | auto_check_view)) + START_PROCESSING(SSobj, src) //Start processing to poll for viewability + //Send the content + if(updating) + target << output(get_content(target), "[window_id].browser") + else + target << browse(get_content(target), "window=[window_id];size=[width]x[height];can_close=[can_close];can_minimize=[can_minimize];can_resize=[can_resize];titlebar=[titlebar];focus=false;") + steal_focus(target) + +/datum/oracle_ui/proc/render_all() + for(var/viewer in viewers) + render(viewer, TRUE) + +/datum/oracle_ui/proc/close(mob/target) + if(target && target.client) + target << browse(null, "window=[window_id]") + +/datum/oracle_ui/proc/close_all() + for(var/viewer in viewers) + close(viewer) + viewers = list() + +/datum/oracle_ui/proc/check_view_all() + for(var/viewer in viewers) + check_view(viewer) + +/datum/oracle_ui/proc/check_view(mob/target) + set waitfor = FALSE //Makes this an async call + if(!test_viewer(target, TRUE)) + close(target) + +/datum/oracle_ui/proc/call_js(mob/target, js_func, list/parameters = list()) + set waitfor = FALSE //Makes this an async call + if(!test_viewer(target, TRUE)) + return + target << output(list2params(parameters),"[window_id].browser:[js_func]") + +/datum/oracle_ui/proc/call_js_all(js_func, list/parameters = list()) + for(var/viewer in viewers) + call_js(viewer, js_func, parameters) + +/datum/oracle_ui/proc/steal_focus(mob/target) + set waitfor = FALSE //Makes this an async call + winset(target, "[window_id]","focus=true") + +/datum/oracle_ui/proc/steal_focus_all() + for(var/viewer in viewers) + steal_focus(viewer) + +/datum/oracle_ui/proc/flash(mob/target, times = -1) + set waitfor = FALSE //Makes this an async call + winset(target, "[window_id]","flash=[times]") + +/datum/oracle_ui/proc/flash_all(times = -1) + for(var/viewer in viewers) + flash(viewer, times) + +/datum/oracle_ui/proc/href(mob/user, action, list/parameters = list()) + var/params_string = replacetext(list2params(parameters),"&",";") + return "?src=[REF(src)];sui_action=[action];sui_user=[REF(user)];[params_string]" + +/datum/oracle_ui/Topic(href, parameters) + var/action = parameters["sui_action"] + var/mob/current_user = locate(parameters["sui_user"]) + if(!call(datasource, "oui_canuse")(current_user)) + return + if(datasource) + call(datasource, "oui_act")(current_user, action, parameters); diff --git a/modular_kepler/code/modules/oracle_ui/themed.dm b/modular_kepler/code/modules/oracle_ui/themed.dm new file mode 100644 index 0000000000..9bf31bd1da --- /dev/null +++ b/modular_kepler/code/modules/oracle_ui/themed.dm @@ -0,0 +1,82 @@ +/datum/oracle_ui/themed + var/theme = "" + var/content_root = "" + var/current_page = "index.html" + var/root_template = "" + +/datum/oracle_ui/themed/New(atom/n_datasource, n_width = 512, n_height = 512, n_content_root = "") + root_template = get_themed_file("index.html") + content_root = n_content_root + return ..(n_datasource, n_width, n_height, get_asset_datum(/datum/asset/simple/oui_theme_nano)) + +/datum/oracle_ui/themed/process() + if(auto_check_view) + check_view_all() + if(auto_refresh) + soft_update_fields() + +GLOBAL_LIST_EMPTY(oui_template_variables) +GLOBAL_LIST_EMPTY(oui_file_cache) + +/datum/oracle_ui/themed/proc/get_file(path) + if(GLOB.oui_file_cache[path]) + return GLOB.oui_file_cache[path] + else if(fexists(path)) + var/data = file2text(path) + GLOB.oui_file_cache[path] = data + return data + else + var/errormsg = "MISSING PATH '[path]'" +#ifndef UNIT_TESTS + log_world(errormsg) //Because Travis absolutely hates these procs +#endif + return errormsg + +/datum/oracle_ui/themed/proc/get_content_file(filename) + return get_file("./modular_kepler/html/oracle_ui/content/[content_root]/[filename]") + +/datum/oracle_ui/themed/proc/get_themed_file(filename) + return get_file("./modular_kepler/html/oracle_ui/themes/[theme]/[filename]") + +/datum/oracle_ui/themed/proc/process_template(template, variables) + var/regex/pattern = regex("\\@\\{(\\w+)\\}","gi") + GLOB.oui_template_variables = variables + var/replaced = pattern.Replace(template, /proc/oui_process_template_replace) + GLOB.oui_template_variables = null + return replaced + +/proc/oui_process_template_replace(match, group1) + var/value = GLOB.oui_template_variables[group1] + return "[value]" + +/datum/oracle_ui/themed/proc/get_inner_content(mob/target) + var/list/data = call(datasource, "oui_data")(target) + return process_template(get_content_file(current_page), data) + +/datum/oracle_ui/themed/get_content(mob/target) + var/list/template_data = list("title" = datasource.name, "body" = get_inner_content(target)) + return process_template(root_template, template_data) + +/datum/oracle_ui/themed/proc/soft_update_fields() + for(var/viewer in viewers) + var/json = json_encode(call(datasource, "oui_data")(viewer)) + call_js(viewer, "updateFields", list(json)) + +/datum/oracle_ui/themed/proc/soft_update_all() + for(var/viewer in viewers) + call_js(viewer, "replaceContent", list(get_inner_content(viewer))) + +/datum/oracle_ui/themed/proc/change_page(newpage) + if(newpage == current_page) + return + current_page = newpage + render_all() + +/datum/oracle_ui/themed/proc/act(label, mob/user, action, list/parameters = list(), class = "", disabled = FALSE) + if(disabled) + return "[label]" + else + return "[label]" + +/datum/oracle_ui/themed/nano + theme = "nano" diff --git a/modular_kepler/html/oracle_ui/content/disposal_bin/index.html b/modular_kepler/html/oracle_ui/content/disposal_bin/index.html new file mode 100644 index 0000000000..8f7713b53c --- /dev/null +++ b/modular_kepler/html/oracle_ui/content/disposal_bin/index.html @@ -0,0 +1,27 @@ +
    +
    + State: +
    @{full_pressure}
    +
    +
    + Pressure: +
    +
    +
    +
    @{per}
    +
    +
    +
    +
    + Handle: +
    @{flush}
    +
    +
    + Eject: +
    @{contents}
    +
    +
    + Compressor: +
    @{pressure_charging}
    +
    +
    \ No newline at end of file diff --git a/modular_kepler/html/oracle_ui/editor_tool.html b/modular_kepler/html/oracle_ui/editor_tool.html new file mode 100644 index 0000000000..e0ce75bb29 --- /dev/null +++ b/modular_kepler/html/oracle_ui/editor_tool.html @@ -0,0 +1,103 @@ + + + + + + OracleUI IDE + + + +
    +

    Content Template:

    + +
    +
    +

    Data:

    + +
    +
    +

    Output:

    + +
    + + + diff --git a/modular_kepler/html/oracle_ui/themes/nano/index.html b/modular_kepler/html/oracle_ui/themes/nano/index.html new file mode 100644 index 0000000000..388f6e4ce4 --- /dev/null +++ b/modular_kepler/html/oracle_ui/themes/nano/index.html @@ -0,0 +1,19 @@ + + + + + + @{title} + + + + + +
    +
    @{title}
    +
    + @{body} +
    +
    + + diff --git a/modular_kepler/html/oracle_ui/themes/nano/sui-nano-common.css b/modular_kepler/html/oracle_ui/themes/nano/sui-nano-common.css new file mode 100644 index 0000000000..481b81c3e3 --- /dev/null +++ b/modular_kepler/html/oracle_ui/themes/nano/sui-nano-common.css @@ -0,0 +1,353 @@ +body +{ + padding: 0; + margin: 0; + background-color: #272727; + font-size: 12px; + color: #ffffff; + line-height: 170%; + cursor: default; + -moz-user-select: none; + -ms-user-select: none; +} + +hr +{ + background-color: #40628a; + height: 1px; +} + +a, a:link, a:visited, a:active, .linkOn, .linkOff +{ + color: #ffffff; + text-decoration: none; + background: #40628a; + border: 1px solid #161616; + padding: 1px 4px 1px 4px; + margin: 0 2px 0 0; + cursor:default; +} + +a:hover +{ + color: #40628a; + background: #ffffff; +} + +a.white, a.white:link, a.white:visited, a.white:active +{ + color: #40628a; + text-decoration: none; + background: #ffffff; + border: 1px solid #161616; + padding: 1px 4px 1px 4px; + margin: 0 2px 0 0; + cursor:default; +} + +a.white:hover +{ + color: #ffffff; + background: #40628a; +} + +.active, a.active:link, a.active:visited, a.active:active, a.active:hover +{ + color: #ffffff; + background: #2f943c; + border-color: #24722e; +} + +.disabled, a.disabled:link, a.disabled:visited, a.disabled:active, a.disabled:hover +{ + color: #ffffff; + background: #999999; + border-color: #666666; +} + +a.icon, .linkOn.icon, .linkOff.icon +{ + position: relative; + padding: 1px 4px 2px 20px; +} + +a.icon img, .linkOn.icon img +{ + position: absolute; + top: 0; + left: 0; + width: 18px; + height: 18px; +} + +ul +{ + padding: 4px 0 0 10px; + margin: 0; + list-style-type: none; +} + +li +{ + padding: 0 0 2px 0; +} + +img, a img +{ + border-style:none; +} + +h1, h2, h3, h4, h5, h6 +{ + margin: 0; + padding: 16px 0 8px 0; + color: #517087; +} + +h1 +{ + font-size: 15px; +} + +h2 +{ + font-size: 14px; +} + +h3 +{ + font-size: 13px; +} + +h4 +{ + font-size: 12px; +} + +.uiWrapper +{ + + width: 100%; + height: 100%; +} + +.uiTitle +{ + clear: both; + padding: 6px 8px 6px 8px; + border-bottom: 2px solid #161616; + background: #383838; + color: #98B0C3; + font-size: 16px; +} + +.uiTitle.icon +{ + padding: 6px 8px 6px 42px; + background-position: 2px 50%; + background-repeat: no-repeat; +} + +.uiContent +{ + clear: both; + padding: 8px; + font-family: Verdana, Geneva, sans-serif; +} + +.good +{ + color: #00ff00; +} + +.average +{ + color: #d09000; +} + +.bad +{ + color: #ff0000; +} + +.highlight +{ + color: #8BA5C4; +} + +.dark +{ + color: #272727; +} + +.notice +{ + position: relative; + background: #E9C183; + color: #15345A; + font-size: 10px; + font-style: italic; + padding: 2px 4px 0 4px; + margin: 4px; +} + +.notice.icon +{ + padding: 2px 4px 0 20px; +} + +.notice img +{ + position: absolute; + top: 0; + left: 0; + width: 16px; + height: 16px; +} + +div.notice +{ + clear: both; +} + +.statusDisplay +{ + background: #000000; + color: #ffffff; + border: 1px solid #40628a; + padding: 4px; + margin: 3px 0; +} + +.statusLabel +{ + width: 138px; + float: left; + overflow: hidden; + color: #98B0C3; +} + +.statusValue +{ + float: left; +} + +.block +{ + padding: 8px; + margin: 10px 4px 4px 4px; + border: 1px solid #40628a; + background-color: #202020; +} + +.block h3 +{ + padding: 0; +} + +.progressBar +{ + position: relative; + width: 185px; + height: 14px; + border: 1px solid #666666; + float: left; + overflow: hidden; + padding: 1px; +} + +.progressLabel +{ + top: -2px; + height: 100%; + position: absolute; + right: 4px; + text-align: right; +} + +.progressFill +{ + width: 100%; + height: 100%; + background: #40628a; + overflow: hidden; + transition: width 2.2s linear; +} + +.progressFill.good +{ + color: #ffffff; + background: #00ff00; +} + +.progressFill.average +{ + color: #ffffff; + background: #d09000; +} + +.progressFill.bad +{ + color: #ffffff; + background: #ff0000; +} + +.progressFill.highlight +{ + color: #ffffff; + background: #8BA5C4; +} + +.clearBoth +{ + clear: both; +} + +.clearLeft +{ + clear: left; +} + +.clearRight +{ + clear: right; +} + +.line +{ + width: 100%; + clear: both; +} + +section .label, section .content +{ + display: table-cell; + margin: 0; + text-align: left; + vertical-align: middle; + padding: 3px 2px +} + +section .label +{ + width: 1%; + padding-right: 32px; + white-space: nowrap; + color: #8ba5c4; +} + +section +{ + display: table-row; + width: 100% +} + +.display { + width: calc(100% - 8px); + padding: 4px; + background-color: #000; + background-color: rgba(0, 0, 0, .33); + box-shadow: inset 0 0 5px rgba(0, 0, 0, .5); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000)"; + filter: progid: DXImageTransform.Microsoft.gradient(startColorStr=#54000000, endColorStr=#54000000); +} \ No newline at end of file diff --git a/modular_kepler/html/oracle_ui/themes/nano/sui-nano-common.js b/modular_kepler/html/oracle_ui/themes/nano/sui-nano-common.js new file mode 100644 index 0000000000..716891a53f --- /dev/null +++ b/modular_kepler/html/oracle_ui/themes/nano/sui-nano-common.js @@ -0,0 +1,47 @@ +function replaceContent(body) { + var maincontent = document.getElementById('maincontent'); + if(maincontent) { + maincontent.innerHTML = body; + } +} + +function updateProgressLabels() { + var progressBars = document.getElementsByClassName("progressBar"); + for(var i = 0; i < progressBars.length; i++) { + var progressBar = progressBars[i]; + if(!progressBar) + continue; + var progressFill = progressBar.getElementsByClassName("progressFill")[0]; + if(!progressFill) + continue; + var width = parseInt(getComputedStyle(progressFill).width); + var maxWidth = parseInt(getComputedStyle(progressBar).width); + var progressLabel = progressBar.getElementsByClassName("progressLabel")[0]; + if(progressLabel) + progressLabel.innerHTML = Math.round((width / maxWidth) * 100) + '%'; + } +} + +if(getComputedStyle) { setInterval(updateProgressLabels, 50); } //Fallback + +function updateFields(json) { + var fields = JSON.parse(json); + for (var key in fields) { + let value = fields[key]; + var element = document.getElementById(key); + if(element == null) { + continue; + } else if(element.classList.contains('progressBar')) { + var progressFill = element.getElementsByClassName("progressFill")[0]; + if(progressFill) + progressFill.style["width"] = value; + if(!getComputedStyle) { //Fallback + var progressLabel = element.getElementsByClassName("progressLabel")[0]; + if(progressLabel) + progressLabel.innerHTML = value; + } + } else { + element.innerHTML = value; + } + } +} \ No newline at end of file diff --git a/modular_kepler/html/oracle_ui/themes/nano/sui-nano-jquery.min.js b/modular_kepler/html/oracle_ui/themes/nano/sui-nano-jquery.min.js new file mode 100644 index 0000000000..645c5adc18 --- /dev/null +++ b/modular_kepler/html/oracle_ui/themes/nano/sui-nano-jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="
    ",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h; + if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
    a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/
  • ","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:k.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?""!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m(" + + + + diff --git a/html/oracle_ui/themes/nano/index.html b/html/oracle_ui/themes/nano/index.html new file mode 100644 index 0000000000..388f6e4ce4 --- /dev/null +++ b/html/oracle_ui/themes/nano/index.html @@ -0,0 +1,19 @@ + + + + + + @{title} + + + + + +
    +
    @{title}
    +
    + @{body} +
    +
    + + diff --git a/html/oracle_ui/themes/nano/sui-nano-common.css b/html/oracle_ui/themes/nano/sui-nano-common.css new file mode 100644 index 0000000000..481b81c3e3 --- /dev/null +++ b/html/oracle_ui/themes/nano/sui-nano-common.css @@ -0,0 +1,353 @@ +body +{ + padding: 0; + margin: 0; + background-color: #272727; + font-size: 12px; + color: #ffffff; + line-height: 170%; + cursor: default; + -moz-user-select: none; + -ms-user-select: none; +} + +hr +{ + background-color: #40628a; + height: 1px; +} + +a, a:link, a:visited, a:active, .linkOn, .linkOff +{ + color: #ffffff; + text-decoration: none; + background: #40628a; + border: 1px solid #161616; + padding: 1px 4px 1px 4px; + margin: 0 2px 0 0; + cursor:default; +} + +a:hover +{ + color: #40628a; + background: #ffffff; +} + +a.white, a.white:link, a.white:visited, a.white:active +{ + color: #40628a; + text-decoration: none; + background: #ffffff; + border: 1px solid #161616; + padding: 1px 4px 1px 4px; + margin: 0 2px 0 0; + cursor:default; +} + +a.white:hover +{ + color: #ffffff; + background: #40628a; +} + +.active, a.active:link, a.active:visited, a.active:active, a.active:hover +{ + color: #ffffff; + background: #2f943c; + border-color: #24722e; +} + +.disabled, a.disabled:link, a.disabled:visited, a.disabled:active, a.disabled:hover +{ + color: #ffffff; + background: #999999; + border-color: #666666; +} + +a.icon, .linkOn.icon, .linkOff.icon +{ + position: relative; + padding: 1px 4px 2px 20px; +} + +a.icon img, .linkOn.icon img +{ + position: absolute; + top: 0; + left: 0; + width: 18px; + height: 18px; +} + +ul +{ + padding: 4px 0 0 10px; + margin: 0; + list-style-type: none; +} + +li +{ + padding: 0 0 2px 0; +} + +img, a img +{ + border-style:none; +} + +h1, h2, h3, h4, h5, h6 +{ + margin: 0; + padding: 16px 0 8px 0; + color: #517087; +} + +h1 +{ + font-size: 15px; +} + +h2 +{ + font-size: 14px; +} + +h3 +{ + font-size: 13px; +} + +h4 +{ + font-size: 12px; +} + +.uiWrapper +{ + + width: 100%; + height: 100%; +} + +.uiTitle +{ + clear: both; + padding: 6px 8px 6px 8px; + border-bottom: 2px solid #161616; + background: #383838; + color: #98B0C3; + font-size: 16px; +} + +.uiTitle.icon +{ + padding: 6px 8px 6px 42px; + background-position: 2px 50%; + background-repeat: no-repeat; +} + +.uiContent +{ + clear: both; + padding: 8px; + font-family: Verdana, Geneva, sans-serif; +} + +.good +{ + color: #00ff00; +} + +.average +{ + color: #d09000; +} + +.bad +{ + color: #ff0000; +} + +.highlight +{ + color: #8BA5C4; +} + +.dark +{ + color: #272727; +} + +.notice +{ + position: relative; + background: #E9C183; + color: #15345A; + font-size: 10px; + font-style: italic; + padding: 2px 4px 0 4px; + margin: 4px; +} + +.notice.icon +{ + padding: 2px 4px 0 20px; +} + +.notice img +{ + position: absolute; + top: 0; + left: 0; + width: 16px; + height: 16px; +} + +div.notice +{ + clear: both; +} + +.statusDisplay +{ + background: #000000; + color: #ffffff; + border: 1px solid #40628a; + padding: 4px; + margin: 3px 0; +} + +.statusLabel +{ + width: 138px; + float: left; + overflow: hidden; + color: #98B0C3; +} + +.statusValue +{ + float: left; +} + +.block +{ + padding: 8px; + margin: 10px 4px 4px 4px; + border: 1px solid #40628a; + background-color: #202020; +} + +.block h3 +{ + padding: 0; +} + +.progressBar +{ + position: relative; + width: 185px; + height: 14px; + border: 1px solid #666666; + float: left; + overflow: hidden; + padding: 1px; +} + +.progressLabel +{ + top: -2px; + height: 100%; + position: absolute; + right: 4px; + text-align: right; +} + +.progressFill +{ + width: 100%; + height: 100%; + background: #40628a; + overflow: hidden; + transition: width 2.2s linear; +} + +.progressFill.good +{ + color: #ffffff; + background: #00ff00; +} + +.progressFill.average +{ + color: #ffffff; + background: #d09000; +} + +.progressFill.bad +{ + color: #ffffff; + background: #ff0000; +} + +.progressFill.highlight +{ + color: #ffffff; + background: #8BA5C4; +} + +.clearBoth +{ + clear: both; +} + +.clearLeft +{ + clear: left; +} + +.clearRight +{ + clear: right; +} + +.line +{ + width: 100%; + clear: both; +} + +section .label, section .content +{ + display: table-cell; + margin: 0; + text-align: left; + vertical-align: middle; + padding: 3px 2px +} + +section .label +{ + width: 1%; + padding-right: 32px; + white-space: nowrap; + color: #8ba5c4; +} + +section +{ + display: table-row; + width: 100% +} + +.display { + width: calc(100% - 8px); + padding: 4px; + background-color: #000; + background-color: rgba(0, 0, 0, .33); + box-shadow: inset 0 0 5px rgba(0, 0, 0, .5); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000)"; + filter: progid: DXImageTransform.Microsoft.gradient(startColorStr=#54000000, endColorStr=#54000000); +} \ No newline at end of file diff --git a/html/oracle_ui/themes/nano/sui-nano-common.js b/html/oracle_ui/themes/nano/sui-nano-common.js new file mode 100644 index 0000000000..716891a53f --- /dev/null +++ b/html/oracle_ui/themes/nano/sui-nano-common.js @@ -0,0 +1,47 @@ +function replaceContent(body) { + var maincontent = document.getElementById('maincontent'); + if(maincontent) { + maincontent.innerHTML = body; + } +} + +function updateProgressLabels() { + var progressBars = document.getElementsByClassName("progressBar"); + for(var i = 0; i < progressBars.length; i++) { + var progressBar = progressBars[i]; + if(!progressBar) + continue; + var progressFill = progressBar.getElementsByClassName("progressFill")[0]; + if(!progressFill) + continue; + var width = parseInt(getComputedStyle(progressFill).width); + var maxWidth = parseInt(getComputedStyle(progressBar).width); + var progressLabel = progressBar.getElementsByClassName("progressLabel")[0]; + if(progressLabel) + progressLabel.innerHTML = Math.round((width / maxWidth) * 100) + '%'; + } +} + +if(getComputedStyle) { setInterval(updateProgressLabels, 50); } //Fallback + +function updateFields(json) { + var fields = JSON.parse(json); + for (var key in fields) { + let value = fields[key]; + var element = document.getElementById(key); + if(element == null) { + continue; + } else if(element.classList.contains('progressBar')) { + var progressFill = element.getElementsByClassName("progressFill")[0]; + if(progressFill) + progressFill.style["width"] = value; + if(!getComputedStyle) { //Fallback + var progressLabel = element.getElementsByClassName("progressLabel")[0]; + if(progressLabel) + progressLabel.innerHTML = value; + } + } else { + element.innerHTML = value; + } + } +} \ No newline at end of file diff --git a/html/oracle_ui/themes/nano/sui-nano-jquery.min.js b/html/oracle_ui/themes/nano/sui-nano-jquery.min.js new file mode 100644 index 0000000000..645c5adc18 --- /dev/null +++ b/html/oracle_ui/themes/nano/sui-nano-jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="
    ",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h; + if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
    a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/
    ","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:k.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?""!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("