From 3e36a708a9e9756afda08ec4b2dbd5fecc1cd4d0 Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Fri, 22 Jan 2016 14:06:36 -0800 Subject: [PATCH 001/142] Fixes the tesla being shit Fixes #14786 Muti-bolt is back, but the other ones don't go out as far and spread out more randomly Power given has been cut down massively. Ball expansion is now exponential. Tesla now actually consumes energy and shrinks, causing the ball count to lower. Fixes it repeatedly resetting shifting it pixel x/y causing flicks of the tesla ball apperenting 1 tile to the lowerleft Fixes it growing even if it wasn't powered by a pr Fixes #14786 --- code/modules/power/tesla/energy_ball.dm | 31 +++++++++++++++---------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index d3c983b6077..696800fe20f 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -1,5 +1,5 @@ -#define TESLA_DEFAULT_POWER 3476520 -#define TESLA_MINI_POWER 1738260 +#define TESLA_DEFAULT_POWER 1738260 +#define TESLA_MINI_POWER 869130 var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, /obj/machinery/power/emitter, @@ -31,6 +31,8 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, var/list/orbiting_balls = list() var/produced_power var/is_orbiting + var/energy_to_raise = 100 + var/energy_to_lower = -10 /obj/singularity/energy_ball/Destroy() for(var/obj/singularity/energy_ball/EB in orbiting_balls) @@ -40,17 +42,11 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, /obj/singularity/energy_ball/process() if(!is_orbiting) handle_energy() - var/amount_to_move = 2 + orbiting_balls.len * 2 - var/what_does_the_scouter_say_about_the_balls_power_level = (TESLA_DEFAULT_POWER + (TESLA_MINI_POWER * orbiting_balls.len)) - move_the_basket_ball(amount_to_move) - pixel_x = 0 - pixel_y = 0 + move_the_basket_ball(2 + orbiting_balls.len * 2) playsound(src.loc, 'sound/magic/lightningbolt.ogg', 100, 1, extrarange = 15) - tesla_zap(src, 7, what_does_the_scouter_say_about_the_balls_power_level) - pixel_x = -32 - pixel_y = -32 - energy += rand(1,3) // ensure it generates energy without needing to be blasted by the PA too much due to its size, and that a tesla engine will always get bigger over time + tesla_zap(src, 7, TESLA_DEFAULT_POWER) else + tesla_zap(src, rand(1,Clamp(orbiting_balls.len,3,7)), TESLA_MINI_POWER) energy = 0 // ensure we dont have miniballs of miniballs return @@ -68,7 +64,10 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, loc = get_step(src,move_dir) /obj/singularity/energy_ball/proc/handle_energy() - if(energy >= 300) + if(energy >= energy_to_raise) + energy_to_lower = energy_to_raise - 10 + energy_to_raise += energy_to_raise + energy -= 300 playsound(src.loc, 'sound/magic/lightning_chargeup.ogg', 100, 1, extrarange = 15) spawn(100) @@ -82,6 +81,14 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, var/orbitsize = (I.Width()+I.Height())*pick(0.5,0.6,0.7) orbitsize -= (orbitsize/world.icon_size)*(world.icon_size*0.25) EB.orbit(src,orbitsize, pick(FALSE,TRUE), rand(10,25), pick(3,4,5,6,36)) + else if (energy < energy_to_lower && orbiting_balls.len) + energy_to_raise = energy_to_raise * 0.5 + energy_to_lower = (energy_to_raise * 0.5) - 10 + var/Orchiectomy_target = pick(orbiting_balls) + orbiting_balls.Remove(Orchiectomy_target) + qdel(Orchiectomy_target) + else + energy -= 5*orbiting_balls.len From 464315b50caf81cb6db4f21d305f212a789bd6d1 Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Fri, 22 Jan 2016 18:07:24 -0800 Subject: [PATCH 002/142] Update energy_ball.dm --- code/modules/power/tesla/energy_ball.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 696800fe20f..907ece37370 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -88,7 +88,7 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, orbiting_balls.Remove(Orchiectomy_target) qdel(Orchiectomy_target) else - energy -= 5*orbiting_balls.len + energy -= 5+(2*orbiting_balls.len) From 9fc02e0c9a5cc98c1d39ce30ffcd3c00a2d2659f Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Fri, 22 Jan 2016 20:52:24 -0800 Subject: [PATCH 003/142] Update energy_ball.dm --- code/modules/power/tesla/energy_ball.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 907ece37370..036a6a53bb2 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -67,8 +67,7 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, if(energy >= energy_to_raise) energy_to_lower = energy_to_raise - 10 energy_to_raise += energy_to_raise - - energy -= 300 + playsound(src.loc, 'sound/magic/lightning_chargeup.ogg', 100, 1, extrarange = 15) spawn(100) var/obj/singularity/energy_ball/EB = new(loc) From 9961966ab43986054918295f3357a4514ee57016 Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Sun, 24 Jan 2016 13:13:25 -0800 Subject: [PATCH 004/142] tweaks energy loss --- code/modules/power/tesla/energy_ball.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 036a6a53bb2..81e65c74a0b 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -44,7 +44,11 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, handle_energy() move_the_basket_ball(2 + orbiting_balls.len * 2) playsound(src.loc, 'sound/magic/lightningbolt.ogg', 100, 1, extrarange = 15) + pixel_x = 0 + pixel_y = 0 tesla_zap(src, 7, TESLA_DEFAULT_POWER) + pixel_x = -32 + pixel_y = -32 else tesla_zap(src, rand(1,Clamp(orbiting_balls.len,3,7)), TESLA_MINI_POWER) energy = 0 // ensure we dont have miniballs of miniballs @@ -86,8 +90,8 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, var/Orchiectomy_target = pick(orbiting_balls) orbiting_balls.Remove(Orchiectomy_target) qdel(Orchiectomy_target) - else - energy -= 5+(2*orbiting_balls.len) + else if (orbiting_balls.len) + energy -= 5+(1.5*orbiting_balls.len) From 626db2832ba68ca22682a3c74eebb7f98f2c29a2 Mon Sep 17 00:00:00 2001 From: GunHog Date: Sun, 24 Jan 2016 17:38:14 -0600 Subject: [PATCH 005/142] Exosuit Medical Beamgun Adds the Exosuit Medical Beamgun! - Odysseus version of the Medical Beamgun - Medical mech equipment is now under /medical/ to prevent copypaste --- .../mecha/equipment/tools/medical_tools.dm | 154 ++++++++++++------ code/modules/projectiles/guns/medbeam.dm | 34 +++- .../modules/research/designs/mecha_designs.dm | 15 +- icons/mecha/mecha_equipment.dmi | Bin 17652 -> 17966 bytes 4 files changed, 138 insertions(+), 65 deletions(-) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 827a258508e..ecd2aaf74a2 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -1,7 +1,36 @@ +// Sleeper, Medical Beam, and Syringe gun -// Sleeper and Syringe gun +/obj/item/mecha_parts/mecha_equipment/medical -/obj/item/mecha_parts/mecha_equipment/sleeper +/obj/item/mecha_parts/mecha_equipment/medical/New() + ..() + SSobj.processing |= src + + +/obj/item/mecha_parts/mecha_equipment/medical/can_attach(obj/mecha/medical/M) + if(..()) + if(istype(M)) + return 1 + return 0 + +/obj/item/mecha_parts/mecha_equipment/medical/attach(obj/mecha/M) + ..() + SSobj.processing |= src + +/obj/item/mecha_parts/mecha_equipment/medical/Destroy() + SSobj.processing.Remove(src) + return ..() + +/obj/item/mecha_parts/mecha_equipment/medical/process() + if(!chassis) + SSobj.processing.Remove(src) + return 1 + +/obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/detach() + SSobj.processing.Remove(src) + return ..() + +/obj/item/mecha_parts/mecha_equipment/medical/sleeper name = "mounted sleeper" desc = "Equipment for medical exosuits. A mounted sleeper that stabilizes patients and can inject reagents in the exosuit's reserves." icon = 'icons/obj/Cryogenic2.dmi' @@ -15,29 +44,18 @@ var/inject_amount = 10 salvageable = 0 -/obj/item/mecha_parts/mecha_equipment/sleeper/can_attach(obj/mecha/medical/M) - if(..()) - if(istype(M)) - return 1 +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/allow_drop() return 0 -/obj/item/mecha_parts/mecha_equipment/sleeper/attach(obj/mecha/M) - ..() - SSobj.processing |= src - -/obj/item/mecha_parts/mecha_equipment/sleeper/allow_drop() - return 0 - -/obj/item/mecha_parts/mecha_equipment/sleeper/Destroy() - SSobj.processing.Remove(src) +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/Destroy() for(var/atom/movable/AM in src) AM.forceMove(get_turf(src)) return ..() -/obj/item/mecha_parts/mecha_equipment/sleeper/Exit(atom/movable/O) +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/Exit(atom/movable/O) return 0 -/obj/item/mecha_parts/mecha_equipment/sleeper/action(mob/living/carbon/target) +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/action(mob/living/carbon/target) if(!action_checks(target)) return if(!istype(target)) @@ -58,7 +76,7 @@ chassis.visible_message("[chassis] loads [target] into [src].") log_message("[target] loaded. Life support functions engaged.") -/obj/item/mecha_parts/mecha_equipment/sleeper/proc/patient_insertion_check(mob/living/carbon/target) +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/patient_insertion_check(mob/living/carbon/target) if(target.buckled) occupant_message("[target] will not fit into the sleeper because they are buckled to [target.buckled]!") return @@ -70,7 +88,7 @@ return return 1 -/obj/item/mecha_parts/mecha_equipment/sleeper/proc/go_out() +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/go_out() if(!patient) return patient.forceMove(get_turf(src)) @@ -81,14 +99,14 @@ patient = null update_equip_info() -/obj/item/mecha_parts/mecha_equipment/sleeper/detach() +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/detach() if(patient) occupant_message("Unable to detach [src] - equipment occupied!") return SSobj.processing.Remove(src) return ..() -/obj/item/mecha_parts/mecha_equipment/sleeper/get_equip_info() +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/get_equip_info() var/output = ..() if(output) var/temp = "" @@ -97,7 +115,7 @@ return "[output] [temp]" return -/obj/item/mecha_parts/mecha_equipment/sleeper/Topic(href,href_list) +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/Topic(href,href_list) ..() var/datum/topic_input/filter = new /datum/topic_input(href,href_list) if(filter.get("eject")) @@ -110,7 +128,7 @@ inject_reagent(filter.getType("inject",/datum/reagent),filter.getObj("source")) return -/obj/item/mecha_parts/mecha_equipment/sleeper/proc/get_patient_stats() +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/get_patient_stats() if(!patient) return return {" @@ -139,7 +157,7 @@ "} -/obj/item/mecha_parts/mecha_equipment/sleeper/proc/get_patient_dam() +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/get_patient_dam() var/t1 switch(patient.stat) if(0) @@ -160,16 +178,16 @@ [patient.getBrainLoss() ? "Significant brain damage detected." : ""]
"} -/obj/item/mecha_parts/mecha_equipment/sleeper/proc/get_patient_reagents() +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/get_patient_reagents() if(patient.reagents) for(var/datum/reagent/R in patient.reagents.reagent_list) if(R.volume > 0) . += "[R]: [round(R.volume,0.01)]
" return . || "None" -/obj/item/mecha_parts/mecha_equipment/sleeper/proc/get_available_reagents() +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/get_available_reagents() var/output - var/obj/item/mecha_parts/mecha_equipment/syringe_gun/SG = locate(/obj/item/mecha_parts/mecha_equipment/syringe_gun) in chassis + var/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/SG = locate(/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun) in chassis if(SG && SG.reagents && islist(SG.reagents.reagent_list)) for(var/datum/reagent/R in SG.reagents.reagent_list) if(R.volume > 0) @@ -177,7 +195,7 @@ return output -/obj/item/mecha_parts/mecha_equipment/sleeper/proc/inject_reagent(datum/reagent/R,obj/item/mecha_parts/mecha_equipment/syringe_gun/SG) +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/inject_reagent(datum/reagent/R,obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/SG) if(!R || !patient || !SG || !(SG in chassis.equipment)) return 0 var/to_inject = min(R.volume, inject_amount) @@ -189,7 +207,7 @@ update_equip_info() return -/obj/item/mecha_parts/mecha_equipment/sleeper/update_equip_info() +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/update_equip_info() if(..()) if(patient) send_byjax(chassis.occupant,"msleeper.browser","lossinfo",get_patient_dam()) @@ -198,12 +216,11 @@ return 1 return -/obj/item/mecha_parts/mecha_equipment/sleeper/container_resist() +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/container_resist() go_out() -/obj/item/mecha_parts/mecha_equipment/sleeper/process() - if(!chassis) - SSobj.processing.Remove(src) +/obj/item/mecha_parts/mecha_equipment/medical/sleeper/process() + if(..()) return if(!chassis.has_charge(energy_drain)) set_ready_state(1) @@ -231,7 +248,7 @@ ///////////////////////////////// Syringe Gun /////////////////////////////////////////////////////////////// -/obj/item/mecha_parts/mecha_equipment/syringe_gun +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun name = "exosuit syringe gun" desc = "Equipment for medical exosuits. A chem synthesizer with syringe gun. Reagents inside are held in stasis, so no reactions will occur." icon = 'icons/obj/guns/projectile.dmi' @@ -248,7 +265,7 @@ equip_cooldown = 10 origin_tech = "materials=3;biotech=4;magnets=4;programming=3" -/obj/item/mecha_parts/mecha_equipment/syringe_gun/New() +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/New() ..() flags |= NOREACT syringes = new @@ -256,32 +273,32 @@ processed_reagents = new create_reagents(max_volume) -/obj/item/mecha_parts/mecha_equipment/syringe_gun/detach() +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/detach() SSobj.processing.Remove(src) return ..() -/obj/item/mecha_parts/mecha_equipment/syringe_gun/Destroy() +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/Destroy() SSobj.processing.Remove(src) return ..() -/obj/item/mecha_parts/mecha_equipment/syringe_gun/critfail() +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/critfail() ..() flags &= ~NOREACT return -/obj/item/mecha_parts/mecha_equipment/syringe_gun/can_attach(obj/mecha/medical/M) +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/can_attach(obj/mecha/medical/M) if(..()) if(istype(M)) return 1 return 0 -/obj/item/mecha_parts/mecha_equipment/syringe_gun/get_equip_info() +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/get_equip_info() var/output = ..() if(output) return "[output] \[[mode? "Analyze" : "Launch"]\]
\[Syringes: [syringes.len]/[max_syringes] | Reagents: [reagents.total_volume]/[reagents.maximum_volume]\]
Reagents list" return -/obj/item/mecha_parts/mecha_equipment/syringe_gun/action(atom/movable/target) +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/action(atom/movable/target) if(!action_checks(target)) return if(istype(target,/obj/item/weapon/reagent_containers/syringe)) @@ -346,7 +363,7 @@ return 1 -/obj/item/mecha_parts/mecha_equipment/syringe_gun/Topic(href,href_list) +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/Topic(href,href_list) ..() var/datum/topic_input/filter = new (href,href_list) if(filter.get("toggle_mode")) @@ -384,7 +401,7 @@ return return -/obj/item/mecha_parts/mecha_equipment/syringe_gun/proc/get_reagents_page() +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/get_reagents_page() var/output = {" Reagent Synthesizer @@ -412,7 +429,7 @@ "} return output -/obj/item/mecha_parts/mecha_equipment/syringe_gun/proc/get_reagents_form() +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/get_reagents_form() var/r_list = get_reagents_list() var/inputs if(r_list) @@ -427,14 +444,14 @@ "} return output -/obj/item/mecha_parts/mecha_equipment/syringe_gun/proc/get_reagents_list() +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/get_reagents_list() var/output for(var/i=1 to known_reagents.len) var/reagent_id = known_reagents[i] output += {" [known_reagents[reagent_id]]
"} return output -/obj/item/mecha_parts/mecha_equipment/syringe_gun/proc/get_current_reagents() +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/get_current_reagents() var/output for(var/datum/reagent/R in reagents.reagent_list) if(R.volume > 0) @@ -443,7 +460,7 @@ output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] - Purge All" return output || "None" -/obj/item/mecha_parts/mecha_equipment/syringe_gun/proc/load_syringe(obj/item/weapon/reagent_containers/syringe/S) +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/load_syringe(obj/item/weapon/reagent_containers/syringe/S) if(syringes.len= 2) occupant_message("The syringe is too far away.") @@ -465,7 +482,7 @@ occupant_message("The [src] syringe chamber is full.") return 0 -/obj/item/mecha_parts/mecha_equipment/syringe_gun/proc/analyze_reagents(atom/A) +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/analyze_reagents(atom/A) if(get_dist(src,A) >= 4) occupant_message("The object is too far away.") return 0 @@ -480,29 +497,28 @@ occupant_message("Analyzis complete.") return 1 -/obj/item/mecha_parts/mecha_equipment/syringe_gun/proc/add_known_reagent(r_id,r_name) +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/add_known_reagent(r_id,r_name) if(!(r_id in known_reagents)) known_reagents += r_id known_reagents[r_id] = r_name return 1 return 0 -/obj/item/mecha_parts/mecha_equipment/syringe_gun/update_equip_info() +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/update_equip_info() if(..()) send_byjax(chassis.occupant,"msyringegun.browser","reagents",get_current_reagents()) send_byjax(chassis.occupant,"msyringegun.browser","reagents_form",get_reagents_form()) return 1 return -/obj/item/mecha_parts/mecha_equipment/syringe_gun/on_reagent_change() +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/on_reagent_change() ..() update_equip_info() return -/obj/item/mecha_parts/mecha_equipment/syringe_gun/process() - if(!chassis) - SSobj.processing.Remove(src) +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/process() + if(..()) return if(!processed_reagents.len || reagents.total_volume >= reagents.maximum_volume || !chassis.has_charge(energy_drain)) occupant_message("Reagent processing stopped.") @@ -516,3 +532,33 @@ reagents.add_reagent(reagent,amount) chassis.use_power(energy_drain) +///////////////////////////////// Medical Beam /////////////////////////////////////////////////////////////// + +/obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam + name = "exosuit medical beamgun" + desc = "Equipment for medical exosuits. Generates a focused beam of medical nanites." + icon_state = "mecha_medigun" + energy_drain = 10 + range = MELEE|RANGED + equip_cooldown = 0 + origin_tech = "combat=5;materials=6;powerstorage=7;biotech=6" + var/obj/item/weapon/gun/medbeam/mech/medigun + materials = list(MAT_METAL = 15000, MAT_GLASS = 8000, MAT_PLASMA = 3000, MAT_GOLD = 8000, MAT_DIAMOND = 2000) + +/obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/New() + ..() + medigun = new /obj/item/weapon/gun/medbeam/mech(src) + + +/obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/Destroy() + qdel(medigun) + return ..() + +/obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/process() + if(..()) + return + medigun.process() + +/obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/action(atom/target) + medigun.process_fire(target, loc) + diff --git a/code/modules/projectiles/guns/medbeam.dm b/code/modules/projectiles/guns/medbeam.dm index 67a768ee3f8..d32e48bb8b3 100644 --- a/code/modules/projectiles/guns/medbeam.dm +++ b/code/modules/projectiles/guns/medbeam.dm @@ -12,6 +12,7 @@ var/max_range = 8 var/active = 0 var/datum/beam/current_beam = null + var/mounted = 0 //Denotes if this is a handheld or mounted version heavy_weapon = 1 @@ -31,7 +32,8 @@ current_target = null /obj/item/weapon/gun/medbeam/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override) - add_fingerprint(user) + if(isliving(user)) + add_fingerprint(user) if(current_target) LoseTarget() @@ -47,8 +49,9 @@ feedback_add_details("gun_fired","[src.type]") /obj/item/weapon/gun/medbeam/process() - var/mob/living/carbon/human/H = loc - if(!istype(H)) + + var/source = loc + if(!mounted && !ishuman(source)) LoseTarget() return @@ -58,24 +61,29 @@ if(world.time <= last_check+check_delay) return - + last_check = world.time - if(get_dist(H,current_target)>max_range || !los_check(H,current_target)) + if(get_dist(source,current_target)>max_range || !los_check(source,current_target)) LoseTarget() - H << "You lose control of the beam!" + if(ishuman(source)) + source << "You lose control of the beam!" return if(current_target) on_beam_tick(current_target) -/obj/item/weapon/gun/medbeam/proc/los_check(mob/user,mob/target) +/obj/item/weapon/gun/medbeam/proc/los_check(atom/movable/user, mob/target) var/turf/user_turf = user.loc - if(!istype(user_turf)) + if(mounted) + user_turf = get_turf(user) + else if(!istype(user_turf)) return 0 var/obj/dummy = new(user_turf) dummy.pass_flags |= PASSTABLE & PASSGLASS & PASSGRILLE //Grille/Glass so it can be used through common windows for(var/turf/turf in getline(user_turf,target)) + if(mounted && turf == user_turf) + continue //Mechs are dense and thus fail the check if(turf.density) qdel(dummy) return 0 @@ -97,10 +105,18 @@ /obj/item/weapon/gun/medbeam/proc/on_beam_tick(var/mob/living/target) target.adjustBruteLoss(-4) target.adjustFireLoss(-4) - return + return /obj/item/weapon/gun/medbeam/proc/on_beam_release(var/mob/living/target) return /obj/effect/ebeam/medical name = "medical beam" + +//////////////////////////////Mech Version/////////////////////////////// +/obj/item/weapon/gun/medbeam/mech + mounted = 1 + +/obj/item/weapon/gun/medbeam/mech/New() + ..() + SSobj.processing.Remove(src) //Mech mediguns do not process until installed, and are controlled by the holder obj diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm index ee0c7d2bc67..87b4d4c8dbd 100644 --- a/code/modules/research/designs/mecha_designs.dm +++ b/code/modules/research/designs/mecha_designs.dm @@ -403,7 +403,7 @@ id = "mech_sleeper" build_type = MECHFAB req_tech = list("biotech" = 2) - build_path = /obj/item/mecha_parts/mecha_equipment/sleeper + build_path = /obj/item/mecha_parts/mecha_equipment/medical/sleeper materials = list(MAT_METAL=5000,MAT_GLASS=10000) construction_time = 100 category = list("Exosuit Equipment") @@ -414,7 +414,18 @@ id = "mech_syringe_gun" build_type = MECHFAB req_tech = list("magnets" = 3,"biotech" = 3) - build_path = /obj/item/mecha_parts/mecha_equipment/syringe_gun + build_path = /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun materials = list(MAT_METAL=3000,MAT_GLASS=2000) construction_time = 200 category = list("Exosuit Equipment") + +/datum/design/mech_medical_beamgun + name = "Exosuit Medical Equipment (Medical Beamgun)" + desc = "Equipment for medical exosuits. A mounted medical nanite projector which will treat patients with a focused beam." + id = "mech_medi_beam" + req_tech = list("combat" = 5, "materials" = 7, "powerstorage" = 7, "biotech" = 6) + build_type = MECHFAB + materials = list(MAT_METAL = 15000, MAT_GLASS = 8000, MAT_PLASMA = 3000, MAT_GOLD = 8000, MAT_DIAMOND = 2000) + construction_time = 250 + build_path = /obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam + category = list("Exosuit Equipment") \ No newline at end of file diff --git a/icons/mecha/mecha_equipment.dmi b/icons/mecha/mecha_equipment.dmi index 930d0685de4df5bc05f632b9b468f44ea07480b3..525f80e2caffd418d8099c0f864cd1bb64dc693b 100644 GIT binary patch literal 17966 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.W(~m+uA1S> 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 Date: Sun, 24 Jan 2016 20:26:16 -0600 Subject: [PATCH 006/142] Nitpick handling --- .../mecha/equipment/tools/medical_tools.dm | 27 +++++++++---------- code/game/mecha/mecha.dm | 2 +- code/modules/projectiles/guns/medbeam.dm | 4 +-- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index ecd2aaf74a2..ad4a27f2fdb 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -8,26 +8,25 @@ /obj/item/mecha_parts/mecha_equipment/medical/can_attach(obj/mecha/medical/M) - if(..()) - if(istype(M)) - return 1 - return 0 + if(..() && istype(M)) + return 1 + /obj/item/mecha_parts/mecha_equipment/medical/attach(obj/mecha/M) ..() SSobj.processing |= src /obj/item/mecha_parts/mecha_equipment/medical/Destroy() - SSobj.processing.Remove(src) + SSobj.processing -= src return ..() /obj/item/mecha_parts/mecha_equipment/medical/process() if(!chassis) - SSobj.processing.Remove(src) + SSobj.processing -= src return 1 /obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/detach() - SSobj.processing.Remove(src) + SSobj.processing -= src return ..() /obj/item/mecha_parts/mecha_equipment/medical/sleeper @@ -95,7 +94,7 @@ occupant_message("[patient] ejected. Life support functions disabled.") log_message("[patient] ejected. Life support functions disabled.") patient.reset_view() - SSobj.processing.Remove(src) + SSobj.processing -= src patient = null update_equip_info() @@ -103,7 +102,7 @@ if(patient) occupant_message("Unable to detach [src] - equipment occupied!") return - SSobj.processing.Remove(src) + SSobj.processing -= src return ..() /obj/item/mecha_parts/mecha_equipment/medical/sleeper/get_equip_info() @@ -226,7 +225,7 @@ set_ready_state(1) log_message("Deactivated.") occupant_message("[src] deactivated - no power.") - SSobj.processing.Remove(src) + SSobj.processing -= src return var/mob/living/carbon/M = patient if(!M) @@ -274,11 +273,11 @@ create_reagents(max_volume) /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/detach() - SSobj.processing.Remove(src) + SSobj.processing -= src return ..() /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/Destroy() - SSobj.processing.Remove(src) + SSobj.processing -= src return ..() /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/critfail() @@ -523,7 +522,7 @@ if(!processed_reagents.len || reagents.total_volume >= reagents.maximum_volume || !chassis.has_charge(energy_drain)) occupant_message("Reagent processing stopped.") log_message("Reagent processing stopped.") - SSobj.processing.Remove(src) + SSobj.processing -= src return if(anyprob(reliability)) critfail() @@ -547,7 +546,7 @@ /obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/New() ..() - medigun = new /obj/item/weapon/gun/medbeam/mech(src) + medigun = new(src) /obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/Destroy() diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index c1ab8a6a7e6..53a1eda3102 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -139,7 +139,7 @@ qdel(cell) if(internal_tank) qdel(internal_tank) - SSobj.processing.Remove(src) + SSobj.processing -= src poi_list.Remove(src) equipment.Cut() cell = null diff --git a/code/modules/projectiles/guns/medbeam.dm b/code/modules/projectiles/guns/medbeam.dm index d32e48bb8b3..e6c694e7e11 100644 --- a/code/modules/projectiles/guns/medbeam.dm +++ b/code/modules/projectiles/guns/medbeam.dm @@ -64,7 +64,7 @@ last_check = world.time - if(get_dist(source,current_target)>max_range || !los_check(source,current_target)) + if(get_dist(source, current_target)>max_range || !los_check(source, current_target)) LoseTarget() if(ishuman(source)) source << "You lose control of the beam!" @@ -119,4 +119,4 @@ /obj/item/weapon/gun/medbeam/mech/New() ..() - SSobj.processing.Remove(src) //Mech mediguns do not process until installed, and are controlled by the holder obj + SSobj.processing -= src //Mech mediguns do not process until installed, and are controlled by the holder obj From 8db54da28fc7c0959b241ebd2d6efe47c92a3b2e Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Mon, 25 Jan 2016 19:38:39 -0800 Subject: [PATCH 007/142] lowers energy drain once more. --- code/modules/power/tesla/energy_ball.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 81e65c74a0b..95eb1cb4a39 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -91,7 +91,7 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, orbiting_balls.Remove(Orchiectomy_target) qdel(Orchiectomy_target) else if (orbiting_balls.len) - energy -= 5+(1.5*orbiting_balls.len) + energy -= orbiting_balls.len From 7cda37e5b6e6247a375af275594c0751f38ffd02 Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Mon, 25 Jan 2016 20:02:23 -0800 Subject: [PATCH 008/142] speeds up tesla_act and thus, tesla_zap --- code/game/objects/objs.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 5cafd68d697..0a2f5054aa7 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -195,8 +195,10 @@ being_shocked = 1 var/power_bounced = power / 2 tesla_zap(src, 3, power_bounced) - spawn(10) - being_shocked = 0 + addtimer(src, "reset_shocked", 10) + +/obj/proc/reset_shocked() + being_shocked = 0 /obj/proc/CanAStarPass() - . = !density \ No newline at end of file + . = !density From 8877b6899983e360f7f04e90042fd6a62d3ffab9 Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Mon, 25 Jan 2016 20:03:20 -0800 Subject: [PATCH 009/142] Coils now use the new faster way of processing a tesla zap --- code/modules/power/tesla/coil.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm index bf6f80dfdc3..682e22f5915 100644 --- a/code/modules/power/tesla/coil.dm +++ b/code/modules/power/tesla/coil.dm @@ -47,8 +47,7 @@ flick("coilhit", src) playsound(src.loc, 'sound/magic/LightningShock.ogg', 100, 1, extrarange = 5) tesla_zap(src, 5, power_produced) - spawn(10) - being_shocked = 0 + addtimer(src, "reset_shocked", 10) /obj/machinery/power/grounding_rod name = "Grounding Rod" @@ -81,4 +80,4 @@ default_deconstruction_crowbar(W) /obj/machinery/power/grounding_rod/tesla_act(var/power) - flick("coil_shock_1", src) \ No newline at end of file + flick("coil_shock_1", src) From b872a53893997dca4046bf7e43f913917583b001 Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Mon, 25 Jan 2016 23:16:24 -0800 Subject: [PATCH 010/142] Tesla now favors moving in the direction of what it last zapped --- code/modules/power/tesla/energy_ball.dm | 70 ++++++++++++------------- 1 file changed, 33 insertions(+), 37 deletions(-) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 95eb1cb4a39..54eb32ce450 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -46,12 +46,12 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, playsound(src.loc, 'sound/magic/lightningbolt.ogg', 100, 1, extrarange = 15) pixel_x = 0 pixel_y = 0 - tesla_zap(src, 7, TESLA_DEFAULT_POWER) + dir = tesla_zap(src, 7, TESLA_DEFAULT_POWER) pixel_x = -32 pixel_y = -32 else - tesla_zap(src, rand(1,Clamp(orbiting_balls.len,3,7)), TESLA_MINI_POWER) energy = 0 // ensure we dont have miniballs of miniballs + tesla_zap(ball, rand(1,Clamp(orbiting_balls.len,3,7)), TESLA_MINI_POWER) return /obj/singularity/energy_ball/examine(mob/user) @@ -61,11 +61,13 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, /obj/singularity/energy_ball/proc/move_the_basket_ball(var/move_amount) - for(var/i = 0, i < move_amount, i++) - var/move_dir = pick(alldirs) + //we face the last thing we zapped, so this lets us favor that direction a bit + var/first_move = dir + for(var/i in 0 to move_amount) + var/move_dir = pick(alldirs+first_move) //give the first move direction a bit of favoring. var/turf/T = get_step(src,move_dir) if(can_move(T)) - loc = get_step(src,move_dir) + loc = T /obj/singularity/energy_ball/proc/handle_energy() if(energy >= energy_to_raise) @@ -124,6 +126,7 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, return closest_atom /proc/tesla_zap(var/atom/source, zap_range = 3, power) + . = source.dir if(power < 1000) return var/list/tesla_coils = list() @@ -135,51 +138,40 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, for(var/atom/A in oview(source, zap_range)) if(istype(A, /obj/machinery/power/tesla_coil)) var/obj/machinery/power/tesla_coil/C = A - if(C.being_shocked) - continue - tesla_coils.Add(C) - continue - if(istype(A, /obj/machinery/power/grounding_rod)) + if(!C.being_shocked) + tesla_coils.Add(C) + + else if(istype(A, /obj/machinery/power/grounding_rod)) var/obj/machinery/power/grounding_rod/R = A grounding_rods.Add(R) - continue - if(istype(A, /obj/machinery)) + + else if(istype(A, /obj/machinery)) var/obj/machinery/M = A - if(is_type_in_list(M, blacklisted_tesla_types)) - continue - if(M.being_shocked) - continue - potential_machine_zaps.Add(M) - continue - if(istype(A, /obj/structure)) + if(!is_type_in_list(M, blacklisted_tesla_types) && !M.being_shocked) + potential_machine_zaps.Add(M) + else if(istype(A, /obj/structure)) var/obj/structure/M = A - if(is_type_in_list(M, blacklisted_tesla_types)) - continue - if(M.being_shocked) - continue - potential_structure_zaps.Add(M) - continue - if(istype(A, /mob/living)) + if(!is_type_in_list(M, blacklisted_tesla_types) && !M.being_shocked) + potential_structure_zaps.Add(M) + + else if(istype(A, /mob/living)) var/mob/living/L = A - if(L.stat == DEAD) - continue - if(is_type_in_list(L, blacklisted_tesla_types)) - continue - potential_mob_zaps.Add(L) - continue + if(L.stat != DEAD && is_type_in_list(L, blacklisted_tesla_types)) + potential_mob_zaps.Add(L) + closest_atom = get_closest_atom(/obj/machinery/power/tesla_coil, tesla_coils, source) if(closest_atom && istype(closest_atom, /obj/machinery/power/tesla_coil)) var/obj/machinery/power/tesla_coil/C = closest_atom source.Beam(C,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5) C.tesla_act(power) - return + if(!closest_atom) closest_atom = get_closest_atom(/obj/machinery/power/grounding_rod, grounding_rods, source) if(closest_atom && istype(closest_atom, /obj/machinery/power/grounding_rod)) var/obj/machinery/power/grounding_rod/R = closest_atom source.Beam(R,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5) R.tesla_act(power) - return + if(!closest_atom) closest_atom = get_closest_atom(/mob/living, potential_mob_zaps, source) if(closest_atom && istype(closest_atom, /mob/living)) @@ -193,7 +185,7 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, tesla_zap(S, 7, power / 1.5) // metallic folks bounce it further else tesla_zap(L, 5, power / 1.5) - return + if(!closest_atom) closest_atom = get_closest_atom(/obj/machinery, potential_machine_zaps, source) if(closest_atom) @@ -210,11 +202,15 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, M.ex_act(2) else M.ex_act(1) - return + if(!closest_atom) closest_atom = get_closest_atom(/obj/structure, potential_structure_zaps, source) if(closest_atom) var/obj/structure/S = closest_atom source.Beam(S,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5) S.tesla_act(power) - return + + if(closest_atom) + var/zapdir = get_dir(source,closest_atom) + if (zapdir) + . = zapdir From eddb2daf90857e2ab2753cc3ea9a49c6741db96c Mon Sep 17 00:00:00 2001 From: GunHog Date: Tue, 26 Jan 2016 06:58:15 -0600 Subject: [PATCH 011/142] Pretty new beam sprite By WJohn --- icons/effects/beam.dmi | Bin 5456 -> 6197 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi index 2d880961426c8a7505a2aff1099b0105fd4936cd..39df6013a71266e95c23af3739aa6aba666ff829 100644 GIT binary patch literal 6197 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 From b2f4b04fdfcdd71c2300353e5f21307b53f1d437 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Tue, 26 Jan 2016 17:08:44 -0600 Subject: [PATCH 012/142] Lusty Xenomorph Maid --- .../mob/living/simple_animal/hostile/alien.dm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 8bd71dd3313..dd1eea25f74 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -150,3 +150,19 @@ adjustBruteLoss(2) else if(bodytemperature > maxbodytemp) adjustBruteLoss(20) + + +/mob/living/simple_animal/hostile/alien/maid + name = "lusty xenomorph maid" + melee_damage_lower = 0 + melee_damage_upper = 0 + a_intent = "help" + friendly = "caresses" + environment_smash = 0 + gold_core_spawnable = 1 + +/mob/living/simple_animal/hostile/alien/maid/AttackingTarget() + if(istype(target, /atom/movable)) + var/atom/movable/M = target + M.clean_blood() + visible_message("[src] polishes the [target].") From dd48ad16502c4514b938d66924de572f0862de8f Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Tue, 26 Jan 2016 22:08:47 -0800 Subject: [PATCH 013/142] Cleans up tesla code --- code/modules/power/tesla/energy_ball.dm | 113 ++++++++++++++---------- 1 file changed, 66 insertions(+), 47 deletions(-) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 54eb32ce450..57338ec1ea9 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -28,30 +28,44 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, grav_pull = 0 contained = 0 density = 1 + var/list/orbiting_balls = list() var/produced_power - var/is_orbiting var/energy_to_raise = 100 var/energy_to_lower = -10 /obj/singularity/energy_ball/Destroy() - for(var/obj/singularity/energy_ball/EB in orbiting_balls) + if (orbiting && istype(orbiting, /obj/singularity/energy_ball)) + var/obj/singularity/energy_ball/EB = orbiting + EB.orbiting_balls -= src + orbiting = null + + for(var/ball in orbiting_balls) + var/obj/singularity/energy_ball/EB = ball qdel(EB) + return ..() /obj/singularity/energy_ball/process() - if(!is_orbiting) + if(orbiting) handle_energy() + move_the_basket_ball(2 + orbiting_balls.len * 2) + playsound(src.loc, 'sound/magic/lightningbolt.ogg', 100, 1, extrarange = 15) + pixel_x = 0 pixel_y = 0 + dir = tesla_zap(src, 7, TESLA_DEFAULT_POWER) + pixel_x = -32 pixel_y = -32 + for (var/ball in orbiting_balls) + tesla_zap(ball, rand(1, Clamp(orbiting_balls.len, 3, 7)), TESLA_MINI_POWER) else energy = 0 // ensure we dont have miniballs of miniballs - tesla_zap(ball, rand(1,Clamp(orbiting_balls.len,3,7)), TESLA_MINI_POWER) + return /obj/singularity/energy_ball/examine(mob/user) @@ -64,8 +78,8 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, //we face the last thing we zapped, so this lets us favor that direction a bit var/first_move = dir for(var/i in 0 to move_amount) - var/move_dir = pick(alldirs+first_move) //give the first move direction a bit of favoring. - var/turf/T = get_step(src,move_dir) + var/move_dir = pick(alldirs + first_move) //give the first move direction a bit of favoring. + var/turf/T = get_step(src, move_dir) if(can_move(T)) loc = T @@ -77,52 +91,55 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, playsound(src.loc, 'sound/magic/lightning_chargeup.ogg', 100, 1, extrarange = 15) spawn(100) var/obj/singularity/energy_ball/EB = new(loc) - orbiting_balls.Add(EB) - poi_list.Remove(EB) - EB.transform *= pick(0.3,0.4,0.5,0.6,0.7) - EB.is_orbiting = 1 + + EB.transform *= pick(0.3, 0.4, 0.5, 0.6, 0.7) var/icon/I = icon(icon,icon_state,dir) - - var/orbitsize = (I.Width()+I.Height())*pick(0.5,0.6,0.7) - orbitsize -= (orbitsize/world.icon_size)*(world.icon_size*0.25) - EB.orbit(src,orbitsize, pick(FALSE,TRUE), rand(10,25), pick(3,4,5,6,36)) - else if (energy < energy_to_lower && orbiting_balls.len) + + var/orbitsize = (I.Width() + I.Height()) * pick(0.5, 0.6, 0.7) + orbitsize -= (orbitsize / world.icon_size) * (world.icon_size * 0.25) + + EB.orbit(src, orbitsize, pick(FALSE, TRUE), rand(10, 25), pick(3, 4, 5, 6, 36)) + + else if(energy < energy_to_lower && orbiting_balls.len) energy_to_raise = energy_to_raise * 0.5 energy_to_lower = (energy_to_raise * 0.5) - 10 + var/Orchiectomy_target = pick(orbiting_balls) - orbiting_balls.Remove(Orchiectomy_target) qdel(Orchiectomy_target) - else if (orbiting_balls.len) + + else if(orbiting_balls.len) energy -= orbiting_balls.len - - /obj/singularity/energy_ball/Bump(atom/A) dust_mobs(A) /obj/singularity/energy_ball/Bumped(atom/A) dust_mobs(A) +/obj/singularity/energy_ball/orbit(obj/singularity/energy_ball/target) + if (istype(target)) + target.orbiting_balls += src + poi_list -= src + + . = ..() + + if (istype(target)) + target.orbiting_balls -= src + /obj/singularity/energy_ball/proc/dust_mobs(atom/A) if(istype(A, /mob/living/carbon)) var/mob/living/carbon/C = A C.dust() return -/proc/get_closest_atom(type, list, source) +/proc/get_closest_atom(list, source) var/closest_atom var/closest_distance for(var/A in list) - if(!istype(A, type)) - continue var/distance = get_dist(source, A) - if(!closest_distance) + if(!closest_atom || closest_distance > distance) closest_distance = distance closest_atom = A - else - if(closest_distance > distance) - closest_distance = distance - closest_atom = A return closest_atom /proc/tesla_zap(var/atom/source, zap_range = 3, power) @@ -139,45 +156,46 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, if(istype(A, /obj/machinery/power/tesla_coil)) var/obj/machinery/power/tesla_coil/C = A if(!C.being_shocked) - tesla_coils.Add(C) + tesla_coils += C else if(istype(A, /obj/machinery/power/grounding_rod)) var/obj/machinery/power/grounding_rod/R = A - grounding_rods.Add(R) + grounding_rods += R else if(istype(A, /obj/machinery)) var/obj/machinery/M = A if(!is_type_in_list(M, blacklisted_tesla_types) && !M.being_shocked) - potential_machine_zaps.Add(M) + potential_machine_zaps += M + else if(istype(A, /obj/structure)) var/obj/structure/M = A if(!is_type_in_list(M, blacklisted_tesla_types) && !M.being_shocked) - potential_structure_zaps.Add(M) + potential_structure_zaps += M else if(istype(A, /mob/living)) var/mob/living/L = A - if(L.stat != DEAD && is_type_in_list(L, blacklisted_tesla_types)) - potential_mob_zaps.Add(L) + if(!is_type_in_list(L, blacklisted_tesla_types) && L.stat != DEAD) + potential_mob_zaps += L - closest_atom = get_closest_atom(/obj/machinery/power/tesla_coil, tesla_coils, source) - if(closest_atom && istype(closest_atom, /obj/machinery/power/tesla_coil)) + closest_atom = get_closest_atom(tesla_coils, source) + if(closest_atom) var/obj/machinery/power/tesla_coil/C = closest_atom - source.Beam(C,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5) + source.Beam(C, icon_state="lightning[rand(1,12)]", icon='icons/effects/effects.dmi', time=5) C.tesla_act(power) if(!closest_atom) - closest_atom = get_closest_atom(/obj/machinery/power/grounding_rod, grounding_rods, source) - if(closest_atom && istype(closest_atom, /obj/machinery/power/grounding_rod)) + closest_atom = get_closest_atom(grounding_rods, source) + if(closest_atom) var/obj/machinery/power/grounding_rod/R = closest_atom - source.Beam(R,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5) + source.Beam(R, icon_state="lightning[rand(1,12)]", icon='icons/effects/effects.dmi', time=5) R.tesla_act(power) if(!closest_atom) - closest_atom = get_closest_atom(/mob/living, potential_mob_zaps, source) - if(closest_atom && istype(closest_atom, /mob/living)) + closest_atom = get_closest_atom(potential_mob_zaps, source) + if(closest_atom) var/mob/living/L = closest_atom - var/shock_damage = Clamp(round(power/400), 10, 90) + rand(-5,5) - source.Beam(L,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5) + var/shock_damage = Clamp(round(power/400), 10, 90) + rand(-5, 5) + source.Beam(L, icon_state="lightning[rand(1,12)]", icon='icons/effects/effects.dmi', time=5) L.electrocute_act(shock_damage, source, 1, tesla_shock = 1) if(istype(L, /mob/living/silicon)) var/mob/living/silicon/S = L @@ -187,10 +205,10 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, tesla_zap(L, 5, power / 1.5) if(!closest_atom) - closest_atom = get_closest_atom(/obj/machinery, potential_machine_zaps, source) + closest_atom = get_closest_atom(potential_machine_zaps, source) if(closest_atom) var/obj/machinery/M = closest_atom - source.Beam(M,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5) + source.Beam(M, icon_state="lightning[rand(1,12)]", icon='icons/effects/effects.dmi',time=5) M.tesla_act(power) if(prob(85)) M.emp_act(2) @@ -207,10 +225,11 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, closest_atom = get_closest_atom(/obj/structure, potential_structure_zaps, source) if(closest_atom) var/obj/structure/S = closest_atom - source.Beam(S,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5) + source.Beam(S, icon_state="lightning[rand(1,12)]", icon='icons/effects/effects.dmi', time=5) S.tesla_act(power) if(closest_atom) - var/zapdir = get_dir(source,closest_atom) + var/zapdir = get_dir(source, closest_atom) if (zapdir) . = zapdir + From 22d408fd4bae18fd21d95fbaf4acb45f4a568074 Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Tue, 26 Jan 2016 22:17:24 -0800 Subject: [PATCH 014/142] readds type checking to get_cloest_atom as apparently there are plans for that --- code/modules/power/tesla/energy_ball.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 57338ec1ea9..d11aed5a694 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -132,10 +132,12 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, C.dust() return -/proc/get_closest_atom(list, source) +/proc/get_closest_atom(list, source, typetocheck) var/closest_atom var/closest_distance for(var/A in list) + if (typetocheck && !istype(A, typetocheck)) + continue var/distance = get_dist(source, A) if(!closest_atom || closest_distance > distance) closest_distance = distance From 17662960073946f76b2fd89dfce47c6a179628d9 Mon Sep 17 00:00:00 2001 From: GunHog Date: Fri, 29 Jan 2016 18:40:59 -0600 Subject: [PATCH 015/142] Detachment fix Detaching medigun now properly shuts it down --- code/game/mecha/equipment/tools/medical_tools.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index ad4a27f2fdb..b1ef49799e7 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -561,3 +561,8 @@ /obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/action(atom/target) medigun.process_fire(target, loc) + +/obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/detach() + SSobj.processing -= src + medigun.LoseTarget() + return ..() From 902f0ab492146f5a471ad83ea57e286667ea6e34 Mon Sep 17 00:00:00 2001 From: Incoming Date: Sun, 31 Jan 2016 00:48:53 -0500 Subject: [PATCH 016/142] Makes the wild shapeshift spell slightly less terrible. You can choose your form (once) now instead of getting random corgi-d. The forms themselves have been shuffled a bit for usefulnessL * Mouse (small hitbox and vent crawling * Chaos Magicarp (a riskier chaos staff) * Ed209 (STUNS FOR DAYS YO) * Juggernaut (Walling, wallpunching) * Corgi (Meme, hats) --- code/datums/spells/shapeshift.dm | 35 +++++++++++++------------ code/game/gamemodes/wizard/spellbook.dm | 2 +- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/code/datums/spells/shapeshift.dm b/code/datums/spells/shapeshift.dm index 68e3a07825a..bd427adf12f 100644 --- a/code/datums/spells/shapeshift.dm +++ b/code/datums/spells/shapeshift.dm @@ -1,6 +1,6 @@ /obj/effect/proc_holder/spell/targeted/shapeshift - name = "Shapeshift" - desc = "Change shapes" + name = "Wild Shapeshift" + desc = "Take on the shape of an animal for a time to use their natural abilities. Once you've made your choice it cannot be changed." clothes_req = 0 human_req = 0 charge_max = 200 @@ -11,12 +11,26 @@ invocation_type = "shout" action_icon_state = "shapeshift" - var/shapeshift_type = /mob/living/simple_animal/hostile/retaliate/goat + var/shapeshift_type var/list/current_shapes = list() var/list/current_casters = list() + var/list/possible_shapes = list(/mob/living/simple_animal/mouse,\ + /mob/living/simple_animal/pet/dog/corgi,\ + /mob/living/simple_animal/hostile/carp/ranged/chaos,\ + /mob/living/simple_animal/bot/ed209,\ + /mob/living/simple_animal/hostile/construct/armored) /obj/effect/proc_holder/spell/targeted/shapeshift/cast(list/targets,mob/user = usr) for(var/mob/living/M in targets) + if(!shapeshift_type) + var/list/animal_list = list() + for(var/path in possible_shapes) + var/mob/living/simple_animal/A = path + animal_list[initial(A.name)] = path + shapeshift_type = input(M, "Choose Your Animal Form!", "It's Morphing Time!", null) as anything in animal_list + if(!shapeshift_type) //If you aren't gonna decide I am! + shapeshift_type = pick(animal_list) + shapeshift_type = animal_list[shapeshift_type] if(M in current_shapes) Restore(M) else @@ -56,17 +70,4 @@ current_shapes.Remove(shape) shape.mind.transfer_to(caster) - qdel(shape) //Gib it maybe ? - -/obj/effect/proc_holder/spell/targeted/shapeshift/wild - name = "Wild Shapeshift" - desc = "Change into a variety of forms. Most of them deadly. Or inconspicious" - - var/list/possible_shapes = list(/mob/living/simple_animal/pet/dog/corgi,\ - /mob/living/simple_animal/hostile/poison/giant_spider/hunter,\ - /mob/living/simple_animal/hostile/carp/megacarp,\ - /mob/living/simple_animal/hostile/construct/armored) - -/obj/effect/proc_holder/spell/targeted/shapeshift/wild/New() - ..() - shapeshift_type = pick(possible_shapes) \ No newline at end of file + qdel(shape) //Gib it maybe ? \ No newline at end of file diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 2efede8127d..70862aa73fa 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -227,7 +227,7 @@ /datum/spellbook_entry/shapeshift name = "Wild Shapeshift" - spell_type = /obj/effect/proc_holder/spell/targeted/shapeshift/wild + spell_type = /obj/effect/proc_holder/spell/targeted/shapeshift log_name = "WS" category = "Assistance" cost = 1 From 91733e03e36b3b82b0f14c93b1b7f8ded2fc603e Mon Sep 17 00:00:00 2001 From: KazeEspada Date: Mon, 1 Feb 2016 21:22:36 -0700 Subject: [PATCH 017/142] Fixes issue #15131. Guns will now fire point blank correctly. --- code/modules/projectiles/gun.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 509961c4393..9f583c9a9e1 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -147,8 +147,9 @@ return if(flag) - handle_suicide(user, target, params) // - return + if(user.zone_sel.selecting == "mouth") + handle_suicide(user, target, params) + return //Exclude lasertag guns from the CLUMSY check. From 59b158bf4b9b249ee5f4b32069b7515ec074fb9d Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Wed, 3 Feb 2016 12:09:28 -0600 Subject: [PATCH 018/142] Chaplain Weapons --- code/game/gamemodes/cult/runes.dm | 4 +- code/game/gamemodes/handofgod/_handofgod.dm | 2 +- .../gamemodes/miniantags/revenant/revenant.dm | 2 +- code/game/objects/items/weapons/weaponry.dm | 89 +++++++++++++++++++ 4 files changed, 93 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 334ddf90d3b..10c98e466f5 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -296,7 +296,7 @@ var/list/teleport_other_runes = list() return if(offering.null_rod_check()) user << "Something is blocking the Geometer's magic!" - log_game("Sacrifice rune failed - target has null rod") + log_game("Sacrifice rune failed - target has a holy weapon!") fail_invoke() rune_in_use = 0 return @@ -794,7 +794,7 @@ var/list/teleport_other_runes = list() for(var/mob/living/carbon/C in viewers(src)) if(!iscultist(C)) if(C.null_rod_check()) - C << "The null rod suddenly burns hotly before returning to normal!" + C << "The holy weapon suddenly burns hotly before returning to normal!" continue C << "Your blood boils in your veins!" C.take_overall_damage(51,51) diff --git a/code/game/gamemodes/handofgod/_handofgod.dm b/code/game/gamemodes/handofgod/_handofgod.dm index 5591897e264..5e8cfc9187f 100644 --- a/code/game/gamemodes/handofgod/_handofgod.dm +++ b/code/game/gamemodes/handofgod/_handofgod.dm @@ -190,7 +190,7 @@ var/global/list/global_handofgod_structuretypes = list() return 0 var/obj/item/weapon/nullrod/N = locate() in H if(N) - H << "Your null rod prevented the [colour] deity from brainwashing you." + H << "Your holy weapon prevented the [colour] deity from brainwashing you." return 0 if(colour == "red") diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index 0e05f8f4066..4dd757d9514 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -319,7 +319,7 @@ /mob/living/simple_animal/revenant/attackby(obj/item/W, mob/living/user, params) if(istype(W, /obj/item/weapon/nullrod)) visible_message("[src] violently flinches!", \ - "As the null rod passes through you, you feel your essence draining away!") + "As the [W] passes through you, you feel your essence draining away!") adjustBruteLoss(25) //hella effective inhibited = 1 spawn(30) diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 910c3dfc84a..e56800b9486 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -31,11 +31,100 @@ throw_range = 4 throwforce = 10 w_class = 1 + var/reskinned = 0 /obj/item/weapon/nullrod/suicide_act(mob/user) user.visible_message("[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide.") return (BRUTELOSS|FIRELOSS) +/obj/item/weapon/nullrod/AltClick(mob/user) + ..() + if(!user.canUseTopic(user)) + user << "You can't do that right now!" + return + if(!in_range(src, user)) + return + if(reskinned) + return + reskin_holy_weapon(user) + +/obj/item/weapon/nullrod/proc/reskin_holy_weapon(mob/M) + var/choice = input(M,"What theme would you like for your holy weapon?","Holy Weapon Theme") as null|anything in list("null rod", "god hand", "red staff", "blue staff", "claymore", "dark blade", "sord", "scythe") + + if(src && choice && !M.stat && in_range(M,src) && !M.restrained() && M.canmove && !reskinned) + switch(choice) + if("null rod") + M << "On second thought, the null rod suits you just fine." + if("god hand") + icon_state = "disintegrate" + item_state = "disintegrate" + name = "god hand" + desc = "This hand of yours glows with an aweseome power." + flags = ABSTRACT | NODROP + w_class = 5 + if("red staff") + icon_state = "godstaff-red" + item_state = "godstaff-red" + name = "holy staff" + desc = "It has a mysterious, protective aura." + w_class = 5 + force = 5 + slot_flags = SLOT_BACK + block_chance = 50 + if("red staff") + icon_state = "godstaff-red" + item_state = "godstaff-red" + name = "holy staff" + desc = "It has a mysterious, protective aura." + w_class = 5 + force = 5 + slot_flags = SLOT_BACK + block_chance = 50 + if("claymore") + icon_state = "claymore" + item_state = "claymore" + name = "holy claymore" + desc = "A weapon fit for a crusade!" + w_class = 5 + force = 20 + slot_flags = SLOT_BACK|SLOT_BELT + block_chance = 20 + hitsound = 'sound/weapons/bladeslice.ogg' + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + if("dark blade") + icon_state = "cultblade" + item_state = "cultblade" + name = "dark blade" + desc = "Spread the glory of the dark gods!" + w_class = 5 + force = 20 + block_chance = 20 + hitsound = 'sound/weapons/bladeslice.ogg' + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + if("sord") + name = "\improper SORD" + desc = "This thing is so unspeakably shitty you are having a hard time even holding it." + icon_state = "sord" + item_state = "sord" + force = 2 + throwforce = 1 + w_class = 3 + hitsound = 'sound/weapons/bladeslice.ogg' + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + if("scythe") + icon_state = "scythe0" + name = "reaper scythe" + desc = "Ask not for whom the bell tolls..." + force = 15 + w_class = 4 + armour_penetration = 100 + slot_flags = SLOT_BACK + attack_verb = list("chopped", "sliced", "cut", "reaped") + hitsound = 'sound/weapons/bladeslice.ogg' + reskinned = 1 + return + + /obj/item/weapon/sord name = "\improper SORD" desc = "This thing is so unspeakably shitty you are having a hard time even holding it." From f1981271b6aaf0cf24679cfce4d94bb0dc11d1a6 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Wed, 3 Feb 2016 12:42:37 -0600 Subject: [PATCH 019/142] Adds defines for holy weapons --- code/game/objects/items/weapons/weaponry.dm | 62 ++++++++++++++++----- 1 file changed, 49 insertions(+), 13 deletions(-) diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index e56800b9486..e1239d7e1c1 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -1,3 +1,14 @@ +#define NULLROD "null rod" +#define GODHAND "god hand" +#define REDSTAFF "red staff" +#define BLUESTAFF "blue staff" +#define CLAYMORE "claymore" +#define DARKBLADE "dark blade" +#define SORD "sord" +#define SCYTHE "scythe" +#define CHAINSAW "chainsaw hand" + + /obj/item/weapon/banhammer desc = "A banhammer" name = "banhammer" @@ -49,20 +60,24 @@ reskin_holy_weapon(user) /obj/item/weapon/nullrod/proc/reskin_holy_weapon(mob/M) - var/choice = input(M,"What theme would you like for your holy weapon?","Holy Weapon Theme") as null|anything in list("null rod", "god hand", "red staff", "blue staff", "claymore", "dark blade", "sord", "scythe") + var/choice = input(M,"What theme would you like for your holy weapon?","Holy Weapon Theme") as null|anything in list(NULLROD, GODHAND, REDSTAFF, BLUESTAFF, CLAYMORE, DARKBLADE, SORD, SCYTHE, CHAINSAW) if(src && choice && !M.stat && in_range(M,src) && !M.restrained() && M.canmove && !reskinned) switch(choice) - if("null rod") + if(NULLROD) M << "On second thought, the null rod suits you just fine." - if("god hand") + if(GODHAND) icon_state = "disintegrate" item_state = "disintegrate" name = "god hand" - desc = "This hand of yours glows with an aweseome power." + desc = "This hand of yours glows with an aweseome power!" flags = ABSTRACT | NODROP w_class = 5 - if("red staff") + hitsound = 'sound/weapons/sear.ogg' + force = 20 + damtype = BURN + attack_verb = list("punches", "cross counters", "pummels") + if(REDSTAFF) icon_state = "godstaff-red" item_state = "godstaff-red" name = "holy staff" @@ -71,16 +86,16 @@ force = 5 slot_flags = SLOT_BACK block_chance = 50 - if("red staff") - icon_state = "godstaff-red" - item_state = "godstaff-red" + if(BLUESTAFF) + icon_state = "godstaff-blue" + item_state = "godstaff-blue" name = "holy staff" desc = "It has a mysterious, protective aura." w_class = 5 force = 5 slot_flags = SLOT_BACK block_chance = 50 - if("claymore") + if(CLAYMORE) icon_state = "claymore" item_state = "claymore" name = "holy claymore" @@ -91,7 +106,7 @@ block_chance = 20 hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - if("dark blade") + if(DARKBLADE) icon_state = "cultblade" item_state = "cultblade" name = "dark blade" @@ -101,7 +116,7 @@ block_chance = 20 hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - if("sord") + if(SORD) name = "\improper SORD" desc = "This thing is so unspeakably shitty you are having a hard time even holding it." icon_state = "sord" @@ -111,7 +126,7 @@ w_class = 3 hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - if("scythe") + if(SCYTHE) icon_state = "scythe0" name = "reaper scythe" desc = "Ask not for whom the bell tolls..." @@ -121,8 +136,18 @@ slot_flags = SLOT_BACK attack_verb = list("chopped", "sliced", "cut", "reaped") hitsound = 'sound/weapons/bladeslice.ogg' + name = "mounted chainsaw" + if(CHAINSAW) + name = "chainsaw hand" + desc = "Good? Bad? You're the guy with the chainsaw hand." + icon_state = "chainsaw_on" + item_state = "mounted_chainsaw" + flags = NODROP | ABSTRACT + force = 20 + sharpness = IS_SHARP + attack_verb = list("sawed", "torn", "cut", "chopped", "diced") + hitsound = "sound/weapons/chainsawhit.ogg" reskinned = 1 - return /obj/item/weapon/sord @@ -396,3 +421,14 @@ icon_state = "tailwhip" origin_tech = "combat=1" needs_permit = 0 + + +#undef NULLROD +#undef GODHAND +#undef REDSTAFF +#undef BLUESTAFF +#undef CLAYMORE +#undef DARKBLADE +#undef SORD +#undef SCYTHE +#undef CHAINSAW \ No newline at end of file From 08fc1faf47240ba4286cca741899e457a12867c5 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Wed, 3 Feb 2016 13:18:37 -0600 Subject: [PATCH 020/142] Adds three more chaplain weapons --- code/game/objects/items/weapons/weaponry.dm | 32 ++++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index e1239d7e1c1..d4393f4aa59 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -7,6 +7,8 @@ #define SORD "sord" #define SCYTHE "scythe" #define CHAINSAW "chainsaw hand" +#define CLOWNDAGGER "clown dagger" +#define WHIP "whip" /obj/item/weapon/banhammer @@ -60,7 +62,7 @@ reskin_holy_weapon(user) /obj/item/weapon/nullrod/proc/reskin_holy_weapon(mob/M) - var/choice = input(M,"What theme would you like for your holy weapon?","Holy Weapon Theme") as null|anything in list(NULLROD, GODHAND, REDSTAFF, BLUESTAFF, CLAYMORE, DARKBLADE, SORD, SCYTHE, CHAINSAW) + var/choice = input(M,"What theme would you like for your holy weapon?","Holy Weapon Theme") as null|anything in list(NULLROD, GODHAND, REDSTAFF, BLUESTAFF, CLAYMORE, DARKBLADE, SORD, SCYTHE, CHAINSAW, CLOWNDAGGER, WHIP) if(src && choice && !M.stat && in_range(M,src) && !M.restrained() && M.canmove && !reskinned) switch(choice) @@ -76,7 +78,7 @@ hitsound = 'sound/weapons/sear.ogg' force = 20 damtype = BURN - attack_verb = list("punches", "cross counters", "pummels") + attack_verb = list("punched", "cross counterd", "pummeled") if(REDSTAFF) icon_state = "godstaff-red" item_state = "godstaff-red" @@ -104,6 +106,7 @@ force = 20 slot_flags = SLOT_BACK|SLOT_BELT block_chance = 20 + sharpness = IS_SHARP hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") if(DARKBLADE) @@ -114,6 +117,7 @@ w_class = 5 force = 20 block_chance = 20 + sharpness = IS_SHARP hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") if(SORD) @@ -134,6 +138,7 @@ w_class = 4 armour_penetration = 100 slot_flags = SLOT_BACK + sharpness = IS_SHARP attack_verb = list("chopped", "sliced", "cut", "reaped") hitsound = 'sound/weapons/bladeslice.ogg' name = "mounted chainsaw" @@ -142,11 +147,28 @@ desc = "Good? Bad? You're the guy with the chainsaw hand." icon_state = "chainsaw_on" item_state = "mounted_chainsaw" + w_class = 5 flags = NODROP | ABSTRACT force = 20 sharpness = IS_SHARP attack_verb = list("sawed", "torn", "cut", "chopped", "diced") - hitsound = "sound/weapons/chainsawhit.ogg" + hitsound = 'sound/weapons/chainsawhit.ogg' + if(CLOWNDAGGER) + icon = 'icons/obj/wizard.dmi' + icon_state = "honkrender" + item_state = "render" + name = "clown dagger" + desc = "Used for absolutely hilarious sacrafices." + hitsound = 'sound/items/bikehorn.ogg' + sharpness = IS_SHARP + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + if(WHIP) + name = "holy whip" + desc = "What a terrible night to be on Space Station 13." + icon_state = "chain" + item_state = "chain" + attack_verb = list("whipped", "lashed") + hitsound = 'sound/weapons/slash.ogg' //no whip sounds exist reskinned = 1 @@ -431,4 +453,6 @@ #undef DARKBLADE #undef SORD #undef SCYTHE -#undef CHAINSAW \ No newline at end of file +#undef CHAINSAW +#undef CLOWNDAGGER +#undef WHIP \ No newline at end of file From 8c7b15c87e4d9ad81757a68c8cd48e72f6e32661 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Wed, 3 Feb 2016 13:46:39 -0600 Subject: [PATCH 021/142] Uses attackhand for weapon reskin, adds fedora --- code/game/objects/items/weapons/weaponry.dm | 32 ++++++++++++++------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index d4393f4aa59..6ed5d6f7cf6 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -9,6 +9,7 @@ #define CHAINSAW "chainsaw hand" #define CLOWNDAGGER "clown dagger" #define WHIP "whip" +#define FEDORA "athiests fedora" /obj/item/weapon/banhammer @@ -44,19 +45,14 @@ throw_range = 4 throwforce = 10 w_class = 1 - var/reskinned = 0 + var/reskinned = FALSE + var/weapon_type = NULLROD /obj/item/weapon/nullrod/suicide_act(mob/user) user.visible_message("[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide.") return (BRUTELOSS|FIRELOSS) -/obj/item/weapon/nullrod/AltClick(mob/user) - ..() - if(!user.canUseTopic(user)) - user << "You can't do that right now!" - return - if(!in_range(src, user)) - return +/obj/item/weapon/nullrod/attack_hand(mob/user) if(reskinned) return reskin_holy_weapon(user) @@ -169,7 +165,22 @@ item_state = "chain" attack_verb = list("whipped", "lashed") hitsound = 'sound/weapons/slash.ogg' //no whip sounds exist - reskinned = 1 + if(FEDORA) + name = "athiests fedora" + desc = "The brim of the hat is as sharp as your wit. Throwing it at someone would hurt almost as much as disproving the existence of God." + icon_state = "fedora" + item_state = "fedora" + slot_flags = SLOT_HEAD + icon = 'icons/obj/clothing/hats.dmi' + force = 0 + throw_speed = 4 + throw_range = 7 + throwforce = 20 + embed_chance = 100 + + weapon_type = choice + feedback_set_details("chaplain_weapon","[choice]") + reskinned = TRUE /obj/item/weapon/sord @@ -455,4 +466,5 @@ #undef SCYTHE #undef CHAINSAW #undef CLOWNDAGGER -#undef WHIP \ No newline at end of file +#undef WHIP +#undef FEDORA \ No newline at end of file From d226b82a8df1dd7bcde7f2fe4636deddd6a9a288 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Wed, 3 Feb 2016 14:05:05 -0600 Subject: [PATCH 022/142] attack_self, not attack_hand --- code/game/objects/items/weapons/weaponry.dm | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 6ed5d6f7cf6..abd5a72a2a1 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -10,6 +10,7 @@ #define CLOWNDAGGER "clown dagger" #define WHIP "whip" #define FEDORA "athiests fedora" +#define ARMBLADE "dark blessing" /obj/item/weapon/banhammer @@ -39,7 +40,6 @@ desc = "A rod of pure obsidian, its very presence disrupts and dampens the powers of Nar-Sie's followers." icon_state = "nullrod" item_state = "nullrod" - slot_flags = SLOT_BELT force = 15 throw_speed = 3 throw_range = 4 @@ -52,7 +52,7 @@ user.visible_message("[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide.") return (BRUTELOSS|FIRELOSS) -/obj/item/weapon/nullrod/attack_hand(mob/user) +/obj/item/weapon/nullrod/attack_self(mob/user) if(reskinned) return reskin_holy_weapon(user) @@ -110,6 +110,7 @@ item_state = "cultblade" name = "dark blade" desc = "Spread the glory of the dark gods!" + slot_flags = SLOT_BELT w_class = 5 force = 20 block_chance = 20 @@ -121,6 +122,7 @@ desc = "This thing is so unspeakably shitty you are having a hard time even holding it." icon_state = "sord" item_state = "sord" + slot_flags = SLOT_BELT force = 2 throwforce = 1 w_class = 3 @@ -163,6 +165,7 @@ desc = "What a terrible night to be on Space Station 13." icon_state = "chain" item_state = "chain" + slot_flags = SLOT_BELT attack_verb = list("whipped", "lashed") hitsound = 'sound/weapons/slash.ogg' //no whip sounds exist if(FEDORA) @@ -177,6 +180,15 @@ throw_range = 7 throwforce = 20 embed_chance = 100 + if(ARMBLADE) + name = "dark blessing" + desc = "Particularly twisted dieties grant gifts of dubious value." + icon_state = "arm_blade" + item_state = "arm_blade" + flags = ABSTRACT | NODROP + w_class = 5.0 + force = 20 + sharpness = IS_SHARP weapon_type = choice feedback_set_details("chaplain_weapon","[choice]") @@ -467,4 +479,5 @@ #undef CHAINSAW #undef CLOWNDAGGER #undef WHIP -#undef FEDORA \ No newline at end of file +#undef FEDORA +#undef ARMBLADE \ No newline at end of file From d27268f094ff34e69212e07d230ba2392c61b0f5 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Thu, 4 Feb 2016 17:58:47 -0600 Subject: [PATCH 023/142] Grammar fixes, adds carp-sie plushie --- code/game/gamemodes/cult/runes.dm | 12 ++++++----- code/game/gamemodes/handofgod/_handofgod.dm | 2 +- code/game/objects/items/weapons/weaponry.dm | 24 +++++++++++++++------ 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 10c98e466f5..d5e27b6b82d 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -152,7 +152,7 @@ structure_check() searches for nearby cultist structures required for the invoca /mob/proc/null_rod_check() //The null rod, if equipped, will protect the holder from the effects of most runes var/obj/item/weapon/nullrod/N = locate() in src if(N) - return 1 + return N return 0 var/list/teleport_runes = list() @@ -294,9 +294,10 @@ var/list/teleport_other_runes = list() if(!offering) rune_in_use = 0 return - if(offering.null_rod_check()) + var/obj/item/weapon/nullrod/N = offering.null_rod_check() + if(N) user << "Something is blocking the Geometer's magic!" - log_game("Sacrifice rune failed - target has a holy weapon!") + log_game("Sacrifice rune failed - target has a [N]!") fail_invoke() rune_in_use = 0 return @@ -793,8 +794,9 @@ var/list/teleport_other_runes = list() visible_message("[src] briefly bubbles before exploding!") for(var/mob/living/carbon/C in viewers(src)) if(!iscultist(C)) - if(C.null_rod_check()) - C << "The holy weapon suddenly burns hotly before returning to normal!" + var/obj/item/weapon/nullrod/N = C.null_rod_check() + if(N) + C << "\The [N] suddenly burns hotly before returning to normal!" continue C << "Your blood boils in your veins!" C.take_overall_damage(51,51) diff --git a/code/game/gamemodes/handofgod/_handofgod.dm b/code/game/gamemodes/handofgod/_handofgod.dm index 5e8cfc9187f..100f079770d 100644 --- a/code/game/gamemodes/handofgod/_handofgod.dm +++ b/code/game/gamemodes/handofgod/_handofgod.dm @@ -188,7 +188,7 @@ var/global/list/global_handofgod_structuretypes = list() if((follower_mind in red_deity_followers) || (follower_mind in red_deity_prophets) || (follower_mind in blue_deity_followers) || (follower_mind in blue_deity_prophets)) H << "You already belong to a deity. Your strong faith has blocked out the conversion attempt by the followers of the [colour] deity." return 0 - var/obj/item/weapon/nullrod/N = locate() in H + var/obj/item/weapon/nullrod/N = H.null_rod_check() if(N) H << "Your holy weapon prevented the [colour] deity from brainwashing you." return 0 diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index abd5a72a2a1..f38d77f0b9b 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -11,6 +11,7 @@ #define WHIP "whip" #define FEDORA "athiests fedora" #define ARMBLADE "dark blessing" +#define CARP "carp-sie plushie" /obj/item/weapon/banhammer @@ -55,10 +56,11 @@ /obj/item/weapon/nullrod/attack_self(mob/user) if(reskinned) return - reskin_holy_weapon(user) + if(user.mind && (user.mind.assigned_role == "Chaplain")) + reskin_holy_weapon(user) /obj/item/weapon/nullrod/proc/reskin_holy_weapon(mob/M) - var/choice = input(M,"What theme would you like for your holy weapon?","Holy Weapon Theme") as null|anything in list(NULLROD, GODHAND, REDSTAFF, BLUESTAFF, CLAYMORE, DARKBLADE, SORD, SCYTHE, CHAINSAW, CLOWNDAGGER, WHIP) + var/choice = input(M,"What theme would you like for your holy weapon?","Holy Weapon Theme") as null|anything in list(NULLROD, GODHAND, REDSTAFF, BLUESTAFF, CLAYMORE, DARKBLADE, SORD, SCYTHE, CHAINSAW, CLOWNDAGGER, WHIP, FEDORA, ARMBLADE, CARP) if(src && choice && !M.stat && in_range(M,src) && !M.restrained() && M.canmove && !reskinned) switch(choice) @@ -68,13 +70,13 @@ icon_state = "disintegrate" item_state = "disintegrate" name = "god hand" - desc = "This hand of yours glows with an aweseome power!" + desc = "This hand of yours glows with an awesome power!" flags = ABSTRACT | NODROP w_class = 5 hitsound = 'sound/weapons/sear.ogg' force = 20 damtype = BURN - attack_verb = list("punched", "cross counterd", "pummeled") + attack_verb = list("punched", "cross countered", "pummeled") if(REDSTAFF) icon_state = "godstaff-red" item_state = "godstaff-red" @@ -139,7 +141,6 @@ sharpness = IS_SHARP attack_verb = list("chopped", "sliced", "cut", "reaped") hitsound = 'sound/weapons/bladeslice.ogg' - name = "mounted chainsaw" if(CHAINSAW) name = "chainsaw hand" desc = "Good? Bad? You're the guy with the chainsaw hand." @@ -169,7 +170,7 @@ attack_verb = list("whipped", "lashed") hitsound = 'sound/weapons/slash.ogg' //no whip sounds exist if(FEDORA) - name = "athiests fedora" + name = "athiest's fedora" desc = "The brim of the hat is as sharp as your wit. Throwing it at someone would hurt almost as much as disproving the existence of God." icon_state = "fedora" item_state = "fedora" @@ -189,6 +190,14 @@ w_class = 5.0 force = 20 sharpness = IS_SHARP + if(CARP) + name = "carp-sie plushie" + desc = "An adorable stuffed toy that resembles the god of all carp. The teeth look pretty sharp." + icon = 'icons/obj/toy.dmi' + icon_state = "carpplushie" + item_state = "carp_plushie" + attack_verb = list("bitten", "eaten", "fin slapped") + hitsound = 'sound/weapons/bite.ogg' weapon_type = choice feedback_set_details("chaplain_weapon","[choice]") @@ -480,4 +489,5 @@ #undef CLOWNDAGGER #undef WHIP #undef FEDORA -#undef ARMBLADE \ No newline at end of file +#undef ARMBLADE +#undef CARP \ No newline at end of file From f1ae55356233cc7aad0c38a3639da7b75cb48df3 Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Fri, 5 Feb 2016 18:36:32 -0800 Subject: [PATCH 024/142] Makes the qdel/GC system delay soft deletion until the next garbage controller tick This basically ensures that soft deletion happening is slowed down over time if too much is getting deleted, and that hard deletes are delayed for more quiet ticks --- code/controllers/subsystem/garbage.dm | 52 +++++++++++++++++++-------- 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index 108497d7255..79b68e3d971 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -22,7 +22,8 @@ var/datum/subsystem/garbage_collector/SSgarbage var/list/queue = list() // list of refID's of things that should be garbage collected // refID's are associated with the time at which they time out and need to be manually del() // we do this so we aren't constantly locating them and preventing them from being gc'd - + + var/list/tobequeued = list() //We store the references of things to be added to the queue seperately so we can spread out GC overhead over a few ticks var/list/didntgc = list() // list of all types that have failed to GC associated with the number of times that's happened. // the types are stored as strings @@ -52,12 +53,23 @@ var/datum/subsystem/garbage_collector/SSgarbage ..(msg) /datum/subsystem/garbage_collector/fire() + var/time_to_stop = world.timeofday + max_run_time + HandleToBeQueued(time_to_stop) + HandleQueue(time_to_stop) + +//If you see this proc high on the profile, what you are really seeing is the garbage collection/soft delete overhead in byond. +//Don't attempt to optimize, not worth the effort. +/datum/subsystem/garbage_collector/proc/HandleToBeQueued(time_to_stop) + while(tobequeued.len && world.timeofday < time_to_stop) + var/ref = tobequeued[1] + Queue(ref) + tobequeued.Cut(1, 2) + +/datum/subsystem/garbage_collector/proc/HandleQueue(time_to_stop) delslasttick = 0 gcedlasttick = 0 - var/time_to_stop = world.timeofday + max_run_time var/time_to_kill = world.time - collection_timeout // Anything qdel() but not GC'd BEFORE this time needs to be manually del() - - + while(queue.len && world.timeofday < time_to_stop) var/refID = queue[1] if (!refID) @@ -85,15 +97,25 @@ var/datum/subsystem/garbage_collector/SSgarbage ++totalgcs queue.Cut(1, 2) - -/datum/subsystem/garbage_collector/proc/Queue(datum/A, harddel = 0) - if (!istype(A) || !isnull(A.gc_destroyed)) +/datum/subsystem/garbage_collector/proc/QueueForQueuing(datum/A) + if (!istype(A) || !isnull(A.gc_destroyed)) return - A.gc_destroyed = world.time - queue -= "\ref[A]" // Removing any previous references that were GC'd so that the current object will be at the end of the list. - queue["\ref[A]"] = world.time + tobequeued += A -/datum/subsystem/garbage_collector/proc/HardQueue(datum/A, harddel = 0) +/datum/subsystem/garbage_collector/proc/Queue(datum/A) + if (!istype(A) || !isnull(A.gc_destroyed)) + return + var/gctime = world.time + var/refid = "\ref[A]" + + A.gc_destroyed = gctime + + if (queue[refid]) + queue -= "\ref[A]" // Removing any previous references that were GC'd so that the current object will be at the end of the list. + + queue[refid] = gctime + +/datum/subsystem/garbage_collector/proc/HardQueue(datum/A) if (!istype(A) || !isnull(A.gc_destroyed)) return A.gc_destroyed = world.time @@ -117,7 +139,7 @@ var/datum/subsystem/garbage_collector/SSgarbage return switch(hint) if (QDEL_HINT_QUEUE) //qdel should queue the object for deletion. - SSgarbage.Queue(D) + SSgarbage.QueueForQueuing(D) if (QDEL_HINT_LETMELIVE) //qdel should let the object live after calling destory. return if (QDEL_HINT_IWILLGC) //functionally the same as the above. qdel should assume the object will gc on its own, and not check it. @@ -129,7 +151,7 @@ var/datum/subsystem/garbage_collector/SSgarbage if (QDEL_HINT_PUTINPOOL) //qdel will put this object in the pool. PlaceInPool(D, 0) if (QDEL_HINT_FINDREFERENCE)//qdel will, if TESTING is enabled, display all references to this object, then queue the object for deletion. - SSgarbage.Queue(D) + SSgarbage.QueueForQueuing(D) #ifdef TESTING A.find_references() #endif @@ -137,7 +159,7 @@ var/datum/subsystem/garbage_collector/SSgarbage if(!("[D.type]" in SSgarbage.noqdelhint)) SSgarbage.noqdelhint += "[D.type]" testing("WARNING: [D.type] is not returning a qdel hint. It is being placed in the queue. Further instances of this type will also be queued.") - SSgarbage.Queue(D) + SSgarbage.QueueForQueuing(D) // Returns 1 if the object has been queued for deletion. /proc/qdeleted(datum/D) @@ -249,4 +271,4 @@ var/datum/subsystem/garbage_collector/SSgarbage dat += "[path] - [tmplist[path]] times
" usr << browse(dat, "window=qdeletedlog") -#endif \ No newline at end of file +#endif From 0810a6ec8ec8deb524d9eddb00b7dd224e11ca0b Mon Sep 17 00:00:00 2001 From: Lzimann Date: Sat, 6 Feb 2016 01:30:00 -0200 Subject: [PATCH 025/142] Allows hardsuits to carry RPDs in their suit slots --- code/modules/clothing/spacesuits/hardsuit.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 93fa41ae868..30654faaed0 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -70,7 +70,7 @@ icon_state = "hardsuit-engineering" item_state = "eng_hardsuit" armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals,/obj/item/device/t_scanner, /obj/item/weapon/rcd) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals,/obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/pipe_dispenser) siemens_coefficient = 0 var/obj/item/clothing/head/helmet/space/hardsuit/helmet action_button_name = "Toggle Helmet" From 6cef32be12c9099c1fa56e14abac9134eafb3295 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sat, 6 Feb 2016 07:11:51 -0600 Subject: [PATCH 026/142] Adds instagib mode to CTF --- code/modules/awaymissions/capture_the_flag.dm | 16 ++++++++++++++-- code/modules/clothing/shoes/miscellaneous.dm | 3 +++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index 41342e2afbf..c5ed4c5eb66 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -1,7 +1,6 @@ #define WHITE_TEAM "white" #define RED_TEAM "red" #define BLUE_TEAM "blue" -#define CTF_RESPAWN_COOLDOWN 150 // 15 seconds #define FLAG_RETURN_TIME 200 // 20 seconds @@ -97,6 +96,7 @@ //Capture the Flag scoring var/points = 0 var/points_to_win = 3 + var/respawn_cooldown = 150 //15 seconds //Capture Point/King of the Hill scoring var/control_points = 0 var/control_points_to_win = 180 @@ -130,7 +130,7 @@ if(ticker.current_state != GAME_STATE_PLAYING) return if(user.ckey in team_members) - if(user.mind.current && user.mind.current.timeofdeath + CTF_RESPAWN_COOLDOWN > world.time) + if(user.mind.current && user.mind.current.timeofdeath + respawn_cooldown > world.time) user << "It must be more than 15 seconds from your last death to respawn!" return var/client/new_team_member = user.client @@ -228,10 +228,18 @@ ears = /obj/item/device/radio/headset/syndicate/alt suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/red +/datum/outfit/ctf/red/instagib + r_hand = /obj/item/weapon/gun/energy/laser/instakill/red + shoes = /obj/item/clothing/shoes/jackboots/fast + /datum/outfit/ctf/blue ears = /obj/item/device/radio/headset/headset_cent/commander suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/blue +/datum/outfit/ctf/blue/instagib + r_hand = /obj/item/weapon/gun/energy/laser/instakill/blue + shoes = /obj/item/clothing/shoes/jackboots/fast + /datum/outfit/ctf/red/post_equip(mob/living/carbon/human/H) var/obj/item/device/radio/R = H.ears R.set_frequency(SYND_FREQ) @@ -340,4 +348,8 @@ if(CTF.ctf_enabled && (user.ckey in CTF.team_members)) controlling = CTF icon_state = "dominator-[CTF.team]" + for(var/mob/M in player_list) + var/area/mob_area = get_area(M) + if(istype(mob_area, /area/ctf)) + M << "[user.real_name] has captured \the [src], claiming it for [CTF.team]! Go take it back!" break diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index a35163ba868..190a09a1643 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -103,6 +103,9 @@ burn_state = FIRE_PROOF can_hold_items = 1 +/obj/item/clothing/shoes/jackboots/fast + slowdown = -1 + /obj/item/clothing/shoes/winterboots name = "winter boots" desc = "Boots lined with 'synthetic' animal fur." From 7075b1f16134f4fcbb4c475d9d6564121546d2c7 Mon Sep 17 00:00:00 2001 From: AnturK Date: Sat, 6 Feb 2016 14:27:49 +0100 Subject: [PATCH 027/142] Fixes bot repair --- code/modules/mob/living/simple_animal/bot/bot.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index aaa61f49a39..6bc40cdd8d4 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -282,7 +282,7 @@ return var/obj/item/weapon/weldingtool/WT = W if(WT.remove_fuel(0, user)) - health = min(maxHealth, health+10) + adjustHealth(-10) user.visible_message("[user] repairs [src]!","You repair [src].") else user << "The welder must be on for this task!" From 9f659fd0d03f576e386a8e852cfb9a85abfe3715 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sat, 6 Feb 2016 08:55:59 -0600 Subject: [PATCH 028/142] Adds an easy way for admins to enable instagib mode --- code/modules/awaymissions/capture_the_flag.dm | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index c5ed4c5eb66..c8c700f8bff 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -2,6 +2,8 @@ #define RED_TEAM "red" #define BLUE_TEAM "blue" #define FLAG_RETURN_TIME 200 // 20 seconds +#define INSTAGIB_RESPAWN 50 //5 seconds +#define DEFAULT_RESPAWN 150 //15 seconds @@ -96,13 +98,14 @@ //Capture the Flag scoring var/points = 0 var/points_to_win = 3 - var/respawn_cooldown = 150 //15 seconds + var/respawn_cooldown = DEFAULT_RESPAWN //Capture Point/King of the Hill scoring var/control_points = 0 var/control_points_to_win = 180 var/list/team_members = list() var/ctf_enabled = FALSE var/ctf_gear = /datum/outfit/ctf + var/instagib_gear = /datum/outfit/ctf/instagib /obj/machinery/capture_the_flag/New() ..() @@ -117,12 +120,14 @@ icon_state = "syndbeacon" team = RED_TEAM ctf_gear = /datum/outfit/ctf/red + instagib_gear = /datum/outfit/ctf/red/instagib /obj/machinery/capture_the_flag/blue name = "Blue CTF Controller" icon_state = "bluebeacon" team = BLUE_TEAM ctf_gear = /datum/outfit/ctf/blue + instagib_gear = /datum/outfit/ctf/blue/instagib /obj/machinery/capture_the_flag/attack_ghost(mob/user) if(ctf_enabled == FALSE) @@ -131,7 +136,7 @@ return if(user.ckey in team_members) if(user.mind.current && user.mind.current.timeofdeath + respawn_cooldown > world.time) - user << "It must be more than 15 seconds from your last death to respawn!" + user << "It must be more than [respawn_cooldown/10] seconds from your last death to respawn!" return var/client/new_team_member = user.client dust_old(user) @@ -180,8 +185,6 @@ if(points >= points_to_win) victory() - - /obj/machinery/capture_the_flag/proc/victory() for(var/mob/M in mob_list) var/area/mob_area = get_area(M) @@ -203,6 +206,13 @@ spawn(300) CTF.ctf_enabled = TRUE + +/obj/machinery/capture_the_flag/proc/instagib_mode() + for(var/obj/machinery/capture_the_flag/CTF in machines) + if(CTF.ctf_enabled == TRUE) + CTF.ctf_gear = CTF.instagib_gear + CTF.respawn_cooldown = INSTAGIB_RESPAWN + /obj/item/weapon/gun/projectile/automatic/pistol/deagle/CTF desc = "This looks like it could really hurt in melee." force = 75 @@ -224,6 +234,10 @@ r_pocket = /obj/item/ammo_box/magazine/wt550m9 r_hand = /obj/item/weapon/gun/projectile/automatic/wt550/CTF +/datum/outfit/ctf/instagib + r_hand = /obj/item/weapon/gun/energy/laser/instakill + shoes = /obj/item/clothing/shoes/jackboots/fast + /datum/outfit/ctf/red ears = /obj/item/device/radio/headset/syndicate/alt suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf/red From 55f9adfa871b205ca1be95f39958ceb2c9b5316c Mon Sep 17 00:00:00 2001 From: TrustyGun Date: Sat, 6 Feb 2016 10:41:38 -0500 Subject: [PATCH 029/142] The janitor's belt can now hold his keys This always bothered me. --- code/game/objects/items/weapons/storage/belt.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index db6b4701830..4b6ef83f2e2 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -186,6 +186,7 @@ /obj/item/weapon/reagent_containers/spray, /obj/item/weapon/soap, /obj/item/weapon/holosign_creator + /obj/item/key/janitor ) /obj/item/weapon/storage/belt/bandolier From 99f2200d10d91367533da393d49675ebfea5da58 Mon Sep 17 00:00:00 2001 From: TrustyGun Date: Sat, 6 Feb 2016 10:58:56 -0500 Subject: [PATCH 030/142] doh --- code/game/objects/items/weapons/storage/belt.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 4b6ef83f2e2..f04f3e31090 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -185,7 +185,7 @@ /obj/item/device/flashlight, /obj/item/weapon/reagent_containers/spray, /obj/item/weapon/soap, - /obj/item/weapon/holosign_creator + /obj/item/weapon/holosign_creator, /obj/item/key/janitor ) From 66f8d450ac47f2c0e9dad6adebe8cb3ef377839f Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sat, 6 Feb 2016 12:10:48 -0600 Subject: [PATCH 031/142] Chaplain weapon code cleanup --- .../objects/items/weapons/holy_weapons.dm | 235 ++++++++++++++++++ code/game/objects/items/weapons/weaponry.dm | 198 --------------- tgstation.dme | 1 + 3 files changed, 236 insertions(+), 198 deletions(-) create mode 100644 code/game/objects/items/weapons/holy_weapons.dm diff --git a/code/game/objects/items/weapons/holy_weapons.dm b/code/game/objects/items/weapons/holy_weapons.dm new file mode 100644 index 00000000000..fd309e8650a --- /dev/null +++ b/code/game/objects/items/weapons/holy_weapons.dm @@ -0,0 +1,235 @@ +#define NULLROD "null rod" +#define GODHAND "god hand" +#define REDSTAFF "red staff" +#define BLUESTAFF "blue staff" +#define CLAYMORE "claymore" +#define DARKBLADE "dark blade" +#define SORD "sord" +#define SCYTHE "scythe" +#define CHAINSAW "chainsaw hand" +#define CLOWNDAGGER "clown dagger" +#define WHIP "whip" +#define FEDORA "athiests fedora" +#define ARMBLADE "dark blessing" +#define CARP "carp-sie plushie" + + +/obj/item/weapon/nullrod + name = "null rod" + desc = "A rod of pure obsidian, its very presence disrupts and dampens the powers of Nar-Sie's followers." + icon_state = "nullrod" + item_state = "nullrod" + force = 15 + throw_speed = 3 + throw_range = 4 + throwforce = 10 + w_class = 1 + var/reskinned = FALSE + +/obj/item/weapon/nullrod/suicide_act(mob/user) + user.visible_message("[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide.") + return (BRUTELOSS|FIRELOSS) + +/obj/item/weapon/nullrod/attack_self(mob/user) + if(reskinned) + return + if(user.mind && (user.mind.assigned_role == "Chaplain")) + reskin_holy_weapon(user) + +/obj/item/weapon/nullrod/proc/reskin_holy_weapon(mob/M) + var/choice = input(M,"What theme would you like for your holy weapon?","Holy Weapon Theme") as null|anything in list(NULLROD, GODHAND, REDSTAFF, BLUESTAFF, CLAYMORE, DARKBLADE, SORD, SCYTHE, CHAINSAW, CLOWNDAGGER, WHIP, FEDORA, ARMBLADE, CARP) + + var/obj/item/weapon/nullrod/holy_weapon + + if(src && choice && !M.stat && in_range(M,src) && !M.restrained() && M.canmove && !reskinned) + switch(choice) + if(NULLROD) + M << "On second thought, the null rod suits you just fine." + if(GODHAND) + holy_weapon = new /obj/item/weapon/nullrod/godhand + if(REDSTAFF) + holy_weapon = new /obj/item/weapon/nullrod/staff + if(BLUESTAFF) + holy_weapon = new /obj/item/weapon/nullrod/staff/blue + if(CLAYMORE) + holy_weapon = new /obj/item/weapon/nullrod/claymore + if(DARKBLADE) + holy_weapon = new /obj/item/weapon/nullrod/darkblade + if(SORD) + holy_weapon = new /obj/item/weapon/nullrod/sord + if(SCYTHE) + holy_weapon = new /obj/item/weapon/nullrod/scythe + if(CHAINSAW) + holy_weapon = new /obj/item/weapon/nullrod/chainsaw + if(CLOWNDAGGER) + holy_weapon = new /obj/item/weapon/nullrod/clown + if(WHIP) + holy_weapon = new /obj/item/weapon/nullrod/whip + if(FEDORA) + holy_weapon = new /obj/item/weapon/nullrod/fedora + if(ARMBLADE) + holy_weapon = new /obj/item/weapon/nullrod/armblade + if(CARP) + holy_weapon = new /obj/item/weapon/nullrod/carp + feedback_set_details("chaplain_weapon","[choice]") + + if(holy_weapon) + holy_weapon.reskinned = TRUE + M.unEquip(src) + M.put_in_active_hand(holy_weapon) + qdel(src) + + +/obj/item/weapon/nullrod/godhand + icon_state = "disintegrate" + item_state = "disintegrate" + name = "god hand" + desc = "This hand of yours glows with an awesome power!" + flags = ABSTRACT | NODROP + w_class = 5 + hitsound = 'sound/weapons/sear.ogg' + force = 20 + damtype = BURN + attack_verb = list("punched", "cross countered", "pummeled") + +/obj/item/weapon/nullrod/staff + icon_state = "godstaff-red" + item_state = "godstaff-red" + name = "holy staff" + desc = "It has a mysterious, protective aura." + w_class = 5 + force = 5 + slot_flags = SLOT_BACK + block_chance = 50 + + +/obj/item/weapon/nullrod/staff/blue + icon_state = "godstaff-blue" + item_state = "godstaff-blue" + +/obj/item/weapon/nullrod/claymore + icon_state = "claymore" + item_state = "claymore" + name = "holy claymore" + desc = "A weapon fit for a crusade!" + w_class = 5 + force = 20 + slot_flags = SLOT_BACK|SLOT_BELT + block_chance = 20 + sharpness = IS_SHARP + hitsound = 'sound/weapons/bladeslice.ogg' + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + +/obj/item/weapon/nullrod/darkblade + icon_state = "cultblade" + item_state = "cultblade" + name = "dark blade" + desc = "Spread the glory of the dark gods!" + slot_flags = SLOT_BELT + w_class = 5 + force = 20 + block_chance = 20 + sharpness = IS_SHARP + hitsound = 'sound/weapons/bladeslice.ogg' + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + +/obj/item/weapon/nullrod/sord + name = "\improper SORD" + desc = "This thing is so unspeakably shitty you are having a hard time even holding it." + icon_state = "sord" + item_state = "sord" + slot_flags = SLOT_BELT + force = 2 + throwforce = 1 + w_class = 3 + hitsound = 'sound/weapons/bladeslice.ogg' + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + +/obj/item/weapon/nullrod/scythe + icon_state = "scythe0" + name = "reaper scythe" + desc = "Ask not for whom the bell tolls..." + force = 15 + w_class = 4 + armour_penetration = 100 + slot_flags = SLOT_BACK + sharpness = IS_SHARP + attack_verb = list("chopped", "sliced", "cut", "reaped") + +/obj/item/weapon/nullrod/chainsaw + name = "chainsaw hand" + desc = "Good? Bad? You're the guy with the chainsaw hand." + icon_state = "chainsaw_on" + item_state = "mounted_chainsaw" + w_class = 5 + flags = NODROP | ABSTRACT + force = 20 + sharpness = IS_SHARP + attack_verb = list("sawed", "torn", "cut", "chopped", "diced") + hitsound = 'sound/weapons/chainsawhit.ogg' + +/obj/item/weapon/nullrod/clown + icon = 'icons/obj/wizard.dmi' + icon_state = "honkrender" + item_state = "render" + name = "clown dagger" + desc = "Used for absolutely hilarious sacrafices." + hitsound = 'sound/items/bikehorn.ogg' + sharpness = IS_SHARP + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") + +/obj/item/weapon/nullrod/whip + name = "holy whip" + desc = "What a terrible night to be on Space Station 13." + icon_state = "chain" + item_state = "chain" + slot_flags = SLOT_BELT + attack_verb = list("whipped", "lashed") + +/obj/item/weapon/nullrod/fedora + name = "athiest's fedora" + desc = "The brim of the hat is as sharp as your wit. Throwing it at someone would hurt almost as much as disproving the existence of God." + icon_state = "fedora" + item_state = "fedora" + slot_flags = SLOT_HEAD + icon = 'icons/obj/clothing/hats.dmi' + force = 0 + throw_speed = 4 + throw_range = 7 + throwforce = 20 + +/obj/item/weapon/nullrod/armblade + name = "dark blessing" + desc = "Particularly twisted dieties grant gifts of dubious value." + icon_state = "arm_blade" + item_state = "arm_blade" + flags = ABSTRACT | NODROP + w_class = 5.0 + force = 20 + sharpness = IS_SHARP + +/obj/item/weapon/nullrod/carp + name = "carp-sie plushie" + desc = "An adorable stuffed toy that resembles the god of all carp. The teeth look pretty sharp." + icon = 'icons/obj/toy.dmi' + icon_state = "carpplushie" + item_state = "carp_plushie" + attack_verb = list("bitten", "eaten", "fin slapped") + hitsound = 'sound/weapons/bite.ogg' + + + +#undef NULLROD +#undef GODHAND +#undef REDSTAFF +#undef BLUESTAFF +#undef CLAYMORE +#undef DARKBLADE +#undef SORD +#undef SCYTHE +#undef CHAINSAW +#undef CLOWNDAGGER +#undef WHIP +#undef FEDORA +#undef ARMBLADE +#undef CARP \ No newline at end of file diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index f38d77f0b9b..60dadbe2fa0 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -1,17 +1,3 @@ -#define NULLROD "null rod" -#define GODHAND "god hand" -#define REDSTAFF "red staff" -#define BLUESTAFF "blue staff" -#define CLAYMORE "claymore" -#define DARKBLADE "dark blade" -#define SORD "sord" -#define SCYTHE "scythe" -#define CHAINSAW "chainsaw hand" -#define CLOWNDAGGER "clown dagger" -#define WHIP "whip" -#define FEDORA "athiests fedora" -#define ARMBLADE "dark blessing" -#define CARP "carp-sie plushie" /obj/item/weapon/banhammer @@ -35,175 +21,6 @@ user << "You have BANNED [M]" playsound(loc, 'sound/effects/adminhelp.ogg', 15) //keep it at 15% volume so people don't jump out of their skin too much - -/obj/item/weapon/nullrod - name = "null rod" - desc = "A rod of pure obsidian, its very presence disrupts and dampens the powers of Nar-Sie's followers." - icon_state = "nullrod" - item_state = "nullrod" - force = 15 - throw_speed = 3 - throw_range = 4 - throwforce = 10 - w_class = 1 - var/reskinned = FALSE - var/weapon_type = NULLROD - -/obj/item/weapon/nullrod/suicide_act(mob/user) - user.visible_message("[user] is impaling \himself with the [src.name]! It looks like \he's trying to commit suicide.") - return (BRUTELOSS|FIRELOSS) - -/obj/item/weapon/nullrod/attack_self(mob/user) - if(reskinned) - return - if(user.mind && (user.mind.assigned_role == "Chaplain")) - reskin_holy_weapon(user) - -/obj/item/weapon/nullrod/proc/reskin_holy_weapon(mob/M) - var/choice = input(M,"What theme would you like for your holy weapon?","Holy Weapon Theme") as null|anything in list(NULLROD, GODHAND, REDSTAFF, BLUESTAFF, CLAYMORE, DARKBLADE, SORD, SCYTHE, CHAINSAW, CLOWNDAGGER, WHIP, FEDORA, ARMBLADE, CARP) - - if(src && choice && !M.stat && in_range(M,src) && !M.restrained() && M.canmove && !reskinned) - switch(choice) - if(NULLROD) - M << "On second thought, the null rod suits you just fine." - if(GODHAND) - icon_state = "disintegrate" - item_state = "disintegrate" - name = "god hand" - desc = "This hand of yours glows with an awesome power!" - flags = ABSTRACT | NODROP - w_class = 5 - hitsound = 'sound/weapons/sear.ogg' - force = 20 - damtype = BURN - attack_verb = list("punched", "cross countered", "pummeled") - if(REDSTAFF) - icon_state = "godstaff-red" - item_state = "godstaff-red" - name = "holy staff" - desc = "It has a mysterious, protective aura." - w_class = 5 - force = 5 - slot_flags = SLOT_BACK - block_chance = 50 - if(BLUESTAFF) - icon_state = "godstaff-blue" - item_state = "godstaff-blue" - name = "holy staff" - desc = "It has a mysterious, protective aura." - w_class = 5 - force = 5 - slot_flags = SLOT_BACK - block_chance = 50 - if(CLAYMORE) - icon_state = "claymore" - item_state = "claymore" - name = "holy claymore" - desc = "A weapon fit for a crusade!" - w_class = 5 - force = 20 - slot_flags = SLOT_BACK|SLOT_BELT - block_chance = 20 - sharpness = IS_SHARP - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - if(DARKBLADE) - icon_state = "cultblade" - item_state = "cultblade" - name = "dark blade" - desc = "Spread the glory of the dark gods!" - slot_flags = SLOT_BELT - w_class = 5 - force = 20 - block_chance = 20 - sharpness = IS_SHARP - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - if(SORD) - name = "\improper SORD" - desc = "This thing is so unspeakably shitty you are having a hard time even holding it." - icon_state = "sord" - item_state = "sord" - slot_flags = SLOT_BELT - force = 2 - throwforce = 1 - w_class = 3 - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - if(SCYTHE) - icon_state = "scythe0" - name = "reaper scythe" - desc = "Ask not for whom the bell tolls..." - force = 15 - w_class = 4 - armour_penetration = 100 - slot_flags = SLOT_BACK - sharpness = IS_SHARP - attack_verb = list("chopped", "sliced", "cut", "reaped") - hitsound = 'sound/weapons/bladeslice.ogg' - if(CHAINSAW) - name = "chainsaw hand" - desc = "Good? Bad? You're the guy with the chainsaw hand." - icon_state = "chainsaw_on" - item_state = "mounted_chainsaw" - w_class = 5 - flags = NODROP | ABSTRACT - force = 20 - sharpness = IS_SHARP - attack_verb = list("sawed", "torn", "cut", "chopped", "diced") - hitsound = 'sound/weapons/chainsawhit.ogg' - if(CLOWNDAGGER) - icon = 'icons/obj/wizard.dmi' - icon_state = "honkrender" - item_state = "render" - name = "clown dagger" - desc = "Used for absolutely hilarious sacrafices." - hitsound = 'sound/items/bikehorn.ogg' - sharpness = IS_SHARP - attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - if(WHIP) - name = "holy whip" - desc = "What a terrible night to be on Space Station 13." - icon_state = "chain" - item_state = "chain" - slot_flags = SLOT_BELT - attack_verb = list("whipped", "lashed") - hitsound = 'sound/weapons/slash.ogg' //no whip sounds exist - if(FEDORA) - name = "athiest's fedora" - desc = "The brim of the hat is as sharp as your wit. Throwing it at someone would hurt almost as much as disproving the existence of God." - icon_state = "fedora" - item_state = "fedora" - slot_flags = SLOT_HEAD - icon = 'icons/obj/clothing/hats.dmi' - force = 0 - throw_speed = 4 - throw_range = 7 - throwforce = 20 - embed_chance = 100 - if(ARMBLADE) - name = "dark blessing" - desc = "Particularly twisted dieties grant gifts of dubious value." - icon_state = "arm_blade" - item_state = "arm_blade" - flags = ABSTRACT | NODROP - w_class = 5.0 - force = 20 - sharpness = IS_SHARP - if(CARP) - name = "carp-sie plushie" - desc = "An adorable stuffed toy that resembles the god of all carp. The teeth look pretty sharp." - icon = 'icons/obj/toy.dmi' - icon_state = "carpplushie" - item_state = "carp_plushie" - attack_verb = list("bitten", "eaten", "fin slapped") - hitsound = 'sound/weapons/bite.ogg' - - weapon_type = choice - feedback_set_details("chaplain_weapon","[choice]") - reskinned = TRUE - - /obj/item/weapon/sord name = "\improper SORD" desc = "This thing is so unspeakably shitty you are having a hard time even holding it." @@ -476,18 +293,3 @@ origin_tech = "combat=1" needs_permit = 0 - -#undef NULLROD -#undef GODHAND -#undef REDSTAFF -#undef BLUESTAFF -#undef CLAYMORE -#undef DARKBLADE -#undef SORD -#undef SCYTHE -#undef CHAINSAW -#undef CLOWNDAGGER -#undef WHIP -#undef FEDORA -#undef ARMBLADE -#undef CARP \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index a0ba116b1d6..89e5119ab24 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -643,6 +643,7 @@ #include "code\game\objects\items\weapons\flamethrower.dm" #include "code\game\objects\items\weapons\gift_wrappaper.dm" #include "code\game\objects\items\weapons\handcuffs.dm" +#include "code\game\objects\items\weapons\holy_weapons.dm" #include "code\game\objects\items\weapons\janisigns.dm" #include "code\game\objects\items\weapons\kitchen.dm" #include "code\game\objects\items\weapons\manuals.dm" From b75bea58b13382f70c6d1e7ef24a391ccbea31f7 Mon Sep 17 00:00:00 2001 From: KazeEspada Date: Sat, 6 Feb 2016 11:15:47 -0700 Subject: [PATCH 032/142] *click* --- code/modules/projectiles/gun.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 9f583c9a9e1..0d989c2093f 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -144,6 +144,7 @@ return if(!can_shoot()) //Just because you can pull the trigger doesn't mean it can't shoot. + shoot_with_empty_chamber(user) return if(flag) From 688276008d34e649e846a89ab95e416f8a583af1 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sat, 6 Feb 2016 14:37:11 -0600 Subject: [PATCH 033/142] Updated desc --- .../projectiles/guns/projectile/rechargable_magazine.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/projectiles/guns/projectile/rechargable_magazine.dm b/code/modules/projectiles/guns/projectile/rechargable_magazine.dm index 06fd9b49731..39129ff1248 100644 --- a/code/modules/projectiles/guns/projectile/rechargable_magazine.dm +++ b/code/modules/projectiles/guns/projectile/rechargable_magazine.dm @@ -2,6 +2,7 @@ /obj/item/ammo_box/magazine/recharge name = "power pack" + desc = "A rechargeable, detachable battery that serves as a magazine for laser rifles." icon_state = "oldrifle-20" ammo_type = /obj/item/ammo_casing/caseless/laser caliber = "laser" @@ -36,12 +37,13 @@ can_suppress = 0 burst_size = 0 action_button_name = null + fire_sound = 'sound/weapons/Laser.ogg' /obj/item/weapon/gun/projectile/automatic/laser/process_chamber(eject_casing = 0, empty_chamber = 1) ..() /obj/item/weapon/gun/projectile/automatic/laser/update_icon() - ..() + desc = "[initial(desc)] It has [stored_ammo.len] shots\s left." icon_state = "oldrifle[magazine ? "-[Ceiling(get_ammo(0)/4)*4]" : ""]" return \ No newline at end of file From ce53241cf3616397a77c2e0164756a6ba1729ea9 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sat, 6 Feb 2016 14:46:14 -0600 Subject: [PATCH 034/142] But this time it actually compiles --- .../projectiles/guns/projectile/rechargable_magazine.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/projectiles/guns/projectile/rechargable_magazine.dm b/code/modules/projectiles/guns/projectile/rechargable_magazine.dm index 39129ff1248..d24dd02c71b 100644 --- a/code/modules/projectiles/guns/projectile/rechargable_magazine.dm +++ b/code/modules/projectiles/guns/projectile/rechargable_magazine.dm @@ -9,7 +9,7 @@ max_ammo = 20 /obj/item/ammo_box/magazine/recharge/update_icon() - ..() + desc = "[initial(desc)] It has [stored_ammo.len] shots\s left." icon_state = "oldrifle-[round(ammo_count(),4)]" @@ -44,6 +44,6 @@ /obj/item/weapon/gun/projectile/automatic/laser/update_icon() - desc = "[initial(desc)] It has [stored_ammo.len] shots\s left." + ..() icon_state = "oldrifle[magazine ? "-[Ceiling(get_ammo(0)/4)*4]" : ""]" return \ No newline at end of file From 6c4d74959952afa97af23b3c3e1ff389c909b522 Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Sat, 6 Feb 2016 15:21:54 -0600 Subject: [PATCH 035/142] Fix missing parent calls in portable atmos --- code/modules/atmospherics/machinery/portable/canister.dm | 5 +++-- code/modules/atmospherics/machinery/portable/scrubber.dm | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 5bef5a4ffd7..6bc94a8ff35 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -82,11 +82,11 @@ /obj/machinery/portable_atmospherics/canister/proc/create_gas() if(gas_type) - air_contents.assert_gas(gas_type) + air_contents.add_gas(gas_type) air_contents.gases[gas_type][MOLES] = (maximum_pressure * filled) * air_contents.volume / (R_IDEAL_GAS_EQUATION * air_contents.temperature) /obj/machinery/portable_atmospherics/canister/air/create_gas() - air_contents.assert_gases("o2","n2") + air_contents.add_gases("o2","n2") air_contents.gases["o2"][MOLES] = (O2STANDARD * maximum_pressure * filled) * air_contents.volume / (R_IDEAL_GAS_EQUATION * air_contents.temperature) air_contents.gases["n2"][MOLES] = (N2STANDARD * maximum_pressure * filled) * air_contents.volume / (R_IDEAL_GAS_EQUATION * air_contents.temperature) @@ -167,6 +167,7 @@ holding = null /obj/machinery/portable_atmospherics/canister/process_atmos() + ..() if(destroyed) return PROCESS_KILL if(!valve_open) diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm index 9a0bcdde173..6aa17ea78e2 100644 --- a/code/modules/atmospherics/machinery/portable/scrubber.dm +++ b/code/modules/atmospherics/machinery/portable/scrubber.dm @@ -25,6 +25,7 @@ overlays += "scrubber-connector" /obj/machinery/portable_atmospherics/scrubber/process_atmos() + ..() if(!on) return @@ -44,7 +45,7 @@ filtered.temperature = filtering.temperature for(var/gas in filtering.gases & scrubbing) - filtered.assert_gas(gas) + filtered.add_gas(gas) filtered.gases[gas][MOLES] = filtering.gases[gas][MOLES] // Shuffle the "bad" gasses to the filtered mixture. filtering.gases[gas][MOLES] = 0 filtering.garbage_collect() // Now that the gasses are set to 0, clean up the mixture. From 8ae0bbab8965699289930c3c6e6b09583b12e47c Mon Sep 17 00:00:00 2001 From: bgobandit Date: Sat, 6 Feb 2016 19:23:18 -0500 Subject: [PATCH 036/142] Beepsky now drops an actual whiskey shot upon death. --- code/modules/mob/living/simple_animal/bot/secbot.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 730fe56aaaa..9c474116e6a 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -41,7 +41,7 @@ var/turf/Tsec = get_turf(src) new /obj/item/weapon/stock_parts/cell/potato(Tsec) var/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/S = new(Tsec) - S.list_reagents = list("whiskey" = 15) + S.reagents.add_reagent("whiskey", 15) S.on_reagent_change() ..() From c28c1203cd844898ebe9d4ebb2a6f7a45ae7863e Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Sat, 6 Feb 2016 19:32:30 -0500 Subject: [PATCH 037/142] Adds five new blob chemicals. Blob mobs now heal for 2.5% of their maxhealth when blob_act()ed, basically whenever they're on the blob Blob expansion no longer has a chance to fail inversely proportional with the expanding blob's health. Blobbernauts have slight color differences. --- code/game/gamemodes/blob/blobs/blob_mobs.dm | 7 +- code/game/gamemodes/blob/powers.dm | 4 +- code/game/gamemodes/blob/theblob.dm | 6 +- code/game/objects/effects/overlays.dm | 8 + .../chemistry/reagents/blob_reagents.dm | 174 +++++++++++++++--- icons/mob/blob.dmi | Bin 464873 -> 465546 bytes 6 files changed, 161 insertions(+), 38 deletions(-) diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index 895e025eb02..5058c2d6b3a 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -19,6 +19,7 @@ color = overmind.blob_reagent_datum.color /mob/living/simple_animal/hostile/blob/blob_act() + adjustHealth(-maxHealth*0.025) return /mob/living/simple_animal/hostile/blob/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) @@ -60,7 +61,7 @@ /mob/living/simple_animal/hostile/blob/blobspore/Life() if(!is_zombie && isturf(src.loc)) - for(var/mob/living/carbon/human/H in oview(src,1)) //Only for corpse right next to/on same tile + for(var/mob/living/carbon/human/H in view(src,1)) //Only for corpse right next to/on same tile if(H.stat == DEAD) Zombify(H) break @@ -89,7 +90,7 @@ human_overlays = H.overlays update_icons() H.loc = src - loc.visible_message("The corpse of [H.name] suddenly rises!") + visible_message("The corpse of [H.name] suddenly rises!") /mob/living/simple_animal/hostile/blob/blobspore/death(gibbed) ..(1) @@ -173,7 +174,7 @@ if(overmind) var/mob/living/L = target var/mob_protection = L.get_permeability_protection() - overmind.blob_reagent_datum.reaction_mob(L, VAPOR, 20, 0, mob_protection)//this will do between 10 and 20 damage(reduced by mob protection), depending on chemical, plus 4 from base brute damage. + overmind.blob_reagent_datum.reaction_mob(L, VAPOR, 20, 0, mob_protection, overmind)//this will do between 10 and 20 damage(reduced by mob protection), depending on chemical, plus 4 from base brute damage. if(target) ..() diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index a489e4d5407..87cfcb67bbe 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -169,12 +169,12 @@ if(!can_buy(5)) return last_attack = world.time - OB.expand(T, 0, src) + OB.expand(T, src) for(var/mob/living/L in T) if("blob" in L.faction) //no friendly fire continue var/mob_protection = L.get_permeability_protection() - blob_reagent_datum.reaction_mob(L, VAPOR, 25, 1, mob_protection) + blob_reagent_datum.reaction_mob(L, VAPOR, 25, 1, mob_protection, src) blob_reagent_datum.send_message(L) /mob/camera/blob/verb/rally_spores_power() diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index 3b67eab6a7c..95063875993 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -103,7 +103,7 @@ if(expand_range) src.expand() for(var/obj/effect/blob/B in orange(expand_range, src)) - if(prob(20 - get_dist(get_turf(src), get_turf(B)) * 4)) //expand falls off with range but is faster near the blob causing the expansion + if(prob(max(13 - get_dist(get_turf(src), get_turf(B)) * 4, 1))) //expand falls off with range but is faster near the blob causing the expansion B.expand() return @@ -121,9 +121,7 @@ A.blob_act() -/obj/effect/blob/proc/expand(turf/T = null, prob = 1, controller = null) - if(prob && !prob(health)) - return +/obj/effect/blob/proc/expand(turf/T = null, controller = null) if(!T) var/list/dirs = list(1,2,4,8) for(var/i = 1 to 4) diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 2cf8d1553b1..7182cea7fd5 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -39,6 +39,14 @@ spawn(duration) qdel(src) +/obj/effect/overlay/temp/explosion + name = "explosion" + icon = 'icons/effects/96x96.dmi' + icon_state = "explosion" + pixel_x = -32 + pixel_y = -32 + duration = 8 + /obj/effect/overlay/temp/blob name = "blob" icon_state = "blob_attack" diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index 38dcc9bfd94..6d878adf399 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -8,7 +8,7 @@ var/message = "The blob strikes you" //message sent to any mob hit by the blob var/message_living = null //extension to first mob sent to only living mobs i.e. silicons have no skin to be burnt -/datum/reagent/blob/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection) +/datum/reagent/blob/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) return round(reac_volume * min(1.5 - touch_protection, 1), 0.1) //full touch protection means 50% volume, any prot below 0.5 means 100% volume. /datum/reagent/blob/proc/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) //when the blob takes damage, do this @@ -29,7 +29,7 @@ blobbernaut_message = "rips" message_living = ", and you feel your skin ripping and tearing off" -/datum/reagent/blob/ripping_tendrils/reaction_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/blob/ripping_tendrils/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() if(M) M.apply_damage(0.7*reac_volume, BRUTE) @@ -47,13 +47,13 @@ color = "#E88D5D" message_living = ", and you feel sick" -/datum/reagent/blob/sporing_pods/reaction_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/blob/sporing_pods/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() if(M) M.apply_damage(0.5*reac_volume, TOX) /datum/reagent/blob/sporing_pods/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) - if(!isnull(cause) && damage < 20 && original_health - damage <= 0 && prob(50)) //if the cause isn't fire or a bomb, the damage is less than 20, we're going to die from that damage, 50% chance of a shitty spore. + if(!isnull(cause) && damage <= 20 && original_health - damage <= 0 && prob(50)) //if the cause isn't fire or a bomb, the damage is less than 21, we're going to die from that damage, 50% chance of a shitty spore. B.visible_message("A spore floats free of the blob!") var/mob/living/simple_animal/hostile/blob/blobspore/weak/BS = new/mob/living/simple_animal/hostile/blob/blobspore/weak(B.loc) BS.overmind = B.overmind @@ -76,14 +76,14 @@ shortdesc = "will do medium brute damage." color = "#7B5A57" -/datum/reagent/blob/replicating_foam/reaction_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/blob/replicating_foam/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() if(M) M.apply_damage(0.6*reac_volume, BRUTE) /datum/reagent/blob/replicating_foam/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) if(damage > 0 && original_health - damage > 0) - var/obj/effect/blob/newB = B.expand(null, 0) + var/obj/effect/blob/newB = B.expand() if(newB) newB.health = original_health - damage newB.check_health(cause) @@ -91,7 +91,8 @@ return ..() /datum/reagent/blob/replicating_foam/expand_reaction(obj/effect/blob/B, obj/effect/blob/newB, turf/T) - newB.expand() //do it again! + if(prob(50)) + newB.expand() //do it again! //does low burn and a lot of stamina damage, reacts to stamina damage /datum/reagent/blob/energized_fibers @@ -103,7 +104,7 @@ blobbernaut_message = "shocks" message_living = ", and you feel a strong tingling sensation" -/datum/reagent/blob/energized_fibers/reaction_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/blob/energized_fibers/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() if(M) M.apply_damage(0.5*reac_volume, BURN) @@ -120,13 +121,13 @@ /datum/reagent/blob/boiling_oil name = "Boiling Oil" id = "boiling_oil" - description = "will cause medium burn damage and set targets on fire." + description = "will do medium burn damage and set targets on fire." color = "#B68D00" blobbernaut_message = "splashes" message = "The blob splashes you with burning oil" message_living = ", and you feel your skin char and melt" -/datum/reagent/blob/boiling_oil/reaction_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/blob/boiling_oil/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() M.adjust_fire_stacks(round(reac_volume/12)) M.IgniteMob() @@ -135,17 +136,44 @@ if(iscarbon(M)) M.emote("scream") +/datum/reagent/blob/regenerative_materia + name = "Regenerative Materia" + id = "regenerative_materia" + description = "will do low toxin damage and cause targets to believe they are fully healed." + color = "#C8A5DC" + message_living = ", and you feel alive" + +/datum/reagent/blob/regenerative_materia/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) + reac_volume = ..() + if(M.reagents) + M.reagents.add_reagent("regenerative_materia", 0.2*reac_volume) + if(M) + M.apply_damage(0.6*reac_volume, TOX) + +/datum/reagent/blob/regenerative_materia/on_mob_life(mob/living/M) + M.adjustToxLoss(1*REM) + if(iscarbon(M)) + var/mob/living/carbon/N = M + N.hal_screwyhud = 5 //fully healed, honest + ..() + +/datum/reagent/blob/regenerative_materia/on_mob_delete(mob/living/M) + if(iscarbon(M)) + var/mob/living/carbon/N = M + N.hal_screwyhud = 0 + ..() + //toxin, hallucination, and some bonus spore toxin /datum/reagent/blob/hallucinogenic_nectar name = "Hallucinogenic Nectar" id = "hallucinogenic_nectar" - description = "will cause low toxin damage, vivid hallucinations, and inject targets with toxins." + description = "will do low toxin damage, vivid hallucinations, and inject targets with toxins." color = "#CD7794" blobbernaut_message = "splashes" message = "The blob splashes you with sticky nectar" message_living = ", and you feel really good" -/datum/reagent/blob/hallucinogenic_nectar/reaction_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/blob/hallucinogenic_nectar/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() M.hallucination += 0.8*reac_volume M.druggy += 0.8*reac_volume @@ -154,6 +182,26 @@ if(M) M.apply_damage(0.6*reac_volume, TOX) +//kills sleeping targets and turns them into blob zombies +/datum/reagent/blob/zombifying_feelers + name = "Zombifying Feelers" + id = "zombifying_feelers" + description = "will cause medium toxin damage and turn sleeping targets into blob zombies." + color = "#828264" + message_living = ", and you feel tired" + +/datum/reagent/blob/zombifying_feelers/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) + reac_volume = ..() + if(M) + M.apply_damage(0.6*reac_volume, TOX) + if(O && ishuman(M) && M.stat == UNCONSCIOUS) + M.death() //sleeping in a fight? bad plan. + var/mob/living/simple_animal/hostile/blob/blobspore/BS = new/mob/living/simple_animal/hostile/blob/blobspore/weak(get_turf(M)) + BS.overmind = O + BS.update_icons() + O.blob_mobs.Add(BS) + BS.Zombify(M) + //toxin, stamina, and some bonus spore toxin /datum/reagent/blob/envenomed_filaments name = "Envenomed Filaments" @@ -162,7 +210,7 @@ color = "#9ACD32" message_living = ", and you feel sick and nauseated" -/datum/reagent/blob/envenomed_filaments/reaction_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/blob/envenomed_filaments/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() if(M.reagents) M.reagents.add_reagent("spore", 0.2*reac_volume) @@ -171,6 +219,22 @@ if(M) M.adjustStaminaLoss(0.4*reac_volume) +//does oxygen damage, randomly pushes or pulls targets +/datum/reagent/blob/cyclonic_grid + name = "Cyclonic Grid" + id = "cyclonic_grid" + description = "will cause high oxygen damage and randomly throw targets to or from it." + color = "#9BCD9B" + message = "The blob blasts you with a gust of air" + message_living = ", and you can't catch your breath" + +/datum/reagent/blob/cyclonic_grid/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) + reac_volume = ..() + reagent_vortex(M, rand(0, 1), reac_volume) + M.losebreath += round(0.05*reac_volume) + if(M) + M.apply_damage(0.6*reac_volume, OXY) + //does tons of oxygen damage and a little brute /datum/reagent/blob/lexorin_jelly name = "Lexorin Jelly" @@ -179,7 +243,7 @@ color = "#00E5B1" message_living = ", and your lungs feel heavy and weak" -/datum/reagent/blob/lexorin_jelly/reaction_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/blob/lexorin_jelly/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() M.losebreath += round(0.2*reac_volume) if(M) @@ -187,24 +251,57 @@ if(M) M.apply_damage(0.6*reac_volume, OXY) +//does aoe brute damage when hitting targets, is immune to explosions +/datum/reagent/blob/explosive_lattice + name = "Explosive Lattice" + id = "explosive_lattice" + description = "will do brute damage in an area around targets and is resistant to explosions." + shortdesc = "will do brute damage in an area around targets." + color = "#8B2500" + blobbernaut_message = "blasts" + message = "The blob blasts you" + +/datum/reagent/blob/explosive_lattice/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) + if(reac_volume >= 15) //if it's not a spore cloud, bad time incoming + reac_volume = ..() + if(M) + M.apply_damage(0.2*reac_volume, BRUTE) + var/obj/effect/overlay/temp/explosion/E = PoolOrNew(/obj/effect/overlay/temp/explosion, get_turf(M)) + E.alpha = 150 + for(var/mob/living/L in range(M, 1)) + if("blob" in L.faction) //no friendly fire + continue + L.apply_damage(0.6*reac_volume, BRUTE) + else + reac_volume = ..() + if(M) + M.apply_damage(0.8*reac_volume, BRUTE) + +/datum/reagent/blob/explosive_lattice/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) + if(isnull(cause) && damage_type == BRUTE) + return 0 //no-sell the explosion we do not take damage + return ..() + //does semi-random brute damage and reacts to brute damage -/datum/reagent/blob/reactive +/datum/reagent/blob/reactive_gelatin name = "Reactive Gelatin" id = "reactive_gelatin" description = "will do high brute damage and react to brute damage." + shortdesc = "will do high brute damage." color = "#FFA500" blobbernaut_message = "pummels" message = "The blob pummels you" -/datum/reagent/blob/reactive/reaction_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/blob/reactive_gelatin/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() - var/damage = rand(10, 25)/25 + var/damage = rand(10, 35)/25 if(M) M.apply_damage(damage*reac_volume, BRUTE) -/datum/reagent/blob/reactive/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) - if(damage && damage_type == BRUTE && original_health - damage > 0 && isliving(cause)) //is there any damage, is it brute, will we be alive, and is the cause a mob? - B.visible_message("The blob retaliates, lashing out!") +/datum/reagent/blob/reactive_gelatin/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) + if(damage && damage_type == BRUTE && original_health - damage > 0) //is there any damage, is it brute, and will we be alive + if(isliving(cause)) + B.visible_message("The blob retaliates, lashing out!") for(var/atom/A in range(1, B)) A.blob_act() return ..() @@ -219,7 +316,7 @@ message = "The blob splashes you with an icy liquid" message_living = ", and you feel cold and tired" -/datum/reagent/blob/cryogenic_liquid/reaction_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/blob/cryogenic_liquid/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() if(M.reagents) M.reagents.add_reagent("frostoil", 0.4*reac_volume) @@ -234,12 +331,13 @@ name = "Electromagnetic Web" id = "electromagnetic_web" description = "will do low burn damage and EMP targets, but is somewhat fragile." + shortdesc = "will do low burn damage and EMP targets." color = "#83ECEC" blobbernaut_message = "lashes" message = "The blob lashes you" message_living = ", and you hear a faint buzzing" -/datum/reagent/blob/electromagnetic_web/reaction_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/blob/electromagnetic_web/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() M.emp_act(2) if(M) @@ -262,17 +360,17 @@ blobbernaut_message = "synchronously strikes" message = "The blobs strike you" -/datum/reagent/blob/synchronous_mesh/reaction_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/blob/synchronous_mesh/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() if(M) M.apply_damage(0.1*reac_volume, BRUTE) if(M) for(var/obj/effect/blob/B in range(1, M)) //if the target is completely surrounded, this is 2.4*reac_volume bonus damage, total of 2.5*reac_volume if(M) - var/obj/effect/overlay/temp/blob/O = PoolOrNew(/obj/effect/overlay/temp/blob, B.loc) + var/obj/effect/overlay/temp/blob/OV = PoolOrNew(/obj/effect/overlay/temp/blob, B.loc) if(B.overmind) - O.color = B.overmind.blob_reagent_datum.color - O.do_attack_animation(M) //show them they're getting a bad time + OV.color = B.overmind.blob_reagent_datum.color + OV.do_attack_animation(M) //show them they're getting a bad time M.apply_damage(0.3*reac_volume, BRUTE) /datum/reagent/blob/synchronous_mesh/damage_reaction(obj/effect/blob/B, original_health, damage, damage_type, cause) @@ -288,6 +386,20 @@ else return damage * 1.25 +//does brute damage through armor(but not though bio resistance) +/datum/reagent/blob/penetrating_spines + name = "Penetrating Spines" + id = "penetrating_spines" + description = "will do medium brute damage through armor." + color = "#96938F" + blobbernaut_message = "stabs" + message = "The blob stabs you" + +/datum/reagent/blob/penetrating_spines/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) + reac_volume = ..() + if(M) + M.adjustBruteLoss(0.6*reac_volume) + //does low brute damage, oxygen damage, and stamina damage and wets tiles when damaged /datum/reagent/blob/pressurized_slime name = "Pressurized Slime" @@ -299,7 +411,7 @@ message = "The blob splashes into you" message_living = ", and you gasp for breath" -/datum/reagent/blob/pressurized_slime/reaction_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/blob/pressurized_slime/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() var/turf/simulated/T = get_turf(M) if(istype(T, /turf/simulated) && prob(reac_volume)) @@ -332,7 +444,7 @@ color = "#61407E" message = "You feel a thrum as the blob strikes you, and everything flies at you" -/datum/reagent/blob/dark_matter/reaction_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/blob/dark_matter/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reagent_vortex(M, 0, reac_volume) reac_volume = ..() if(M) @@ -346,7 +458,7 @@ color = "#808000" message = "The blob slams into you and sends you flying" -/datum/reagent/blob/b_sorium/reaction_mob(mob/living/M, method=TOUCH, reac_volume) +/datum/reagent/blob/b_sorium/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reagent_vortex(M, 1, reac_volume) reac_volume = ..() if(M) @@ -359,6 +471,10 @@ for(var/atom/movable/X in range(range_power,pull)) if(istype(X, /obj/effect)) continue + if(isliving(X)) + var/mob/living/L = X + if("blob" in L.faction) //no friendly throwpulling + continue if(!X.anchored) var/distance = get_dist(X, pull) var/moving_power = max(range_power - distance, 1) diff --git a/icons/mob/blob.dmi b/icons/mob/blob.dmi index 184337131ada5e767befc081afbf5045d645f769..d2573aa3079f931a7cbdc26bd2951ab2be1ee55f 100644 GIT binary patch delta 81677 zcmXtA2RxPk_rEA4A#M_iN+{PzR<=T^%*qUrz4r=_C_)IuH?t^`O|sqWkPw&bz4u;s z{Ey%3_4jgLE%&+4^ZA_5Ip;l2^ZD#yCG2mx5PzRXx^9Z*uFqVoo!qP)9Z)E*q>}fw zk%2-C@*P`z+&)*7<%@X)*xH+dh~!t@-UZja)ef+$Yi62Py?o!>npT|p`fn{I>%TppuV2^gy)knl zi|sXH(pZ%~b485dcIS*Oqq>0Cxb|6QQLLfJLO^lA604;TH|_9^QMeOcKg z7wx`Jrl1W;s~c!dLZvT9X38&tS9PI1=d5)~kX#Y_g|LQ4dZV@;18uZCf904Z@Yc9HyDN0jOtjwlm|eG^pM?&8f6ue> z(Pcf;XU{Ib=#P9!8LUi6sZ5!%PwX1G&Oe=*vwi6G`~p2kkJyLV>fNF8*%8+cncep~ z(&pyoo+Ba}aP{QRn0v4ow$K`kw<7}Qe|kubd3cf&8eYwmY( zgq)=u=qXZg@p?xuDLgE!=O8tU#24n$OB6Tz^|r-wf_Ci?N*stizx|JTwDtd9E<>lq*wjx%PQ~47XF*}x;gN1A_ zZ|{9!B(a^@ce$i*#kkCA+)6LbTY({F$>aH`l}MPC$hCwA8D`09@iXgQ!DpG7Ws?#T z^zj3>`R8tZVz|b~cRIW=QV$bXq>B+7nRYQ(PnA7?Cz4%(i?OyTg3TO0R4wzyO~%l# zz9IEwapsfL)64)KvNKN@1}@J9)<@^{ZQ7zkc1*jx$&F@DNkoQ_Ex$h(F2R+{nkr7hf^FB9mWp zVAB#rFDs#sZY6rlV{6+DudacC166nT?aSgLUXw|Ifq_?xEjyGE zF2)xfv$xI7zi@`7O}LZ`L@B4MObNfk<9*kpN8{q-XUPh>C)a-smO8GMxG(l_ffDEI1E?phx&#$3a4hw%U{BN z|K2mP?b8iwtv=b2EOj>e?lGhM-5lSrv;o+pOC$@FA4Gxp>Jxm4Z6DpXPjwcXxPx>A za=2W2nKdHq$B&&``<`T-xdx>Uz2$ol@wX{n$S)*_+Nw>GHsY}jpKc=|8is~`+On$M z_F{?r(O4E#HQdA1*$Ky?vg?=8G+lh!IdgHy)UVTzw6%?R5y}AKVsCEc_7nWZ#s+Pi z`Fv)o|A7e6&~y0Jv*yT8RaN*~`}I-mH)HgSjELE;+a!9~Jm5S6*5 zBa&z39E$t%uHcK1BH`BA&4@F{#>-v*cf2ZBDo&32ZnobX#3t@W`I88{%?+l7mK}|9 zI;2_e3$UPPC5d0)9^HT6Y#RO2&gZI!LUE#06crvxCOiBIJHvN?>+OX{XAYs~U`8wL zZ=TV4a-CmXT->rZNAIZ~^9y;@vhHyo(zPzAgMolHtFtnxYPK< zevpCY6`g*rHff~#ITg>9E1KKe+v}R?%7pOAvZ){{dLuEPEh|-h{ehQ#M$hflZETQl z78_G7^>D8#J`)WmL_|fqe5x;;I(6!5TO9x4q1zctK-@k~6x3~A~6b}y%>FSLe#eD-Mwx4+K*^03Gt-wJy zl=9tM3r6sh9EbV_296)CSvh>y$Py9~c9JCBzdechY=>%rdtI0HJIJxOwpIymG<`F; z-1|8*)414Wx;5WTGTCCHA#`?XcL8VH*!k)9A%vp9^xpa;)rikxE|teBGD5h6N=5dk z0_qmpq7VC(J2z!KdI6AvE-#r_aekY3VPe(`J z6NIqsYHMrj`JsKLP58zQ#G<(0pI=4Gf)~Aj%T(vsBM`TEQoKz4Mr-`&BQMD4k7n!S ztHy`PIZr6IpAsJu+C?U#(;#*>QZ2fnNQ`-kC+!wJ@ zdwo0b!DLFBIWOeLsKz@!+^`&p<2Rs2a$3wPR;OBG&%rueBkf{I1Z#YsF(Na)HeOG~ z%Em^@%*$H|Rg^_RmQIQ%I+jnzd9Pwgvg1+@xVr;?AU}S5^2d^L@VIOp9u8@*wE#@p zeZFhgF5I8u3k&od_1jIt&v$3q&UBi>?<0goV-A(6R7rOlM<`-9_itGI?i}*l9WJfe{3BIEM|>LFA|fX$y4{*A<(cxH zw9$qL@~jS5?grG4>mIi90(4v-qp8b5Hbv5|Zm zAHVx&W4dh>K1bS{(Gkj#_j-7ExMNmM4i{d9f|Ay2&i8->KM~8u%1Vbmdsat=u+{D9 zHl1%!x{`#q?#{5b`2FAY{BPeDMlF!yec{Y*?@c&hXHz@&Tz~Ayd2dX4mylqeMa74l z>Z=wOY_v#;OCE>b>m4}KsP}BL>xN_5IA#00s}C8Qu@jpt$mj)0H>-Te&f`asCGI$a z=TnK%-dY*1yvRVUI503^aV;$H+qY{F4r6dINyaud3ok!^{`@W@1Ih5hFdKO6t(oL< zQd97#C4E&aU>x zdU!u=Jv#9L_sd(K=Kg-U&v!+oA_tP-j4sAw;V2lGQ9}?(g%<4zizWK@8Qt?Q`|Y$1 z-(%X+GBPZvlr#}0=?nDaFHjKlcnvsp94I-*kt#>J3({qxa2}6(g~&Ioq6;jj^?!xW z%9ei&t_ZV6$ceK?P*VmSGV|+y*G4yP!6Sw!X-e-8juLma;V>@kZ?p-nN4nrPCgF;u`a)D~UHB+?vt{&{Nc)1Q&&r4kkv7ab{_`m4M*f1E%9 zoqRWE+V@enQ2)XG5?EfP2srVtH`*X}`a}Ka4l5Ik5KQpV>{q82E}SUG(kiFtH^=GB7Wab&2>*`7x|<=w4M8u^gndN#)w-6~ou zDk=u*ny5pLZ({sf??!@OybtL;z3@Bf`?PdpXFB_nIv@Oq!N{wb`WNm!cy7v6gZZ!g{+k?`4?3++n3 zBUsdLm+JVhV7#ct?@*vn7n2tlNDg}fMRT)Au7#hUKmDj<{QP{iTKt5(ZEI_5qEuick(`r!%<0~}u>YX*F|6_3cgpX3exqLK9Eu^l zkxoQJBxlp7`o+@H(g{pkotdyn>$|IhBI4qRo`FG|sF+wJlm#1n6ch{D|lER(YLw0BOAj*m0Q)~{U`nj3^}TqlsQ4RWjNnVI`?!Rwymb+34ei;E|r$)4}GOnuBw7vjU0qn%A)Yj%EK zR8(}~I4ZyIuz1j+l7G%gB68lXVk$GmXCbAjsi}p%dDvcr^@fzdF+?(x&^0wX`w)l2 z-M-*G6|H)7m*R4ASnKtP#>}v=Fgwp7=Vm#3F}Cy6$7G?;RoBn$eO6LZq8;A2A<*o6 zM>o#zZf3VaX7_o14CYO15#|ktoDmr(se^=9e-bynr7lMhdCc(gnR0rUAMUYEHRM2u zrM18J1*ggPq@n*eUWhb)@+3(V@*eVU*+Y_r)`4F@z{sX_5SyEoRR|djt9&UsJ&l*B zosIi3?g70pAIRQAp{&RnhvAR9^AW$M>M4g_C#=4Up0b0}I#Mz#BU z8qNmW(%w$cXLxyA$H;s71PVHWiO@3Muxf$RBqUuaoH>_8#7YC-CW!qWmbORUR@6*O zS?>~-hR)Rd`ARO{5R zxNYGjopLR5^5ybi>F98&qj5y-QwcHK-kc!)+?{_7p-h94dwV1b4(Hbr^v;p)O&x?R zWVNBRJG1<4N9z6mh`;srEsFQCt?KV?lr$o-`_Cqf@2Swey2XSNLMh8`{JQK8EzwE| zG<0%GKWw1rSVP>4_8UgjEpX@LH`R_ zmg#I835t=2DqzghA@$CV&A1{cSbp|mgYqbS1qOB$Lxi%sK)fwd&}H?6mztbe;K|+- z2L}hpTpXSAZZTXce#aGbxBT`2=waGeDNnJQk$((VPQQ#+BJ0?k_oy7U6JqfP1iIFF zn_gzsrQ9R&K?ZZK_H#TB@yj@=^I&zJNP6Z)Vmhh?Yd+O}&_GNJ#J7!Y?o%7fnKn?n zDk#*t#&99y^vGWQYUYCvbxP@7y>$Mg;o}g9{SO~MzEbuikK-kMfEksvDr1BI6&-+t zsjY6kFF8514-js(Hye$t8F|X2TYI6(8(J()YUbBV)g>g!NhlN?rl0?IaEC}6L#(8G z^Nd8^!*lyVc*I_~U@lrIQ&m1r&|oCgv*w@=`JE~!_eY5KQZ)6VlLY34{L{lf$x`BK z{|T8)=jauS$fnXm7UWA7Hox~~vaHQI!Jku3j^lp3z_8n}d!LdjcWj)=e}muk`ArM| zWohtkg&E~@aI5@f2{t)^n>Zn&x+t}BJfOwwmb3Hqg@pwMx{!<1+xOR2NC zeegSc`g!$80@T#1oAv|Wu?+q~EO-O}wQQ5~6AlFi2cS~wpaqnJF5OX-H9|y5Q|V~S z)nDEEq~k7Wn86#CE_hsyg%-KQP8Z*vB6B!+m&!YbDJL zH})uL_*`Vd_!f~qmz1(}boxA-cYUh=K@YJBnV9NkWaW^R2(f8$eJm?8<-kBq?T>$K zOHZ3c@$hi8%GM(ZcB3zSi}s^I#+9~xc@gjyL7p|^vY7gf+J1C3Hm31mYJjFrMs;4m%6@OJMHTJ_)Fk!`5k+Q;TDx-k*Fc zhv|Y%Fu+m7a7`ymIM;1rtnzVw-)*$ge-F47(>4Fu{Wu}raXTAFyumu@AV3_KF?b($O8CYK5rg zXMHv$Es$pO!lyT->5;HBX%W@k4gix!i`mn|o+xbIdK;j2wT~!sxS=qypVA+=d&BJk}~N`q+Yt)J*nZwbBY1;9SxN?@KJKavIC^J-%go$hNRtQTHFuh!K0|3 zyUE8Snk6S2)|k@izpMLy+l|mXg+XETil)AwxMxVJ*n9PW{0Gi1oI>8(A!~prf5)IB ziJdBCRhyKrz=SNx#~k#pY>}3VJ504kKC78`VT`II1lok{#Ml6Z9CwKh>auzXl$X1^ zs8s?T@?ZN50{mhkcTp@h^!P?#2SGKTU(6Q03K6Ud3blZ~sf zEYVNAcI}#f9?s^ZZd@aDp$gq12Rq9rU7Q(i-oL8C$fZJFFGPKe{A+IRE45790{z@n zD)JYpEk*bbTq++>lxNPIS^k!tozBmUv{7f{XkuI3G<`MECWX2h8XBmS*^6P9-Y8$j z`^)*tazHJfr3<;tLQ83REv)E1y73e04I~K~2>guy9%NwZW+l{4gw(q<%dc1O`(rtP z{1}IFa7Z9#p_TkDQU~hAO%owA(e?K9a6yqUu_!*LoPIj`uHuPTx8#s@!PBIWPDFi| zl;Th7Xn>>wEDE`jrax46b3G3u5!T$tX!Dn9nQRm5Ub5?exq&B>itZ>{I=*x*Zid?$k_Pu)^gjgUMcVQl327q>S%J#7Mwv6YQY-9%$}G}4Hb zD&hM;Yxl2!?2`sHY~yxdQU}*j2#VYN`}hOt`_e17&d#Mq9s^v%uy3^ysensGTq0S` z&5Yt0>UA15>dgNB{@%?NsINmq zPxzHIsYB}Pk1GfP3s;j30U~BUu=Q0tdzcN#p)}rmft#PyiQqvIL*2#4%vHd8nceTm5X zQ2#WG`;(fTldxaEQbPwO7Hkqcx9tN-W6xI>wHJzn?#aC)J})9c-g&5ALz=Bc1c7v$ z+C7ZA8?$8@-zF-%+3x?rF>JR$7UMX=8~=o0@5X%2awuiHd?)hJ z{&{g9e*j=-X^xSHTn*D7_o&RIB!7WGbQvVB|LOtS|*ew?JN011G4ajdiRcPJ2w6lt7*JtQ21PP4(1oKL?*TP4SWSS3I*3 z($(@ze$Qg;4L;BOBBgBCUMx=5iQ4K=ydX2#p6=Cv-ic|AHm~TEfZ}tcg|j@9f253q z+jlVEjFV{DP=jYsc__$FwMjQ!3ry-MxAoYY$q3Hc>Zt3)&}H|mZ4R1OQ2EB#7at7< z0g2sxLDqL~FfJ}`oGzsPqX!Db8i7z2VGI%y6Z2&O&z49g3+(n}J*0?1)%M{t#0+nJ5d)RRtHN32mbx@625x%YRTli`W_&1a_HsoP7fU%R^CiaO*H{$ zm`pFdChrDiAjF@znfmZ>cU7);U_eqDD3#T*+Mq7r1~t&HfObVLU%ArQw23!UiQ(Q^ z89rR_l9nAix&<~iwi|!{{-qS6O+N>M3G_}A%~2dtchb8kfQ#g@PEd0%f0FR--Mb!m zVFk?qg)Hei_LFSzqe9RDlejUEoL(t+;FRV| zBF+;Hr`Els1!ZK0&qp;M0(I9~1}zHT)vyIeAr=wfZUJuI!OwN2JEzRjQwG(>il}B* z3_AdctZxGxbuW<4*SH`2r-6=Y#?G~l7F$OB+{72WprG2}(UB(qSsO%k^t2(oVGp@f zD&jKcoq^<<<56Lp-1Z64KqI((W2}F|n>VyQeSOVQ7i3uFyw=8Q;kaLukxBM|N8H-l zdX%dzA7y=R2=C*-B`+I-Z`K40{F*CA0Y6Je8h`V-X-^dB7F$TCi9 z=g7%4pjf#Ade$eKZ9#<7x*FDcuvSk$x;TbJfA}ze885X`c6lFG#l_Y(+Ygw;cw^_r zGuN;>`9^Qe`-g^xq=~RveLIVNs{^o`La@PAo~uR%K0XJ#GdhvE??TtV>`K#{bTF6E zoJCCf5?$Yte%|@@t6cRw{`MyZAi6;+su{RnEltn!GAi1~yRvq$+?59)wbNYZ#U+AU z^#Q@q@sDPzir?l5%BU2I{n8C4e$P_O#imRtV#0ZXkSo!3t}mZM*u`PdtN^sKmof$@ zc>-Hok%ZfvMy4=nXP^Jq+tHhR*zC`UTs#q!p`V~7JSwg1TYRiD#N3z5uw$or$`n?s z;9%7lWlTJA@P-W-6!!{!*Npg8A%nticQ_!x;Y8z& zaftFC`{k2Kkvn~5!z=v&-M50BB!+myCSHed_?JB#-&q}{*F-C<{EOo{0gWE2vye&| z{rPUpqv6iZ0^6m3g>nzk<}9k+zuMbh;cS#R88m?GJHjO!&?L~KUWeTJM9&i3;&m{e zDSkj88Up|E=7^d$5le)cZ(7I#-za%aw7dDcUp!4|K_pFHG!5Xe50E9UhTQ^y`PmrM5)BU6|E9L zI6(zOR^M}1N2B1b&M0ZxT#82Sb~==*>!8hfl{A6em@7-u&C1Kmkcc#J-&-61s+=Aw z4%aqe;ht>aNgdMF(J76c-7kbP#c3(0r1_FJ?4z~5y=9$x4mOQc!)lp-_((pV_Xh_)VdnjR>11zx>ZIb1 zy}Eg%!hyoXtru6kQn8q)hKDlp6|alQ=rz_vLzOBqeu6QM`JCLaoH|!@CA$Xt3bn)5 zaVHjSB>T+CvjPpR@A(Ry#&4m1rYVKLmGGt*(7{fXhw}YW+?8l9Nfo#|G|8Qse8ZA1 z4x{(idNuK`wRKj-Zd|+96rCnC+%n{1nE%$SAHlO+yaefNI41>!a)PbGnNj{~6en2XD%_e*H zQb=g(=*%X_Jm2BX>{hu>%S8X`)-FTM;Ie;=2@CKTIY!lzJy?X4ql-~?ka=1AG$4)F z#(;t1?XR;+r_oBa%N`GlFvx7TNOFGnyoRRcIvuKicGDav;L7g#&$N`crO`CQz|mys zVkk=o37=cc0^2R>L7J?itv3rz`xcTzEcPje19x>Y4 zN~)^u%wcJ2$H`xe*9V_!``zCD<&E;QqpO~wdBvMDi%gKHkuB0QV6*m#Y_ybsvh0o) zpvA0p4_2%M^h((X^?{%aYYBF`l3{Z_?fpXCrC?xx*-%gWi_F_Vz~`o}GmCAR@{nME zXOtgRjHv{$;Kqu;DLvXD=+F70&P&C`rKF5lb6$xR)C!I~#0j1ty*g_Y&}gdQZ-UI$ zroL`8t%b*Of<+}q#R(cmg2f_>Li%)^d7k|I+f!N29>lRDmc zm zmYLWChowo0m6vI}S#%*3fLBo;^SD4_{@AzpiI)aaP}>`2WYP>S(`hC0%{SPjhb*|t z&g`+Ww*OC0J}^b#&S;9T9&alWMoEH3?NMoH_?RXz0EDbLH%XMdpC5sZGU#HI$$u|C zKafnOqpknyeyQr{(91=ux5~HHZb}0|k;Qv2Y;d^=njYtkDHZoCntFOCs*UJDhu_>M zX7nM8GRo=B0cx2+Tq@T%^nsqs@izVnD=}--?A$k9=r9)%es7yq7D_~`8#|sK8Ky^ysh!Raqo39 ziEAaKN;yA^%oFlZF>GvXgg|l`x;f4eu&TWbP#skvhpjPFsmzpiMpj2B*OPu6@E8R* z{EUtw(f_}hKss{rQC!lx5HNLlDnpyH#urERwtl5aSSLcV0(QrfM&iMcD^<-VIiQok zNeNL-1}nMhP8@~&pDp7zL?#*eP^N&BUC0K=IIHTas(ztmG$6>~(|C=>-6RjA2^y$x zi@6m@MZ&S!F`$N7gw0+{&cQ(g)}vG8RCpsfz>Ry_n*La0_vGMPpC&=j^_X@CHY1id zEF6Uq7G^hTq_C(YQmStbukn!Y?h^ zK`wg_%*w-GHVcqPl_l7@`&#ZT_T`Vdw2SuP-g-nq`mMWwCttK`{-?y=` zu9GBpfAvM+bCCP@??=^;z`ayqIrj5Kw#)^34D-p>wl=>Qu2axm+DKFDy+{pL*M1?Q znm+kRk+ojPEG7gpWkN=+^U!+fsQ>d#AiW(NtgOoZcY&7kmtf~lrSZ~%L5e_2NrC#> zlsYMa0Oj*U%YSvG+N4BZ>Qv`${!k|6-)PHT9M0Y4c(dH{Db+vG-TssVL4O!^z8xW| zRFywVa$+}BM9H^OW~B&3;`_sbjAwNo*R}NYLhI^oEsbJH-zBs7rs-~f;0w{O0k_Vb5Rl6ev(37*JzhUX3=s`I-{& zCZy7EJ+XbpA&5*+o0RQ498b8lmFf%THTG5Bx$$NW#Md4WPYG@P931n{IGaN%nAPqo6`WP0-2dN3^Wcv=@1Y02=E|4yXXA}s`(U1 z^O}IDQ;f8=#UvQ012U|~KUk(*1qzVqw?(lmYs7|6b;`wTfjDy@-tYdUW0&?SFdzb2 zQb>!jPSD;5JCwl}Auc9n3S#rO`>NSEQ-DQNckd>d_s2%x{hR?T@GJz!1L9Z^y#-j1=zySs zE16nb&p!ti@g2^lI%#(QHc)u!yfo4s+1otJq+SC@cdY|35Oj5R2Ea2#S5DyGW5$7j zdMMq|2a-laikQ9r26VI%#YkG(rA3l3HYexz-`E4=5}Wr~Jcmc-g~Q#cL#)@jsZ7VF z26{U2_(|rR1WES=v*Lc=b8SUc+S%q`ccerIcGbO!NqCi5?iVI3aM0WoC$jNYB0i=N zP^*|HWoyA%4>PrngvhPN@Ux503R%FBG*e5(fp3H8+<3r^JoMp3OTtwTqI;?h4@bX@ zA#1f%-N4k9-0UitJ|Z2Tyatj%w2(GhF(`Gh#+KL9bR9G)l*P*J7 z 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

{J`Q4_`QK!zqgcHc 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 N002ovPDHLkV1lAtMHB!4 delta 80999 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 From a2b05e14efe937e244970e3edd6da79077635a70 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Sat, 6 Feb 2016 19:48:51 -0500 Subject: [PATCH 038/142] Updates Penetrating Spines color, Reactive Gelatin damage. --- code/modules/reagents/chemistry/reagents/blob_reagents.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index 6d878adf399..07cf9efaf0c 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -294,7 +294,7 @@ /datum/reagent/blob/reactive_gelatin/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() - var/damage = rand(10, 35)/25 + var/damage = rand(10, 30)/25 if(M) M.apply_damage(damage*reac_volume, BRUTE) @@ -391,7 +391,7 @@ name = "Penetrating Spines" id = "penetrating_spines" description = "will do medium brute damage through armor." - color = "#96938F" + color = "#408B80" blobbernaut_message = "stabs" message = "The blob stabs you" From 9984f4e84cc91796de1a114ee2104e046046ac97 Mon Sep 17 00:00:00 2001 From: PKPenguin321 Date: Sat, 6 Feb 2016 17:27:24 -0800 Subject: [PATCH 039/142] gives chameleon jumpsuits armor --- code/modules/clothing/under/chameleon.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/clothing/under/chameleon.dm b/code/modules/clothing/under/chameleon.dm index bbf5699c396..f38708348bb 100644 --- a/code/modules/clothing/under/chameleon.dm +++ b/code/modules/clothing/under/chameleon.dm @@ -12,6 +12,7 @@ var/list/clothing_choices = list() var/malfunctioning = 0 burn_state = FIRE_PROOF + armor = list(melee = 10, bullet = 10, laser = 10,energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/under/chameleon/New() ..() From 75bb04d35a9843683263971227b9d1a1d415196f Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Sat, 6 Feb 2016 20:32:49 -0500 Subject: [PATCH 040/142] less 4-hit crits okay --- code/modules/reagents/chemistry/reagents/blob_reagents.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index 07cf9efaf0c..e1cc1cc73f9 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -265,7 +265,7 @@ if(reac_volume >= 15) //if it's not a spore cloud, bad time incoming reac_volume = ..() if(M) - M.apply_damage(0.2*reac_volume, BRUTE) + M.apply_damage(0.1*reac_volume, BRUTE) var/obj/effect/overlay/temp/explosion/E = PoolOrNew(/obj/effect/overlay/temp/explosion, get_turf(M)) E.alpha = 150 for(var/mob/living/L in range(M, 1)) From 37c0b23483a92659ab3ec6e6c96412ff73cda253 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sat, 6 Feb 2016 19:38:47 -0600 Subject: [PATCH 041/142] New CTF gear --- code/modules/awaymissions/capture_the_flag.dm | 22 ++++++++++++++----- code/modules/clothing/spacesuits/hardsuit.dm | 1 + 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index c8c700f8bff..625a12c01be 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -159,8 +159,8 @@ /obj/machinery/capture_the_flag/proc/dust_old(mob/user) if(user.mind && user.mind.current && user.mind.current.z == src.z) - new /obj/item/ammo_box/magazine/wt550m9 (get_turf(user.mind.current)) - new /obj/item/ammo_box/magazine/wt550m9 (get_turf(user.mind.current)) + new /obj/item/ammo_box/magazine/recharge/ctf (get_turf(user.mind.current)) + new /obj/item/ammo_box/magazine/recharge/ctf (get_turf(user.mind.current)) user.mind.current.dust() @@ -217,10 +217,20 @@ desc = "This looks like it could really hurt in melee." force = 75 -/obj/item/weapon/gun/projectile/automatic/wt550/CTF +/obj/item/weapon/gun/projectile/automatic/laser/ctf + mag_type = /obj/item/ammo_box/magazine/recharge/ctf desc = "This looks like it could really hurt in melee." force = 50 +/obj/item/ammo_box/magazine/recharge/ctf + ammo_type = /obj/item/ammo_casing/caseless/laser/ctf + +/obj/item/ammo_casing/caseless/laser/ctf + projectile_type = /obj/item/projectile/beam/ctf + +/obj/item/projectile/beam/ctf + damage = 150 + /datum/outfit/ctf name = "CTF" /obj/item/device/radio/headset @@ -230,9 +240,9 @@ gloves = /obj/item/clothing/gloves/combat id = /obj/item/weapon/card/id/syndicate belt = /obj/item/weapon/gun/projectile/automatic/pistol/deagle/CTF - l_pocket = /obj/item/ammo_box/magazine/wt550m9 - r_pocket = /obj/item/ammo_box/magazine/wt550m9 - r_hand = /obj/item/weapon/gun/projectile/automatic/wt550/CTF + l_pocket = /obj/item/ammo_box/magazine/recharge/ctf + r_pocket = /obj/item/ammo_box/magazine/recharge/ctf + r_hand = /obj/item/weapon/gun/projectile/automatic/laser/ctf /datum/outfit/ctf/instagib r_hand = /obj/item/weapon/gun/energy/laser/instakill diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 93fa41ae868..8f8efcb0e98 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -516,6 +516,7 @@ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf armor = list(melee = 0, bullet = 30, laser = 30, energy = 30, bomb = 50, bio = 100, rad = 100) slowdown = 0 + max_charges = 5 /obj/item/clothing/suit/space/hardsuit/shielded/ctf/red name = "red shielded hardsuit" From cca610f1e4b4d2956cc5f466288ce2a39111f04f Mon Sep 17 00:00:00 2001 From: bgobandit Date: Sat, 6 Feb 2016 20:54:09 -0500 Subject: [PATCH 042/142] Adds shots of wine and other things. --- .../drinks/drinks/drinkingglass.dm | 12 ++++++++++++ icons/obj/drinks.dmi | Bin 58359 -> 58431 bytes 2 files changed, 12 insertions(+) diff --git a/code/modules/food&drinks/drinks/drinks/drinkingglass.dm b/code/modules/food&drinks/drinks/drinks/drinkingglass.dm index d6ce0c0a10a..bd70905ff91 100644 --- a/code/modules/food&drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food&drinks/drinks/drinks/drinkingglass.dm @@ -575,6 +575,18 @@ icon_state = "shotglassbrown" name = "shot of cognac" desc = "You get the feeling this would piss off a rich person somewhere." + if ("wine") + icon_state = "shotglassred" + name = "shot of wine" + desc = "What kind of craven oaf would drink wine from a shot glass?" + if ("blood") + icon_state = "shotglassred" + name = "shot of blood" + desc = "If you close your eyes it sort of tastes like wine..." + if ("liquidgibs") + icon_state = "shotglassred" + name = "shot of gibs" + desc = "...Let's not talk about this." else icon_state = "shotglassbrown" name = "shot of... what?" diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index fa7503791a957fb644979e7edd2b2a6c1e4a4ada..5d3d7b77d88c856c045e2185b003fa94c684ec5b 100644 GIT binary patch delta 4164 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 O0000H2#5r&OxEzFWV4DLoDBZ&o)^ysYom z+ttn9De>v=Gt6qIRLUaRGSD3oNtjThmxV zuhg-FO-8D2=w!?(cl>>lu*|9?kPOb07O859s$o5LN~JWM#yW#+P^M*(o!Db96`jM( zs&)k7*6o-P?NrNN60ncwUc(sNNj_K{2%{_iGl_z*PYDAD>U9D;JxXSbJbgwWJGG?J zI@oo~JeFZDiAsN=#fQ~RWTkn1x87}bo89ItWG2cwNAo>4Vj{1S1%smtmwHu`^Du(7 zI7O3w0VID$UEg$snm;WxP79-Go@Il<|VR9*I)GJ=URU0 z=aD(%Ru3-MnKO=8`ysiMk%Q2sBlzQmm7Q5Ud$Ors`plmN_0E}rpsrL(bMjXZc8*w1 za)nzY%01PJYHoD<-XLwx1hd_2H`~o))7i_r)>8Y6E4h!s#UkpoPa5p5NokhhRw)cug}c8;3fv@{ zawW;lQF3fhEr?g<+^7u(wu#r#=Cof43alvXN(k=TDZHi_wysh*!OOiJL`T$2!5hmm<2s97jK zE}3VsxlyXX9YCNxgD3@wWt2;4_gUtC`+l?CY*#nVN6GO?Pl*bH`CjJ9t=bQ{bk-jq zjeGmtUwRowVWe<)Y977i0k26pLmyX>+)esg6y3dOmYWxiGxQcrse<{NazcyX(WHM^ zzQUM`DCYoIr&g=7?X%Tha<{Alkn2rnEFO^>Ao?6hry|P%m{f&JurO4TSJI&K-O6^v zuIVUO**o)3AUFDLS$mO_<T=kVVWnN}$RR%`O9#$wz;e0$jA;SK;8L_31(pgzxW;&<6s^=&OSSFo;Ot zcvaEpHUN%(!Ww+GR}|MM7`bA>;Go;WZS>ZEP=YE&Y@D>gf@ zD=okDRHn;sLT}ffzkOPN`ub({FFtdnq|H8GO0&cSO27gh*Rv4Ch7*6_(5Ae+Jgxf1 zOdDh|B)Ia*E9FZsy(Itr?|&aNL#!+;EG*2zGGL3ODK0Liwzig*mX>rU#lphE;;6$i zV2h*)27`#XVPRom0aylXaTr9SQEF>zIpKs8(w!6w3k!>*4yzNEMbcdJ z1qTyK_EMPDOdDsUJ2`(A78Vvq6_x>8B+XU7dJ~5$gEoIV>p%H8-N~`Au&_9)u&SUf zlE$uvLB!Bv(R3%p!otGhsKYW~i^ISgePm%_VUa9W6|_ZCggRQ}KYsLOM1~7@rjIF? zEtGrqSd$v0iwWiBvRF!1u3Tx@IhZwTmaG1Mc_enyU=aPp~ZL>QMmQ_n+6W z^8edA`ajq@tj`nr1JMlJo9ja?LfiDcUBsy|$@s zPdsu-FNhbL+BBEOv_ZXk*K2B{XVM9O;K$q(|U;p^2)T^vXHbIa?p#` zPCxOBf%)!Ni!5D(oSc*aVfd+QzM-1{8szDOu$s^Src9WI3#a9mw`>I)V!*LH&g^*& znF~{py-4GQrz{=zf`TD>z z#lL@m=es|G-ENOL$&E&%;{LlmopEaksre&A({m|^X#i6u4A1l6c^({RK>e>P@Zr5o zyi*SBIm_WUhF7t2``-`>kPXDKVH{zQpnq%_lcM&e(o6vG`-5N@Ci9E$eh)qAJKh7N zS`z+kfB#eFvcLR!#IMn?Xy{S?sGHrA{Ih?IRnVs7!QFEWLh=f@d#-_Bumr3w4Q9I} zm+6!n3ZD)B?`T#6JwDhSXJK5FkF>>^=)K*Hw8a}?w)ZRQAB)H1A)$#OAvGTl`&wdZ zz-aImEb5S(9po-Xro)s1xMO*7%;vw#ZZ;XF-yG_n&3>nI0HII_$A6HIBLmrZ|22OZ zL0&}d*Jb?bxEK4xSCRYezbf7Xp3kgJNjU6ux*!KgB}%HGkqoABob#*iQKZm^YSU2{Vi~wSLz=Lo7Td`HhBmQT93O9eZ7eH(e z_z%`^DdsQJdKbNYzS;3kS#f662RyLL+;m6j;opdVZ<;2`&jYCH4JhshfZ`-QO0Vlj z3+d^w^n_nc_nJ_izXYdRx)ckc;v_vfKKc2`&szbYKK%NAVkHs(FTYk8Rr?2k8y*4A z>_4oye>RYjT?#=T9(wn=Y{P#Gv4Emgj0^zQ_PNpf1tuB57N6c(6DNEDpvF{GS8cH> z8Uhxd-nk}D_yWM10~_j;4q=N=@7xwAd;wsadw1PIC>z4z;~yKo08nGnHB?)ms9&qq zVQ6Rw8odnG!-5I<5n>)87}Nj|!TLpjQ+98cQdc+g+iQ^DwAiu7WQ>2B1D5t(Rs0s9 zh=1p^Rd92Aqvn7QSSyL#g0$v}(uV)Tl{gK^E{v^_^aDT^aH^$C@ep$LUXTAlA{l?m zwGOyb!xy0I`s@IJ`-$P7N%&_g)^>T${eP$OZ5emh{X=%|_Gz|dLcIKuH?Du+-3LVc zOE#a5>pxfYPa=Nc>BN6{)kF5BB}$tMpDSUmT)u!!zi+@#R{QYAISyK_fL$kpsHtF) z_oHL5*=)FV>(-n*5hzavYKIOf|GGXqbbWR-187V&A}c5n^;2esDa`>_TdYxGv-Iga zR2rqa>NXGwp({Hs#`u$8PpZSXx>6j})yDWYSzoN{99LJ0YKwn6Ds02Yzq6sb4T^_w z1U^whFc^f}?L#1-A-X6d(hD71BhmXE@83~0S|io_Ez^1zp|{ClNgEx8HuWk${5;lQ zm0jrA+x?#re^quNF+XLL0))eNU7sCI`ekZ2M{&Z7tQzEu;d_813_R$WQ!AgxGL-;s ztT7b zyEI>EHdh~q_U$cr<8%=3z67k>d6B5U)YZ+@@4G5H@Atuwl1hB{sZv)rbHG}unx8U% zai@YOR;pegb$S^eN;b-Z?cC7i5&&u?2#1T`f;}TcV#_(CvK&~ z=R|+ryQ=yxpA3KXTpn8^=%>sqQ+gcXCw-xq{RY38%Es;qs1Vezp1kRku%Z6h<#)RV!7@NX zf*vdb1cE_4@&^!<0YR&y+fWj~?2#f5W5|DuyeAoiYWpdaCj~kOOqmpVeIhhG4-LN`YWpdaCy6Ny zK~v^0x4*b9f2HuN5Cj2&AVLx)NRk9m6d{Tt+S=MNI5$FTnD8z<_~HtAij2kfiWdcp8nedqGpw4?DH}6v~qV4PeTo$XJxaT)Ob7oVXwf ztVRUS3lIbelB7lQQ>p0h@29 Date: Sat, 6 Feb 2016 17:55:07 -0800 Subject: [PATCH 043/142] halves most tablecrafting times pretty much anything that was already below 20 was left alone --- code/modules/crafting/recipes.dm | 38 ++++++++++++++++---------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 76e0cead24a..23432c61759 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -16,7 +16,7 @@ reqs = list(/obj/item/weapon/gun = 1) parts = list(/obj/item/weapon/gun = 1) tools = list(/obj/item/weapon/gun/energy/plasmacutter, /obj/item/weapon/screwdriver, /obj/item/weapon/wirecutters) - time = 100 + time = 50 category = CAT_WEAPON /datum/table_recipe/IED @@ -27,7 +27,7 @@ /obj/item/device/assembly/igniter = 1, /obj/item/weapon/reagent_containers/food/drinks/soda_cans = 1) parts = list(/obj/item/weapon/reagent_containers/food/drinks/soda_cans = 1) - time = 30 + time = 15 category = CAT_WEAPON /datum/table_recipe/lance @@ -36,7 +36,7 @@ reqs = list(/obj/item/weapon/twohanded/spear = 1, /obj/item/weapon/grenade = 1) parts = list(/obj/item/weapon/grenade = 1) - time = 30 + time = 15 category = CAT_WEAPON /datum/table_recipe/lance2 @@ -45,7 +45,7 @@ reqs = list(/obj/item/weapon/twohanded/spear = 1, /obj/item/weapon/c4 = 1) parts = list(/obj/item/weapon/c4 = 1) - time = 80 + time = 40 category = CAT_WEAPON @@ -55,7 +55,7 @@ reqs = list(/obj/item/weapon/reagent_containers/glass/rag = 1, /obj/item/weapon/reagent_containers/food/drinks/bottle = 1) parts = list(/obj/item/weapon/reagent_containers/food/drinks/bottle = 1) - time = 80 + time = 40 category = CAT_WEAPON /datum/table_recipe/stunprod @@ -65,7 +65,7 @@ /obj/item/stack/rods = 1, /obj/item/device/assembly/igniter = 1, /obj/item/weapon/stock_parts/cell = 1) - time = 80 + time = 40 parts = list(/obj/item/weapon/stock_parts/cell = 1) category = CAT_WEAPON @@ -77,7 +77,7 @@ /obj/item/weapon/wirecutters = 1, /obj/item/weapon/stock_parts/cell = 1, /obj/item/weapon/ore/bluespace_crystal = 1) - time = 80 + time = 40 parts = list(/obj/item/weapon/stock_parts/cell = 1) category = CAT_WEAPON @@ -86,7 +86,7 @@ result = /obj/item/weapon/tailclub reqs = list(/obj/item/organ/severedtail = 1, /obj/item/stack/sheet/metal = 1) - time = 80 + time = 40 category = CAT_WEAPON /datum/table_recipe/tailwhip @@ -94,7 +94,7 @@ result = /obj/item/weapon/melee/chainofcommand/tailwhip reqs = list(/obj/item/organ/severedtail = 1, /obj/item/stack/cable_coil = 1) - time = 80 + time = 40 category = CAT_WEAPON /datum/table_recipe/ed209 @@ -112,7 +112,7 @@ /obj/item/device/assembly/prox_sensor = 1, /obj/item/robot_parts/r_arm = 1) tools = list(/obj/item/weapon/weldingtool, /obj/item/weapon/screwdriver) - time = 120 + time = 60 category = CAT_ROBOT /datum/table_recipe/secbot @@ -124,7 +124,7 @@ /obj/item/device/assembly/prox_sensor = 1, /obj/item/robot_parts/r_arm = 1) tools = list(/obj/item/weapon/weldingtool) - time = 120 + time = 60 category = CAT_ROBOT /datum/table_recipe/cleanbot @@ -133,7 +133,7 @@ reqs = list(/obj/item/weapon/reagent_containers/glass/bucket = 1, /obj/item/device/assembly/prox_sensor = 1, /obj/item/robot_parts/r_arm = 1) - time = 80 + time = 40 category = CAT_ROBOT /datum/table_recipe/floorbot @@ -143,7 +143,7 @@ /obj/item/stack/tile/plasteel = 1, /obj/item/device/assembly/prox_sensor = 1, /obj/item/robot_parts/r_arm = 1) - time = 80 + time = 40 category = CAT_ROBOT /datum/table_recipe/medbot @@ -153,7 +153,7 @@ /obj/item/weapon/storage/firstaid = 1, /obj/item/device/assembly/prox_sensor = 1, /obj/item/robot_parts/r_arm = 1) - time = 80 + time = 40 category = CAT_ROBOT /datum/table_recipe/flamethrower @@ -165,7 +165,7 @@ parts = list(/obj/item/device/assembly/igniter = 1, /obj/item/weapon/weldingtool = 1) tools = list(/obj/item/weapon/screwdriver) - time = 20 + time = 10 category = CAT_WEAPON /datum/table_recipe/meteorshot @@ -256,7 +256,7 @@ /obj/item/weaponcrafting/stock = 1, /obj/item/stack/packageWrap = 5,) tools = list(/obj/item/weapon/screwdriver) - time = 200 + time = 100 category = CAT_WEAPON /datum/table_recipe/chainsaw @@ -266,7 +266,7 @@ /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/plasteel = 1) tools = list(/obj/item/weapon/weldingtool) - time = 100 + time = 50 category = CAT_WEAPON /datum/table_recipe/spooky_camera @@ -281,13 +281,13 @@ /datum/table_recipe/lizardhat name = "Lizard Cloche Hat" result = /obj/item/clothing/head/lizard - time = 20 + time = 10 reqs = list(/obj/item/organ/severedtail = 1) category = CAT_MISC /datum/table_recipe/lizardhat_alternate name = "Lizard Cloche Hat" result = /obj/item/clothing/head/lizard - time = 20 + time = 10 reqs = list(/obj/item/stack/sheet/animalhide/lizard = 1) category = CAT_MISC From 7369a3a92ec570270fc64e6f092ea3c1c054ca72 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Sat, 6 Feb 2016 21:00:06 -0500 Subject: [PATCH 044/142] proc to set random blob chemical, instead of having the verb do it --- code/game/gamemodes/blob/powers.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm index 87cfcb67bbe..f08365799c9 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/game/gamemodes/blob/powers.dm @@ -213,8 +213,11 @@ set desc = "Replaces your chemical with a random, different one." if(!can_buy(40)) return - var/datum/reagent/blob/B = pick((subtypesof(/datum/reagent/blob) - blob_reagent_datum.type)) - blob_reagent_datum = new B + set_chemical() + +/mob/camera/blob/proc/set_chemical() + var/datum/reagent/blob/BC = pick((subtypesof(/datum/reagent/blob) - blob_reagent_datum.type)) + blob_reagent_datum = new BC for(var/obj/effect/blob/BL in blobs) BL.update_icon() for(var/mob/living/simple_animal/hostile/blob/BLO) From 143ae442d69243081b05c36489ec4b191e4cf623 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sat, 6 Feb 2016 20:06:48 -0600 Subject: [PATCH 045/142] Sprites --- .../mob/living/simple_animal/hostile/alien.dm | 8 ++++++++ icons/mob/alien.dmi | Bin 85578 -> 89273 bytes 2 files changed, 8 insertions(+) diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index dd1eea25f74..9e249e362d4 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -160,9 +160,17 @@ friendly = "caresses" environment_smash = 0 gold_core_spawnable = 1 + icon_state = "maid" + icon_living = "maid" + icon_dead = "maid_dead" /mob/living/simple_animal/hostile/alien/maid/AttackingTarget() if(istype(target, /atom/movable)) + if(istype(target, /obj/effect/decal/cleanable)) + visible_message("[src] cleans up the [target].") + qdel(target) + return var/atom/movable/M = target M.clean_blood() visible_message("[src] polishes the [target].") + diff --git a/icons/mob/alien.dmi b/icons/mob/alien.dmi index b082eb154185134a96b6965a34a4515235d021ac..b1433434c035348ba136d56d38cf3b852bea5360 100644 GIT binary patch delta 21132 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 b1)-+b+wWhMi=H~b!0)uJgUt(T&-niWy--GZ delta 17408 zcmcJ$1yq!8_cl6+fI&$Jh%|zMAR!#CeAI{r$i1UEitych+&SmiOGx%-#3i*LCgv)YejUrBfvc%AD~xF!oZh z^|X2E_`=K4-3^Q_0QnE6Pw47y!2-^9O!E|v@S zK6B5>-&;^5b^mFyQ`v>RZOp#$)ffnWXf;63DtGa=PwWGwjM28vjadUNJL{K1LSk(T z&$L91U(!(-X`37axshLY}2Oc`H&J&m*!@L!Q&K5k@ySWM27g+E|X5v zJYZ~5JXEz2jc#~@720YEv{o4Fw&ZAskKW8Vz*|l8JDEBwx<+UEPUkS}({r_)@3uBs z`cgb8L(?vM*K?YFKVwZ5^Modi!++!Zo>TogI_L5Nv(U^BcTwBL`Ut{bs_mNi z3c~%=x;&TVzY1VQ*VUVt<=<^}gkml{c=zOCe+rF(x$wO=+>e^{l&Ckhh#zEj%YcE9 zO82IADbvf2W;Ue@wx01a)di(uTGQK4Hq7~tX9H}DJD}%9&+~>#qq3-pT<3mem43E! zy0-Gg@`F3N<03x4A4XuGP#YLNR<(*rXjP;xn@dyg)Wlz7dR1(6p(O4tXBCwf%f=U} zkjZ;pMi_zhuyI3N)VQJl+WPg_WHacON;#$)0maM)Q9s2&ZC>SWQwvKvW6$+)Sfl^ZBo&&IIYKAjdQV=tY z^!6T=0)_wOm~SID%UrL#Rqrnq$VQb{I6ZKFuVAL6`>7N)Y=FHkJ^b_q(ybzsaJ_$; zQoBZ};)=qg<-8Byg#k;`i6cWsnj8yeBNZzpTB!EsVf=4N&*eXjlD>AEn7cBPTcdZl z-=+AW;LF&lk6-ii=+QHGqA5w^~|{&-9L+2`nX5wC*{EOSQ;$5v5N-_AGY=2H9yjBPs6EHYI{y0_@(&$>%hbAA?6_$ZnWD z!8+I;k-**GiAQHnC9DKR-M)Uno!a>6O5XXGCZTzzsJBS%sU{wJix_u2-~!081mgK7^~4lGc(w-GG-U`JjyqxIuYR>|p~`9^VSW9_IvmfLuz#ndp%+xZx^iJBtL$}0 zkbOXVnfrqnInhk<+f7&Wu+3?SZ3pVbKAZ8niOWT~8Ym1)Ah`K64hPvV@tc0_J=h(Y zcS9qBTM9xjsQo(C*ms-zIx^sL`e>ssviT_77}>&)y)pRIw22!nbsv3BWQMc(6T>6M za2i_S6X*ds)(xpEsT(WI`!-tV+PRxO03^c8A?@+)?B1gmcP9OTp+j8@E%E3^v37%R zL2^&m;b+@sKDh~x4j`;YYbx^`qX+t@oJuBYd2YxZ+{4!|^!jd(ZTgazmV9a?dh%(5 z`UJ9+c0V$@9j}{-dn)>Dj4`4vQmaoh@uL!j&2VlzWBVn~ZeeqdCZFQj3BX|C$@BKnP=DMP(>s#Mc5^Lpl|=NiVlpr!rd7#J@gYcnp$JxO%z2JW{J8XF zMeNUGw#4f8GZ?*ZsD26K`*rADGn7xX>}RvniaB@gz7X+)Yr|VJ1miC!x~qI)3D4K< zEWGnWaYLhp?p&=*DQdeP6w`1djWabm3?J(tFJpOvI}mY z_u5?2sJg(BUn)?L+kcgA_2HSh(B1Ol^#)>9ZvU=W|0)G_D**~W zK-IiS@YiNG%h%=iUt-Cz*U6rXqj~Jn8TyLn$z`?6HR!$He!41D;PV{t!A?qhyv-b` zfdTw1bX&bLD)UbGUz@J&)fI_AS*OeXfOb~Cg&CH-01R|IQC9cgI_?9}*~DEi0(;R~Kkvcrft`bhS1HtIG-2?0&g-=b*o!q2A%C@4i~ zBhL|B7-je_2qy$GcP;wmU?_MCG1-;iR2m-_U}^UJgIivb`o0qmdxL?pl`*!hLKSUh z_`$&(a%QF>B8oHBl+Gi)z_G*qG-ze8tUjs)L;1sbeJf@=A0@F-|YTYhH?)=hv8Q8CaJcX)TG@~ zUXl`ZT(cfYYH|XWYXVJjw>R6_I1jkv%`}DRdP_S_(GVu9eXk;c=SrmCwUYDtAv7Hy zuMZq*@GT*-Ylj`cO=jm74`yH{Zg@>rl;xytN?l(|v-eI1X$=(eCLeDeUEN9|>07JC-L+Ic(& zH({7@?s)fd`xi}<*t?5tbFGGKot*QZw{8l*QSV93yVG=nRB#H}lm1VUqw2?h{`>w|3 zJ{|Sy42G2DX3HN$+YY@RY)waQH>L3w>G7wg{7p1;^Z=DaVP^cqrn&fscbzRC@MUe0Xuy?F%FD0kNH)%td~cC18p=FP(^9nJ0ITNMuDNF*x$8bs&=djVL@ zr7J3}AMw+7U8Q|T(LjA5J_91RFIKxO*U;$Ztfi5th!NXM!j$Wou9#vN3hvOnRUrL@ z-1VCu-l6_6=g0H00ZSk38_Xp?55Rx>X*^kpPK)jW7nsnaW^^T`s$DVWlLgG1)MUd99pVH^4p_)_L9UEQct81r^&ISb#8Mv`ZQPqa1 zR6q&Fb?c-GUd%8*6@s!|nkg!mAep~}dd|9gFYr9_r9ZuoqgfcHz`!qs5-$I!sbD4V z(3NFW*ehgZ6A=S&P#GqYzEOW8`+@3lw;r1ZisyGG zrU1T#VKh&B!-MW@<;jPrxa$8sCDq|o~o9lg3!N7VO;hV0o{%RJivkL41y<7eH% z7pPIt_;QBQK34b!$%Nxyz)yMi!L)$JR&QxUneoYBsO3XDg4ZNMz(WCe?!**=NGwL0b}vJZl`k@< zY}-mI4pN13@}fZWu*{X4L;*quu}8M#meo)Fo!qT`B31$vi-WdHILOBxJQhMy^JfY+ zFDPY0C)9uK?;Xw;I*Ya5KR3r1At|+eye)1kvG_6vG*pTpo?DR%k|2(sU^wyH<)uiY9oF4DzCyTo?w>T!aUhbXFFhn;;_E9*7snBSPsgZZ-o>gyeIeXM=Z*{g zyzB{ONMUj3771Do8T$MgfT!FIXRmcVkpuzmdlnBo;*^G`%U^hmZ2QcVSg(}f4haU) zecx)*RUYO#Cx6_w>I>^({3i8N04nc-Q;j`ZIg&%XAeSIbrv5eLl^il-tucZJJ} zdRF}pbA%@-2QJ1*(*m~p?#tLXC(KBZG$q6bUMeldb?NvO2&}N~PYkWUQB0AXPD4P~ zqERA}5@pWpC)jPAuagqFb_|PpH>kIFxSzc-UVi*EE{58mhT?+IcG0B2`12`QS`LLv zkgqOTFAZ0q68(${cYN&{@c%-QT_DZ*TK0tSt%gkr2GH4p>$tPp6eN`3upM?W@r}c} zzqaIWNJK=u%H9ee88c}3;~FXNY^`pQk$9k79jyXE$Y`X8_WfBh@nM+pyG_rH!EhWzTuNbpFp^Iv1W(g)dKo7pO@3mrT`4@@?mxK>efP6 zWkC|snfvCwmy+U#XCyb-?`N;u3xxk=3B6Tk-wHzYcFd^-SZP4}jL=(l152*OZ~QU# z!(nZ{_De=N_+cAHw9KfKt2k)FmQt5Sk~xAJIxv_1fTk;^FQV(+CH%)>O>y^umpmGa zR;P!GDJqDu>|A>oz=IGG(q$T;&8o_&R362`d{sW;;T38{{CM@}`Qm;mrt{IIw$;)F zjdmhppt}qV($HRsG#{$v>g;#M@LcbLOE;ZDx;wbt<}RX3a|VvY*ggJ+AMMS@?{w5{ z*?5mwVitc$afhVF*<6%yT;T_F7`$hQiRr<L6Q)gX$M>q2B)>W>j9;m8K;A-t)E0Mabg_T#NI z0Hj3GHD`0Ld_p!Ny~k@7R6qW}ck10ZA^u`HH^|4n&{3Fz07A z3U%X{tFPJ5x|%c&?F1Z4Ya3-~`AyIm#6T3Ed3)eP(m!v}SYVCp+99qn{WcbIuUuI)s94b`K$-4@jp#7#AW>Vu-oPmHhIyp8ct&o$u*( zr>5j)uCGDU=p(g)#JCc87kK(dDISj#$pV@0_@Cb%qY*m`E4smm)GQSMNYO@+&P#qR zvW_$es=-59&smLYMy<|1EB7v6uiyUpUizLLVN&gGss6@Xy=k#EJP146yTU;qQ?*wu z8ZZ{*g^zG7%q^^)wbN?+2rZ6X$<2$Zpk%AF>`aR8eZRWRB@fP=fpz@yl)xOdY++j@ zXKB+Y+=%JEE&y$ky+s8u6x;{^U4ls6{P8ukj?8e6N_SGUHsoQ)vx^7#;y;ZU%A+;X zd7zC(!Zy+UY?_bgV{X#*U@gG)ls;w0uPC?N8LMtjkoQ*NZrEA-F>q=j6G)Ncz1Iaz za3FzIPWWx#@-|XOA3bP3e97K3u3kE36`7yg*vO?82VA~K8pt)?UWN*-_E~I0L>pE# z_4e#QQA=7+keCPUj)xh|86nt9G zW`=O%4kZJ${)?(Jfil>;$ZWg*LF)i!+iq56{Sd8-q79R#jMN^8zoC1(3f6y!L)tYV zcQWZ#0FdP*-*UgCI+EdFu^I8%^=uHBUY3 ze;7 zOW!S*IMiWDYC_hQ--oU&1Ej*@KP@3#L?~}TF0quf1rh}P8e(QE%?@}yn%_VtFCO8K z#c_G{#0Z}{$oU_gGRm-G2T#e4olgnGtz8z$teIKVbz%?G;D=a-<4hyQM7h&-F}cSOzq8ZBA&;1PXsy zFQ$ocZz8KNw(+BFT6+g^?{QR2XvtvX)*Aaoe@Ff8gWb;WtP3+|&2ZMbw|Vy)t75?RX7^4x)m3Tmm=xNR5CA#db7@oT6MU$1#VQE4zt3E!S^)T=I8HVJ?T zj(q8L5mEYyW_~V*^~M4%+jl;YV5ZaEJwbQrqp_5;#-v=jS#lfS*Y^!A9Lh7~C1)6o zIjJg6^TUW>ovwWEzHovGj0*>jv}5hX|3rD6byh?{;Yp^qXz(SG&7XiCu_q?o0XJe= z2Uot;)(JqQ@z_Igf{7tjHawN2`_*zI{t;-gu0XCQq>?t?sew9G7JlRl4;kik(NX5E zEzQ1o&ZcZ41*2@gF7= z+MS#30uwJ8!GO%+ckwPGC@S-ZI_`C!4mGt-^#g4Nn+uFQRvWi%VyD$1t>%&H)7)L= zMB(0)u9spxaKFZ6Z}Gaf_~^psno-wwtZ(1LLAF|1(&im9^$!J|Fm-(sFsAtYf8xbo z9xf|pZQ;fC!0=5Uo~;HZzGTtx=zhufi=CVP{**>u>zb*rYkXnrPYszTXw}EWwURaS z3w?`s_9{8!2S!FdemMF`F)B9GWjTFb>n;R2%wx)P`qy|IUlI{?_w)A`U{2^kHhtRj zit-%U?~LO$0Na#}ipX90c0Pf_k?5D8mO4LhUske)3G{!ZpTWSF>9r9IY9qZ$F}nnZ z7yJ0nxGEMb)(b3y&^covWLlodlgF&vRZqxd_!%wRC}7SjU392NETJoCCWd8sKQ4L8 z+@j6%sEX!!-EQ|&%vBv&vC&;_x^iV^0NUNt=$)2C%zg6=6?~-_>@h#OcxaWcR}SFT#N4Fzyn7==!=PC{e)fu)Sgl!(q&yB z9)!nTaY2!`<*M&*SIX_5o7)zTs);=-iR;&Nmz{ARQ~=uDNTQR%Glq|I zBXx$I;MZGby^JZw=qxRRH-A%jr_qF@oU{_zl?}5Ng zFe-Iw6>jZ2(Ppl*fK42}uO3#g)H9A`9|;iIdV;1i3If9|;ksm$ukJe5c79IVt<__G z4Y?xABAGr1+*G@FJE^w$njez`89L5!=z9#ilGuTpf6WeWK9Z&?Glhf9{F;h`(!<#b zU0<~M3mwcukVP-h{1=bsQRXKzdp?b9iYx!!0`PzTGmg2%_=_XMf{o_`w2>c`n$DXV zrPp;^tmDkD4dI!=ahZF~gg$q&m&!VicIsJPYrO`i+7J@Cp)nmgjzLx5qdltS;z z7V7{-1?E|hY`LuWD8iIBox-DI%h>yq*&$ZOxD2?Ly=akz;TAk5!UuwNG9)e}-6-FF zpd~%>*#LE@2~nEwsBDPC_AYKff~)NjnWG*rZP(sM6*O&qx_a&A1Hb~lE1L{7V(n?# zIM;&<1{jJccIugP>NlwxfPX?FknuxM2KCZLUbF$p=Xj;u5%t1MhmmZ?Eo}N#N>aHa z2|v>@@{A$nI}wBkn9}1tP2fuQWlWiiAHgTCj%MWO6>&b z{FxO{{_kiA@n*bP{7K`ypv6;AqXgAZW*(`J*h)av>Nt)oB8W@unH<04{~ky z^}N)4uubYu-;-)_Uu|qe>hVz#&DhhAzHA*RV8qJt|5JPcx%2P%0zi>S2v(7%RC za!>xR;RSBZPc*;0NPTKxT%lKR-QXG~@R@M7vcMCsP9s`eU3W4)YensC#iF%#O&S%u z%jWUrxs?3%>#MYp3fvr{p(inb$~)Dl494;*p6h=?cr8d0HdaJQ$>e>EL{?Ba0Cg?8 zbk1kc!K9I8x*VEu@G~K*YnQEF5d(j#;~G*VcXbJ0&yg_ZptTzr6GJ07$ic|!ogjMn z#p1|EZ~E>No&zxRCe9}4>KEJn!J}S7drrnMG*1FRe~YwPFa){~jn&}gV)zG&?=*~@ zyFObS-Rl(5eg(CDaYUErNerNzKAB|T6#$XPt}Wj_mAb-_KXV$~(|vCqMVU7nw*E>NE4wYu z;IPg3`lJ=_wcm}r`X_?7P9DBE6_)e?D6j1^X%_a%puAU01Sk&WEQ!MlEsjDeB5Lon zn`#eTl$g<3!M{H|Y2&dDa3z_%yQM~3hn9B$c8os>eMWxBzPU$1`hx&HmI9;j^NiDS zQlVsJ7cJ_UV0}$BXxf%uPvqXnrwgG@jan;l!YkNAdHU&nS2g>)b)H-Hw0Afkoy6Cb zUuLWLLQahE=O0=BFU&FUzhSfgA51pr$lj%Z!fD?AA*epknpKc}L)gN3x&k$?lxFb3 zlIQ;4_kFJ&lx>GE0CcjTEUahD4vMQyTqTd_B9qQG)KnPyU)HGuwLl1@|HqD4h=g_J zn);Jz(BSh4%7nRV`j#KKo;Da!&j7_z;UGu>g7ET+$C=h^1x+x~;A9HAbN@Ewx>$TI z?uEJc=lV_13k#n4X_=rCBwsXt_9-@lQJfqj1R%+umdrPzDQ zLeNS>f;(buUvXj5x+f`=Ofr(#-7*m11^B!%pl88Q;ln?$GKuKEVlH$4e1Z7)_A)qK zrHywz_b%7-OCq>B@@(K+1=8-NPLdEya^BBib_KlDV`g$pjxqPxp`e_Bk2Qy^4VE6i zgR*@nR<_vVR$&VL)fij)0;p5kt-VD}M7@tNG@NF;;TCIFBKhOSOs?TL5=EM!*;y2> z+q3y422>mO=0_qYE-t@J(y(t1*+V+P9h8&E`n(d4I zr%I=Jr!x%jFH`(`p=3GNo%&k>-7m6Fu)lBn5b*d`V*d73^v4@W-O*OMQ`hzfjF&X~ z0zjv5&Gw1OVf)+3o>p+6kHq=6st-(9eS$o4&+fiVHg*xGeAgFyO`k@^hwJ%T@Gl{K z8o`3)U^o|}@atQg9D>h#adp{M#M0b!qp%$>3HaP4CgK$ix<*vAU`DLS?S@M zs%V(Y1F_TH4_64NKHJuH^Mxb|v}D0;O2I$G&1x1#A;FqW6Pbp0$!gVmvJP{O;Kh}Y zwSX$8k7V9SX)d$b>6^$T$Zfj1v;*6f343pBN)916iuN`-dCV_raCk9SHGK;7ezWCD zA}>=(iljF0D`{gpY-t|2wXPBSzB`_}Y{6%v5F`r{HJ-1IBTZf=ci%$QN*h^|GBS*zPX#pG=gFE_#(DFYs zI|jZRH8nNzK7od-%SDNDjJM>_)w1C5V|GEwE%D3NcS@#j_~T&;kDrc0+nxYH=IC#b z#Q{qi5AMKu_h)od7+jR_7F3aN!1g#)u&)CrwXzg}v`p{8)x`Tf&7WxZtubm>Jl<^q z1+~lUPcn~=w`%~MAKb?gj;=HLvl)5vVEFO@sFtLG-mTh*auAeB@;0xTn28q*Y5UTv zv-#fh-8^rGnh3rV+x!UnW7MKahDVHxF=g>^kRq{g>kB1Q8~%8J!h?)pu(b#xrxsk1 zYhz%!z?(`g*VUN62WrYci?_DV_jX{XS9Xiz^DGbE)EytfnDit37>pg0v5(hAjw~KY0)qTOpgBe|ccVoCILpcbg@V-Xv+i;b5 zvEeh{OU#R0(q0?iPl#-B)npm3Q=VjKNT-zJNziaW|85iwat_Mx2C_dQjQ3sdL9qL zVD*WqA)UIL*YF*#sj3dghCFeLz9}Co){gJhc{VpuMQ-A|{{-cAsOB||b|^)Fd5L0n zLFPbvDNh*Q)CLS#lL)@V$U};CEM|*l4qy50;K>`9^u8D;>tfB!{5tw8l23JhRH~iU zj;2Vv_$(EZGnA@~dI&cg@2wUfY+%rkl=;c;`Ll%8JzHn{T)3EdUkLA_g%Kg(HXyNI zbvqNJ9Ba$@edzKZ`zb&puHBgAcE};tz40#sy%PpBaH^V`nsx+3WH)ylul$8AA}-vs zziYl{I}%P0y8RKZXe4v(>Q$+r01+jR43LU?f4Zao55BlKf@m<7NYO3tta8`bs(z?2 z+YNjntTB1duM}EL%l-MyQ}TJW0dtEneHByI5LR=jJmk^pE7{gDXurx z5&8{_S2K2cF6y)}zoXt^`Rwq@IHkhyxgv|3?A%U#tFmH4%Q;+=&;mt7b#JrKK9E2c@Q{8-SE(tb#dAVzS@8I)|BRRQN!i$ui6UhiPP4<^0h*> z|DCMp4F^IOacnG4iBu9>_c-WQcGXYcoSyy{{p4BF&RmcF`sAY;fAZps3#TtQ>piWj zw}HlRBmtx1<>Pg%koTkY!Pr9`z9rCsyMLw3QH2&zw{7V}Zq~7F;|^7`mv|D;6oZ%g zmqv_Q6;IQ)MKl}o?$Lx&tVXK-_4>KsnL~?5OrR}lK;BgJ<(!XFLo0n`AR+4#V>9Wb z5r1;-UnKU^28BdiuyjrJrR6w|Bo?J0;A&V$nW)7nP@%q_rO2X}lXCt*?v8H{yTypJ z3#vk3@$@4zQV(DU=2NZ*`@P{}e1!v3DNaG<`Re3(z|_e6gk7smF=!0BAt&t^30fx|%>`cQoMgd4JEOq??Ge$<2YmE`53 zw3~eE!tA8>fa`NNp_Nlwa9G>$Rc$#JqsL|R{cHQ#j~X()t10gNAW~qLA($*)M9598G=_YAopg_V^IOtyqUF-XBw}+82 ziEP7IhL@XE*Fl?VP6}=SiK70_F?agtnSzxRxhpw}EL{OScc*b9=5Nwk4d4AB6RZhT5dxU5L@CWszCtx<4UV&q%=mVCtCDE-)*_%>Plq z_GcBvcj<3cUETAsF@!CZ!Ny4YP@N!WU9oB0c@8wt6x}pA?hRGFmO@(pWh9?};gQFS{G{IN zA~!gS_DZ8kjZQ^b#%lnIfe>g3Qcg~#Y3~*^9P5j$fx&gLjbJ8Q{#%#1!~trCJUnGB zH2e>~9(|rUz1(NQw?&@sQnnW|4J)V^NjBo2jo&`D@J$J2`G+xb(Bk;15k5-WMKq@c zND}iLTG&GY>gj#1Z+<13%!8}`!+$1%pHg}p>j1;Kq@w@uDgSU*rsqK%;sqn!VVizn z77=2;-wfsB)iH0s=_&oM6z;GE<)}@_iD6auxc85(RsQc4fPb6l|K`vB{VNHO>B3WbunG6NaS*GiQF6(%!~;;iY5!y2Mp=7 z>S|KJrC(_;vM({3-FY!+_SEDoJOwjhf=B1@x z9jeKd<3{X*mKPbkBEx%d8KQozSmeYS0*`3!*}M{*GuD-9Ja}r}ISf*sxW)?Rf^|G= z6|9=J+VA%)e`M%Axlg%;acU9fs+1a(IjCT;pZ>w=*nee!Sj{Z_*6>O*HH`(QdzltX z^A0mOIL&oz)sx&1_o{cK6p~f)=OJy)A5_U*`42;%?z_smjJ#1E%ey~=&`eZDKHwfz@jf3BYT zy{vrs2>3o6R53R)cC)kubVR53vlDhRiGy8TN9*yTK@g2D_)Q~>W2}BcxAyf63N}=? z2vC8x5B&v&Sjh958$UGxQVw~MmJhzYsk8Z&Pn3)c9we_2=t?_kZ8`+oK@*x?QLLE) ztK)WK{5skRRvryvW}0l&G{y}_z@DWs;9#z&Bn~w0{VEf4le))En`~ gpM&q-6@V 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 Date: Sat, 6 Feb 2016 21:44:36 -0500 Subject: [PATCH 046/142] Cooks now have a sechud icon. --- icons/mob/hud.dmi | Bin 9657 -> 9718 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 50e9757cf3a57e9392a0077de3d106c4733e5427..8e7724e96e1891eb09071a4bc175929ee5306786 100644 GIT binary patch delta 8334 zcmYjW2RNJE+efQfic+dZMTx3iT6?5whN7>%S8cUN5IpG6QdDBpuA-_|m5LdoEwxwe z5vs&qL4-)Y^!?U9*OTiy=RDVQ?s4vOkKf&(cck|QOiiC6C`A(&UTvX74WJ*f*9Nl9 zsdMK#$MPQr-wdpKmGv}^UoYH_<&oD&jtJYIwy~!M7ZtPb(QY`GGP9>vdP+WGH!Zcl z$olT08RJc3eVd|Nek*&kXo<-`g?G8zX~i(z?_7jLo^sV&Q9obSN|k+&u~AdqT-{1YN(ln=4{QuBTSZCcJ_8+b>>p73>cp1ifb108PVoU z>XzO4&Zol=|NC01nHT$K&+5($q16vgg^0&L#q8)sqG} z#+9fZdHK%ahz!8-8qU}Dj%zXw2pt#5S0vZ1{{zo~H0%R=hPmYLE&_OY@?>~H7sP9>798H6$O>m_ZeX5L>{>ayw;J$f+(us zVuJ&uN*?*zQQpY8jb2qxB(VxFNzlmOf$XBeYthuFwNR4qRi*9yKv$a+wVKGM%--3= zH6b=MS;)SnVysH(Jw~VrV-+y{W)}Ch?lYm`T0l^~EylO0khstn))(b?Ds<8)por?P zUw-Z|c!Kxy#qTR^4!80?jf>jgm<_qv3Pe~>bD*+8ErxNqVKqz}@I2fTs_n2Ew?QVe z?Tp)@OODnf)rM-Dp67Y+Y#OGfrhXH)uu@+PdTN9bC1j9u{gh23=)4#-?oh?hjR%I1 zDCaDw;Br=_rRG!Jay>8RqJ^&1ZY@}SIpK65Dw8G|{reHWOg}+3|D1u6(wn#_V8d(H z5Yb;}yE=oa0x!Rg7F5VQmoELIDd5|oRl{QV9PuMkhidD76DPGc!-NZ=j!sn0rs~^C zUPdH~&+?0n#N><740c|q7d5Luq~PZ@ z5gRzk6(S4n1v`-!2v|4P^e1IVmP&?_GH#429YqY{&&(i>!@SoP@V{hfBMy020BykA zxUCBW5P6p~($lxir~%)e!Kal1A9NA(Iq*+l53&bL2ca5%Dl>OC(xM!5{;}lStDE?( zSFVI%9CLEJ2X*Xq{*~z0CIgrwWf|RIQM`N!t(aJMm}tcq4Y(EpVs`t8&y%erAm% z@z$pQZ!do>y`I#~8T{Zc(&+Y2&X^VjyonHD#!TF-gqKcc#y3~;D`1!8o#{(Bj@#FR z^$!*?m0Tmu*0HIOS1(SEE%_$0e6Aii*Bhu6S#VY|xA^4ztP#4G#m_=d}$JY^^m`ke})d9BJ> z&lU3m50I{=lo5fm5|@1(Hrn=&Hsf*Hs65oMTNXsEw>cSCaJ|i+09whMPah{aeTlf1B&jeTWNT>;C$^ll=(E8j%QJfa+V1ym~hUlLjr2U z#hofTbeEq8>Byu(F;rflNCS~>zw7j9wNoHU<$Iw2m2tvf<9Z8BNwsvt`1ahtI7FSu zx8B~*x46^dK&p1L#e&Ie&Wkw6G%S$xBWLFDhm0FvYPwH9$lomI#!keUi%-dPR#)G;Tsi`dbj(MUE^jXaNlg8Q%im+ z`JwkXR~Ja@0i9ORk@0M1pGNpP5t3%liiMz?I({>&kd5sz zC;EVqA*1Eu=5?*t*KZ0NKai`ODHY0(7_khgPDr;ipyuL@^Kx9%9idPOPz@2cdQllD zz6`mfyt1I`&OytQRIk2xak3bM-+6PF=FFe`*yIQYk?+l?7)uSyM^Q%~QkTSFYs(r% z4)2N}`v;DMr0i;)!83>5%GP&@e=_pR0GfDL?cPBbbaBWbzYU4)r6_?GJe9ier$H|u zzTSc&ZiVhi$nJ3$;#@Edv$S-{SLYB4_urK-h2N32X}6gpA4;3 z*fwk8bt!)92#O?YU^$VjwMJs00FXeekOSr1rL*}$CXJA`>F@M0;lwQrm2?2<%#hou zzW;QXjY=rcK9Qke#EE_2ePF0cD9VeFHhypo*9zIjs5w3%CB*#Tvx+!PmmJs}WpwRY zFe=y&w(Q(02&Gu0L~{412*GY#BqoCMZ7}*!y4-0HWp}|fcTl?acRxM?ldN=(>e2nC za26)2_)D~xskCl8P~CYz@tnvCRxRWZD-$4yI0%yFWNX}W$KY*vH1zfL+ljbANPfhA zcd{kc85>KOA$n6h-{7nnOL@fBjT<3D8Eh@2ZWprLQACw4y_TK`BTccgB=&@UFrnp{ zm#1g!$jC@6s@SM>67S)C0@wt{*yj-2}`S6T9(+jZW$nL+3MYRx5T7!T6QK())WedOT z>FIH0j@=-xudi?ZSik;$LL#s*b3FOE*Ykm~WrDf6`3wfr`owW2X7!zV036_ECb z$yMyHNqqrTMQr6x;*@kUfnnbQFZ1`y9P@i;r+8TSs2ermL~GG0cZIHE4WpXUxZUaE)!g}307wKu>`)k=-CT#; z5&S(M7CyV@J%f$U64v%m&E!JC)1l221ysdfEwTqjLHo!gUVsx474c8xIo*cV7wj_) zapi+beRBCs?#eGNUA;-;!YCV7Hz_KbG_j^MDctdM4(F3+PByIi+;M#+?IN zZCiorNmaW8_cfIG4MADc_0ej}+c_0e7sw~_ z4@e%lxVN@&5w+DwthL{mPK-81`HDJeE>P7^_@oz5->*h4Fc>2FI9UF=syvH3Dz}4{ z{(7MX`IlK)S+N9cK7d9Nt2z3F-;#H$M05U7!rmS&4nzqZ@9W9PZs+z03_kZySN{po z;QC#uH$`8DIX)g$+q>Z*yFYEKu|ml1h2;kO+o3ZBqw~Q5pob9L+gLm~SWaAuOgfUt zRK9(DbaRd&Y7q!5<93o-k!78QAr{Ixn` zcdrWsI#?gmD>JVezZu7a2%P)sH8H6t-%Muk_a{?m@}=n9PSai9#5X_ObZdF`4cD~# zKEcG!P6BGx99mu3u)L=TXL)T?jes6Xy%Kqj^ z2Yin;-sl#yomZ=S2H7xLtCcm#D)MPJfEopifb~=VtZ$w$>9Eamr2EbO%Us%!qZ`Q% zQEPOm-#R_rfSiLQeiGEXSNr|}4ttC!5@v^rXW!Mv@=OjxN&S&KNN~&P0rga5J4DX& zFq&GQR@tZXeU4HMtNp>@l}=Q=!cb48}{8dGFZ>0Xzl}|ekRLqC$*gW&#b_&j%yVL z`((cXh48SXs;1=b*U>Uv6Y+rqDZKe0_)+4V;_6PqUBi2#buM`UbTCpJ7+8D%BDg_d z;d2nKcQTF0^4ZIgr70b9c*Tw*d-dM;d6S;e5Bj4m?FNjA+u43!YKR;oz{KLEQfpMz z%4VSJX!d&JijBu;HX^lVtK;Nwqc{*@a-KnhHGMe>2rnJ$vMRR{eZEF2|WZQQ?`83DSa=!;K$Ds z;&iWcE&3a98#>ispV2#X!lZE1I`(g6V;9l3CSB_%_^fD?{vrmiGKi1l=%S+f`OUtA z`u|hwXUNTKMo5PX7XX`QIUxhNY6WK~vJV2w-}>p(CkIkr=H17GhPRMv@17|a2Oh

pfQKyh~D0J_cZC`II~B|C>DCPv-PR zi*`F})^xSuv76%!!5+lviY5Xf{~7i)%9@<5aBFbdZZ}&J2%0I6bc&2F`}8R`>g=SH za*@_YOOh!801Q1mJhW?3d&Jdgxv}AdvUh-@j{p>M_8lt$T z5h-7h&x&B;KKTOnSpK4(mVVICuyH7Fxa*hI1`85-yo?B)lLbtE3ZD#VEpf86+3ghuL`?DT+CI8LULpRVo;H zKnF2Fb$P98Pl~zm4f~1EiQ6|l_J04ML}=p&nJk|f@8_`8H)awRK&wV9Ry z+4_3lmshlRMom$vP()>8@k8@DBeTz`OGZ{!pGHQEyr*lSMy?0uR#xj`5QxCIE_%S zK{?hDL^ytXOAIhw`Ux{X{THOh(4!++4&y6wkZ}8u@7#8Afo(rrfrHiIDPgL? zK&6&U2s<^3a`KfQKwxcwg*>5_O7kYzg!JGjFP8dS-r9|K!BrnP$$VjP_y%| zI=5YXW>Q0(U9s!6icOsHzqCmjxChK$s%bgz#o2nbXYX*EdLP~6I zBt~1Gibo4yq}uBdeJ3s`I4!x|hrtNQ3{YbY)tyWD22?GL)XU@k@jG$sO4^jAz07Ae z%o?9=Sk5o7@MKY>>h+D+(S@Uo&p$I=kG^ZIt2>+O=gcJEL*Vhda<5fqdZZdCEDE_p z6QxM;W}b_6w1}jmGYf3Z-|Xz)WNH3rcKyN)_;_&j3TAinc;Ss&F8zGnNpW(}b_&De zevp)}#Sr;r2g^n}T{s2MfCsBOt%UWLa4Sn1-}gsfpRlML9`^k?Ch}7JhLSGr2fp`x z3>JuRS=B4t0=>rJ7h4Bo=fjZh&mCL9}4+d?_| zmbHqrn-8vhKZ(0e@?f-+4htI^0XeR2A|IcrzyA9^vuQ8x`qumC!te`f1}sf%>D!d7 z{GLxIzY6|oy8-UoNUltHp=;v&M{@X@-ru=3uBNZ}Td4uCl-)npFrYmXe=0c_B53@X zF|lx#W|FDy$_SbSypy-QVIm@p=XJqWXZ`3ni%tUO$|>IlaH#bYialw66KIQY#Xsb5tjf6Ljf?&A!&0 z>W$tp5VPp$U9;P4UDtWs`UrX8xGKDmutWRe;!d3jomH>mh z#%n?C-V;;sfXk&CL+f4DdWQX}m8lH|hTdnmnJhU|`jv+MAn>^G%To}k5VrkCxV^{R zZsLtPv(X%`YE?82RGwDVTv-*dm(aLaM=-E*pfECkAsj2gLf$Bb{EAWvao2-x&oyI` zZjAik*r0Hx8{RV|CC-CvXqo_?ypga3-M*XThxKLHxJ&RFU!By`Qqa#I>!>T+G*PS= z=`466l1tL)dX#l!bvF6x^E2BF-`ir2gSR2Ks+rmcxbNPSKdaq4A$=@7Oy(H(+=F0- zAa)jIJIRVxCHb;;*u>0*gHmNh`XuWQHVh05Q_C0Y!w8LO_UOtp;e9wj%ny-~V^u#Y z|JhZex+wKFIlB16zW((j4RJ~#Sh8Y=O0nQxSoY2i^6F1S6sfAyl@cM$kMawif}yDK z*^e10@A$ju%sAKNAX!!klgeR_i=~GMA3aBc)umq4+sG`T=#knI6aJreImyw50vIRp zMPXb()r?L#ZSyaD3k*1#Gq=V7_8`5JeL3b|U5Gj~89hG*vlkCO5ILaujFs0>_L1wI zlXn@?HqsG@oVAPQ0t@p(&Xp5S-e}qW0ZYrZ!dzt|`mG#7PP!HcvHKteePy>5F>Z7HrhNHpO6|pZPIj8An zP#Z1YGY5-wAoq>aow6m>Q)hhB&}V{r@Xkqts{rOjKd3W{dw|+kShzbWRK5M{gf0T9 zu<-n`vd2T?OOU8UaM-|yo20tWc88uKixgzn#!!c{K&foSG77$GqI(71p4Zz1n7#Zv zs5PAeuKj+(Ih_*6TjXXRrN8*K>}#9ZM)Y4mx4apiZfLK~8 zC*fK^cW$W#C6a&i&BBZS=`GY!ux7Yit8GB>O{u$ood`o!?lZ2YdzqK5P6S@JKAh&9 z;aa!?yri!69iZUfZxYB1H2;l)KchiTF_;0(JEUWr+HpIjby9;pp{i^-gild=C#$OD zaoWdU2oU8B7Ayf}n%uKuSQ#-JM!K4j*tY_L6Zo-&!G~hKE1+QW3LMd(+gX+@fPv*v zfb+Eee1*UdIO0bok*w_mV{Cn^WV}@Cw-|M$wYGv>8)x=|&aAEQ$NeESM0QEQcOpJx zYd@n3Q?R@Nd%Fy=#aHK5o=%DZgu45^DB32{_qW7`Jtx65UEwrcPF^)+7>+edPSP=* zJlm?Y-T=VFK1F=sqiVbOpMX^g>&7{qyj>8YsI{^Nev>}Bg&ju0KJ|06WK~&V*Z-p# zfaJMMuP%H-lNY&+&Z7Ls<)KpoF4fV|1U4p4xUaZ0hI`O3w;&CX}P zeCuyr)IZ%N`hnPLnw$!btO!UM{o96OS0)#3e>x1%YJ-`8Yw|}*R1gV7*dCnpC4RbqZfeU1Wxb};pt$M+GmdM3u$>@?oyw-{iz z14AwweRw9YELwe;ak6Yq)(hmjU#^*1XW1%Wb9c>$)9e=Dzx%aEbK0Jwu9@JdM_USm zko8Kdo%qf%Q*+tvCjJ0!+RK~EHWe`M9fBTYmm3n2jhROF@=G!On0xy5_jbEk7Y&u> za~9;@H8vn6#I&uvgX+=4X;bQR_oWJ=ssGPPX+BjZP*Krj|82GY3$e0L>gkQgRMGEE ze)IpyeC0wh5bZhBjfTF~gP2@Ik*MM7&<8?yaJMTKi^u2Ya1-{hJ6l+DV`Jl8ERKS~ zCZF+8P_$W=EvrrAE0l}LATbBj8)v9~HqP*Q(tOVcWzy%ryrBct{-lpXZXne7Zwj&+ z-4T3LZ@U_Ii^(yHGQ1-=B#MdDY)@?qi-OCOSA(sWQE@m1(CF?+IzdK8ro9C}Uq-1o zo=+@>=>2$Ix8%xnZ0XWdRW25&@Wnr0)X~h+ax{b+Tf!P+R$(<(2as2VeoE-WMfBlZ z@_z5SrF4uurj11wNp7-zeXaA>Iiz;En&hg4)A}!8q{jh}e$GQR=U%y#mz!m2;hmt| z8wAy|hos0$!nx_5UcqZMN?#A2*7Yi$J@s8rkF+0di#fMkoO|}-(}<2)>9^TOQ8$ZN zV@7e37lwt7>!Mzll>ud@mX@WIieL5&R_*0OU$0VM^pO6P{Av23Fe-(ZlCiLohSuUcCCcOxX6CR>wAFi%_#n54uth zgUNO_4IeakOm@rbX+&%5P8d$5#=JXlpWJl|k~z@K$95xlN1U*=OzhZn(B<<*V}sZ) z{9batu{)2x%y=yJm^14J>B_n2OeaYP5*sISn8A($xSr?OCsTvIw3q3trX5gGeo##V KjmifOvHu0wLN^@% delta 8273 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 Date: Sat, 6 Feb 2016 14:57:11 -0600 Subject: [PATCH 047/142] Put shuttles in their proper place, split out secure crates --- .../subsystem/shuttles/emergency.dm | 262 ----------------- code/datums/supplypacks.dm | 8 +- .../structures/crates_lockers/crates.dm | 105 ------- .../crates_lockers/crates/secure.dm | 105 +++++++ code/modules/cargo/order.dm | 5 + .../shuttle}/assault_pod.dm | 0 code/modules/shuttle/emergency.dm | 265 +++++++++++++++++- .../shuttles => modules/shuttle}/supply.dm | 6 - tgstation.dme | 6 +- 9 files changed, 380 insertions(+), 382 deletions(-) delete mode 100644 code/controllers/subsystem/shuttles/emergency.dm create mode 100644 code/game/objects/structures/crates_lockers/crates/secure.dm rename code/{controllers/subsystem/shuttles => modules/shuttle}/assault_pod.dm (100%) rename code/{controllers/subsystem/shuttles => modules/shuttle}/supply.dm (98%) diff --git a/code/controllers/subsystem/shuttles/emergency.dm b/code/controllers/subsystem/shuttles/emergency.dm deleted file mode 100644 index f798b68ea24..00000000000 --- a/code/controllers/subsystem/shuttles/emergency.dm +++ /dev/null @@ -1,262 +0,0 @@ -/obj/docking_port/mobile/emergency - name = "emergency shuttle" - id = "emergency" - - dwidth = 9 - width = 22 - height = 11 - dir = 4 - travelDir = -90 - roundstart_move = "emergency_away" - var/sound_played = 0 //If the launch sound has been sent to all players on the shuttle itself - -/obj/docking_port/mobile/emergency/New() - ..() - SSshuttle.emergency = src - -/obj/docking_port/mobile/emergency/timeLeft(divisor) - if(divisor <= 0) - divisor = 10 - if(!timer) - return round(SSshuttle.emergencyCallTime/divisor, 1) - - var/dtime = world.time - timer - switch(mode) - if(SHUTTLE_ESCAPE) - dtime = max(SSshuttle.emergencyEscapeTime - dtime, 0) - if(SHUTTLE_DOCKED) - dtime = max(SSshuttle.emergencyDockTime - dtime, 0) - else - dtime = max(SSshuttle.emergencyCallTime - dtime, 0) - return round(dtime/divisor, 1) - -/obj/docking_port/mobile/emergency/request(obj/docking_port/stationary/S, coefficient=1, area/signalOrigin, reason, redAlert) - SSshuttle.emergencyCallTime = initial(SSshuttle.emergencyCallTime) * coefficient - switch(mode) - if(SHUTTLE_RECALL) - mode = SHUTTLE_CALL - timer = world.time - timeLeft(1) - if(SHUTTLE_IDLE) - mode = SHUTTLE_CALL - timer = world.time - if(SHUTTLE_CALL) - if(world.time < timer) //this is just failsafe - timer = world.time - else - return - - if(prob(70)) - SSshuttle.emergencyLastCallLoc = signalOrigin - else - SSshuttle.emergencyLastCallLoc = null - - priority_announce("The emergency shuttle has been called. [redAlert ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [timeLeft(600)] minutes.[reason][SSshuttle.emergencyLastCallLoc ? "\n\nCall signal traced. Results can be viewed on any communications console." : "" ]", null, 'sound/AI/shuttlecalled.ogg', "Priority") - -/obj/docking_port/mobile/emergency/cancel(area/signalOrigin) - if(mode != SHUTTLE_CALL) - return - - timer = world.time - timeLeft(1) - mode = SHUTTLE_RECALL - - if(prob(70)) - SSshuttle.emergencyLastCallLoc = signalOrigin - else - SSshuttle.emergencyLastCallLoc = null - priority_announce("The emergency shuttle has been recalled.[SSshuttle.emergencyLastCallLoc ? " Recall signal traced. Results can be viewed on any communications console." : "" ]", null, 'sound/AI/shuttlerecalled.ogg', "Priority") - -/* -/obj/docking_port/mobile/emergency/findTransitDock() - . = SSshuttle.getDock("emergency_transit") - if(.) - return . - return ..() -*/ - - -/obj/docking_port/mobile/emergency/check() - if(!timer) - return - - var/time_left = timeLeft(1) - switch(mode) - if(SHUTTLE_RECALL) - if(time_left <= 0) - mode = SHUTTLE_IDLE - timer = 0 - if(SHUTTLE_CALL) - if(time_left <= 0) - //move emergency shuttle to station - if(dock(SSshuttle.getDock("emergency_home"))) - setTimer(20) - return - mode = SHUTTLE_DOCKED - timer = world.time - send2irc("Server", "The Emergency Shuttle has docked with the station.") - priority_announce("The Emergency Shuttle has docked with the station. You have [timeLeft(600)] minutes to board the Emergency Shuttle.", null, 'sound/AI/shuttledock.ogg', "Priority") - - //Gangs only have one attempt left if the shuttle has docked with the station to prevent suffering from dominator delays - for(var/datum/gang/G in ticker.mode.gangs) - if(isnum(G.dom_timer)) - G.dom_attempts = 0 - else - G.dom_attempts = min(1,G.dom_attempts) - - if(SHUTTLE_DOCKED) - - if(time_left <= 50 && !sound_played) //4 seconds left:REV UP THOSE ENGINES BOYS. - should sync up with the launch - sound_played = 1 //Only rev them up once. - for(var/area/shuttle/escape/E in world) - E << 'sound/effects/hyperspace_begin.ogg' - - if(time_left <= 0 && SSshuttle.emergencyNoEscape) - priority_announce("Hostile environment detected. Departure has been postponed indefinitely pending conflict resolution.", null, 'sound/misc/notice1.ogg', "Priority") - sound_played = 0 //Since we didn't launch, we will need to rev up the engines again next pass. - mode = SHUTTLE_STRANDED - - if(time_left <= 0 && !SSshuttle.emergencyNoEscape) - //move each escape pod (or applicable spaceship) to its corresponding transit dock - for(var/A in SSshuttle.mobile) - var/obj/docking_port/mobile/M = A - if(M.launch_status == UNLAUNCHED) //Pods will not launch from the mine/planet, and other ships won't launch unless we tell them to. - M.launch_status = ENDGAME_LAUNCHED - M.enterTransit() - - //now move the actual emergency shuttle to its transit dock - for(var/area/shuttle/escape/E in world) - E << 'sound/effects/hyperspace_progress.ogg' - enterTransit() - mode = SHUTTLE_ESCAPE - launch_status = ENDGAME_LAUNCHED - timer = world.time - priority_announce("The Emergency Shuttle has left the station. Estimate [timeLeft(600)] minutes until the shuttle docks at Central Command.", null, null, "Priority") - if(SHUTTLE_ESCAPE) - if(time_left <= 0) - //move each escape pod to its corresponding escape dock - for(var/A in SSshuttle.mobile) - var/obj/docking_port/mobile/M = A - if(M.launch_status == ENDGAME_LAUNCHED) - if(istype(M, /obj/docking_port/mobile/pod)) - M.dock(SSshuttle.getDock("[M.id]_away")) //Escape pods dock at centcomm - else - continue //Mapping a new docking point for each ship mappers could potentially want docking with centcomm would take up lots of space, just let them keep flying off into the sunset for their greentext - - //now move the actual emergency shuttle to centcomm - for(var/area/shuttle/escape/E in world) - E << 'sound/effects/hyperspace_end.ogg' - dock(SSshuttle.getDock("emergency_away")) - mode = SHUTTLE_ENDGAME - timer = 0 - open_dock() - -/obj/docking_port/mobile/emergency/proc/open_dock() - for(var/obj/machinery/door/poddoor/shuttledock/D in airlocks) - var/turf/T = get_step(D, D.checkdir) - if(!istype(T,/turf/space)) - spawn(0) - D.open() - -/obj/docking_port/mobile/pod - name = "escape pod" - id = "pod" - dwidth = 1 - width = 3 - height = 4 - launch_status = UNLAUNCHED - -/obj/docking_port/mobile/pod/request() - if((security_level == SEC_LEVEL_RED || security_level == SEC_LEVEL_DELTA) && launch_status == UNLAUNCHED) - launch_status = EARLY_LAUNCHED - return ..() - -/obj/docking_port/mobile/pod/New() - if(id == "pod") - WARNING("[type] id has not been changed from the default. Use the id convention \"pod1\" \"pod2\" etc.") - ..() - -/obj/docking_port/mobile/pod/cancel() - return - -/obj/machinery/computer/shuttle/pod - name = "pod control computer" - admin_controlled = 1 - shuttleId = "pod" - possible_destinations = "pod_asteroid" - icon = 'icons/obj/terminals.dmi' - icon_state = "dorm_available" - density = 0 - -/obj/machinery/computer/shuttle/pod/update_icon() - return - -/obj/docking_port/stationary/random - name = "escape pod" - id = "pod" - dwidth = 1 - width = 3 - height = 4 - var/target_area = /area/mine/unexplored - -/obj/docking_port/stationary/random/initialize() - ..() - var/list/turfs = get_area_turfs(target_area) - var/turf/T = pick(turfs) - src.loc = T - -//Pod suits/pickaxes - - -/obj/item/clothing/head/helmet/space/orange - name = "emergency space helmet" - icon_state = "syndicate-helm-orange" - item_state = "syndicate-helm-orange" - -/obj/item/clothing/suit/space/orange - name = "emergency space suit" - icon_state = "syndicate-orange" - item_state = "syndicate-orange" - slowdown = 3 - -/obj/item/weapon/pickaxe/emergency - name = "emergency disembarkation tool" - desc = "For extracting yourself from rough landings." - -/obj/item/weapon/storage/pod - name = "emergency space suits" - desc = "A wall mounted safe containing space suits. Will only open in emergencies." - anchored = 1 - density = 0 - icon = 'icons/obj/storage.dmi' - icon_state = "safe" - -/obj/item/weapon/storage/pod/New() - ..() - new /obj/item/clothing/head/helmet/space/orange(src) - new /obj/item/clothing/head/helmet/space/orange(src) - new /obj/item/clothing/suit/space/orange(src) - new /obj/item/clothing/suit/space/orange(src) - new /obj/item/clothing/mask/gas(src) - new /obj/item/clothing/mask/gas(src) - new /obj/item/weapon/tank/internals/oxygen/red(src) - new /obj/item/weapon/tank/internals/oxygen/red(src) - new /obj/item/weapon/pickaxe/emergency(src) - new /obj/item/weapon/pickaxe/emergency(src) - new /obj/item/weapon/survivalcapsule(src) - -/obj/item/weapon/storage/pod/attackby(obj/item/weapon/W, mob/user, params) - return - -/obj/item/weapon/storage/pod/MouseDrop(over_object, src_location, over_location) - if(security_level == SEC_LEVEL_RED || security_level == SEC_LEVEL_DELTA) - return ..() - else - usr << "The storage unit will only unlock during a Red or Delta security alert." - -/obj/item/weapon/storage/pod/attack_hand(mob/user) - return - - - -#undef UNLAUNCHED -#undef LAUNCHED -#undef EARLY_LAUNCHED diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 8c6aa69ebdb..1cad46222ed 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -73,7 +73,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /datum/supply_packs/emergency/evac - name = "Emergency equipment" + name = "Emergency Equipment" contains = list(/mob/living/simple_animal/bot/floorbot, /mob/living/simple_animal/bot/floorbot, /mob/living/simple_animal/bot/medbot, @@ -890,9 +890,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine containername = "butterflies crate" contraband = 1 -////// hippy gear - -/datum/supply_packs/organic/hydroponics // -- Skie +/datum/supply_packs/organic/hydroponics name = "Hydroponics Supply Crate" contains = list(/obj/item/weapon/reagent_containers/spray/plantbgone, /obj/item/weapon/reagent_containers/spray/plantbgone, @@ -902,7 +900,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/cultivator, /obj/item/device/analyzer/plant_analyzer, /obj/item/clothing/gloves/botanic_leather, - /obj/item/clothing/suit/apron) // Updated with new things + /obj/item/clothing/suit/apron) cost = 15 containertype = /obj/structure/closet/crate/hydroponics containername = "hydroponics crate" diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index e700e03c8cd..65dca528f33 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -106,51 +106,6 @@ new /obj/item/weapon/reagent_containers/spray/plantbgone(src) new /obj/item/weapon/cultivator(src) -/obj/structure/closet/crate/secure - desc = "A secure crate." - name = "secure crate" - icon_crate = "securecrate" - icon_state = "securecrate" - var/redlight = "securecrater" - var/greenlight = "securecrateg" - var/sparks = "securecratesparks" - var/emag = "securecrateemag" - locked = 1 - health = 1000 - -/obj/structure/closet/crate/secure/weapon - desc = "A secure weapons crate." - name = "weapons crate" - icon_crate = "weaponcrate" - icon_state = "weaponcrate" - -/obj/structure/closet/crate/secure/plasma - desc = "A secure plasma crate." - name = "plasma crate" - icon_crate = "plasmacrate" - icon_state = "plasmacrate" - -/obj/structure/closet/crate/secure/gear - desc = "A secure gear crate." - name = "gear crate" - icon_crate = "secgearcrate" - icon_state = "secgearcrate" - -/obj/structure/closet/crate/secure/hydrosec - desc = "A crate with a lock on it, painted in the scheme of the station's botanists." - name = "secure hydroponics crate" - icon_crate = "hydrosecurecrate" - icon_state = "hydrosecurecrate" - -/obj/structure/closet/crate/secure/update_icon() - ..() - if(locked) - overlays += redlight - else if(broken) - overlays += emag - else - overlays += greenlight - /obj/structure/closet/crate/open() playsound(src.loc, sound_effect_open, 15, 1, -3) dump_contents() @@ -214,44 +169,6 @@ open() return -/obj/structure/closet/crate/secure/attack_hand(mob/user) - if(manifest) - tear_manifest(user) - return - if(locked && !broken) - if (allowed(user)) - user << "You unlock [src]." - src.locked = 0 - update_icon() - add_fingerprint(user) - return - else - user << "[src] is locked." - return - else - ..() - -/obj/structure/closet/crate/secure/attackby(obj/item/weapon/W, mob/user, params) - if(istype(W, /obj/item/weapon/card) && src.allowed(user) && !locked && !opened && !broken) - user << "You lock \the [src]." - src.locked = 1 - update_icon() - add_fingerprint(user) - return - - return ..() - -/obj/structure/closet/crate/secure/emag_act(mob/user) - if(locked && !broken) - src.locked = 0 - src.broken = 1 - update_icon() - overlays += sparks - spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface* - playsound(src.loc, "sparks", 60, 1) - user << "You unlock \the [src]." - add_fingerprint(user) - /obj/structure/closet/crate/attack_paw(mob/user) return attack_hand(user) @@ -293,25 +210,3 @@ else if(!place(user, W)) return attack_hand(user) -/obj/structure/closet/crate/secure/emp_act(severity) - for(var/obj/O in src) - O.emp_act(severity) - if(!broken && !opened && prob(50/severity)) - if(!locked) - src.locked = 1 - update_icon() - else - src.locked = 0 - src.broken = 1 - update_icon() - overlays += sparks - spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface* - playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1) - if(!opened && prob(20/severity)) - if(!locked) - open() - else - src.req_access = list() - src.req_access += pick(get_all_accesses()) - ..() - diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm new file mode 100644 index 00000000000..a4f11e7fd5f --- /dev/null +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -0,0 +1,105 @@ +/obj/structure/closet/crate/secure + desc = "A secure crate." + name = "secure crate" + icon_crate = "securecrate" + icon_state = "securecrate" + var/redlight = "securecrater" + var/greenlight = "securecrateg" + var/sparks = "securecratesparks" + var/emag = "securecrateemag" + locked = 1 + health = 1000 + +/obj/structure/closet/crate/secure/weapon + desc = "A secure weapons crate." + name = "weapons crate" + icon_crate = "weaponcrate" + icon_state = "weaponcrate" + +/obj/structure/closet/crate/secure/plasma + desc = "A secure plasma crate." + name = "plasma crate" + icon_crate = "plasmacrate" + icon_state = "plasmacrate" + +/obj/structure/closet/crate/secure/gear + desc = "A secure gear crate." + name = "gear crate" + icon_crate = "secgearcrate" + icon_state = "secgearcrate" + +/obj/structure/closet/crate/secure/hydrosec + desc = "A crate with a lock on it, painted in the scheme of the station's botanists." + name = "secure hydroponics crate" + icon_crate = "hydrosecurecrate" + icon_state = "hydrosecurecrate" + +/obj/structure/closet/crate/secure/update_icon() + ..() + if(locked) + overlays += redlight + else if(broken) + overlays += emag + else + overlays += greenlight + +/obj/structure/closet/crate/secure/attack_hand(mob/user) + if(manifest) + tear_manifest(user) + return + if(locked && !broken) + if (allowed(user)) + user << "You unlock [src]." + src.locked = 0 + update_icon() + add_fingerprint(user) + return + else + user << "[src] is locked." + return + else + ..() + +/obj/structure/closet/crate/secure/attackby(obj/item/weapon/W, mob/user, params) + if(istype(W, /obj/item/weapon/card) && src.allowed(user) && !locked && !opened && !broken) + user << "You lock \the [src]." + src.locked = 1 + update_icon() + add_fingerprint(user) + return + + return ..() + +/obj/structure/closet/crate/secure/emag_act(mob/user) + if(locked && !broken) + src.locked = 0 + src.broken = 1 + update_icon() + overlays += sparks + spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface* + playsound(src.loc, "sparks", 60, 1) + user << "You unlock \the [src]." + add_fingerprint(user) + +/obj/structure/closet/crate/secure/emp_act(severity) + for(var/obj/O in src) + O.emp_act(severity) + if(!broken && !opened && prob(50/severity)) + if(!locked) + src.locked = 1 + update_icon() + else + src.locked = 0 + src.broken = 1 + update_icon() + overlays += sparks + spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface* + playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1) + if(!opened && prob(20/severity)) + if(!locked) + open() + else + src.req_access = list() + src.req_access += pick(get_all_accesses()) + ..() + diff --git a/code/modules/cargo/order.dm b/code/modules/cargo/order.dm index 3dff08e2173..7f507454e21 100644 --- a/code/modules/cargo/order.dm +++ b/code/modules/cargo/order.dm @@ -1,3 +1,8 @@ +/obj/item/weapon/paper/manifest + name = "supply manifest" + var/erroneous = 0 + var/points = 0 + var/ordernumber = 0 /datum/supply_order var/ordernum diff --git a/code/controllers/subsystem/shuttles/assault_pod.dm b/code/modules/shuttle/assault_pod.dm similarity index 100% rename from code/controllers/subsystem/shuttles/assault_pod.dm rename to code/modules/shuttle/assault_pod.dm diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index f3da90aae59..0fe221d4f13 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -73,4 +73,267 @@ log_game("[key_name(user)] has emagged the emergency shuttle in ([x],[y],[z]) [time] seconds before launch.") minor_announce("The emergency shuttle will launch in 10 seconds", "SYSTEM ERROR:",null,1) SSshuttle.emergency.setTimer(100) - emagged = 1 \ No newline at end of file + emagged = 1 + +/obj/docking_port/mobile/emergency + name = "emergency shuttle" + id = "emergency" + + dwidth = 9 + width = 22 + height = 11 + dir = 4 + travelDir = -90 + roundstart_move = "emergency_away" + var/sound_played = 0 //If the launch sound has been sent to all players on the shuttle itself + +/obj/docking_port/mobile/emergency/New() + ..() + SSshuttle.emergency = src + +/obj/docking_port/mobile/emergency/timeLeft(divisor) + if(divisor <= 0) + divisor = 10 + if(!timer) + return round(SSshuttle.emergencyCallTime/divisor, 1) + + var/dtime = world.time - timer + switch(mode) + if(SHUTTLE_ESCAPE) + dtime = max(SSshuttle.emergencyEscapeTime - dtime, 0) + if(SHUTTLE_DOCKED) + dtime = max(SSshuttle.emergencyDockTime - dtime, 0) + else + dtime = max(SSshuttle.emergencyCallTime - dtime, 0) + return round(dtime/divisor, 1) + +/obj/docking_port/mobile/emergency/request(obj/docking_port/stationary/S, coefficient=1, area/signalOrigin, reason, redAlert) + SSshuttle.emergencyCallTime = initial(SSshuttle.emergencyCallTime) * coefficient + switch(mode) + if(SHUTTLE_RECALL) + mode = SHUTTLE_CALL + timer = world.time - timeLeft(1) + if(SHUTTLE_IDLE) + mode = SHUTTLE_CALL + timer = world.time + if(SHUTTLE_CALL) + if(world.time < timer) //this is just failsafe + timer = world.time + else + return + + if(prob(70)) + SSshuttle.emergencyLastCallLoc = signalOrigin + else + SSshuttle.emergencyLastCallLoc = null + + priority_announce("The emergency shuttle has been called. [redAlert ? "Red Alert state confirmed: Dispatching priority shuttle. " : "" ]It will arrive in [timeLeft(600)] minutes.[reason][SSshuttle.emergencyLastCallLoc ? "\n\nCall signal traced. Results can be viewed on any communications console." : "" ]", null, 'sound/AI/shuttlecalled.ogg', "Priority") + +/obj/docking_port/mobile/emergency/cancel(area/signalOrigin) + if(mode != SHUTTLE_CALL) + return + + timer = world.time - timeLeft(1) + mode = SHUTTLE_RECALL + + if(prob(70)) + SSshuttle.emergencyLastCallLoc = signalOrigin + else + SSshuttle.emergencyLastCallLoc = null + priority_announce("The emergency shuttle has been recalled.[SSshuttle.emergencyLastCallLoc ? " Recall signal traced. Results can be viewed on any communications console." : "" ]", null, 'sound/AI/shuttlerecalled.ogg', "Priority") + +/* +/obj/docking_port/mobile/emergency/findTransitDock() + . = SSshuttle.getDock("emergency_transit") + if(.) + return . + return ..() +*/ + + +/obj/docking_port/mobile/emergency/check() + if(!timer) + return + + var/time_left = timeLeft(1) + switch(mode) + if(SHUTTLE_RECALL) + if(time_left <= 0) + mode = SHUTTLE_IDLE + timer = 0 + if(SHUTTLE_CALL) + if(time_left <= 0) + //move emergency shuttle to station + if(dock(SSshuttle.getDock("emergency_home"))) + setTimer(20) + return + mode = SHUTTLE_DOCKED + timer = world.time + send2irc("Server", "The Emergency Shuttle has docked with the station.") + priority_announce("The Emergency Shuttle has docked with the station. You have [timeLeft(600)] minutes to board the Emergency Shuttle.", null, 'sound/AI/shuttledock.ogg', "Priority") + + //Gangs only have one attempt left if the shuttle has docked with the station to prevent suffering from dominator delays + for(var/datum/gang/G in ticker.mode.gangs) + if(isnum(G.dom_timer)) + G.dom_attempts = 0 + else + G.dom_attempts = min(1,G.dom_attempts) + + if(SHUTTLE_DOCKED) + + if(time_left <= 50 && !sound_played) //4 seconds left:REV UP THOSE ENGINES BOYS. - should sync up with the launch + sound_played = 1 //Only rev them up once. + for(var/area/shuttle/escape/E in world) + E << 'sound/effects/hyperspace_begin.ogg' + + if(time_left <= 0 && SSshuttle.emergencyNoEscape) + priority_announce("Hostile environment detected. Departure has been postponed indefinitely pending conflict resolution.", null, 'sound/misc/notice1.ogg', "Priority") + sound_played = 0 //Since we didn't launch, we will need to rev up the engines again next pass. + mode = SHUTTLE_STRANDED + + if(time_left <= 0 && !SSshuttle.emergencyNoEscape) + //move each escape pod (or applicable spaceship) to its corresponding transit dock + for(var/A in SSshuttle.mobile) + var/obj/docking_port/mobile/M = A + if(M.launch_status == UNLAUNCHED) //Pods will not launch from the mine/planet, and other ships won't launch unless we tell them to. + M.launch_status = ENDGAME_LAUNCHED + M.enterTransit() + + //now move the actual emergency shuttle to its transit dock + for(var/area/shuttle/escape/E in world) + E << 'sound/effects/hyperspace_progress.ogg' + enterTransit() + mode = SHUTTLE_ESCAPE + launch_status = ENDGAME_LAUNCHED + timer = world.time + priority_announce("The Emergency Shuttle has left the station. Estimate [timeLeft(600)] minutes until the shuttle docks at Central Command.", null, null, "Priority") + if(SHUTTLE_ESCAPE) + if(time_left <= 0) + //move each escape pod to its corresponding escape dock + for(var/A in SSshuttle.mobile) + var/obj/docking_port/mobile/M = A + if(M.launch_status == ENDGAME_LAUNCHED) + if(istype(M, /obj/docking_port/mobile/pod)) + M.dock(SSshuttle.getDock("[M.id]_away")) //Escape pods dock at centcomm + else + continue //Mapping a new docking point for each ship mappers could potentially want docking with centcomm would take up lots of space, just let them keep flying off into the sunset for their greentext + + //now move the actual emergency shuttle to centcomm + for(var/area/shuttle/escape/E in world) + E << 'sound/effects/hyperspace_end.ogg' + dock(SSshuttle.getDock("emergency_away")) + mode = SHUTTLE_ENDGAME + timer = 0 + open_dock() + +/obj/docking_port/mobile/emergency/proc/open_dock() + for(var/obj/machinery/door/poddoor/shuttledock/D in airlocks) + var/turf/T = get_step(D, D.checkdir) + if(!istype(T,/turf/space)) + spawn(0) + D.open() + +/obj/docking_port/mobile/pod + name = "escape pod" + id = "pod" + dwidth = 1 + width = 3 + height = 4 + launch_status = UNLAUNCHED + +/obj/docking_port/mobile/pod/request() + if((security_level == SEC_LEVEL_RED || security_level == SEC_LEVEL_DELTA) && launch_status == UNLAUNCHED) + launch_status = EARLY_LAUNCHED + return ..() + +/obj/docking_port/mobile/pod/New() + if(id == "pod") + WARNING("[type] id has not been changed from the default. Use the id convention \"pod1\" \"pod2\" etc.") + ..() + +/obj/docking_port/mobile/pod/cancel() + return + +/obj/machinery/computer/shuttle/pod + name = "pod control computer" + admin_controlled = 1 + shuttleId = "pod" + possible_destinations = "pod_asteroid" + icon = 'icons/obj/terminals.dmi' + icon_state = "dorm_available" + density = 0 + +/obj/machinery/computer/shuttle/pod/update_icon() + return + +/obj/docking_port/stationary/random + name = "escape pod" + id = "pod" + dwidth = 1 + width = 3 + height = 4 + var/target_area = /area/mine/unexplored + +/obj/docking_port/stationary/random/initialize() + ..() + var/list/turfs = get_area_turfs(target_area) + var/turf/T = pick(turfs) + src.loc = T + +//Pod suits/pickaxes + + +/obj/item/clothing/head/helmet/space/orange + name = "emergency space helmet" + icon_state = "syndicate-helm-orange" + item_state = "syndicate-helm-orange" + +/obj/item/clothing/suit/space/orange + name = "emergency space suit" + icon_state = "syndicate-orange" + item_state = "syndicate-orange" + slowdown = 3 + +/obj/item/weapon/pickaxe/emergency + name = "emergency disembarkation tool" + desc = "For extracting yourself from rough landings." + +/obj/item/weapon/storage/pod + name = "emergency space suits" + desc = "A wall mounted safe containing space suits. Will only open in emergencies." + anchored = 1 + density = 0 + icon = 'icons/obj/storage.dmi' + icon_state = "safe" + +/obj/item/weapon/storage/pod/New() + ..() + new /obj/item/clothing/head/helmet/space/orange(src) + new /obj/item/clothing/head/helmet/space/orange(src) + new /obj/item/clothing/suit/space/orange(src) + new /obj/item/clothing/suit/space/orange(src) + new /obj/item/clothing/mask/gas(src) + new /obj/item/clothing/mask/gas(src) + new /obj/item/weapon/tank/internals/oxygen/red(src) + new /obj/item/weapon/tank/internals/oxygen/red(src) + new /obj/item/weapon/pickaxe/emergency(src) + new /obj/item/weapon/pickaxe/emergency(src) + new /obj/item/weapon/survivalcapsule(src) + +/obj/item/weapon/storage/pod/attackby(obj/item/weapon/W, mob/user, params) + return + +/obj/item/weapon/storage/pod/MouseDrop(over_object, src_location, over_location) + if(security_level == SEC_LEVEL_RED || security_level == SEC_LEVEL_DELTA) + return ..() + else + usr << "The storage unit will only unlock during a Red or Delta security alert." + +/obj/item/weapon/storage/pod/attack_hand(mob/user) + return + + + +#undef UNLAUNCHED +#undef LAUNCHED +#undef EARLY_LAUNCHED diff --git a/code/controllers/subsystem/shuttles/supply.dm b/code/modules/shuttle/supply.dm similarity index 98% rename from code/controllers/subsystem/shuttles/supply.dm rename to code/modules/shuttle/supply.dm index 8cd24bf8ac8..d63a62f4a57 100644 --- a/code/controllers/subsystem/shuttles/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -1,9 +1,3 @@ -/obj/item/weapon/paper/manifest - name = "supply manifest" - var/erroneous = 0 - var/points = 0 - var/ordernumber = 0 - /obj/docking_port/mobile/supply name = "supply shuttle" id = "supply" diff --git a/tgstation.dme b/tgstation.dme index 0d5e9e52b74..961768d38eb 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -141,9 +141,6 @@ #include "code\controllers\subsystem\ticker.dm" #include "code\controllers\subsystem\timer.dm" #include "code\controllers\subsystem\voting.dm" -#include "code\controllers\subsystem\shuttles\assault_pod.dm" -#include "code\controllers\subsystem\shuttles\emergency.dm" -#include "code\controllers\subsystem\shuttles\supply.dm" #include "code\datums\ai_laws.dm" #include "code\datums\beam.dm" #include "code\datums\browser.dm" @@ -733,6 +730,7 @@ #include "code\game\objects\structures\crates_lockers\closets\secure\scientist.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" +#include "code\game\objects\structures\crates_lockers\crates\secure.dm" #include "code\game\objects\structures\transit_tubes\station.dm" #include "code\game\objects\structures\transit_tubes\transit_tube.dm" #include "code\game\objects\structures\transit_tubes\transit_tube_construction.dm" @@ -1535,10 +1533,12 @@ #include "code\modules\ruins\ruin_areas.dm" #include "code\modules\security levels\keycard authentication.dm" #include "code\modules\security levels\security levels.dm" +#include "code\modules\shuttle\assault_pod.dm" #include "code\modules\shuttle\computer.dm" #include "code\modules\shuttle\emergency.dm" #include "code\modules\shuttle\ferry.dm" #include "code\modules\shuttle\shuttle.dm" +#include "code\modules\shuttle\supply.dm" #include "code\modules\shuttle\syndicate.dm" #include "code\modules\shuttle\white_ship.dm" #include "code\modules\space transition\space_transition.dm" From ddab6823d34cafc17eeaedb61fec0dfbbe877357 Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Sat, 6 Feb 2016 22:08:54 -0600 Subject: [PATCH 048/142] Fix up crates All shipable crates are proper children All crates support a manifest Crates rely on parent code shared with closets when possible --- _maps/RandomZLevels/centcomAway.dmm | 4 +- _maps/RandomZLevels/spacebattle.dmm | 4 +- _maps/RandomZLevels/wildwest.dmm | 4 +- _maps/map_files/MiniStation/supplypacks.dm | 10 +- _maps/map_files/generic/z6.dmm | 4 +- code/datums/supplypacks.dm | 53 ++-- code/game/asteroid.dm | 2 +- .../objects/structures/crates_lockers/bins.dm | 34 +-- .../structures/crates_lockers/closets.dm | 123 +++++---- .../structures/crates_lockers/crates.dm | 234 +++++------------- .../crates_lockers/crates/critter.dm | 45 ++++ .../structures/crates_lockers/crates/large.dm | 35 +++ .../crates_lockers/crates/secure.dm | 91 +------ .../structures/crates_lockers/largecrate.dm | 53 ---- code/modules/cargo/order.dm | 45 ++-- code/modules/mining/abandoned_crates.dm | 62 ++--- code/modules/mining/mine_items.dm | 2 +- code/modules/paperwork/paper.dm | 5 +- code/modules/shuttle/supply.dm | 2 +- icons/obj/closet.dmi | Bin 33332 -> 31826 bytes icons/obj/crates.dmi | Bin 14015 -> 14210 bytes tgstation.dme | 4 +- 22 files changed, 326 insertions(+), 490 deletions(-) create mode 100644 code/game/objects/structures/crates_lockers/crates/critter.dm create mode 100644 code/game/objects/structures/crates_lockers/crates/large.dm delete mode 100644 code/game/objects/structures/crates_lockers/largecrate.dm diff --git a/_maps/RandomZLevels/centcomAway.dmm b/_maps/RandomZLevels/centcomAway.dmm index 2731714e96e..81224c36d74 100644 --- a/_maps/RandomZLevels/centcomAway.dmm +++ b/_maps/RandomZLevels/centcomAway.dmm @@ -169,7 +169,7 @@ "dm" = (/obj/machinery/door/window/northright{base_state = "right"; dir = 4; icon_state = "right"; name = "Security Desk"; req_access_txt = "103"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor2"},/area/awaymission/centcomAway/hangar) "dn" = (/obj/structure/closet/crate,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/awaymission/centcomAway/hangar) "do" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/awaymission/centcomAway/hangar) -"dp" = (/obj/structure/largecrate,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/awaymission/centcomAway/hangar) +"dp" = (/obj/structure/closet/crate/large,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/awaymission/centcomAway/hangar) "dq" = (/obj/structure/dresser,/turf/simulated/floor/carpet,/area/awaymission/centcomAway/cafe) "dr" = (/obj/structure/table/reinforced,/obj/item/device/t_scanner,/turf/simulated/floor/plasteel{icon_state = "yellow"},/area/awaymission/centcomAway/general) "ds" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/bin,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe) @@ -192,7 +192,7 @@ "dJ" = (/turf/simulated/floor/plasteel{icon_state = "blackcorner"; dir = 4},/area/awaymission/centcomAway/general) "dK" = (/turf/simulated/floor/plasteel{icon_state = "yellow"},/area/awaymission/centcomAway/general) "dL" = (/obj/machinery/door/airlock/hatch{name = "Rest Room"; req_access_txt = "0"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/awaymission/centcomAway/hangar) -"dM" = (/obj/structure/largecrate,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/awaymission/centcomAway/hangar) +"dM" = (/obj/structure/closet/crate/large,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/awaymission/centcomAway/hangar) "dN" = (/obj/structure/closet/crate,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaymission/centcomAway/hangar) "dO" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/awaymission/centcomAway/hangar) "dP" = (/turf/simulated/floor/plasteel{icon_state = "yellow"; dir = 10},/area/awaymission/centcomAway/general) diff --git a/_maps/RandomZLevels/spacebattle.dmm b/_maps/RandomZLevels/spacebattle.dmm index a26038404da..b282455054a 100644 --- a/_maps/RandomZLevels/spacebattle.dmm +++ b/_maps/RandomZLevels/spacebattle.dmm @@ -376,7 +376,7 @@ "hm" = (/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/awaymission/spacebattle/syndicate7) "hn" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate7) "ho" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 8},/turf/space,/area/awaymission/spacebattle/syndicate7) -"hp" = (/obj/structure/largecrate,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"hp" = (/obj/structure/closet/crate/large,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) "hq" = (/obj/structure/closet/crate/secure/plasma,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) "hr" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/fire,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) "hs" = (/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit,/obj/item/clothing/head/helmet/space/hardsuit,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) @@ -385,7 +385,7 @@ "hv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) "hw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/awaymission/spacebattle/syndicate7) "hx" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/space,/area/awaymission/spacebattle/syndicate7) -"hy" = (/obj/structure/largecrate,/mob/living/simple_animal/pet/dog/corgi/puppy,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"hy" = (/obj/structure/closet/crate/large,/mob/living/simple_animal/pet/dog/corgi/puppy,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) "hz" = (/obj/structure/closet/crate,/obj/item/weapon/paint/anycolor,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) "hA" = (/obj/structure/closet/crate,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) "hB" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/wildwest.dmm index 91d013263d7..36d5dc8dad5 100644 --- a/_maps/RandomZLevels/wildwest.dmm +++ b/_maps/RandomZLevels/wildwest.dmm @@ -54,7 +54,7 @@ "be" = (/obj/item/ammo_box/c10mm,/turf/simulated/floor/plating/ironsand{icon_state = "ironsand1"},/area/awaymission/wwmines) "bf" = (/mob/living/simple_animal/hostile/syndicate/ranged,/turf/simulated/floor/plating/ironsand{icon_state = "ironsand1"},/area/awaymission/wwmines) "bg" = (/turf/simulated/wall/mineral/sandstone,/area/space) -"bh" = (/obj/structure/largecrate,/turf/simulated/floor/plating,/area/awaymission/wwrefine) +"bh" = (/obj/structure/closet/crate/large,/turf/simulated/floor/plating,/area/awaymission/wwrefine) "bi" = (/obj/effect/landmark/corpse/miner/rig,/obj/effect/mine/sound/bwoink,/turf/simulated/floor/plating/ironsand{icon_state = "ironsand1"},/area/awaymission/wwmines) "bj" = (/turf/simulated/floor/wood,/area/awaymission/wwmines) "bk" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/wood,/area/awaymission/wwmines) @@ -181,7 +181,7 @@ "dB" = (/obj/structure/toilet,/mob/living/simple_animal/hostile/creature,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/wwgov) "dC" = (/turf/simulated/floor/plating/ironsand{icon_state = "ironsand9"},/area/awaymission/wwgov) "dD" = (/obj/structure/mineral_door/wood{icon_state = "wood"},/turf/simulated/floor/plating/ironsand{icon_state = "ironsand1"},/area/awaymission/wwgov) -"dE" = (/obj/structure/largecrate,/turf/simulated/floor/wood,/area/awaymission/wwmines) +"dE" = (/obj/structure/closet/crate/large,/turf/simulated/floor/wood,/area/awaymission/wwmines) "dF" = (/turf/simulated/floor/plating/ironsand{icon_state = "ironsand7"},/area/awaymission/wwgov) "dG" = (/obj/machinery/washing_machine,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) "dH" = (/obj/structure/bed,/obj/item/weapon/bedsheet/blue,/turf/simulated/floor/wood,/area/awaymission/wwmines) diff --git a/_maps/map_files/MiniStation/supplypacks.dm b/_maps/map_files/MiniStation/supplypacks.dm index 330322a0d6f..8bfe0e285b1 100644 --- a/_maps/map_files/MiniStation/supplypacks.dm +++ b/_maps/map_files/MiniStation/supplypacks.dm @@ -2,28 +2,28 @@ name = "Oxygen Canister" contains = list(/obj/machinery/portable_atmospherics/canister/oxygen) cost = 15 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large containername = "oxygen canister crate" /datum/supply_packs/engineering/toxins name = "Toxins Canister" contains = list(/obj/machinery/portable_atmospherics/canister/toxins) cost = 30 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large containername = "toxins canister crate" /datum/supply_packs/engineering/nitrogen name = "Nitrogen Canister" contains = list(/obj/machinery/portable_atmospherics/canister/nitrogen) cost = 20 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large containername = "nitrogen canister crate" /datum/supply_packs/engineering/carbon_dio name = "Carbon Dioxide Canister" contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide) cost = 35 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large containername = "carbon dioxide canister crate" @@ -34,5 +34,5 @@ name = "Hydroponics Tray Kit" contains = list(/obj/machinery/hydroponics/constructable/unattached) cost = 10 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large containername = "hydroponics kit" \ No newline at end of file diff --git a/_maps/map_files/generic/z6.dmm b/_maps/map_files/generic/z6.dmm index c6861e94afd..8fc8a070d43 100644 --- a/_maps/map_files/generic/z6.dmm +++ b/_maps/map_files/generic/z6.dmm @@ -55,7 +55,7 @@ "bc" = (/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft) "bd" = (/obj/item/weapon/storage/box,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft) "be" = (/obj/item/weapon/hand_labeler,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft) -"bf" = (/obj/structure/largecrate,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/awaymission/BMPship/Aft) +"bf" = (/obj/structure/closet/crate/large,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/awaymission/BMPship/Aft) "bg" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore) "bh" = (/obj/structure/table/wood,/obj/item/stack/spacecash/c500,/obj/item/stack/spacecash/c100,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor/wood,/area/awaymission/BMPship/Fore) "bi" = (/obj/structure/bed,/obj/item/weapon/bedsheet/yellow,/turf/simulated/floor/wood,/area/awaymission/BMPship/Fore) @@ -112,7 +112,7 @@ "ch" = (/turf/simulated/wall/shuttle{icon_state = "swall13"},/area/awaymission/BMPship/Midship) "ci" = (/turf/simulated/wall/shuttle{icon_state = "swall15"},/area/awaymission/BMPship/Aft) "cj" = (/obj/machinery/door/poddoor/shutters{id = "packerMed"},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft) -"ck" = (/obj/structure/largecrate,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/awaymission/BMPship/Aft) +"ck" = (/obj/structure/closet/crate/large,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/awaymission/BMPship/Aft) "cl" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaymission/BMPship/Aft) "cm" = (/obj/machinery/light/small,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaymission/BMPship/Aft) "cn" = (/obj/structure/kitchenspike,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaymission/BMPship/Aft) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 1cad46222ed..2b7c9d0bb08 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -121,6 +121,16 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine containertype = /obj/structure/closet/crate containername = "firefighting crate" +/datum/supply_packs/emergency/radiation + name = "Radiation Protection Crate" + contains = list(/obj/item/clothing/head/radiation, + /obj/item/clothing/head/radiation, + /obj/item/clothing/suit/radiation, + /obj/item/clothing/suit/radiation) + cost = 10 + containertype = /obj/structure/closet/crate/radiation + containername = "radiation protection crate" + /datum/supply_packs/emergency/atmostank name = "Firefighting Watertank" contains = list(/obj/item/weapon/watertank/atmos) @@ -136,7 +146,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/grenade/chem_grenade/antiweed, /obj/item/weapon/grenade/chem_grenade/antiweed) cost = 15 - containertype = /obj/structure/closet/crate/secure/hydrosec + containertype = /obj/structure/closet/crate/secure/hydroponics containername = "weed control crate" access = access_hydroponics @@ -441,7 +451,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine name = "Fuel Tank Crate" contains = list(/obj/structure/reagent_dispensers/fueltank) cost = 8 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large containername = "fuel tank crate" /datum/supply_packs/engineering/tools //the most robust crate @@ -838,55 +848,59 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine //////// livestock /datum/supply_packs/organic/cow name = "Cow Crate" + contains = list(/mob/living/simple_animal/cow) cost = 30 - containertype = /obj/structure/closet/critter/cow + containertype = /obj/structure/closet/crate/critter containername = "cow crate" /datum/supply_packs/organic/goat name = "Goat Crate" + contains = list(/mob/living/simple_animal/hostile/retaliate/goat) cost = 25 - containertype = /obj/structure/closet/critter/goat + containertype = /obj/structure/closet/crate/critter containername = "goat crate" /datum/supply_packs/organic/chicken name = "Chicken Crate" cost = 20 - containertype = /obj/structure/closet/critter/chick + containertype = /obj/structure/closet/crate/critter/chick containername = "chicken crate" /datum/supply_packs/organic/corgi name = "Corgi Crate" cost = 50 - containertype = /obj/structure/closet/critter/corgi contains = list(/obj/item/clothing/tie/petcollar) + containertype = /obj/structure/closet/crate/critter/corgi containername = "corgi crate" /datum/supply_packs/organic/cat name = "Cat Crate" cost = 50 //Cats are worth as much as corgis. - containertype = /obj/structure/closet/critter/cat contains = list(/obj/item/clothing/tie/petcollar, /obj/item/toy/cattoy) + containertype = /obj/structure/closet/crate/critter/cat containername = "cat crate" /datum/supply_packs/organic/pug name = "Pug Crate" cost = 50 - containertype = /obj/structure/closet/critter/pug - contains = list(/obj/item/clothing/tie/petcollar) + contains = list(/mob/living/simple_animal/pet/dog/pug, + /obj/item/clothing/tie/petcollar) + containertype = /obj/structure/closet/crate/critter containername = "pug crate" /datum/supply_packs/organic/fox name = "Fox Crate" cost = 55 //Foxes are cool. - containertype = /obj/structure/closet/critter/fox - contains = list(/obj/item/clothing/tie/petcollar) + contains = list(/mob/living/simple_animal/pet/fox, + /obj/item/clothing/tie/petcollar) + containertype = /obj/structure/closet/crate/critter containername = "fox crate" /datum/supply_packs/organic/butterfly name = "Butterflies Crate" cost = 50 - containertype = /obj/structure/closet/critter/butterfly + containertype = /obj/structure/closet/crate/critter/butterfly containername = "butterflies crate" contraband = 1 @@ -1045,7 +1059,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine name = "MULEbot Crate" contains = list(/mob/living/simple_animal/bot/mulebot) cost = 20 - containertype = /obj/structure/largecrate/mule + containertype = /obj/structure/closet/crate/large containername = "\improper MULEbot Crate" /datum/supply_packs/misc/conveyor @@ -1065,7 +1079,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine name = "Water Tank Crate" contains = list(/obj/structure/reagent_dispensers/watertank) cost = 8 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large containername = "water tank crate" /datum/supply_packs/misc/lasertag @@ -1133,7 +1147,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine containername = "bureaucracy crate" /datum/supply_packs/misc/toner - name = "Toner Cartridges crate" + name = "Toner Cartridges Crate" contains = list(/obj/item/device/toner, /obj/item/device/toner, /obj/item/device/toner, @@ -1169,7 +1183,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine contains = list(/obj/structure/janitorialcart, /obj/item/clothing/shoes/galoshes) cost = 10 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large containername = "janitorial cart crate" /datum/supply_packs/misc/janitor/janitank @@ -1238,6 +1252,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine containername = "wizard costume crate" /datum/supply_packs/misc/randomised + name = "Collectable hat crate!" var/num_contained = 3 //number of items picked to be contained in a randomised crate contains = list(/obj/item/clothing/head/collectable/chef, /obj/item/clothing/head/collectable/paper, @@ -1259,7 +1274,6 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/clothing/head/collectable/slime, /obj/item/clothing/head/collectable/xenom, /obj/item/clothing/head/collectable/petehat) - name = "Collectable hat crate!" cost = 200 containername = "collectable hats crate! Brought to you by Bass.inc!" @@ -1267,13 +1281,12 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine manifest += "Contains any [num_contained] of:" ..() - /datum/supply_packs/misc/randomised/contraband + name = "Contraband Crate" num_contained = 5 contains = list(/obj/item/weapon/poster/contraband, /obj/item/weapon/storage/fancy/cigarettes/dromedaryco, /obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims) - name = "Contraband Crate" cost = 30 containername = "crate" //let's keep it subtle, eh? contraband = 1 @@ -1296,7 +1309,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/toy/redbutton) cost = 50 // or play the arcade machines ya lazy bum - containername ="toy crate" + containername = "toy crate" /datum/supply_packs/misc/autodrobe name = "Autodrobe Supply Crate" diff --git a/code/game/asteroid.dm b/code/game/asteroid.dm index 1a54baa825f..c5452d77a36 100644 --- a/code/game/asteroid.dm +++ b/code/game/asteroid.dm @@ -64,7 +64,7 @@ var/global/max_secret_rooms = 6 if("organharvest") walltypes = list(/turf/simulated/wall/r_wall=2,/turf/simulated/wall=2,/turf/simulated/mineral/random/high_chance=1) floortypes = list(/turf/simulated/floor/plasteel,/turf/simulated/floor/engine) - treasureitems = list(/mob/living/simple_animal/bot/medbot/mysterious=1, /obj/item/weapon/circular_saw=1, /obj/structure/closet/critter/cat=2) + treasureitems = list(/mob/living/simple_animal/bot/medbot/mysterious=1, /obj/item/weapon/circular_saw=1, /obj/structure/closet/crate/critter/cat=2) fluffitems = list(/obj/effect/decal/cleanable/blood=5,/obj/item/organ/internal/appendix=2,/obj/structure/closet/crate/freezer=2, /obj/structure/table/optable=1,/obj/item/weapon/scalpel=1,/obj/item/weapon/storage/firstaid/regular=3, /obj/item/weapon/tank/internals/anesthetic=1, /obj/item/weapon/surgical_drapes=2, /obj/item/device/mass_spectrometer/adv=1,/obj/item/clothing/glasses/hud/health=1) diff --git a/code/game/objects/structures/crates_lockers/bins.dm b/code/game/objects/structures/crates_lockers/bins.dm index 7bece78a795..6b255be1a1a 100644 --- a/code/game/objects/structures/crates_lockers/bins.dm +++ b/code/game/objects/structures/crates_lockers/bins.dm @@ -1,15 +1,11 @@ /obj/structure/closet/crate/bin desc = "A trash bin, place your trash here for the janitor to collect." name = "trash bin" - icon_crate = "largebins" icon_state = "largebins" - anchored = 1 - sound_effect_open = 'sound/effects/bin_open.ogg' - sound_effect_close = 'sound/effects/bin_close.ogg' - var/animation = "animate_largebins" - var/redlight = "largebinr" - var/greenlight = "largebing" - var/orangelight = "largebino" + open_sound = 'sound/effects/bin_open.ogg' + close_sound = 'sound/effects/bin_close.ogg' + anchored = TRUE + allow_mobs = TRUE /obj/structure/closet/crate/bin/New() ..() @@ -19,11 +15,11 @@ ..() overlays.Cut() if(contents.len == 0) - overlays += greenlight + overlays += "largebing" else if(contents.len >= storage_capacity) - overlays += redlight + overlays += "largebinr" else - overlays += orangelight + overlays += "largebino" /obj/structure/closet/crate/bin/attackby(obj/item/weapon/W, mob/user, params) if(istype(W, /obj/item/weapon/storage/bag/trash)) @@ -54,23 +50,15 @@ user.visible_message("[user] stuffs [O] into[src].", \ "You stuff [O] into [src].", \ "You hear a loud metal bang.") - insert(O, 1, !opened) + insert(O) if(opened) close() -/obj/structure/closet/crate/bin/open() - . = ..() - update_icon() - -/obj/structure/closet/crate/bin/close() - . = ..() - update_icon() - /obj/structure/closet/crate/bin/proc/do_animate() - playsound(src.loc, sound_effect_open, 15, 1, -3) - flick(animation, src) + playsound(src.loc, open_sound, 15, 1, -3) + flick("animate_largebins", src) spawn(13) - playsound(src.loc, sound_effect_close, 15, 1, -3) + playsound(src.loc, close_sound, 15, 1, -3) update_icon() /obj/structure/closet/crate/bin/insert(obj/item/I, include_mobs = 0, animate = 0) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 41c94f82650..10596418b04 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -14,6 +14,7 @@ var/large = 1 var/wall_mounted = 0 //never solid (You can always pass over it) var/health = 100 + var/breakout_time = 2 var/lastbang var/can_weld_shut = 1 var/max_mob_size = MOB_SIZE_HUMAN //Biggest mob_size accepted by the container @@ -21,6 +22,7 @@ var/storage_capacity = 30 //This is so that someone can't pack hundreds of items in a locker/crate then open it in a populated area to crash clients. var/cutting_tool = /obj/item/weapon/weldingtool var/open_sound = 'sound/machines/click.ogg' + var/close_sound = 'sound/machines/click.ogg' var/cutting_sound = 'sound/items/Welder.ogg' var/material_drop = /obj/item/stack/sheet/metal @@ -63,11 +65,10 @@ /obj/structure/closet/examine(mob/user) ..() - if(secure) - if(broken || opened || !ishuman(user)) - return //Monkeys don't get a message, nor does anyone if it's open or emagged - else - user << "Alt-click the locker to [locked ? "unlock" : "lock"] it." + if(broken) + user << "It appears to be broken." + else if(secure && !opened) + user << "Alt-click to [locked ? "unlock" : "lock"]." /obj/structure/closet/alter_health() return get_turf(src) @@ -88,22 +89,17 @@ return 1 /obj/structure/closet/proc/dump_contents() - for(var/obj/O in src) - O.loc = loc + var/turf/T = get_turf(src) + for(var/atom/movable/AM in src) + AM.forceMove(T) if(throwing) //you keep some momentum when getting out of a thrown closet - step(O, dir) - - for(var/mob/M in src) - M.loc = loc - M.reset_perspective(null) - if(throwing) - step(M, dir) + step(AM, dir) if(throwing) throwing = 0 /obj/structure/closet/proc/take_contents() - - for(var/atom/movable/AM in loc) + var/turf/T = get_turf(src) + for(var/atom/movable/AM in T) if(insert(AM) == -1) // limit reached break @@ -118,7 +114,6 @@ return 1 /obj/structure/closet/proc/insert(atom/movable/AM) - if(contents.len >= storage_capacity) return -1 @@ -132,7 +127,10 @@ mobs_stored++ if(mobs_stored >= mob_storage_capacity) return 0 +<<<<<<< ede93b63a61fbdfe3be0fe9569aa29b152e767bc L.reset_perspective(src) +======= +>>>>>>> Fix up crates L.stop_pulling() else if(!istype(AM, /obj/item) && !istype(AM, /obj/effect/dummy/chameleon)) return 0 @@ -140,20 +138,18 @@ return 0 else if(AM.flags & NODROP) return 0 - AM.loc = src + AM.forceMove(src) if(AM.pulledby) AM.pulledby.stop_pulling() return 1 /obj/structure/closet/proc/close() - if(!opened) - return 0 - if(!can_close()) + if(!opened || !can_close()) return 0 take_contents() opened = 0 - playsound(loc, open_sound, 15, 1, -3) + playsound(loc, close_sound, 15, 1, -3) density = 1 update_icon() return 1 @@ -161,7 +157,8 @@ /obj/structure/closet/proc/toggle() if(opened) return close() - return open() + else + return open() /obj/structure/closet/ex_act(severity, target) contents_explosion(severity, target) @@ -170,13 +167,12 @@ qdel(src) ..() -/obj/structure/closet/bullet_act(obj/item/projectile/Proj) +/obj/structure/closet/bullet_act(obj/item/projectile/P) ..() - if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) - health -= Proj.damage + if(P.damage_type == BRUTE || P.damage_type == BURN) + health -= P.damage if(health <= 0) qdel(src) - return /obj/structure/closet/attack_animal(mob/living/simple_animal/user) if(user.environment_smash) @@ -188,7 +184,6 @@ if(prob(75)) qdel(src) - /obj/structure/closet/attackby(obj/item/weapon/W, mob/user, params) if(user.loc == src) return @@ -313,31 +308,24 @@ if(AM.loc == src) return 0 return 1 -/obj/structure/closet/container_resist() - var/mob/living/user = usr - var/breakout_time = 2 //2 minutes by default - if(istype(user.loc, /obj/structure/closet/critter) && !welded) - breakout_time = 0.75 //45 seconds if it's an unwelded critter crate - - if( opened || (!welded && !locked && !istype(loc, /obj/mecha)) ) +/obj/structure/closet/container_resist(mob/living/user) + if(opened || (!welded && !locked && !istype(loc, /obj/mecha))) return //Door's open, not locked or welded or inside a mech, no point in resisting. //okay, so the closet is either welded or locked... resist!!! user.changeNext_move(CLICK_CD_BREAKOUT) user.last_special = world.time + CLICK_CD_BREAKOUT - user << "You lean on the back of [src] and start pushing the door open. (this will take about [breakout_time] minutes.)" - for(var/mob/O in viewers(src)) - O << "[src] begins to shake violently!" - if(do_after(user,(breakout_time*60*10), target = src)) //minutes * 60seconds * 10deciseconds + user.visible_message("[src] begins to shake violently!", + "You lean on the back of [src] and start pushing the door open.") + if(do_after(user,(breakout_time * 60 * 10), target = src)) //minutes * 60seconds * 10deciseconds if(!user || user.stat != CONSCIOUS || user.loc != src || opened || (!locked && !welded && !istype(loc, /obj/mecha)) ) return //we check after a while whether there is a point of resisting anymore and whether the user is capable of resisting - welded = 0 //applies to all lockers lockers locked = 0 //applies to critter crates and secure lockers only broken = 1 //applies to secure lockers only user.visible_message("[user] successfully broke out of [src]!", "You successfully break out of [src]!") - if(istype( loc, /obj/structure/bigDelivery)) + if(istype(loc, /obj/structure/bigDelivery)) var/obj/structure/bigDelivery/D = loc qdel(D) else if(istype( loc, /obj/mecha)) @@ -348,36 +336,28 @@ /obj/structure/closet/AltClick(mob/user) ..() - if(!user.canUseTopic(user) || broken) + if(!user.canUseTopic(user)) user << "You can't do that right now!" return + if(broken) + user << "\The [src] is broken!" if(opened || !secure || !in_range(src, user)) return else togglelock(user) -/obj/structure/closet/emp_act(severity) - for(var/obj/O in src) - O.emp_act(severity) - if(secure && !broken) - if(prob(50/severity)) - locked = !locked - update_icon() - if(prob(20/severity) && !opened) - if(!locked) - open() - else - req_access = list() - req_access += pick(get_all_accesses()) - ..() - /obj/structure/closet/proc/togglelock(mob/user) - if(secure) + if(secure && !broken) if(allowed(user)) locked = !locked add_fingerprint(user) +<<<<<<< ede93b63a61fbdfe3be0fe9569aa29b152e767bc for(var/mob/O in viewers(user, 3)) O.show_message("[user] has [locked ? null : "un"]locked the locker.", 1) +======= + visible_message("[user] [locked ? null : "un"]locks [src].", + "You [locked ? null : "un"]locks [src].") +>>>>>>> Fix up crates update_icon() else user << "Access Denied" @@ -386,16 +366,31 @@ /obj/structure/closet/emag_act(mob/user) if(secure && !broken) + user.visible_message("Sparks fly from [src]!", + "You emag [src], breaking the lock!", + "You hear a faint electrical spark.") + playsound(src.loc, 'sound/effects/sparks4.ogg', 50, 1) broken = 1 locked = 0 - desc += " It appears to be broken." - update_icon() - if(user) - visible_message("The [name] has been broken by [user] with an electromagnetic card!", "You hear a faint electrical spark.") - overlays += "sparking" - spawn(4) //overlays don't support flick so we have to cheat update_icon() +<<<<<<< ede93b63a61fbdfe3be0fe9569aa29b152e767bc /obj/structure/closet/get_remote_view_fullscreens(mob/user) if(!(user.sight & (SEEOBJS|SEEMOBS))) user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1) +======= +/obj/structure/closet/emp_act(severity) + for(var/obj/O in src) + O.emp_act(severity) + if(secure && !broken) + if(prob(50 / severity)) + locked = !locked + update_icon() + if(prob(20 / severity) && !opened) + if(!locked) + open() + else + req_access = list() + req_access += pick(get_all_accesses()) + ..() +>>>>>>> Fix up crates diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 65dca528f33..b84231bc0b1 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -1,49 +1,98 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - /obj/structure/closet/crate name = "crate" desc = "A rectangular steel crate." icon = 'icons/obj/crates.dmi' - var/icon_crate = "crate" icon_state = "crate" req_access = null - var/rigged = 0 - var/sound_effect_open = 'sound/machines/click.ogg' - var/sound_effect_close = 'sound/machines/click.ogg' + var/allow_mobs = FALSE var/obj/item/weapon/paper/manifest/manifest /obj/structure/closet/crate/New() ..() update_icon() - /obj/structure/closet/crate/update_icon() + icon_state = "[initial(icon_state)][opened ? "open" : ""]" + overlays.Cut() - if(opened) - icon_state = "[icon_crate]open" - else - icon_state = icon_crate if(manifest) overlays += "manifest" +/obj/structure/closet/crate/attack_hand(mob/user) + add_fingerprint(user) + if(manifest) + tear_manifest(user) + return + if(!toggle()) + togglelock(user) + +/obj/structure/closet/crate/attackby(obj/item/weapon/W, mob/user, params) + if(opened) + if(isrobot(user)) + return + if(user.drop_item()) + W.Move(loc) + else if(istype(W, /obj/item/stack/packageWrap)) + return + else if(!place(user, W)) + attack_hand(user) + +/obj/structure/closet/crate/insert(atom/movable/AM) + if(contents.len >= storage_capacity) + return -1 + + if(istype(AM, /mob/living)) + var/mob/living/L = AM + if(!allow_mobs || L.buckled || L.buckled_mob) + return + L.stop_pulling() + if(AM.flags & NODROP || AM.density || AM.anchored || AM.buckled_mob || istype(AM, /obj/structure/closet)) + return + AM.forceMove(src) + if(AM.pulledby) + AM.pulledby.stop_pulling() + return 1 + +/obj/structure/closet/crate/proc/tear_manifest(mob/user) + user << "You tear the manifest off of the crate." + playsound(src, 'sound/items/poster_ripped.ogg', 75, 1) + + manifest.loc = loc + if(ishuman(user)) + user.put_in_hands(manifest) + manifest = null + update_icon() + /obj/structure/closet/crate/internals desc = "A internals crate." name = "internals crate" - icon_crate = "o2crate" icon_state = "o2crate" /obj/structure/closet/crate/trashcart desc = "A heavy, metal trashcart with wheels." name = "trash cart" - icon_crate = "trashcart" icon_state = "trashcart" /obj/structure/closet/crate/medical desc = "A medical crate." name = "medical crate" - icon_crate = "medicalcrate" icon_state = "medicalcrate" +/obj/structure/closet/crate/freezer + desc = "A freezer." + name = "freezer" + icon_state = "freezer" + +/obj/structure/closet/crate/radiation + desc = "A crate with a radiation sign on it." + name = "radiation crate" + icon_state = "radiation" + +/obj/structure/closet/crate/hydroponics + name = "hydroponics crate" + desc = "All you need to destroy those pesky weeds and pests." + icon_state = "hydrocrate" + /obj/structure/closet/crate/rcd desc = "A crate for the storage of an RCD." name = "\improper RCD crate" @@ -53,160 +102,3 @@ for(var/i in 1 to 4) new /obj/item/weapon/rcd_ammo(src) new /obj/item/weapon/rcd(src) - -/obj/structure/closet/crate/freezer - desc = "A freezer." - name = "freezer" - icon_crate = "freezer" - icon_state = "freezer" - var/target_temp = T0C - 40 - var/cooling_power = 40 - -/obj/structure/closet/crate/freezer/return_air() - var/datum/gas_mixture/gas = (..()) - if(!gas) - return null - - var/datum/gas_mixture/newgas = new/datum/gas_mixture() - newgas.copy_from(gas) - - if(newgas.temperature <= target_temp) - return - - if((newgas.temperature - cooling_power) > target_temp) - newgas.temperature -= cooling_power - else - newgas.temperature = target_temp - return newgas - - -/obj/structure/closet/crate/radiation - desc = "A crate with a radiation sign on it." - name = "radioactive gear crate" - icon_crate = "radiation" - icon_state = "radiation" - -/obj/structure/closet/crate/radiation/New() - ..() - for(var/i in 1 to 4) - new /obj/item/clothing/suit/radiation(src) - new /obj/item/clothing/head/radiation(src) - -/obj/structure/closet/crate/hydroponics - name = "hydroponics crate" - desc = "All you need to destroy those pesky weeds and pests." - icon_crate = "hydrocrate" - icon_state = "hydrocrate" - -/obj/structure/closet/crate/hydroponics/prespawned - -/obj/structure/closet/crate/hydroponics/prespawned/New() - ..() - new /obj/item/weapon/reagent_containers/spray/plantbgone(src) - new /obj/item/weapon/reagent_containers/spray/plantbgone(src) - new /obj/item/weapon/cultivator(src) - -/obj/structure/closet/crate/open() - playsound(src.loc, sound_effect_open, 15, 1, -3) - dump_contents() - src.opened = 1 - update_icon() - return 1 - -/obj/structure/closet/crate/close() - playsound(src.loc, sound_effect_close, 15, 1, -3) - take_contents() - src.opened = 0 - update_icon() - return 1 - -/obj/structure/closet/crate/insert(atom/movable/AM, include_mobs = 0) - - if(contents.len >= storage_capacity) - return -1 - if(include_mobs && isliving(AM)) - var/mob/living/L = AM - if(L.buckled) - return 0 - else if(isobj(AM)) - if(AM.density || AM.anchored || istype(AM,/obj/structure/closet)) - return 0 - else - return 0 - - if(istype(AM, /obj/structure/bed)) //This is only necessary because of rollerbeds and swivel chairs. - var/obj/structure/bed/B = AM - if(B.buckled_mob) - return 0 - - AM.loc = src - return 1 - -/obj/structure/closet/crate/proc/tear_manifest(mob/user) - user << "You tear the manifest off of the crate." - playsound(src.loc, 'sound/items/poster_ripped.ogg', 75, 1) - manifest.loc = loc - if(ishuman(user)) - user.put_in_hands(manifest) - manifest = null - overlays-="manifest" - -/obj/structure/closet/crate/attack_hand(mob/user) - if(manifest) - tear_manifest(user) - return - if(opened) - close() - else - if(rigged && locate(/obj/item/device/electropack) in src) - if(isliving(user)) - var/mob/living/L = user - if(L.electrocute_act(17, src)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() - return - open() - return - -/obj/structure/closet/crate/attack_paw(mob/user) - return attack_hand(user) - -/obj/structure/closet/crate/attackby(obj/item/weapon/W, mob/user, params) - if(opened) - if(isrobot(user)) - return - if(!user.drop_item()) //couldn't drop the item - user << "\The [W] is stuck to your hand, you cannot put it in \the [src]!" - return - if(W) - W.loc = src.loc - else if(istype(W, /obj/item/stack/packageWrap)) - return - else if(istype(W, /obj/item/stack/cable_coil)) - if(rigged) - user << "[src] is already rigged!" - return - var/obj/item/stack/cable_coil/C = W - if (C.use(5)) - user << "You rig [src]." - rigged = 1 - else - user << "You need 5 lengths of cable to rig [src]!" - return - else if(istype(W, /obj/item/device/electropack)) - if(rigged) - if(!user.drop_item()) - return - user << "You attach [W] to [src]." - W.loc = src - return - else if(istype(W, /obj/item/weapon/wirecutters)) - if(rigged) - user << "You cut away the wiring." - playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1) - rigged = 0 - return - else if(!place(user, W)) - return attack_hand(user) - diff --git a/code/game/objects/structures/crates_lockers/crates/critter.dm b/code/game/objects/structures/crates_lockers/crates/critter.dm new file mode 100644 index 00000000000..ffe49f08023 --- /dev/null +++ b/code/game/objects/structures/crates_lockers/crates/critter.dm @@ -0,0 +1,45 @@ +/obj/structure/closet/crate/critter + name = "critter crate" + desc = "A crate designed for safe transport of animals. Only openable from the the outside." + icon_state = "crittercrate" + allow_mobs = TRUE + breakout_time = 1 + +/obj/structure/closet/crate/critter/update_icon() + overlays.Cut() + if(opened) + overlays += "crittercrate_door_open" + else + overlays += "crittercrate_door" + if(manifest) + overlays += "manifest" + +/obj/structure/closet/crate/critter/attack_hand(mob/user) + if(user in src) + user << "It won't budge!" + else + ..() + +/obj/structure/closet/crate/critter/corgi/New() + ..() + if(prob(50)) + new /mob/living/simple_animal/pet/dog/corgi/Lisa(src) + else + new /mob/living/simple_animal/pet/dog/corgi(src) + +/obj/structure/closet/crate/critter/cat/New() + ..() + if(prob(50)) + new /mob/living/simple_animal/pet/cat/Proc(src) + else + new /mob/living/simple_animal/pet/cat(src) + +/obj/structure/closet/crate/critter/chick/New() + ..() + for(var/i in 1 to rand(1, 3)) + new /mob/living/simple_animal/chick(src) + +/obj/structure/closet/crate/critter/butterfly/New() + ..() + for(var/i in 1 to 50) + new /mob/living/simple_animal/butterfly(src) \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/crates/large.dm b/code/game/objects/structures/crates_lockers/crates/large.dm new file mode 100644 index 00000000000..93a81516a7c --- /dev/null +++ b/code/game/objects/structures/crates_lockers/crates/large.dm @@ -0,0 +1,35 @@ +/obj/structure/closet/crate/large + name = "large crate" + desc = "A hefty wooden crate." + icon_state = "largecrate" + density = 1 + material_drop = /obj/item/stack/sheet/mineral/wood + +/obj/structure/closet/crate/large/attack_hand(mob/user) + add_fingerprint(user) + if(manifest) + tear_manifest(user) + return + else + user << "You need a crowbar to pry this open!" + return + +/obj/structure/closet/crate/large/attackby(obj/item/weapon/W, mob/user, params) + if(istype(W, /obj/item/weapon/crowbar)) + var/turf/T = get_turf(src) + if(manifest) + tear_manifest(user) + + user.visible_message("[user] pries \the [src] open.", \ + "You pry open \the [src].", \ + "You hear splitting wood.") + playsound(src.loc, 'sound/weapons/slashmiss.ogg', 75, 1) + + for(var/i in 1 to rand(2, 5)) + new material_drop(src) + for(var/atom/movable/AM in contents) + AM.forceMove(T) + + qdel(src) + else + ..() diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index a4f11e7fd5f..ffcdd093a44 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -1,105 +1,36 @@ /obj/structure/closet/crate/secure desc = "A secure crate." name = "secure crate" - icon_crate = "securecrate" icon_state = "securecrate" - var/redlight = "securecrater" - var/greenlight = "securecrateg" - var/sparks = "securecratesparks" - var/emag = "securecrateemag" + secure = 1 locked = 1 health = 1000 +/obj/structure/closet/crate/secure/update_icon() + ..() + if(broken) + overlays += "securecrateemag" + else if(locked) + overlays += "securecrater" + else + overlays += "securecrateg" + /obj/structure/closet/crate/secure/weapon desc = "A secure weapons crate." name = "weapons crate" - icon_crate = "weaponcrate" icon_state = "weaponcrate" /obj/structure/closet/crate/secure/plasma desc = "A secure plasma crate." name = "plasma crate" - icon_crate = "plasmacrate" icon_state = "plasmacrate" /obj/structure/closet/crate/secure/gear desc = "A secure gear crate." name = "gear crate" - icon_crate = "secgearcrate" icon_state = "secgearcrate" -/obj/structure/closet/crate/secure/hydrosec +/obj/structure/closet/crate/secure/hydroponics desc = "A crate with a lock on it, painted in the scheme of the station's botanists." name = "secure hydroponics crate" - icon_crate = "hydrosecurecrate" icon_state = "hydrosecurecrate" - -/obj/structure/closet/crate/secure/update_icon() - ..() - if(locked) - overlays += redlight - else if(broken) - overlays += emag - else - overlays += greenlight - -/obj/structure/closet/crate/secure/attack_hand(mob/user) - if(manifest) - tear_manifest(user) - return - if(locked && !broken) - if (allowed(user)) - user << "You unlock [src]." - src.locked = 0 - update_icon() - add_fingerprint(user) - return - else - user << "[src] is locked." - return - else - ..() - -/obj/structure/closet/crate/secure/attackby(obj/item/weapon/W, mob/user, params) - if(istype(W, /obj/item/weapon/card) && src.allowed(user) && !locked && !opened && !broken) - user << "You lock \the [src]." - src.locked = 1 - update_icon() - add_fingerprint(user) - return - - return ..() - -/obj/structure/closet/crate/secure/emag_act(mob/user) - if(locked && !broken) - src.locked = 0 - src.broken = 1 - update_icon() - overlays += sparks - spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface* - playsound(src.loc, "sparks", 60, 1) - user << "You unlock \the [src]." - add_fingerprint(user) - -/obj/structure/closet/crate/secure/emp_act(severity) - for(var/obj/O in src) - O.emp_act(severity) - if(!broken && !opened && prob(50/severity)) - if(!locked) - src.locked = 1 - update_icon() - else - src.locked = 0 - src.broken = 1 - update_icon() - overlays += sparks - spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface* - playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1) - if(!opened && prob(20/severity)) - if(!locked) - open() - else - src.req_access = list() - src.req_access += pick(get_all_accesses()) - ..() - diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm deleted file mode 100644 index 6e2ce331f0b..00000000000 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ /dev/null @@ -1,53 +0,0 @@ -/obj/structure/largecrate - name = "large crate" - desc = "A hefty wooden crate." - icon = 'icons/obj/crates.dmi' - icon_state = "densecrate" - density = 1 - var/obj/item/weapon/paper/manifest/manifest - -/obj/structure/largecrate/New() - ..() - update_icon() - -/obj/structure/largecrate/update_icon() - ..() - overlays.Cut() - if(manifest) - overlays += "manifest" - -/obj/structure/largecrate/attack_hand(mob/user) - if(manifest) - user << "You tear the manifest off of the crate." - playsound(src.loc, 'sound/items/poster_ripped.ogg', 75, 1) - manifest.loc = loc - if(ishuman(user)) - user.put_in_hands(manifest) - manifest = null - update_icon() - return - else - user << "You need a crowbar to pry this open!" - return - -/obj/structure/largecrate/attackby(obj/item/weapon/W, mob/user, params) - if(istype(W, /obj/item/weapon/crowbar)) - if(manifest) - manifest.loc = loc - manifest = null - update_icon() - new /obj/item/stack/sheet/mineral/wood(src) - var/turf/T = get_turf(src) - for(var/atom/movable/AM in contents) - AM.loc = T - user.visible_message("[user] pries \the [src] open.", \ - "You pry open \the [src].", \ - "You hear splitting wood.") - playsound(src.loc, 'sound/items/Deconstruct.ogg', 75, 1) - qdel(src) - else - return attack_hand(user) - -/obj/structure/largecrate/mule - icon_state = "mulecrate" - diff --git a/code/modules/cargo/order.dm b/code/modules/cargo/order.dm index 7f507454e21..96bf68bcc5c 100644 --- a/code/modules/cargo/order.dm +++ b/code/modules/cargo/order.dm @@ -33,6 +33,22 @@ return reqform +/datum/subsystem/shuttle/proc/generateSupplyOrder(packId, _orderedby, _orderedbyRank, _comment) + if(!packId) + return + var/datum/supply_packs/P = supply_packs[packId] + if(!P) + return + + var/datum/supply_order/O = new() + O.ordernum = ordernum++ + O.object = P + O.orderedby = _orderedby + O.orderedbyRank = _orderedbyRank + O.comment = _comment + + return O + /datum/supply_order/proc/createObject(atom/_loc, errors=0) if(!object) return @@ -77,15 +93,9 @@ A:amount = object.amount slip.info += "

  • [A.name]
  • " //add the item to the manifest (even if it was misplaced) - if(istype(Crate, /obj/structure/closet/critter)) // critter crates do not actually spawn mobs yet and have no contains var, but the manifest still needs to list them - var/obj/structure/closet/critter/CritCrate = Crate - if(CritCrate.content_mob) - var/mob/crittername = CritCrate.content_mob - slip.info += "
  • [initial(crittername.name)]
  • " - if((errors & MANIFEST_ERROR_ITEM)) //secure and large crates cannot lose items - if(findtext("[object.containertype]", "/secure/") || findtext("[object.containertype]","/largecrate/")) + if(findtext("[object.containertype]", "/secure/") || findtext("[object.containertype]","/large/")) errors &= ~MANIFEST_ERROR_ITEM else var/lostAmt = max(round(Crate.contents.len/10), 1) @@ -101,26 +111,5 @@ var/obj/structure/closet/crate/CR = Crate CR.manifest = slip CR.update_icon() - if(istype(Crate, /obj/structure/largecrate)) - var/obj/structure/largecrate/LC = Crate - LC.manifest = slip - LC.update_icon() return Crate - -/datum/subsystem/shuttle/proc/generateSupplyOrder(packId, _orderedby, _orderedbyRank, _comment) - if(!packId) - return - var/datum/supply_packs/P = supply_packs[packId] - if(!P) - return - - var/datum/supply_order/O = new() - O.ordernum = ordernum++ - O.object = P - O.orderedby = _orderedby - O.orderedbyRank = _orderedbyRank - O.comment = _comment - - return O - diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index 3f6ca87fa8e..d3b0ce56f6d 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -3,13 +3,11 @@ /obj/structure/closet/crate/secure/loot name = "abandoned crate" desc = "What could be inside?" - icon_crate = "securecrate" icon_state = "securecrate" var/code = null var/lastattempt = null var/attempts = 10 var/codelen = 4 - locked = 1 /obj/structure/closet/crate/secure/loot/New() ..() @@ -38,13 +36,13 @@ if(11 to 15) new /obj/item/weapon/reagent_containers/glass/beaker/bluespace(src) if(16 to 20) - for(var/i = 0, i < 10, i++) + for(var/i in 1 to 10) new /obj/item/weapon/ore/diamond(src) if(21 to 25) - for(var/i = 0, i < 5, i++) + for(var/i in 1 to 5) new /obj/item/weapon/poster/contraband(src) if(26 to 30) - for(var/i = 0, i < 3, i++) + for(var/i in 1 to 3) new /obj/item/weapon/reagent_containers/glass/beaker/noreact(src) if(31 to 35) new /obj/item/seeds/cashseed(src) @@ -55,7 +53,7 @@ new /obj/item/clothing/under/shorts/blue(src) if(46 to 50) new /obj/item/clothing/under/chameleon(src) - for(var/i = 0, i < 7, i++) + for(var/i in 1 to 7) new /obj/item/clothing/tie/horrible(src) if(51 to 52) // 2% chance new /obj/item/weapon/melee/classic_baton(src) @@ -71,24 +69,22 @@ new /obj/item/clothing/suit/space(src) new /obj/item/clothing/head/helmet/space(src) if(61 to 62) - for(var/i = 0, i < 5, ++i) + for(var/i in 1 to 5) new /obj/item/clothing/head/kitty(src) new /obj/item/clothing/tie/petcollar(src) if(63 to 64) - var/t = rand(4,7) - for(var/i = 0, i < t, ++i) + for(var/i in 1 to rand(4, 7)) var/newcoin = pick(/obj/item/weapon/coin/silver, /obj/item/weapon/coin/silver, /obj/item/weapon/coin/silver, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/gold, /obj/item/weapon/coin/diamond, /obj/item/weapon/coin/plasma, /obj/item/weapon/coin/uranium) new newcoin(src) if(65 to 66) new /obj/item/clothing/suit/ianshirt(src) new /obj/item/clothing/suit/hooded/ian_costume(src) if(67 to 68) - var/t = rand(4,7) - for(var/i = 0, i < t, ++i) + for(var/i in 1 to rand(4, 7)) var /newitem = pick(subtypesof(/obj/item/weapon/stock_parts) - /obj/item/weapon/stock_parts/subspace) new newitem(src) if(69 to 70) - for(var/i = 0, i < 5, ++i) + for(var/i in 1 to 5) new /obj/item/weapon/ore/bluespace_crystal(src) if(71 to 72) new /obj/item/weapon/pickaxe/drill(src) @@ -163,40 +159,32 @@ user << "The crate unlocks!" locked = 0 overlays.Cut() - overlays += greenlight + overlays += "securecrateg" else if (input == null || length(input) != codelen) user << "You leave the crate alone." else user << "A red light flashes." lastattempt = replacetext(input, 0, "z") attempts-- - if (attempts == 0) - user << "The crate's anti-tamper system activates!" - var/turf/T = get_turf(src.loc) - explosion(T, -1, -1, 1, 1) - qdel(src) - return + if(attempts == 0) + boom(user) else return ..() -/obj/structure/closet/crate/secure/loot/attack_animal() - qdel(src) +/obj/structure/closet/crate/secure/loot/attack_animal(mob/user) + boom(user) /obj/structure/closet/crate/secure/loot/attackby(obj/item/weapon/W, mob/user) if(locked) - if (istype(W, /obj/item/weapon/card/emag)) - user << "The crate's anti-tamper system activates!" - var/turf/T = get_turf(src.loc) - explosion(T, -1, -1, 1, 1) - qdel(src) - return - if (istype(W, /obj/item/device/multitool)) + if(istype(W, /obj/item/weapon/card/emag)) + boom(user) + if(istype(W, /obj/item/device/multitool)) user << "DECA-CODE LOCK REPORT:" - if (attempts == 1) + if(attempts == 1) user << "* Anti-Tamper Bomb will activate on next failed access attempt." else user << "* Anti-Tamper Bomb will activate after [src.attempts] failed access attempts." - if (lastattempt != null) + if(lastattempt != null) var/list/guess = list() var/bulls = 0 var/cows = 0 @@ -213,3 +201,17 @@ user << "Last code attempt had [bulls] correct digits at correct positions and [cows] correct digits at incorrect positions." else ..() else ..() + +/obj/structure/closet/crate/secure/loot/togglelock(mob/user) + if(opened) + ..() + else + boom(user) + +/obj/structure/closet/crate/secure/loot/proc/boom(mob/user) + user << "The crate's anti-tamper system activates!" + for(var/atom/movable/AM in src) + qdel(AM) + var/turf/T = get_turf(src) + explosion(T, -1, -1, 1, 1) + qdel(src) \ No newline at end of file diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 40c0ea1d568..2bc0f1ca913 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -162,8 +162,8 @@ /obj/structure/closet/crate/miningcar desc = "A mining car. This one doesn't work on rails, but has to be dragged." name = "Mining car (not for rails)" - icon_crate = "miningcar" icon_state = "miningcar" + /*****************************Survival Pod********************************/ diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 32a1777ede3..25c5eb7a6b3 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -34,9 +34,8 @@ ..() pixel_y = rand(-8, 8) pixel_x = rand(-9, 9) - spawn(2) - update_icon() - updateinfolinks() + update_icon() + updateinfolinks() /obj/item/weapon/paper/update_icon() diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index d63a62f4a57..c2ed3a6bc2e 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -98,7 +98,7 @@ continue SSshuttle.sold_atoms += " [AM.name]" - if(istype(AM, /obj/structure/closet/crate) || istype(AM, /obj/structure/closet/critter)) + if(istype(AM, /obj/structure/closet/crate)) crates++ SSshuttle.sold_atoms += ":" if(!AM.contents.len) diff --git a/icons/obj/closet.dmi b/icons/obj/closet.dmi index aa5a2366d176c397d76c589e5c6b615cb4e39dbe..58430a3543a797697ae2bd2f0f5a65f69ca797da 100644 GIT binary patch delta 9325 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 O9|ai|>EDtj0sjMafUH*l delta 10843 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 N%JQ$}Dr8_G{|^=assI20 diff --git a/icons/obj/crates.dmi b/icons/obj/crates.dmi index 40b9e739d62fb656140a00723864996f679bfd12..2f2180402a4c274f107fbb5801f9ddfc50c0d949 100644 GIT binary patch literal 14210 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 z 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 Date: Sun, 7 Feb 2016 04:21:07 -0500 Subject: [PATCH 049/142] Moves how poly tracks his lifetimes out of Write_Memory() to avoid some weird edge cases where poly could be accidentally credited with living while dead. The only in game side effect of this pull is that if poly dies in a round and later is revived somehow his streak will still be broken. Fixes a spacing error I missed. Changes the savefile names of the round survival mechanics, as the existing ones are somewhat spoiled by the bug I'm fixing. --- .../mob/living/simple_animal/parrot.dm | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 402517cc932..14252b02d40 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -882,19 +882,23 @@ ..() /mob/living/simple_animal/parrot/Poly/Life() - if(ticker.current_state == GAME_STATE_FINISHED && !memory_saved) + if(!stat && ticker.current_state == GAME_STATE_FINISHED && !memory_saved) + rounds_survived += 1 + if(rounds_survived > longest_survival) + longest_survival = rounds_survived Write_Memory() ..() /mob/living/simple_animal/parrot/Poly/death(gibbed) + rounds_survived = 0 Write_Memory() ..(gibbed) /mob/living/simple_animal/parrot/Poly/proc/Read_Memory() var/savefile/S = new /savefile("data/npc_saves/Poly.sav") S["phrases"] >> speech_buffer - S["rounds_survived"] >> rounds_survived - S["longest_survival"] >> longest_survival + S["roundssurvived"] >> rounds_survived + S["longestsurvival"] >> longest_survival if(isnull(speech_buffer)) speech_buffer = list() @@ -902,11 +906,6 @@ /mob/living/simple_animal/parrot/Poly/proc/Write_Memory() var/savefile/S = new /savefile("data/npc_saves/Poly.sav") S["phrases"] << speech_buffer - if(health > 0) - S["rounds_survived"] << rounds_survived + 1 - if(rounds_survived == longest_survival) - S["longest_survival"] << longest_survival + 1 - else - S["rounds_survived"] << 0 - + S["roundssurvived"] << rounds_survived + S["longestsurvival"] << longest_survival memory_saved = 1 From 1c62b22cc7515a234f3564a5a618f618c4707482 Mon Sep 17 00:00:00 2001 From: Incoming5643 Date: Sun, 7 Feb 2016 04:25:00 -0500 Subject: [PATCH 050/142] 4 am missing commit for the extra space --- code/modules/mob/living/simple_animal/parrot.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 14252b02d40..13e81b5e7ed 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -119,7 +119,7 @@ /mob/living/simple_animal/parrot/examine(mob/user) ..() if(stat) - user << pick("This parrot is no more", " This is a late parrot", "This is an ex-parrot") + user << pick("This parrot is no more", "This is a late parrot", "This is an ex-parrot") /mob/living/simple_animal/parrot/death(gibbed) if(held_item) From 9739719bf794469c30ed9c9c4e45289936f48f68 Mon Sep 17 00:00:00 2001 From: bgobandit Date: Sun, 7 Feb 2016 05:08:59 -0500 Subject: [PATCH 051/142] Particle accelerator now has actually different sprites for different directions. --- icons/obj/machines/particle_accelerator.dmi | Bin 104206 -> 106338 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/machines/particle_accelerator.dmi b/icons/obj/machines/particle_accelerator.dmi index f092bd5a97b6e9e501e77dfb63f0d38eaf0dc20a..e7636ad6a95fcadecfc8f063f927472d99807b61 100644 GIT binary patch literal 106338 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

    w0`*qzO8{L=Y0bN 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 HCjS2)qql`< literal 104206 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 Date: Sun, 7 Feb 2016 00:51:31 -0600 Subject: [PATCH 052/142] Rewrite supply packs/cargo orders --- code/__DEFINES/misc.dm | 8 +- code/controllers/subsystem/shuttles.dm | 17 +- code/datums/supplypacks.dm | 1055 +++++++------ code/game/asteroid.dm | 2 +- code/game/objects/items/devices/PDA/cart.dm | 4 +- .../structures/crates_lockers/closets.dm | 16 +- .../crates_lockers/crates/critter.dm | 24 - code/modules/cargo/console.dm | 47 +- code/modules/cargo/order.dm | 174 +-- code/modules/cargo/packs.dm | 1308 +++++++++++++++++ code/modules/events/shuttle_loan.dm | 62 +- .../power/supermatter/supermatter_crate.dm | 7 - code/modules/shuttle/supply.dm | 74 +- tgstation.dme | 1 - tgui/assets/tgui.css | 2 +- tgui/assets/tgui.js | 10 +- tgui/src/interfaces/cargo.ract | 4 +- 17 files changed, 1997 insertions(+), 818 deletions(-) create mode 100644 code/modules/cargo/packs.dm delete mode 100644 code/modules/power/supermatter/supermatter_crate.dm diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 29d58d3d448..9e94460dcbd 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -120,9 +120,11 @@ //some arbitrary defines to be used by self-pruning global lists. (see master_controller) #define PROCESS_KILL 26 //Used to trigger removal from a processing list -#define MANIFEST_ERROR_NAME 1 -#define MANIFEST_ERROR_COUNT 2 -#define MANIFEST_ERROR_ITEM 4 +// Cargo-related stuff. +#define MANIFEST_ERROR_CHANCE 5 +#define MANIFEST_ERROR_NAME 1 +#define MANIFEST_ERROR_CONTENTS 2 +#define MANIFEST_ERROR_ITEM 4 #define TRANSITIONEDGE 7 //Distance from edge to move to another z-level diff --git a/code/controllers/subsystem/shuttles.dm b/code/controllers/subsystem/shuttles.dm index 9736345ad41..7300918142a 100644 --- a/code/controllers/subsystem/shuttles.dm +++ b/code/controllers/subsystem/shuttles.dm @@ -22,7 +22,7 @@ var/datum/subsystem/shuttle/SSshuttle var/ordernum = 1 //order number given to next order var/points = 50 //number of trade-points we have var/points_per_decisecond = 0.005 //points gained every decisecond - var/points_per_slip = 2 //points gained per slip returned + var/points_per_manifest = 2 //points gained per manifest returned var/points_per_crate = 5 //points gained per crate returned var/points_per_intel = 250 //points gained per intel returned var/points_per_plasma = 5 //points gained per plasma returned @@ -31,9 +31,12 @@ var/datum/subsystem/shuttle/SSshuttle var/list/discoveredPlants = list() //Typepaths for unusual plants we've already sent CentComm, associated with their potencies var/list/techLevels = list() var/list/researchDesigns = list() + + var/list/supply_packs = list() var/list/shoppinglist = list() var/list/requestlist = list() - var/list/supply_packs = list() + var/list/orderhistory = list() + var/datum/round_event/shuttle_loan/shuttle_loan var/sold_atoms = "" @@ -50,12 +53,14 @@ var/datum/subsystem/shuttle/SSshuttle if(!supply) WARNING("No /obj/docking_port/mobile/supply placed on the map!") - ordernum = rand(1,9000) + ordernum = rand(1, 9000) - for(var/typepath in subtypesof(/datum/supply_packs)) - var/datum/supply_packs/P = new typepath() - if(P.name == "HEADER") continue // To filter out group headers + for(var/pack in subtypesof(/datum/supply_pack)) + var/datum/supply_pack/P = new pack() + if(!P.contains) + continue supply_packs["[P.type]"] = P + initial_move() ..() diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 2b7c9d0bb08..a5e6afc632d 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -1,79 +1,36 @@ -//SUPPLY PACKS -//NOTE: only secure crate types use the access var (and are lockable) -//NOTE: hidden packs only show up when the computer has been hacked. -//ANOTHER NOTE: Contraband is obtainable through modified supplycomp circuitboards. -//BIG NOTE: Don't add living things to crates, that's bad, it will break the shuttle. -//NEW NOTE: Do NOT set the price of any crates below 7 points. Doing so allows infinite points. +/datum/supply_pack + var/name = "" + var/group = "" + var/hidden = FALSE + var/contraband = FALSE + var/cost = 0 + var/access = FALSE + var/list/contains = null + var/amount = 0 + var/crate_type = /obj/structure/closet/crate + var/crate_name = null -// Supply Groups -var/const/supply_emergency = 1 -var/const/supply_security = 2 -var/const/supply_engineer = 3 -var/const/supply_medical = 4 -var/const/supply_science = 5 -var/const/supply_organic = 6 -var/const/supply_materials = 7 -var/const/supply_misc = 8 +/datum/supply_pack/proc/generate(turf/T) + var/obj/structure/closet/crate/C = new crate_type(T) + C.name = crate_name -var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engineer,supply_medical,supply_science,supply_organic,supply_materials,supply_misc) + for(var/item in contains) + var/atom/A = new item(C) + if(amount && A.vars.Find("amount") && A:amount) + A:amount = amount -/proc/get_supply_group_name(cat) - switch(cat) - if(1) - return "Emergency" - if(2) - return "Security" - if(3) - return "Engineering" - if(4) - return "Medical" - if(5) - return "Science" - if(6) - return "Food & Livestock" - if(7) - return "Raw Materials" - if(8) - return "Miscellaneous" - - -/datum/supply_packs - var/name = null - var/list/contains = list() - var/manifest = "" - var/amount = null - var/cost = null - var/containertype = /obj/structure/closet/crate - var/containername = null - var/access = null - var/hidden = 0 - var/contraband = 0 - var/group = supply_misc - - -/datum/supply_packs/New() - manifest += "

    " - -////// Use the sections to keep things tidy please /Malkevin + return C ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Emergency /////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// -/datum/supply_packs/emergency // Section header - use these to set default supply group and crate type for sections - name = "HEADER" // Use "HEADER" to denote section headers, this is needed for the supply computers to filter them - containertype = /obj/structure/closet/crate/internals - group = supply_emergency +/datum/supply_pack/emergency + group = "Emergency" - -/datum/supply_packs/emergency/evac +/datum/supply_pack/emergency/equipment name = "Emergency Equipment" + cost = 35 contains = list(/mob/living/simple_animal/bot/floorbot, /mob/living/simple_animal/bot/floorbot, /mob/living/simple_animal/bot/medbot, @@ -88,23 +45,24 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas) - cost = 35 - containertype = /obj/structure/closet/crate/internals - containername = "emergency crate" + crate_name = "emergency crate" + crate_type = /obj/structure/closet/crate/internals -/datum/supply_packs/emergency/internals +/datum/supply_pack/emergency/internals name = "Internals Crate" + cost = 10 contains = list(/obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas, /obj/item/weapon/tank/internals/air, /obj/item/weapon/tank/internals/air, /obj/item/weapon/tank/internals/air) - cost = 10 - containername = "internals crate" + crate_name = "internals crate" + crate_type = /obj/structure/closet/crate/internals -/datum/supply_packs/emergency/firefighting +/datum/supply_pack/emergency/firefighting name = "Firefighting Crate" + cost = 10 contains = list(/obj/item/clothing/suit/fire/firefighter, /obj/item/clothing/suit/fire/firefighter, /obj/item/clothing/mask/gas, @@ -117,186 +75,175 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/extinguisher, /obj/item/clothing/head/hardhat/red, /obj/item/clothing/head/hardhat/red) - cost = 10 - containertype = /obj/structure/closet/crate - containername = "firefighting crate" + crate_name = "firefighting crate" -/datum/supply_packs/emergency/radiation +/datum/supply_pack/emergency/atmostank + name = "Firefighting Watertank" + cost = 10 + access = access_atmospherics + contains = list(/obj/item/weapon/watertank/atmos) + crate_name = "firefighting watertank crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/emergency/radiation name = "Radiation Protection Crate" + cost = 10 contains = list(/obj/item/clothing/head/radiation, /obj/item/clothing/head/radiation, /obj/item/clothing/suit/radiation, /obj/item/clothing/suit/radiation) - cost = 10 - containertype = /obj/structure/closet/crate/radiation - containername = "radiation protection crate" + crate_name = "radiation protection crate" + crate_type = /obj/structure/closet/crate/radiation -/datum/supply_packs/emergency/atmostank - name = "Firefighting Watertank" - contains = list(/obj/item/weapon/watertank/atmos) - cost = 10 - containertype = /obj/structure/closet/crate/secure - containername = "firefighting watertank crate" - access = access_atmospherics - -/datum/supply_packs/emergency/weedcontrol +/datum/supply_pack/emergency/weedcontrol name = "Weed Control Crate" + cost = 15 + access = access_hydroponics contains = list(/obj/item/weapon/scythe, /obj/item/clothing/mask/gas, /obj/item/weapon/grenade/chem_grenade/antiweed, /obj/item/weapon/grenade/chem_grenade/antiweed) - cost = 15 - containertype = /obj/structure/closet/crate/secure/hydroponics - containername = "weed control crate" - access = access_hydroponics + crate_name = "weed control crate" + crate_type = /obj/structure/closet/crate/secure/hydroponics -/datum/supply_packs/emergency/specialops - name = "Special Ops supplies" +/datum/supply_pack/emergency/specialops + name = "Special Ops Supplies" + hidden = TRUE + cost = 20 contains = list(/obj/item/weapon/storage/box/emps, /obj/item/weapon/grenade/smokebomb, /obj/item/weapon/grenade/smokebomb, /obj/item/weapon/grenade/smokebomb, /obj/item/weapon/pen/sleepy, /obj/item/weapon/grenade/chem_grenade/incendiary) - cost = 20 - containertype = /obj/structure/closet/crate - containername = "special ops crate" - hidden = 1 + crate_name = "special ops crate" + crate_type = /obj/structure/closet/crate -/datum/supply_packs/emergency/syndicate - name = "ERROR_NULL_ENTRY" - contains = list(/obj/item/weapon/storage/box/syndicate) +/datum/supply_pack/emergency/syndicate + name = "NULL_ENTRY" + hidden = TRUE cost = 140 - containertype = /obj/structure/closet/crate - containername = "crate" - hidden = 1 + contains = list(/obj/item/weapon/storage/box/syndicate) + crate_name = "crate" + crate_type = /obj/structure/closet/crate ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Security //////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// -/datum/supply_packs/security - name = "HEADER" - containertype = /obj/structure/closet/crate/secure/gear +/datum/supply_pack/security + group = "Security" access = access_security - group = supply_security + crate_type = /obj/structure/closet/crate/secure/gear - -/datum/supply_packs/security/supplies +/datum/supply_pack/security/supplies name = "Security Supplies Crate" + cost = 10 contains = list(/obj/item/weapon/storage/box/flashbangs, /obj/item/weapon/storage/box/teargas, /obj/item/weapon/storage/box/flashes, /obj/item/weapon/storage/box/handcuffs) - cost = 10 - containername = "security supply crate" + crate_name = "security supply crate" -////// Armor: Basic - -/datum/supply_packs/security/helmets +/datum/supply_pack/security/helmets name = "Helmets Crate" + cost = 10 contains = list(/obj/item/clothing/head/helmet/sec, /obj/item/clothing/head/helmet/sec, /obj/item/clothing/head/helmet/sec) - cost = 10 - containername = "helmet crate" + crate_name = "helmet crate" -/datum/supply_packs/security/armor +/datum/supply_pack/security/armor name = "Armor Crate" + cost = 10 contains = list(/obj/item/clothing/suit/armor/vest, /obj/item/clothing/suit/armor/vest, /obj/item/clothing/suit/armor/vest) - cost = 10 - containername = "armor crate" + crate_name = "armor crate" -////// Weapons: Basic - -/datum/supply_packs/security/baton +/datum/supply_pack/security/baton name = "Stun Batons Crate" + cost = 10 contains = list(/obj/item/weapon/melee/baton/loaded, /obj/item/weapon/melee/baton/loaded, /obj/item/weapon/melee/baton/loaded) - cost = 10 - containername = "stun baton crate" + crate_name = "stun baton crate" -/datum/supply_packs/security/laser +/datum/supply_pack/security/laser name = "Lasers Crate" + cost = 15 contains = list(/obj/item/weapon/gun/energy/laser, /obj/item/weapon/gun/energy/laser, /obj/item/weapon/gun/energy/laser) - cost = 15 - containername = "laser crate" + crate_name = "laser crate" -/datum/supply_packs/security/taser - name = "Stun Guns Crate" +/datum/supply_pack/security/taser + name = "Taser Crate" + cost = 15 contains = list(/obj/item/weapon/gun/energy/gun/advtaser, /obj/item/weapon/gun/energy/gun/advtaser, /obj/item/weapon/gun/energy/gun/advtaser) - cost = 15 - containername = "stun gun crate" + crate_name = "taser crate" -/datum/supply_packs/security/disabler +/datum/supply_pack/security/disabler name = "Disabler Crate" + cost = 10 contains = list(/obj/item/weapon/gun/energy/disabler, /obj/item/weapon/gun/energy/disabler, /obj/item/weapon/gun/energy/disabler) - cost = 10 - containername = "disabler crate" + crate_name = "disabler crate" -/datum/supply_packs/security/forensics +/datum/supply_pack/security/forensics name = "Forensics Crate" + cost = 20 contains = list(/obj/item/device/detective_scanner, /obj/item/weapon/storage/box/evidence, /obj/item/device/camera, /obj/item/device/taperecorder, /obj/item/toy/crayon/white, /obj/item/clothing/head/det_hat) - cost = 20 - containername ="forensics crate" + crate_name = "forensics crate" -///// Armory stuff -/datum/supply_packs/security/armory - name = "HEADER" - containertype = /obj/structure/closet/crate/secure/weapon +/datum/supply_pack/security/armory access = access_armory + crate_type = /obj/structure/closet/crate/secure/weapon -///// Armor: Specialist - -/datum/supply_packs/security/armory/riothelmets +/datum/supply_pack/security/armory/riothelmets name = "Riot Helmets Crate" + cost = 15 contains = list(/obj/item/clothing/head/helmet/riot, /obj/item/clothing/head/helmet/riot, /obj/item/clothing/head/helmet/riot) - cost = 15 - containername = "riot helmets crate" + crate_name = "riot helmets crate" -/datum/supply_packs/security/armory/riotarmor +/datum/supply_pack/security/armory/riotarmor name = "Riot Armor Crate" + cost = 15 contains = list(/obj/item/clothing/suit/armor/riot, /obj/item/clothing/suit/armor/riot, /obj/item/clothing/suit/armor/riot) - cost = 15 - containername = "riot armor crate" + crate_name = "riot armor crate" -/datum/supply_packs/security/armory/riotshields +/datum/supply_pack/security/armory/riotshields name = "Riot Shields Crate" + cost = 20 contains = list(/obj/item/weapon/shield/riot, /obj/item/weapon/shield/riot, /obj/item/weapon/shield/riot) - cost = 20 - containername = "riot shields crate" + crate_name = "riot shields crate" -/datum/supply_packs/security/armory/bulletarmor +/datum/supply_pack/security/armory/bulletarmor name = "Bulletproof Armor Crate" + cost = 15 contains = list(/obj/item/clothing/suit/armor/bulletproof, /obj/item/clothing/suit/armor/bulletproof, /obj/item/clothing/suit/armor/bulletproof) - cost = 15 - containername = "tactical armor crate" + crate_name = "bulletproof armor crate" -/datum/supply_packs/security/armory/swat - name = "SWAT gear crate" +/datum/supply_pack/security/armory/swat + name = "SWAT Crate" + cost = 60 contains = list(/obj/item/clothing/head/helmet/swat/nanotrasen, /obj/item/clothing/head/helmet/swat/nanotrasen, /obj/item/clothing/suit/space/swat, @@ -307,40 +254,39 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/clothing/mask/gas/sechailer/swat, /obj/item/weapon/storage/belt/military/assault, /obj/item/weapon/storage/belt/military/assault) - cost = 60 - containername = "assault armor crate" + crate_name = "swat crate" -/datum/supply_packs/security/armory/laserarmor +/datum/supply_pack/security/armory/laserarmor name = "Reflector Vest Crate" - contains = list(/obj/item/clothing/suit/armor/laserproof, - /obj/item/clothing/suit/armor/laserproof) // Only two vests to keep costs down for balance cost = 20 - containertype = /obj/structure/closet/crate/secure/plasma - containername = "reflector vest crate" + contains = list(/obj/item/clothing/suit/armor/laserproof, + /obj/item/clothing/suit/armor/laserproof) + crate_name = "reflector vest crate" + crate_type = /obj/structure/closet/crate/secure/plasma -/////// Weapons: Specialist - -/datum/supply_packs/security/armory/ballistic +/datum/supply_pack/security/armory/ballistic name = "Combat Shotguns Crate" + cost = 20 contains = list(/obj/item/weapon/gun/projectile/shotgun/automatic/combat, /obj/item/weapon/gun/projectile/shotgun/automatic/combat, /obj/item/weapon/gun/projectile/shotgun/automatic/combat, /obj/item/weapon/storage/belt/bandolier, /obj/item/weapon/storage/belt/bandolier, /obj/item/weapon/storage/belt/bandolier) - cost = 20 - containername = "combat shotgun crate" + crate_name = "combat shotguns crate" -/datum/supply_packs/security/armory/expenergy +/datum/supply_pack/security/armory/energy name = "Energy Guns Crate" - contains = list(/obj/item/weapon/gun/energy/gun, - /obj/item/weapon/gun/energy/gun) // Only two guns to keep costs down cost = 25 - containertype = /obj/structure/closet/crate/secure/plasma - containername = "energy gun crate" + contains = list(/obj/item/weapon/gun/energy/gun, + /obj/item/weapon/gun/energy/gun) + crate_name = "energy gun crate" + crate_type = /obj/structure/closet/crate/secure/plasma -/datum/supply_packs/security/armory/eweapons +/datum/supply_pack/security/armory/fire name = "Incendiary Weapons Crate" + cost = 15 + access = access_heads contains = list(/obj/item/weapon/flamethrower/full, /obj/item/weapon/tank/internals/plasma, /obj/item/weapon/tank/internals/plasma, @@ -348,71 +294,68 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/grenade/chem_grenade/incendiary, /obj/item/weapon/grenade/chem_grenade/incendiary, /obj/item/weapon/grenade/chem_grenade/incendiary) - cost = 15 // its a fecking flamethrower and some plasma, why the shit did this cost so much before!? - containertype = /obj/structure/closet/crate/secure/plasma - containername = "incendiary weapons crate" - access = access_heads + crate_name = "incendiary weapons crate" + crate_type = /obj/structure/closet/crate/secure/plasma -/datum/supply_packs/security/armory/wt550 +/datum/supply_pack/security/armory/wt550 name = "WT-550 Auto Rifle Crate" + cost = 35 contains = list(/obj/item/weapon/gun/projectile/automatic/wt550, /obj/item/weapon/gun/projectile/automatic/wt550) - cost = 35 - containername = "auto rifle crate" + crate_name = "auto rifle crate" -/datum/supply_packs/security/armory/wt550ammo - name = "WT-550 Rifle Ammo Crate" +/datum/supply_pack/security/armory/wt550ammo + name = "WT-550 Auto Rifle Ammo Crate" + cost = 30 contains = list(/obj/item/ammo_box/magazine/wt550m9, /obj/item/ammo_box/magazine/wt550m9, /obj/item/ammo_box/magazine/wt550m9, - /obj/item/ammo_box/magazine/wt550m9,) - cost = 30 - containername = "auto rifle ammo crate" + /obj/item/ammo_box/magazine/wt550m9) + crate_name = "auto rifle ammo crate" -/////// Implants & etc - -/datum/supply_packs/security/armory/loyalty +/datum/supply_pack/security/armory/loyalty name = "Loyalty Implants Crate" - contains = list (/obj/item/weapon/storage/lockbox/loyalty) cost = 40 - containername = "loyalty implant crate" + contains = list(/obj/item/weapon/storage/lockbox/loyalty) + crate_name = "loyalty implant crate" -/datum/supply_packs/security/armory/trackingimp +/datum/supply_pack/security/armory/trackingimp name = "Tracking Implants Crate" - contains = list (/obj/item/weapon/storage/box/trackimp) cost = 20 - containername = "tracking implant crate" + contains = list(/obj/item/weapon/storage/box/trackimp) + crate_name = "tracking implant crate" -/datum/supply_packs/security/armory/chemimp +/datum/supply_pack/security/armory/chemimp name = "Chemical Implants Crate" - contains = list (/obj/item/weapon/storage/box/chemimp) cost = 20 - containername = "chemical implant crate" + contains = list(/obj/item/weapon/storage/box/chemimp) + crate_name = "chemical implant crate" -/datum/supply_packs/security/armory/exileimp +/datum/supply_pack/security/armory/exileimp name = "Exile Implants Crate" - contains = list (/obj/item/weapon/storage/box/exileimp) cost = 30 - containername = "exile implant crate" + contains = list(/obj/item/weapon/storage/box/exileimp) + crate_name = "exile implant crate" -/datum/supply_packs/security/securitybarriers +/datum/supply_pack/security/securitybarriers name = "Security Barriers Crate" contains = list(/obj/item/weapon/grenade/barrier, /obj/item/weapon/grenade/barrier, /obj/item/weapon/grenade/barrier, /obj/item/weapon/grenade/barrier) cost = 20 - containername = "security barriers crate" + crate_name = "security barriers crate" -/datum/supply_packs/security/firingpins +/datum/supply_pack/security/firingpins name = "Standard Firing Pins Crate" + cost = 10 contains = list(/obj/item/weapon/storage/box/firingpins, /obj/item/weapon/storage/box/firingpins) - cost = 10 - containername = "firing pins crate" + crate_name = "firing pins crate" -/datum/supply_packs/security/securityclothes +/datum/supply_pack/security/securityclothes name = "Security Clothing Crate" + cost = 30 contains = list(/obj/item/clothing/under/rank/security/navyblue, /obj/item/clothing/under/rank/security/navyblue, /obj/item/clothing/suit/security/officer, @@ -425,36 +368,30 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/clothing/under/rank/head_of_security/navyblue, /obj/item/clothing/suit/security/hos, /obj/item/clothing/head/beret/sec/navyhos) - cost = 30 - containername = "security clothing crate" + crate_name = "security clothing crate" -/////// Joke Crate Inbound - -/datum/supply_packs/security/justiceinbound +/datum/supply_pack/security/justiceinbound name = "Standard Justice Enforcer Crate" + cost = 80 //justice comes at a price. An expensive, noisy price. contains = list(/obj/item/clothing/head/helmet/justice, /obj/item/clothing/mask/gas/sechailer) - cost = 80 //justice comes at a price. An expensive, noisy price. - containername = "justice enforcer crate" - + crate_name = "justice enforcer crate" ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Engineering ///////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// -/datum/supply_packs/engineering - name = "HEADER" - group = supply_engineer +/datum/supply_pack/engineering + group = "Engineering" - -/datum/supply_packs/engineering/fueltank +/datum/supply_pack/engineering/fueltank name = "Fuel Tank Crate" - contains = list(/obj/structure/reagent_dispensers/fueltank) cost = 8 - containertype = /obj/structure/closet/crate/large - containername = "fuel tank crate" + contains = list(/obj/structure/reagent_dispensers/fueltank) + crate_name = "fuel tank crate" + crate_type = /obj/structure/closet/crate/large -/datum/supply_packs/engineering/tools //the most robust crate +/datum/supply_pack/engineering/tools name = "Toolbox Crate" contains = list(/obj/item/weapon/storage/toolbox/electrical, /obj/item/weapon/storage/toolbox/electrical, @@ -463,26 +400,27 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/storage/toolbox/mechanical, /obj/item/weapon/storage/toolbox/mechanical) cost = 10 - containername = "electrical maintenance crate" + crate_name = "toolbox crate" -/datum/supply_packs/engineering/powergamermitts +/datum/supply_pack/engineering/powergamermitts name = "Insulated Gloves Crate" + cost = 20 //Made of pure-grade bullshittinium contains = list(/obj/item/clothing/gloves/color/yellow, /obj/item/clothing/gloves/color/yellow, /obj/item/clothing/gloves/color/yellow) - cost = 20 //Made of pure-grade bullshittinium - containername = "insulated gloves crate" + crate_name = "insulated gloves crate" -/datum/supply_packs/engineering/power +/datum/supply_pack/engineering/power name = "Powercell Crate" - contains = list(/obj/item/weapon/stock_parts/cell/high, //Changed to an extra high powercell because normal cells are useless + cost = 10 + contains = list(/obj/item/weapon/stock_parts/cell/high, /obj/item/weapon/stock_parts/cell/high, /obj/item/weapon/stock_parts/cell/high) - cost = 10 - containername = "electrical maintenance crate" + crate_name = "electrical maintenance crate" -/datum/supply_packs/engineering/engiequipment +/datum/supply_pack/engineering/engiequipment name = "Engineering Gear Crate" + cost = 10 contains = list(/obj/item/weapon/storage/belt/utility, /obj/item/weapon/storage/belt/utility, /obj/item/weapon/storage/belt/utility, @@ -495,11 +433,24 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/clothing/head/hardhat, /obj/item/clothing/head/hardhat, /obj/item/clothing/head/hardhat) - cost = 10 - containername = "engineering gear crate" + crate_name = "engineering gear crate" -/datum/supply_packs/engineering/solar - name = "Solar Pack Crate" +/datum/supply_pack/engineering/engine/spacesuit + name = "Space Suit Crate" + cost = 30 + access = access_eva + contains = list(/obj/item/clothing/suit/space, + /obj/item/clothing/suit/space, + /obj/item/clothing/head/helmet/space, + /obj/item/clothing/head/helmet/space, + /obj/item/clothing/mask/breath, + /obj/item/clothing/mask/breath,) + crate_name = "space suit crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/engineering/solar + name = "Solar Panel Crate" + cost = 20 contains = list(/obj/item/solar_assembly, /obj/item/solar_assembly, /obj/item/solar_assembly, @@ -520,45 +471,45 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/solar_assembly, /obj/item/solar_assembly, /obj/item/solar_assembly, - /obj/item/solar_assembly, // 21 Solar Assemblies. 1 Extra for the controller + /obj/item/solar_assembly, /obj/item/weapon/circuitboard/solar_control, /obj/item/weapon/electronics/tracker, /obj/item/weapon/paper/solar) - cost = 20 - containername = "solar pack crate" + crate_name = "solar panel crate" -/datum/supply_packs/engineering/engine +/datum/supply_pack/engineering/engine name = "Emitter Crate" + cost = 10 + access = access_ce contains = list(/obj/machinery/power/emitter, /obj/machinery/power/emitter) - cost = 10 - containertype = /obj/structure/closet/crate/secure - containername = "emitter crate" - access = access_ce + crate_name = "emitter crate" + crate_type = /obj/structure/closet/crate/secure -/datum/supply_packs/engineering/engine/field_gen +/datum/supply_pack/engineering/engine/field_gen name = "Field Generator Crate" + cost = 10 contains = list(/obj/machinery/field/generator, /obj/machinery/field/generator) - cost = 10 - containername = "field generator crate" + crate_name = "field generator crate" -/datum/supply_packs/engineering/engine/sing_gen +/datum/supply_pack/engineering/engine/sing_gen name = "Singularity Generator Crate" - contains = list(/obj/machinery/the_singularitygen) cost = 10 - containername = "singularity generator crate" + contains = list(/obj/machinery/the_singularitygen) + crate_name = "singularity generator crate" -/datum/supply_packs/engineering/engine/collector +/datum/supply_pack/engineering/engine/collector name = "Collector Crate" + cost = 10 contains = list(/obj/machinery/power/rad_collector, /obj/machinery/power/rad_collector, /obj/machinery/power/rad_collector) - cost = 10 - containername = "collector crate" + crate_name = "collector crate" -/datum/supply_packs/engineering/engine/PA +/datum/supply_pack/engineering/engine/PA name = "Particle Accelerator Crate" + cost = 25 contains = list(/obj/structure/particle_accelerator/fuel_chamber, /obj/machinery/particle_accelerator/control_box, /obj/structure/particle_accelerator/particle_emitter/center, @@ -566,34 +517,27 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/structure/particle_accelerator/particle_emitter/right, /obj/structure/particle_accelerator/power_box, /obj/structure/particle_accelerator/end_cap) - cost = 25 - containername = "particle accelerator crate" + crate_name = "particle accelerator crate" -/datum/supply_packs/engineering/engine/spacesuit - name = "Space Suit Crate" - contains = list(/obj/item/clothing/suit/space, - /obj/item/clothing/suit/space, - /obj/item/clothing/head/helmet/space, - /obj/item/clothing/head/helmet/space, - /obj/item/clothing/mask/breath, - /obj/item/clothing/mask/breath,) - cost = 30 - containertype = /obj/structure/closet/crate/secure - containername = "space suit crate" - access = access_eva +/datum/supply_pack/engineering/engine/supermatter_shard + name = "Supermatter Shard Crate" + cost = 100 + access = access_ce + contains = list(/obj/machinery/power/supermatter_shard) + crate_name = "supermatter shard crate" + crate_type = /obj/structure/closet/crate/secure ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Medical ///////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// -/datum/supply_packs/medical - name = "HEADER" - containertype = /obj/structure/closet/crate/medical - group = supply_medical +/datum/supply_pack/medical + group = "Medical" + crate_type = /obj/structure/closet/crate/medical - -/datum/supply_packs/medical/supplies +/datum/supply_pack/medical/supplies name = "Medical Supplies Crate" + cost = 20 contains = list(/obj/item/weapon/reagent_containers/glass/bottle/charcoal, /obj/item/weapon/reagent_containers/glass/bottle/charcoal, /obj/item/weapon/reagent_containers/glass/bottle/epinephrine, @@ -616,54 +560,53 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/storage/box/beakers, /obj/item/weapon/storage/box/syringes, /obj/item/weapon/storage/box/bodybags) - cost = 20 - containertype = /obj/structure/closet/crate/medical - containername = "medical supplies crate" + crate_name = "medical supplies crate" -/datum/supply_packs/medical/firstaid - name = "First Aid Kits Crate" +/datum/supply_pack/medical/firstaid + name = "First Aid Kit Crate" + cost = 10 contains = list(/obj/item/weapon/storage/firstaid/regular, /obj/item/weapon/storage/firstaid/regular, /obj/item/weapon/storage/firstaid/regular, /obj/item/weapon/storage/firstaid/regular) - cost = 10 - containername = "first aid kits crate" + crate_name = "first aid kit crate" -/datum/supply_packs/medical/firstaidbruises - name = "Bruise Treatment Kits Crate" +/datum/supply_pack/medical/firstaidbruises + name = "Bruise Treatment Kit Crate" + cost = 10 contains = list(/obj/item/weapon/storage/firstaid/brute, /obj/item/weapon/storage/firstaid/brute, /obj/item/weapon/storage/firstaid/brute) - cost = 10 - containername = "brute trauma first aid kits crate" + crate_name = "brute treatment kit crate" -/datum/supply_packs/medical/firstaidburns - name = "Burns Treatment Kits Crate" +/datum/supply_pack/medical/firstaidburns + name = "Burn Treatment Kit Crate" + cost = 10 contains = list(/obj/item/weapon/storage/firstaid/fire, /obj/item/weapon/storage/firstaid/fire, /obj/item/weapon/storage/firstaid/fire) - cost = 10 - containername = "fire first aid kits crate" + crate_name = "burn treatment kit crate" -/datum/supply_packs/medical/firstaidtoxins - name = "Toxin Treatment Kits Crate" +/datum/supply_pack/medical/firstaidtoxins + name = "Toxin Treatment Kit Crate" + cost = 10 contains = list(/obj/item/weapon/storage/firstaid/toxin, /obj/item/weapon/storage/firstaid/toxin, /obj/item/weapon/storage/firstaid/toxin) - cost = 10 - containername = "toxin first aid kits crate" + crate_name = "toxin treatment kit crate" -/datum/supply_packs/medical/firstaidoxygen - name = "Oxygen Deprivation Kits Crate" +/datum/supply_pack/medical/firstaidoxygen + name = "Oxygen Deprivation Kit Crate" + cost = 10 contains = list(/obj/item/weapon/storage/firstaid/o2, /obj/item/weapon/storage/firstaid/o2, /obj/item/weapon/storage/firstaid/o2) - cost = 10 - containername = "oxygen deprivation kits crate" + crate_name = "oxygen deprivation kit crate" - -/datum/supply_packs/medical/virus +/datum/supply_pack/medical/virus name = "Virus Crate" + cost = 25 + access = access_cmo contains = list(/obj/item/weapon/reagent_containers/glass/bottle/flu_virion, /obj/item/weapon/reagent_containers/glass/bottle/cold, /obj/item/weapon/reagent_containers/glass/bottle/epiglottis_virion, @@ -678,14 +621,12 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/storage/box/syringes, /obj/item/weapon/storage/box/beakers, /obj/item/weapon/reagent_containers/glass/bottle/mutagen) - cost = 25 - containertype = /obj/structure/closet/crate/secure/plasma - containername = "virus crate" - access = access_cmo + crate_name = "virus crate" + crate_type = /obj/structure/closet/crate/secure/plasma - -/datum/supply_packs/medical/bloodpacks +/datum/supply_pack/medical/bloodpacks name = "Blood Pack Variety Crate" + cost = 35 contains = list(/obj/item/weapon/reagent_containers/blood/empty, /obj/item/weapon/reagent_containers/blood/empty, /obj/item/weapon/reagent_containers/blood/APlus, @@ -694,29 +635,28 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/reagent_containers/blood/BMinus, /obj/item/weapon/reagent_containers/blood/OPlus, /obj/item/weapon/reagent_containers/blood/OMinus) - cost = 35 - containertype = /obj/structure/closet/crate/freezer - containername = "blood pack crate" + crate_name = "blood pack crate" + crate_type = /obj/structure/closet/crate/freezer -/datum/supply_packs/medical/iv_drip +/datum/supply_pack/medical/iv_drip name = "IV Drip Crate" - contains = list(/obj/machinery/iv_drip) cost = 30 - containertype = /obj/structure/closet/crate/secure - containername = "iv drip crate" access = access_cmo + contains = list(/obj/machinery/iv_drip) + crate_name = "iv drip crate" + crate_type = /obj/structure/closet/crate/secure ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Science ///////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// -/datum/supply_packs/science - name = "HEADER" - group = supply_science +/datum/supply_pack/science + group = "Science" - -/datum/supply_packs/science/robotics +/datum/supply_pack/science/robotics name = "Robotics Assembly Crate" + cost = 10 + access = access_robotics contains = list(/obj/item/device/assembly/prox_sensor, /obj/item/device/assembly/prox_sensor, /obj/item/device/assembly/prox_sensor, @@ -724,30 +664,32 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/storage/box/flashes, /obj/item/weapon/stock_parts/cell/high, /obj/item/weapon/stock_parts/cell/high) - cost = 10 - containertype = /obj/structure/closet/crate/secure - containername = "robotics assembly crate" - access = access_robotics + crate_name = "robotics assembly crate" + crate_type = /obj/structure/closet/crate/secure -/datum/supply_packs/science/robotics/mecha_ripley +/datum/supply_pack/science/robotics/mecha_ripley name = "Circuit Crate (Ripley APLU)" - contains = list(/obj/item/weapon/book/manual/ripley_build_and_repair, - /obj/item/weapon/circuitboard/mecha/ripley/main, //TEMPORARY due to lack of circuitboard printer - /obj/item/weapon/circuitboard/mecha/ripley/peripherals) //TEMPORARY due to lack of circuitboard printer cost = 30 - containertype = /obj/structure/closet/crate/secure - containername = "\improper APLU Ripley circuit crate" + access = access_robotics + contains = list(/obj/item/weapon/book/manual/ripley_build_and_repair, + /obj/item/weapon/circuitboard/mecha/ripley/main, + /obj/item/weapon/circuitboard/mecha/ripley/peripherals) + crate_name = "\improper APLU Ripley circuit crate" + crate_type = /obj/structure/closet/crate/secure -/datum/supply_packs/science/robotics/mecha_odysseus +/datum/supply_pack/science/robotics/mecha_odysseus name = "Circuit Crate (Odysseus)" - contains = list(/obj/item/weapon/circuitboard/mecha/odysseus/peripherals, //TEMPORARY due to lack of circuitboard printer - /obj/item/weapon/circuitboard/mecha/odysseus/main) //TEMPORARY due to lack of circuitboard printer cost = 25 - containertype = /obj/structure/closet/crate/secure - containername = "\improper Odysseus circuit crate" + access = access_robotics + contains = list(/obj/item/weapon/circuitboard/mecha/odysseus/peripherals, + /obj/item/weapon/circuitboard/mecha/odysseus/main) + crate_name = "\improper Odysseus circuit crate" + crate_type = /obj/structure/closet/crate/secure -/datum/supply_packs/science/plasma +/datum/supply_pack/science/plasma name = "Plasma Assembly Crate" + cost = 10 + access = access_tox_storage contains = list(/obj/item/weapon/tank/internals/plasma, /obj/item/weapon/tank/internals/plasma, /obj/item/weapon/tank/internals/plasma, @@ -760,45 +702,41 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/device/assembly/timer, /obj/item/device/assembly/timer, /obj/item/device/assembly/timer) - cost = 10 - containertype = /obj/structure/closet/crate/secure/plasma - containername = "plasma assembly crate" - access = access_tox_storage - group = supply_science + crate_name = "plasma assembly crate" + crate_type = /obj/structure/closet/crate/secure/plasma -/datum/supply_packs/science/shieldwalls +/datum/supply_pack/science/shieldwalls name = "Shield Generators" + cost = 20 + access = access_teleporter contains = list(/obj/machinery/shieldwallgen, /obj/machinery/shieldwallgen, /obj/machinery/shieldwallgen, /obj/machinery/shieldwallgen) - cost = 20 - containertype = /obj/structure/closet/crate/secure - containername = "shield generators crate" - access = access_teleporter + crate_name = "shield generators crate" + crate_type = /obj/structure/closet/crate/secure -/datum/supply_packs/science/transfer_valves - name = "Tank Transfer Valves" +/datum/supply_pack/science/transfer_valves + name = "Tank Transfer Valves Crate" + cost = 60 + access = access_rd contains = list(/obj/item/device/transfer_valve, /obj/item/device/transfer_valve) - cost = 60 - containertype = /obj/structure/closet/crate/secure - containername = "transfer valves crate" - access = access_rd + crate_name = "tank transfer valves crate crate" + crate_type = /obj/structure/closet/crate/secure ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Organic ///////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// -/datum/supply_packs/organic - name = "HEADER" - group = supply_organic - containertype = /obj/structure/closet/crate/freezer +/datum/supply_pack/organic + group = "Food & Livestock" + crate_type = /obj/structure/closet/crate/freezer - -/datum/supply_packs/organic/food +/datum/supply_pack/organic/food name = "Food Crate" + cost = 10 contains = list(/obj/item/weapon/reagent_containers/food/condiment/flour, /obj/item/weapon/reagent_containers/food/condiment/rice, /obj/item/weapon/reagent_containers/food/condiment/milk, @@ -812,26 +750,26 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/reagent_containers/food/snacks/grown/banana, /obj/item/weapon/reagent_containers/food/snacks/grown/banana, /obj/item/weapon/reagent_containers/food/snacks/grown/banana) - cost = 10 - containername = "food crate" + crate_name = "food crate" -/datum/supply_packs/organic/pizza +/datum/supply_pack/organic/pizza name = "Pizza Crate" + cost = 60 // Best prices this side of the galaxy. contains = list(/obj/item/pizzabox/margherita, /obj/item/pizzabox/mushroom, /obj/item/pizzabox/meat, /obj/item/pizzabox/vegetable) - cost = 60 - containername = "Pizza crate" + crate_name = "pizza crate" -/datum/supply_packs/organic/monkey +/datum/supply_pack/organic/monkey name = "Monkey Crate" - contains = list (/obj/item/weapon/storage/box/monkeycubes) cost = 20 - containername = "monkey crate" + contains = list (/obj/item/weapon/storage/box/monkeycubes) + crate_name = "monkey crate" -/datum/supply_packs/organic/party - name = "Party equipment" +/datum/supply_pack/organic/party + name = "Party Equipment" + cost = 20 contains = list(/obj/item/weapon/storage/box/drinkingglasses, /obj/item/weapon/reagent_containers/food/drinks/shaker, /obj/item/weapon/reagent_containers/food/drinks/bottle/patron, @@ -842,70 +780,87 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/reagent_containers/food/drinks/beer, /obj/item/weapon/reagent_containers/food/drinks/beer, /obj/item/weapon/reagent_containers/food/drinks/beer) - cost = 20 - containername = "party equipment" + crate_name = "party equipment" -//////// livestock -/datum/supply_packs/organic/cow +/datum/supply_pack/organic/critter + crate_type = /obj/structure/closet/crate/critter + +/datum/supply_pack/organic/critter/cow name = "Cow Crate" - contains = list(/mob/living/simple_animal/cow) cost = 30 - containertype = /obj/structure/closet/crate/critter - containername = "cow crate" + contains = list(/mob/living/simple_animal/cow) + crate_name = "cow crate" -/datum/supply_packs/organic/goat +/datum/supply_pack/organic/critter/goat name = "Goat Crate" - contains = list(/mob/living/simple_animal/hostile/retaliate/goat) cost = 25 - containertype = /obj/structure/closet/crate/critter - containername = "goat crate" + contains = list(/mob/living/simple_animal/hostile/retaliate/goat) + crate_name = "goat crate" -/datum/supply_packs/organic/chicken +/datum/supply_pack/organic/critter/chick name = "Chicken Crate" cost = 20 - containertype = /obj/structure/closet/crate/critter/chick - containername = "chicken crate" + contains = list( /mob/living/simple_animal/chick) + crate_name = "chicken crate" -/datum/supply_packs/organic/corgi +/datum/supply_pack/organic/critter/corgi name = "Corgi Crate" cost = 50 - contains = list(/obj/item/clothing/tie/petcollar) - containertype = /obj/structure/closet/crate/critter/corgi - containername = "corgi crate" + contains = list(/mob/living/simple_animal/pet/dog/corgi, + /obj/item/clothing/tie/petcollar) + crate_name = "corgi crate" -/datum/supply_packs/organic/cat +/datum/supply_pack/organic/critter/corgi/generate(turf/T) + . = ..() + if(prob(50)) + var/mob/living/simple_animal/pet/dog/corgi/D = locate() in . + qdel(D) + new /mob/living/simple_animal/pet/dog/corgi/Lisa(.) + +/datum/supply_pack/organic/critter/cat name = "Cat Crate" cost = 50 //Cats are worth as much as corgis. - contains = list(/obj/item/clothing/tie/petcollar, + contains = list(/mob/living/simple_animal/pet/cat, + /obj/item/clothing/tie/petcollar, /obj/item/toy/cattoy) - containertype = /obj/structure/closet/crate/critter/cat - containername = "cat crate" + crate_name = "cat crate" -/datum/supply_packs/organic/pug +/datum/supply_pack/organic/critter/cat/generate(turf/T) + . = ..() + if(prob(50)) + var/mob/living/simple_animal/pet/cat/C = locate() in . + qdel(C) + new /mob/living/simple_animal/pet/cat/Proc(.) + +/datum/supply_pack/organic/critter/pug name = "Pug Crate" cost = 50 contains = list(/mob/living/simple_animal/pet/dog/pug, /obj/item/clothing/tie/petcollar) - containertype = /obj/structure/closet/crate/critter - containername = "pug crate" + crate_name = "pug crate" -/datum/supply_packs/organic/fox +/datum/supply_pack/organic/critter/fox name = "Fox Crate" - cost = 55 //Foxes are cool. + cost = 50 contains = list(/mob/living/simple_animal/pet/fox, /obj/item/clothing/tie/petcollar) - containertype = /obj/structure/closet/crate/critter - containername = "fox crate" + crate_name = "fox crate" -/datum/supply_packs/organic/butterfly +/datum/supply_pack/organic/critter/butterfly name = "Butterflies Crate" + contraband = TRUE cost = 50 - containertype = /obj/structure/closet/crate/critter/butterfly - containername = "butterflies crate" - contraband = 1 + contains = list(/mob/living/simple_animal/butterfly) + crate_name = "butterflies crate" -/datum/supply_packs/organic/hydroponics - name = "Hydroponics Supply Crate" +/datum/supply_pack/organic/critter/butterfly/generate(turf/T) + . = ..() + for(var/i in 1 to 49) + new /mob/living/simple_animal/butterfly(.) + +/datum/supply_pack/organic/hydroponics + name = "Hydroponics Crate" + cost = 15 contains = list(/obj/item/weapon/reagent_containers/spray/plantbgone, /obj/item/weapon/reagent_containers/spray/plantbgone, /obj/item/weapon/reagent_containers/glass/bottle/ammonia, @@ -915,20 +870,20 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/device/analyzer/plant_analyzer, /obj/item/clothing/gloves/botanic_leather, /obj/item/clothing/suit/apron) - cost = 15 - containertype = /obj/structure/closet/crate/hydroponics - containername = "hydroponics crate" + crate_name = "hydroponics crate" + crate_type = /obj/structure/closet/crate/hydroponics -/datum/supply_packs/misc/hydroponics/hydrotank - name = "Hydroponics Watertank Backpack Crate" - contains = list(/obj/item/weapon/watertank) +/datum/supply_pack/misc/hydroponics/hydrotank + name = "Hydroponics Backpack Crate" cost = 10 - containertype = /obj/structure/closet/crate/secure - containername = "hydroponics watertank crate" access = access_hydroponics + contains = list(/obj/item/weapon/watertank) + crate_name = "hydroponics backpack crate" + crate_type = /obj/structure/closet/crate/secure -/datum/supply_packs/organic/hydroponics/seeds +/datum/supply_pack/organic/hydroponics/seeds name = "Seeds Crate" + cost = 10 contains = list(/obj/item/seeds/chiliseed, /obj/item/seeds/berryseed, /obj/item/seeds/cornseed, @@ -942,11 +897,11 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/seeds/chantermycelium, /obj/item/seeds/potatoseed, /obj/item/seeds/sugarcaneseed) - cost = 10 - containername = "seeds crate" + crate_name = "seeds crate" -/datum/supply_packs/organic/hydroponics/exoticseeds +/datum/supply_pack/organic/hydroponics/exoticseeds name = "Exotic Seeds Crate" + cost = 15 contains = list(/obj/item/seeds/nettleseed, /obj/item/seeds/replicapod, /obj/item/seeds/replicapod, @@ -957,113 +912,109 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/seeds/reishimycelium, /obj/item/seeds/bananaseed, /obj/item/seeds/eggyseed) - cost = 15 - containername = "exotic seeds crate" + crate_name = "exotic seeds crate" -/datum/supply_packs/organic/vending +/datum/supply_pack/organic/vending name = "Bartending Supply Crate" + cost = 20 contains = list(/obj/item/weapon/vending_refill/boozeomat, /obj/item/weapon/vending_refill/boozeomat, /obj/item/weapon/vending_refill/boozeomat, /obj/item/weapon/vending_refill/coffee, /obj/item/weapon/vending_refill/coffee, /obj/item/weapon/vending_refill/coffee) - cost = 20 - containername = "bartending supply crate" + crate_name = "bartending supply crate" -/datum/supply_packs/organic/vending/snack +/datum/supply_pack/organic/vending/snack name = "Snack Supply Crate" + cost = 15 contains = list(/obj/item/weapon/vending_refill/snack, /obj/item/weapon/vending_refill/snack, /obj/item/weapon/vending_refill/snack) - cost = 15 - containername = "snacks supply crate" + crate_name = "snacks supply crate" -/datum/supply_packs/organic/vending/cola +/datum/supply_pack/organic/vending/cola name = "Softdrinks Supply Crate" + cost = 15 contains = list(/obj/item/weapon/vending_refill/cola, /obj/item/weapon/vending_refill/cola, /obj/item/weapon/vending_refill/cola) - cost = 15 - containername = "softdrinks supply crate" + crate_name = "softdrinks supply crate" -/datum/supply_packs/organic/vending/cigarette +/datum/supply_pack/organic/vending/cigarette name = "Cigarette Supply Crate" + cost = 15 contains = list(/obj/item/weapon/vending_refill/cigarette, /obj/item/weapon/vending_refill/cigarette, /obj/item/weapon/vending_refill/cigarette) - cost = 15 - containername = "cigarette supply crate" + crate_name = "cigarette supply crate" ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Materials /////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// -/datum/supply_packs/materials - name = "HEADER" - group = supply_materials +/datum/supply_pack/materials + group = "Raw Materials" - -/datum/supply_packs/materials/metal50 +/datum/supply_pack/materials/metal50 name = "50 Metal Sheets" + cost = 10 contains = list(/obj/item/stack/sheet/metal) amount = 50 - cost = 10 - containername = "metal sheets crate" + crate_name = "metal sheets crate" -/datum/supply_packs/materials/plasteel20 +/datum/supply_pack/materials/plasteel20 name = "20 Plasteel Sheets" + cost = 30 contains = list(/obj/item/stack/sheet/plasteel) amount = 20 - cost = 30 - containername = "plasteel sheets crate" + crate_name = "plasteel sheets crate" -/datum/supply_packs/materials/plasteel50 +/datum/supply_pack/materials/plasteel50 name = "50 Plasteel Sheets" + cost = 50 contains = list(/obj/item/stack/sheet/plasteel) amount = 50 - cost = 50 - containername = "plasteel sheets crate" + crate_name = "plasteel sheets crate" -/datum/supply_packs/materials/glass50 +/datum/supply_pack/materials/glass50 name = "50 Glass Sheets" + cost = 10 contains = list(/obj/item/stack/sheet/glass) amount = 50 - cost = 10 - containername = "glass sheets crate" + crate_name = "glass sheets crate" -/datum/supply_packs/materials/cardboard50 +/datum/supply_pack/materials/cardboard50 name = "50 Cardboard Sheets" + cost = 10 contains = list(/obj/item/stack/sheet/cardboard) amount = 50 - cost = 10 - containername = "cardboard sheets crate" + crate_name = "cardboard sheets crate" -/datum/supply_packs/materials/sandstone30 +/datum/supply_pack/materials/sandstone30 name = "30 Sandstone Blocks" + cost = 20 contains = list(/obj/item/stack/sheet/mineral/sandstone) amount = 30 - cost = 20 - containername = "sandstone blocks crate" - + crate_name = "sandstone blocks crate" ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Miscellaneous /////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// -/datum/supply_packs/misc - name = "HEADER" - group = supply_misc +/datum/supply_pack/misc + group = "Miscellaneous Supplies" -/datum/supply_packs/misc/mule +/datum/supply_pack/misc/mule name = "MULEbot Crate" - contains = list(/mob/living/simple_animal/bot/mulebot) cost = 20 - containertype = /obj/structure/closet/crate/large - containername = "\improper MULEbot Crate" + contains = list(/mob/living/simple_animal/bot/mulebot) + crate_name = "\improper MULEbot Crate" + crate_type = /obj/structure/closet/crate/large -/datum/supply_packs/misc/conveyor +/datum/supply_pack/misc/conveyor name = "Conveyor Assembly Crate" + cost = 15 contains = list(/obj/item/conveyor_construct, /obj/item/conveyor_construct, /obj/item/conveyor_construct, @@ -1072,18 +1023,18 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/conveyor_construct, /obj/item/conveyor_switch_construct, /obj/item/weapon/paper/conveyor) - cost = 15 - containername = "conveyor assembly crate" + crate_name = "conveyor assembly crate" -/datum/supply_packs/misc/watertank +/datum/supply_pack/misc/watertank name = "Water Tank Crate" - contains = list(/obj/structure/reagent_dispensers/watertank) cost = 8 - containertype = /obj/structure/closet/crate/large - containername = "water tank crate" + contains = list(/obj/structure/reagent_dispensers/watertank) + crate_name = "water tank crate" + crate_type = /obj/structure/closet/crate/large -/datum/supply_packs/misc/lasertag +/datum/supply_pack/misc/lasertag name = "Laser Tag Crate" + cost = 15 contains = list(/obj/item/weapon/gun/energy/laser/redtag, /obj/item/weapon/gun/energy/laser/redtag, /obj/item/weapon/gun/energy/laser/redtag, @@ -1098,35 +1049,32 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/clothing/suit/bluetag, /obj/item/clothing/head/helmet/redtaghelm, /obj/item/clothing/head/helmet/bluetaghelm) - cost = 15 - containername = "laser tag crate" + crate_name = "laser tag crate" -/datum/supply_packs/misc/religious_supplies +/datum/supply_pack/misc/religious_supplies name = "Religious Supplies Crate" + cost = 40 // it costs so much because the Space Church is ran by Space Jews contains = list(/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/book/bible/booze, /obj/item/weapon/storage/book/bible/booze, /obj/item/clothing/suit/hooded/chaplain_hoodie, /obj/item/clothing/suit/hooded/chaplain_hoodie) - cost = 40 // it costs so much because the Space Church is ran by Space Jews - containername = "religious supplies crate" + crate_name = "religious supplies crate" -/datum/supply_packs/misc/posters +/datum/supply_pack/misc/posters name = "Corporate Posters Crate" + cost = 8 contains = list(/obj/item/weapon/poster/legit, /obj/item/weapon/poster/legit, /obj/item/weapon/poster/legit, /obj/item/weapon/poster/legit, /obj/item/weapon/poster/legit) - cost = 8 - containername = "Corporate Posters Crate" + crate_name = "Corporate Posters Crate" - -///////////// Paper Work - -/datum/supply_packs/misc/paper +/datum/supply_pack/misc/paper name = "Bureaucracy Crate" + cost = 15 contains = list(/obj/structure/filingcabinet/chestdrawer/wheeled, /obj/item/device/camera_film, /obj/item/weapon/hand_labeler, @@ -1143,25 +1091,22 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/folder/yellow, /obj/item/weapon/clipboard, /obj/item/weapon/clipboard) - cost = 15 - containername = "bureaucracy crate" + crate_name = "bureaucracy crate" -/datum/supply_packs/misc/toner - name = "Toner Cartridges Crate" +/datum/supply_pack/misc/toner + name = "Toner Crate" + cost = 10 contains = list(/obj/item/device/toner, /obj/item/device/toner, /obj/item/device/toner, /obj/item/device/toner, /obj/item/device/toner, /obj/item/device/toner) - cost = 10 - containername = "toner cartridges crate" + crate_name = "toner crate" - -///////////// Janitor Supplies - -/datum/supply_packs/misc/janitor +/datum/supply_pack/misc/janitor name = "Janitorial Supplies Crate" + cost = 10 contains = list(/obj/item/weapon/reagent_containers/glass/bucket, /obj/item/weapon/reagent_containers/glass/bucket, /obj/item/weapon/reagent_containers/glass/bucket, @@ -1175,55 +1120,54 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/grenade/chem_grenade/cleaner, /obj/item/weapon/grenade/chem_grenade/cleaner, /obj/item/weapon/grenade/chem_grenade/cleaner) - cost = 10 - containername = "janitorial supplies crate" + crate_name = "janitorial supplies crate" -/datum/supply_packs/misc/janitor/janicart +/datum/supply_pack/misc/janitor/janicart name = "Janitorial Cart and Galoshes Crate" + cost = 20 contains = list(/obj/structure/janitorialcart, /obj/item/clothing/shoes/galoshes) - cost = 10 - containertype = /obj/structure/closet/crate/large - containername = "janitorial cart crate" + crate_name = "janitorial cart crate" + crate_type = /obj/structure/closet/crate/large -/datum/supply_packs/misc/janitor/janitank - name = "Janitor Watertank Backpack" - contains = list(/obj/item/weapon/watertank/janitor) +/datum/supply_pack/misc/janitor/janitank + name = "Janitor Backpack Crate" cost = 10 - containertype = /obj/structure/closet/crate/secure - containername = "janitor watertank crate" access = access_janitor + contains = list(/obj/item/weapon/watertank/janitor) + crate_name = "janitor backpack crate" + crate_type = /obj/structure/closet/crate/secure -/datum/supply_packs/misc/janitor/lightbulbs +/datum/supply_pack/misc/janitor/lightbulbs name = "Replacement Lights" + cost = 10 contains = list(/obj/item/weapon/storage/box/lights/mixed, /obj/item/weapon/storage/box/lights/mixed, /obj/item/weapon/storage/box/lights/mixed) - cost = 10 - containername = "replacement lights" + crate_name = "replacement lights" -/datum/supply_packs/misc/noslipfloor +/datum/supply_pack/misc/noslipfloor name = "High-traction Floor Tiles" + cost = 20 contains = list(/obj/item/stack/tile/noslip) amount = 20 - cost = 20 - containername = "high-traction floor tiles" + crate_name = "high-traction floor tiles" -/datum/supply_packs/misc/plasmaman - name = "Plasma-man Supply Kit" +/datum/supply_pack/misc/plasmaman + name = "Plasmaman Supply Kit" + cost = 20 contains = list(/obj/item/clothing/under/plasmaman, /obj/item/clothing/under/plasmaman, /obj/item/weapon/tank/internals/plasmaman/belt/full, /obj/item/weapon/tank/internals/plasmaman/belt/full, /obj/item/clothing/head/helmet/space/plasmaman, /obj/item/clothing/head/helmet/space/plasmaman) - cost = 20 - containername = "plasma-man supply kit" + crate_name = "plasmaman supply kit" -///////////// Costumes - -/datum/supply_packs/misc/costume +/datum/supply_pack/misc/costume name = "Standard Costume Crate" + cost = 10 + access = access_theatre contains = list(/obj/item/weapon/storage/backpack/clown, /obj/item/clothing/shoes/clown_shoes, /obj/item/clothing/mask/gas/clown_hat, @@ -1237,23 +1181,33 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/clothing/suit/suspenders, /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing, /obj/item/weapon/storage/backpack/mime) - cost = 10 - containertype = /obj/structure/closet/crate/secure - containername = "standard costumes" - access = access_theatre + crate_name = "standard costume crate" + crate_type = /obj/structure/closet/crate/secure -/datum/supply_packs/misc/wizard +/datum/supply_pack/misc/wizard name = "Wizard Costume Crate" + cost = 20 contains = list(/obj/item/weapon/staff, /obj/item/clothing/suit/wizrobe/fake, /obj/item/clothing/shoes/sandal, /obj/item/clothing/head/wizard/fake) - cost = 20 - containername = "wizard costume crate" + crate_name = "wizard costume crate" -/datum/supply_packs/misc/randomised - name = "Collectable hat crate!" - var/num_contained = 3 //number of items picked to be contained in a randomised crate +/datum/supply_pack/misc/random + var/random_count = 1 + +/datum/supply_pack/misc/random/generate(turf/T) + . = ..() + + var/obj/structure/closet/crate/C = . + while(C.contents.len > random_count) + var/atom/A = pick(C.contents) + qdel(A) + +/datum/supply_pack/misc/random/hats + name = "Collectable Hats Crate!" + cost = 200 + random_count = 3 contains = list(/obj/item/clothing/head/collectable/chef, /obj/item/clothing/head/collectable/paper, /obj/item/clothing/head/collectable/tophat, @@ -1274,26 +1228,22 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/clothing/head/collectable/slime, /obj/item/clothing/head/collectable/xenom, /obj/item/clothing/head/collectable/petehat) - cost = 200 - containername = "collectable hats crate! Brought to you by Bass.inc!" + crate_name = "collectable hats crate" -/datum/supply_packs/misc/randomised/New() - manifest += "Contains any [num_contained] of:" - ..() - -/datum/supply_packs/misc/randomised/contraband +/datum/supply_pack/misc/random/contraband name = "Contraband Crate" - num_contained = 5 + contraband = TRUE + cost = 30 + random_count = 5 contains = list(/obj/item/weapon/poster/contraband, /obj/item/weapon/storage/fancy/cigarettes/dromedaryco, /obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims) - cost = 30 - containername = "crate" //let's keep it subtle, eh? - contraband = 1 + crate_name = "crate" -/datum/supply_packs/misc/randomised/toys +/datum/supply_pack/misc/random/toys name = "Toy Crate" - num_contained = 5 + cost = 50 // or play the arcade machines ya lazy bum + random_count = 5 contains = list(/obj/item/toy/spinningtoy, /obj/item/toy/sword, /obj/item/toy/foamblade, @@ -1307,19 +1257,18 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/stack/tile/fakespace, /obj/item/weapon/gun/projectile/shotgun/toy/crossbow, /obj/item/toy/redbutton) + crate_name = "toy crate" - cost = 50 // or play the arcade machines ya lazy bum - containername = "toy crate" - -/datum/supply_packs/misc/autodrobe +/datum/supply_pack/misc/autodrobe name = "Autodrobe Supply Crate" + cost = 15 contains = list(/obj/item/weapon/vending_refill/autodrobe, /obj/item/weapon/vending_refill/autodrobe) - cost = 15 - containername = "autodrobe supply crate" + crate_name = "autodrobe supply crate" -/datum/supply_packs/misc/formalwear //This is a very classy crate. - name = "Formal-wear Crate" +/datum/supply_pack/misc/formalwear + name = "Formalwear Crate" + cost = 30 //Lots of very expensive items. You gotta pay up to look good! contains = list(/obj/item/clothing/under/blacktango, /obj/item/clothing/under/assistantformal, /obj/item/clothing/under/assistantformal, @@ -1347,11 +1296,11 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/clothing/under/suit_jacket/checkered, /obj/item/clothing/under/suit_jacket/tan, /obj/item/weapon/lipstick/random) - cost = 30 //Lots of very expensive items. You gotta pay up to look good! - containername = "formal-wear crate" + crate_name = "formalwear crate" -/datum/supply_packs/misc/foamforce +/datum/supply_pack/misc/foamforce name = "Foam Force Crate" + cost = 10 contains = list(/obj/item/weapon/gun/projectile/shotgun/toy, /obj/item/weapon/gun/projectile/shotgun/toy, /obj/item/weapon/gun/projectile/shotgun/toy, @@ -1360,16 +1309,14 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/gun/projectile/shotgun/toy, /obj/item/weapon/gun/projectile/shotgun/toy, /obj/item/weapon/gun/projectile/shotgun/toy) - cost = 10 - containername = "foam force crate" + crate_name = "foam force crate" -/datum/supply_packs/misc/foamforce/bonus +/datum/supply_pack/misc/foamforce/bonus name = "Foam Force Pistols Crate" + contraband = TRUE + cost = 40 contains = list(/obj/item/weapon/gun/projectile/automatic/toy/pistol, /obj/item/weapon/gun/projectile/automatic/toy/pistol, /obj/item/ammo_box/magazine/toy/pistol, /obj/item/ammo_box/magazine/toy/pistol) - cost = 40 - containername = "foam force pistols crate" - contraband = 1 - + crate_name = "foam force pistols crate" diff --git a/code/game/asteroid.dm b/code/game/asteroid.dm index c5452d77a36..5f3e9b7bf41 100644 --- a/code/game/asteroid.dm +++ b/code/game/asteroid.dm @@ -64,7 +64,7 @@ var/global/max_secret_rooms = 6 if("organharvest") walltypes = list(/turf/simulated/wall/r_wall=2,/turf/simulated/wall=2,/turf/simulated/mineral/random/high_chance=1) floortypes = list(/turf/simulated/floor/plasteel,/turf/simulated/floor/engine) - treasureitems = list(/mob/living/simple_animal/bot/medbot/mysterious=1, /obj/item/weapon/circular_saw=1, /obj/structure/closet/crate/critter/cat=2) + treasureitems = list(/mob/living/simple_animal/bot/medbot/mysterious=1, /obj/item/weapon/circular_saw=1, /obj/structure/closet/crate/critter=2) fluffitems = list(/obj/effect/decal/cleanable/blood=5,/obj/item/organ/internal/appendix=2,/obj/structure/closet/crate/freezer=2, /obj/structure/table/optable=1,/obj/item/weapon/scalpel=1,/obj/item/weapon/storage/firstaid/regular=3, /obj/item/weapon/tank/internals/anesthetic=1, /obj/item/weapon/surgical_drapes=2, /obj/item/device/mass_spectrometer/adv=1,/obj/item/clothing/glasses/hud/health=1) diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index e229630bb5c..575cb81c0b2 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -501,13 +501,13 @@ Code: menu += "
    Current approved orders:
      " for(var/S in SSshuttle.shoppinglist) var/datum/supply_order/SO = S - menu += "
    1. #[SO.ordernum] - [SO.object.name] approved by [SO.orderedby] [SO.comment ? "([SO.comment])":""]
    2. " + menu += "
    3. #[SO.id] - [SO.pack.name] approved by [SO.orderer] [SO.reason ? "([SO.reason])":""]
    4. " menu += "
    " menu += "Current requests:
      " for(var/S in SSshuttle.requestlist) var/datum/supply_order/SO = S - menu += "
    1. #[SO.ordernum] - [SO.object.name] requested by [SO.orderedby]
    2. " + menu += "
    3. #[SO.id] - [SO.pack.name] requested by [SO.orderer]
    4. " menu += "
    Upgrade NOW to Space Parts & Space Vendors PLUS for full remote order control and inventory management." if (49) //janitorial locator diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 10596418b04..4d32a8bc824 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -127,10 +127,7 @@ mobs_stored++ if(mobs_stored >= mob_storage_capacity) return 0 -<<<<<<< ede93b63a61fbdfe3be0fe9569aa29b152e767bc L.reset_perspective(src) -======= ->>>>>>> Fix up crates L.stop_pulling() else if(!istype(AM, /obj/item) && !istype(AM, /obj/effect/dummy/chameleon)) return 0 @@ -346,18 +343,13 @@ else togglelock(user) -/obj/structure/closet/proc/togglelock(mob/user) +/obj/structure/closet/proc/togglelock(mob/living/user) if(secure && !broken) if(allowed(user)) locked = !locked add_fingerprint(user) -<<<<<<< ede93b63a61fbdfe3be0fe9569aa29b152e767bc - for(var/mob/O in viewers(user, 3)) - O.show_message("[user] has [locked ? null : "un"]locked the locker.", 1) -======= - visible_message("[user] [locked ? null : "un"]locks [src].", + user.visible_message("[user] [locked ? null : "un"]locks [src].", "You [locked ? null : "un"]locks [src].") ->>>>>>> Fix up crates update_icon() else user << "Access Denied" @@ -374,11 +366,10 @@ locked = 0 update_icon() -<<<<<<< ede93b63a61fbdfe3be0fe9569aa29b152e767bc /obj/structure/closet/get_remote_view_fullscreens(mob/user) if(!(user.sight & (SEEOBJS|SEEMOBS))) user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1) -======= + /obj/structure/closet/emp_act(severity) for(var/obj/O in src) O.emp_act(severity) @@ -393,4 +384,3 @@ req_access = list() req_access += pick(get_all_accesses()) ..() ->>>>>>> Fix up crates diff --git a/code/game/objects/structures/crates_lockers/crates/critter.dm b/code/game/objects/structures/crates_lockers/crates/critter.dm index ffe49f08023..d7df978ecae 100644 --- a/code/game/objects/structures/crates_lockers/crates/critter.dm +++ b/code/game/objects/structures/crates_lockers/crates/critter.dm @@ -19,27 +19,3 @@ user << "It won't budge!" else ..() - -/obj/structure/closet/crate/critter/corgi/New() - ..() - if(prob(50)) - new /mob/living/simple_animal/pet/dog/corgi/Lisa(src) - else - new /mob/living/simple_animal/pet/dog/corgi(src) - -/obj/structure/closet/crate/critter/cat/New() - ..() - if(prob(50)) - new /mob/living/simple_animal/pet/cat/Proc(src) - else - new /mob/living/simple_animal/pet/cat(src) - -/obj/structure/closet/crate/critter/chick/New() - ..() - for(var/i in 1 to rand(1, 3)) - new /mob/living/simple_animal/chick(src) - -/obj/structure/closet/crate/critter/butterfly/New() - ..() - for(var/i in 1 to 50) - new /mob/living/simple_animal/butterfly(src) \ No newline at end of file diff --git a/code/modules/cargo/console.dm b/code/modules/cargo/console.dm index 65bc46f890e..6a63f6ffffb 100644 --- a/code/modules/cargo/console.dm +++ b/code/modules/cargo/console.dm @@ -18,9 +18,10 @@ var/obj/item/weapon/circuitboard/cargo/board = circuit contraband = board.contraband -/obj/machinery/computer/cargo/emag_act(mob/user) +/obj/machinery/computer/cargo/emag_act(mob/living/user) if(!emagged) - user << "Special supplies unlocked." + user.visible_message("[user] swipes a suspicious card through [src]!", + "You emag [src], unlocking special supplies.") emagged = TRUE /obj/machinery/computer/cargo/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \ @@ -41,40 +42,38 @@ data["loan_dispatched"] = SSshuttle.shuttle_loan && SSshuttle.shuttle_loan.dispatched data["message"] = SSshuttle.centcom_message || "Remember to stamp and send back the supply manifests." - var/list/supplies = list() - supplies.len = all_supply_groups.len - for(var/group in all_supply_groups) - supplies[group] = list( - "name" = get_supply_group_name(group), - "packs" = list() - ) + data["supplies"] = list() for(var/pack in SSshuttle.supply_packs) - var/datum/supply_packs/P = SSshuttle.supply_packs[pack] + var/datum/supply_pack/P = SSshuttle.supply_packs[pack] + if(!data["supplies"][P.group]) + data["supplies"][P.group] = list( + "name" = P.group, + "packs" = list() + ) if((P.hidden && !emagged) || (P.contraband && !contraband)) continue - supplies[P.group]["packs"] += list(list( + data["supplies"][P.group]["packs"] += list(list( "name" = P.name, "cost" = P.cost, "id" = pack )) - data["supplies"] = supplies data["cart"] = list() for(var/datum/supply_order/SO in SSshuttle.shoppinglist) data["cart"] += list(list( - "object" = SO.object.name, - "cost" = SO.object.cost, - "id" = SO.ordernum + "object" = SO.pack.name, + "cost" = SO.pack.cost, + "id" = SO.id )) data["requests"] = list() for(var/datum/supply_order/SO in SSshuttle.requestlist) data["requests"] += list(list( - "object" = SO.object.name, - "cost" = SO.object.cost, - "orderedby" = SO.orderedby, - "comment" = SO.comment, - "id" = SO.ordernum + "object" = SO.pack.name, + "cost" = SO.pack.cost, + "orderer" = SO.orderer, + "reason" = SO.reason, + "id" = SO.id )) return data @@ -127,7 +126,7 @@ return var/turf/T = get_turf(src) - var/datum/supply_order/SO = SSshuttle.generateSupplyOrder(id, name, rank, reason) + var/datum/supply_order/SO = new(id, name, rank, reason) SO.generateRequisition(T) if(requestonly) SSshuttle.requestlist += SO @@ -137,7 +136,7 @@ if("remove") var/id = text2num(params["id"]) for(var/datum/supply_order/SO in SSshuttle.shoppinglist) - if(SO.ordernum == id) + if(SO.id == id) SSshuttle.shoppinglist -= SO . = TRUE break @@ -147,7 +146,7 @@ if("approve") var/id = text2num(params["id"]) for(var/datum/supply_order/SO in SSshuttle.requestlist) - if(SO.ordernum == id) + if(SO.id == id) SSshuttle.requestlist -= SO SSshuttle.shoppinglist += SO . = TRUE @@ -155,7 +154,7 @@ if("deny") var/id = text2num(params["id"]) for(var/datum/supply_order/SO in SSshuttle.requestlist) - if(SO.ordernum == id) + if(SO.id == id) SSshuttle.requestlist -= SO . = TRUE break diff --git a/code/modules/cargo/order.dm b/code/modules/cargo/order.dm index 96bf68bcc5c..598f85a2afe 100644 --- a/code/modules/cargo/order.dm +++ b/code/modules/cargo/order.dm @@ -1,115 +1,89 @@ /obj/item/weapon/paper/manifest - name = "supply manifest" - var/erroneous = 0 - var/points = 0 - var/ordernumber = 0 + var/order_cost = 0 + var/order_id = 0 + var/errors = 0 + +/obj/item/weapon/paper/manifest/New(atom/A, id, cost) + ..() + order_id = id + order_cost = cost + + if(prob(MANIFEST_ERROR_CHANCE)) + errors |= MANIFEST_ERROR_NAME + if(prob(MANIFEST_ERROR_CHANCE)) + errors |= MANIFEST_ERROR_CONTENTS + if(prob(MANIFEST_ERROR_CHANCE)) + errors |= MANIFEST_ERROR_ITEM /datum/supply_order - var/ordernum - var/datum/supply_packs/object = null - var/orderedby = null - var/orderedbyRank - var/comment = null + var/id + var/orderer + var/orderer_rank + var/reason + var/datum/supply_pack/pack -/datum/supply_order/proc/generateRequisition(atom/_loc) - if(!object) - return +/datum/supply_order/New(pack, orderer, orderer_rank, reason) + id = SSshuttle.ordernum++ + src.pack = SSshuttle.supply_packs[pack] + src.orderer = orderer + src.orderer_rank = orderer_rank + src.reason = reason - var/obj/item/weapon/paper/reqform = new /obj/item/weapon/paper(_loc) - reqform.name = "requisition form - [object.name]" - reqform.info += "

    [station_name] Supply Requisition Form


    " - reqform.info += "INDEX: #[ordernum]
    " - reqform.info += "REQUESTED BY: [orderedby]
    " - reqform.info += "RANK: [orderedbyRank]
    " - reqform.info += "REASON: [comment]
    " - reqform.info += "SUPPLY CRATE TYPE: [object.name]
    " - reqform.info += "ACCESS RESTRICTION: [get_access_desc(object.access)]
    " - reqform.info += "CONTENTS:
    " - reqform.info += object.manifest - reqform.info += "
    " - reqform.info += "STAMP BELOW TO APPROVE THIS REQUISITION:
    " +/datum/supply_order/proc/generateRequisition(turf/T) + var/obj/item/weapon/paper/P = new(T) - reqform.update_icon() //Fix for appearing blank when printed. + P.name = "requisition form - #[id] ([pack.name])" + P.info += "

    [station_name()] Supply Requisition

    " + P.info += "
    " + P.info += "Order #[id]
    " + P.info += "Item: [pack.name]
    " + P.info += "Access Restrictions: [get_access_desc(pack.access)]
    " + P.info += "Requested by: [orderer]
    " + P.info += "Rank: [orderer_rank]
    " + P.info += "Comment: [reason]
    " - return reqform + P.update_icon() + return P -/datum/subsystem/shuttle/proc/generateSupplyOrder(packId, _orderedby, _orderedbyRank, _comment) - if(!packId) - return - var/datum/supply_packs/P = supply_packs[packId] - if(!P) - return +/datum/supply_order/proc/generateManifest(obj/structure/closet/crate/C) + var/obj/item/weapon/paper/manifest/P = new(C, id, pack.cost) - var/datum/supply_order/O = new() - O.ordernum = ordernum++ - O.object = P - O.orderedby = _orderedby - O.orderedbyRank = _orderedbyRank - O.comment = _comment + var/station_name = (P.errors & MANIFEST_ERROR_NAME) ? new_station_name() : station_name() - return O + P.name = "shipping manifest - #[id] ([pack.name])" + P.info += "

    [command_name()] Shipping Manifest

    " + P.info += "
    " + P.info += "Order #[id]
    " + P.info += "Destination: [station_name]
    " + P.info += "Item: [pack.name]
    " + P.info += "Contents:
    " + P.info += "
      " + for(var/atom/movable/AM in C.contents - P) + if((P.errors & MANIFEST_ERROR_CONTENTS)) + if(prob(50)) + P.info += "
    • [AM.name]
    • " + else + continue + P.info += "
    • [AM.name]
    • " + P.info += "
    " + P.info += "

    Stamp below to confirm receipt of goods:

    " -/datum/supply_order/proc/createObject(atom/_loc, errors=0) - if(!object) - return + P.update_icon() + P.loc = C + C.manifest = P + C.update_icon() - //create the crate - var/atom/Crate = new object.containertype(_loc) - Crate.name = "[object.containername] [comment ? "([comment])":"" ]" - if(object.access) - Crate:req_access = list(text2num(object.access)) + return P - //create the manifest slip - var/obj/item/weapon/paper/manifest/slip = new /obj/item/weapon/paper/manifest() - slip.erroneous = errors - slip.points = object.cost - slip.ordernumber = ordernum +/datum/supply_order/proc/generate(turf/T) + var/obj/structure/closet/crate/C = pack.generate(T) + var/obj/item/weapon/paper/manifest/M = generateManifest(C) - var/stationName = (errors & MANIFEST_ERROR_NAME) ? new_station_name() : station_name() - var/packagesAmt = SSshuttle.shoppinglist.len + ((errors & MANIFEST_ERROR_COUNT) ? rand(1,2) : 0) - - slip.info = "

    [command_name()] Shipping Manifest



    " - slip.info +="Order #[ordernum]
    " - slip.info +="Destination: [stationName]
    " - slip.info +="[packagesAmt] PACKAGES IN THIS SHIPMENT
    " - slip.info +="CONTENTS:
      " - - //we now create the actual contents - var/list/contains - if(istype(object, /datum/supply_packs/misc/randomised)) - var/datum/supply_packs/misc/randomised/SO = object - contains = list() - if(object.contains.len) - for(var/j=1, j<=SO.num_contained, j++) - contains += pick(object.contains) - else - contains = object.contains - - for(var/typepath in contains) - if(!typepath) - continue - var/atom/A = new typepath(Crate) - if(object.amount && A.vars.Find("amount") && A:amount) - A:amount = object.amount - slip.info += "
    • [A.name]
    • " //add the item to the manifest (even if it was misplaced) - - if((errors & MANIFEST_ERROR_ITEM)) - //secure and large crates cannot lose items - if(findtext("[object.containertype]", "/secure/") || findtext("[object.containertype]","/large/")) - errors &= ~MANIFEST_ERROR_ITEM + if(M.errors & MANIFEST_ERROR_ITEM) + if(istype(C, /obj/structure/closet/crate/secure) || istype(C, /obj/structure/closet/crate/large)) + M.errors &= ~MANIFEST_ERROR_ITEM else - var/lostAmt = max(round(Crate.contents.len/10), 1) - //lose some of the items - while(--lostAmt >= 0) - qdel(pick(Crate.contents)) - - //manifest finalisation - slip.info += "

    " - slip.info += "CHECK CONTENTS AND STAMP BELOW THE LINE TO CONFIRM RECEIPT OF GOODS
    " // And now this is actually meaningful. - slip.loc = Crate - if(istype(Crate, /obj/structure/closet/crate)) - var/obj/structure/closet/crate/CR = Crate - CR.manifest = slip - CR.update_icon() - - return Crate + var/lost = max(round(C.contents.len / 10), 1) + while(--lost >= 0) + qdel(pick(C.contents)) + return C diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm new file mode 100644 index 00000000000..c1854ee0c2f --- /dev/null +++ b/code/modules/cargo/packs.dm @@ -0,0 +1,1308 @@ +/datum/supply_pack + var/name = null + var/group = supply_misc + var/hidden = FALSE + var/contraband = FLASE + var/cost = 0 + var/access = FALSE + var/list/contains = null + var/amount = 0 + var/crate_type = /obj/structure/closet/crate + var/crate_name = null + +/datum/supply_pack/proc/generate(turf/T) + var/obj/structure/closet/crate/C = new crate_type(T) + C.name = crate_name + + for(var/item in contains) + var/atom/A = new item(C) + if(amount && A.vars.Find("amount") && A:amount) + A:amount = amount + + return C + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Emergency /////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/emergency + group = "Emergency" + +/datum/supply_pack/emergency/equipment + name = "Emergency Equipment" + cost = 35 + contains = list(/mob/living/simple_animal/bot/floorbot, + /mob/living/simple_animal/bot/floorbot, + /mob/living/simple_animal/bot/medbot, + /mob/living/simple_animal/bot/medbot, + /obj/item/weapon/tank/internals/air, + /obj/item/weapon/tank/internals/air, + /obj/item/weapon/tank/internals/air, + /obj/item/weapon/tank/internals/air, + /obj/item/weapon/tank/internals/air, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas) + crate_name = "emergency crate" + crate_type = /obj/structure/closet/crate/internals + +/datum/supply_pack/emergency/internals + name = "Internals Crate" + cost = 10 + contains = list(/obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas, + /obj/item/weapon/tank/internals/air, + /obj/item/weapon/tank/internals/air, + /obj/item/weapon/tank/internals/air) + crate_name = "internals crate" + crate_type = /obj/structure/closet/crate/internals + +/datum/supply_pack/emergency/firefighting + name = "Firefighting Crate" + cost = 10 + contains = list(/obj/item/clothing/suit/fire/firefighter, + /obj/item/clothing/suit/fire/firefighter, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas, + /obj/item/device/flashlight, + /obj/item/device/flashlight, + /obj/item/weapon/tank/internals/oxygen/red, + /obj/item/weapon/tank/internals/oxygen/red, + /obj/item/weapon/extinguisher, + /obj/item/weapon/extinguisher, + /obj/item/clothing/head/hardhat/red, + /obj/item/clothing/head/hardhat/red) + crate_name = "firefighting crate" + +/datum/supply_pack/emergency/atmostank + name = "Firefighting Watertank" + cost = 10 + access = access_atmospherics + contains = list(/obj/item/weapon/watertank/atmos) + crate_name = "firefighting watertank crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/emergency/radiation + name = "Radiation Protection Crate" + cost = 10 + contains = list(/obj/item/clothing/head/radiation, + /obj/item/clothing/head/radiation, + /obj/item/clothing/suit/radiation, + /obj/item/clothing/suit/radiation) + crate_name = "radiation protection crate" + crate_type = /obj/structure/closet/crate/radiation + +/datum/supply_pack/emergency/weedcontrol + name = "Weed Control Crate" + cost = 15 + access = access_hydroponics + contains = list(/obj/item/weapon/scythe, + /obj/item/clothing/mask/gas, + /obj/item/weapon/grenade/chem_grenade/antiweed, + /obj/item/weapon/grenade/chem_grenade/antiweed) + crate_name = "weed control crate" + crate_type = /obj/structure/closet/crate/secure/hydroponics + +/datum/supply_pack/emergency/specialops + name = "Special Ops Supplies" + hidden = TRUE + cost = 20 + contains = list(/obj/item/weapon/storage/box/emps, + /obj/item/weapon/grenade/smokebomb, + /obj/item/weapon/grenade/smokebomb, + /obj/item/weapon/grenade/smokebomb, + /obj/item/weapon/pen/sleepy, + /obj/item/weapon/grenade/chem_grenade/incendiary) + crate_name = "special ops crate" + crate_type = /obj/structure/closet/crate + +/datum/supply_pack/emergency/syndicate + name = "NULL_ENTRY" + hidden = TRUE + cost = 140 + contains = list(/obj/item/weapon/storage/box/syndicate) + crate_name = "crate" + crate_type = /obj/structure/closet/crate + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Security //////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/security + group "Security" + access = access_security + crate_type = /obj/structure/closet/crate/secure/gear + +/datum/supply_pack/security/supplies + name = "Security Supplies Crate" + cost = 10 + contains = list(/obj/item/weapon/storage/box/flashbangs, + /obj/item/weapon/storage/box/teargas, + /obj/item/weapon/storage/box/flashes, + /obj/item/weapon/storage/box/handcuffs) + crate_name = "security supply crate" + +/datum/supply_pack/security/helmets + name = "Helmets Crate" + cost = 10 + contains = list(/obj/item/clothing/head/helmet/sec, + /obj/item/clothing/head/helmet/sec, + /obj/item/clothing/head/helmet/sec) + crate_name = "helmet crate" + +/datum/supply_pack/security/armor + name = "Armor Crate" + cost = 10 + contains = list(/obj/item/clothing/suit/armor/vest, + /obj/item/clothing/suit/armor/vest, + /obj/item/clothing/suit/armor/vest) + crate_name = "armor crate" + +/datum/supply_pack/security/baton + name = "Stun Batons Crate" + cost = 10 + contains = list(/obj/item/weapon/melee/baton/loaded, + /obj/item/weapon/melee/baton/loaded, + /obj/item/weapon/melee/baton/loaded) + crate_name = "stun baton crate" + +/datum/supply_pack/security/laser + name = "Lasers Crate" + cost = 15 + contains = list(/obj/item/weapon/gun/energy/laser, + /obj/item/weapon/gun/energy/laser, + /obj/item/weapon/gun/energy/laser) + crate_name = "laser crate" + +/datum/supply_pack/security/taser + name = "Taser Crate" + cost = 15 + contains = list(/obj/item/weapon/gun/energy/gun/advtaser, + /obj/item/weapon/gun/energy/gun/advtaser, + /obj/item/weapon/gun/energy/gun/advtaser) + crate_name = "taser crate" + +/datum/supply_pack/security/disabler + name = "Disabler Crate" + cost = 10 + contains = list(/obj/item/weapon/gun/energy/disabler, + /obj/item/weapon/gun/energy/disabler, + /obj/item/weapon/gun/energy/disabler) + crate_name = "disabler crate" + +/datum/supply_pack/security/forensics + name = "Forensics Crate" + cost = 20 + contains = list(/obj/item/device/detective_scanner, + /obj/item/weapon/storage/box/evidence, + /obj/item/device/camera, + /obj/item/device/taperecorder, + /obj/item/toy/crayon/white, + /obj/item/clothing/head/det_hat) + crate_name = "forensics crate" + + +/datum/supply_pack/security/armory + access = access_armory + crate_type = /obj/structure/closet/crate/secure/weapon + +/datum/supply_pack/security/armory/riothelmets + name = "Riot Helmets Crate" + cost = 15 + contains = list(/obj/item/clothing/head/helmet/riot, + /obj/item/clothing/head/helmet/riot, + /obj/item/clothing/head/helmet/riot) + crate_name = "riot helmets crate" + +/datum/supply_pack/security/armory/riotarmor + name = "Riot Armor Crate" + cost = 15 + contains = list(/obj/item/clothing/suit/armor/riot, + /obj/item/clothing/suit/armor/riot, + /obj/item/clothing/suit/armor/riot) + crate_name = "riot armor crate" + +/datum/supply_pack/security/armory/riotshields + name = "Riot Shields Crate" + cost = 20 + contains = list(/obj/item/weapon/shield/riot, + /obj/item/weapon/shield/riot, + /obj/item/weapon/shield/riot) + crate_name = "riot shields crate" + +/datum/supply_pack/security/armory/bulletarmor + name = "Bulletproof Armor Crate" + cost = 15 + contains = list(/obj/item/clothing/suit/armor/bulletproof, + /obj/item/clothing/suit/armor/bulletproof, + /obj/item/clothing/suit/armor/bulletproof) + crate_name = "bulletproof armor crate" + +/datum/supply_pack/security/armory/swat + name = "SWAT Crate" + cost = 60 + contains = list(/obj/item/clothing/head/helmet/swat/nanotrasen, + /obj/item/clothing/head/helmet/swat/nanotrasen, + /obj/item/clothing/suit/space/swat, + /obj/item/clothing/suit/space/swat, + /obj/item/weapon/kitchen/knife/combat, + /obj/item/weapon/kitchen/knife/combat, + /obj/item/clothing/mask/gas/sechailer/swat, + /obj/item/clothing/mask/gas/sechailer/swat, + /obj/item/weapon/storage/belt/military/assault, + /obj/item/weapon/storage/belt/military/assault) + crate_name = "swat crate" + +/datum/supply_pack/security/armory/laserarmor + name = "Reflector Vest Crate" + cost = 20 + contains = list(/obj/item/clothing/suit/armor/laserproof, + /obj/item/clothing/suit/armor/laserproof) + crate_name = "reflector vest crate" + crate_type = /obj/structure/closet/crate/secure/plasma + +/datum/supply_pack/security/armory/ballistic + name = "Combat Shotguns Crate" + cost = 20 + contains = list(/obj/item/weapon/gun/projectile/shotgun/automatic/combat, + /obj/item/weapon/gun/projectile/shotgun/automatic/combat, + /obj/item/weapon/gun/projectile/shotgun/automatic/combat, + /obj/item/weapon/storage/belt/bandolier, + /obj/item/weapon/storage/belt/bandolier, + /obj/item/weapon/storage/belt/bandolier) + crate_name = "combat shotguns crate" + +/datum/supply_pack/security/armory/energy + name = "Energy Guns Crate" + cost = 25 + contains = list(/obj/item/weapon/gun/energy/gun, + /obj/item/weapon/gun/energy/gun) + crate_name = "energy gun crate" + crate_type = /obj/structure/closet/crate/secure/plasma + +/datum/supply_pack/security/armory/fire + name = "Incendiary Weapons Crate" + cost = 15 + access = access_heads + contains = list(/obj/item/weapon/flamethrower/full, + /obj/item/weapon/tank/internals/plasma, + /obj/item/weapon/tank/internals/plasma, + /obj/item/weapon/tank/internals/plasma, + /obj/item/weapon/grenade/chem_grenade/incendiary, + /obj/item/weapon/grenade/chem_grenade/incendiary, + /obj/item/weapon/grenade/chem_grenade/incendiary) + crate_name = "incendiary weapons crate" + crate_type = /obj/structure/closet/crate/secure/plasma + +/datum/supply_pack/security/armory/wt550 + name = "WT-550 Auto Rifle Crate" + cost = 35 + contains = list(/obj/item/weapon/gun/projectile/automatic/wt550, + /obj/item/weapon/gun/projectile/automatic/wt550) + crate_name = "auto rifle crate" + +/datum/supply_pack/security/armory/wt550ammo + name = "WT-550 Auto Rifle Ammo Crate" + cost = 30 + contains = list(/obj/item/ammo_box/magazine/wt550m9, + /obj/item/ammo_box/magazine/wt550m9, + /obj/item/ammo_box/magazine/wt550m9, + /obj/item/ammo_box/magazine/wt550m9) + crate_name = "auto rifle ammo crate" + +/datum/supply_pack/security/armory/loyalty + name = "Loyalty Implants Crate" + cost = 40 + contains = list(/obj/item/weapon/storage/lockbox/loyalty) + crate_name = "loyalty implant crate" + +/datum/supply_pack/security/armory/trackingimp + name = "Tracking Implants Crate" + cost = 20 + contains = list(/obj/item/weapon/storage/box/trackimp) + crate_name = "tracking implant crate" + +/datum/supply_pack/security/armory/chemimp + name = "Chemical Implants Crate" + cost = 20 + contains = list(/obj/item/weapon/storage/box/chemimp) + crate_name = "chemical implant crate" + +/datum/supply_pack/security/armory/exileimp + name = "Exile Implants Crate" + cost = 30 + contains = list(/obj/item/weapon/storage/box/exileimp) + crate_name = "exile implant crate" + +/datum/supply_pack/security/securitybarriers + name = "Security Barriers Crate" + contains = list(/obj/item/weapon/grenade/barrier, + /obj/item/weapon/grenade/barrier, + /obj/item/weapon/grenade/barrier, + /obj/item/weapon/grenade/barrier) + cost = 20 + crate_name = "security barriers crate" + +/datum/supply_pack/security/firingpins + name = "Standard Firing Pins Crate" + cost = 10 + contains = list(/obj/item/weapon/storage/box/firingpins, + /obj/item/weapon/storage/box/firingpins) + crate_name = "firing pins crate" + +/datum/supply_pack/security/securityclothes + name = "Security Clothing Crate" + cost = 30 + contains = list(/obj/item/clothing/under/rank/security/navyblue, + /obj/item/clothing/under/rank/security/navyblue, + /obj/item/clothing/suit/security/officer, + /obj/item/clothing/suit/security/officer, + /obj/item/clothing/head/beret/sec/navyofficer, + /obj/item/clothing/head/beret/sec/navyofficer, + /obj/item/clothing/under/rank/warden/navyblue, + /obj/item/clothing/suit/security/warden, + /obj/item/clothing/head/beret/sec/navywarden, + /obj/item/clothing/under/rank/head_of_security/navyblue, + /obj/item/clothing/suit/security/hos, + /obj/item/clothing/head/beret/sec/navyhos) + crate_name = "security clothing crate" + +/datum/supply_pack/security/justiceinbound + name = "Standard Justice Enforcer Crate" + cost = 80 //justice comes at a price. An expensive, noisy price. + contains = list(/obj/item/clothing/head/helmet/justice, + /obj/item/clothing/mask/gas/sechailer) + crate_name = "justice enforcer crate" + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Engineering ///////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/engineering + group = "Engineering" + +/datum/supply_pack/engineering/fueltank + name = "Fuel Tank Crate" + cost = 8 + contains = list(/obj/structure/reagent_dispensers/fueltank) + crate_name = "fuel tank crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/engineering/tools + name = "Toolbox Crate" + contains = list(/obj/item/weapon/storage/toolbox/electrical, + /obj/item/weapon/storage/toolbox/electrical, + /obj/item/weapon/storage/toolbox/mechanical, + /obj/item/weapon/storage/toolbox/electrical, + /obj/item/weapon/storage/toolbox/mechanical, + /obj/item/weapon/storage/toolbox/mechanical) + cost = 10 + crate_name = "toolbox crate" + +/datum/supply_pack/engineering/powergamermitts + name = "Insulated Gloves Crate" + cost = 20 //Made of pure-grade bullshittinium + contains = list(/obj/item/clothing/gloves/color/yellow, + /obj/item/clothing/gloves/color/yellow, + /obj/item/clothing/gloves/color/yellow) + crate_name = "insulated gloves crate" + +/datum/supply_pack/engineering/power + name = "Powercell Crate" + cost = 10 + contains = list(/obj/item/weapon/stock_parts/cell/high, + /obj/item/weapon/stock_parts/cell/high, + /obj/item/weapon/stock_parts/cell/high) + crate_name = "electrical maintenance crate" + +/datum/supply_pack/engineering/engiequipment + name = "Engineering Gear Crate" + cost = 10 + contains = list(/obj/item/weapon/storage/belt/utility, + /obj/item/weapon/storage/belt/utility, + /obj/item/weapon/storage/belt/utility, + /obj/item/clothing/suit/hazardvest, + /obj/item/clothing/suit/hazardvest, + /obj/item/clothing/suit/hazardvest, + /obj/item/clothing/head/welding, + /obj/item/clothing/head/welding, + /obj/item/clothing/head/welding, + /obj/item/clothing/head/hardhat, + /obj/item/clothing/head/hardhat, + /obj/item/clothing/head/hardhat) + crate_name = "engineering gear crate" + +/datum/supply_pack/engineering/engine/spacesuit + name = "Space Suit Crate" + cost = 30 + access = access_eva + contains = list(/obj/item/clothing/suit/space, + /obj/item/clothing/suit/space, + /obj/item/clothing/head/helmet/space, + /obj/item/clothing/head/helmet/space, + /obj/item/clothing/mask/breath, + /obj/item/clothing/mask/breath,) + crate_name = "space suit crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/engineering/solar + name = "Solar Panel Crate" + cost = 20 + contains = list(/obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/weapon/circuitboard/solar_control, + /obj/item/weapon/electronics/tracker, + /obj/item/weapon/paper/solar) + crate_name = "solar panel crate" + +/datum/supply_pack/engineering/engine + name = "Emitter Crate" + cost = 10 + access = access_ce + contains = list(/obj/machinery/power/emitter, + /obj/machinery/power/emitter) + crate_name = "emitter crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/engineering/engine/field_gen + name = "Field Generator Crate" + cost = 10 + contains = list(/obj/machinery/field/generator, + /obj/machinery/field/generator) + crate_name = "field generator crate" + +/datum/supply_pack/engineering/engine/sing_gen + name = "Singularity Generator Crate" + cost = 10 + contains = list(/obj/machinery/the_singularitygen) + crate_name = "singularity generator crate" + +/datum/supply_pack/engineering/engine/collector + name = "Collector Crate" + cost = 10 + contains = list(/obj/machinery/power/rad_collector, + /obj/machinery/power/rad_collector, + /obj/machinery/power/rad_collector) + crate_name = "collector crate" + +/datum/supply_pack/engineering/engine/PA + name = "Particle Accelerator Crate" + cost = 25 + contains = list(/obj/structure/particle_accelerator/fuel_chamber, + /obj/machinery/particle_accelerator/control_box, + /obj/structure/particle_accelerator/particle_emitter/center, + /obj/structure/particle_accelerator/particle_emitter/left, + /obj/structure/particle_accelerator/particle_emitter/right, + /obj/structure/particle_accelerator/power_box, + /obj/structure/particle_accelerator/end_cap) + crate_name = "particle accelerator crate" + +/datum/supply_pack/engineering/engine/supermatter_shard + name = "Supermatter Shard Crate" + cost = 100 + access = access_ce + contains = list(/obj/machinery/power/supermatter_shard) + crate_name = "supermatter shard crate" + crate_type = /obj/structure/closet/crate/secure + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Medical ///////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/medical + group = "Medical" + crate_type = /obj/structure/closet/crate/medical + +/datum/supply_pack/medical/supplies + name = "Medical Supplies Crate" + cost = 20 + contains = list(/obj/item/weapon/reagent_containers/glass/bottle/charcoal, + /obj/item/weapon/reagent_containers/glass/bottle/charcoal, + /obj/item/weapon/reagent_containers/glass/bottle/epinephrine, + /obj/item/weapon/reagent_containers/glass/bottle/epinephrine, + /obj/item/weapon/reagent_containers/glass/bottle/morphine, + /obj/item/weapon/reagent_containers/glass/bottle/morphine, + /obj/item/weapon/reagent_containers/glass/bottle/morphine, + /obj/item/weapon/reagent_containers/glass/bottle/morphine, + /obj/item/weapon/reagent_containers/glass/bottle/morphine, + /obj/item/weapon/reagent_containers/glass/bottle/morphine, + /obj/item/weapon/reagent_containers/glass/bottle/toxin, + /obj/item/weapon/reagent_containers/glass/bottle/toxin, + /obj/item/weapon/reagent_containers/glass/beaker/large, + /obj/item/weapon/reagent_containers/glass/beaker/large, + /obj/item/weapon/reagent_containers/pill/insulin, + /obj/item/weapon/reagent_containers/pill/insulin, + /obj/item/weapon/reagent_containers/pill/insulin, + /obj/item/weapon/reagent_containers/pill/insulin, + /obj/item/stack/medical/gauze, + /obj/item/weapon/storage/box/beakers, + /obj/item/weapon/storage/box/syringes, + /obj/item/weapon/storage/box/bodybags) + crate_name = "medical supplies crate" + +/datum/supply_pack/medical/firstaid + name = "First Aid Kit Crate" + cost = 10 + contains = list(/obj/item/weapon/storage/firstaid/regular, + /obj/item/weapon/storage/firstaid/regular, + /obj/item/weapon/storage/firstaid/regular, + /obj/item/weapon/storage/firstaid/regular) + crate_name = "first aid kit crate" + +/datum/supply_pack/medical/firstaidbruises + name = "Bruise Treatment Kit Crate" + cost = 10 + contains = list(/obj/item/weapon/storage/firstaid/brute, + /obj/item/weapon/storage/firstaid/brute, + /obj/item/weapon/storage/firstaid/brute) + crate_name = "brute treatment kit crate" + +/datum/supply_pack/medical/firstaidburns + name = "Burn Treatment Kit Crate" + cost = 10 + contains = list(/obj/item/weapon/storage/firstaid/fire, + /obj/item/weapon/storage/firstaid/fire, + /obj/item/weapon/storage/firstaid/fire) + crate_name = "burn treatment kit crate" + +/datum/supply_pack/medical/firstaidtoxins + name = "Toxin Treatment Kit Crate" + cost = 10 + contains = list(/obj/item/weapon/storage/firstaid/toxin, + /obj/item/weapon/storage/firstaid/toxin, + /obj/item/weapon/storage/firstaid/toxin) + crate_name = "toxin treatment kit crate" + +/datum/supply_pack/medical/firstaidoxygen + name = "Oxygen Deprivation Kit Crate" + cost = 10 + contains = list(/obj/item/weapon/storage/firstaid/o2, + /obj/item/weapon/storage/firstaid/o2, + /obj/item/weapon/storage/firstaid/o2) + crate_name = "oxygen deprivation kit crate" + +/datum/supply_pack/medical/virus + name = "Virus Crate" + cost = 25 + access = access_cmo + contains = list(/obj/item/weapon/reagent_containers/glass/bottle/flu_virion, + /obj/item/weapon/reagent_containers/glass/bottle/cold, + /obj/item/weapon/reagent_containers/glass/bottle/epiglottis_virion, + /obj/item/weapon/reagent_containers/glass/bottle/liver_enhance_virion, + /obj/item/weapon/reagent_containers/glass/bottle/fake_gbs, + /obj/item/weapon/reagent_containers/glass/bottle/magnitis, + /obj/item/weapon/reagent_containers/glass/bottle/pierrot_throat, + /obj/item/weapon/reagent_containers/glass/bottle/brainrot, + /obj/item/weapon/reagent_containers/glass/bottle/hullucigen_virion, + /obj/item/weapon/reagent_containers/glass/bottle/anxiety, + /obj/item/weapon/reagent_containers/glass/bottle/beesease, + /obj/item/weapon/storage/box/syringes, + /obj/item/weapon/storage/box/beakers, + /obj/item/weapon/reagent_containers/glass/bottle/mutagen) + crate_name = "virus crate" + crate_type = /obj/structure/closet/crate/secure/plasma + +/datum/supply_pack/medical/bloodpacks + name = "Blood Pack Variety Crate" + cost = 35 + contains = list(/obj/item/weapon/reagent_containers/blood/empty, + /obj/item/weapon/reagent_containers/blood/empty, + /obj/item/weapon/reagent_containers/blood/APlus, + /obj/item/weapon/reagent_containers/blood/AMinus, + /obj/item/weapon/reagent_containers/blood/BPlus, + /obj/item/weapon/reagent_containers/blood/BMinus, + /obj/item/weapon/reagent_containers/blood/OPlus, + /obj/item/weapon/reagent_containers/blood/OMinus) + crate_name = "blood pack crate" + crate_type = /obj/structure/closet/crate/freezer + +/datum/supply_pack/medical/iv_drip + name = "IV Drip Crate" + cost = 30 + access = access_cmo + contains = list(/obj/machinery/iv_drip) + crate_name = "iv drip crate" + crate_type = /obj/structure/closet/crate/secure + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Science ///////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/science + group = "Science" + +/datum/supply_pack/science/robotics + name = "Robotics Assembly Crate" + cost = 10 + access = access_robotics + contains = list(/obj/item/device/assembly/prox_sensor, + /obj/item/device/assembly/prox_sensor, + /obj/item/device/assembly/prox_sensor, + /obj/item/weapon/storage/toolbox/electrical, + /obj/item/weapon/storage/box/flashes, + /obj/item/weapon/stock_parts/cell/high, + /obj/item/weapon/stock_parts/cell/high) + crate_name = "robotics assembly crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/science/robotics/mecha_ripley + name = "Circuit Crate (Ripley APLU)" + cost = 30 + access = access_robotics + contains = list(/obj/item/weapon/book/manual/ripley_build_and_repair, + /obj/item/weapon/circuitboard/mecha/ripley/main, + /obj/item/weapon/circuitboard/mecha/ripley/peripherals) + crate_name = "\improper APLU Ripley circuit crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/science/robotics/mecha_odysseus + name = "Circuit Crate (Odysseus)" + cost = 25 + access = access_robotics + contains = list(/obj/item/weapon/circuitboard/mecha/odysseus/peripherals, + /obj/item/weapon/circuitboard/mecha/odysseus/main) + crate_name = "\improper Odysseus circuit crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/science/plasma + name = "Plasma Assembly Crate" + cost = 10 + access = access_tox_storage + contains = list(/obj/item/weapon/tank/internals/plasma, + /obj/item/weapon/tank/internals/plasma, + /obj/item/weapon/tank/internals/plasma, + /obj/item/device/assembly/igniter, + /obj/item/device/assembly/igniter, + /obj/item/device/assembly/igniter, + /obj/item/device/assembly/prox_sensor, + /obj/item/device/assembly/prox_sensor, + /obj/item/device/assembly/prox_sensor, + /obj/item/device/assembly/timer, + /obj/item/device/assembly/timer, + /obj/item/device/assembly/timer) + crate_name = "plasma assembly crate" + crate_type = /obj/structure/closet/crate/secure/plasma + +/datum/supply_pack/science/shieldwalls + name = "Shield Generators" + cost = 20 + access = access_teleporter + contains = list(/obj/machinery/shieldwallgen, + /obj/machinery/shieldwallgen, + /obj/machinery/shieldwallgen, + /obj/machinery/shieldwallgen) + crate_name = "shield generators crate" + crate_type = /obj/structure/closet/crate/secure + + +/datum/supply_pack/science/transfer_valves + name = "Tank Transfer Valves Crate" + cost = 60 + access = access_rd + contains = list(/obj/item/device/transfer_valve, + /obj/item/device/transfer_valve) + crate_name = "tank transfer valves crate crate" + crate_type = /obj/structure/closet/crate/secure + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Organic ///////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/organic + group = "Food & Livestock" + crate_type = /obj/structure/closet/crate/freezer + +/datum/supply_pack/organic/food + name = "Food Crate" + cost = 10 + contains = list(/obj/item/weapon/reagent_containers/food/condiment/flour, + /obj/item/weapon/reagent_containers/food/condiment/rice, + /obj/item/weapon/reagent_containers/food/condiment/milk, + /obj/item/weapon/reagent_containers/food/condiment/soymilk, + /obj/item/weapon/reagent_containers/food/condiment/saltshaker, + /obj/item/weapon/reagent_containers/food/condiment/peppermill, + /obj/item/weapon/storage/fancy/egg_box, + /obj/item/weapon/reagent_containers/food/condiment/enzyme, + /obj/item/weapon/reagent_containers/food/condiment/sugar, + /obj/item/weapon/reagent_containers/food/snacks/meat/slab/monkey, + /obj/item/weapon/reagent_containers/food/snacks/grown/banana, + /obj/item/weapon/reagent_containers/food/snacks/grown/banana, + /obj/item/weapon/reagent_containers/food/snacks/grown/banana) + crate_name = "food crate" + +/datum/supply_pack/organic/pizza + name = "Pizza Crate" + cost = 60 // Best prices this side of the galaxy. + contains = list(/obj/item/pizzabox/margherita, + /obj/item/pizzabox/mushroom, + /obj/item/pizzabox/meat, + /obj/item/pizzabox/vegetable) + crate_name = "pizza crate" + +/datum/supply_pack/organic/monkey + name = "Monkey Crate" + cost = 20 + contains = list (/obj/item/weapon/storage/box/monkeycubes) + crate_name = "monkey crate" + +/datum/supply_pack/organic/party + name = "Party Equipment" + cost = 20 + contains = list(/obj/item/weapon/storage/box/drinkingglasses, + /obj/item/weapon/reagent_containers/food/drinks/shaker, + /obj/item/weapon/reagent_containers/food/drinks/bottle/patron, + /obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager, + /obj/item/weapon/reagent_containers/food/drinks/ale, + /obj/item/weapon/reagent_containers/food/drinks/ale, + /obj/item/weapon/reagent_containers/food/drinks/beer, + /obj/item/weapon/reagent_containers/food/drinks/beer, + /obj/item/weapon/reagent_containers/food/drinks/beer, + /obj/item/weapon/reagent_containers/food/drinks/beer) + crate_name = "party equipment" + +/datum/supply_pack/organic/critter + crate_type = /obj/structure/closet/crate/critter + +/datum/supply_pack/organic/critter/cow + name = "Cow Crate" + cost = 30 + contains = list(/mob/living/simple_animal/cow) + crate_name = "cow crate" + +/datum/supply_pack/organic/critter/goat + name = "Goat Crate" + cost = 25 + contains = list(/mob/living/simple_animal/hostile/retaliate/goat) + crate_name = "goat crate" + +/datum/supply_pack/organic/critter/chick + name = "Chicken Crate" + cost = 20 + contains = list( /mob/living/simple_animal/chick) + crate_name = "chicken crate" + +/datum/supply_pack/organic/critter/corgi + name = "Corgi Crate" + cost = 50 + contains = list(/mob/living/simple_animal/pet/dog/corgi, + /obj/item/clothing/tie/petcollar) + crate_name = "corgi crate" + +/datum/supply_pack/organic/critter/corgi/New() + if(prob(50)) + contains -= /mob/living/simple_animal/pet/dog/corgi + conmtains += /mob/living/simple_animal/pet/dog/corgi/Lisa + ..() + +/datum/supply_pack/organic/critter/cat + name = "Cat Crate" + cost = 50 //Cats are worth as much as corgis. + contains = list(/mob/living/simple_animal/pet/cat, + /obj/item/clothing/tie/petcollar, + /obj/item/toy/cattoy) + crate_name = "cat crate" + +/datum/supply_pack/organic/critter/cat/New() + if(prob(50)) + contains -= /mob/living/simple_animal/pet/cat + conmtains += /mob/living/simple_animal/pet/cat/Proc + ..() + +/datum/supply_pack/organic/critter/pug + name = "Pug Crate" + cost = 50 + contains = list(/mob/living/simple_animal/pet/dog/pug, + /obj/item/clothing/tie/petcollar) + crate_name = "pug crate" + +/datum/supply_pack/organic/critter/fox + name = "Fox Crate" + cost = 50 + contains = list(/mob/living/simple_animal/pet/fox, + /obj/item/clothing/tie/petcollar) + crate_name = "fox crate" + +/datum/supply_pack/organic/critter/butterfly + name = "Butterflies Crate" + contraband = TRUE + cost = 50 + contains = list(/mob/living/simple_animal/butterfly) + crate_name = "butterflies crate" + +/datum/supply_pack/organic/critter/butterfly/New() + for(var/i in 1 to 50) + contents += /mob/living/simple_animal/butterfly + +/datum/supply_pack/organic/hydroponics + name = "Hydroponics Crate" + cost = 15 + contains = list(/obj/item/weapon/reagent_containers/spray/plantbgone, + /obj/item/weapon/reagent_containers/spray/plantbgone, + /obj/item/weapon/reagent_containers/glass/bottle/ammonia, + /obj/item/weapon/reagent_containers/glass/bottle/ammonia, + /obj/item/weapon/hatchet, + /obj/item/weapon/cultivator, + /obj/item/device/analyzer/plant_analyzer, + /obj/item/clothing/gloves/botanic_leather, + /obj/item/clothing/suit/apron) + crate_name = "hydroponics crate" + crate_type = /obj/structure/closet/crate/hydroponics + +/datum/supply_pack/misc/hydroponics/hydrotank + name = "Hydroponics Backpack Crate" + cost = 10 + access = access_hydroponics + contains = list(/obj/item/weapon/watertank) + crate_name = "hydroponics backpack crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/organic/hydroponics/seeds + name = "Seeds Crate" + cost = 10 + contains = list(/obj/item/seeds/chiliseed, + /obj/item/seeds/berryseed, + /obj/item/seeds/cornseed, + /obj/item/seeds/eggplantseed, + /obj/item/seeds/tomatoseed, + /obj/item/seeds/soyaseed, + /obj/item/seeds/wheatseed, + /obj/item/seeds/riceseed, + /obj/item/seeds/carrotseed, + /obj/item/seeds/sunflowerseed, + /obj/item/seeds/chantermycelium, + /obj/item/seeds/potatoseed, + /obj/item/seeds/sugarcaneseed) + crate_name = "seeds crate" + +/datum/supply_pack/organic/hydroponics/exoticseeds + name = "Exotic Seeds Crate" + cost = 15 + contains = list(/obj/item/seeds/nettleseed, + /obj/item/seeds/replicapod, + /obj/item/seeds/replicapod, + /obj/item/seeds/replicapod, + /obj/item/seeds/plumpmycelium, + /obj/item/seeds/libertymycelium, + /obj/item/seeds/amanitamycelium, + /obj/item/seeds/reishimycelium, + /obj/item/seeds/bananaseed, + /obj/item/seeds/eggyseed) + crate_name = "exotic seeds crate" + +/datum/supply_pack/organic/vending + name = "Bartending Supply Crate" + cost = 20 + contains = list(/obj/item/weapon/vending_refill/boozeomat, + /obj/item/weapon/vending_refill/boozeomat, + /obj/item/weapon/vending_refill/boozeomat, + /obj/item/weapon/vending_refill/coffee, + /obj/item/weapon/vending_refill/coffee, + /obj/item/weapon/vending_refill/coffee) + crate_name = "bartending supply crate" + +/datum/supply_pack/organic/vending/snack + name = "Snack Supply Crate" + cost = 15 + contains = list(/obj/item/weapon/vending_refill/snack, + /obj/item/weapon/vending_refill/snack, + /obj/item/weapon/vending_refill/snack) + crate_name = "snacks supply crate" + +/datum/supply_pack/organic/vending/cola + name = "Softdrinks Supply Crate" + cost = 15 + contains = list(/obj/item/weapon/vending_refill/cola, + /obj/item/weapon/vending_refill/cola, + /obj/item/weapon/vending_refill/cola) + crate_name = "softdrinks supply crate" + +/datum/supply_pack/organic/vending/cigarette + name = "Cigarette Supply Crate" + cost = 15 + contains = list(/obj/item/weapon/vending_refill/cigarette, + /obj/item/weapon/vending_refill/cigarette, + /obj/item/weapon/vending_refill/cigarette) + crate_name = "cigarette supply crate" + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Materials /////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/materials + group = "Raw Materials" + +/datum/supply_pack/materials/metal50 + name = "50 Metal Sheets" + cost = 10 + contains = list(/obj/item/stack/sheet/metal) + amount = 50 + crate_name = "metal sheets crate" + +/datum/supply_pack/materials/plasteel20 + name = "20 Plasteel Sheets" + cost = 30 + contains = list(/obj/item/stack/sheet/plasteel) + amount = 20 + crate_name = "plasteel sheets crate" + +/datum/supply_pack/materials/plasteel50 + name = "50 Plasteel Sheets" + cost = 50 + contains = list(/obj/item/stack/sheet/plasteel) + amount = 50 + crate_name = "plasteel sheets crate" + +/datum/supply_pack/materials/glass50 + name = "50 Glass Sheets" + cost = 10 + contains = list(/obj/item/stack/sheet/glass) + amount = 50 + crate_name = "glass sheets crate" + +/datum/supply_pack/materials/cardboard50 + name = "50 Cardboard Sheets" + cost = 10 + contains = list(/obj/item/stack/sheet/cardboard) + amount = 50 + crate_name = "cardboard sheets crate" + +/datum/supply_pack/materials/sandstone30 + name = "30 Sandstone Blocks" + cost = 20 + contains = list(/obj/item/stack/sheet/mineral/sandstone) + amount = 30 + crate_name = "sandstone blocks crate" + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Miscellaneous /////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/misc + group = "Miscellaneous Supplies" + +/datum/supply_pack/misc/mule + name = "MULEbot Crate" + cost = 20 + contains = list(/mob/living/simple_animal/bot/mulebot) + crate_name = "\improper MULEbot Crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/misc/conveyor + name = "Conveyor Assembly Crate" + cost = 15 + contains = list(/obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_switch_construct, + /obj/item/weapon/paper/conveyor) + crate_name = "conveyor assembly crate" + +/datum/supply_pack/misc/watertank + name = "Water Tank Crate" + cost = 8 + contains = list(/obj/structure/reagent_dispensers/watertank) + crate_name = "water tank crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/misc/lasertag + name = "Laser Tag Crate" + cost = 15 + contains = list(/obj/item/weapon/gun/energy/laser/redtag, + /obj/item/weapon/gun/energy/laser/redtag, + /obj/item/weapon/gun/energy/laser/redtag, + /obj/item/weapon/gun/energy/laser/bluetag, + /obj/item/weapon/gun/energy/laser/bluetag, + /obj/item/weapon/gun/energy/laser/bluetag, + /obj/item/clothing/suit/redtag, + /obj/item/clothing/suit/redtag, + /obj/item/clothing/suit/redtag, + /obj/item/clothing/suit/bluetag, + /obj/item/clothing/suit/bluetag, + /obj/item/clothing/suit/bluetag, + /obj/item/clothing/head/helmet/redtaghelm, + /obj/item/clothing/head/helmet/bluetaghelm) + crate_name = "laser tag crate" + +/datum/supply_pack/misc/religious_supplies + name = "Religious Supplies Crate" + cost = 40 // it costs so much because the Space Church is ran by Space Jews + contains = list(/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, + /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, + /obj/item/weapon/storage/book/bible/booze, + /obj/item/weapon/storage/book/bible/booze, + /obj/item/clothing/suit/hooded/chaplain_hoodie, + /obj/item/clothing/suit/hooded/chaplain_hoodie) + crate_name = "religious supplies crate" + +/datum/supply_pack/misc/posters + name = "Corporate Posters Crate" + cost = 8 + contains = list(/obj/item/weapon/poster/legit, + /obj/item/weapon/poster/legit, + /obj/item/weapon/poster/legit, + /obj/item/weapon/poster/legit, + /obj/item/weapon/poster/legit) + crate_name = "Corporate Posters Crate" + +/datum/supply_pack/misc/paper + name = "Bureaucracy Crate" + cost = 15 + contains = list(/obj/structure/filingcabinet/chestdrawer/wheeled, + /obj/item/device/camera_film, + /obj/item/weapon/hand_labeler, + /obj/item/hand_labeler_refill, + /obj/item/hand_labeler_refill, + /obj/item/weapon/paper_bin, + /obj/item/weapon/pen/fourcolor, + /obj/item/weapon/pen/fourcolor, + /obj/item/weapon/pen, + /obj/item/weapon/pen/blue, + /obj/item/weapon/pen/red, + /obj/item/weapon/folder/blue, + /obj/item/weapon/folder/red, + /obj/item/weapon/folder/yellow, + /obj/item/weapon/clipboard, + /obj/item/weapon/clipboard) + crate_name = "bureaucracy crate" + +/datum/supply_pack/misc/toner + name = "Toner Crate" + cost = 10 + contains = list(/obj/item/device/toner, + /obj/item/device/toner, + /obj/item/device/toner, + /obj/item/device/toner, + /obj/item/device/toner, + /obj/item/device/toner) + crate_name = "toner crate" + +/datum/supply_pack/misc/janitor + name = "Janitorial Supplies Crate" + cost = 10 + contains = list(/obj/item/weapon/reagent_containers/glass/bucket, + /obj/item/weapon/reagent_containers/glass/bucket, + /obj/item/weapon/reagent_containers/glass/bucket, + /obj/item/weapon/mop, + /obj/item/weapon/caution, + /obj/item/weapon/caution, + /obj/item/weapon/caution, + /obj/item/weapon/storage/bag/trash, + /obj/item/weapon/reagent_containers/spray/cleaner, + /obj/item/weapon/reagent_containers/glass/rag, + /obj/item/weapon/grenade/chem_grenade/cleaner, + /obj/item/weapon/grenade/chem_grenade/cleaner, + /obj/item/weapon/grenade/chem_grenade/cleaner) + crate_name = "janitorial supplies crate" + +/datum/supply_pack/misc/janitor/janicart + name = "Janitorial Cart and Galoshes Crate" + cost = 20 + contains = list(/obj/structure/janitorialcart, + /obj/item/clothing/shoes/galoshes) + crate_name = "janitorial cart crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/misc/janitor/janitank + name = "Janitor Backpack Crate" + cost = 10 + access = access_janitor + contains = list(/obj/item/weapon/watertank/janitor) + crate_name = "janitor backpack crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/misc/janitor/lightbulbs + name = "Replacement Lights" + cost = 10 + contains = list(/obj/item/weapon/storage/box/lights/mixed, + /obj/item/weapon/storage/box/lights/mixed, + /obj/item/weapon/storage/box/lights/mixed) + crate_name = "replacement lights" + +/datum/supply_pack/misc/noslipfloor + name = "High-traction Floor Tiles" + cost = 20 + contains = list(/obj/item/stack/tile/noslip) + amount = 20 + crate_name = "high-traction floor tiles" + +/datum/supply_pack/misc/plasmaman + name = "Plasmaman Supply Kit" + cost = 20 + contains = list(/obj/item/clothing/under/plasmaman, + /obj/item/clothing/under/plasmaman, + /obj/item/weapon/tank/internals/plasmaman/belt/full, + /obj/item/weapon/tank/internals/plasmaman/belt/full, + /obj/item/clothing/head/helmet/space/plasmaman, + /obj/item/clothing/head/helmet/space/plasmaman) + crate_name = "plasmaman supply kit" + +/datum/supply_pack/misc/costume + name = "Standard Costume Crate" + cost = 10 + access = access_theatre + contains = list(/obj/item/weapon/storage/backpack/clown, + /obj/item/clothing/shoes/clown_shoes, + /obj/item/clothing/mask/gas/clown_hat, + /obj/item/clothing/under/rank/clown, + /obj/item/weapon/bikehorn, + /obj/item/clothing/under/rank/mime, + /obj/item/clothing/shoes/sneakers/black, + /obj/item/clothing/gloves/color/white, + /obj/item/clothing/mask/gas/mime, + /obj/item/clothing/head/beret, + /obj/item/clothing/suit/suspenders, + /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing, + /obj/item/weapon/storage/backpack/mime) + crate_name = "standard costume crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/misc/wizard + name = "Wizard Costume Crate" + cost = 20 + contains = list(/obj/item/weapon/staff, + /obj/item/clothing/suit/wizrobe/fake, + /obj/item/clothing/shoes/sandal, + /obj/item/clothing/head/wizard/fake) + crate_name = "wizard costume crate" + +/datum/supply_pack/misc/randomised + name = "Collectable Hats Crate!" + cost = 200 + var/num_contained = 3 //number of items picked to be contained in a randomised crate + contains = list(/obj/item/clothing/head/collectable/chef, + /obj/item/clothing/head/collectable/paper, + /obj/item/clothing/head/collectable/tophat, + /obj/item/clothing/head/collectable/captain, + /obj/item/clothing/head/collectable/beret, + /obj/item/clothing/head/collectable/welding, + /obj/item/clothing/head/collectable/flatcap, + /obj/item/clothing/head/collectable/pirate, + /obj/item/clothing/head/collectable/kitty, + /obj/item/clothing/head/collectable/rabbitears, + /obj/item/clothing/head/collectable/wizard, + /obj/item/clothing/head/collectable/hardhat, + /obj/item/clothing/head/collectable/HoS, + /obj/item/clothing/head/collectable/thunderdome, + /obj/item/clothing/head/collectable/swat, + /obj/item/clothing/head/collectable/slime, + /obj/item/clothing/head/collectable/police, + /obj/item/clothing/head/collectable/slime, + /obj/item/clothing/head/collectable/xenom, + /obj/item/clothing/head/collectable/petehat) + crate_name = "collectable hats crate" + +/datum/supply_pack/misc/randomised/contraband + name = "Contraband Crate" + contraband = TRUE + cost = 30 + num_contained = 5 + contains = list(/obj/item/weapon/poster/contraband, + /obj/item/weapon/storage/fancy/cigarettes/dromedaryco, + /obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims) + crate_name = "crate" + +/datum/supply_pack/misc/randomised/toys + name = "Toy Crate" + cost = 50 // or play the arcade machines ya lazy bum + num_contained = 5 + contains = list(/obj/item/toy/spinningtoy, + /obj/item/toy/sword, + /obj/item/toy/foamblade, + /obj/item/toy/AI, + /obj/item/toy/owl, + /obj/item/toy/griffin, + /obj/item/toy/nuke, + /obj/item/toy/minimeteor, + /obj/item/toy/carpplushie, + /obj/item/weapon/coin/antagtoken, + /obj/item/stack/tile/fakespace, + /obj/item/weapon/gun/projectile/shotgun/toy/crossbow, + /obj/item/toy/redbutton) + crate_name = "toy crate" + +/datum/supply_pack/misc/autodrobe + name = "Autodrobe Supply Crate" + cost = 15 + contains = list(/obj/item/weapon/vending_refill/autodrobe, + /obj/item/weapon/vending_refill/autodrobe) + crate_name = "autodrobe supply crate" + +/datum/supply_pack/misc/formalwear + name = "Formalwear Crate" + cost = 30 //Lots of very expensive items. You gotta pay up to look good! + contains = list(/obj/item/clothing/under/blacktango, + /obj/item/clothing/under/assistantformal, + /obj/item/clothing/under/assistantformal, + /obj/item/clothing/under/lawyer/bluesuit, + /obj/item/clothing/suit/toggle/lawyer, + /obj/item/clothing/under/lawyer/purpsuit, + /obj/item/clothing/suit/toggle/lawyer/purple, + /obj/item/clothing/under/lawyer/blacksuit, + /obj/item/clothing/suit/toggle/lawyer/black, + /obj/item/clothing/tie/waistcoat, + /obj/item/clothing/tie/blue, + /obj/item/clothing/tie/red, + /obj/item/clothing/tie/black, + /obj/item/clothing/head/bowler, + /obj/item/clothing/head/fedora, + /obj/item/clothing/head/flatcap, + /obj/item/clothing/head/beret, + /obj/item/clothing/head/that, + /obj/item/clothing/shoes/laceup, + /obj/item/clothing/shoes/laceup, + /obj/item/clothing/shoes/laceup, + /obj/item/clothing/under/suit_jacket/charcoal, + /obj/item/clothing/under/suit_jacket/navy, + /obj/item/clothing/under/suit_jacket/burgundy, + /obj/item/clothing/under/suit_jacket/checkered, + /obj/item/clothing/under/suit_jacket/tan, + /obj/item/weapon/lipstick/random) + crate_name = "formalwear crate" + +/datum/supply_pack/misc/foamforce + name = "Foam Force Crate" + cost = 10 + contains = list(/obj/item/weapon/gun/projectile/shotgun/toy, + /obj/item/weapon/gun/projectile/shotgun/toy, + /obj/item/weapon/gun/projectile/shotgun/toy, + /obj/item/weapon/gun/projectile/shotgun/toy, + /obj/item/weapon/gun/projectile/shotgun/toy, + /obj/item/weapon/gun/projectile/shotgun/toy, + /obj/item/weapon/gun/projectile/shotgun/toy, + /obj/item/weapon/gun/projectile/shotgun/toy) + crate_name = "foam force crate" + +/datum/supply_pack/misc/foamforce/bonus + name = "Foam Force Pistols Crate" + contraband = TRUE + cost = 40 + contains = list(/obj/item/weapon/gun/projectile/automatic/toy/pistol, + /obj/item/weapon/gun/projectile/automatic/toy/pistol, + /obj/item/ammo_box/magazine/toy/pistol, + /obj/item/ammo_box/magazine/toy/pistol) + crate_name = "foam force pistols crate" diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm index 76ecd4a37fa..6f25e555c12 100644 --- a/code/modules/events/shuttle_loan.dm +++ b/code/modules/events/shuttle_loan.dm @@ -12,12 +12,12 @@ earliest_start = 4000 /datum/round_event/shuttle_loan + announceWhen = 1 endWhen = 500 - var/dispatch_type = 4 + var/dispatched = 0 + var/dispatch_type = 0 var/bonus_points = 100 var/thanks_msg = "The cargo shuttle should return in five minutes. Have some supply points for your trouble." - var/dispatched = 0 - announceWhen = 1 /datum/round_event/shuttle_loan/start() dispatch_type = pick(HIJACK_SYNDIE, RUSKY_PARTY, SPIDER_GIFT, DEPARTMENT_RESUPPLY, ANTIDOTE_NEEDED) @@ -73,8 +73,6 @@ else endWhen = activeFor + 1 -//whomever coded this didn't even bother to follow the supply ordering code as an example. -//So I had to waste time rewriting it. Thanks for that >:[ /datum/round_event/shuttle_loan/end() if(SSshuttle.shuttle_loan && SSshuttle.shuttle_loan.dispatched) //make sure the shuttle was dispatched in time @@ -91,7 +89,9 @@ var/list/shuttle_spawns = list() switch(dispatch_type) if(HIJACK_SYNDIE) - add_crates(list(/datum/supply_packs/emergency/specialops), empty_shuttle_turfs) + var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/emergency/specialops] + pack.generate(pick_n_take(empty_shuttle_turfs)) + shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate) shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate) if(prob(75)) @@ -100,7 +100,9 @@ shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate) if(RUSKY_PARTY) - add_crates(list(/datum/supply_packs/organic/party), empty_shuttle_turfs) + var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/organic/party] + pack.generate(pick_n_take(empty_shuttle_turfs)) + shuttle_spawns.Add(/mob/living/simple_animal/hostile/russian) shuttle_spawns.Add(/mob/living/simple_animal/hostile/russian/ranged) //drops a mateba shuttle_spawns.Add(/mob/living/simple_animal/hostile/bear) @@ -110,7 +112,9 @@ shuttle_spawns.Add(/mob/living/simple_animal/hostile/bear) if(SPIDER_GIFT) - add_crates(list(/datum/supply_packs/emergency/specialops), empty_shuttle_turfs) + var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/emergency/specialops] + pack.generate(pick_n_take(empty_shuttle_turfs)) + shuttle_spawns.Add(/mob/living/simple_animal/hostile/poison/giant_spider) shuttle_spawns.Add(/mob/living/simple_animal/hostile/poison/giant_spider) shuttle_spawns.Add(/mob/living/simple_animal/hostile/poison/giant_spider/nurse) @@ -135,7 +139,6 @@ T = pick(empty_shuttle_turfs) new /obj/effect/spider/stickyweb(T) - if(ANTIDOTE_NEEDED) var/virus_type = pick(/datum/disease/beesease, /datum/disease/brainrot, /datum/disease/fluspanish) var/turf/T @@ -158,22 +161,23 @@ if(DEPARTMENT_RESUPPLY) var/list/crate_types = list( - /datum/supply_packs/emergency/evac, - /datum/supply_packs/security/supplies, - /datum/supply_packs/organic/food, - /datum/supply_packs/emergency/weedcontrol, - /datum/supply_packs/engineering/tools, - /datum/supply_packs/engineering/engiequipment, - /datum/supply_packs/science/robotics, - /datum/supply_packs/science/plasma, - /datum/supply_packs/medical/supplies + /datum/supply_pack/emergency/equipment, + /datum/supply_pack/security/supplies, + /datum/supply_pack/organic/food, + /datum/supply_pack/emergency/weedcontrol, + /datum/supply_pack/engineering/tools, + /datum/supply_pack/engineering/engiequipment, + /datum/supply_pack/science/robotics, + /datum/supply_pack/science/plasma, + /datum/supply_pack/medical/supplies ) - add_crates(crate_types, empty_shuttle_turfs) + for(var/crate in crate_types) + var/datum/supply_pack/pack = SSshuttle.supply_packs[crate] + pack.generate(pick_n_take(empty_shuttle_turfs)) - for(var/i=0,i<5,i++) - var/turf/T = pick(empty_shuttle_turfs) - var/spawn_type = pick(/obj/effect/decal/cleanable/flour, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/oil) - new spawn_type(T) + for(var/i in 1 to 5) + var/decal = pick(/obj/effect/decal/cleanable/flour, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/oil) + new decal(pick_n_take(empty_shuttle_turfs)) var/false_positive = 0 while(shuttle_spawns.len && empty_shuttle_turfs.len) @@ -185,18 +189,8 @@ var/spawn_type = pick_n_take(shuttle_spawns) new spawn_type(T) -/datum/round_event/shuttle_loan/proc/add_crates(list/crate_types, list/turfs) - for(var/crate_type in crate_types) - var/turf/T = pick_n_take(turfs) - var/datum/supply_packs/sp_obj = new crate_type() - var/atom/Crate = new sp_obj.containertype(T) - Crate.name = sp_obj.containername - for(var/type_path in sp_obj.contains) - var/atom/A = new type_path(Crate) - if(sp_obj.amount && A.vars.Find("amount") && A:amount) - A:amount = sp_obj.amount - #undef HIJACK_SYNDIE #undef RUSKY_PARTY #undef SPIDER_GIFT #undef DEPARTMENT_RESUPPLY +#undef ANTIDOTE_NEEDED \ No newline at end of file diff --git a/code/modules/power/supermatter/supermatter_crate.dm b/code/modules/power/supermatter/supermatter_crate.dm deleted file mode 100644 index dd65e75cfc5..00000000000 --- a/code/modules/power/supermatter/supermatter_crate.dm +++ /dev/null @@ -1,7 +0,0 @@ -/datum/supply_packs/engineering/engine/supermatter_shard - name = "Supermatter Shard Crate" - contains = list(/obj/machinery/power/supermatter_shard) - cost = 100 //So cargo thinks twice before killing themselves with it - containertype = /obj/structure/closet/crate/secure - containername = "supermatter shard crate" - access = access_ce diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index c2ed3a6bc2e..c3ed63cec80 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -59,31 +59,23 @@ if(!SSshuttle.shoppinglist.len) return - var/list/emptyTurfs = list() + var/list/empty_turfs = list() for(var/turf/simulated/floor/T in areaInstance) if(T.density || T.contents.len) continue - emptyTurfs += T + empty_turfs += T for(var/datum/supply_order/SO in SSshuttle.shoppinglist) - if(!SO.object) + if(!empty_turfs.len) continue - if(SO.object.cost > SSshuttle.points) + if(SO.pack.cost > SSshuttle.points) continue - var/errors = 0 - if(prob(5)) - errors |= MANIFEST_ERROR_COUNT - if(prob(5)) - errors |= MANIFEST_ERROR_NAME - if(prob(5)) - errors |= MANIFEST_ERROR_ITEM - - var/turf/T = pick_n_take(emptyTurfs) - SO.createObject(T, errors) - - SSshuttle.points -= SO.object.cost + SSshuttle.points -= SO.pack.cost SSshuttle.shoppinglist -= SO + SSshuttle.orderhistory += SO + + SO.generate(pick_n_take(empty_turfs)) /obj/docking_port/mobile/supply/proc/sell() var/crates = 0 @@ -104,48 +96,48 @@ if(!AM.contents.len) SSshuttle.sold_atoms += " (empty)" else - var/slip_found = FALSE + var/manifest_found = FALSE for(var/atom/movable/thing in AM) SSshuttle.sold_atoms += " [thing.name]" - if(!slip_found && istype(thing, /obj/item/weapon/paper/manifest)) - var/obj/item/weapon/paper/manifest/slip = thing - if(slip.stamped && slip.stamped.len) - slip_found = TRUE + if(!manifest_found && istype(thing, /obj/item/weapon/paper/manifest)) + var/obj/item/weapon/paper/manifest/manifest = thing + if(manifest.stamped && manifest.stamped.len) + manifest_found = TRUE var/denied = FALSE - for(var/stamp in slip.stamped) + for(var/stamp in manifest.stamped) if(stamp == /obj/item/weapon/stamp/denied) denied = TRUE break - if(slip.erroneous && denied) // Caught a mistake by Centcom. - pointsEarned = slip.points - SSshuttle.points_per_crate + if(manifest.errors && denied) // Caught a mistake by Centcom. + pointsEarned = manifest.order_cost - SSshuttle.points_per_crate SSshuttle.points += pointsEarned // Give a full refund (minus the crate). - msg += "[pointsEarned]: Station correctly denied package [slip.ordernumber]: " - if(slip.erroneous & MANIFEST_ERROR_NAME) + msg += "+[pointsEarned]: Station correctly denied package #[manifest.order_id]: " + if(manifest.errors & MANIFEST_ERROR_NAME) msg += "Destination station incorrect. " - else if(slip.erroneous & MANIFEST_ERROR_COUNT) - msg += "Packages incorrectly counted. " - else if(slip.erroneous & MANIFEST_ERROR_ITEM) + else if(manifest.errors & MANIFEST_ERROR_CONTENTS) + msg += "Contents incorrectly counted. " + else if(manifest.errors & MANIFEST_ERROR_ITEM) msg += "Package incomplete. " msg += "Points refunded." - else if(!slip.erroneous && !denied) // Approved a slip correctly. - pointsEarned = SSshuttle.points_per_slip + else if(!manifest.errors && !denied) // Approved a manifest correctly. + pointsEarned = SSshuttle.points_per_manifest SSshuttle.points += pointsEarned - msg += "+[pointsEarned]: Package [slip.ordernumber] accorded." - else if(slip.erroneous) // You done goofed. - pointsEarned = -SSshuttle.points_per_slip + msg += "+[pointsEarned]: Package [manifest.order_id] accorded." + else if(manifest.errors) // You done goofed. + pointsEarned = -SSshuttle.points_per_manifest SSshuttle.points += pointsEarned - msg += "[pointsEarned]: Station erroneously approved package [slip.ordernumber]: " - if(slip.erroneous & MANIFEST_ERROR_NAME) + msg += "[pointsEarned]: Station erroneously approved package #[manifest.order_id]: " + if(manifest.errors & MANIFEST_ERROR_NAME) msg += "Destination station incorrect." - else if(slip.erroneous & MANIFEST_ERROR_COUNT) - msg += "Packages incorrectly counted." - else if(slip.erroneous & MANIFEST_ERROR_ITEM) + else if(manifest.errors & MANIFEST_ERROR_CONTENTS) + msg += "Contents incorrectly counted. " + else if(manifest.errors & MANIFEST_ERROR_ITEM) msg += "We found unshipped items on our dock." msg += " Be more vigilant." else - pointsEarned = round(SSshuttle.points_per_crate - slip.points) + pointsEarned = round(SSshuttle.points_per_crate - manifest.order_cost) SSshuttle.points += pointsEarned - msg += "[pointsEarned]: Station erroneously denied package [slip.ordernumber]." + msg += "[pointsEarned]: Station errorsly denied package #[manifest.order_id]." // Sell plasma if(istype(thing, /obj/item/stack/sheet/mineral/plasma)) diff --git a/tgstation.dme b/tgstation.dme index 0c9083863d0..916ffd0c4de 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1409,7 +1409,6 @@ #include "code\modules\power\singularity\particle_accelerator\particle_emitter.dm" #include "code\modules\power\singularity\particle_accelerator\particle_power.dm" #include "code\modules\power\supermatter\supermatter.dm" -#include "code\modules\power\supermatter\supermatter_crate.dm" #include "code\modules\power\tesla\coil.dm" #include "code\modules\power\tesla\energy_ball.dm" #include "code\modules\power\tesla\generator.dm" diff --git a/tgui/assets/tgui.css b/tgui/assets/tgui.css index 89012c18514..98b1eb69346 100644 --- a/tgui/assets/tgui.css +++ b/tgui/assets/tgui.css @@ -1 +1 @@ -body,html{box-sizing:border-box;height:100%;margin:0}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff;background-color:#2a2a2a;background-image:linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4{display:inline-block;margin:0;padding:6px 0}h1{font-size:18px}h2{font-size:16px}h3{font-size:14px}h4{font-size:12px}.wf-inactive .titlebar .minimize:after{content:"-"}.wf-inactive .titlebar .close:after{content:"X"}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgNDI1IDIwMCIgb3BhY2l0eT0iLjMzIj4NCiAgPHBhdGggZD0ibSAxNzguMDAzOTksMC4wMzg2OSAtNzEuMjAzOTMsMCBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTYuNzYxMzQsNi4wMjU1NSBsIDAsMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM0LDYuMDI1NTQgbCA1My4xMDcyLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xMDEuNTQ0MDE4IDcyLjIxNjI4LDEwNC42OTkzOTggYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDUuNzYwMTUsMi44NzAxNiBsIDczLjU1NDg3LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xODcuODcxNDcgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM1LC02LjAyNTU1IGwgLTU0LjcxNjQ0LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTMzLDYuMDI1NTUgbCAwLDEwMi42MTkzNSBMIDE4My43NjQxMywyLjkwODg2IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNS43NjAxNCwtMi44NzAxNyB6IiAvPg0KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPg0KICA8cGF0aCBkPSJtIDQyMC4xNTUzNSwxNzcuODkxMTkgYSAxMy40MTIwMzgsMTIuNTAxODQyIDAgMCAxIC04LjYzMjk1LDIyLjA2OTUxIGwgLTY2LjExODMyLDAgYSA1LjM2NDgxNTIsNS4wMDA3MzcgMCAwIDEgLTUuMzY0ODIsLTUuMDAwNzQgbCAwLC03OS44NzkzMSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed center/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}body.nanotrasen .normal{color:#40628a}body.nanotrasen .good{color:#537d29}body.nanotrasen .average{color:#be6209}body.nanotrasen .bad{color:#b00e0e}body.nanotrasen .highlight{color:#8ba5c4}body.nanotrasen main{display:block;margin-top:32px;padding:2px 6px 0}body.nanotrasen hr{height:2px;background-color:#40628a;border:none}body.nanotrasen .hidden{display:none}body.nanotrasen .bar .barText,body.nanotrasen span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.nanotrasen .bold{font-weight:700}body.nanotrasen .italic{font-style:italic}body.nanotrasen [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.nanotrasen div[data-tooltip],body.nanotrasen span[data-tooltip]{position:relative}body.nanotrasen div[data-tooltip]:after,body.nanotrasen span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.nanotrasen div[data-tooltip]:hover:after,body.nanotrasen span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.nanotrasen div[data-tooltip].tooltip-top:after,body.nanotrasen span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-webkit-transform:translateX(-50%) translateY(8px);-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:after,body.nanotrasen div[data-tooltip].tooltip-top:hover:after,body.nanotrasen span[data-tooltip].tooltip-bottom:after,body.nanotrasen span[data-tooltip].tooltip-top:hover:after{-webkit-transform:translateX(-50%) translateY(-8px);-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:after,body.nanotrasen span[data-tooltip].tooltip-bottom:after{top:100%;left:50%}body.nanotrasen div[data-tooltip].tooltip-bottom:hover:after,body.nanotrasen span[data-tooltip].tooltip-bottom:hover:after{-webkit-transform:translateX(-50%) translateY(8px);-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-left:after,body.nanotrasen span[data-tooltip].tooltip-left:after{top:50%;right:100%;-webkit-transform:translateX(8px) translateY(-50%);-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-left:hover:after,body.nanotrasen div[data-tooltip].tooltip-right:after,body.nanotrasen span[data-tooltip].tooltip-left:hover:after,body.nanotrasen span[data-tooltip].tooltip-right:after{-webkit-transform:translateX(-8px) translateY(-50%);-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:after,body.nanotrasen span[data-tooltip].tooltip-right:after{top:50%;left:100%}body.nanotrasen div[data-tooltip].tooltip-right:hover:after,body.nanotrasen span[data-tooltip].tooltip-right:hover:after{-webkit-transform:translateX(8px) translateY(-50%);-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}body.nanotrasen .bar .barText{position:absolute;top:0;right:3px}body.nanotrasen .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}body.nanotrasen .bar .barFill.good{background-color:#537d29}body.nanotrasen .bar .barFill.average{background-color:#be6209}body.nanotrasen .bar .barFill.bad{background-color:#b00e0e}body.nanotrasen span.button{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.nanotrasen span.button .fa{padding-right:2px}body.nanotrasen span.button.normal{transition:background-color .5s;background-color:#40628a}body.nanotrasen span.button.normal.active:focus,body.nanotrasen span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}body.nanotrasen span.button.disabled{transition:background-color .5s;background-color:#999}body.nanotrasen span.button.disabled.active:focus,body.nanotrasen span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}body.nanotrasen span.button.selected{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.selected.active:focus,body.nanotrasen span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.caution{transition:background-color .5s;background-color:#9a9d00}body.nanotrasen span.button.caution.active:focus,body.nanotrasen span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.nanotrasen span.button.danger{transition:background-color .5s;background-color:#9d0808}body.nanotrasen span.button.danger.active:focus,body.nanotrasen span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.nanotrasen span.button.gridable{width:125px;margin:2px 0}body.nanotrasen span.button+span:not(.button),body.nanotrasen span:not(.button)+span.button{margin-left:5px}body.nanotrasen div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000);background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5)}body.nanotrasen div.display header,body.nanotrasen div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #40628a}body.nanotrasen div.display header .buttonRight,body.nanotrasen div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.nanotrasen div.display article,body.nanotrasen div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.nanotrasen input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#000;background-color:#fff;border:1px solid #272727}body.nanotrasen input::-webkit-input-placeholder{color:#999}body.nanotrasen input::-moz-placeholder{color:#999}body.nanotrasen input:-ms-input-placeholder{color:#999}body.nanotrasen input::placeholder{color:#999}body.nanotrasen input::-ms-clear{display:none}body.nanotrasen svg.linegraph{overflow:hidden}body.nanotrasen div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px)}body.nanotrasen div.notice .label{color:#000}body.nanotrasen div.notice .content:only-of-type{padding:0}body.nanotrasen div.notice hr{background-color:#272727}body.nanotrasen div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-webkit-transform:rotate(1turn);-ms-transform:rotate(1turn);transform:rotate(1turn)}body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.nanotrasen section{display:table-row;width:100%}body.nanotrasen section:not(:first-child){padding-top:4px}body.nanotrasen section.candystripe:nth-child(even){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.nanotrasen section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}body.nanotrasen section .content:not(:last-child){padding-right:16px}body.nanotrasen section .line{width:100%}body.nanotrasen div.subdisplay{width:100%;margin:0}body.nanotrasen header.titlebar .close,body.nanotrasen header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#8ba5c4}body.nanotrasen header.titlebar .close:hover,body.nanotrasen header.titlebar .minimize:hover{color:#9cb2cd}body.nanotrasen header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.nanotrasen header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.nanotrasen header.titlebar .title{position:absolute;top:6px;left:46px;color:#8ba5c4;font-size:16px;white-space:nowrap}body.nanotrasen header.titlebar .minimize{position:absolute;top:6px;right:46px}body.nanotrasen header.titlebar .close{position:absolute;top:4px;right:12px}body.syndicate{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgMjAwIDI4OS43NDIiIG9wYWNpdHk9Ii4zMyI+DQogIDxwYXRoIGQ9Im0gOTMuNTM3Njc3LDAgYyAtMTguMTEzMTI1LDAgLTM0LjIyMDEzMywzLjExMTY0IC00OC4zMjM0ODQsOS4zMzQzNyAtMTMuOTY1MDkyLDYuMjIxNjcgLTI0LjYxMjQ0MiwxNS4wNzExNCAtMzEuOTQwNjUxLDI2LjU0NzEgLTcuMTg5OTM5OCwxMS4zMzc4OSAtMTAuMzAxMjI2NiwyNC43NDkxMSAtMTAuMzAxMjI2Niw0MC4yMzQ3OCAwLDEwLjY0NjYyIDIuNzI1MDAyNiwyMC40NjQ2NSA4LjE3NTExMTYsMjkuNDUyNTggNS42MTUyNzcsOC45ODY4NiAxNC4wMzgyNzcsMTcuMzUyMDQgMjUuMjY4ODIxLDI1LjA5NDM2IDExLjIzMDU0NCw3LjYwNTMxIDI2LjUwNzQyMSwxNS40MTgzNSA0NS44MzA1MTQsMjMuNDM3ODIgMTkuOTgzNzQ4LDguMjk1NTcgMzQuODQ4ODQ4LDE1LjU1NDcxIDQ0LjU5Mjk5OCwyMS43NzYzOCA5Ljc0NDE0LDYuMjIyNzMgMTYuNzYxNywxMi44NTg1IDIxLjA1NTcyLDE5LjkwOTUxIDQuMjk0MDQsNy4wNTIwOCA2LjQ0MTkzLDE1Ljc2NDA4IDYuNDQxOTMsMjYuMTM0NTkgMCwxNi4xNzcwMiAtNS4yMDE5NiwyOC40ODIyMiAtMTUuNjA2NzMsMzYuOTE2ODIgLTEwLjIzOTYsOC40MzQ3IC0yNS4wMjIwMywxMi42NTIzIC00NC4zNDUxNjksMTIuNjUyMyAtMTQuMDM4MTcxLDAgLTI1LjUxNTI0NywtMS42NTk0IC0zNC40MzM2MTgsLTQuOTc3NyAtOC45MTgzNywtMy40NTY2IC0xNi4xODU1NzIsLTguNzExMyAtMjEuODAwODM5LC0xNS43NjMzIC01LjYxNTI3NywtNy4wNTIxIC0xMC4wNzQ3OTUsLTE2LjY2MDg4IC0xMy4zNzc4OTksLTI4LjgyODEyIGwgLTI0Ljc3MzE2MjYyOTM5NDUsMCAwLDU2LjgyNjMyIEMgMzMuODU2NzY5LDI4Ni4wNzYwMSA2My43NDkwNCwyODkuNzQyMDEgODkuNjc4MzgzLDI4OS43NDIwMSBjIDE2LjAyMDAyNywwIDMwLjcxOTc4NywtMS4zODI3IDQ0LjA5NzMzNywtNC4xNDc5IDEzLjU0MjcyLC0yLjkwNDMgMjUuMTA0MSwtNy40Njc2IDM0LjY4MzA5LC0xMy42ODkzIDkuNzQ0MTMsLTYuMzU5NyAxNy4zNDA0MiwtMTQuNTE5NSAyMi43OTA1MiwtMjQuNDc0OCA1LjQ1MDEsLTEwLjA5MzMyIDguMTc1MTEsLTIyLjM5OTU5IDguMTc1MTEsLTM2LjkxNjgyIDAsLTEyLjk5NzY0IC0zLjMwMjEsLTI0LjMzNTM5IC05LjkwODI5LC0zNC4wMTQ2IC02LjQ0MTA1LC05LjgxNzI1IC0xNS41MjU0NSwtMTguNTI3MDcgLTI3LjI1MTQ2LC0yNi4xMzEzMyAtMTEuNTYwODUsLTcuNjA0MjcgLTI3LjkxMDgzLC0xNS44MzE0MiAtNDkuMDUwNjYsLTI0LjY4MDIyIC0xNy41MDY0NCwtNy4xOTAxMiAtMzAuNzE5NjY4LC0xMy42ODk0OCAtMzkuNjM4MDM4LC0xOS40OTcwMSAtOC45MTgzNzEsLTUuODA3NTIgLTE4LjYwNzQ3NCwtMTIuNDM0MDkgLTI0LjA5NjUyNCwtMTguODc0MTcgLTUuNDI2MDQzLC02LjM2NjE2IC05LjY1ODgyNiwtMTUuMDcwMDMgLTkuNjU4ODI2LC0yNC44ODcyOSAwLC05LjI2NDAxIDIuMDc1NDE0LC0xNy4yMTM0NSA2LjIyMzQ1NCwtMjMuODUwMzMgMTEuMDk4Mjk4LC0xNC4zOTc0OCA0MS4yODY2MzgsLTEuNzk1MDcgNDUuMDc1NjA5LDI0LjM0NzYyIDQuODM5MzkyLDYuNzc0OTEgOC44NDkzNSwxNi4yNDcyOSAxMi4wMjk1MTUsMjguNDE1NiBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNC40NzgyNSwtNS45MjQ0OCAtOS45NTQ4OCwtMTAuNjMyMjIgLTE1LjkwODM3LC0xNC4zNzQxMSAxLjY0MDU1LDAuNDc5MDUgMy4xOTAzOSwxLjAyMzc2IDQuNjM4NjUsMS42NDAyNCA2LjQ5ODYxLDIuNjI2MDcgMTIuMTY3OTMsNy4zMjc0NyAxNy4wMDczLDE0LjEwMzQ1IDQuODM5MzksNi43NzQ5MSA4Ljg0OTM1LDE2LjI0NTY3IDEyLjAyOTUyLDI4LjQxMzk3IDAsMCA4LjQ4MTI4LC0wLjEyODk0IDguNDg5NzgsLTAuMDAyIDAuNDE3NzYsNi40MTQ5NCAtMS43NTMzOSw5LjQ1Mjg2IC00LjEyMzQyLDEyLjU2MTA0IC0yLjQxNzQsMy4xNjk3OCAtNS4xNDQ4Niw2Ljc4OTczIC00LjAwMjc4LDEzLjAwMjkgMS41MDc4Niw4LjIwMzE4IDEwLjE4MzU0LDEwLjU5NjQyIDE0LjYyMTk0LDkuMzExNTQgLTMuMzE4NDIsLTAuNDk5MTEgLTUuMzE4NTUsLTEuNzQ5NDggLTUuMzE4NTUsLTEuNzQ5NDggMCwwIDEuODc2NDYsMC45OTg2OCA1LjY1MTE3LC0xLjM1OTgxIC0zLjI3Njk1LDAuOTU1NzEgLTEwLjcwNTI5LC0wLjc5NzM4IC0xMS44MDEyNSwtNi43NjMxMyAtMC45NTc1MiwtNS4yMDg2MSAwLjk0NjU0LC03LjI5NTE0IDMuNDAxMTMsLTEwLjUxNDgyIDIuNDU0NjIsLTMuMjE5NjggNS4yODQyNiwtNi45NTgzMSA0LjY4NDMsLTE0LjQ4ODI0IGwgMC4wMDMsMC4wMDIgOC45MjY3NiwwIDAsLTU1Ljk5OTY3IGMgLTE1LjA3MTI1LC0zLjg3MTY4IC0yNy42NTMxNCwtNi4zNjA0MiAtMzcuNzQ2NzEsLTcuNDY1ODYgLTkuOTU1MzEsLTEuMTA3NTUgLTIwLjE4ODIzLC0xLjY1OTgxIC0zMC42OTY2MTMsLTEuNjU5ODEgeiBtIDcwLjMyMTYwMywxNy4zMDg5MyAwLjIzODA1LDQwLjMwNDkgYyAxLjMxODA4LDEuMjI2NjYgMi40Mzk2NSwyLjI3ODE1IDMuMzQwODEsMy4xMDYwMiA0LjgzOTM5LDYuNzc0OTEgOC44NDkzNCwxNi4yNDU2NiAxMi4wMjk1MSwyOC40MTM5NyBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNi42NzczMSwtNC41OTM4MSAtMTkuODM2NDMsLTEwLjQ3MzA5IC0zNi4xNDA3MSwtMTUuODI1MjIgeiBtIC0yOC4xMjA0OSw1LjYwNTUxIDguNTY0NzksMTcuNzE2NTUgYyAtMTEuOTcwMzcsLTYuNDY2OTcgLTEzLjg0Njc4LC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk3MDUsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IG0gMTUuMjIxOTUsMjQuMDA4NDggOC41NjQ3OSwxNy43MTY1NSBjIC0xMS45NzAzOCwtNi40NjY5NyAtMTMuODQ2NzksLTkuNzE3MjYgLTguNTY0NzksLTE3LjcxNjU1IHogbSAyMi43OTcwNCwwIGMgMi43NzE1LDcuOTk5MjkgMS43ODc0MSwxMS4yNDk1OCAtNC40OTM1NCwxNy43MTY1NSBsIDQuNDkzNTQsLTE3LjcxNjU1IHogbSAtOTkuMTEzODQsMi4yMDc2NCA4LjU2NDc5LDE3LjcxNjU1IGMgLTExLjk3MDM4MiwtNi40NjY5NyAtMTMuODQ2NzgyLC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk1NDIsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed center/70% 70%,linear-gradient(180deg,#750000 0,#340404);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff750000',endColorstr='#ff340404',GradientType=0)}body.syndicate .normal{color:#40628a}body.syndicate .good{color:#73e573}body.syndicate .average{color:#be6209}body.syndicate .bad{color:#b00e0e}body.syndicate .highlight{color:#000}body.syndicate main{display:block;margin-top:32px;padding:2px 6px 0}body.syndicate hr{height:2px;background-color:#272727;border:none}body.syndicate .hidden{display:none}body.syndicate .bar .barText,body.syndicate span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.syndicate .bold{font-weight:700}body.syndicate .italic{font-style:italic}body.syndicate [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.syndicate div[data-tooltip],body.syndicate span[data-tooltip]{position:relative}body.syndicate div[data-tooltip]:after,body.syndicate span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.syndicate div[data-tooltip]:hover:after,body.syndicate span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.syndicate div[data-tooltip].tooltip-top:after,body.syndicate span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-webkit-transform:translateX(-50%) translateY(8px);-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-bottom:after,body.syndicate div[data-tooltip].tooltip-top:hover:after,body.syndicate span[data-tooltip].tooltip-bottom:after,body.syndicate span[data-tooltip].tooltip-top:hover:after{-webkit-transform:translateX(-50%) translateY(-8px);-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:after,body.syndicate span[data-tooltip].tooltip-bottom:after{top:100%;left:50%}body.syndicate div[data-tooltip].tooltip-bottom:hover:after,body.syndicate span[data-tooltip].tooltip-bottom:hover:after{-webkit-transform:translateX(-50%) translateY(8px);-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-left:after,body.syndicate span[data-tooltip].tooltip-left:after{top:50%;right:100%;-webkit-transform:translateX(8px) translateY(-50%);-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-left:hover:after,body.syndicate div[data-tooltip].tooltip-right:after,body.syndicate span[data-tooltip].tooltip-left:hover:after,body.syndicate span[data-tooltip].tooltip-right:after{-webkit-transform:translateX(-8px) translateY(-50%);-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:after,body.syndicate span[data-tooltip].tooltip-right:after{top:50%;left:100%}body.syndicate div[data-tooltip].tooltip-right:hover:after,body.syndicate span[data-tooltip].tooltip-right:hover:after{-webkit-transform:translateX(8px) translateY(-50%);-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #000;background:#272727}body.syndicate .bar .barText{position:absolute;top:0;right:3px}body.syndicate .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#000}body.syndicate .bar .barFill.good{background-color:#73e573}body.syndicate .bar .barFill.average{background-color:#be6209}body.syndicate .bar .barFill.bad{background-color:#b00e0e}body.syndicate span.button{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.syndicate span.button .fa{padding-right:2px}body.syndicate span.button.normal{transition:background-color .5s;background-color:#397439}body.syndicate span.button.normal.active:focus,body.syndicate span.button.normal.active:hover{transition:background-color .25s;background-color:#4a964a;outline:0}body.syndicate span.button.disabled{transition:background-color .5s;background-color:#363636}body.syndicate span.button.disabled.active:focus,body.syndicate span.button.disabled.active:hover{transition:background-color .25s;background-color:#545454;outline:0}body.syndicate span.button.selected{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.selected.active:focus,body.syndicate span.button.selected.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.caution{transition:background-color .5s;background-color:#be6209}body.syndicate span.button.caution.active:focus,body.syndicate span.button.caution.active:hover{transition:background-color .25s;background-color:#eb790b;outline:0}body.syndicate span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.syndicate span.button.danger.active:focus,body.syndicate span.button.danger.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.syndicate span.button.gridable{width:125px;margin:2px 0}body.syndicate span.button+span:not(.button),body.syndicate span:not(.button)+span.button{margin-left:5px}body.syndicate div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000);background-color:rgba(0,0,0,.5);box-shadow:inset 0 0 5px rgba(0,0,0,.75)}body.syndicate div.display header,body.syndicate div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #272727}body.syndicate div.display header .buttonRight,body.syndicate div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.syndicate div.display article,body.syndicate div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.syndicate input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#fff;background-color:#9d0808;border:1px solid #272727}body.syndicate input::-webkit-input-placeholder{color:#999}body.syndicate input::-moz-placeholder{color:#999}body.syndicate input:-ms-input-placeholder{color:#999}body.syndicate input::placeholder{color:#999}body.syndicate input::-ms-clear{display:none}body.syndicate svg.linegraph{overflow:hidden}body.syndicate div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#750000;background-image:repeating-linear-gradient(-45deg,#750000,#750000 10px,#910101 0,#910101 20px)}body.syndicate div.notice .label{color:#000}body.syndicate div.notice .content:only-of-type{padding:0}body.syndicate div.notice hr{background-color:#272727}body.syndicate div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-webkit-transform:rotate(1turn);-ms-transform:rotate(1turn);transform:rotate(1turn)}body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.syndicate section{display:table-row;width:100%}body.syndicate section:not(:first-child){padding-top:4px}body.syndicate section.candystripe:nth-child(even){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.syndicate section .label{width:1%;padding-right:32px;white-space:nowrap;color:#fff}body.syndicate section .content:not(:last-child){padding-right:16px}body.syndicate section .line{width:100%}body.syndicate div.subdisplay{width:100%;margin:0}body.syndicate header.titlebar .close,body.syndicate header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#e74242}body.syndicate header.titlebar .close:hover,body.syndicate header.titlebar .minimize:hover{color:#eb5e5e}body.syndicate header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.syndicate header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.syndicate header.titlebar .title{position:absolute;top:6px;left:46px;color:#e74242;font-size:16px;white-space:nowrap}body.syndicate header.titlebar .minimize{position:absolute;top:6px;right:46px}body.syndicate header.titlebar .close{position:absolute;top:4px;right:12px} \ No newline at end of file +body,html{box-sizing:border-box;height:100%;margin:0}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff;background-color:#2a2a2a;background-image:linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4{display:inline-block;margin:0;padding:6px 0}h1{font-size:18px}h2{font-size:16px}h3{font-size:14px}h4{font-size:12px}.wf-inactive .titlebar .minimize:after{content:"-"}.wf-inactive .titlebar .close:after{content:"X"}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCA0MjUgMjAwIiBvcGFjaXR5PSIuMzMiPgogIDxwYXRoIGQ9Im0gMTc4LjAwMzk5LDAuMDM4NjkgLTcxLjIwMzkzLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM0LDYuMDI1NTUgbCAwLDE4Ny44NzE0NyBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgNi43NjEzNCw2LjAyNTU0IGwgNTMuMTA3MiwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTAxLjU0NDAxOCA3Mi4yMTYyOCwxMDQuNjk5Mzk4IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA1Ljc2MDE1LDIuODcwMTYgbCA3My41NTQ4NywwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzNSwtNi4wMjU1NSBsIC01NC43MTY0NCwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzMyw2LjAyNTU1IGwgMCwxMDIuNjE5MzUgTCAxODMuNzY0MTMsMi45MDg4NiBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTUuNzYwMTQsLTIuODcwMTcgeiIgLz4KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPgogIDxwYXRoIGQ9Im0gNDIwLjE1NTM1LDE3Ny44OTExOSBhIDEzLjQxMjAzOCwxMi41MDE4NDIgMCAwIDEgLTguNjMyOTUsMjIuMDY5NTEgbCAtNjYuMTE4MzIsMCBhIDUuMzY0ODE1Miw1LjAwMDczNyAwIDAgMSAtNS4zNjQ4MiwtNS4wMDA3NCBsIDAsLTc5Ljg3OTMxIHoiIC8+Cjwvc3ZnPgo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4KPCEtLSBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS80LjAvIC0tPgo=") no-repeat fixed center/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}body.nanotrasen .normal{color:#40628a}body.nanotrasen .good{color:#537d29}body.nanotrasen .average{color:#be6209}body.nanotrasen .bad{color:#b00e0e}body.nanotrasen .highlight{color:#8ba5c4}body.nanotrasen main{display:block;margin-top:32px;padding:2px 6px 0}body.nanotrasen hr{height:2px;background-color:#40628a;border:none}body.nanotrasen .hidden{display:none}body.nanotrasen .bar .barText,body.nanotrasen span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.nanotrasen .bold{font-weight:700}body.nanotrasen .italic{font-style:italic}body.nanotrasen [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.nanotrasen div[data-tooltip],body.nanotrasen span[data-tooltip]{position:relative}body.nanotrasen div[data-tooltip]:after,body.nanotrasen span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.nanotrasen div[data-tooltip]:hover:after,body.nanotrasen span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.nanotrasen div[data-tooltip].tooltip-top:after,body.nanotrasen span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-webkit-transform:translateX(-50%) translateY(8px);-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:after,body.nanotrasen div[data-tooltip].tooltip-top:hover:after,body.nanotrasen span[data-tooltip].tooltip-bottom:after,body.nanotrasen span[data-tooltip].tooltip-top:hover:after{-webkit-transform:translateX(-50%) translateY(-8px);-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:after,body.nanotrasen span[data-tooltip].tooltip-bottom:after{top:100%;left:50%}body.nanotrasen div[data-tooltip].tooltip-bottom:hover:after,body.nanotrasen span[data-tooltip].tooltip-bottom:hover:after{-webkit-transform:translateX(-50%) translateY(8px);-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-left:after,body.nanotrasen span[data-tooltip].tooltip-left:after{top:50%;right:100%;-webkit-transform:translateX(8px) translateY(-50%);-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-left:hover:after,body.nanotrasen div[data-tooltip].tooltip-right:after,body.nanotrasen span[data-tooltip].tooltip-left:hover:after,body.nanotrasen span[data-tooltip].tooltip-right:after{-webkit-transform:translateX(-8px) translateY(-50%);-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:after,body.nanotrasen span[data-tooltip].tooltip-right:after{top:50%;left:100%}body.nanotrasen div[data-tooltip].tooltip-right:hover:after,body.nanotrasen span[data-tooltip].tooltip-right:hover:after{-webkit-transform:translateX(8px) translateY(-50%);-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}body.nanotrasen .bar .barText{position:absolute;top:0;right:3px}body.nanotrasen .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}body.nanotrasen .bar .barFill.good{background-color:#537d29}body.nanotrasen .bar .barFill.average{background-color:#be6209}body.nanotrasen .bar .barFill.bad{background-color:#b00e0e}body.nanotrasen span.button{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.nanotrasen span.button .fa{padding-right:2px}body.nanotrasen span.button.normal{transition:background-color .5s;background-color:#40628a}body.nanotrasen span.button.normal.active:focus,body.nanotrasen span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}body.nanotrasen span.button.disabled{transition:background-color .5s;background-color:#999}body.nanotrasen span.button.disabled.active:focus,body.nanotrasen span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}body.nanotrasen span.button.selected{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.selected.active:focus,body.nanotrasen span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.caution{transition:background-color .5s;background-color:#9a9d00}body.nanotrasen span.button.caution.active:focus,body.nanotrasen span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.nanotrasen span.button.danger{transition:background-color .5s;background-color:#9d0808}body.nanotrasen span.button.danger.active:focus,body.nanotrasen span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.nanotrasen span.button.gridable{width:125px;margin:2px 0}body.nanotrasen span.button+span:not(.button),body.nanotrasen span:not(.button)+span.button{margin-left:5px}body.nanotrasen div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000);background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5)}body.nanotrasen div.display header,body.nanotrasen div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #40628a}body.nanotrasen div.display header .buttonRight,body.nanotrasen div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.nanotrasen div.display article,body.nanotrasen div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.nanotrasen input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#000;background-color:#fff;border:1px solid #272727}body.nanotrasen input::-webkit-input-placeholder{color:#999}body.nanotrasen input::-moz-placeholder{color:#999}body.nanotrasen input:-ms-input-placeholder{color:#999}body.nanotrasen input::placeholder{color:#999}body.nanotrasen input::-ms-clear{display:none}body.nanotrasen svg.linegraph{overflow:hidden}body.nanotrasen div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px)}body.nanotrasen div.notice .label{color:#000}body.nanotrasen div.notice .content:only-of-type{padding:0}body.nanotrasen div.notice hr{background-color:#272727}body.nanotrasen div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-webkit-transform:rotate(1turn);-ms-transform:rotate(1turn);transform:rotate(1turn)}body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.nanotrasen section{display:table-row;width:100%}body.nanotrasen section:not(:first-child){padding-top:4px}body.nanotrasen section.candystripe:nth-child(even){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.nanotrasen section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}body.nanotrasen section .content:not(:last-child){padding-right:16px}body.nanotrasen section .line{width:100%}body.nanotrasen div.subdisplay{width:100%;margin:0}body.nanotrasen header.titlebar .close,body.nanotrasen header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#8ba5c4}body.nanotrasen header.titlebar .close:hover,body.nanotrasen header.titlebar .minimize:hover{color:#9cb2cd}body.nanotrasen header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.nanotrasen header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.nanotrasen header.titlebar .title{position:absolute;top:6px;left:46px;color:#8ba5c4;font-size:16px;white-space:nowrap}body.nanotrasen header.titlebar .minimize{position:absolute;top:6px;right:46px}body.nanotrasen header.titlebar .close{position:absolute;top:4px;right:12px}body.syndicate{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCAyMDAgMjg5Ljc0MiIgb3BhY2l0eT0iLjMzIj4KICA8cGF0aCBkPSJtIDkzLjUzNzY3NywwIGMgLTE4LjExMzEyNSwwIC0zNC4yMjAxMzMsMy4xMTE2NCAtNDguMzIzNDg0LDkuMzM0MzcgLTEzLjk2NTA5Miw2LjIyMTY3IC0yNC42MTI0NDIsMTUuMDcxMTQgLTMxLjk0MDY1MSwyNi41NDcxIC03LjE4OTkzOTgsMTEuMzM3ODkgLTEwLjMwMTIyNjYsMjQuNzQ5MTEgLTEwLjMwMTIyNjYsNDAuMjM0NzggMCwxMC42NDY2MiAyLjcyNTAwMjYsMjAuNDY0NjUgOC4xNzUxMTE2LDI5LjQ1MjU4IDUuNjE1Mjc3LDguOTg2ODYgMTQuMDM4Mjc3LDE3LjM1MjA0IDI1LjI2ODgyMSwyNS4wOTQzNiAxMS4yMzA1NDQsNy42MDUzMSAyNi41MDc0MjEsMTUuNDE4MzUgNDUuODMwNTE0LDIzLjQzNzgyIDE5Ljk4Mzc0OCw4LjI5NTU3IDM0Ljg0ODg0OCwxNS41NTQ3MSA0NC41OTI5OTgsMjEuNzc2MzggOS43NDQxNCw2LjIyMjczIDE2Ljc2MTcsMTIuODU4NSAyMS4wNTU3MiwxOS45MDk1MSA0LjI5NDA0LDcuMDUyMDggNi40NDE5MywxNS43NjQwOCA2LjQ0MTkzLDI2LjEzNDU5IDAsMTYuMTc3MDIgLTUuMjAxOTYsMjguNDgyMjIgLTE1LjYwNjczLDM2LjkxNjgyIC0xMC4yMzk2LDguNDM0NyAtMjUuMDIyMDMsMTIuNjUyMyAtNDQuMzQ1MTY5LDEyLjY1MjMgLTE0LjAzODE3MSwwIC0yNS41MTUyNDcsLTEuNjU5NCAtMzQuNDMzNjE4LC00Ljk3NzcgLTguOTE4MzcsLTMuNDU2NiAtMTYuMTg1NTcyLC04LjcxMTMgLTIxLjgwMDgzOSwtMTUuNzYzMyAtNS42MTUyNzcsLTcuMDUyMSAtMTAuMDc0Nzk1LC0xNi42NjA4OCAtMTMuMzc3ODk5LC0yOC44MjgxMiBsIC0yNC43NzMxNjI2MjkzOTQ1LDAgMCw1Ni44MjYzMiBDIDMzLjg1Njc2OSwyODYuMDc2MDEgNjMuNzQ5MDQsMjg5Ljc0MjAxIDg5LjY3ODM4MywyODkuNzQyMDEgYyAxNi4wMjAwMjcsMCAzMC43MTk3ODcsLTEuMzgyNyA0NC4wOTczMzcsLTQuMTQ3OSAxMy41NDI3MiwtMi45MDQzIDI1LjEwNDEsLTcuNDY3NiAzNC42ODMwOSwtMTMuNjg5MyA5Ljc0NDEzLC02LjM1OTcgMTcuMzQwNDIsLTE0LjUxOTUgMjIuNzkwNTIsLTI0LjQ3NDggNS40NTAxLC0xMC4wOTMzMiA4LjE3NTExLC0yMi4zOTk1OSA4LjE3NTExLC0zNi45MTY4MiAwLC0xMi45OTc2NCAtMy4zMDIxLC0yNC4zMzUzOSAtOS45MDgyOSwtMzQuMDE0NiAtNi40NDEwNSwtOS44MTcyNSAtMTUuNTI1NDUsLTE4LjUyNzA3IC0yNy4yNTE0NiwtMjYuMTMxMzMgLTExLjU2MDg1LC03LjYwNDI3IC0yNy45MTA4MywtMTUuODMxNDIgLTQ5LjA1MDY2LC0yNC42ODAyMiAtMTcuNTA2NDQsLTcuMTkwMTIgLTMwLjcxOTY2OCwtMTMuNjg5NDggLTM5LjYzODAzOCwtMTkuNDk3MDEgLTguOTE4MzcxLC01LjgwNzUyIC0xOC42MDc0NzQsLTEyLjQzNDA5IC0yNC4wOTY1MjQsLTE4Ljg3NDE3IC01LjQyNjA0MywtNi4zNjYxNiAtOS42NTg4MjYsLTE1LjA3MDAzIC05LjY1ODgyNiwtMjQuODg3MjkgMCwtOS4yNjQwMSAyLjA3NTQxNCwtMTcuMjEzNDUgNi4yMjM0NTQsLTIzLjg1MDMzIDExLjA5ODI5OCwtMTQuMzk3NDggNDEuMjg2NjM4LC0xLjc5NTA3IDQ1LjA3NTYwOSwyNC4zNDc2MiA0LjgzOTM5Miw2Ljc3NDkxIDguODQ5MzUsMTYuMjQ3MjkgMTIuMDI5NTE1LDI4LjQxNTYgbCAyMC41MzIzNCwwIDAsLTU1Ljk5OTY3IGMgLTQuNDc4MjUsLTUuOTI0NDggLTkuOTU0ODgsLTEwLjYzMjIyIC0xNS45MDgzNywtMTQuMzc0MTEgMS42NDA1NSwwLjQ3OTA1IDMuMTkwMzksMS4wMjM3NiA0LjYzODY1LDEuNjQwMjQgNi40OTg2MSwyLjYyNjA3IDEyLjE2NzkzLDcuMzI3NDcgMTcuMDA3MywxNC4xMDM0NSA0LjgzOTM5LDYuNzc0OTEgOC44NDkzNSwxNi4yNDU2NyAxMi4wMjk1MiwyOC40MTM5NyAwLDAgOC40ODEyOCwtMC4xMjg5NCA4LjQ4OTc4LC0wLjAwMiAwLjQxNzc2LDYuNDE0OTQgLTEuNzUzMzksOS40NTI4NiAtNC4xMjM0MiwxMi41NjEwNCAtMi40MTc0LDMuMTY5NzggLTUuMTQ0ODYsNi43ODk3MyAtNC4wMDI3OCwxMy4wMDI5IDEuNTA3ODYsOC4yMDMxOCAxMC4xODM1NCwxMC41OTY0MiAxNC42MjE5NCw5LjMxMTU0IC0zLjMxODQyLC0wLjQ5OTExIC01LjMxODU1LC0xLjc0OTQ4IC01LjMxODU1LC0xLjc0OTQ4IDAsMCAxLjg3NjQ2LDAuOTk4NjggNS42NTExNywtMS4zNTk4MSAtMy4yNzY5NSwwLjk1NTcxIC0xMC43MDUyOSwtMC43OTczOCAtMTEuODAxMjUsLTYuNzYzMTMgLTAuOTU3NTIsLTUuMjA4NjEgMC45NDY1NCwtNy4yOTUxNCAzLjQwMTEzLC0xMC41MTQ4MiAyLjQ1NDYyLC0zLjIxOTY4IDUuMjg0MjYsLTYuOTU4MzEgNC42ODQzLC0xNC40ODgyNCBsIDAuMDAzLDAuMDAyIDguOTI2NzYsMCAwLC01NS45OTk2NyBjIC0xNS4wNzEyNSwtMy44NzE2OCAtMjcuNjUzMTQsLTYuMzYwNDIgLTM3Ljc0NjcxLC03LjQ2NTg2IC05Ljk1NTMxLC0xLjEwNzU1IC0yMC4xODgyMywtMS42NTk4MSAtMzAuNjk2NjEzLC0xLjY1OTgxIHogbSA3MC4zMjE2MDMsMTcuMzA4OTMgMC4yMzgwNSw0MC4zMDQ5IGMgMS4zMTgwOCwxLjIyNjY2IDIuNDM5NjUsMi4yNzgxNSAzLjM0MDgxLDMuMTA2MDIgNC44MzkzOSw2Ljc3NDkxIDguODQ5MzQsMTYuMjQ1NjYgMTIuMDI5NTEsMjguNDEzOTcgbCAyMC41MzIzNCwwIDAsLTU1Ljk5OTY3IGMgLTYuNjc3MzEsLTQuNTkzODEgLTE5LjgzNjQzLC0xMC40NzMwOSAtMzYuMTQwNzEsLTE1LjgyNTIyIHogbSAtMjguMTIwNDksNS42MDU1MSA4LjU2NDc5LDE3LjcxNjU1IGMgLTExLjk3MDM3LC02LjQ2Njk3IC0xMy44NDY3OCwtOS43MTcyNiAtOC41NjQ3OSwtMTcuNzE2NTUgeiBtIDIyLjc5NzA1LDAgYyAyLjc3MTUsNy45OTkyOSAxLjc4NzQxLDExLjI0OTU4IC00LjQ5MzU0LDE3LjcxNjU1IGwgNC40OTM1NCwtMTcuNzE2NTUgeiBtIDE1LjIyMTk1LDI0LjAwODQ4IDguNTY0NzksMTcuNzE2NTUgYyAtMTEuOTcwMzgsLTYuNDY2OTcgLTEzLjg0Njc5LC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk3MDQsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IG0gLTk5LjExMzg0LDIuMjA3NjQgOC41NjQ3OSwxNy43MTY1NSBjIC0xMS45NzAzODIsLTYuNDY2OTcgLTEzLjg0Njc4MiwtOS43MTcyNiAtOC41NjQ3OSwtMTcuNzE2NTUgeiBtIDIyLjc5NTQyLDAgYyAyLjc3MTUsNy45OTkyOSAxLjc4NzQxLDExLjI0OTU4IC00LjQ5MzU0LDE3LjcxNjU1IGwgNC40OTM1NCwtMTcuNzE2NTUgeiIgLz4KPC9zdmc+CjwhLS0gVGhpcyB3b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIGEgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZUFsaWtlIDQuMCBJbnRlcm5hdGlvbmFsIExpY2Vuc2UuIC0tPgo8IS0tIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzQuMC8gLS0+Cg==") no-repeat fixed center/70% 70%,linear-gradient(180deg,#750000 0,#340404);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff750000',endColorstr='#ff340404',GradientType=0)}body.syndicate .normal{color:#40628a}body.syndicate .good{color:#73e573}body.syndicate .average{color:#be6209}body.syndicate .bad{color:#b00e0e}body.syndicate .highlight{color:#000}body.syndicate main{display:block;margin-top:32px;padding:2px 6px 0}body.syndicate hr{height:2px;background-color:#272727;border:none}body.syndicate .hidden{display:none}body.syndicate .bar .barText,body.syndicate span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.syndicate .bold{font-weight:700}body.syndicate .italic{font-style:italic}body.syndicate [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.syndicate div[data-tooltip],body.syndicate span[data-tooltip]{position:relative}body.syndicate div[data-tooltip]:after,body.syndicate span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.syndicate div[data-tooltip]:hover:after,body.syndicate span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.syndicate div[data-tooltip].tooltip-top:after,body.syndicate span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-webkit-transform:translateX(-50%) translateY(8px);-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-bottom:after,body.syndicate div[data-tooltip].tooltip-top:hover:after,body.syndicate span[data-tooltip].tooltip-bottom:after,body.syndicate span[data-tooltip].tooltip-top:hover:after{-webkit-transform:translateX(-50%) translateY(-8px);-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:after,body.syndicate span[data-tooltip].tooltip-bottom:after{top:100%;left:50%}body.syndicate div[data-tooltip].tooltip-bottom:hover:after,body.syndicate span[data-tooltip].tooltip-bottom:hover:after{-webkit-transform:translateX(-50%) translateY(8px);-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-left:after,body.syndicate span[data-tooltip].tooltip-left:after{top:50%;right:100%;-webkit-transform:translateX(8px) translateY(-50%);-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-left:hover:after,body.syndicate div[data-tooltip].tooltip-right:after,body.syndicate span[data-tooltip].tooltip-left:hover:after,body.syndicate span[data-tooltip].tooltip-right:after{-webkit-transform:translateX(-8px) translateY(-50%);-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:after,body.syndicate span[data-tooltip].tooltip-right:after{top:50%;left:100%}body.syndicate div[data-tooltip].tooltip-right:hover:after,body.syndicate span[data-tooltip].tooltip-right:hover:after{-webkit-transform:translateX(8px) translateY(-50%);-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #000;background:#272727}body.syndicate .bar .barText{position:absolute;top:0;right:3px}body.syndicate .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#000}body.syndicate .bar .barFill.good{background-color:#73e573}body.syndicate .bar .barFill.average{background-color:#be6209}body.syndicate .bar .barFill.bad{background-color:#b00e0e}body.syndicate span.button{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.syndicate span.button .fa{padding-right:2px}body.syndicate span.button.normal{transition:background-color .5s;background-color:#397439}body.syndicate span.button.normal.active:focus,body.syndicate span.button.normal.active:hover{transition:background-color .25s;background-color:#4a964a;outline:0}body.syndicate span.button.disabled{transition:background-color .5s;background-color:#363636}body.syndicate span.button.disabled.active:focus,body.syndicate span.button.disabled.active:hover{transition:background-color .25s;background-color:#545454;outline:0}body.syndicate span.button.selected{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.selected.active:focus,body.syndicate span.button.selected.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.caution{transition:background-color .5s;background-color:#be6209}body.syndicate span.button.caution.active:focus,body.syndicate span.button.caution.active:hover{transition:background-color .25s;background-color:#eb790b;outline:0}body.syndicate span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.syndicate span.button.danger.active:focus,body.syndicate span.button.danger.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.syndicate span.button.gridable{width:125px;margin:2px 0}body.syndicate span.button+span:not(.button),body.syndicate span:not(.button)+span.button{margin-left:5px}body.syndicate div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000);background-color:rgba(0,0,0,.5);box-shadow:inset 0 0 5px rgba(0,0,0,.75)}body.syndicate div.display header,body.syndicate div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #272727}body.syndicate div.display header .buttonRight,body.syndicate div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.syndicate div.display article,body.syndicate div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.syndicate input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#fff;background-color:#9d0808;border:1px solid #272727}body.syndicate input::-webkit-input-placeholder{color:#999}body.syndicate input::-moz-placeholder{color:#999}body.syndicate input:-ms-input-placeholder{color:#999}body.syndicate input::placeholder{color:#999}body.syndicate input::-ms-clear{display:none}body.syndicate svg.linegraph{overflow:hidden}body.syndicate div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#750000;background-image:repeating-linear-gradient(-45deg,#750000,#750000 10px,#910101 0,#910101 20px)}body.syndicate div.notice .label{color:#000}body.syndicate div.notice .content:only-of-type{padding:0}body.syndicate div.notice hr{background-color:#272727}body.syndicate div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-webkit-transform:rotate(1turn);-ms-transform:rotate(1turn);transform:rotate(1turn)}body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.syndicate section{display:table-row;width:100%}body.syndicate section:not(:first-child){padding-top:4px}body.syndicate section.candystripe:nth-child(even){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.syndicate section .label{width:1%;padding-right:32px;white-space:nowrap;color:#fff}body.syndicate section .content:not(:last-child){padding-right:16px}body.syndicate section .line{width:100%}body.syndicate div.subdisplay{width:100%;margin:0}body.syndicate header.titlebar .close,body.syndicate header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#e74242}body.syndicate header.titlebar .close:hover,body.syndicate header.titlebar .minimize:hover{color:#eb5e5e}body.syndicate header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.syndicate header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.syndicate header.titlebar .title{position:absolute;top:6px;left:46px;color:#e74242;font-size:16px;white-space:nowrap}body.syndicate header.titlebar .minimize{position:absolute;top:6px;right:46px}body.syndicate header.titlebar .close{position:absolute;top:4px;right:12px} \ No newline at end of file diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index 8df27dd35fd..7214413a9ed 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -5,8 +5,8 @@ n=this._liveQueries,(r=n[t])?e&&e.live?r:r.slice():(r=Rs(this,t,!!e.live,!1),r.l void(this.dynamicParams&&this.dynamicParams.unbind()))}function Sr(){this.custom?this.custom.teardown():this.node.removeEventListener(this.name,Qf,!1),this.hasListener=!1}function Or(){var t=this;this.dirty||(this.dirty=!0,ys.scheduleTask(function(){Ar(t),t.dirty=!1})),this.parentFragment.bubble()}function Ar(t){var e,n,r,i,a;e=t.node,e&&(i=I(e.options),n=t.getAttribute("value"),r=t.getAttribute("multiple"),void 0!==n?(i.forEach(function(t){var e,i;e=t._ractive?t._ractive.value:t.value,i=r?Pr(n,e):n==e,i&&(a=!0),t.selected=i}),a||(i[0]&&(i[0].selected=!0),t.binding&&t.binding.forceUpdate())):t.binding&&t.binding.forceUpdate())}function Pr(t,e){for(var n=t.length;n--;)if(t[n]==e)return!0}function Cr(t,e){t.select=Tr(t.parent),t.select&&(t.select.options.push(t),e.a||(e.a={}),void 0!==e.a.value||e.a.hasOwnProperty("disabled")||(e.a.value=e.f),"selected"in e.a&&void 0!==t.select.getAttribute("value")&&delete e.a.selected)}function jr(t){t.select&&R(t.select.options,t)}function Tr(t){if(t)do if("select"===t.name)return t;while(t=t.parent)}function Mr(t){var e,n,r,i,a,o,s;this.type=Ac,e=this.parentFragment=t.parentFragment,n=this.template=t.template,this.parent=t.pElement||e.pElement,this.root=r=e.root,this.index=t.index,this.key=t.key,this.name=Wp(n.e),"option"===this.name&&Cr(this,n),"select"===this.name&&(this.options=[],this.bubble=Or),"form"===this.name&&(this.formBindings=[]),s=Up(this,n),this.attributes=mf(this,n.a),this.conditionalAttributes=yf(this,n.m),n.f&&(this.fragment=new iv({template:n.f,root:r,owner:this,pElement:this,cssIds:null})),o=r.twoway,s.twoway===!1?o=!1:s.twoway===!0&&(o=!0),this.twoway=o,this.lazy=s.lazy,o&&(i=Wf(this,n.a))&&(this.binding=i,a=this.root._twowayBindings[i.keypath.str]||(this.root._twowayBindings[i.keypath.str]=[]),a.push(i)),n.v&&(this.eventHandlers=od(this,n.v)),n.o&&(this.decorator=new pd(this,n.o)),this.intro=n.t0||n.t1,this.outro=n.t0||n.t2}function Fr(t,e){function n(n){n.rebind(t,e)}var r,i,a,o;if(this.attributes&&this.attributes.forEach(n),this.conditionalAttributes&&this.conditionalAttributes.forEach(n),this.eventHandlers&&this.eventHandlers.forEach(n),this.decorator&&n(this.decorator),this.fragment&&n(this.fragment),a=this.liveQueries)for(o=this.root,r=a.length;r--;)a[r]._makeDirty();this.node&&(i=this.node._ractive)&&_(i,"keypath",t,e)}function Lr(t){var e;(t.attributes.width||t.attributes.height)&&t.node.addEventListener("load",e=function(){var n=t.getAttribute("width"),r=t.getAttribute("height");void 0!==n&&t.node.setAttribute("width",n),void 0!==r&&t.node.setAttribute("height",r),t.node.removeEventListener("load",e,!1)},!1)}function Nr(t){t.node.addEventListener("reset",Ir,!1)}function Rr(t){t.node.removeEventListener("reset",Ir,!1)}function Ir(){var t=this._ractive.proxy;ys.start(),t.formBindings.forEach(Dr),ys.end()}function Dr(t){t.root.viewmodel.set(t.keypath,t.resetValue)}function qr(t,e,n){var r,i,a;this.element=t,this.root=r=t.root,this.isIntro=n,i=e.n||e,("string"==typeof i||(a=new iv({template:i,root:r,owner:t}),i=""+a,a.unbind(),""!==i))&&(this.name=i,e.a?this.params=e.a:e.d&&(a=new iv({template:e.d,root:r,owner:t}),this.params=a.getArgsList(),a.unbind()),this._fn=g("transitions",r,i),this._fn||v(Do(i,"transition"),{ractive:this.root}))}function Vr(t){return t}function Ur(){Ud.hidden=document[Id]}function Br(){Ud.hidden=!0}function Wr(){Ud.hidden=!1}function zr(){var t,e,n,r=this;return t=this.node=this.element.node,e=t.getAttribute("style"),this.complete=function(i){n||(!i&&r.isIntro&&Hr(t,e),t._ractive.transition=null,r._manager.remove(r),n=!0)},this._fn?void this._fn.apply(this.root,[this].concat(this.params)):void this.complete()}function Hr(t,e){e?t.setAttribute("style",e):(t.getAttribute("style"),t.removeAttribute("style"))}function Gr(){var t,e,n,r=this,i=this.root;return t=Kr(this),e=this.node=lo(this.name,t),this.parentFragment.cssIds&&this.node.setAttribute("data-ractive-css",this.parentFragment.cssIds.map(function(t){return"{"+t+"}"}).join(" ")),So(this.node,"_ractive",{value:{proxy:this,keypath:ls(this.parentFragment),events:Eo(null),root:i}}),this.attributes.forEach(function(t){return t.render(e)}),this.conditionalAttributes.forEach(function(t){return t.render(e)}),this.fragment&&("script"===this.name?(this.bubble=Xd,this.node.text=this.fragment.toString(!1),this.fragment.unrender=ko):"style"===this.name?(this.bubble=Jd,this.bubble(),this.fragment.unrender=ko):this.binding&&this.getAttribute("contenteditable")?this.fragment.unrender=ko:this.node.appendChild(this.fragment.render())),this.binding&&(this.binding.render(),this.node._ractive.binding=this.binding),this.eventHandlers&&this.eventHandlers.forEach(function(t){return t.render()}),"option"===this.name&&$r(this),"img"===this.name?Lr(this):"form"===this.name?Nr(this):"input"===this.name||"textarea"===this.name?this.node.defaultValue=this.node.value:"option"===this.name&&(this.node.defaultSelected=this.node.selected),this.decorator&&this.decorator.fn&&ys.scheduleTask(function(){r.decorator.torndown||r.decorator.init()},!0),i.transitionsEnabled&&this.intro&&(n=new Zd(this,this.intro,!0),ys.registerTransition(n),ys.scheduleTask(function(){return n.start()},!0),this.transition=n),this.node.autofocus&&ys.scheduleTask(function(){return r.node.focus()},!0),Qr(this),this.node}function Kr(t){var e,n,r;return e=(n=t.getAttribute("xmlns"))?n:"svg"===t.name?no.svg:(r=t.parent)?"foreignObject"===r.name?no.html:r.node.namespaceURI:t.root.el.namespaceURI}function $r(t){var e,n,r;if(t.select&&(n=t.select.getAttribute("value"),void 0!==n))if(e=t.getAttribute("value"),t.select.node.multiple&&a(n)){for(r=n.length;r--;)if(e==n[r]){t.node.selected=!0;break}}else t.node.selected=e==n}function Qr(t){var e,n,r,i,a;e=t.root;do for(n=e._liveQueries,r=n.length;r--;)i=n[r],a=n["_"+i],a._test(t)&&(t.liveQueries||(t.liveQueries=[])).push(a);while(e=e.parent)}function Yr(t){var e,n,r;if(e=t.getAttribute("value"),void 0===e||!t.select)return!1;if(n=t.select.getAttribute("value"),n==e)return!0;if(t.select.getAttribute("multiple")&&a(n))for(r=n.length;r--;)if(n[r]==e)return!0}function Jr(t){var e,n,r,i;return e=t.attributes,n=e.type,r=e.value,i=e.name,n&&"radio"===n.value&&r&&i.interpolator&&r.value===i.interpolator.value?!0:void 0}function Xr(t){var e=""+t;return e?" "+e:""}function Zr(){this.fragment&&this.fragment.unbind(),this.binding&&this.binding.unbind(),this.eventHandlers&&this.eventHandlers.forEach(K),"option"===this.name&&jr(this),this.attributes.forEach(K),this.conditionalAttributes.forEach(K)}function ti(t){var e,n,r;(r=this.transition)&&r.complete(),"option"===this.name?this.detach():t&&ys.detachWhenReady(this),this.fragment&&this.fragment.unrender(!1),(e=this.binding)&&(this.binding.unrender(),this.node._ractive.binding=null,n=this.root._twowayBindings[e.keypath.str],n.splice(n.indexOf(e),1)),this.eventHandlers&&this.eventHandlers.forEach($),this.decorator&&ys.registerDecorator(this.decorator),this.root.transitionsEnabled&&this.outro&&(r=new Zd(this,this.outro,!1),ys.registerTransition(r),ys.scheduleTask(function(){return r.start()})),this.liveQueries&&ei(this),"form"===this.name&&Rr(this)}function ei(t){var e,n,r;for(r=t.liveQueries.length;r--;)e=t.liveQueries[r],n=e.selector,e._remove(t.node)}function ni(t,e){var n=sh.exec(e)[0];return null===t||n.length%s}}) cannot contain nested inline partials",e,{ractive:t});var s=r?a:ai(a,e);s.partials[e]=i=o.t}return r&&(i._fn=r),i.v?i.t:i}}function ai(t,e){return t.partials.hasOwnProperty(e)?t:oi(t.constructor,e)}function oi(t,e){return t?t.partials.hasOwnProperty(e)?t:oi(t._Parent,e):void 0}function si(t,e){if(e){if(e.template&&e.template.p&&e.template.p[t])return e.template.p[t];if(e.parentFragment&&e.parentFragment.owner)return si(t,e.parentFragment.owner)}}function ui(t,e){var n,r=y("components",t,e);if(r&&(n=r.components[e],!n._Parent)){var i=n.bind(r);if(i.isOwner=r.components.hasOwnProperty(e),n=i(),!n)return void m(Io,e,"component","component",{ractive:t});"string"==typeof n&&(n=ui(t,n)),n._fn=i,r.components[e]=n}return n}function ci(){var t=this.instance.fragment.detach();return bh.fire(this.instance),t}function li(t){return this.instance.fragment.find(t)}function pi(t,e){return this.instance.fragment.findAll(t,e)}function fi(t,e){e._test(this,!0),this.instance.fragment&&this.instance.fragment.findAllComponents(t,e)}function di(t){return t&&t!==this.name?this.instance.fragment?this.instance.fragment.findComponent(t):null:this.instance}function hi(){return this.parentFragment.findNextNode(this)}function mi(){return this.rendered?this.instance.fragment.firstNode():null}function vi(t,e,n){function r(t){var n,r;t.value=e,t.updating||(r=t.ractive,n=t.keypath,t.updating=!0,ys.start(r),r.viewmodel.mark(n),ys.end(),t.updating=!1)}var i,a,o,s,u,c;if(i=t.obj,a=t.prop,n&&!n.configurable){if("length"===a)return;throw Error('Cannot use magic mode with property "'+a+'" - object is not configurable')}n&&(o=n.get,s=n.set),u=o||function(){return e},c=function(t){s&&s(t),e=o?o():t,c._ractiveWrappers.forEach(r)},c._ractiveWrappers=[t],Object.defineProperty(i,a,{get:u,set:c,enumerable:!0,configurable:!0})}function gi(t,e){var n,r,i,a;if(this.adaptors)for(n=this.adaptors.length,r=0;n>r;r+=1)if(i=this.adaptors[r],i.filter(e,t,this.ractive))return a=this.wrapped[t]=i.wrap(this.ractive,e,t,bi(t)),void(a.value=e)}function yi(t,e){var n,r={};if(!e)return t;e+=".";for(n in t)t.hasOwnProperty(n)&&(r[e+n]=t[n]);return r}function bi(t){var e;return Wh[t]||(e=t?t+".":"",Wh[t]=function(n,r){var i;return"string"==typeof n?(i={},i[e+n]=r,i):"object"==typeof n?e?yi(n,t):n:void 0}),Wh[t]}function xi(t){var e,n,r=[Yo];for(e=t.length;e--;)for(n=t[e].parent;n&&!n.isRoot;)-1===t.indexOf(n)&&T(r,n),n=n.parent;return r}function wi(t,e,n){var r;ki(t,e),n||(r=e.wildcardMatches(),r.forEach(function(n){_i(t,n,e)}))}function _i(t,e,n){var r,i,a;e=e.str||e,r=t.depsMap.patternObservers,i=r&&r[e],i&&i.forEach(function(e){a=n.join(e.lastKey),ki(t,a),_i(t,e,a)})}function ki(t,e){t.patternObservers.forEach(function(t){t.regex.test(e.str)&&t.update(e)})}function Ei(){function t(t){var r=t.key;t.viewmodel===o?(o.clearCache(r.str),t.invalidate(),n.push(r),e(r)):t.viewmodel.mark(r)}function e(n){var r,i;o.noCascade.hasOwnProperty(n.str)||((i=o.deps.computed[n.str])&&i.forEach(t),(r=o.depsMap.computed[n.str])&&r.forEach(e))}var n,r,i,a=this,o=this,s={};return n=this.changes,n.length?(n.slice().forEach(e),r=zh(n),r.forEach(function(e){var r;-1===n.indexOf(e)&&(r=o.deps.computed[e.str])&&r.forEach(t)}),this.changes=[],this.patternObservers.length&&(r.forEach(function(t){return Hh(a,t,!0)}),n.forEach(function(t){return Hh(a,t)})),this.deps.observers&&(r.forEach(function(t){return Si(a,null,t,"observers")}),Ai(this,n,"observers")),this.deps["default"]&&(i=[],r.forEach(function(t){return Si(a,i,t,"default")}),i.length&&Oi(this,i,n),Ai(this,n,"default")),n.forEach(function(t){s[t.str]=a.get(t)}),this.implicitChanges={},this.noCascade={},s):void 0}function Si(t,e,n,r){var i,a;(i=Pi(t,n,r))&&(a=t.get(n),i.forEach(function(t){e&&t.refineValue?e.push(t):t.setValue(a)}))}function Oi(t,e,n){e.forEach(function(e){for(var r=!1,i=0,a=n.length,o=[];a>i;){var s=n[i];if(s===e.keypath){r=!0;break}s.slice(0,e.keypath.length)===e.keypath&&o.push(s),i++}r&&e.setValue(t.get(e.keypath)),o.length&&e.refineValue(o)})}function Ai(t,e,n){function r(t){t.forEach(i),t.forEach(a)}function i(e){var r=Pi(t,e,n);r&&s.push({keypath:e,deps:r})}function a(e){var i;(i=t.depsMap[n][e.str])&&r(i)}function o(e){var n=t.get(e.keypath);e.deps.forEach(function(t){return t.setValue(n)})}var s=[];r(e),s.forEach(o)}function Pi(t,e,n){var r=t.deps[n];return r?r[e.str]:null}function Ci(){this.captureGroups.push([])}function ji(t,e){var n,r;if(e||(r=this.wrapped[t])&&r.teardown()!==!1&&(this.wrapped[t]=null),this.cache[t]=void 0,n=this.cacheMap[t])for(;n.length;)this.clearCache(n.pop())}function Ti(t,e){var n=e.firstKey;return!(n in t.data||n in t.computations||n in t.mappings)}function Mi(t,e){var n=new Xh(t,e);return this.ready&&n.init(this),this.computations[t.str]=n}function Fi(t,e){var n,r,i,a,o,s=this.cache,u=t.str;if(e=e||nm,e.capture&&(a=N(this.captureGroups))&&(~a.indexOf(t)||a.push(t)),Mo.call(this.mappings,t.firstKey))return this.mappings[t.firstKey].get(t,e);if(t.isSpecial)return t.value;if(void 0===s[u]?((r=this.computations[u])&&!r.bypass?(n=r.get(),this.adapt(u,n)):(i=this.wrapped[u])?n=i.value:t.isRoot?(this.adapt("",this.data),n=this.data):n=Li(this,t),s[u]=n):n=s[u],!e.noUnwrap&&(i=this.wrapped[u])&&(n=i.get()),t.isRoot&&e.fullRootGet)for(o in this.mappings)n[o]=this.mappings[o].getValue();return n===tm?void 0:n}function Li(t,e){var n,r,i,a;return n=t.get(e.parent),(a=t.wrapped[e.parent.str])&&(n=a.get()),null!==n&&void 0!==n?((r=t.cacheMap[e.parent.str])?-1===r.indexOf(e.str)&&r.push(e.str):t.cacheMap[e.parent.str]=[e.str],"object"!=typeof n||e.lastKey in n?(i=n[e.lastKey],t.adapt(e.str,i,!1),t.cache[e.str]=i,i):t.cache[e.str]=tm):void 0}function Ni(){var t;for(t in this.computations)this.computations[t].init(this)}function Ri(t,e){var n=this.mappings[t.str]=new am(t,e);return n.initViewmodel(this),n}function Ii(t,e){var n,r=t.str;e&&(e.implicit&&(this.implicitChanges[r]=!0),e.noCascade&&(this.noCascade[r]=!0)),(n=this.computations[r])&&n.invalidate(),-1===this.changes.indexOf(t)&&this.changes.push(t);var i=e?e.keepExistingWrapper:!1;this.clearCache(r,i),this.ready&&this.onchange()}function Di(t,e,n,r){var i,a,o,s;if(this.mark(t),r&&r.compare){o=Vi(r.compare);try{i=e.map(o),a=n.map(o)}catch(u){m('merge(): "%s" comparison failed. Falling back to identity checking',t),i=e,a=n}}else i=e,a=n;s=sm(i,a),this.smartUpdate(t,n,s,e.length!==n.length)}function qi(t){return JSON.stringify(t)}function Vi(t){if(t===!0)return qi;if("string"==typeof t)return cm[t]||(cm[t]=function(e){return e[t]}),cm[t];if("function"==typeof t)return t;throw Error("The `compare` option must be a function, or a string representing an identifying field (or `true` to use JSON.stringify)")}function Ui(t,e){var n,r,i,a=void 0===arguments[2]?"default":arguments[2];e.isStatic||((n=this.mappings[t.firstKey])?n.register(t,e,a):(r=this.deps[a]||(this.deps[a]={}),i=r[t.str]||(r[t.str]=[]),i.push(e),this.depsMap[a]||(this.depsMap[a]={}),t.isRoot||Bi(this,t,a)))}function Bi(t,e,n){for(var r,i,a;!e.isRoot;)r=t.depsMap[n],i=r[e.parent.str]||(r[e.parent.str]=[]),a=e.str,void 0===i["_"+a]&&(i["_"+a]=0,i.push(e)),i["_"+a]+=1,e=e.parent}function Wi(){return this.captureGroups.pop()}function zi(t){this.data=t,this.clearCache("")}function Hi(t,e){var n,r,i,a,o=void 0===arguments[2]?{}:arguments[2];if(!o.noMapping&&(n=this.mappings[t.firstKey]))return n.set(t,e);if(r=this.computations[t.str]){if(r.setting)return;r.set(e),e=r.get()}s(this.cache[t.str],e)||(i=this.wrapped[t.str],i&&i.reset&&(a=i.reset(e)!==!1,a&&(e=i.get())),r||a||Gi(this,t,e),o.silent?this.clearCache(t.str):this.mark(t))}function Gi(t,e,n){var r,i,a,o;a=function(){r.set?r.set(e.lastKey,n):(i=r.get(),o())},o=function(){i||(i=Ih(e.lastKey),t.set(e.parent,i,{silent:!0})),i[e.lastKey]=n},r=t.wrapped[e.parent.str],r?a():(i=t.get(e.parent),(r=t.wrapped[e.parent.str])?a():o())}function Ki(t,e,n){var r,i,a,o=this;if(i=n.length,n.forEach(function(e,n){-1===e&&o.mark(t.join(n),vm)}),this.set(t,e,{silent:!0}),(r=this.deps["default"][t.str])&&r.filter($i).forEach(function(t){return t.shuffle(n,e)}),i!==e.length){for(this.mark(t.join("length"),mm),a=n.touchedFrom;aa;a+=1)this.mark(t.join(a),vm)}}function $i(t){return"function"==typeof t.shuffle}function Qi(){var t,e=this;for(Object.keys(this.cache).forEach(function(t){return e.clearCache(t)});t=this.unresolvedImplicitDependencies.pop();)t.teardown()}function Yi(t,e){var n,r,i,a=void 0===arguments[2]?"default":arguments[2];if(!e.isStatic){if(n=this.mappings[t.firstKey])return n.unregister(t,e,a);if(r=this.deps[a][t.str],i=r.indexOf(e),-1===i)throw Error("Attempted to remove a dependant that was no longer registered! This should not happen. If you are seeing this bug in development please raise an issue at https://github.com/RactiveJS/Ractive/issues - thanks");r.splice(i,1),t.isRoot||Ji(this,t,a)}}function Ji(t,e,n){for(var r,i;!e.isRoot;)r=t.depsMap[n],i=r[e.parent.str],i["_"+e.str]-=1,i["_"+e.str]||(R(i,e),i["_"+e.str]=void 0),e=e.parent}function Xi(t){this.hook=new as(t),this.inProcess={},this.queue={}}function Zi(t,e){return t[e._guid]||(t[e._guid]=[])}function ta(t,e){var n=Zi(t.queue,e);for(t.hook.fire(e);n.length;)ta(t,n.shift());delete t.queue[e._guid]}function ea(t,e){var n,r={};for(n in e)r[n]=na(t,n,e[n]);return r}function na(t,e,n){var r,i;return"function"==typeof n&&(r=ia(n,t)),"string"==typeof n&&(r=ra(t,n)),"object"==typeof n&&("string"==typeof n.get?r=ra(t,n.get):"function"==typeof n.get?r=ia(n.get,t):p("`%s` computation must have a `get()` method",e),"function"==typeof n.set&&(i=ia(n.set,t))),{getter:r,setter:i}}function ra(t,e){var n,r,i;return n="return ("+e.replace(km,function(t,e){return r=!0,'__ractive.get("'+e+'")'})+");",r&&(n="var __ractive = this; "+n),i=Function(n),r?i.bind(t):i}function ia(t,e){return/this/.test(""+t)?t.bind(e):t}function aa(e){var n,i,a=void 0===arguments[1]?{}:arguments[1],o=void 0===arguments[2]?{}:arguments[2];if(Mv.DEBUG&&To(),ua(e,o),So(e,"data",{get:ca}),Em.fire(e,a),Pm.forEach(function(t){e[t]=r(Eo(e.constructor[t]||null),a[t])}),i=new xm({adapt:oa(e,e.adapt,a),data:Hu.init(e.constructor,e,a),computed:_m(e,r(Eo(e.constructor.prototype.computed),a.computed)),mappings:o.mappings,ractive:e,onchange:function(){return ys.addRactive(e)}}),e.viewmodel=i,i.init(),cc.init(e.constructor,e,a),Sm.fire(e),Om.begin(e),e.template){var s=void 0;(o.cssIds||e.cssId)&&(s=o.cssIds?o.cssIds.slice():[],e.cssId&&s.push(e.cssId)),e.fragment=new iv({template:e.template,root:e,owner:e,cssIds:s})}if(Om.end(e),n=t(e.el)){var u=e.render(n,e.append);Mv.DEBUG_PROMISES&&u["catch"](function(t){throw v("Promise debugging is enabled, to help solve errors that happen asynchronously. Some browsers will log unhandled promise rejections, in which case you can safely disable promise debugging:\n Ractive.DEBUG_PROMISES = false;"),m("An error happened during rendering",{ractive:e}),t.stack&&f(t.stack),t})}}function oa(t,e,n){function r(e){return"string"==typeof e&&(e=g("adaptors",t,e),e||p(Do(e,"adaptor"))),e}var i,a,o;if(e=e.map(r),i=L(n.adapt).map(r),i=sa(e,i),a="magic"in n?n.magic:t.magic,o="modifyArrays"in n?n.modifyArrays:t.modifyArrays,a){if(!eo)throw Error("Getters and setters (magic mode) are not supported in this browser");o&&i.push(Uh),i.push(Vh)}return o&&i.push(Nh),i}function sa(t,e){for(var n=t.slice(),r=e.length;r--;)~n.indexOf(e[r])||n.push(e[r]);return n}function ua(t,e){t._guid="r-"+Am++,t._subs=Eo(null),t._config={},t._twowayBindings=Eo(null),t._animations=[],t.nodes={},t._liveQueries=[],t._liveComponentQueries=[],t._boundFunctions=[],t._observers=[],e.component?(t.parent=e.parent,t.container=e.container||null,t.root=t.parent.root,t.component=e.component,e.component.instance=t,t._inlinePartials=e.inlinePartials):(t.root=t,t.parent=t.container=null)}function ca(){throw Error("Using `ractive.data` is no longer supported - you must use the `ractive.get()` API instead")}function la(t,e,n){this.parentFragment=t.parentFragment,this.callback=n,this.fragment=new iv({template:e,root:t.root,owner:this}),this.update()}function pa(t,e,n){var r;return e.r?r=Tl(t,e.r,n):e.x?r=new Nl(t,t.parentFragment,e.x,n):e.rx&&(r=new ql(t,e.rx,n)),r}function fa(t){return 1===t.length&&t[0].t===Ec}function da(t,e){var n;for(n in e)e.hasOwnProperty(n)&&ha(t.instance,t.root,n,e[n])}function ha(t,e,n,r){"string"!=typeof r&&p("Components currently only support simple events - you cannot include arguments. Sorry!"),t.on(n,function(){var t,n;return arguments.length&&arguments[0]&&arguments[0].node&&(t=Array.prototype.shift.call(arguments)),n=Array.prototype.slice.call(arguments),zs(e,r,{event:t,args:n}),!1})}function ma(t,e){var n,r;if(!e)throw Error('Component "'+this.name+'" not found');n=this.parentFragment=t.parentFragment,r=n.root,this.root=r,this.type=Tc,this.name=t.template.e,this.index=t.index,this.indexRefBindings={},this.yielders={},this.resolvers=[],Tm(this,e,t.template.a,t.template.f,t.template.p),Mm(this,t.template.v),(t.template.t0||t.template.t1||t.template.t2||t.template.o)&&m('The "intro", "outro" and "decorator" directives have no effect on components',{ractive:this.instance}),Fm(this)}function va(t,e){function n(n){n.rebind(t,e)}var r;this.resolvers.forEach(n);for(var i in this.yielders)this.yielders[i][0]&&n(this.yielders[i][0]);(r=this.root._liveComponentQueries["_"+this.name])&&r._makeDirty()}function ga(){var t=this.instance;return t.render(this.parentFragment.getNode()),this.rendered=!0,t.fragment.detach()}function ya(){return""+this.instance.fragment}function ba(){var t=this.instance;this.resolvers.forEach(K),xa(this),t._observers.forEach(Q),t.fragment.unbind(),t.viewmodel.teardown(),t.fragment.rendered&&t.el.__ractive_instances__&&R(t.el.__ractive_instances__,t),qm.fire(t)}function xa(t){var e,n;e=t.root;do(n=e._liveComponentQueries["_"+t.name])&&n._remove(t);while(e=e.parent)}function wa(t){this.shouldDestroy=t,this.instance.unrender()}function _a(t){var e=this;this.owner=t.owner,this.parent=this.owner.parentFragment,this.root=t.root,this.pElement=t.pElement,this.context=t.context,this.index=t.index,this.key=t.key,this.registeredIndexRefs=[],this.cssIds="cssIds"in t?t.cssIds:this.parent?this.parent.cssIds:null,this.items=t.template.map(function(n,r){return ka({parentFragment:e,pElement:t.pElement,template:n,index:r})}),this.value=this.argsList=null,this.dirtyArgs=this.dirtyValue=!0,this.bound=!0}function ka(t){if("string"==typeof t.template)return new bl(t);switch(t.template.t){case Mc:return new Gm(t);case Ec:return new Hl(t);case Oc:return new pp(t);case Sc:return new Cp(t);case Ac:var e=void 0;return(e=gh(t.parentFragment.root,t.template.e))?new Bm(t,e):new ah(t);case Pc:return new vh(t);case Cc:return new zm(t);case Fc:return new $m(t);default:throw Error("Something very strange happened. Please file an issue at https://github.com/ractivejs/ractive/issues. Thanks!")}}function Ea(t,e){(!this.owner||this.owner.hasContext)&&_(this,"context",t,e),this.items.forEach(function(n){n.rebind&&n.rebind(t,e)})}function Sa(){var t;return 1===this.items.length?t=this.items[0].render():(t=document.createDocumentFragment(),this.items.forEach(function(e){t.appendChild(e.render())})),this.rendered=!0,t}function Oa(t){return this.items?this.items.map(t?Pa:Aa).join(""):""}function Aa(t){return""+t}function Pa(t){return t.toString(!0)}function Ca(){this.bound&&(this.items.forEach(ja),this.bound=!1)}function ja(t){t.unbind&&t.unbind()}function Ta(t){if(!this.rendered)throw Error("Attempted to unrender a fragment that was not rendered");this.items.forEach(function(e){return e.unrender(t)}),this.rendered=!1}function Ma(t){var e,n,r,i,a;if(t=t||{},"object"!=typeof t)throw Error("The reset method takes either no arguments, or an object containing new data");for((n=this.viewmodel.wrapped[""])&&n.reset?n.reset(t)===!1&&this.viewmodel.reset(t):this.viewmodel.reset(t),r=cc.reset(this),i=r.length;i--;)if(ov.indexOf(r[i])>-1){a=!0;break}if(a){var o=void 0;this.viewmodel.mark(Yo),(o=this.component)&&(o.shouldDestroy=!0),this.unrender(),o&&(o.shouldDestroy=!1),this.fragment.template!==this.template&&(this.fragment.unbind(),this.fragment=new iv({template:this.template,root:this,owner:this})),e=this.render(this.el,this.anchor)}else e=ys.start(this,!0),this.viewmodel.mark(Yo),ys.end();return sv.fire(this,t),e}function Fa(t){var e,n;Ju.init(null,this,{template:t}),e=this.transitionsEnabled,this.transitionsEnabled=!1,(n=this.component)&&(n.shouldDestroy=!0),this.unrender(),n&&(n.shouldDestroy=!1),this.fragment.unbind(),this.fragment=new iv({template:this.template,root:this,owner:this}),this.render(this.el,this.anchor),this.transitionsEnabled=e}function La(t,e){var n,r;if(r=ys.start(this,!0),c(t)){n=t;for(t in n)n.hasOwnProperty(t)&&(e=n[t],Na(this,t,e))}else Na(this,t,e);return ys.end(),r}function Na(t,e,n){e=E(A(e)),e.isPattern?S(t,e).forEach(function(e){t.viewmodel.set(e,n)}):t.viewmodel.set(e,n)}function Ra(t,e){return Jo(this,t,void 0===e?-1:-e)}function Ia(){var t;return this.fragment.unbind(),this.viewmodel.teardown(),this._observers.forEach(Q),this.fragment.rendered&&this.el.__ractive_instances__&&R(this.el.__ractive_instances__,this),this.shouldDestroy=!0,t=this.fragment.rendered?this.unrender():cs.resolve(),gv.fire(this),this._boundFunctions.forEach(Da),t}function Da(t){delete t.fn[t.prop]}function qa(t){var e=this;if("string"!=typeof t)throw new TypeError(Ro);var n=void 0;return/\*/.test(t)?(n={},S(this,E(A(t))).forEach(function(t){n[t.str]=!e.viewmodel.get(t)}),this.set(n)):this.set(t,!this.get(t))}function Va(){return this.fragment.toString(!0)}function Ua(){var t,e;if(!this.fragment.rendered)return m("ractive.unrender() was called on a Ractive instance that was not rendered"),cs.resolve();for(t=ys.start(this,!0),e=!this.component||this.component.shouldDestroy||this.shouldDestroy;this._animations[0];)this._animations[0].stop();return this.fragment.unrender(e),R(this.el.__ractive_instances__,this),wv.fire(this),ys.end(),t}function Ba(t){var e;return t=E(t)||Yo,e=ys.start(this,!0),this.viewmodel.mark(t),ys.end(),Ev.fire(this,t),e}function Wa(t,e){var n,r,i;if("string"!=typeof t||e){i=[];for(r in this._twowayBindings)(!t||E(r).equalsOrStartsWith(t))&&i.push.apply(i,this._twowayBindings[r])}else i=this._twowayBindings[t];return n=za(this,i),this.set(n)}function za(t,e){var n={},r=[];return e.forEach(function(t){var e,i;if(!t.radioName||t.element.node.checked){if(t.checkboxName)return void(r[t.keypath.str]||t.changed()||(r.push(t.keypath),r[t.keypath.str]=t));e=t.attribute.value,i=t.getValue(),F(e,i)||s(e,i)||(n[t.keypath.str]=i)}}),r.length&&r.forEach(function(t){var e,i,a;e=r[t.str],i=e.attribute.value,a=e.getValue(),F(i,a)||(n[t.str]=a)}),n}function Ha(t,e){return"function"==typeof e&&/_super/.test(t)}function Ga(t){for(var e={};t;)Ka(t,e),Qa(t,e),t=t._Parent!==Mv?t._Parent:!1;return e}function Ka(t,e){ic.forEach(function(n){$a(n.useDefaults?t.prototype:t,e,n.name)})}function $a(t,e,n){var r,i=Object.keys(t[n]);i.length&&((r=e[n])||(r=e[n]={}),i.filter(function(t){return!(t in r)}).forEach(function(e){return r[e]=t[n][e]}))}function Qa(t,e){Object.keys(t.prototype).forEach(function(n){if("computed"!==n){var r=t.prototype[n];if(n in e){if("function"==typeof e[n]&&"function"==typeof r&&e[n]._method){var i=void 0,a=r._method;a&&(r=r._method),i=Av(e[n]._method,r),a&&(i._method=i),e[n]=i}}else e[n]=r._method?r._method:r}})}function Ya(){for(var t=arguments.length,e=Array(t),n=0;t>n;n++)e[n]=arguments[n];return e.length?e.reduce(Ja,this):Ja(this)}function Ja(t){var e,n,i=void 0===arguments[1]?{}:arguments[1];return i.prototype instanceof Mv&&(i=Pv(i)),e=function(t){return this instanceof e?void Cm(this,t):new e(t)},n=Eo(t.prototype),n.constructor=e,Oo(e,{defaults:{value:n},extend:{value:Ya,writable:!0,configurable:!0},_Parent:{value:t}}),cc.extend(t,n,i),Hu.extend(t,n,i),i.computed&&(n.computed=r(Eo(t.prototype.computed),i.computed)),e.prototype=n,e}var Xa,Za,to,eo,no,ro,io,ao=3,oo={el:void 0,append:!1,template:{v:ao,t:[]},preserveWhitespace:!1,sanitize:!1,stripComments:!0,delimiters:["{{","}}"],tripleDelimiters:["{{{","}}}"],interpolate:!1,data:{},computed:{},magic:!1,modifyArrays:!0,adapt:[],isolated:!1,twoway:!0,lazy:!1,noIntro:!1,transitionsEnabled:!0,complete:void 0,css:null,noCssTransform:!1},so=oo,uo={linear:function(t){return t},easeIn:function(t){return Math.pow(t,3)},easeOut:function(t){return Math.pow(t-1,3)+1},easeInOut:function(t){return(t/=.5)<1?.5*Math.pow(t,3):.5*(Math.pow(t-2,3)+2)}};Xa="object"==typeof document,Za="undefined"!=typeof navigator&&/jsDom/.test(navigator.appName),to="undefined"!=typeof console&&"function"==typeof console.warn&&"function"==typeof console.warn.apply;try{Object.defineProperty({},"test",{value:0}),eo=!0}catch(co){eo=!1}no={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},ro="undefined"==typeof document?!1:document&&document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1"),io=["o","ms","moz","webkit"];var lo,po,fo,ho,mo,vo,go,yo,bo;if(lo=ro?function(t,e){return e&&e!==no.html?document.createElementNS(e,t):document.createElement(t)}:function(t,e){if(e&&e!==no.html)throw"This browser does not support namespaces other than http://www.w3.org/1999/xhtml. The most likely cause of this error is that you're trying to render SVG in an older browser. See http://docs.ractivejs.org/latest/svg-and-older-browsers for more information";return document.createElement(t)},Xa){for(fo=lo("div"),ho=["matches","matchesSelector"],bo=function(t){return function(e,n){return e[t](n)}},go=ho.length;go--&&!po;)if(mo=ho[go],fo[mo])po=bo(mo);else for(yo=io.length;yo--;)if(vo=io[go]+mo.substr(0,1).toUpperCase()+mo.substring(1),fo[vo]){po=bo(vo);break}po||(po=function(t,e){var n,r,i;for(r=t.parentNode,r||(fo.innerHTML="",r=fo,t=t.cloneNode(),fo.appendChild(t)),n=r.querySelectorAll(e),i=n.length;i--;)if(n[i]===t)return!0;return!1})}else po=null;var xo,wo,_o,ko=function(){};"undefined"==typeof window?_o=null:(xo=window,wo=xo.document,_o={},wo||(_o=null),Date.now||(Date.now=function(){return+new Date}),String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}),Object.keys||(Object.keys=function(){var t=Object.prototype.hasOwnProperty,e=!{toString:null}.propertyIsEnumerable("toString"),n=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],r=n.length;return function(i){if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Object.keys called on non-object");var a=[];for(var o in i)t.call(i,o)&&a.push(o);if(e)for(var s=0;r>s;s++)t.call(i,n[s])&&a.push(n[s]);return a}}()),Array.prototype.indexOf||(Array.prototype.indexOf=function(t,e){var n;for(void 0===e&&(e=0),0>e&&(e+=this.length),0>e&&(e=0),n=this.length;n>e;e++)if(this.hasOwnProperty(e)&&this[e]===t)return e;return-1}),Array.prototype.forEach||(Array.prototype.forEach=function(t,e){var n,r;for(n=0,r=this.length;r>n;n+=1)this.hasOwnProperty(n)&&t.call(e,this[n],n,this)}),Array.prototype.map||(Array.prototype.map=function(t,e){var n,r,i,a=this,o=[];for(a instanceof String&&(a=""+a,i=!0),n=0,r=a.length;r>n;n+=1)(a.hasOwnProperty(n)||i)&&(o[n]=t.call(e,a[n],n,a));return o}),"function"!=typeof Array.prototype.reduce&&(Array.prototype.reduce=function(t,e){var n,r,i,a;if("function"!=typeof t)throw new TypeError(t+" is not a function");for(i=this.length,a=!1,arguments.length>1&&(r=e,a=!0),n=0;i>n;n+=1)this.hasOwnProperty(n)?a&&(r=t(r,this[n],n,this)):(r=this[n],a=!0);if(!a)throw new TypeError("Reduce of empty array with no initial value");return r}),Array.prototype.filter||(Array.prototype.filter=function(t,e){var n,r,i=[];for(n=0,r=this.length;r>n;n+=1)this.hasOwnProperty(n)&&t.call(e,this[n],n,this)&&(i[i.length]=this[n]);return i}),Array.prototype.every||(Array.prototype.every=function(t,e){var n,r,i;if(null==this)throw new TypeError;if(n=Object(this),r=n.length>>>0,"function"!=typeof t)throw new TypeError;for(i=0;r>i;i+=1)if(i in n&&!t.call(e,n[i],i,n))return!1; return!0}),"function"!=typeof Function.prototype.bind&&(Function.prototype.bind=function(t){var e,n,r,i,a=[].slice;if("function"!=typeof this)throw new TypeError("Function.prototype.bind called on non-function");return e=a.call(arguments,1),n=this,r=function(){},i=function(){var i=this instanceof r&&t?this:t;return n.apply(i,e.concat(a.call(arguments)))},r.prototype=this.prototype,i.prototype=new r,i}),xo.addEventListener||!function(t,e){var n,r,i,a,o,s;t.appearsToBeIELessEqual8=!0,n=function(t,e){var n,r=this;for(n in t)r[n]=t[n];r.currentTarget=e,r.target=t.srcElement||e,r.timeStamp=+new Date,r.preventDefault=function(){t.returnValue=!1},r.stopPropagation=function(){t.cancelBubble=!0}},r=function(t,e){var r,i,a=this;r=a.listeners||(a.listeners=[]),i=r.length,r[i]=[e,function(t){e.call(a,new n(t,a))}],a.attachEvent("on"+t,r[i][1])},i=function(t,e){var n,r,i=this;if(i.listeners)for(n=i.listeners,r=n.length;r--;)n[r][0]===e&&i.detachEvent("on"+t,n[r][1])},t.addEventListener=e.addEventListener=r,t.removeEventListener=e.removeEventListener=i,"Element"in t?(t.Element.prototype.addEventListener=r,t.Element.prototype.removeEventListener=i):(s=e.createElement,e.createElement=function(t){var e=s(t);return e.addEventListener=r,e.removeEventListener=i,e},a=e.getElementsByTagName("head")[0],o=e.createElement("style"),a.insertBefore(o,a.firstChild))}(xo,wo),xo.getComputedStyle||(_o.getComputedStyle=function(){function t(n,r,i,a){var o,s=r[i],u=parseFloat(s),c=s.split(/\d/)[0];return isNaN(u)&&/^thin|medium|thick$/.test(s)&&(u=e(s),c=""),a=null!=a?a:/%|em/.test(c)&&n.parentElement?t(n.parentElement,n.parentElement.currentStyle,"fontSize",null):16,o="fontSize"==i?a:/width/i.test(i)?n.clientWidth:n.clientHeight,"em"==c?u*a:"in"==c?96*u:"pt"==c?96*u/72:"%"==c?u/100*o:u}function e(t){var e,n;return a[t]||(e=document.createElement("div"),e.style.display="block",e.style.position="fixed",e.style.width=e.style.height="0",e.style.borderRight=t+" solid black",document.getElementsByTagName("body")[0].appendChild(e),n=e.getBoundingClientRect(),a[t]=n.right-n.left),a[t]}function n(t,e){var n="border"==e?"Width":"",r=e+"Top"+n,i=e+"Right"+n,a=e+"Bottom"+n,o=e+"Left"+n;t[e]=(t[r]==t[i]==t[a]==t[o]?[t[r]]:t[r]==t[a]&&t[o]==t[i]?[t[r],t[i]]:t[o]==t[i]?[t[r],t[i],t[a]]:[t[r],t[i],t[a],t[o]]).join(" ")}function r(e){var r,i,a,s;r=e.currentStyle,i=this,a=t(e,r,"fontSize",null);for(s in r)"normal"===r[s]&&o.hasOwnProperty(s)?i[s]=o[s]:/width|height|margin.|padding.|border.+W/.test(s)?"auto"===r[s]?/^width|height/.test(s)?i[s]=("width"===s?e.clientWidth:e.clientHeight)+"px":/(?:padding)?Top|Bottom$/.test(s)&&(i[s]="0px"):i[s]=t(e,r,s,a)+"px":"styleFloat"===s?i["float"]=r[s]:i[s]=r[s];return n(i,"margin"),n(i,"padding"),n(i,"border"),i.fontSize=a+"px",i}function i(t){return new r(t)}var a={},o={fontWeight:400,lineHeight:1.2,letterSpacing:0};return r.prototype={constructor:r,getPropertyPriority:ko,getPropertyValue:function(t){return this[t]||""},item:ko,removeProperty:ko,setProperty:ko,getPropertyCSSValue:ko},i}()));var Eo,So,Oo,Ao=_o;try{Object.defineProperty({},"test",{value:0}),Xa&&Object.defineProperty(document.createElement("div"),"test",{value:0}),So=Object.defineProperty}catch(Po){So=function(t,e,n){t[e]=n.value}}try{try{Object.defineProperties({},{test:{value:0}})}catch(Po){throw Po}Xa&&Object.defineProperties(lo("div"),{test:{value:0}}),Oo=Object.defineProperties}catch(Po){Oo=function(t,e){var n;for(n in e)e.hasOwnProperty(n)&&So(t,n,e[n])}}try{Object.create(null),Eo=Object.create}catch(Po){Eo=function(){var t=function(){};return function(e,n){var r;return null===e?{}:(t.prototype=e,r=new t,n&&Object.defineProperties(r,n),r)}}()}var Co,jo,To,Mo=Object.prototype.hasOwnProperty,Fo=Object.prototype.toString,Lo=/^\[object (?:Array|FileList)\]$/,No={};to?!function(){var t=["%cRactive.js %c0.7.3 %cin debug mode, %cmore...","color: rgb(114, 157, 52); font-weight: normal;","color: rgb(85, 85, 85); font-weight: normal;","color: rgb(85, 85, 85); font-weight: normal;","color: rgb(82, 140, 224); font-weight: normal; text-decoration: underline;"],e="You're running Ractive 0.7.3 in debug mode - messages will be printed to the console to help you fix problems and optimise your application.\n\nTo disable debug mode, add this line at the start of your app:\n Ractive.DEBUG = false;\n\nTo disable debug mode when your app is minified, add this snippet:\n Ractive.DEBUG = /unminified/.test(function(){/*unminified*/});\n\nGet help and support:\n http://docs.ractivejs.org\n http://stackoverflow.com/questions/tagged/ractivejs\n http://groups.google.com/forum/#!forum/ractive-js\n http://twitter.com/ractivejs\n\nFound a bug? Raise an issue:\n https://github.com/ractivejs/ractive/issues\n\n";To=function(){var n=!!console.groupCollapsed;console[n?"groupCollapsed":"log"].apply(console,t),console.log(e),n&&console.groupEnd(t),To=ko},jo=function(t,e){if(To(),"object"==typeof e[e.length-1]){var n=e.pop(),r=n?n.ractive:null;if(r){var i=void 0;r.component&&(i=r.component.name)&&(t="<"+i+"> "+t);var a=void 0;(a=n.node||r.fragment&&r.fragment.rendered&&r.find("*"))&&e.push(a)}}console.warn.apply(console,["%cRactive.js: %c"+t,"color: rgb(114, 157, 52);","color: rgb(85, 85, 85);"].concat(e))},Co=function(){console.log.apply(console,arguments)}}():jo=Co=To=ko;var Ro="Bad arguments",Io='A function was specified for "%s" %s, but no %s was returned',Do=function(t,e){return'Missing "'+t+'" '+e+" plugin. You may need to download a plugin via http://docs.ractivejs.org/latest/plugins#"+e+"s"},qo=function(t,e,n,r){if(t===e)return b(e);if(r){var i=g("interpolators",n,r);if(i)return i(t,e)||b(e);p(Do(r,"interpolator"))}return Bo.number(t,e)||Bo.array(t,e)||Bo.object(t,e)||b(e)},Vo=qo,Uo={number:function(t,e){var n;return u(t)&&u(e)?(t=+t,e=+e,n=e-t,n?function(e){return t+e*n}:function(){return t}):null},array:function(t,e){var n,r,i,o;if(!a(t)||!a(e))return null;for(n=[],r=[],o=i=Math.min(t.length,e.length);o--;)r[o]=Vo(t[o],e[o]);for(o=i;o=this.duration?(null!==a&&(ys.start(this.root),this.root.viewmodel.set(a,this.to),ys.end()),this.step&&this.step(1,this.to),this.complete(this.to),i=this.root._animations.indexOf(this),-1===i&&m("Animation was not found"),this.root._animations.splice(i,1),this.running=!1,!1):(e=this.easing?this.easing(t/this.duration):t/this.duration,null!==a&&(n=this.interpolator(e),ys.start(this.root),this.root.viewmodel.set(a,n),ys.end()),this.step&&this.step(e,n),!0)):!1},stop:function(){var t;this.running=!1,t=this.root._animations.indexOf(this),-1===t&&m("Animation was not found"),this.root._animations.splice(t,1)}};var ks=_s,Es=nt,Ss={stop:ko},Os=it,As=new as("detach"),Ps=at,Cs=ot,js=function(){var t,e,n;t=this._root[this._isComponentQuery?"liveComponentQueries":"liveQueries"],e=this.selector,n=t.indexOf(e),-1!==n&&(t.splice(n,1),t[e]=null)},Ts=function(t,e){var n,r,i,a,o,s,u,c,l,p;for(n=ut(t.component||t._ractive.proxy),r=ut(e.component||e._ractive.proxy),i=N(n),a=N(r);i&&i===a;)n.pop(),r.pop(),o=i,i=N(n),a=N(r);if(i=i.component||i,a=a.component||a,l=i.parentFragment,p=a.parentFragment,l===p)return s=l.items.indexOf(i),u=p.items.indexOf(a),s-u||n.length-r.length;if(c=o.fragments)return s=c.indexOf(l),u=c.indexOf(p),s-u||n.length-r.length;throw Error("An unexpected condition was met while comparing the position of two components. Please file an issue at https://github.com/RactiveJS/Ractive/issues - thanks!")},Ms=function(t,e){var n;return t.compareDocumentPosition?(n=t.compareDocumentPosition(e),2&n?1:-1):Ts(t,e)},Fs=function(){this.sort(this._isComponentQuery?Ts:Ms),this._dirty=!1},Ls=function(){var t=this;this._dirty||(this._dirty=!0,ys.scheduleTask(function(){t._sort()}))},Ns=function(t){var e=this.indexOf(this._isComponentQuery?t.instance:t);-1!==e&&this.splice(e,1)},Rs=ct,Is=lt,Ds=pt,qs=ft,Vs=dt,Us=ht,Bs={enqueue:function(t,e){t.event&&(t._eventQueue=t._eventQueue||[],t._eventQueue.push(t.event)),t.event=e},dequeue:function(t){t._eventQueue&&t._eventQueue.length?t.event=t._eventQueue.pop():delete t.event}},Ws=Bs,zs=mt,Hs=yt,Gs=bt,Ks={capture:!0,noUnwrap:!0,fullRootGet:!0},$s=xt,Qs=new as("insert"),Ys=_t,Js=function(t,e,n,r){this.root=t,this.keypath=e,this.callback=n,this.defer=r.defer,this.context=r&&r.context?r.context:t};Js.prototype={init:function(t){this.value=this.root.get(this.keypath.str),t!==!1?this.update():this.oldValue=this.value},setValue:function(t){var e=this;s(t,this.value)||(this.value=t,this.defer&&this.ready?ys.scheduleTask(function(){return e.update()}):this.update())},update:function(){this.updating||(this.updating=!0,this.callback.call(this.context,this.value,this.oldValue,this.keypath.str),this.oldValue=this.value,this.updating=!1)}};var Xs,Zs=Js,tu=kt,eu=Array.prototype.slice;Xs=function(t,e,n,r){this.root=t,this.callback=n,this.defer=r.defer,this.keypath=e,this.regex=RegExp("^"+e.str.replace(/\./g,"\\.").replace(/\*/g,"([^\\.]+)")+"$"),this.values={},this.defer&&(this.proxies=[]),this.context=r&&r.context?r.context:t},Xs.prototype={init:function(t){var e,n;if(e=tu(this.root,this.keypath),t!==!1)for(n in e)e.hasOwnProperty(n)&&this.update(E(n));else this.values=e},update:function(t){var e,n=this;if(t.isPattern){e=tu(this.root,t);for(t in e)e.hasOwnProperty(t)&&this.update(E(t))}else if(!this.root.viewmodel.implicitChanges[t.str])return this.defer&&this.ready?void ys.scheduleTask(function(){return n.getProxy(t).update()}):void this.reallyUpdate(t)},reallyUpdate:function(t){var e,n,r,i;return e=t.str,n=this.root.viewmodel.get(t),this.updating?void(this.values[e]=n):(this.updating=!0,s(n,this.values[e])&&this.ready||(r=eu.call(this.regex.exec(e),1),i=[n,this.values[e],e].concat(r),this.values[e]=n,this.callback.apply(this.context,i)),void(this.updating=!1))},getProxy:function(t){var e=this;return this.proxies[t.str]||(this.proxies[t.str]={update:function(){return e.reallyUpdate(t)}}),this.proxies[t.str]}};var nu,ru,iu,au,ou,su,uu=Xs,cu=Et,lu={},pu=St,fu=Ot,du=function(t){return t.trim()},hu=function(t){return""!==t},mu=At,vu=Pt,gu=Ct,yu=jt,bu=Array.prototype,xu=function(t){return function(e){for(var n=arguments.length,r=Array(n>1?n-1:0),i=1;n>i;i++)r[i-1]=arguments[i];var o,s,u,c,l=[];if(e=E(A(e)),o=this.viewmodel.get(e),s=o.length,!a(o))throw Error("Called ractive."+t+"('"+e.str+"'), but '"+e.str+"' does not refer to an array");return l=yu(o,t,r),c=bu[t].apply(o,r),u=ys.start(this,!0).then(function(){return c}),l?this.viewmodel.smartUpdate(e,o,l):this.viewmodel.mark(e),ys.end(),u}},wu=xu("pop"),_u=xu("push"),ku="/* Ractive.js component styles */\n",Eu=[],Su=!1;Xa?(iu=document.createElement("style"),iu.type="text/css",au=document.getElementsByTagName("head")[0],su=!1,ou=iu.styleSheet,ru=function(){var t=ku+Eu.map(function(t){return"\n/* {"+t.id+"} */\n"+t.styles}).join("\n");ou?ou.cssText=t:iu.innerHTML=t,su||(au.appendChild(iu),su=!0)},nu={add:function(t){Eu.push(t),Su=!0},apply:function(){Su&&(ru(),Su=!1)}}):nu={add:ko,apply:ko};var Ou,Au,Pu,Cu=nu,ju=Mt,Tu=new as("render"),Mu=new as("complete"),Fu={extend:function(t,e,n){e.adapt=Lt(e.adapt,L(n.adapt))},init:function(){}},Lu=Fu,Nu=Nt,Ru=/(?:^|\})?\s*([^\{\}]+)\s*\{/g,Iu=/\/\*.*?\*\//g,Du=/((?:(?:\[[^\]+]\])|(?:[^\s\+\>\~:]))+)((?::[^\s\+\>\~\(]+(?:\([^\)]+\))?)?\s*[\s\+\>\~]?)\s*/g,qu=/^@media/,Vu=/\[data-ractive-css~="\{[a-z0-9-]+\}"]/g,Uu=1,Bu={name:"css",extend:function(t,e,n){if(n.css){var r=Uu++,i=n.noCssTransform?n.css:Nu(n.css,r);e.cssId=r,Cu.add({id:r,styles:i})}},init:function(){}},Wu=Bu,zu={name:"data",extend:function(t,e,n){var r=void 0,i=void 0;if(n.data&&c(n.data))for(r in n.data)i=n.data[r],i&&"object"==typeof i&&(c(i)||a(i))&&m("Passing a `data` option with object and array properties to Ractive.extend() is discouraged, as mutating them is likely to cause bugs. Consider using a data function instead:\n\n // this...\n data: function () {\n return {\n myObject: {}\n };\n })\n\n // instead of this:\n data: {\n myObject: {}\n }");e.data=qt(e.data,n.data)},init:function(t,e,n){var r=qt(t.prototype.data,n.data);return"function"==typeof r&&(r=r.call(e)),r||{}},reset:function(t){var e=this.init(t.constructor,t,t.viewmodel);return t.viewmodel.reset(e),!0}},Hu=zu,Gu=null,Ku=["preserveWhitespace","sanitize","stripComments","delimiters","tripleDelimiters","interpolate"],$u={fromId:zt,isHashedId:Ht,isParsed:Gt,getParseOptions:Kt,createHelper:Bt,parse:Wt},Qu=$u,Yu={name:"template",extend:function(t,e,n){var r;"template"in n&&(r=n.template,"function"==typeof r?e.template=r:e.template=Jt(r,e))},init:function(t,e,n){var r,i;r="template"in n?n.template:t.prototype.template,"function"==typeof r&&(i=r,r=Qt(e,i),e._config.template={fn:i,result:r}),r=Jt(r,e),e.template=r.t,r.p&&Xt(e.partials,r.p)},reset:function(t){var e,n=$t(t);return n?(e=Jt(n,t),t.template=e.t,Xt(t.partials,e.p,!0),!0):void 0}},Ju=Yu;Ou=["adaptors","components","computed","decorators","easing","events","interpolators","partials","transitions"],Au=function(t,e){this.name=t,this.useDefaults=e},Au.prototype={constructor:Au,extend:function(t,e,n){this.configure(this.useDefaults?t.defaults:t,this.useDefaults?e:e.constructor,n)},init:function(){},configure:function(t,e,n){var r,i=this.name,a=n[i];r=Eo(t[i]);for(var o in a)r[o]=a[o];e[i]=r},reset:function(t){var e=t[this.name],n=!1;return Object.keys(e).forEach(function(t){var r=e[t];r._fn&&(r._fn.isOwner?e[t]=r._fn:delete e[t],n=!0)}),n}},Pu=Ou.map(function(t){return new Au(t,"computed"===t)});var Xu,Zu,tc,ec,nc,rc,ic=Pu,ac=Zt,oc=re;ec={adapt:Lu,css:Wu,data:Hu,template:Ju},tc=Object.keys(so),rc=oe(tc.filter(function(t){return!ec[t]})),nc=oe(tc.concat(ic.map(function(t){return t.name}))),Zu=[].concat(tc.filter(function(t){return!ic[t]&&!ec[t]}),ic,ec.data,ec.template,ec.css),Xu={extend:function(t,e,n){return ie("extend",t,e,n)},init:function(t,e,n){return ie("init",t,e,n)},reset:function(t){return Zu.filter(function(e){return e.reset&&e.reset(t)}).map(function(t){return t.name})},order:Zu};var sc,uc,cc=Xu,lc=se,pc=ue,fc=ce,dc=le,hc=pe,mc=fe,vc=de,gc=he,yc=/^\s+/;uc=function(t){this.name="ParseError",this.message=t;try{throw Error(t)}catch(e){this.stack=e.stack}},uc.prototype=Error.prototype,sc=function(t,e){var n,r,i=0;for(this.str=t,this.options=e||{},this.pos=0,this.lines=this.str.split("\n"),this.lineEnds=this.lines.map(function(t){var e=i+t.length+1;return i=e,e},0),this.init&&this.init(t,e),n=[];this.posn;n+=1)if(this.pos=e,i=t[n](this))return i;return null},getLinePos:function(t){for(var e,n=0,r=0;t>=this.lineEnds[n];)r=this.lineEnds[n],n+=1;return e=t-r,[n+1,e+1,t]},error:function(t){var e=this.getLinePos(this.pos),n=e[0],r=e[1],i=this.lines[e[0]-1],a=0,o=i.replace(/\t/g,function(t,n){return n/g,pl=/&/g;var gl=function(){return e(this.node)},yl=function(t){this.type=kc,this.text=t.template};yl.prototype={detach:gl,firstNode:function(){return this.node},render:function(){return this.node||(this.node=document.createTextNode(this.text)),this.node},toString:function(t){return t?Ee(this.text):this.text},unrender:function(t){return t?this.detach():void 0}};var bl=yl,xl=Se,wl=Oe,_l=function(t,e,n){var r;this.ref=e,this.resolved=!1,this.root=t.root,this.parentFragment=t.parentFragment,this.callback=n,r=ps(t.root,e,t.parentFragment),void 0!=r?this.resolve(r):ys.addUnresolved(this)};_l.prototype={resolve:function(t){this.keypath&&!t&&ys.addUnresolved(this),this.resolved=!0,this.keypath=t,this.callback(t)},forceResolution:function(){this.resolve(E(this.ref))},rebind:function(t,e){var n;void 0!=this.keypath&&(n=this.keypath.replace(t,e),void 0!==n&&this.resolve(n))},unbind:function(){this.resolved||ys.removeUnresolved(this)}};var kl=_l,El=function(t,e,n){this.parentFragment=t.parentFragment,this.ref=e,this.callback=n,this.rebind()},Sl={"@keypath":{prefix:"c",prop:["context"]},"@index":{prefix:"i",prop:["index"]},"@key":{prefix:"k",prop:["key","index"]}};El.prototype={rebind:function(){var t,e=this.ref,n=this.parentFragment,r=Sl[e];if(!r)throw Error('Unknown special reference "'+e+'" - valid references are @index, @key and @keypath');if(this.cached)return this.callback(E("@"+r.prefix+Ae(this.cached,r)));if(-1!==r.prop.indexOf("index")||-1!==r.prop.indexOf("key"))for(;n;){if(n.owner.currentSubtype===qc&&void 0!==(t=Ae(n,r)))return this.cached=n,n.registerIndexRef(this),this.callback(E("@"+r.prefix+t));n=!n.parent&&n.owner&&n.owner.component&&n.owner.component.parentFragment&&!n.owner.component.instance.isolated?n.owner.component.parentFragment:n.parent}else for(;n;){if(void 0!==(t=Ae(n,r)))return this.callback(E("@"+r.prefix+t.str));n=n.parent}},unbind:function(){this.cached&&this.cached.unregisterIndexRef(this)}};var Ol=El,Al=function(t,e,n){this.parentFragment=t.parentFragment,this.ref=e,this.callback=n,e.ref.fragment.registerIndexRef(this),this.rebind()};Al.prototype={rebind:function(){var t,e=this.ref.ref;t="k"===e.ref.t?"k"+e.fragment.key:"i"+e.fragment.index,void 0!==t&&this.callback(E("@"+t))},unbind:function(){this.ref.ref.fragment.unregisterIndexRef(this)}};var Pl=Al,Cl=Pe;Pe.resolve=function(t){var e,n,r={};for(e in t.refs)n=t.refs[e],r[n.ref.n]="k"===n.ref.t?n.fragment.key:n.fragment.index;return r};var jl,Tl=Ce,Ml=je,Fl={},Ll=Function.prototype.bind;jl=function(t,e,n,r){var i,a=this;i=t.root,this.root=i,this.parentFragment=e,this.callback=r,this.owner=t,this.str=n.s,this.keypaths=[],this.pending=n.r.length,this.refResolvers=n.r.map(function(t,e){return Tl(a,t,function(t){a.resolve(e,t)})}),this.ready=!0,this.bubble()},jl.prototype={bubble:function(){this.ready&&(this.uniqueString=Me(this.str,this.keypaths),this.keypath=Fe(this.uniqueString),this.createEvaluator(),this.callback(this.keypath))},unbind:function(){for(var t;t=this.refResolvers.pop();)t.unbind()},resolve:function(t,e){this.keypaths[t]=e,this.bubble()},createEvaluator:function(){var t,e,n,r,i,a=this;r=this.keypath,t=this.root.viewmodel.computations[r.str],t?this.root.viewmodel.mark(r):(i=Ml(this.str,this.refResolvers.length),e=this.keypaths.map(function(t){var e;return"undefined"===t?function(){}:t.isSpecial?(e=t.value,function(){return e}):function(){var e=a.root.viewmodel.get(t,{noUnwrap:!0,fullRootGet:!0});return"function"==typeof e&&(e=Ne(e,a.root)),e}}),n={deps:this.keypaths.filter(Le),getter:function(){var t=e.map(Te);return i.apply(null,t)}},t=this.root.viewmodel.compute(r,n))},rebind:function(t,e){this.refResolvers.forEach(function(n){return n.rebind(t,e)})}};var Nl=jl,Rl=function(t,e,n){var r=this;this.resolver=e,this.root=e.root,this.parentFragment=n,this.viewmodel=e.root.viewmodel,"string"==typeof t?this.value=t:t.t===Rc?this.refResolver=Tl(this,t.n,function(t){r.resolve(t)}):new Nl(e,n,t,function(t){r.resolve(t)})};Rl.prototype={resolve:function(t){this.keypath&&this.viewmodel.unregister(this.keypath,this),this.keypath=t,this.value=this.viewmodel.get(t),this.bind(),this.resolver.bubble()},bind:function(){this.viewmodel.register(this.keypath,this)},rebind:function(t,e){this.refResolver&&this.refResolver.rebind(t,e)},setValue:function(t){this.value=t,this.resolver.bubble()},unbind:function(){this.keypath&&this.viewmodel.unregister(this.keypath,this),this.refResolver&&this.refResolver.unbind()},forceResolution:function(){this.refResolver&&this.refResolver.forceResolution()}};var Il=Rl,Dl=function(t,e,n){ var r,i,a,o,s=this;this.parentFragment=o=t.parentFragment,this.root=r=t.root,this.mustache=t,this.ref=i=e.r,this.callback=n,this.unresolved=[],(a=ps(r,i,o))?this.base=a:this.baseResolver=new kl(this,i,function(t){s.base=t,s.baseResolver=null,s.bubble()}),this.members=e.m.map(function(t){return new Il(t,s,o)}),this.ready=!0,this.bubble()};Dl.prototype={getKeypath:function(){var t=this.members.map(Re);return!t.every(Ie)||this.baseResolver?null:this.base.join(t.join("."))},bubble:function(){this.ready&&!this.baseResolver&&this.callback(this.getKeypath())},unbind:function(){this.members.forEach(K)},rebind:function(t,e){var n;if(this.base){var r=this.base.replace(t,e);r&&r!==this.base&&(this.base=r,n=!0)}this.members.forEach(function(r){r.rebind(t,e)&&(n=!0)}),n&&this.bubble()},forceResolution:function(){this.baseResolver&&(this.base=E(this.ref),this.baseResolver.unbind(),this.baseResolver=null),this.members.forEach(De),this.bubble()}};var ql=Dl,Vl=qe,Ul=Ve,Bl=Ue,Wl={getValue:wl,init:Vl,resolve:Ul,rebind:Bl},zl=function(t){this.type=Ec,Wl.init(this,t)};zl.prototype={update:function(){this.node.data=void 0==this.value?"":this.value},resolve:Wl.resolve,rebind:Wl.rebind,detach:gl,unbind:xl,render:function(){return this.node||(this.node=document.createTextNode(n(this.value))),this.node},unrender:function(t){t&&e(this.node)},getValue:Wl.getValue,setValue:function(t){var e;this.keypath&&(e=this.root.viewmodel.wrapped[this.keypath.str])&&(t=e.get()),s(t,this.value)||(this.value=t,this.parentFragment.bubble(),this.node&&ys.addView(this))},firstNode:function(){return this.node},toString:function(t){var e=""+n(this.value);return t?Ee(e):e}};var Hl=zl,Gl=Be,Kl=We,$l=ze,Ql=He,Yl=Ge,Jl=Ke,Xl=$e,Zl=Qe,tp=Ye,ep=function(t,e){Wl.rebind.call(this,t,e)},np=Xe,rp=Ze,ip=pn,ap=fn,op=dn,sp=vn,up=function(t){this.type=Oc,this.subtype=this.currentSubtype=t.template.n,this.inverted=this.subtype===Dc,this.pElement=t.pElement,this.fragments=[],this.fragmentsToCreate=[],this.fragmentsToRender=[],this.fragmentsToUnrender=[],t.template.i&&(this.indexRefs=t.template.i.split(",").map(function(t,e){return{n:t,t:0===e?"k":"i"}})),this.renderedFragments=[],this.length=0,Wl.init(this,t)};up.prototype={bubble:Gl,detach:Kl,find:$l,findAll:Ql,findAllComponents:Yl,findComponent:Jl,findNextNode:Xl,firstNode:Zl,getIndexRef:function(t){if(this.indexRefs)for(var e=this.indexRefs.length;e--;){var n=this.indexRefs[e];if(n.n===t)return n}},getValue:Wl.getValue,shuffle:tp,rebind:ep,render:np,resolve:Wl.resolve,setValue:rp,toString:ip,unbind:ap,unrender:op,update:sp};var cp,lp,pp=up,fp=gn,dp=yn,hp=bn,mp=xn,vp={};try{lo("table").innerHTML="foo"}catch(Po){cp=!0,lp={TABLE:['',"
    "],THEAD:['',"
    "],TBODY:['',"
    "],TR:['',"
    "],SELECT:['"]}}var gp=function(t,e,n){var r,i,a,o,s,u=[];if(null!=t&&""!==t){for(cp&&(i=lp[e.tagName])?(r=wn("DIV"),r.innerHTML=i[0]+t+i[1],r=r.querySelector(".x"),"SELECT"===r.tagName&&(a=r.options[r.selectedIndex])):e.namespaceURI===no.svg?(r=wn("DIV"),r.innerHTML=''+t+"",r=r.querySelector(".x")):(r=wn(e.tagName),r.innerHTML=t,"SELECT"===r.tagName&&(a=r.options[r.selectedIndex]));o=r.firstChild;)u.push(o),n.appendChild(o);if("SELECT"===e.tagName)for(s=u.length;s--;)u[s]!==a&&(u[s].selected=!1)}return u},yp=_n,bp=En,xp=Sn,wp=On,_p=An,kp=Pn,Ep=function(t){this.type=Sc,Wl.init(this,t)};Ep.prototype={detach:fp,find:dp,findAll:hp,firstNode:mp,getValue:Wl.getValue,rebind:Wl.rebind,render:bp,resolve:Wl.resolve,setValue:xp,toString:wp,unbind:xl,unrender:_p,update:kp};var Sp,Op,Ap,Pp,Cp=Ep,jp=function(){this.parentFragment.bubble()},Tp=Cn,Mp=function(t){return this.node?po(this.node,t)?this.node:this.fragment&&this.fragment.find?this.fragment.find(t):void 0:null},Fp=function(t,e){e._test(this,!0)&&e.live&&(this.liveQueries||(this.liveQueries=[])).push(e),this.fragment&&this.fragment.findAll(t,e)},Lp=function(t,e){this.fragment&&this.fragment.findAllComponents(t,e)},Np=function(t){return this.fragment?this.fragment.findComponent(t):void 0},Rp=jn,Ip=Tn,Dp=Mn,qp=/^true|on|yes|1$/i,Vp=/^[0-9]+$/,Up=function(t,e){var n,r,i;return i=e.a||{},r={},n=i.twoway,void 0!==n&&(r.twoway=0===n||qp.test(n)),n=i.lazy,void 0!==n&&(0!==n&&Vp.test(n)?r.lazy=parseInt(n):r.lazy=0===n||qp.test(n)),r},Bp=Fn;Sp="altGlyph altGlyphDef altGlyphItem animateColor animateMotion animateTransform clipPath feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix feDiffuseLighting feDisplacementMap feDistantLight feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feImage feMerge feMergeNode feMorphology feOffset fePointLight feSpecularLighting feSpotLight feTile feTurbulence foreignObject glyphRef linearGradient radialGradient textPath vkern".split(" "),Op="attributeName attributeType baseFrequency baseProfile calcMode clipPathUnits contentScriptType contentStyleType diffuseConstant edgeMode externalResourcesRequired filterRes filterUnits glyphRef gradientTransform gradientUnits kernelMatrix kernelUnitLength keyPoints keySplines keyTimes lengthAdjust limitingConeAngle markerHeight markerUnits markerWidth maskContentUnits maskUnits numOctaves pathLength patternContentUnits patternTransform patternUnits pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits refX refY repeatCount repeatDur requiredExtensions requiredFeatures specularConstant specularExponent spreadMethod startOffset stdDeviation stitchTiles surfaceScale systemLanguage tableValues targetX targetY textLength viewBox viewTarget xChannelSelector yChannelSelector zoomAndPan".split(" "),Ap=function(t){for(var e={},n=t.length;n--;)e[t[n].toLowerCase()]=t[n];return e},Pp=Ap(Sp.concat(Op));var Wp=function(t){var e=t.toLowerCase();return Pp[e]||e},zp=function(t,e){var n,r;if(n=e.indexOf(":"),-1===n||(r=e.substr(0,n),"xmlns"===r))t.name=t.element.namespace!==no.html?Wp(e):e;else if(e=e.substring(n+1),t.name=Wp(e),t.namespace=no[r.toLowerCase()],t.namespacePrefix=r,!t.namespace)throw'Unknown namespace ("'+r+'")'},Hp=Ln,Gp=Nn,Kp=Rn,$p=In,Qp={"accept-charset":"acceptCharset",accesskey:"accessKey",bgcolor:"bgColor","class":"className",codebase:"codeBase",colspan:"colSpan",contenteditable:"contentEditable",datetime:"dateTime",dirname:"dirName","for":"htmlFor","http-equiv":"httpEquiv",ismap:"isMap",maxlength:"maxLength",novalidate:"noValidate",pubdate:"pubDate",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",usemap:"useMap"},Yp=Dn,Jp=Vn,Xp=Un,Zp=Bn,tf=Wn,ef=zn,nf=Hn,rf=Gn,af=Kn,of=$n,sf=Qn,uf=Yn,cf=Jn,lf=Xn,pf=Zn,ff=function(t){this.init(t)};ff.prototype={bubble:Bp,init:Gp,rebind:Kp,render:$p,toString:Yp,unbind:Jp,update:pf};var df,hf=ff,mf=function(t,e){var n,r,i=[];for(n in e)"twoway"!==n&&"lazy"!==n&&e.hasOwnProperty(n)&&(r=new hf({element:t,name:n,value:e[n],root:t.root}),i[n]=r,"value"!==n&&i.push(r));return(r=i.value)&&i.push(r),i};"undefined"!=typeof document&&(df=lo("div"));var vf=function(t,e){this.element=t,this.root=t.root,this.parentFragment=t.parentFragment,this.attributes=[],this.fragment=new iv({root:t.root,owner:this,template:[e]})};vf.prototype={bubble:function(){this.node&&this.update(),this.element.bubble()},rebind:function(t,e){this.fragment.rebind(t,e)},render:function(t){this.node=t,this.isSvg=t.namespaceURI===no.svg,this.update()},unbind:function(){this.fragment.unbind()},update:function(){var t,e,n=this;t=""+this.fragment,e=tr(t,this.isSvg),this.attributes.filter(function(t){return er(e,t)}).forEach(function(t){n.node.removeAttribute(t.name)}),e.forEach(function(t){n.node.setAttribute(t.name,t.value)}),this.attributes=e},toString:function(){return""+this.fragment}};var gf=vf,yf=function(t,e){return e?e.map(function(e){return new gf(t,e)}):[]},bf=function(t){var e,n,r,i;if(this.element=t,this.root=t.root,this.attribute=t.attributes[this.name||"value"],e=this.attribute.interpolator,e.twowayBinding=this,n=e.keypath){if("}"===n.str.slice(-1))return v("Two-way binding does not work with expressions (`%s` on <%s>)",e.resolver.uniqueString,t.name,{ractive:this.root}),!1;if(n.isSpecial)return v("Two-way binding does not work with %s",e.resolver.ref,{ractive:this.root}),!1}else{var a=e.template.r?"'"+e.template.r+"' reference":"expression";m("The %s being used for two-way binding is ambiguous, and may cause unexpected results. Consider initialising your data to eliminate the ambiguity",a,{ractive:this.root}),e.resolver.forceResolution(),n=e.keypath}this.attribute.isTwoway=!0,this.keypath=n,r=this.root.viewmodel.get(n),void 0===r&&this.getInitialValue&&(r=this.getInitialValue(),void 0!==r&&this.root.viewmodel.set(n,r)),(i=nr(t))&&(this.resetValue=r,i.formBindings.push(this))};bf.prototype={handleChange:function(){var t=this;ys.start(this.root),this.attribute.locked=!0,this.root.viewmodel.set(this.keypath,this.getValue()),ys.scheduleTask(function(){return t.attribute.locked=!1}),ys.end()},rebound:function(){var t,e,n;e=this.keypath,n=this.attribute.interpolator.keypath,e!==n&&(R(this.root._twowayBindings[e.str],this),this.keypath=n,t=this.root._twowayBindings[n.str]||(this.root._twowayBindings[n.str]=[]),t.push(this))},unbind:function(){}},bf.extend=function(t){var e,n=this;return e=function(t){bf.call(this,t),this.init&&this.init()},e.prototype=Eo(n.prototype),r(e.prototype,t),e.extend=bf.extend,e};var xf,wf=bf,_f=rr;xf=wf.extend({getInitialValue:function(){return""},getValue:function(){return this.element.node.value},render:function(){var t,e=this.element.node,n=!1;this.rendered=!0,t=this.root.lazy,this.element.lazy===!0?t=!0:this.element.lazy===!1?t=!1:u(this.element.lazy)?(t=!1,n=+this.element.lazy):u(t||"")&&(n=+t,t=!1,this.element.lazy=n),this.handler=n?ar:_f,e.addEventListener("change",_f,!1),t||(e.addEventListener("input",this.handler,!1),e.attachEvent&&e.addEventListener("keyup",this.handler,!1)),e.addEventListener("blur",ir,!1)},unrender:function(){var t=this.element.node;this.rendered=!1,t.removeEventListener("change",_f,!1),t.removeEventListener("input",this.handler,!1),t.removeEventListener("keyup",this.handler,!1),t.removeEventListener("blur",ir,!1)}});var kf=xf,Ef=kf.extend({getInitialValue:function(){return this.element.fragment?""+this.element.fragment:""},getValue:function(){return this.element.node.innerHTML}}),Sf=Ef,Of=or,Af={},Pf=wf.extend({name:"checked",init:function(){this.siblings=Of(this.root._guid,"radio",this.element.getAttribute("name")),this.siblings.push(this)},render:function(){var t=this.element.node;t.addEventListener("change",_f,!1),t.attachEvent&&t.addEventListener("click",_f,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",_f,!1),t.removeEventListener("click",_f,!1)},handleChange:function(){ys.start(this.root),this.siblings.forEach(function(t){t.root.viewmodel.set(t.keypath,t.getValue())}),ys.end()},getValue:function(){return this.element.node.checked},unbind:function(){R(this.siblings,this)}}),Cf=Pf,jf=wf.extend({name:"name",init:function(){this.siblings=Of(this.root._guid,"radioname",this.keypath.str),this.siblings.push(this),this.radioName=!0},getInitialValue:function(){return this.element.getAttribute("checked")?this.element.getAttribute("value"):void 0},render:function(){var t=this.element.node;t.name="{{"+this.keypath.str+"}}",t.checked=this.root.viewmodel.get(this.keypath)==this.element.getAttribute("value"),t.addEventListener("change",_f,!1),t.attachEvent&&t.addEventListener("click",_f,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",_f,!1),t.removeEventListener("click",_f,!1)},getValue:function(){var t=this.element.node;return t._ractive?t._ractive.value:t.value},handleChange:function(){this.element.node.checked&&wf.prototype.handleChange.call(this)},rebound:function(t,e){var n;wf.prototype.rebound.call(this,t,e),(n=this.element.node)&&(n.name="{{"+this.keypath.str+"}}")},unbind:function(){R(this.siblings,this)}}),Tf=jf,Mf=wf.extend({name:"name",getInitialValue:function(){return this.noInitialValue=!0,[]},init:function(){var t,e;this.checkboxName=!0,this.siblings=Of(this.root._guid,"checkboxes",this.keypath.str),this.siblings.push(this),this.noInitialValue&&(this.siblings.noInitialValue=!0),this.siblings.noInitialValue&&this.element.getAttribute("checked")&&(t=this.root.viewmodel.get(this.keypath),e=this.element.getAttribute("value"),t.push(e))},unbind:function(){R(this.siblings,this)},render:function(){var t,e,n=this.element.node;t=this.root.viewmodel.get(this.keypath),e=this.element.getAttribute("value"),a(t)?this.isChecked=M(t,e):this.isChecked=t==e,n.name="{{"+this.keypath.str+"}}",n.checked=this.isChecked,n.addEventListener("change",_f,!1),n.attachEvent&&n.addEventListener("click",_f,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",_f,!1),t.removeEventListener("click",_f,!1)},changed:function(){var t=!!this.isChecked;return this.isChecked=this.element.node.checked,this.isChecked===t},handleChange:function(){this.isChecked=this.element.node.checked,wf.prototype.handleChange.call(this)},getValue:function(){return this.siblings.filter(sr).map(ur)}}),Ff=Mf,Lf=wf.extend({name:"checked",render:function(){var t=this.element.node;t.addEventListener("change",_f,!1),t.attachEvent&&t.addEventListener("click",_f,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",_f,!1),t.removeEventListener("click",_f,!1)},getValue:function(){return this.element.node.checked}}),Nf=Lf,Rf=wf.extend({getInitialValue:function(){var t,e,n,r,i=this.element.options;if(void 0===this.element.getAttribute("value")&&(e=t=i.length,t)){for(;e--;)if(i[e].getAttribute("selected")){n=i[e].getAttribute("value"),r=!0;break}if(!r)for(;++ee;e+=1)if(r=t[e],t[e].selected)return i=r._ractive?r._ractive.value:r.value},forceUpdate:function(){var t=this,e=this.getValue();void 0!==e&&(this.attribute.locked=!0,ys.scheduleTask(function(){return t.attribute.locked=!1}),this.root.viewmodel.set(this.keypath,e))}}),If=Rf,Df=If.extend({getInitialValue:function(){return this.element.options.filter(function(t){return t.getAttribute("selected")}).map(function(t){return t.getAttribute("value")})},render:function(){var t;this.element.node.addEventListener("change",_f,!1),t=this.root.viewmodel.get(this.keypath),void 0===t&&this.handleChange()},unrender:function(){this.element.node.removeEventListener("change",_f,!1)},setValue:function(){throw Error("TODO not implemented yet")},getValue:function(){var t,e,n,r,i,a;for(t=[],e=this.element.node.options,r=e.length,n=0;r>n;n+=1)i=e[n],i.selected&&(a=i._ractive?i._ractive.value:i.value,t.push(a));return t},handleChange:function(){var t,e,n;return t=this.attribute,e=t.value,n=this.getValue(),void 0!==e&&F(n,e)||If.prototype.handleChange.call(this),this},forceUpdate:function(){var t=this,e=this.getValue();void 0!==e&&(this.attribute.locked=!0,ys.scheduleTask(function(){return t.attribute.locked=!1}),this.root.viewmodel.set(this.keypath,e))},updateModel:function(){void 0!==this.attribute.value&&this.attribute.value.length||this.root.viewmodel.set(this.keypath,this.initialValue)}}),qf=Df,Vf=wf.extend({render:function(){this.element.node.addEventListener("change",_f,!1)},unrender:function(){this.element.node.removeEventListener("change",_f,!1)},getValue:function(){return this.element.node.files}}),Uf=Vf,Bf=kf.extend({getInitialValue:function(){},getValue:function(){var t=parseFloat(this.element.node.value);return isNaN(t)?void 0:t}}),Wf=cr,zf=pr,Hf=fr,Gf=dr,Kf=hr,$f=/^event(?:\.(.+))?/,Qf=yr,Yf=br,Jf={},Xf={touchstart:!0,touchmove:!0,touchend:!0,touchcancel:!0,touchleave:!0},Zf=wr,td=_r,ed=kr,nd=Er,rd=Sr,id=function(t,e,n){this.init(t,e,n)};id.prototype={bubble:zf,fire:Hf,getAction:Gf,init:Kf,listen:Yf,rebind:Zf,render:td,resolve:ed,unbind:nd,unrender:rd};var ad=id,od=function(t,e){var n,r,i,a,o=[];for(r in e)if(e.hasOwnProperty(r))for(i=r.split("-"),n=i.length;n--;)a=new ad(t,i[n],e[r]),o.push(a);return o},sd=function(t,e){var n,r,i,a=this;this.element=t,this.root=n=t.root,r=e.n||e,("string"==typeof r||(i=new iv({template:r,root:n,owner:t}),r=""+i,i.unbind(),""!==r))&&(e.a?this.params=e.a:e.d&&(this.fragment=new iv({template:e.d,root:n,owner:t}),this.params=this.fragment.getArgsList(),this.fragment.bubble=function(){this.dirtyArgs=this.dirtyValue=!0,a.params=this.getArgsList(),a.ready&&a.update()}),this.fn=g("decorators",n,r),this.fn||p(Do(r,"decorator")))};sd.prototype={init:function(){var t,e,n;if(t=this.element.node,this.params?(n=[t].concat(this.params),e=this.fn.apply(this.root,n)):e=this.fn.call(this.root,t),!e||!e.teardown)throw Error("Decorator definition must return an object with a teardown method");this.actual=e,this.ready=!0},update:function(){this.actual.update?this.actual.update.apply(this.root,this.params):(this.actual.teardown(!0),this.init())},rebind:function(t,e){this.fragment&&this.fragment.rebind(t,e)},teardown:function(t){this.torndown=!0,this.ready&&this.actual.teardown(),!t&&this.fragment&&this.fragment.unbind()}};var ud,cd,ld,pd=sd,fd=Mr,dd=Fr,hd=qr,md=function(t){return t.replace(/-([a-zA-Z])/g,function(t,e){return e.toUpperCase()})};Xa?(cd={},ld=lo("div").style,ud=function(t){var e,n,r;if(t=md(t),!cd[t])if(void 0!==ld[t])cd[t]=t;else for(r=t.charAt(0).toUpperCase()+t.substring(1),e=io.length;e--;)if(n=io[e],void 0!==ld[n+r]){cd[t]=n+r;break}return cd[t]}):ud=null;var vd,gd,yd=ud;Xa?(gd=window.getComputedStyle||Ao.getComputedStyle,vd=function(t){var e,n,r,i,o;if(e=gd(this.node),"string"==typeof t)return o=e[yd(t)],"0px"===o&&(o=0),o;if(!a(t))throw Error("Transition$getStyle must be passed a string, or an array of strings representing CSS properties");for(n={},r=t.length;r--;)i=t[r],o=e[yd(i)],"0px"===o&&(o=0),n[i]=o;return n}):vd=null;var bd=vd,xd=function(t,e){var n;if("string"==typeof t)this.node.style[yd(t)]=e;else for(n in t)t.hasOwnProperty(n)&&(this.node.style[yd(n)]=t[n]);return this},wd=function(t){var e;this.duration=t.duration,this.step=t.step,this.complete=t.complete,"string"==typeof t.easing?(e=t.root.easing[t.easing],e||(v(Do(t.easing,"easing")),e=Vr)):e="function"==typeof t.easing?t.easing:Vr,this.easing=e,this.start=ns(),this.end=this.start+this.duration,this.running=!0,ws.add(this)};wd.prototype={tick:function(t){var e,n;return this.running?t>this.end?(this.step&&this.step(1),this.complete&&this.complete(1),!1):(e=t-this.start,n=this.easing(e/this.duration),this.step&&this.step(n),!0):!1},stop:function(){this.abort&&this.abort(),this.running=!1}};var _d,kd,Ed,Sd,Od,Ad,Pd,Cd,jd=wd,Td=RegExp("^-(?:"+io.join("|")+")-"),Md=function(t){return t.replace(Td,"")},Fd=RegExp("^(?:"+io.join("|")+")([A-Z])"),Ld=function(t){var e;return t?(Fd.test(t)&&(t="-"+t),e=t.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()})):""},Nd={},Rd={};Xa?(kd=lo("div").style,function(){void 0!==kd.transition?(Ed="transition",Sd="transitionend",Od=!0):void 0!==kd.webkitTransition?(Ed="webkitTransition",Sd="webkitTransitionEnd",Od=!0):Od=!1}(),Ed&&(Ad=Ed+"Duration",Pd=Ed+"Property",Cd=Ed+"TimingFunction"),_d=function(t,e,n,r,i){setTimeout(function(){var a,o,s,u,c;u=function(){o&&s&&(t.root.fire(t.name+":end",t.node,t.isIntro),i())},a=(t.node.namespaceURI||"")+t.node.tagName,t.node.style[Pd]=r.map(yd).map(Ld).join(","),t.node.style[Cd]=Ld(n.easing||"linear"),t.node.style[Ad]=n.duration/1e3+"s",c=function(e){var n;n=r.indexOf(md(Md(e.propertyName))),-1!==n&&r.splice(n,1),r.length||(t.node.removeEventListener(Sd,c,!1),s=!0,u())},t.node.addEventListener(Sd,c,!1),setTimeout(function(){for(var i,l,p,f,d,h=r.length,v=[];h--;)f=r[h],i=a+f,Od&&!Rd[i]&&(t.node.style[yd(f)]=e[f],Nd[i]||(l=t.getStyle(f),Nd[i]=t.getStyle(f)!=e[f],Rd[i]=!Nd[i],Rd[i]&&(t.node.style[yd(f)]=l))),(!Od||Rd[i])&&(void 0===l&&(l=t.getStyle(f)),p=r.indexOf(f),-1===p?m("Something very strange happened with transitions. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!",{node:t.node}):r.splice(p,1),d=/[^\d]*$/.exec(e[f])[0],v.push({name:yd(f),interpolator:Vo(parseFloat(l),parseFloat(e[f])),suffix:d}));v.length?new jd({root:t.root,duration:n.duration,easing:md(n.easing||""),step:function(e){var n,r;for(r=v.length;r--;)n=v[r],t.node.style[n.name]=n.interpolator(e)+n.suffix},complete:function(){o=!0,u()}}):o=!0,r.length||(t.node.removeEventListener(Sd,c,!1),s=!0,u())},0)},n.delay||0)}):_d=null;var Id,Dd,qd,Vd,Ud,Bd=_d;if("undefined"!=typeof document){if(Id="hidden",Ud={},Id in document)qd="";else for(Vd=io.length;Vd--;)Dd=io[Vd],Id=Dd+"Hidden",Id in document&&(qd=Dd);void 0!==qd?(document.addEventListener(qd+"visibilitychange",Ur),Ur()):("onfocusout"in document?(document.addEventListener("focusout",Br),document.addEventListener("focusin",Wr)):(window.addEventListener("pagehide",Br),window.addEventListener("blur",Br),window.addEventListener("pageshow",Wr),window.addEventListener("focus",Wr)),Ud.hidden=!1)}var Wd,zd,Hd,Gd=Ud;Xa?(zd=window.getComputedStyle||Ao.getComputedStyle,Wd=function(t,e,n){var r,i=this;if(4===arguments.length)throw Error("t.animateStyle() returns a promise - use .then() instead of passing a callback");if(Gd.hidden)return this.setStyle(t,e),Hd||(Hd=cs.resolve());"string"==typeof t?(r={},r[t]=e):(r=t,n=e),n||(v('The "%s" transition does not supply an options object to `t.animateStyle()`. This will break in a future version of Ractive. For more info see https://github.com/RactiveJS/Ractive/issues/340',this.name),n=this);var a=new cs(function(t){var e,a,o,s,u,c,l;if(!n.duration)return i.setStyle(r),void t();for(e=Object.keys(r),a=[],o=zd(i.node),u={},c=e.length;c--;)l=e[c],s=o[yd(l)],"0px"===s&&(s=0),s!=r[l]&&(a.push(l),i.node.style[yd(l)]=s);return a.length?void Bd(i,r,n,a,t):void t()});return a}):Wd=null;var Kd=Wd,$d=function(t,e){return"number"==typeof t?t={duration:t}:"string"==typeof t?t="slow"===t?{duration:600}:"fast"===t?{duration:200}:{duration:400}:t||(t={}),i({},t,e)},Qd=zr,Yd=function(t,e,n){this.init(t,e,n)};Yd.prototype={init:hd,start:Qd,getStyle:bd,setStyle:xd,animateStyle:Kd,processParams:$d};var Jd,Xd,Zd=Yd,th=Gr;Jd=function(){var t=this.node,e=this.fragment.toString(!1);if(window&&window.appearsToBeIELessEqual8&&(t.type="text/css"),t.styleSheet)t.styleSheet.cssText=e;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}},Xd=function(){this.node.type&&"text/javascript"!==this.node.type||m("Script tag was updated. This does not cause the code to be re-evaluated!",{ractive:this.root}),this.node.text=this.fragment.toString(!1)};var eh=function(){var t,e;return this.template.y?"":(t="<"+this.template.e,t+=this.attributes.map(Xr).join("")+this.conditionalAttributes.map(Xr).join(""),"option"===this.name&&Yr(this)&&(t+=" selected"),"input"===this.name&&Jr(this)&&(t+=" checked"),t+=">","textarea"===this.name&&void 0!==this.getAttribute("value")?t+=Ee(this.getAttribute("value")):void 0!==this.getAttribute("contenteditable")&&(t+=this.getAttribute("value")||""),this.fragment&&(e="script"!==this.name&&"style"!==this.name,t+=this.fragment.toString(e)),al.test(this.template.e)||(t+=""),t)},nh=Zr,rh=ti,ih=function(t){this.init(t)};ih.prototype={bubble:jp,detach:Tp,find:Mp,findAll:Fp,findAllComponents:Lp,findComponent:Np,findNextNode:Rp,firstNode:Ip,getAttribute:Dp,init:fd,rebind:dd,render:th,toString:eh,unbind:nh,unrender:rh};var ah=ih,oh=/^\s*$/,sh=/^\s*/,uh=function(t){var e,n,r,i;return e=t.split("\n"),n=e[0],void 0!==n&&oh.test(n)&&e.shift(),r=N(e),void 0!==r&&oh.test(r)&&e.pop(),i=e.reduce(ni,null),i&&(t=e.map(function(t){return t.replace(i,"")}).join("\n")),t},ch=ri,lh=function(t,e){var n;return e?n=t.split("\n").map(function(t,n){return n?e+t:t}).join("\n"):t},ph='Could not find template for partial "%s"',fh=function(t){var e,n;e=this.parentFragment=t.parentFragment,this.root=e.root,this.type=Pc,this.index=t.index,this.name=t.template.r,this.rendered=!1,this.fragment=this.fragmentToRender=this.fragmentToUnrender=null,Wl.init(this,t),this.keypath||((n=ch(this.root,this.name,e))?(xl.call(this),this.isNamed=!0,this.setTemplate(n)):v(ph,this.name))};fh.prototype={bubble:function(){this.parentFragment.bubble()},detach:function(){return this.fragment.detach()},find:function(t){return this.fragment.find(t)},findAll:function(t,e){return this.fragment.findAll(t,e)},findComponent:function(t){return this.fragment.findComponent(t)},findAllComponents:function(t,e){return this.fragment.findAllComponents(t,e)},firstNode:function(){return this.fragment.firstNode()},findNextNode:function(){return this.parentFragment.findNextNode(this)},getPartialName:function(){return this.isNamed&&this.name?this.name:void 0===this.value?this.name:this.value},getValue:function(){return this.fragment.getValue()},rebind:function(t,e){this.isNamed||Bl.call(this,t,e),this.fragment&&this.fragment.rebind(t,e)},render:function(){return this.docFrag=document.createDocumentFragment(),this.update(),this.rendered=!0,this.docFrag},resolve:Wl.resolve,setValue:function(t){var e;(void 0===t||t!==this.value)&&(void 0!==t&&(e=ch(this.root,""+t,this.parentFragment)),!e&&this.name&&(e=ch(this.root,this.name,this.parentFragment))&&(xl.call(this),this.isNamed=!0),e||v(ph,this.name,{ractive:this.root}),this.value=t,this.setTemplate(e||[]),this.bubble(),this.rendered&&ys.addView(this))},setTemplate:function(t){this.fragment&&(this.fragment.unbind(),this.rendered&&(this.fragmentToUnrender=this.fragment)),this.fragment=new iv({template:t,root:this.root,owner:this,pElement:this.parentFragment.pElement}),this.fragmentToRender=this.fragment},toString:function(t){var e,n,r,i;return e=this.fragment.toString(t),n=this.parentFragment.items[this.index-1],n&&n.type===kc?(r=n.text.split("\n").pop(),(i=/^\s+$/.exec(r))?lh(e,i[0]):e):e},unbind:function(){this.isNamed||xl.call(this),this.fragment&&this.fragment.unbind()},unrender:function(t){this.rendered&&(this.fragment&&this.fragment.unrender(t),this.rendered=!1)},update:function(){var t,e;this.fragmentToUnrender&&(this.fragmentToUnrender.unrender(!0),this.fragmentToUnrender=null),this.fragmentToRender&&(this.docFrag.appendChild(this.fragmentToRender.render()),this.fragmentToRender=null),this.rendered&&(t=this.parentFragment.getNode(),e=this.parentFragment.findNextNode(this),t.insertBefore(this.docFrag,e))}};var dh,hh,mh,vh=fh,gh=ui,yh=ci,bh=new as("detach"),xh=li,wh=pi,_h=fi,kh=di,Eh=hi,Sh=mi,Oh=function(t,e,n,r){var i=t.root,a=t.keypath;r?i.viewmodel.smartUpdate(a,e,r):i.viewmodel.mark(a)},Ah=[],Ph=["pop","push","reverse","shift","sort","splice","unshift"];Ph.forEach(function(t){var e=function(){for(var e=arguments.length,n=Array(e),r=0;e>r;r++)n[r]=arguments[r];var i,a,o,s;for(i=yu(this,t,n),a=Array.prototype[t].apply(this,arguments),ys.start(),this._ractive.setting=!0,s=this._ractive.wrappers.length;s--;)o=this._ractive.wrappers[s],ys.addRactive(o.root),Oh(o,this,t,i);return ys.end(),this._ractive.setting=!1,a};So(Ah,t,{value:e})}),dh={},dh.__proto__?(hh=function(t){t.__proto__=Ah},mh=function(t){t.__proto__=Array.prototype}):(hh=function(t){var e,n;for(e=Ph.length;e--;)n=Ph[e],So(t,n,{value:Ah[n],configurable:!0})},mh=function(t){var e;for(e=Ph.length;e--;)delete t[Ph[e]]}),hh.unpatch=mh;var Ch,jh,Th,Mh=hh;Ch={filter:function(t){return a(t)&&(!t._ractive||!t._ractive.setting)},wrap:function(t,e,n){return new jh(t,e,n)}},jh=function(t,e,n){this.root=t,this.value=e,this.keypath=E(n),e._ractive||(So(e,"_ractive",{value:{wrappers:[],instances:[],setting:!1},configurable:!0}),Mh(e)),e._ractive.instances[t._guid]||(e._ractive.instances[t._guid]=0,e._ractive.instances.push(t)),e._ractive.instances[t._guid]+=1,e._ractive.wrappers.push(this)},jh.prototype={get:function(){return this.value},teardown:function(){var t,e,n,r,i;if(t=this.value,e=t._ractive,n=e.wrappers,r=e.instances,e.setting)return!1;if(i=n.indexOf(this),-1===i)throw Error(Th);if(n.splice(i,1),n.length){if(r[this.root._guid]-=1,!r[this.root._guid]){if(i=r.indexOf(this.root),-1===i)throw Error(Th);r.splice(i,1)}}else delete t._ractive,Mh.unpatch(this.value)}},Th="Something went wrong in a rather interesting way";var Fh,Lh,Nh=Ch,Rh=/^\s*[0-9]+\s*$/,Ih=function(t){return Rh.test(t)?[]:{}};try{Object.defineProperty({},"test",{value:0}),Fh={filter:function(t,e,n){var r,i;return e?(e=E(e),(r=n.viewmodel.wrapped[e.parent.str])&&!r.magic?!1:(i=n.viewmodel.get(e.parent),a(i)&&/^[0-9]+$/.test(e.lastKey)?!1:i&&("object"==typeof i||"function"==typeof i))):!1},wrap:function(t,e,n){return new Lh(t,e,n)}},Lh=function(t,e,n){var r,i,a;return n=E(n),this.magic=!0,this.ractive=t,this.keypath=n,this.value=e,this.prop=n.lastKey,r=n.parent,this.obj=r.isRoot?t.viewmodel.data:t.viewmodel.get(r),i=this.originalDescriptor=Object.getOwnPropertyDescriptor(this.obj,this.prop),i&&i.set&&(a=i.set._ractiveWrappers)?void(-1===a.indexOf(this)&&a.push(this)):void vi(this,e,i)},Lh.prototype={get:function(){return this.value},reset:function(t){return this.updating?void 0:(this.updating=!0,this.obj[this.prop]=t,ys.addRactive(this.ractive),this.ractive.viewmodel.mark(this.keypath,{keepExistingWrapper:!0}),this.updating=!1,!0)},set:function(t,e){this.updating||(this.obj[this.prop]||(this.updating=!0,this.obj[this.prop]=Ih(t),this.updating=!1),this.obj[this.prop][t]=e)},teardown:function(){var t,e,n,r,i;return this.updating?!1:(t=Object.getOwnPropertyDescriptor(this.obj,this.prop),e=t&&t.set,void(e&&(r=e._ractiveWrappers,i=r.indexOf(this),-1!==i&&r.splice(i,1),r.length||(n=this.obj[this.prop],Object.defineProperty(this.obj,this.prop,this.originalDescriptor||{writable:!0,enumerable:!0,configurable:!0}),this.obj[this.prop]=n))))}}}catch(Po){Fh=!1}var Dh,qh,Vh=Fh;Vh&&(Dh={filter:function(t,e,n){return Vh.filter(t,e,n)&&Nh.filter(t)},wrap:function(t,e,n){return new qh(t,e,n)}},qh=function(t,e,n){this.value=e,this.magic=!0,this.magicWrapper=Vh.wrap(t,e,n),this.arrayWrapper=Nh.wrap(t,e,n)},qh.prototype={get:function(){return this.value},teardown:function(){this.arrayWrapper.teardown(),this.magicWrapper.teardown()},reset:function(t){return this.magicWrapper.reset(t)}});var Uh=Dh,Bh=gi,Wh={},zh=xi,Hh=wi,Gh=Ei,Kh=Ci,$h=ji,Qh=function(t,e){this.computation=t,this.viewmodel=t.viewmodel,this.ref=e,this.root=this.viewmodel.ractive,this.parentFragment=this.root.component&&this.root.component.parentFragment};Qh.prototype={resolve:function(t){this.computation.softDeps.push(t),this.computation.unresolvedDeps[t.str]=null,this.viewmodel.register(t,this.computation,"computed")}};var Yh=Qh,Jh=function(t,e){this.key=t,this.getter=e.getter,this.setter=e.setter,this.hardDeps=e.deps||[],this.softDeps=[],this.unresolvedDeps={},this.depValues={},this._dirty=this._firstRun=!0};Jh.prototype={constructor:Jh,init:function(t){var e,n=this;this.viewmodel=t,this.bypass=!0,e=t.get(this.key),t.clearCache(this.key.str),this.bypass=!1,this.setter&&void 0!==e&&this.set(e),this.hardDeps&&this.hardDeps.forEach(function(e){return t.register(e,n,"computed")})},invalidate:function(){this._dirty=!0},get:function(){var t,e,n=this,r=!1;if(this.getting){var i="The "+this.key.str+" computation indirectly called itself. This probably indicates a bug in the computation. It is commonly caused by `array.sort(...)` - if that's the case, clone the array first with `array.slice().sort(...)`";return h(i),this.value}if(this.getting=!0,this._dirty){if(this._firstRun||!this.hardDeps.length&&!this.softDeps.length?r=!0:[this.hardDeps,this.softDeps].forEach(function(t){var e,i,a;if(!r)for(a=t.length;a--;)if(e=t[a],i=n.viewmodel.get(e),!s(i,n.depValues[e.str]))return n.depValues[e.str]=i,void(r=!0)}),r){this.viewmodel.capture();try{this.value=this.getter(); -}catch(a){m('Failed to compute "%s"',this.key.str),f(a.stack||a),this.value=void 0}t=this.viewmodel.release(),e=this.updateDependencies(t),e&&[this.hardDeps,this.softDeps].forEach(function(t){t.forEach(function(t){n.depValues[t.str]=n.viewmodel.get(t)})})}this._dirty=!1}return this.getting=this._firstRun=!1,this.value},set:function(t){if(this.setting)return void(this.value=t);if(!this.setter)throw Error("Computed properties without setters are read-only. (This may change in a future version of Ractive!)");this.setter(t)},updateDependencies:function(t){var e,n,r,i,a;for(n=this.softDeps,e=n.length;e--;)r=n[e],-1===t.indexOf(r)&&(i=!0,this.viewmodel.unregister(r,this,"computed"));for(e=t.length;e--;)r=t[e],-1!==n.indexOf(r)||this.hardDeps&&-1!==this.hardDeps.indexOf(r)||(i=!0,Ti(this.viewmodel,r)&&!this.unresolvedDeps[r.str]?(a=new Yh(this,r.str),t.splice(e,1),this.unresolvedDeps[r.str]=a,ys.addUnresolved(a)):this.viewmodel.register(r,this,"computed"));return i&&(this.softDeps=t.slice()),i}};var Xh=Jh,Zh=Mi,tm={FAILED_LOOKUP:!0},em=Fi,nm={},rm=Ni,im=Ri,am=function(t,e){this.localKey=t,this.keypath=e.keypath,this.origin=e.origin,this.deps=[],this.unresolved=[],this.resolved=!1};am.prototype={forceResolution:function(){this.keypath=this.localKey,this.setup()},get:function(t,e){return this.resolved?this.origin.get(this.map(t),e):void 0},getValue:function(){return this.keypath?this.origin.get(this.keypath):void 0},initViewmodel:function(t){this.local=t,this.setup()},map:function(t){return void 0===typeof this.keypath?this.localKey:t.replace(this.localKey,this.keypath)},register:function(t,e,n){this.deps.push({keypath:t,dep:e,group:n}),this.resolved&&this.origin.register(this.map(t),e,n)},resolve:function(t){void 0!==this.keypath&&this.unbind(!0),this.keypath=t,this.setup()},set:function(t,e){this.resolved||this.forceResolution(),this.origin.set(this.map(t),e)},setup:function(){var t=this;void 0!==this.keypath&&(this.resolved=!0,this.deps.length&&(this.deps.forEach(function(e){var n=t.map(e.keypath);if(t.origin.register(n,e.dep,e.group),e.dep.setValue)e.dep.setValue(t.origin.get(n));else{if(!e.dep.invalidate)throw Error("An unexpected error occurred. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!");e.dep.invalidate()}}),this.origin.mark(this.keypath)))},setValue:function(t){if(!this.keypath)throw Error("Mapping does not have keypath, cannot set value. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!");this.origin.set(this.keypath,t)},unbind:function(t){var e=this;t||delete this.local.mappings[this.localKey],this.resolved&&(this.deps.forEach(function(t){e.origin.unregister(e.map(t.keypath),t.dep,t.group)}),this.tracker&&this.origin.unregister(this.keypath,this.tracker))},unregister:function(t,e,n){var r,i;if(this.resolved){for(r=this.deps,i=r.length;i--;)if(r[i].dep===e){r.splice(i,1);break}this.origin.unregister(this.map(t),e,n)}}};var om=Ii,sm=function(t,e){var n,r,i,a;return n={},r=0,i=t.map(function(t,i){var o,s,u;s=r,u=e.length;do{if(o=e.indexOf(t,s),-1===o)return a=!0,-1;s=o+1}while(n[o]&&u>s);return o===r&&(r+=1),o!==i&&(a=!0),n[o]=!0,o})},um=Di,cm={},lm=Ui,pm=Wi,fm=zi,dm=Hi,hm=Ki,mm={implicit:!0},vm={noCascade:!0},gm=Qi,ym=Yi,bm=function(t){var e,n,r=t.adapt,i=t.data,a=t.ractive,o=t.computed,s=t.mappings;this.ractive=a,this.adaptors=r,this.onchange=t.onchange,this.cache={},this.cacheMap=Eo(null),this.deps={computed:Eo(null),"default":Eo(null)},this.depsMap={computed:Eo(null),"default":Eo(null)},this.patternObservers=[],this.specials=Eo(null),this.wrapped=Eo(null),this.computations=Eo(null),this.captureGroups=[],this.unresolvedImplicitDependencies=[],this.changes=[],this.implicitChanges={},this.noCascade={},this.data=i,this.mappings=Eo(null);for(e in s)this.map(E(e),s[e]);if(i)for(e in i)(n=this.mappings[e])&&void 0===n.getValue()&&n.setValue(i[e]);for(e in o)s&&e in s&&p("Cannot map to a computed property ('%s')",e),this.compute(E(e),o[e]);this.ready=!0};bm.prototype={adapt:Bh,applyChanges:Gh,capture:Kh,clearCache:$h,compute:Zh,get:em,init:rm,map:im,mark:om,merge:um,register:lm,release:pm,reset:fm,set:dm,smartUpdate:hm,teardown:gm,unregister:ym};var xm=bm;Xi.prototype={constructor:Xi,begin:function(t){this.inProcess[t._guid]=!0},end:function(t){var e=t.parent;e&&this.inProcess[e._guid]?Zi(this.queue,e).push(t):ta(this,t),delete this.inProcess[t._guid]}};var wm=Xi,_m=ea,km=/\$\{([^\}]+)\}/g,Em=new as("construct"),Sm=new as("config"),Om=new wm("init"),Am=0,Pm=["adaptors","components","decorators","easing","events","interpolators","partials","transitions"],Cm=aa,jm=la;la.prototype={bubble:function(){this.dirty||(this.dirty=!0,ys.addView(this))},update:function(){this.callback(this.fragment.getValue()),this.dirty=!1},rebind:function(t,e){this.fragment.rebind(t,e)},unbind:function(){this.fragment.unbind()}};var Tm=function(t,e,n,i,o){var s,u,c,l,p,f,d={},h={},v={},g=[];for(u=t.parentFragment,c=t.root,o=o||{},r(d,o),o.content=i||[],d[""]=o.content,e.defaults.el&&m("The <%s/> component has a default `el` property; it has been disregarded",t.name),l=u;l;){if(l.owner.type===Mc){p=l.owner.container;break}l=l.parent}return n&&Object.keys(n).forEach(function(e){var r,i,o=n[e];if("string"==typeof o)r=fl(o),h[e]=r?r.value:o;else if(0===o)h[e]=!0;else{if(!a(o))throw Error("erm wut");fa(o)?(v[e]={origin:t.root.viewmodel,keypath:void 0},i=pa(t,o[0],function(t){t.isSpecial?f?s.set(e,t.value):(h[e]=t.value,delete v[e]):f?s.viewmodel.mappings[e].resolve(t):v[e].keypath=t})):i=new jm(t,o,function(t){f?s.set(e,t):h[e]=t}),g.push(i)}}),s=Eo(e.prototype),Cm(s,{el:null,append:!0,data:h,partials:o,magic:c.magic||e.defaults.magic,modifyArrays:c.modifyArrays,adapt:c.adapt},{parent:c,component:t,container:p,mappings:v,inlinePartials:d,cssIds:u.cssIds}),f=!0,t.resolvers=g,s},Mm=da,Fm=function(t){var e,n;for(e=t.root;e;)(n=e._liveComponentQueries["_"+t.name])&&n.push(t.instance),e=e.parent},Lm=ma,Nm=va,Rm=ga,Im=ya,Dm=ba,qm=new as("teardown"),Vm=wa,Um=function(t,e){this.init(t,e)};Um.prototype={detach:yh,find:xh,findAll:wh,findAllComponents:_h,findComponent:kh,findNextNode:Eh,firstNode:Sh,init:Lm,rebind:Nm,render:Rm,toString:Im,unbind:Dm,unrender:Vm};var Bm=Um,Wm=function(t){this.type=Cc,this.value=t.template.c};Wm.prototype={detach:gl,firstNode:function(){return this.node},render:function(){return this.node||(this.node=document.createComment(this.value)),this.node},toString:function(){return""},unrender:function(t){t&&this.node.parentNode.removeChild(this.node)}};var zm=Wm,Hm=function(t){var e,n;this.type=Mc,this.container=e=t.parentFragment.root,this.component=n=e.component,this.container=e,this.containerFragment=t.parentFragment,this.parentFragment=n.parentFragment;var r=this.name=t.template.n||"",i=e._inlinePartials[r];i||(m('Could not find template for partial "'+r+'"',{ractive:t.root}),i=[]),this.fragment=new iv({owner:this,root:e.parent,template:i,pElement:this.containerFragment.pElement}),a(n.yielders[r])?n.yielders[r].push(this):n.yielders[r]=[this],ys.scheduleTask(function(){if(n.yielders[r].length>1)throw Error("A component template can only have one {{yield"+(r?" "+r:"")+"}} declaration at a time")})};Hm.prototype={detach:function(){return this.fragment.detach()},find:function(t){return this.fragment.find(t)},findAll:function(t,e){return this.fragment.findAll(t,e)},findComponent:function(t){return this.fragment.findComponent(t)},findAllComponents:function(t,e){return this.fragment.findAllComponents(t,e)},findNextNode:function(){return this.containerFragment.findNextNode(this)},firstNode:function(){return this.fragment.firstNode()},getValue:function(t){return this.fragment.getValue(t)},render:function(){return this.fragment.render()},unbind:function(){this.fragment.unbind()},unrender:function(t){this.fragment.unrender(t),R(this.component.yielders[this.name],this)},rebind:function(t,e){this.fragment.rebind(t,e)},toString:function(){return""+this.fragment}};var Gm=Hm,Km=function(t){this.declaration=t.template.a};Km.prototype={init:ko,render:ko,unrender:ko,teardown:ko,toString:function(){return""}};var $m=Km,Qm=_a,Ym=Ea,Jm=Sa,Xm=Oa,Zm=Ca,tv=Ta,ev=function(t){this.init(t)};ev.prototype={bubble:lc,detach:pc,find:fc,findAll:dc,findAllComponents:hc,findComponent:mc,findNextNode:vc,firstNode:gc,getArgsList:hl,getNode:ml,getValue:vl,init:Qm,rebind:Ym,registerIndexRef:function(t){var e=this.registeredIndexRefs;-1===e.indexOf(t)&&e.push(t)},render:Jm,toString:Xm,unbind:Zm,unregisterIndexRef:function(t){var e=this.registeredIndexRefs;e.splice(e.indexOf(t),1)},unrender:tv};var nv,rv,iv=ev,av=Ma,ov=["template","partials","components","decorators","events"],sv=new as("reset"),uv=function(t,e){function n(e,r,i){i&&i.partials[t]||e.forEach(function(e){e.type===Pc&&e.getPartialName()===t&&r.push(e),e.fragment&&n(e.fragment.items,r,i),a(e.fragments)?n(e.fragments,r,i):a(e.items)?n(e.items,r,i):e.type===Tc&&e.instance&&n(e.instance.fragment.items,r,e.instance),e.type===Ac&&(a(e.attributes)&&n(e.attributes,r,i),a(e.conditionalAttributes)&&n(e.conditionalAttributes,r,i))})}var r,i=[];return n(this.fragment.items,i),this.partials[t]=e,r=ys.start(this,!0),i.forEach(function(e){e.value=void 0,e.setValue(t)}),ys.end(),r},cv=Fa,lv=xu("reverse"),pv=La,fv=xu("shift"),dv=xu("sort"),hv=xu("splice"),mv=Ra,vv=Ia,gv=new as("teardown"),yv=qa,bv=Va,xv=Ua,wv=new as("unrender"),_v=xu("unshift"),kv=Ba,Ev=new as("update"),Sv=Wa,Ov={add:Zo,animate:Es,detach:Os,find:Ps,findAll:Is,findAllComponents:Ds,findComponent:qs,findContainer:Vs,findParent:Us,fire:Hs,get:Gs,insert:$s,merge:Ys,observe:pu,observeOnce:fu,off:mu,on:vu,once:gu,pop:wu,push:_u,render:ju,reset:av,resetPartial:uv,resetTemplate:cv,reverse:lv,set:pv,shift:fv,sort:dv,splice:hv,subtract:mv,teardown:vv,toggle:yv,toHTML:bv,toHtml:bv,unrender:xv,unshift:_v,update:kv,updateModel:Sv},Av=function(t,e,n){return n||Ha(t,e)?function(){var n,r="_super"in this,i=this._super;return this._super=e,n=t.apply(this,arguments),r&&(this._super=i),n}:t},Pv=Ga,Cv=Ya,jv=function(t){var e,n,r={};return t&&(e=t._ractive)?(r.ractive=e.root,r.keypath=e.keypath.str,r.index={},(n=Cl(e.proxy.parentFragment))&&(r.index=Cl.resolve(n)),r):r};nv=function(t){return this instanceof nv?void Cm(this,t):new nv(t)},rv={DEBUG:{writable:!0,value:!0},DEBUG_PROMISES:{writable:!0,value:!0},extend:{value:Cv},getNodeInfo:{value:jv},parse:{value:Gu},Promise:{value:cs},svg:{value:ro},magic:{value:eo},VERSION:{value:"0.7.3"},adaptors:{writable:!0,value:{}},components:{writable:!0,value:{}},decorators:{writable:!0,value:{}},easing:{writable:!0,value:uo},events:{writable:!0,value:{}},interpolators:{writable:!0,value:Bo},partials:{writable:!0,value:{}},transitions:{writable:!0,value:{}}},Oo(nv,rv),nv.prototype=r(Ov,so),nv.prototype.constructor=nv,nv.defaults=nv.prototype;var Tv="function";if(typeof Date.now!==Tv||typeof String.prototype.trim!==Tv||typeof Object.keys!==Tv||typeof Array.prototype.indexOf!==Tv||typeof Array.prototype.forEach!==Tv||typeof Array.prototype.map!==Tv||typeof Array.prototype.filter!==Tv||"undefined"!=typeof window&&typeof window.addEventListener!==Tv)throw Error("It looks like you're attempting to use Ractive.js in an older browser. You'll need to use one of the 'legacy builds' in order to continue - see http://docs.ractivejs.org/latest/legacy-builds for more information.");var Mv=nv;return Mv})},{}],204:[function(t,e,n){!function(){function t(t,e,n){return t.call.apply(t.bind,arguments)}function n(t,e,n){if(!t)throw Error();if(2r;r++)if(n[r]==e)return!0;return!1}function l(t){if("string"==typeof t.f)return t.f;var e=t.m.location.protocol;return"about:"==e&&(e=t.a.location.protocol),"https:"==e?"https:":"http:"}function p(t){return t.m.location.hostname||t.a.location.hostname}function f(t,e,n){function r(){c&&i&&s&&(c(u),c=null)}e=a(t,"link",{rel:"stylesheet",href:e,media:"all"});var i=!1,s=!0,u=null,c=n||null;it?(e.onload=function(){i=!0,r()},e.onerror=function(){i=!0,u=Error("Stylesheet failed to load"),r()}):setTimeout(function(){i=!0,r()},0),o(t,"head",e)}function d(t,e,n,r){var i=t.c.getElementsByTagName("head")[0];if(i){var o=a(t,"script",{src:e}),s=!1;return o.onload=o.onreadystatechange=function(){s||this.readyState&&"loaded"!=this.readyState&&"complete"!=this.readyState||(s=!0,n&&n(null),o.onload=o.onreadystatechange=null,"HEAD"==o.parentNode.tagName&&i.removeChild(o))},i.appendChild(o),setTimeout(function(){s||(s=!0,n&&n(Error("Script load timeout")))},r||5e3),o}return null}function h(){this.a=0,this.c=null}function m(t){return t.a++,function(){t.a--,g(t)}}function v(t,e){t.c=e,g(t)}function g(t){0==t.a&&t.c&&(t.c(),t.c=null)}function y(t){this.a=t||"-"}function b(t,e){this.c=t,this.f=4,this.a="n";var n=(e||"n4").match(/^([nio])([1-9])$/i);n&&(this.a=n[1],this.f=parseInt(n[2],10))}function x(t){return k(t)+" "+(t.f+"00")+" 300px "+w(t.c)}function w(t){var e=[];t=t.split(/,\s*/);for(var n=0;nparseInt(t[1],10)||536===parseInt(t[1],10)&&11>=parseInt(t[2],10))}return ot}function I(t,e,n){for(var r in at)if(at.hasOwnProperty(r)&&e===t.f[at[r]]&&n===t.f[at[r]])return!0;return!1}function D(t){var e,n=t.g.a.offsetWidth,r=t.h.a.offsetWidth;(e=n===t.f.serif&&r===t.f["sans-serif"])||(e=R()&&I(t,n,r)),e?rt()-t.A>=t.w?R()&&I(t,n,r)&&(null===t.u||t.u.hasOwnProperty(t.a.c))?V(t,t.v):V(t,t.B):q(t):V(t,t.v)}function q(t){setTimeout(r(function(){D(this)},t),50)}function V(t,e){setTimeout(r(function(){s(this.g.a),s(this.h.a),s(this.j.a),s(this.o.a),e(this.a)},t),0)}function U(t,e,n){this.c=t,this.a=e,this.f=0,this.o=this.j=!1,this.s=n}function B(t){0==--t.f&&t.j&&(t.o?(t=t.a,t.g&&u(t.f,[t.a.c("wf","active")],[t.a.c("wf","loading"),t.a.c("wf","inactive")]),P(t,"active")):A(t.a))}function W(t){this.j=t,this.a=new C,this.h=0,this.f=this.g=!0}function z(t,e,n,i,a){var o=0==--t.h;(t.f||t.g)&&setTimeout(function(){var t=a||null,s=i||null||{};if(0===n.length&&o)A(e.a);else{e.f+=n.length,o&&(e.j=o);var c,l=[];for(c=0;ce;e++)r[e].load(function(e,n,r){z(t,a,e,n,r)})}function G(t,e){this.c=t,this.a=e}function K(t,e,n){var r=l(t.c);return t=(t.a.api||"fast.fonts.net/jsapi").replace(/^.*http(s?):(\/\/)?/,""),r+"//"+t+"/"+e+".js"+(n?"?v="+n:"")}function $(t,e){this.c=t,this.a=e}function Q(t,e,n){t?this.c=t:this.c=e+ut,this.a=[],this.f=[],this.g=n||""}function Y(t,e){for(var n=e.length,r=0;n>r;r++){var i=e[r].split(":");3==i.length&&t.f.push(i.pop());var a="";2==i.length&&""!=i[1]&&(a=":"),t.a.push(i.join(a))}}function J(t){if(0==t.a.length)throw Error("No fonts to load!");if(-1!=t.c.indexOf("kit="))return t.c;for(var e=t.a.length,n=[],r=0;e>r;r++)n.push(t.a[r].replace(/ /g,"+"));return e=t.c+"?family="+n.join("%7C"),0n;n++){var r=t.f[n].split(":"),i=r[0].replace(/\+/g," "),a=["n4"];if(2<=r.length){var o,s=r[1];if(o=[],s)for(var s=s.split(","),u=s.length,c=0;u>c;c++){var l;if(l=s[c],l.match(/^[\w-]+$/)){var p=ft.exec(l.toLowerCase());if(null==p)l="";else{if(l=p[2],l=null==l||""==l?"n":pt[l],p=p[1],null==p||""==p)p="4";else var f=lt[p],p=f?f:isNaN(p)?"4":p.substr(0,1);l=""+l+p}}else l="";l&&o.push(l)}0=n.j?n.f(n.a):e.fonts.load(x(n.a),n.h).then(function(e){1<=e.length?n.g(n.a):setTimeout(t,25)},function(){n.f(n.a)})}var e=this.c.m.document,n=this,r=rt();t()};var at={D:"serif",C:"sans-serif"},ot=null;N.prototype.start=function(){this.f.serif=this.j.a.offsetWidth,this.f["sans-serif"]=this.o.a.offsetWidth,this.A=rt(),D(this)};var st=null;U.prototype.g=function(t){var e=this.a;e.g&&u(e.f,[e.a.c("wf",t.c,""+_(t),"active")],[e.a.c("wf",t.c,""+_(t),"loading"),e.a.c("wf",t.c,""+_(t),"inactive")]),P(e,"fontactive",t),this.o=!0,B(this)},U.prototype.h=function(t){var e=this.a;if(e.g){var n=c(e.f,e.a.c("wf",t.c,""+_(t),"active")),r=[],i=[e.a.c("wf",t.c,""+_(t),"loading")];n||r.push(e.a.c("wf",t.c,""+_(t),"inactive")),u(e.f,r,i)}P(e,"fontinactive",t),B(this)},W.prototype.load=function(t){this.c=new i(this.j,t.context||this.j),this.g=!1!==t.events,this.f=!1!==t.classes,H(this,new S(this.c,t),t)},G.prototype.load=function(t){function e(){if(i["__mti_fntLst"+n]){var r,a=i["__mti_fntLst"+n](),o=[];if(a)for(var s=0;se;e++)f(this.c,r[e],m(o));var s=[];for(e=0,n=i.length;n>e;e++)if(r=i[e].split(":"),r[1])for(var u=r[1].split(","),c=0;ci;++i){var o=n.fonts[i];r.a.push(new b(o.name,E("font-weight:"+o.weight+";font-style:"+o.style)))}t(r.a)},d(this.c,l(this.c)+(this.f.api||"//f.fontdeck.com/s/css/js/")+p(this.c)+"/"+e+".js",function(e){e&&t([])})):t([])};var ht=new W(window);ht.a.c.custom=function(t,e){return new $(e,t)},ht.a.c.fontdeck=function(t,e){return new nt(e,t)},ht.a.c.monotype=function(t,e){return new G(e,t)},ht.a.c.typekit=function(t,e){return new et(e,t)},ht.a.c.google=function(t,e){return new tt(e,t)};var mt={load:r(ht.load,ht)};"function"==typeof define&&define.amd?define(function(){return mt}):void 0!==e&&e.exports?e.exports=mt:(window.WebFont=mt,window.WebFontConfig&&ht.load(window.WebFontConfig))}()},{}],205:[function(t,e,n){var r=t(203),i={exports:{}};!function(t){"use strict";t.exports={oninit:function(){var t=this;this.observe("value",function(e,n,r){var i=t.get(),a=i.min,o=i.max,s=Math.clamp(a,o,e);t.animate("percentage",Math.round((s-a)/(o-a)*100))})}}}(i),i.exports.template={v:3,t:[" ",{p:[13,1,305],t:7,e:"div",a:{"class":"bar"},f:[{p:[14,3,326],t:7,e:"div",a:{"class":["barFill ",{t:2,r:"state",p:[14,23,346]}],style:["width: ",{t:2,r:"percentage",p:[14,48,371]},"%"]}}," ",{p:[15,3,398],t:7,e:"span",a:{"class":"barText"},f:[{t:16,p:[15,25,420]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],206:[function(t,e,n){var r=t(203),i={exports:{}};!function(e){"use strict";var n=t(259),r=t(258);e.exports={computed:{clickable:function(){return this.get("enabled")&&!this.get("state")?!0:!1},enabled:function(){return this.get("config.status")===n.UI_INTERACTIVE?!0:!1},styles:function(){var t="";if(this.get("tooltip-side")&&(t=" tooltip-"+this.get("tooltip-side")),this.get("grid")&&(t+=" gridable"),this.get("enabled")){var e=this.get("state"),n=this.get("style");return e?"inactive "+e+" "+t:"active normal "+n+" "+t}return"inactive disabled "+t}},oninit:function(){var t=this;this.on("press",function(e){var n=t.get(),i=n.action,a=n.params;(0,r.act)(t.get("config.ref"),i,a),e.node.blur()})}}}(i),i.exports.template={v:3,t:[" ",{p:[48,1,1225],t:7,e:"span",a:{"class":["button ",{t:2,r:"styles",p:[48,21,1245]}],unselectable:"on","data-tooltip":[{t:2,r:"tooltip",p:[51,17,1330]}]},m:[{t:4,f:["tabindex='0'"],r:"clickable",p:[50,3,1281]}],v:{"mouseover-mousemove":"hover",mouseleave:"unhover","click-enter":{n:[{t:4,f:["press"],r:"clickable",p:[54,19,1423]}],d:[]}},f:[{t:4,f:[{p:[56,5,1471],t:7,e:"i",a:{"class":["fa fa-",{t:2,r:"icon",p:[56,21,1487]}]}}],n:50,r:"icon",p:[55,3,1453]}," ",{t:16,p:[58,3,1516]}]}]},e.exports=r.extend(i.exports)},{203:203,258:258,259:259}],207:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"display"},f:[{t:4,f:[{p:[3,5,44],t:7,e:"header",f:[{p:[4,7,60],t:7,e:"h3",f:[{t:2,r:"title",p:[4,11,64]}]}," ",{t:4,f:[{p:[6,9,110],t:7,e:"div",a:{"class":"buttonRight"},f:[{t:16,n:"button",p:[6,34,135]}]}],n:50,r:"button",p:[5,7,86]}]}],n:50,r:"title",p:[2,3,25]}," ",{p:[10,3,202],t:7,e:"article",f:[{t:16,p:[11,5,217]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],208:[function(t,e,n){var r=t(203),i={exports:{}};!function(t){"use strict";t.exports={oninit:function(){var t=this;this.on("clear",function(){t.set("value",""),t.find("input").focus()})}}}(i),i.exports.template={v:3,t:[" ",{p:[12,1,170],t:7,e:"input",a:{type:"text",value:[{t:2,r:"value",p:[12,27,196]}],placeholder:[{t:2,r:"placeholder",p:[12,51,220]}]}}," ",{p:[13,1,240],t:7,e:"ui-button",a:{icon:"refresh"},v:{press:"clear"}}]},e.exports=r.extend(i.exports)},{203:203}],209:[function(t,e,n){var r=t(203),i={exports:{}};!function(e){"use strict";e.exports={data:{graph:t(199),xaccessor:function(t){return t.x},yaccessor:function(t){return t.y}},computed:{size:function(){var t=this.get("points");return t[0].length},scale:function(){var t,e=this.get("points");return(t=Math).max.apply(t,Array.map(e,function(t){var e;return(e=Math).max.apply(e,Array.map(t,function(t){return t.y}))}))},xaxis:function(){var t=this.get("xinc"),e=this.get("size");return Array.from(Array(e).keys()).filter(function(e){return e&&e%t==0})},yaxis:function(){var t=this.get("yinc"),e=this.get("scale");return Array.from(Array(t).keys()).map(function(t){return Math.round(e*(++t/100)*10)})}},oninit:function(){var t=this;this.on({enter:function(t){this.set("selected",t.index.count)},exit:function(t){this.set("selected")}}),window.addEventListener("resize",function(e){t.set("width",t.el.clientWidth)})},onrender:function(){this.set("width",this.el.clientWidth)}}}(i),i.exports.template={v:3,t:[" ",{p:[47,1,1269],t:7,e:"svg",a:{"class":"linegraph",width:"100%",height:[{t:2,x:{r:["height"],s:"_0+10"},p:[47,45,1313]}]},f:[{p:[48,3,1334],t:7,e:"g",a:{transform:"translate(0, 5)"},f:[{t:4,f:[{t:4,f:[{p:[51,9,1504],t:7,e:"line",a:{x1:[{t:2,x:{r:["xscale","."],s:"_0(_1)"},p:[51,19,1514]}],x2:[{t:2,x:{r:["xscale","."],s:"_0(_1)"},p:[51,38,1533]}],y1:"0",y2:[{t:2,r:"height",p:[51,64,1559]}],stroke:"darkgray"}}," ",{t:4,f:[{p:[53,11,1635],t:7,e:"text",a:{x:[{t:2,x:{r:["xscale","."],s:"_0(_1)"},p:[53,20,1644]}],y:[{t:2,x:{r:["height"],s:"_0-5"},p:[53,38,1662]}],"text-anchor":"middle",fill:"white"},f:[{t:2,x:{r:["size",".","xfactor"],s:"(_0-_1)*_2"},p:[53,88,1712]}," ",{t:2,r:"xunit",p:[53,113,1737]}]}],n:50,x:{r:["@index"],s:"_0%2==0"},p:[52,9,1600]}],n:52,r:"xaxis",p:[50,7,1479]}," ",{t:4,f:[{p:[57,9,1820],t:7,e:"line",a:{x1:"0",x2:[{t:2,r:"width",p:[57,26,1837]}],y1:[{t:2,x:{r:["yscale","."],s:"_0(_1)"},p:[57,41,1852]}],y2:[{t:2,x:{r:["yscale","."],s:"_0(_1)"},p:[57,60,1871]}],stroke:"darkgray"}}," ",{p:[58,9,1915],t:7,e:"text",a:{x:"0",y:[{t:2,x:{r:["yscale","."],s:"_0(_1)-5"},p:[58,24,1930]}],"text-anchor":"begin",fill:"white"},f:[{t:2,x:{r:[".","yfactor"],s:"_0*_1"},p:[58,76,1982]}," ",{t:2,r:"yunit",p:[58,92,1998]}]}],n:52,r:"yaxis",p:[56,7,1795]}," ",{t:4,f:[{p:[61,9,2071],t:7,e:"path",a:{d:[{t:2,x:{r:["area.path"],s:"_0.print()"},p:[61,18,2080]}],fill:[{t:2,rx:{r:"colors",m:[{t:30,n:"curve"}]},p:[61,47,2109]}],opacity:"0.1"}}],n:52,i:"curve",r:"curves",p:[60,7,2039]}," ",{t:4,f:[{p:[64,9,2200],t:7,e:"path",a:{d:[{t:2,x:{r:["line.path"],s:"_0.print()"},p:[64,18,2209]}],stroke:[{t:2,rx:{r:"colors",m:[{t:30,n:"curve"}]},p:[64,49,2240]}],fill:"none"}}],n:52,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=r.extend(i.exports)},{199:199,203:203}],210:[function(t,e,n){var r=t(203),i={exports:{}};i.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=r.extend(i.exports)},{203:203}],211:[function(t,e,n){var r=t(203),i={exports:{}};!function(e){"use strict";var n=t(258);e.exports={oninit:function(){var t=this;this.observe("config.fancy",function(e,r,i){(0,n.winset)(t.get("config.window"),"can-resize",!e)})}}}(i),i.exports.template={v:3,t:[" ",{t:4,f:[{p:[14,3,271],t:7,e:"div",a:{"class":"resize"},v:{mousedown:"resize"}}],n:50,r:"config.fancy",p:[13,1,247]}]},e.exports=r.extend(i.exports)},{203:203,258:258}],212:[function(t,e,n){var r=t(203),i={exports:{}};i.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=r.extend(i.exports); -},{203:203}],213:[function(t,e,n){var r=t(203),i={exports:{}};i.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=r.extend(i.exports)},{203:203}],214:[function(t,e,n){var r=t(203),i={exports:{}};!function(e){"use strict";var n=t(259),r=t(258);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;this.observe("config.fancy",function(e,n,i){(0,r.winset)(t.get("config.window"),"titlebar",!e)}),this.on({close:function(){(0,r.winset)(this.get("config.window"),"is-visible",!1),window.location.href=(0,r.href)({command:"uiclose "+this.get("config.ref")},"winset")},minimize:function(){(0,r.winset)(this.get("config.window"),"is-minimized",!0)}})}}}(i),i.exports.template={v:3,t:[" ",{p:[34,1,892],t:7,e:"header",a:{"class":"titlebar"},v:{mousedown:"drag"},f:[{p:[35,3,941],t:7,e:"i",a:{"class":["statusicon fa fa-eye fa-2x ",{t:2,r:"visualStatus",p:[35,40,978]}]}}," ",{p:[36,3,1004],t:7,e:"span",a:{"class":"title"},f:[{t:16,p:[36,23,1024]}]}," ",{t:4,f:[{p:[38,5,1070],t:7,e:"i",a:{"class":"minimize fa fa-minus fa-2x"},v:{click:"minimize"}}," ",{p:[39,5,1138],t:7,e:"i",a:{"class":"close fa fa-close fa-2x"},v:{click:"close"}}],n:50,r:"config.fancy",p:[37,3,1044]}]}]},e.exports=r.extend(i.exports)},{203:203,258:258,259:259}],215:[function(t,e,n){var r=t(203),i={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")})}}}(i),i.exports.template={v:3,t:[" ",{t:4,f:[{p:[27,3,622],t:7,e:"ui-notice",f:[{p:[28,5,639],t:7,e:"span",f:["You have an old (IE",{t:2,r:"ie",p:[28,30,664]},") end-of-life (click 'EOL Info' for more information) version of Internet Explorer installed."]},{p:[28,137,771],t:7,e:"br"}," ",{p:[29,5,782],t:7,e:"span",f:["To upgrade click 'Upgrade IE' to download IE11 from Microsoft."]},{p:[29,81,858],t:7,e:"br"}," ",{p:[30,5,869],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,986],t:7,e:"br"}," ",{p:[31,5,997],t:7,e:"span",f:["Otherwise click 'No Frills' below to disable potentially incompatible features (and this message)."]}," ",{p:[32,5,1115],t:7,e:"hr"}," ",{p:[33,5,1126],t:7,e:"ui-button",a:{icon:"close",action:"tgui:nofrills"},f:["No Frills"]}," ",{p:[34,5,1200],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,1376],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,1525],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,1698],t:7,e:"ui-button",a:{icon:"bug"},v:{press:"debug"},f:["Debug Info"]}," ",{t:4,f:[{p:[42,7,1786],t:7,e:"hr"}," ",{p:[43,7,1799],t:7,e:"span",f:["Detected: IE",{t:2,r:"ie",p:[43,25,1817]}]},{p:[43,38,1830],t:7,e:"br"}," ",{p:[44,7,1843],t:7,e:"span",f:["User Agent: ",{t:2,r:"userAgent",p:[44,25,1861]}]}],n:50,r:"debug",p:[41,5,1765]}]}],n:50,x:{r:["config.fancy","ie"],s:"_0&&_1&&_1<11"},p:[26,1,581]}]},e.exports=r.extend(i.exports)},{203:203}],216:[function(t,e,n){var r=t(203),i={exports:{}};i.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]}]},i.exports.components=i.exports.components||{};var a={vents:t(222),modes:t(218),thresholds:t(221),status:t(220),scrubbers:t(219)};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{203:203,218:218,219:219,220:220,221:221,222:222}],217:[function(t,e,n){var r=t(203),i={exports:{}};i.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=r.extend(i.exports)},{203:203}],218:[function(t,e,n){var r=t(203),i={exports:{}};i.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]}]}]},i.exports.components=i.exports.components||{};var a={back:t(217)};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{203:203,217:217}],219:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,117],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Scrubber Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,174],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,196]}]},f:[{p:[9,7,219],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,255],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,272]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,314]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,391]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,411]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,425]}]}]}," ",{p:[13,7,490],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,525],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["scrubbing"],s:'_0?"filter":"sign-in"'},p:[14,26,542]}],style:[{t:2,x:{r:["scrubbing"],s:'_0?null:"danger"'},p:[14,71,587]}],action:"scrubbing",params:['{"id_tag": "',{t:2,r:"id_tag",p:[15,50,670]},'", "val": ',{t:2,x:{r:["scrubbing"],s:"+!_0"},p:[15,70,690]},"}"]},f:[{t:2,x:{r:["scrubbing"],s:'_0?"Scrubbing":"Siphoning"'},p:[15,88,708]}]}]}," ",{p:[17,7,790],t:7,e:"ui-section",a:{label:"Range"},f:[{p:[18,9,826],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["widenet"],s:'_0?"expand":"compress"'},p:[18,26,843]}],style:[{t:2,x:{r:["widenet"],s:'_0?"selected":null'},p:[18,70,887]}],action:"widenet",params:['{"id_tag": "',{t:2,r:"id_tag",p:[19,48,968]},'", "val": ',{t:2,x:{r:["widenet"],s:"+!_0"},p:[19,68,988]},"}"]},f:[{t:2,x:{r:["widenet"],s:'_0?"Expanded":"Normal"'},p:[19,84,1004]}]}]}," ",{p:[21,7,1080],t:7,e:"ui-section",a:{label:"Filters"},f:[{p:[22,9,1118],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_co2"],s:'_0?"check-square-o":"square-o"'},p:[22,26,1135]}],style:[{t:2,x:{r:["filter_co2"],s:'_0?"selected":null'},p:[22,81,1190]}],action:"co2_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[23,50,1276]},'", "val": ',{t:2,x:{r:["filter_co2"],s:"+!_0"},p:[23,70,1296]},"}"]},f:["CO2"]}," ",{p:[24,9,1340],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_n2o"],s:'_0?"check-square-o":"square-o"'},p:[24,26,1357]}],style:[{t:2,x:{r:["filter_n2o"],s:'_0?"selected":null'},p:[24,81,1412]}],action:"n2o_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[25,50,1498]},'", "val": ',{t:2,x:{r:["filter_n2o"],s:"+!_0"},p:[25,70,1518]},"}"]},f:["N2O"]}," ",{p:[26,9,1562],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_toxins"],s:'_0?"check-square-o":"square-o"'},p:[26,26,1579]}],style:[{t:2,x:{r:["filter_toxins"],s:'_0?"selected":null'},p:[26,84,1637]}],action:"tox_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[27,50,1726]},'", "val": ',{t:2,x:{r:["filter_toxins"],s:"+!_0"},p:[27,70,1746]},"}"]},f:["Plasma"]}]}]}],n:52,r:"data.scrubbers",p:[7,3,144]},{t:4,n:51,f:[{p:[31,5,1847],t:7,e:"span",a:{"class":"bad"},f:["Error: No scrubbers connected."]}],r:"data.scrubbers"}]}]},i.exports.components=i.exports.components||{};var a={back:t(217)};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{203:203,217:217}],220:[function(t,e,n){var r=t(203),i={exports:{}};i.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=r.extend(i.exports)},{203:203}],221:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.css=" th, td {\r\n padding-right: 16px;\r\n text-align: left;\r\n }",i.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:[]}]}]}," "]},i.exports.components=i.exports.components||{};var a={back:t(217)};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{203:203,217:217}],222:[function(t,e,n){var r=t(203),i={exports:{}};i.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"]}]}," ",{p:[22,7,1039],t:7,e:"ui-section",a:{label:"Target Pressure"},f:[{p:[23,9,1085],t:7,e:"ui-button",a:{icon:"pencil",action:"set_external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[24,31,1172]},'"}']},f:[{t:2,x:{r:["external"],s:"Math.fixed(_0)"},p:[24,45,1186]}]}," ",{p:[25,9,1232],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["extdefault"],s:'_0?"disabled":null'},p:[25,42,1265]}],action:"reset_external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[26,31,1365]},'"}']},f:["Reset"]}]}]}],n:52,r:"data.vents",p:[7,3,140]},{t:4,n:51,f:[{p:[30,5,1457],t:7,e:"span",a:{"class":"bad"},f:["Error: No vents connected."]}],r:"data.vents"}]}]},i.exports.components=i.exports.components||{};var a={back:t(217)};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{203:203,217:217}],223:[function(t,e,n){var r=t(203),i={exports:{}};i.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 }",i.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]}]}]}]}]}," "]},e.exports=r.extend(i.exports)},{203:203}],224:[function(t,e,n){var r=t(203),i={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"}}}}(i),i.exports.template={v:3,t:[" ",{p:[46,1,1184],t:7,e:"ui-notice",f:[{t:4,f:[{p:[48,5,1229],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[49,7,1272],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[49,24,1289]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[49,75,1340]}]}]}],n:50,r:"data.siliconUser",p:[47,3,1199]},{t:4,n:51,f:[{p:[52,5,1431],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[52,31,1457]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[55,1,1542],t:7,e:"ui-display",a:{title:"Power Status"},f:[{p:[56,3,1579],t:7,e:"ui-section",a:{label:"Main Breaker"},f:[{t:4,f:[{p:[58,7,1666],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.isOperating"],s:'_0?"good":"bad"'},p:[58,20,1679]}]},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[58,59,1718]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[57,5,1618]},{t:4,n:51,f:[{p:[60,7,1782],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[60,24,1799]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[60,77,1852]}],action:"breaker"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[61,26,1920]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}," ",{p:[64,3,2001],t:7,e:"ui-section",a:{label:"External Power"},f:[{p:[65,5,2042],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.externalPower"],s:"_0(_1)"},p:[65,18,2055]}]},f:[{t:2,x:{r:["data.externalPower"],s:'_0==2?"Good":_0==1?"Low":"None"'},p:[65,54,2091]}]}]}," ",{p:[67,3,2198],t:7,e:"ui-section",a:{label:"Power Cell"},f:[{t:4,f:[{p:[69,7,2279],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerCellStatus",p:[69,40,2312]}],state:[{t:2,r:"powerCellStatusState",p:[69,73,2345]}]},f:[{t:2,x:{r:["adata.powerCellStatus"],s:"Math.fixed(_0)"},p:[69,99,2371]},"%"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[68,5,2235]},{t:4,n:51,f:[{p:[71,7,2440],t:7,e:"span",a:{"class":"bad"},f:["Removed"]}],x:{r:["data.powerCellStatus"],s:"_0!=null"}}]}," ",{t:4,f:[{p:[75,5,2548],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{t:4,f:[{p:[77,9,2638],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.chargeMode"],s:'_0?"good":"bad"'},p:[77,22,2651]}]},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[77,60,2689]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[76,7,2588]},{t:4,n:51,f:[{p:[79,9,2758],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.chargeMode"],s:'_0?"refresh":"close"'},p:[79,26,2775]}],style:[{t:2,x:{r:["data.chargeMode"],s:'_0?"selected":null'},p:[79,76,2825]}],action:"charge"},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[80,27,2893]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}," [",{p:[83,8,2979],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.chargingStatus"],s:"_0(_1)"},p:[83,21,2992]}]},f:[{t:2,x:{r:["data.chargingStatus"],s:'_0==2?"Fully Charged":_0==1?"Charging":"Not Charging"'},p:[83,58,3029]}]},"]"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[74,3,2506]}]}," ",{p:[87,1,3187],t:7,e:"ui-display",a:{title:"Power Channels"},f:[{t:4,f:[{p:[89,5,3260],t:7,e:"ui-section",a:{label:[{t:2,r:"title",p:[89,24,3279]}],nowrap:0},f:[{p:[90,7,3305],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.powerChannels"],s:"Math.round(_1[_0].powerLoad)"},p:[90,28,3326]}," W"]}," ",{p:[91,7,3395],t:7,e:"div",a:{"class":"content"},f:[{p:[91,28,3416],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0>=2?"good":"bad"'},p:[91,41,3429]}]},f:[{t:2,x:{r:["status"],s:'_0>=2?"On":"Off"'},p:[91,75,3463]}]}]}," ",{p:[92,7,3514],t:7,e:"div",a:{"class":"content"},f:["[",{p:[92,29,3536],t:7,e:"span",f:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"Auto":"Manual"'},p:[92,35,3542]}]},"]"]}," ",{p:[93,7,3614],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{t:4,f:[{p:[95,11,3717],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"selected":null'},p:[95,44,3750]}],action:"channel",params:[{t:2,r:"topicParams.auto",p:[96,38,3840]}]},f:["Auto"]}," ",{p:[97,11,3890],t:7,e:"ui-button",a:{icon:"power-off",state:[{t:2,x:{r:["status"],s:'_0==2?"selected":null'},p:[97,46,3925]}],action:"channel",params:[{t:2,r:"topicParams.on",p:[98,21,4e3]}]},f:["On"]}," ",{p:[99,11,4046],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["status"],s:'_0==0?"selected":null'},p:[99,42,4077]}],action:"channel",params:[{t:2,r:"topicParams.off",p:[100,21,4152]}]},f:["Off"]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[94,9,3665]}]}]}],n:52,r:"data.powerChannels",p:[88,3,3226]}," ",{p:[105,3,4255],t:7,e:"ui-section",a:{label:"Total Load"},f:[{p:[106,5,4292],t:7,e:"span",a:{"class":"bold"},f:[{t:2,x:{r:["adata.totalLoad"],s:"Math.round(_0)"},p:[106,24,4311]}," W"]}]}]}," ",{t:4,f:[{p:[110,3,4413],t:7,e:"ui-display",a:{title:"System Overrides"},f:[{p:[111,5,4456],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"overload"},f:["Overload"]}," ",{t:4,f:[{p:[113,7,4561],t:7,e:"ui-button",a:{icon:[{t:2,r:"malfIcon",p:[113,24,4578]}],state:[{t:2,x:{r:["data.malfStatus"],s:'_0==4?"disabled":null'},p:[113,45,4599]}],action:[{t:2,r:"malfAction",p:[113,99,4653]}]},f:[{t:2,r:"malfButton",p:[113,115,4669]}]}],n:50,r:"data.malfStatus",p:[112,5,4530]}]}],n:50,r:"data.siliconUser",p:[109,1,4385]},{p:[117,1,4736],t:7,e:"ui-notice",f:[{p:[118,3,4751],t:7,e:"ui-section",a:{label:"Cover Lock"},f:[{t:4,f:[{p:[120,7,4836],t:7,e:"span",f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[120,13,4842]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[119,5,4788]},{t:4,n:51,f:[{p:[122,7,4918],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.coverLocked"],s:'_0?"lock":"unlock"'},p:[122,24,4935]}],action:"cover"},f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[122,81,4992]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}]}]},e.exports=r.extend(i.exports)},{203:203}],225:[function(t,e,n){var r=t(203),i={exports:{}};i.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=r.extend(i.exports)},{203:203}],226:[function(t,e,n){var r=t(203),i={exports:{}};i.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=r.extend(i.exports)},{203:203}],227:[function(t,e,n){var r=t(203),i={exports:{}};i.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:[{p:[12,5,619],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==""?"selected":null'},p:[12,23,637]}],action:"filter",params:'{"mode": ""}'},f:["Nothing"]}," ",{p:[14,5,755],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0=="plasma"?"selected":null'},p:[14,23,773]}],action:"filter",params:'{"mode": "plasma"}'},f:["Plasma"]}," ",{p:[16,5,902],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0=="o2"?"selected":null'},p:[16,23,920]}],action:"filter",params:'{"mode": "o2"}'},f:["O2"]}," ",{p:[18,5,1037],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0=="n2"?"selected":null'},p:[18,23,1055]}],action:"filter",params:'{"mode": "n2"}'},f:["N2"]}," ",{p:[20,5,1172],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0=="co2"?"selected":null'},p:[20,23,1190]}],action:"filter",params:'{"mode": "co2"}'},f:["CO2"]}," ",{p:[22,5,1310],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0=="n2o"?"selected":null'},p:[22,23,1328]}],action:"filter",params:'{"mode": "n2o"}'},f:["N2O"]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],228:[function(t,e,n){var r=t(203),i={exports:{}};i.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=r.extend(i.exports)},{203:203}],229:[function(t,e,n){var r=t(203),i={exports:{}};i.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:"transfer",params:'{"rate": "max"}'},f:["Max"]}," ",{p:[10,7,529],t:7,e:"span",f:[{t:2,x:{r:["adata.rate"],s:"Math.round(_0)"},p:[10,13,535]}," L/s"]}]}],n:50,r:"data.max_rate",p:[6,3,223]},{t:4,n:51,f:[{p:[13,5,609],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[14,7,653],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[15,7,750],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,780]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[16,7,910],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[16,13,916]}," kPa"]}]}],r:"data.max_rate"}]}]},e.exports=r.extend(i.exports)},{203:203}],230:[function(t,e,n){var r=t(203),i={exports:{}};i.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=r.extend(i.exports)},{203:203}],231:[function(t,e,n){var r=t(203),i={exports:{}};i.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]}]}]}]}," ",{p:[15,1,557],t:7,e:"ui-display",a:{title:"Valve"},f:[{p:[16,3,587],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[17,5,630],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[17,18,643]}],max:[{t:2,r:"data.maxReleasePressure",p:[17,52,677]}],value:[{t:2,r:"data.releasePressure",p:[18,14,720]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[18,40,746]}," kPa"]}]}," ",{p:[20,3,817],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[21,5,862],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[21,38,895]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[23,5,1051],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[23,36,1082]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[25,5,1229],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[26,5,1324],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[26,35,1354]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[29,3,1516],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[30,5,1548],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[30,22,1565]}],style:[{t:2,x:{r:["data.valveOpen","data.hasHoldingTank"],s:'_0?_1?"caution":"danger":null'},p:[31,14,1619]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[32,22,1713]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[38,7,1901],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.valveOpen"],s:'_0?"danger":null'},p:[38,38,1932]}],action:"eject"},f:["Eject"]}],n:50,r:"data.hasHoldingTank",p:[37,5,1866]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[42,3,2066],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holdingTank.name",p:[43,4,2097]}]}," ",{p:[45,3,2143],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holdingTank.tankPressure"],s:"Math.round(_0)"},p:[46,4,2177]}," kPa"]}],n:50,r:"data.hasHoldingTank",p:[41,3,2035]},{t:4,n:51,f:[{p:[49,3,2259],t:7,e:"ui-section",f:[{p:[50,4,2276],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.hasHoldingTank"}]}]},e.exports=r.extend(i.exports)},{203:203}],232:[function(t,e,n){var r=t(203),i={exports:{}};!function(e){"use strict";var n=t(261);e.exports={data:{filter:""},oninit:function(){var t=this;this.observe("filter",function(e,r,i){var a=t.findAll(".display:nth-child(n+4)");(0,n.filterMulti)(a,t.get("filter").toLowerCase())},{init:!1})}}}(i),i.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[19,7,474],t:7,e:"ui-input",a:{value:[{t:2,r:"filter",p:[19,24,491]}],placeholder:"Filter..."}}],n:50,r:"config.fancy",p:[18,5,446]}]},t:7,e:"ui-display",a:{title:"Cargo",button:0},f:[" ",{p:[22,3,561],t:7,e:"ui-section",a:{label:"Shuttle"},f:[{t:4,f:[{p:[24,7,643],t:7,e:"ui-button",a:{action:"send"},f:[{t:2,r:"data.location",p:[24,32,668]}]}],n:50,x:{r:["data.docked","data.requestonly"],s:"_0&&!_1"},p:[23,5,595]},{t:4,n:51,f:[{p:[26,7,719],t:7,e:"span",f:[{t:2,r:"data.location",p:[26,13,725]}]}],x:{r:["data.docked","data.requestonly"],s:"_0&&!_1"}}]}," ",{p:[29,3,783],t:7,e:"ui-section",a:{label:"Points"},f:[{p:[30,5,816],t:7,e:"span",f:[{t:2,x:{r:["adata.points"],s:"Math.floor(_0)"},p:[30,11,822]}]}]}," ",{p:[32,3,878],t:7,e:"ui-section",a:{label:"Centcom Message"},f:[{p:[33,7,922],t:7,e:"span",f:[{t:2,r:"data.message",p:[33,13,928]}]}]}," ",{t:4,f:[{p:[36,5,1016],t:7,e:"ui-section",a:{label:"Loan"},f:[{t:4,f:[{p:[38,9,1088],t:7,e:"ui-button",a:{action:"loan"},f:["Loan Shuttle"]}],n:50,x:{r:["data.loan_dispatched"],s:"!_0"},p:[37,7,1049]},{t:4,n:51,f:[{p:[40,9,1163],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:[35,3,972]}]}," ",{t:4,f:[{p:{button:[{p:[48,7,1361],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.cart.length"],s:'_0?null:"disabled"'},p:[48,38,1392]}],action:"clear"},f:["Clear"]}]},t:7,e:"ui-display",a:{title:"Cart",button:0},f:[" ",{t:4,f:[{p:[51,7,1517],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[52,9,1558],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[52,31,1580]}]}," ",{p:[53,9,1602],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"object",p:[53,30,1623]}]}," ",{p:[54,9,1649],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"cost",p:[54,30,1670]}," Points"]}," ",{p:[55,9,1701],t:7,e:"div",a:{"class":"content"},f:[{p:[56,11,1734],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"id": "',{t:2,r:"id",p:[56,67,1790]},'"}']}}]}]}],n:52,r:"data.cart",p:[50,5,1490]},{t:4,n:51,f:[{p:[60,7,1860],t:7,e:"span",f:["Nothing in Cart"]}],r:"data.cart"}]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[45,1,1267]},{p:{button:[{t:4,f:[{p:[67,7,2029],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.requests.length"],s:'_0?null:"disabled"'},p:[67,38,2060]}],action:"denyall"},f:["Clear"]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[66,5,1996]}]},t:7,e:"ui-display",a:{title:"Requests",button:0},f:[" ",{t:4,f:[{p:[71,5,2202],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[72,7,2241],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[72,29,2263]}]}," ",{p:[73,7,2283],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"object",p:[73,28,2304]}]}," ",{p:[74,7,2328],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"cost",p:[74,28,2349]}," Points"]}," ",{p:[75,7,2378],t:7,e:"div",a:{"class":"content"},f:["By ",{t:2,r:"orderedby",p:[75,31,2402]}]}," ",{p:[76,7,2429],t:7,e:"div",a:{"class":"content"},f:["Comment: ",{t:2,r:"comment",p:[76,37,2459]}]}," ",{t:4,f:[{p:[78,9,2519],t:7,e:"div",a:{"class":"content"},f:[{p:[79,11,2552],t:7,e:"ui-button",a:{icon:"check",action:"approve",params:['{"id": "',{t:2,r:"id",p:[79,68,2609]},'"}']}}," ",{p:[80,11,2632],t:7,e:"ui-button",a:{icon:"close",action:"deny",params:['{"id": "',{t:2,r:"id",p:[80,65,2686]},'"}']}}]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[77,7,2484]}]}],n:52,r:"data.requests",p:[70,3,2173]},{t:4,n:51,f:[{p:[85,7,2769],t:7,e:"span",f:["No Requests"]}],r:"data.requests"}]}," ",{t:4,f:[{p:[89,3,2852],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[89,22,2871]}]},f:[{t:4,f:[{p:[91,7,2910],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[91,26,2929]}],candystripe:0,right:0},f:[{p:[92,9,2967],t:7,e:"ui-button",a:{action:"add",params:['{"id": "',{t:2,r:"id",p:[92,49,3007]},'"}']},f:[{t:2,r:"cost",p:[92,59,3017]}," Points"]}]}],n:52,r:"packs",p:[90,5,2887]}]}],n:52,r:"data.supplies",p:[88,1,2825]}]},e.exports=r.extend(i.exports)},{203:203,261:261}],233:[function(t,e,n){var r=t(203),i={exports:{}};i.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:{button:[{t:4,f:[{p:[9,7,315],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.amount","."],s:'_0==_1?"selected":null'},p:[9,37,345]}],action:"amount",params:['{"target": ',{t:2,r:".",p:[9,114,422]},"}"]},f:[{t:2,r:".",p:[9,122,430]}]}],n:52,r:"data.beakerTransferAmounts",p:[8,5,271]}]},t:7,e:"ui-display",a:{title:"Dispense",button:0},f:[" ",{p:[12,3,482],t:7,e:"ui-section",f:[{t:4,f:[{p:[14,7,532],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense",params:['{"reagent": "',{t:2,r:"id",p:[14,74,599]},'"}']},f:[{t:2,r:"title",p:[14,84,609]}]}],n:52,r:"data.chemicals",p:[13,5,500]}]}]}," ",{p:{button:[{t:4,f:[{p:[21,7,786],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"amount": ',{t:2,r:".",p:[21,66,845]},"}"]},f:[{t:2,r:".",p:[21,74,853]}]}],n:52,r:"data.beakerTransferAmounts",p:[20,5,742]}," ",{p:[23,5,891],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[23,36,922]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[25,3,1019],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[27,7,1089],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[27,13,1095]},"/",{t:2,r:"data.beakerMaxVolume",p:[27,55,1137]}," Units"]}," ",{p:[28,7,1182],t:7,e:"br"}," ",{t:4,f:[{p:[30,9,1235],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[30,52,1278]}," units of ",{t:2,r:"name",p:[30,87,1313]}]},{p:[30,102,1328],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[29,7,1195]},{t:4,n:51,f:[{p:[32,9,1359],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[26,5,1054]},{t:4,n:51,f:[{p:[35,7,1435],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{203:203}],234:[function(t,e,n){var r=t(203),i={exports:{}};i.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=r.extend(i.exports)},{203:203}],235:[function(t,e,n){var r=t(203),i={exports:{}};!function(t){"use strict";t.exports={data:{temperatureStatus:function(t){return 225>t?"good":273.15>t?"average":"bad"}},computed:{occupantStatState:function(){switch(this.get("data.occupant.stat")){case 0:return"good";case 1:return"average";default:return"bad"}}}}}(i),i.exports.template={v:3,t:[" ",{p:[22,1,466],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[23,3,499],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[24,3,532],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[24,9,538]}]}]}," ",{t:4,f:[{p:[27,5,655],t:7,e:"ui-section",a:{label:"State"},f:[{p:[28,7,689],t:7,e:"span",a:{"class":[{t:2,r:"occupantStatState",p:[28,20,702]}]},f:[{t:2,x:{r:["data.occupant.stat"],s:'_0==0?"Conscious":_0==1?"Unconcious":"Dead"'},p:[28,43,725]}]}]}," ",{p:[30,4,846],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[31,6,885],t:7,e:"span",a:{"class":[{t:2,x:{r:["temperatureStatus","adata.occupant.bodyTemperature"],s:"_0(_1)"},p:[31,19,898]}]},f:[{t:2,x:{r:["adata.occupant.bodyTemperature"],s:"Math.round(_0)"},p:[31,74,953]}," K"]}]}," ",{p:[33,5,1032],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[34,7,1067],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[34,20,1080]}],max:[{t:2,r:"data.occupant.maxHealth",p:[34,54,1114]}],value:[{t:2,r:"data.occupant.health",p:[34,90,1150]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[35,16,1192]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[35,68,1244]}]}]}," ",{t:4,f:[{p:[38,7,1481],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[38,26,1500]}]},f:[{p:[39,9,1521],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[39,30,1542]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[39,66,1578]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[39,103,1615]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[37,5,1315]}],n:50,r:"data.hasOccupant",p:[26,3,625]}]}," ",{p:[44,1,1724],t:7,e:"ui-display",a:{title:"Cell"},f:[{p:[45,3,1753],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[46,5,1785],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[46,22,1802]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[47,14,1862]}],state:[{t:2,x:{r:["data.isOpen"],s:'_0?"disabled":null'},p:[48,14,1918]}],action:"power"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[49,22,1977]}]}]}," ",{p:[51,3,2045],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[52,3,2081],t:7,e:"span",a:{"class":[{t:2,x:{r:["temperatureStatus","adata.cellTemperature"],s:"_0(_1)"},p:[52,16,2094]}]},f:[{t:2,x:{r:["adata.cellTemperature"],s:"Math.round(_0)"},p:[52,62,2140]}," K"]}]}," ",{p:[54,2,2205],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[55,5,2236],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOpen"],s:'_0?"unlock":"lock"'},p:[55,22,2253]}],action:"door"},f:[{t:2,x:{r:["data.isOpen"],s:'_0?"Open":"Closed"'},p:[55,73,2304]}]}," ",{p:[56,5,2357],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoEject"],s:'_0?"sign-out":"sign-in"'},p:[56,22,2374]}],action:"autoeject"},f:[{t:2,x:{r:["data.autoEject"],s:'_0?"Auto":"Manual"'},p:[56,86,2438]}]}]}]}," ",{p:{button:[{p:[61,5,2584],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[61,36,2615]}],action:"ejectbeaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[63,3,2718],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[66,9,2828],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[66,52,2871]}," units of ",{t:2,r:"name",p:[66,87,2906]}]},{p:[66,102,2921],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[65,7,2788]},{t:4,n:51,f:[{p:[68,9,2952],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[64,5,2753]},{t:4,n:51,f:[{p:[71,7,3028],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{203:203}],236:[function(t,e,n){var r=t(203),i={exports:{}};i.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=r.extend(i.exports)},{203:203}],237:[function(t,e,n){var r=t(203),i={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"}}}}}(i),i.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=r.extend(i.exports)},{203:203}],238:[function(t,e,n){var r=t(203),i={exports:{}};!function(t){"use strict";t.exports={computed:{healthState:function(){var t=this.get("data.health");return t>70?"good":t>50?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{t:4,f:[{p:[15,2,275],t:7,e:"ui-notice",f:[{p:[16,3,290],t:7,e:"ui-section",f:["Wipe in progress!"]}]}],n:50,r:"data.wiping",p:[14,1,253]},{p:{button:[{t:4,f:[{p:[24,4,476],t:7,e:"ui-button",a:{icon:"trash",state:[{t:2,x:{r:["data.wiping","data.isDead"],s:'_0||_1?"disabled":null'},p:[24,35,507]}],action:"wipe"},f:["Wipe AI"]}],n:50,r:"data.name",p:[23,3,454]}]},t:7,e:"ui-display",a:{title:[{t:2,x:{r:["data.name"],s:'_0?_0:"Empty Card"'},p:[21,19,380]}],button:0},f:[" ",{t:4,f:[{p:[28,3,642],t:7,e:"ui-section",a:{label:"Status"},f:[{t:4,f:[{p:[30,4,717],t:7,e:"ui-section",f:[{p:[30,16,729],t:7,e:"span",a:{"class":"bad"},f:["AI nonfunctional"]}]}],n:50,x:{r:["data.isDead","data.isBraindead"],s:"_0||_1"},p:[29,3,673]},{t:4,n:51,f:[{p:[32,4,800],t:7,e:"ui-section",f:[{p:[32,16,812],t:7,e:"span",a:{"class":"good"},f:["AI functional"]}]}],x:{r:["data.isDead","data.isBraindead"],s:"_0||_1"}}]}," ",{p:[35,3,896],t:7,e:"ui-section",a:{label:"Structural Integrity"},f:[{p:[36,4,942],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.health",p:[36,37,975]}],state:[{t:2,r:"healthState",p:[36,61,999]}]},f:[{t:2,x:{r:["adata.health"],s:"Math.round(_0)"},p:[36,78,1016]},"%"]}]}," ",{p:[38,3,1075],t:7,e:"ui-section",a:{label:"Laws"},f:[{t:4,f:[{p:[40,4,1128],t:7,e:"ui-section",f:[{t:2,r:".",p:[40,16,1140]}]}],n:52,r:"data.laws",p:[39,3,1104]}]}," ",{p:[43,3,1192],t:7,e:"ui-section",a:{label:"Settings"},f:[{p:[44,4,1226],t:7,e:"ui-button",a:{icon:"signal",style:[{t:2,x:{r:["data.wireless"],s:'_0?"selected":null'},p:[44,36,1258]}],action:"wireless"},f:["Wireless Activity"]}," ",{p:[45,4,1349],t:7,e:"ui-button",a:{icon:"microphone",style:[{t:2,x:{r:["data.radio"],s:'_0?"selected":null'},p:[45,40,1385]}],action:"radio"},f:["Subspace Radio"]}]}],n:50,r:"data.name",p:[27,2,621]}]}]},e.exports=r.extend(i.exports)},{203:203}],239:[function(t,e,n){var r=t(203),i={exports:{}};i.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"]}],r:"data.auth_required"}]}]}],r:"data.waiting"}]},e.exports=r.extend(i.exports)},{203:203}],240:[function(t,e,n){var r=t(203),i={exports:{}};i.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=r.extend(i.exports)},{203:203}],241:[function(t,e,n){var r=t(203),i={exports:{}};i.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.holding"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:[4,1,113],t:7,e:"ui-display",a:{title:"Status",button:0},f:[{p:[5,3,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,5,186],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[6,11,192]}," kPa"]}]}," ",{p:[8,3,254],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[9,5,285],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected"],s:'_0?"good":"average"'},p:[9,18,298]}]},f:[{t:2,x:{r:["data.connected"],s:'_0?"Connected":"Not Connected"'},p:[9,59,339]}]}]}]}," ",{p:[12,1,430],t:7,e:"ui-display",a:{title:"Pump"},f:[{p:[13,3,459],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,5,491],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,22,508]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":"null"'},p:[15,14,559]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,616]}]}]}," ",{p:[18,3,675],t:7,e:"ui-section",a:{label:"Direction"},f:[{p:[19,5,711],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.direction"],s:'_0=="out"?"sign-out":"sign-in"'},p:[19,22,728]}],action:"direction"},f:[{t:2,x:{r:["data.direction"],s:'_0=="out"?"Out":"In"'},p:[20,26,808]}]}]}," ",{p:[22,3,883],t:7,e:"ui-section",a:{label:"Target Pressure"},f:[{p:[23,5,925],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.min_pressure",p:[23,18,938]}],max:[{t:2,r:"data.max_pressure",p:[23,46,966]}],value:[{t:2,r:"data.target_pressure",p:[24,14,1003]}]},f:[{t:2,x:{r:["adata.target_pressure"],s:"Math.round(_0)"},p:[24,40,1029]}," kPa"]}]}," ",{p:[26,3,1100],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[27,5,1145],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.target_pressure","data.default_pressure"],s:'_0!=_1?null:"disabled"'},p:[27,38,1178]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[29,5,1328],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.target_pressure","data.min_pressure"],s:'_0>_1?null:"disabled"'},p:[29,36,1359]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1500],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1595],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.target_pressure","data.max_pressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1625]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}]}," ",{p:{button:[{t:4,f:[{p:[39,7,1891],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.on"],s:'_0?"danger":null'},p:[39,38,1922]}],action:"eject"},f:["Eject"]}],n:50,r:"data.holding",p:[38,5,1863]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[43,3,2042],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holding.name",p:[44,4,2073]}]}," ",{p:[46,3,2115],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holding.pressure"],s:"Math.round(_0)"},p:[47,4,2149]}," kPa"]}],n:50,r:"data.holding",p:[42,3,2018]},{t:4,n:51,f:[{p:[50,3,2223],t:7,e:"ui-section",f:[{p:[51,4,2240],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.holding"}]}]},e.exports=r.extend(i.exports)},{203:203}],242:[function(t,e,n){var r=t(203),i={exports:{}};i.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.holding"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:[4,1,113],t:7,e:"ui-display",a:{title:"Status",button:0},f:[{p:[5,3,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,5,186],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[6,11,192]}," kPa"]}]}," ",{p:[8,3,254],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[9,5,285],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected"],s:'_0?"good":"average"'},p:[9,18,298]}]},f:[{t:2,x:{r:["data.connected"],s:'_0?"Connected":"Not Connected"'},p:[9,59,339]}]}]}]}," ",{p:[12,1,430],t:7,e:"ui-display",a:{title:"Filter"},f:[{p:[13,3,461],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,5,493],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,22,510]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":"null"'},p:[15,14,561]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,618]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[22,7,787],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.on"],s:'_0?"danger":null'},p:[22,38,818]}],action:"eject"},f:["Eject"]}],n:50,r:"data.holding",p:[21,5,759]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[26,3,938],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holding.name",p:[27,4,969]}]}," ",{p:[29,3,1011],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holding.pressure"],s:"Math.round(_0)"},p:[30,4,1045]}," kPa"]}],n:50,r:"data.holding",p:[25,3,914]},{t:4,n:51,f:[{p:[33,3,1119],t:7,e:"ui-section",f:[{p:[34,4,1136],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.holding"}]}]},e.exports=r.extend(i.exports)},{203:203}],243:[function(t,e,n){var r=t(203),i={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}})})}}}}(i),i.exports.template={v:3,t:[" ",{p:[42,1,1035],t:7,e:"ui-display",a:{title:"Network"},f:[{t:4,f:[{p:[44,5,1093],t:7,e:"ui-linegraph",a:{points:[{t:2,r:"graphData",p:[44,27,1115]}],height:"500",legend:'["Available", "Load"]',colors:'["rgb(0, 102, 0)", "rgb(153, 0, 0)"]',xunit:"seconds ago",xfactor:[{t:2,r:"data.interval",p:[46,38,1267]}],yunit:"W",yfactor:"1",xinc:[{t:2,x:{r:["data.stored"],s:"_0/10"},p:[47,15,1323]}],yinc:"9"}}],n:50,r:"config.fancy",p:[43,3,1067]},{t:4,n:51,f:[{p:[49,5,1373],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[50,7,1411],t:7,e:"span",f:[{t:2,r:"data.supply",p:[50,13,1417]}," W"]}]}," ",{p:[52,5,1466],t:7,e:"ui-section",a:{label:"Load"},f:[{p:[53,9,1501],t:7,e:"span",f:[{t:2,r:"data.demand",p:[53,15,1507]}," W"]}]}],r:"config.fancy"}]}," ",{p:[57,1,1578],t:7,e:"ui-display",a:{title:"Areas"},f:[{p:[58,3,1608],t:7,e:"ui-section",a:{nowrap:0},f:[{p:[59,5,1633],t:7,e:"div",a:{"class":"content"},f:["Area"]}," ",{p:[60,5,1670],t:7,e:"div",a:{"class":"content"},f:["Charge"]}," ",{p:[61,5,1709],t:7,e:"div",a:{"class":"content"},f:["Load"]}," ",{p:[62,5,1746],t:7,e:"div",a:{"class":"content"},f:["Status"]}," ",{p:[63,5,1785],t:7,e:"div",a:{"class":"content"},f:["Equipment"]}," ",{p:[64,5,1827],t:7,e:"div",a:{"class":"content"},f:["Lighting"]}," ",{p:[65,5,1868],t:7,e:"div",a:{"class":"content"},f:["Environment"]}]}," ",{t:4,f:[{p:[68,5,1953],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[68,24,1972]}],nowrap:0},f:[{p:[69,7,1997],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.areas"],s:"Math.round(_1[_0].charge)"},p:[69,28,2018]}," %"]}," ",{p:[70,7,2076],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.areas"],s:"Math.round(_1[_0].load)"},p:[70,28,2097]}," W"]}," ",{p:[71,7,2153],t:7,e:"div",a:{"class":"content"},f:[{p:[71,28,2174],t:7,e:"span",a:{"class":[{t:2,x:{r:["chargingState","charging"],s:"_0(_1)"},p:[71,41,2187]}]},f:[{t:2,x:{r:["chargingMode","charging"],s:"_0(_1)"},p:[71,70,2216]}]}]}," ",{p:[72,7,2263],t:7,e:"div",a:{"class":"content"},f:[{p:[72,28,2284],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","eqp"],s:"_0(_1)"},p:[72,41,2297]}]},f:[{t:2,x:{r:["channelPower","eqp"],s:"_0(_1)"},p:[72,64,2320]}," [",{p:[72,87,2343],t:7,e:"span",f:[{t:2,x:{r:["channelMode","eqp"],s:"_0(_1)"},p:[72,93,2349]}]},"]"]}]}," ",{p:[73,7,2398],t:7,e:"div",a:{"class":"content"},f:[{p:[73,28,2419],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","lgt"],s:"_0(_1)"},p:[73,41,2432]}]},f:[{t:2,x:{r:["channelPower","lgt"],s:"_0(_1)"},p:[73,64,2455]}," [",{p:[73,87,2478],t:7,e:"span",f:[{t:2,x:{r:["channelMode","lgt"],s:"_0(_1)"},p:[73,93,2484]}]},"]"]}]}," ",{p:[74,7,2533],t:7,e:"div",a:{"class":"content"},f:[{p:[74,28,2554],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","env"],s:"_0(_1)"},p:[74,41,2567]}]},f:[{t:2,x:{r:["channelPower","env"],s:"_0(_1)"},p:[74,64,2590]}," [",{p:[74,87,2613],t:7,e:"span",f:[{t:2,x:{r:["channelMode","env"],s:"_0(_1)"},p:[74,93,2619]}]},"]"]}]}]}],n:52,r:"data.areas",p:[67,3,1927]}]}]},e.exports=r.extend(i.exports)},{203:203}],244:[function(t,e,n){var r=t(203),i={exports:{}};!function(t){"use strict";t.exports={computed:{readableFrequency:function(){return Math.round(this.get("adata.frequency"))/10}}}}(i),i.exports.template={v:3,t:[" ",{p:[11,1,177],t:7,e:"ui-display",a:{title:"Settings"},f:[{t:4,f:[{p:[13,5,236],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,7,270],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.listening"],s:'_0?"power-off":"close"'},p:[14,24,287]}],style:[{t:2,x:{r:["data.listening"],s:'_0?"selected":null'},p:[14,75,338]}],action:"listen"},f:[{t:2,x:{r:["data.listening"],s:'_0?"On":"Off"'},p:[16,9,413]}]}]}],n:50,r:"data.headset",p:[12,3,210]},{t:4,n:51,f:[{p:[19,5,494],t:7,e:"ui-section",a:{label:"Microphone"},f:[{p:[20,7,533],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.broadcasting"],s:'_0?"power-off":"close"'},p:[20,24,550]}],style:[{t:2,x:{r:["data.broadcasting"],s:'_0?"selected":null'},p:[20,78,604]}],action:"broadcast"},f:[{t:2,x:{r:["data.broadcasting"],s:'_0?"Engaged":"Disengaged"'},p:[22,9,685]}]}]}," ",{p:[24,5,769],t:7,e:"ui-section",a:{label:"Speaker"},f:[{p:[25,7,805],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.listening"],s:'_0?"power-off":"close"'},p:[25,24,822]}],style:[{t:2,x:{r:["data.listening"],s:'_0?"selected":null'},p:[25,75,873]}],action:"listen"},f:[{t:2,x:{r:["data.listening"],s:'_0?"Engaged":"Disengaged"'},p:[27,9,948]}]}]}],r:"data.headset"}," ",{t:4,f:[{p:[31,5,1064],t:7,e:"ui-section",a:{label:"High Volume"},f:[{p:[32,7,1104],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.useCommand"],s:'_0?"power-off":"close"'},p:[32,24,1121]}],style:[{t:2,x:{r:["data.useCommand"],s:'_0?"selected":null'},p:[32,76,1173]}],action:"command"},f:[{t:2,x:{r:["data.useCommand"],s:'_0?"On":"Off"'},p:[34,9,1250]}]}]}],n:50,r:"data.command",p:[30,3,1038]}]}," ",{p:[38,1,1342],t:7,e:"ui-display",a:{title:"Channel"},f:[{p:[39,3,1374],t:7,e:"ui-section",a:{label:"Frequency"},f:[{t:4,f:[{p:[41,7,1439],t:7,e:"span",f:[{t:2,r:"readableFrequency",p:[41,13,1445]}]}],n:50,r:"data.freqlock",p:[40,5,1410]},{t:4,n:51,f:[{p:[43,7,1495],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.frequency","data.minFrequency"],s:'_0==_1?"disabled":null'},p:[43,46,1534]}],action:"frequency",params:'{"adjust": -1}'}}," ",{p:[44,7,1646],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.frequency","data.minFrequency"],s:'_0==_1?"disabled":null'},p:[44,41,1680]}],action:"frequency",params:'{"adjust": -.2}'}}," ",{p:[45,7,1793],t:7,e:"ui-button",a:{icon:"pencil",action:"frequency",params:'{"tune": "input"}'},f:[{t:2,r:"readableFrequency",p:[45,78,1864]}]}," ",{p:[46,7,1905],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.frequency","data.maxFrequency"],s:'_0==_1?"disabled":null'},p:[46,40,1938]}],action:"frequency",params:'{"adjust": .2}'}}," ",{p:[47,7,2050],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.frequency","data.maxFrequency"],s:'_0==_1?"disabled":null'},p:[47,45,2088]}],action:"frequency",params:'{"adjust": 1}'}}],r:"data.freqlock"}]}," ",{t:4,f:[{p:[51,5,2262],t:7,e:"ui-section",a:{label:"Subspace Transmission"},f:[{p:[52,7,2312],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.subspace"],s:'_0?"power-off":"close"'},p:[52,24,2329]}],style:[{t:2,x:{r:["data.subspace"],s:'_0?"selected":null'},p:[52,74,2379]}],action:"subspace"},f:[{t:2,x:{r:["data.subspace"],s:'_0?"Active":"Inactive"'},p:[53,29,2447]}]}]}],n:50,r:"data.subspaceSwitchable",p:[50,3,2225]}," ",{t:4,f:[{p:[57,5,2578],t:7,e:"ui-section",a:{label:"Channels"},f:[{t:4,f:[{p:[59,9,2656],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["."],s:'_0?"check-square-o":"square-o"'},p:[59,26,2673]}],style:[{t:2,x:{r:["."],s:'_0?"selected":null'},p:[60,18,2730]}],action:"channel",params:['{"channel": "',{t:2,r:"channel",p:[61,49,2806]},'"}']},f:[{t:2,r:"channel",p:[62,11,2833]}]},{p:[62,34,2856],t:7,e:"br"}],n:52,i:"channel",r:"data.channels",p:[58,7,2615]}]}],n:50,x:{r:["data.subspace","data.channels"],s:"_0&&_1"},p:[56,3,2534]}]}]},e.exports=r.extend(i.exports)},{203:203}],245:[function(t,e,n){var r=t(203),i={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"}}}}}(i),i.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]}]}]}," ",{p:[23,5,658],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[24,7,693],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[24,20,706]}],max:[{t:2,r:"data.occupant.maxHealth",p:[24,54,740]}],value:[{t:2,r:"data.occupant.health",p:[24,90,776]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[25,16,818]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[25,68,870]}]}]}," ",{t:4,f:[{p:[28,7,1107],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[28,26,1126]}]},f:[{p:[29,9,1147],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[29,30,1168]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[29,66,1204]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[29,103,1241]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[27,5,941]}," ",{p:[32,5,1328],t:7,e:"ui-section",a:{label:"Cells"},f:[{p:[33,9,1364],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"bad":"good"'},p:[33,22,1377]}]},f:[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"Damaged":"Healthy"'},p:[33,68,1423]}]}]}," ",{p:[35,5,1506],t:7,e:"ui-section",a:{label:"Brain"},f:[{p:[36,9,1542],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"bad":"good"'},p:[36,22,1555]}]},f:[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"Abnormal":"Healthy"'},p:[36,68,1601]}]}]}," ",{p:[38,5,1685],t:7,e:"ui-section",a:{label:"Bloodstream"},f:[{t:4,f:[{p:[40,11,1772],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,1)"},p:[40,54,1815]}," units of ",{t:2,r:"name",p:[40,89,1850]}]},{p:[40,104,1865],t:7,e:"br"}],n:52,r:"adata.occupant.reagents",p:[39,9,1727]},{t:4,n:51,f:[{p:[42,11,1900],t:7,e:"span",a:{"class":"good"},f:["Pure"]}],r:"adata.occupant.reagents"}]}],n:50,r:"data.occupied",p:[19,3,439]}]}," ",{p:[47,1,1996],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[48,2,2028],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[49,5,2059],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"unlock":"lock"'},p:[49,22,2076]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Open":"Closed"'},p:[49,71,2125]}]}]}," ",{p:[51,3,2190],t:7,e:"ui-section",a:{label:"Inject"},f:[{t:4,f:[{p:[53,7,2251],t:7,e:"ui-button",a:{icon:"flask",state:[{t:2,x:{r:["data.occupied","allowed"],s:'_0&&_1?null:"disabled"'},p:[53,38,2282]}],action:"inject",params:['{"chem": "',{t:2,r:"id",p:[53,122,2366]},'"}']},f:[{t:2,r:"name",p:[53,132,2376]}]},{p:[53,152,2396],t:7,e:"br"}],n:52,r:"data.chems",p:[52,5,2223]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],246:[function(t,e,n){var r=t(203),i={exports:{}};!function(t){"use strict";t.exports={computed:{capacityPercentState:function(){var t=this.get("data.capacityPercent");return t>50?"good":t>15?"average":"bad"},inputState:function(){return this.get("data.capacityPercent")>=100?"good":this.get("data.inputting")?"average":"bad"},outputState:function(){return this.get("data.outputting")?"good":this.get("data.charge")>0?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[24,1,663],t:7,e:"ui-display",a:{title:"Storage"},f:[{p:[25,3,695],t:7,e:"ui-section",a:{label:"Stored Energy"},f:[{p:[26,5,735],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.capacityPercent",p:[26,38,768]}],state:[{t:2,r:"capacityPercentState",p:[26,71,801]}]},f:[{t:2,x:{r:["adata.capacityPercent"],s:"Math.fixed(_0)"},p:[26,97,827]},"%"]}]}]}," ",{p:[29,1,908],t:7,e:"ui-display",a:{title:"Input"},f:[{p:[30,3,938],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{p:[31,5,976],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"refresh":"close"'},p:[31,22,993]}],style:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"selected":null'},p:[31,74,1045]}],action:"tryinput"},f:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"Auto":"Off"'},p:[32,25,1113]}]},"   [",{p:[34,6,1182],t:7,e:"span",a:{"class":[{t:2,r:"inputState",p:[34,19,1195]}]},f:[{t:2,x:{r:["data.capacityPercent","data.inputting"],s:'_0>=100?"Fully Charged":_1?"Charging":"Not Charging"'},p:[34,35,1211]}]},"]"]}," ",{p:[36,3,1335],t:7,e:"ui-section",a:{label:"Target Input"},f:[{p:[37,5,1374],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.inputLevelMax",p:[37,26,1395]}],value:[{t:2,r:"data.inputLevel",p:[37,57,1426]}]},f:[{t:2,x:{r:["adata.inputLevel"],s:"Math.round(_0)"},p:[37,78,1447]},"W"]}]}," ",{p:[39,3,1509],t:7,e:"ui-section",a:{label:"Adjust Input"},f:[{p:[40,5,1548],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[40,44,1587]}],action:"input",params:'{"target": "min"}'}}," ",{p:[41,5,1682],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[41,39,1716]}],action:"input",params:'{"adjust": -10000}'}}," ",{p:[42,5,1812],t:7,e:"ui-button",a:{icon:"pencil",action:"input",params:'{"target": "input"}'},f:["Set"]}," ",{p:[43,5,1902],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[43,38,1935]}],action:"input",params:'{"adjust": 10000}'}}," ",{p:[44,5,2047],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[44,43,2085]}],action:"input",params:'{"target": "max"}'}}]}," ",{p:[46,3,2212],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[47,3,2246],t:7,e:"span",f:[{t:2,x:{r:["adata.inputAvailable"],s:"Math.round(_0)"},p:[47,9,2252]},"W"]}]}]}," ",{p:[50,1,2329],t:7,e:"ui-display",a:{title:"Output"},f:[{p:[51,3,2360],t:7,e:"ui-section",a:{label:"Output Mode"},f:[{p:[52,5,2398],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"power-off":"close"'},p:[52,22,2415]}],style:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"selected":null'},p:[52,77,2470]}],action:"tryoutput"},f:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"On":"Off"'},p:[53,26,2540]}]},"   [",{p:[55,6,2608],t:7,e:"span",a:{"class":[{t:2,r:"outputState",p:[55,19,2621]}]},f:[{t:2,x:{r:["data.outputting","data.charge"],s:'_0?"Sending":_1>0?"Not Sending":"No Charge"'},p:[55,36,2638]}]},"]"]}," ",{p:[57,3,2745],t:7,e:"ui-section",a:{label:"Target Output"},f:[{p:[58,5,2785],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.outputLevelMax",p:[58,26,2806]}],value:[{t:2,r:"data.outputLevel",p:[58,58,2838]}]},f:[{t:2,x:{r:["adata.outputLevel"],s:"Math.round(_0)"},p:[58,80,2860]},"W"]}]}," ",{p:[60,3,2923],t:7,e:"ui-section",a:{label:"Adjust Output"},f:[{p:[61,5,2963],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[61,44,3002]}],action:"output",params:'{"target": "min"}'}}," ",{p:[62,5,3099],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[62,39,3133]}],action:"output",params:'{"adjust": -10000}'}}," ",{p:[63,5,3231],t:7,e:"ui-button",a:{icon:"pencil",action:"output",params:'{"target": "input"}'},f:["Set"]}," ",{p:[64,5,3322],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[64,38,3355]}],action:"output",params:'{"adjust": 10000}'}}," ",{p:[65,5,3470],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[65,43,3508]}],action:"output",params:'{"target": "max"}'}}]}," ",{p:[67,3,3638],t:7,e:"ui-section",a:{label:"Outputting"},f:[{p:[68,3,3673],t:7,e:"span",f:[{t:2,x:{r:["adata.outputUsed"],s:"Math.round(_0)"},p:[68,9,3679]},"W"]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],247:[function(t,e,n){var r=t(203),i={exports:{}};i.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:"Generated Power"},f:[{t:2,x:{r:["adata.generated"],s:"Math.round(_0)"},p:[3,5,73]},"W"]}," ",{p:[5,3,126],t:7,e:"ui-section",a:{label:"Orientation"},f:[{p:[6,5,164],t:7,e:"span",f:[{t:2,x:{r:["adata.angle"],s:"Math.round(_0)"},p:[6,11,170]},"° (",{t:2,r:"data.direction",p:[6,45,204]},")"]}]}," ",{p:[8,3,251],t:7,e:"ui-section",a:{label:"Adjust Angle"},f:[{p:[9,5,290],t:7,e:"ui-button",a:{icon:"step-backward",action:"angle",params:'{"adjust": -15}'},f:["15°"]}," ",{p:[10,5,387],t:7,e:"ui-button",a:{icon:"backward",action:"angle",params:'{"adjust": -5}'},f:["5°"]}," ",{p:[11,5,477],t:7,e:"ui-button",a:{icon:"forward",action:"angle",params:'{"adjust": 5}'},f:["5°"]}," ",{p:[12,5,565],t:7,e:"ui-button",a:{icon:"step-forward",action:"angle",params:'{"adjust": 15}'},f:["15°"]}]}]}," ",{p:[15,1,687],t:7,e:"ui-display",a:{title:"Tracking"},f:[{p:[16,3,720],t:7,e:"ui-section",a:{label:"Tracker Mode"},f:[{p:[17,5,759],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==0?"selected":null'},p:[17,36,790]}],action:"tracking",params:'{"mode": 0}'},f:["Off"]}," ",{p:[19,5,907],t:7,e:"ui-button",a:{icon:"clock-o",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==1?"selected":null'},p:[19,38,940]}],action:"tracking",params:'{"mode": 1}'},f:["Timed"]}," ",{p:[21,5,1059],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.connected_tracker","data.tracking_state"],s:'_0?_1==2?"selected":null:"disabled"'},p:[21,38,1092]}],action:"tracking",params:'{"mode": 2}'},f:["Auto"]}]}," ",{p:[24,3,1262],t:7,e:"ui-section",a:{label:"Tracking Rate"},f:[{p:[25,3,1300],t:7,e:"span",f:[{t:2,x:{r:["adata.tracking_rate"],s:"Math.round(_0)"},p:[25,9,1306]},"°/h (",{t:2,r:"data.rotating_way",p:[25,53,1350]},")"]}]}," ",{p:[27,3,1399],t:7,e:"ui-section",a:{label:"Adjust Rate"},f:[{p:[28,5,1437],t:7,e:"ui-button",a:{icon:"fast-backward",action:"rate",params:'{"adjust": -180}'},f:["180°"]}," ",{p:[29,5,1535],t:7,e:"ui-button",a:{icon:"step-backward",action:"rate",params:'{"adjust": -30}'},f:["30°"]}," ",{p:[30,5,1631],t:7,e:"ui-button",a:{icon:"backward",action:"rate",params:'{"adjust": -5}'},f:["5°"]}," ",{p:[31,5,1720],t:7,e:"ui-button",a:{icon:"forward",action:"rate",params:'{"adjust": 5}'},f:["5°"]}," ",{p:[32,5,1807],t:7,e:"ui-button",a:{icon:"step-forward",action:"rate",params:'{"adjust": 30}'},f:["30°"]}," ",{p:[33,5,1901],t:7,e:"ui-button",a:{icon:"fast-forward",action:"rate",params:'{"adjust": 180}'},f:["180°"]}]}]}," ",{p:{button:[{p:[38,5,2088],t:7,e:"ui-button",a:{icon:"refresh",action:"refresh"},f:["Refresh"]}]},t:7,e:"ui-display",a:{title:"Devices",button:0},f:[" ",{p:[40,2,2169],t:7,e:"ui-section",a:{label:"Solar Tracker"},f:[{p:[41,5,2209],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_tracker"],s:'_0?"good":"bad"'},p:[41,18,2222]}]},f:[{t:2,x:{r:["data.connected_tracker"],s:'_0?"":"Not "'},p:[41,63,2267]},"Found"]}]}," ",{p:[43,2,2338],t:7,e:"ui-section",a:{label:"Solar Panels"},f:[{p:[44,3,2375],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_panels"],s:'_0?"good":"bad"'},p:[44,16,2388]}]},f:[{t:2,x:{r:["adata.connected_panels"],s:"Math.round(_0)"},p:[44,60,2432]}," Panels Connected"]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],248:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:{button:[{t:4,f:[{p:[4,7,87],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.hasPowercell"],s:'_0?null:"disabled"'},p:[4,38,118]}],action:"eject"},f:["Eject"]}],n:50,r:"data.open",p:[3,5,62]}]},t:7,e:"ui-display",a:{title:"Power",button:0},f:[" ",{p:[7,3,226],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[8,5,258],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[8,22,275]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[9,14,326]}],state:[{t:2,x:{r:["data.hasPowercell"],s:'_0?null:"disabled"'},p:[9,54,366]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[10,22,431]}]}]}," ",{p:[12,3,490],t:7,e:"ui-section",a:{label:"Cell"},f:[{t:4,f:[{p:[14,7,554],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerLevel",p:[14,40,587]}]},f:[{t:2,x:{r:["adata.powerLevel"],s:"Math.fixed(_0)"},p:[14,61,608]},"%"]}],n:50,r:"data.hasPowercell",p:[13,5,521]},{t:4,n:51,f:[{p:[16,4,667],t:7,e:"span",a:{"class":"bad"},f:["No Cell"]}],r:"data.hasPowercell"}]}]}," ",{p:[20,1,744],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[21,3,779],t:7,e:"ui-section",a:{label:"Current Temperature"},f:[{p:[22,3,823],t:7,e:"span",f:[{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[22,9,829]},"°C"]}]}," ",{p:[24,2,894],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[25,3,937],t:7,e:"span",f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[25,9,943]},"°C"]}]}," ",{t:4,f:[{p:[28,5,1031],t:7,e:"ui-section",a:{label:"Adjust Target"},f:[{p:[29,7,1073],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[29,46,1112]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[30,7,1218],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[30,41,1252]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[31,7,1357],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:["Set"]}," ",{p:[32,7,1450],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[32,40,1483]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[33,7,1587],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[33,45,1625]}],action:"target",params:'{"adjust": 20}'}}]}],n:50,r:"data.open",p:[27,3,1008]}," ",{p:[36,3,1754],t:7,e:"ui-section",a:{label:"Mode"},f:[{t:4,f:[{p:[38,7,1808],t:7,e:"ui-button",a:{icon:"long-arrow-up",state:[{t:2,x:{r:["data.mode"],s:'_0=="heat"?"selected":null'},p:[38,46,1847]}],action:"mode",params:'{"mode": "heat"}'},f:["Heat"]}," ",{p:[39,7,1956],t:7,e:"ui-button",a:{icon:"long-arrow-down",state:[{t:2,x:{r:["data.mode"],s:'_0=="cool"?"selected":null'},p:[39,48,1997]}],action:"mode",params:'{"mode": "cool"}'},f:["Cool"]}," ",{p:[40,7,2106],t:7,e:"ui-button",a:{icon:"arrows-v",state:[{t:2,x:{r:["data.mode"],s:'_0=="auto"?"selected":null'},p:[40,41,2140]}],action:"mode",params:'{"mode": "auto"}'},f:["Auto"]}],n:50,r:"data.open",p:[37,3,1783]},{t:4,n:51,f:[{p:[42,4,2258],t:7,e:"span",f:[{t:2,x:{r:["text","data.mode"],s:"_0.titleCase(_1)"},p:[42,10,2264]}]}],r:"data.open"}]}]}]},e.exports=r.extend(i.exports)},{203:203}],249:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{t:4,f:[{p:[2,3,31],t:7,e:"ui-display",a:{title:[{t:2,r:"class",p:[2,22,50]}," Alarms"]},f:[{p:[3,5,74],t:7,e:"ul",f:[{t:4,f:[{p:[5,9,107],t:7,e:"li",f:[{t:2,r:".",p:[5,13,111]}]}],n:52,r:".",p:[4,7,86]},{t:4,n:51,f:[{p:[7,9,147],t:7,e:"li",f:["System Nominal"]}],r:"."}]}]}],n:52,i:"class",r:"data.alarms",p:[1,1,0]}]},e.exports=r.extend(i.exports)},{203:203}],250:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{t:4,f:[{p:[2,3,42],t:7,e:"ui-notice",f:[{p:[3,5,59],t:7,e:"span",f:["Biological entity detected in contents. Please remove."]}]}],n:50,x:{r:["data.occupied","data.safeties"],s:"_0&&_1"},p:[1,1,0]},{t:4,f:[{p:[7,3,179],t:7,e:"ui-notice",f:[{p:[8,5,196],t:7,e:"span",f:["Contents are being disinfected. Please wait."]}]}],n:50,r:"data.uv_active",p:[6,1,153]},{t:4,n:51,f:[{p:{button:[{t:4,f:[{p:[13,25,369],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[13,42,386]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Unlock":"Lock"'},p:[13,93,437]}]}],n:50,x:{r:["data.open"],s:"!_0"},p:[13,7,351]}," ",{t:4,f:[{p:[14,27,519],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"sign-out":"sign-in"'},p:[14,44,536]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Close":"Open"'},p:[14,98,590]}]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[14,7,499]}]},t:7,e:"ui-display",a:{title:"Storage",button:0},f:[" ",{t:4,f:[{p:[17,7,692],t:7,e:"ui-notice",f:[{p:[18,9,713],t:7,e:"span",f:["Unit Locked"]}]}],n:50,r:"data.locked",p:[16,5,665]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.open"],s:"_0"},f:[{p:[21,9,793],t:7,e:"ui-section",a:{label:"Helmet"},f:[{p:[22,11,832],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.helmet"],s:'_0?"square":"square-o"'},p:[22,28,849]}],state:[{t:2,x:{r:["data.helmet"],s:'_0?null:"disabled"'},p:[22,75,896]}],action:"dispense",params:'{"item": "helmet"}'},f:[{t:2,x:{r:["data.helmet"],s:'_0||"Empty"'},p:[23,59,992]}]}]}," ",{p:[25,9,1063],t:7,e:"ui-section",a:{label:"Suit"},f:[{p:[26,11,1100],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.suit"],s:'_0?"square":"square-o"'},p:[26,28,1117]}],state:[{t:2,x:{r:["data.suit"],s:'_0?null:"disabled"'},p:[26,74,1163]}],action:"dispense",params:'{"item": "suit"}'},f:[{t:2,x:{r:["data.suit"],s:'_0||"Empty"'},p:[27,57,1255]}]}]}," ",{p:[29,9,1324],t:7,e:"ui-section",a:{label:"Mask"},f:[{p:[30,11,1361],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mask"],s:'_0?"square":"square-o"'},p:[30,28,1378]}],state:[{t:2,x:{r:["data.mask"],s:'_0?null:"disabled"'},p:[30,74,1424]}],action:"dispense",params:'{"item": "mask"}'},f:[{t:2,x:{r:["data.mask"],s:'_0||"Empty"'},p:[31,57,1516]}]}]}," ",{p:[33,9,1585],t:7,e:"ui-section",a:{label:"Storage"},f:[{p:[34,11,1625],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.storage"],s:'_0?"square":"square-o"'},p:[34,28,1642]}],state:[{t:2,x:{r:["data.storage"],s:'_0?null:"disabled"'},p:[34,77,1691]}],action:"dispense",params:'{"item": "storage"}'},f:[{t:2,x:{r:["data.storage"],s:'_0||"Empty"'},p:[35,60,1789]}]}]}]},{t:4,n:50,x:{r:["data.open"],s:"!(_0)"},f:[" ",{p:[38,7,1873],t:7,e:"ui-button",a:{icon:"recycle",state:[{t:2,x:{r:["data.occupied","data.safeties"],s:'_0&&_1?"disabled":null'},p:[38,40,1906]}],action:"uv"},f:["Disinfect"]}]}],r:"data.locked"}]}],r:"data.uv_active"}]},e.exports=r.extend(i.exports)},{203:203}],251:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,5,18],t:7,e:"ui-section",a:{label:"Dispense"},f:[{p:[3,9,57],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.plasma"],s:'_0?"square":"square-o"'},p:[3,26,74]}],state:[{t:2,x:{r:["data.plasma"],s:'_0?null:"disabled"'},p:[3,74,122]}],action:"plasma"},f:["Plasma (",{t:2,x:{r:["adata.plasma"],s:"Math.round(_0)"},p:[4,37,196]},")"]}," ",{p:[5,9,247],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oxygen"],s:'_0?"square":"square-o"'},p:[5,26,264]}],state:[{t:2,x:{r:["data.oxygen"],s:'_0?null:"disabled"'},p:[5,74,312]}],action:"oxygen"},f:["Oxygen (",{t:2,x:{r:["adata.oxygen"],s:"Math.round(_0)"},p:[6,37,386]},")"]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],252:[function(t,e,n){var r=t(203),i={exports:{}};!function(t){"use strict";t.exports={computed:{tankPressureState:function(){var t=this.get("data.tankPressure");return t>=200?"good":t>=100?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[14,1,295],t:7,e:"ui-notice",f:[{p:[15,3,310],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.maskConnected"],s:'_0?"is":"is not"'},p:[15,23,330]}," connected to a mask."]}]}," ",{p:[17,1,414],t:7,e:"ui-display",f:[{p:[18,3,430],t:7,e:"ui-section",a:{label:"Tank Pressure"},f:[{p:[19,7,472],t:7,e:"ui-bar",a:{min:"0",max:"1013",value:[{t:2,r:"data.tankPressure",p:[19,41,506]}],state:[{t:2,r:"tankPressureState",p:[20,16,545]}]},f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[20,39,568]}," kPa"]}]}," ",{p:[22,3,636],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[23,5,679],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[23,18,692]}],max:[{t:2,r:"data.maxReleasePressure",p:[23,52,726]}],value:[{t:2,r:"data.releasePressure",p:[24,14,769]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[24,40,795]}," kPa"]}]}," ",{p:[26,3,866],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[27,5,911],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[27,38,944]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[29,5,1100],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[29,36,1131]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1278],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1373],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1403]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[35,3,1565],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[36,5,1597],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[36,22,1614]}],state:[{t:2,x:{r:["data.maskConnected"],s:'_0?null:"disabled"'},p:[36,69,1661]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[37,22,1727]}]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],253:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,5,33],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[3,9,75],t:7,e:"span",f:[{t:2,x:{r:["adata.temperature"],s:"Math.fixed(_0,2)"},p:[3,15,81]}," K"]}]}," ",{p:[5,5,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,9,190],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.fixed(_0,2)"},p:[6,15,196]}," kPa"]}]}]}," ",{p:[9,1,276],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[10,5,311],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[11,9,347],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[11,26,364]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[11,70,408]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[12,28,469]}]}]}," ",{p:[14,5,531],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[15,9,580],t:7,e:"ui-button",a:{icon:"fast-backward",style:[{t:2,x:{r:["data.target","data.min"], -s:'_0==_1?"disabled":null'},p:[15,48,619]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[17,9,733],t:7,e:"ui-button",a:{icon:"backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[17,43,767]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[19,9,880],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:[{t:2,x:{r:["adata.target"],s:"Math.fixed(_0,2)"},p:[19,79,950]}]}," ",{p:[20,9,1003],t:7,e:"ui-button",a:{icon:"forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[20,42,1036]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[22,9,1148],t:7,e:"ui-button",a:{icon:"fast-forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[22,47,1186]}],action:"target",params:'{"adjust": 20}'}}]}]}]},e.exports=r.extend(i.exports)},{203:203}],254:[function(t,e,n){var r=t(203),i={exports:{}};!function(e){"use strict";var n=t(261);e.exports={data:{filter:""},oninit:function(){var t=this;this.on({hover:function(t){var e=this.get("data.telecrystals");e>=t.context.params.cost&&this.set("hovered",t.context.params)},unhover:function(t){this.set("hovered")}}),this.observe("filter",function(e,r,i){var a=t.findAll(".display:not(:first-child)");(0,n.filterMulti)(a,t.get("filter").toLowerCase())},{init:!1})}}}(i),i.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[29,7,770],t:7,e:"ui-input",a:{value:[{t:2,r:"filter",p:[29,24,787]}],placeholder:"Filter..."}}],n:50,r:"config.fancy",p:[28,5,742]}," ",{t:4,f:[{p:[32,7,872],t:7,e:"ui-button",a:{icon:"lock",action:"lock"},f:["Lock"]}],n:50,r:"data.lockable",p:[31,5,843]}]},t:7,e:"ui-display",a:{title:"Uplink",button:0},f:[" ",{p:[35,3,958],t:7,e:"ui-section",a:{label:"Telecrystals",right:0},f:[{p:[36,5,1003],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.telecrystals"],s:'_0>0?"good":"bad"'},p:[36,18,1016]}]},f:[{t:2,r:"data.telecrystals",p:[36,62,1060]}," TC"]}]}]}," ",{t:4,f:[{p:[40,3,1154],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[40,22,1173]}]},f:[{t:4,f:[{p:[42,7,1212],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[42,26,1231]}],candystripe:0,right:0},f:[{p:[43,9,1269],t:7,e:"ui-button",a:{tooltip:[{t:2,r:"name",p:[43,29,1289]},": ",{t:2,r:"desc",p:[43,39,1299]}],"tooltip-side":"left",state:[{t:2,x:{r:["data.telecrystals","hovered.cost","cost","hovered.item","name"],s:'_0<_2||(_0-_1<_2&&_3!=_4)?"disabled":null'},p:[44,18,1347]}],action:"buy",params:['{"category": "',{t:2,r:"category",p:[45,46,1512]},'", "item": ',{t:2,r:"name",p:[45,69,1535]},', "cost": ',{t:2,r:"cost",p:[45,87,1553]},"}"]},v:{hover:"hover",unhover:"unhover"},f:[{t:2,r:"cost",p:[46,49,1613]}," TC"]}]}],n:52,r:"items",p:[41,5,1189]}]}],n:52,r:"data.categories",p:[39,1,1125]}]},e.exports=r.extend(i.exports)},{203:203,261:261}],255:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{t:4,f:[{p:[3,5,42],t:7,e:"ui-section",a:{label:[{t:2,r:"color",p:[3,24,61]},{t:2,x:{r:["wire"],s:'_0?" ("+_0+")":""'},p:[3,33,70]}],labelcolor:[{t:2,r:"color",p:[3,80,117]}],candystripe:0,right:0},f:[{p:[4,7,154],t:7,e:"ui-button",a:{action:"cut",params:['{"wire":"',{t:2,r:"color",p:[4,48,195]},'"}']},f:[{t:2,x:{r:["cut"],s:'_0?"Mend":"Cut"'},p:[4,61,208]}]}," ",{p:[5,7,252],t:7,e:"ui-button",a:{action:"pulse",params:['{"wire":"',{t:2,r:"color",p:[5,50,295]},'"}']},f:["Pulse"]}," ",{p:[6,7,333],t:7,e:"ui-button",a:{action:"attach",params:['{"wire":"',{t:2,r:"color",p:[6,51,377]},'"}']},f:[{t:2,x:{r:["attached"],s:'_0?"Detach":"Attach"'},p:[6,64,390]}]}]}],n:52,r:"data.wires",p:[2,3,16]}]}," ",{t:4,f:[{p:[11,3,508],t:7,e:"ui-display",f:[{t:4,f:[{p:[13,7,555],t:7,e:"ui-section",f:[{t:2,r:".",p:[13,19,567]}]}],n:52,r:"data.status",p:[12,5,526]}]}],n:50,r:"data.status",p:[10,1,485]}]},e.exports=r.extend(i.exports)},{203:203}],256:[function(t,e,n){(function(e){"use strict";var n=t(203),r=e.interopRequireDefault(n);t(192),t(1),t(190),t(191);var i=t(257),a=e.interopRequireDefault(i),o=t(258),s=t(204),u=e.interopRequireDefault(s);r["default"].DEBUG=/minified/.test(function(){}),Object.assign(Math,t(262)),window.initialize=function(e){window.tgui||(window.tgui=new a["default"]({el:"#container",data:function(){var n=JSON.parse(e);return{constants:t(259),text:t(263),config:n.config,data:n.data,adata:n.data}}}),window.initialize=function(){})};var c=document.getElementById("data"),l=c.textContent,p=c.getAttribute("data-ref");"{}"!==l&&(window.initialize(l),c.remove()),(0,o.act)(p,"tgui:initialize"),u["default"].load({custom:{families:["FontAwesome"],urls:["https://netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"],testStrings:{FontAwesome:""}}})}).call(this,t("babel/external-helpers"))},{1:1,190:190,191:191,192:192,203:203,204:204,257:257,258:258,259:259,262:262,263:263,"babel/external-helpers":"babel/external-helpers"}],257:[function(t,e,n){var r=t(203),i={exports:{}};!function(e){"use strict";var n=t(258),r=t(260);e.exports={components:{"ui-bar":t(205),"ui-button":t(206),"ui-display":t(207),"ui-input":t(208),"ui-linegraph":t(209),"ui-notice":t(210),"ui-section":t(212),"ui-subdisplay":t(213)},events:{enter:t(201).enter,space:t(201).space},transitions:{fade:t(202)},onconfig:function(){var e=this.get("config.interface"),n={airalarm:t(216),"airalarm/back":t(217),"airalarm/modes":t(218),"airalarm/scrubbers":t(219),"airalarm/status":t(220),"airalarm/thresholds":t(221),"airalarm/vents":t(222),airlock_electronics:t(223),apc:t(224),atmos_alert:t(225),atmos_control:t(226),atmos_filter:t(227),atmos_mixer:t(228),atmos_pump:t(229),brig_timer:t(230),canister:t(231),cargo:t(232),chem_dispenser:t(233),chem_heater:t(234),cryo:t(235),error:t(236),firealarm:t(237),intellicard:t(238),keycard_auth:t(239),mulebot:t(240),portable_pump:t(241),portable_scrubber:t(242),power_monitor:t(243),radio:t(244),sleeper:t(245),smes:t(246),solar_control:t(247),space_heater:t(248),station_alert:t(249),suit_storage_unit:t(250),tank_dispenser:t(251),tanks:t(252),thermomachine:t(253),uplink:t(254),wires:t(255)};e in n?this.components["interface"]=n[e]:this.components["interface"]=n.error},oninit:function(){var t=this;this.observe("config.style",function(t,e,n){t&&document.body.classList.add(t),e&&document.body.classList.remove(e)}),this.on("titlebar.drag",function(){return t.toggle("drag"),!1}),this.on("resize.resize",function(){return t.toggle("resize"),!1}),document.addEventListener("mousemove",function(e){t.get("drag")?r.drag.bind(t)(e):t.get("resize")&&r.resize.bind(t)(e)}),document.addEventListener("mouseup",function(e){t.set({drag:!1,resize:!1,x:null,y:null})})},oncomplete:function(){if(this.get("config.locked")){var t=(0,r.lock)(window.screenLeft,window.screenTop),e=t.x,i=t.y;(0,n.winset)(this.get("config.window"),"pos",e+","+i)}(0,n.winset)("mapwindow.map","focus",!0)}}}(i),i.exports.template={v:3,t:[" "," "," "," ",{p:[72,1,2367],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[72,11,2377]}]}," ",{p:[73,1,2408],t:7,e:"main",f:[{p:[74,3,2418],t:7,e:"warnings"}," ",{p:[75,3,2433],t:7,e:"interface"}]}," ",{p:[77,1,2456],t:7,e:"resize"}]},i.exports.components=i.exports.components||{};var a={warnings:t(215),titlebar:t(214),resize:t(211)};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{201:201,202:202,203:203,205:205,206:206,207:207,208:208,209:209,210:210,211:211,212:212,213:213,214:214,215:215,216:216,217:217,218:218,219:219,220:220,221:221,222:222,223:223,224:224,225:225,226:226,227:227,228:228,229:229,230:230,231:231,232:232,233:233,234:234,235:235,236:236,237:237,238:238,239:239,240:240,241:241,242:242,243:243,244:244,245:245,246:246,247:247,248:248,249:249,250:250,251:251,252:252,253:253,254:254,255:255,258:258,260:260}],258:[function(t,e,n){"use strict";function r(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=arguments.length<=1||void 0===arguments[1]?"":arguments[1];return"byond://"+e+"?"+Object.keys(t).map(function(e){return o(e)+"="+o(t[e])}).join("&")}function i(t,e){var n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];window.location.href=r(Object.assign({src:t,action:e},n))}function a(t,e,n){var i;window.location.href=r((i={},i[t+"."+e]=n,i),"winset")}n.__esModule=!0,n.href=r,n.act=i,n.winset=a;var o=encodeURIComponent},{}],259:[function(t,e,n){"use strict";n.__esModule=!0;n.UI_INTERACTIVE=2,n.UI_UPDATE=1,n.UI_DISABLED=0,n.UI_CLOSE=-1},{}],260:[function(t,e,n){"use strict";function r(t,e){return 0>t?t=0:t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth),0>e?e=0:e+window.innerHeight>window.screen.availHeight&&(e=window.screen.availHeight-window.innerHeight),{x:t,y:e}}function i(t){if(t.preventDefault(),this.get("x")){var e=t.screenX-this.get("x")+window.screenLeft,n=t.screenY-this.get("y")+window.screenTop;if(this.get("config.locked")){var i=r(e,n);e=i.x,n=i.y}(0,s.winset)(this.get("config.window"),"pos",e+","+n)}this.set({x:t.screenX,y:t.screenY})}function a(t,e){return t=Math.clamp(100,window.screen.width,t),e=Math.clamp(100,window.screen.height,e),{x:t,y:e}}function o(t){if(t.preventDefault(),this.get("x")){var e=t.screenX-this.get("x")+window.innerWidth,n=t.screenY-this.get("y")+window.innerHeight,r=a(e,n);e=r.x,n=r.y,(0,s.winset)(this.get("config.window"),"size",e+","+n)}this.set({x:t.screenX,y:t.screenY})}n.__esModule=!0,n.lock=r,n.drag=i,n.sane=a,n.resize=o;var s=t(258)},{258:258}],261:[function(t,e,n){"use strict";function r(t,e){for(var n=t,r=Array.isArray(n),a=0,n=r?n:n[Symbol.iterator]();;){var o;if(r){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var s=o;s.textContent.toLowerCase().includes(e)?(s.style.display="",i(s,e)):s.style.display="none"}}function i(t,e){for(var n=t.queryAll("section"),r=t.query("header").textContent.toLowerCase().includes(e),i=n,a=Array.isArray(i),o=0,i=a?i:i[Symbol.iterator]();;){var s;if(a){if(o>=i.length)break;s=i[o++]}else{if(o=i.next(),o.done)break;s=o.value}var u=s;r||u.textContent.toLowerCase().includes(e)?u.style.display="":u.style.display="none"}}n.__esModule=!0,n.filterMulti=r,n.filter=i},{}],262:[function(t,e,n){"use strict";function r(t,e,n){return Math.max(t,Math.min(n,e))}function i(t){var e=arguments.length<=1||void 0===arguments[1]?1:arguments[1];return+(Math.round(t+"e"+e)+"e-"+e)}n.__esModule=!0,n.clamp=r,n.fixed=i},{}],263:[function(t,e,n){"use strict";function r(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()}function i(t){return t.replace(/\w\S*/g,r)}function a(t,e){for(t=""+t;t.length1){for(var u=Array(o),c=0;o>c;c++)u[c]=arguments[c+3];n.children=u}return{$$typeof:t,type:e,key:void 0===r?null:""+r,ref:null,props:n,_owner:null}}}(),e.asyncToGenerator=function(t){return function(){var e=t.apply(this,arguments);return new Promise(function(t,n){function r(i,a){try{var o=e[i](a),s=o.value}catch(u){return void n(u)}return o.done?void t(s):Promise.resolve(s).then(function(t){return r("next",t)},function(t){return r("throw",t)})}return r("next")})}},e.classCallCheck=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},e.createClass=function(){function t(t,e){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n},e.possibleConstructorReturn=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},e.selfGlobal=void 0===t?self:t,e.set=function r(t,e,n,i){var a=Object.getOwnPropertyDescriptor(t,e);if(void 0===a){var o=Object.getPrototypeOf(t);null!==o&&r(o,e,n,i)}else if("value"in a&&a.writable)a.value=n;else{var s=a.set;void 0!==s&&s.call(i,n)}return n},e.slicedToArray=function(){function t(t,e){var n=[],r=!0,i=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);r=!0);}catch(u){i=!0,a=u}finally{try{!r&&s["return"]&&s["return"]()}finally{if(i)throw a}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),e.slicedToArrayLoose=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){for(var n,r=[],i=t[Symbol.iterator]();!(n=i.next()).done&&(r.push(n.value),!e||r.length!==e););return r}throw new TypeError("Invalid attempt to destructure non-iterable instance")},e.taggedTemplateLiteral=function(t,e){return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))},e.taggedTemplateLiteralLoose=function(t,e){return t.raw=e,t},e.temporalRef=function(t,e,n){if(t===n)throw new ReferenceError(e+" is not defined - temporal dead zone");return t},e.temporalUndefined={},e.toArray=function(t){return Array.isArray(t)?t:Array.from(t)},e.toConsumableArray=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);es);return o===r&&(r+=1),o!==i&&(a=!0),n[o]=!0,o})},um=Di,cm={},lm=Ui,pm=Wi,fm=zi,dm=Hi,hm=Ki,mm={implicit:!0},vm={noCascade:!0},gm=Qi,ym=Yi,bm=function(t){var e,n,r=t.adapt,i=t.data,a=t.ractive,o=t.computed,s=t.mappings;this.ractive=a,this.adaptors=r,this.onchange=t.onchange,this.cache={},this.cacheMap=Eo(null),this.deps={computed:Eo(null),"default":Eo(null)},this.depsMap={computed:Eo(null),"default":Eo(null)},this.patternObservers=[],this.specials=Eo(null),this.wrapped=Eo(null),this.computations=Eo(null),this.captureGroups=[],this.unresolvedImplicitDependencies=[],this.changes=[],this.implicitChanges={},this.noCascade={},this.data=i,this.mappings=Eo(null);for(e in s)this.map(E(e),s[e]);if(i)for(e in i)(n=this.mappings[e])&&void 0===n.getValue()&&n.setValue(i[e]);for(e in o)s&&e in s&&p("Cannot map to a computed property ('%s')",e),this.compute(E(e),o[e]);this.ready=!0};bm.prototype={adapt:Bh,applyChanges:Gh,capture:Kh,clearCache:$h,compute:Zh,get:em,init:rm,map:im,mark:om,merge:um,register:lm,release:pm,reset:fm,set:dm,smartUpdate:hm,teardown:gm,unregister:ym};var xm=bm;Xi.prototype={constructor:Xi,begin:function(t){this.inProcess[t._guid]=!0},end:function(t){var e=t.parent;e&&this.inProcess[e._guid]?Zi(this.queue,e).push(t):ta(this,t),delete this.inProcess[t._guid]}};var wm=Xi,_m=ea,km=/\$\{([^\}]+)\}/g,Em=new as("construct"),Sm=new as("config"),Om=new wm("init"),Am=0,Pm=["adaptors","components","decorators","easing","events","interpolators","partials","transitions"],Cm=aa,jm=la;la.prototype={bubble:function(){this.dirty||(this.dirty=!0,ys.addView(this))},update:function(){this.callback(this.fragment.getValue()),this.dirty=!1},rebind:function(t,e){this.fragment.rebind(t,e)},unbind:function(){this.fragment.unbind()}};var Tm=function(t,e,n,i,o){var s,u,c,l,p,f,d={},h={},v={},g=[];for(u=t.parentFragment,c=t.root,o=o||{},r(d,o),o.content=i||[],d[""]=o.content,e.defaults.el&&m("The <%s/> component has a default `el` property; it has been disregarded",t.name),l=u;l;){if(l.owner.type===Mc){p=l.owner.container;break}l=l.parent}return n&&Object.keys(n).forEach(function(e){var r,i,o=n[e];if("string"==typeof o)r=fl(o),h[e]=r?r.value:o;else if(0===o)h[e]=!0;else{if(!a(o))throw Error("erm wut");fa(o)?(v[e]={origin:t.root.viewmodel,keypath:void 0},i=pa(t,o[0],function(t){t.isSpecial?f?s.set(e,t.value):(h[e]=t.value,delete v[e]):f?s.viewmodel.mappings[e].resolve(t):v[e].keypath=t})):i=new jm(t,o,function(t){f?s.set(e,t):h[e]=t}),g.push(i)}}),s=Eo(e.prototype),Cm(s,{el:null,append:!0,data:h,partials:o,magic:c.magic||e.defaults.magic,modifyArrays:c.modifyArrays,adapt:c.adapt},{parent:c,component:t,container:p,mappings:v,inlinePartials:d,cssIds:u.cssIds}),f=!0,t.resolvers=g,s},Mm=da,Fm=function(t){var e,n;for(e=t.root;e;)(n=e._liveComponentQueries["_"+t.name])&&n.push(t.instance),e=e.parent},Lm=ma,Nm=va,Rm=ga,Im=ya,Dm=ba,qm=new as("teardown"),Vm=wa,Um=function(t,e){this.init(t,e)};Um.prototype={detach:yh,find:xh,findAll:wh,findAllComponents:_h,findComponent:kh,findNextNode:Eh,firstNode:Sh,init:Lm,rebind:Nm,render:Rm,toString:Im,unbind:Dm,unrender:Vm};var Bm=Um,Wm=function(t){this.type=Cc,this.value=t.template.c};Wm.prototype={detach:gl,firstNode:function(){return this.node},render:function(){return this.node||(this.node=document.createComment(this.value)),this.node},toString:function(){return""},unrender:function(t){t&&this.node.parentNode.removeChild(this.node)}};var zm=Wm,Hm=function(t){var e,n;this.type=Mc,this.container=e=t.parentFragment.root,this.component=n=e.component,this.container=e,this.containerFragment=t.parentFragment,this.parentFragment=n.parentFragment;var r=this.name=t.template.n||"",i=e._inlinePartials[r];i||(m('Could not find template for partial "'+r+'"',{ractive:t.root}),i=[]),this.fragment=new iv({owner:this,root:e.parent,template:i,pElement:this.containerFragment.pElement}),a(n.yielders[r])?n.yielders[r].push(this):n.yielders[r]=[this],ys.scheduleTask(function(){if(n.yielders[r].length>1)throw Error("A component template can only have one {{yield"+(r?" "+r:"")+"}} declaration at a time")})};Hm.prototype={detach:function(){return this.fragment.detach()},find:function(t){return this.fragment.find(t)},findAll:function(t,e){return this.fragment.findAll(t,e)},findComponent:function(t){return this.fragment.findComponent(t)},findAllComponents:function(t,e){return this.fragment.findAllComponents(t,e)},findNextNode:function(){return this.containerFragment.findNextNode(this)},firstNode:function(){return this.fragment.firstNode()},getValue:function(t){return this.fragment.getValue(t)},render:function(){return this.fragment.render()},unbind:function(){this.fragment.unbind()},unrender:function(t){this.fragment.unrender(t),R(this.component.yielders[this.name],this)},rebind:function(t,e){this.fragment.rebind(t,e)},toString:function(){return""+this.fragment}};var Gm=Hm,Km=function(t){this.declaration=t.template.a};Km.prototype={init:ko,render:ko,unrender:ko,teardown:ko,toString:function(){return""}};var $m=Km,Qm=_a,Ym=Ea,Jm=Sa,Xm=Oa,Zm=Ca,tv=Ta,ev=function(t){this.init(t)};ev.prototype={bubble:lc,detach:pc,find:fc,findAll:dc,findAllComponents:hc,findComponent:mc,findNextNode:vc,firstNode:gc,getArgsList:hl,getNode:ml,getValue:vl,init:Qm,rebind:Ym,registerIndexRef:function(t){var e=this.registeredIndexRefs;-1===e.indexOf(t)&&e.push(t)},render:Jm,toString:Xm,unbind:Zm,unregisterIndexRef:function(t){var e=this.registeredIndexRefs;e.splice(e.indexOf(t),1)},unrender:tv};var nv,rv,iv=ev,av=Ma,ov=["template","partials","components","decorators","events"],sv=new as("reset"),uv=function(t,e){function n(e,r,i){i&&i.partials[t]||e.forEach(function(e){e.type===Pc&&e.getPartialName()===t&&r.push(e),e.fragment&&n(e.fragment.items,r,i),a(e.fragments)?n(e.fragments,r,i):a(e.items)?n(e.items,r,i):e.type===Tc&&e.instance&&n(e.instance.fragment.items,r,e.instance),e.type===Ac&&(a(e.attributes)&&n(e.attributes,r,i),a(e.conditionalAttributes)&&n(e.conditionalAttributes,r,i))})}var r,i=[];return n(this.fragment.items,i),this.partials[t]=e,r=ys.start(this,!0),i.forEach(function(e){e.value=void 0,e.setValue(t)}),ys.end(),r},cv=Fa,lv=xu("reverse"),pv=La,fv=xu("shift"),dv=xu("sort"),hv=xu("splice"),mv=Ra,vv=Ia,gv=new as("teardown"),yv=qa,bv=Va,xv=Ua,wv=new as("unrender"),_v=xu("unshift"),kv=Ba,Ev=new as("update"),Sv=Wa,Ov={add:Zo,animate:Es,detach:Os,find:Ps,findAll:Is,findAllComponents:Ds,findComponent:qs,findContainer:Vs,findParent:Us,fire:Hs,get:Gs,insert:$s,merge:Ys,observe:pu,observeOnce:fu,off:mu,on:vu,once:gu,pop:wu,push:_u,render:ju,reset:av,resetPartial:uv,resetTemplate:cv,reverse:lv,set:pv,shift:fv,sort:dv,splice:hv,subtract:mv,teardown:vv,toggle:yv,toHTML:bv,toHtml:bv,unrender:xv,unshift:_v,update:kv,updateModel:Sv},Av=function(t,e,n){return n||Ha(t,e)?function(){var n,r="_super"in this,i=this._super;return this._super=e,n=t.apply(this,arguments),r&&(this._super=i),n}:t},Pv=Ga,Cv=Ya,jv=function(t){var e,n,r={};return t&&(e=t._ractive)?(r.ractive=e.root,r.keypath=e.keypath.str,r.index={},(n=Cl(e.proxy.parentFragment))&&(r.index=Cl.resolve(n)),r):r};nv=function(t){return this instanceof nv?void Cm(this,t):new nv(t)},rv={DEBUG:{writable:!0,value:!0},DEBUG_PROMISES:{writable:!0,value:!0},extend:{value:Cv},getNodeInfo:{value:jv},parse:{value:Gu},Promise:{value:cs},svg:{value:ro},magic:{value:eo},VERSION:{value:"0.7.3"},adaptors:{writable:!0,value:{}},components:{writable:!0,value:{}},decorators:{writable:!0,value:{}},easing:{writable:!0,value:uo},events:{writable:!0,value:{}},interpolators:{writable:!0,value:Bo},partials:{writable:!0,value:{}},transitions:{writable:!0,value:{}}},Oo(nv,rv),nv.prototype=r(Ov,so),nv.prototype.constructor=nv,nv.defaults=nv.prototype;var Tv="function";if(typeof Date.now!==Tv||typeof String.prototype.trim!==Tv||typeof Object.keys!==Tv||typeof Array.prototype.indexOf!==Tv||typeof Array.prototype.forEach!==Tv||typeof Array.prototype.map!==Tv||typeof Array.prototype.filter!==Tv||"undefined"!=typeof window&&typeof window.addEventListener!==Tv)throw Error("It looks like you're attempting to use Ractive.js in an older browser. You'll need to use one of the 'legacy builds' in order to continue - see http://docs.ractivejs.org/latest/legacy-builds for more information.");var Mv=nv;return Mv})},{}],204:[function(t,e,n){!function(){function t(t,e,n){return t.call.apply(t.bind,arguments)}function n(t,e,n){if(!t)throw Error();if(2r;r++)if(n[r]==e)return!0;return!1}function l(t){if("string"==typeof t.f)return t.f;var e=t.m.location.protocol;return"about:"==e&&(e=t.a.location.protocol),"https:"==e?"https:":"http:"}function p(t){return t.m.location.hostname||t.a.location.hostname}function f(t,e,n){function r(){c&&i&&s&&(c(u),c=null)}e=a(t,"link",{rel:"stylesheet",href:e,media:"all"});var i=!1,s=!0,u=null,c=n||null;it?(e.onload=function(){i=!0,r()},e.onerror=function(){i=!0,u=Error("Stylesheet failed to load"),r()}):setTimeout(function(){i=!0,r()},0),o(t,"head",e)}function d(t,e,n,r){var i=t.c.getElementsByTagName("head")[0];if(i){var o=a(t,"script",{src:e}),s=!1;return o.onload=o.onreadystatechange=function(){s||this.readyState&&"loaded"!=this.readyState&&"complete"!=this.readyState||(s=!0,n&&n(null),o.onload=o.onreadystatechange=null,"HEAD"==o.parentNode.tagName&&i.removeChild(o))},i.appendChild(o),setTimeout(function(){s||(s=!0,n&&n(Error("Script load timeout")))},r||5e3),o}return null}function h(){this.a=0,this.c=null}function m(t){return t.a++,function(){t.a--,g(t)}}function v(t,e){t.c=e,g(t)}function g(t){0==t.a&&t.c&&(t.c(),t.c=null)}function y(t){this.a=t||"-"}function b(t,e){this.c=t,this.f=4,this.a="n";var n=(e||"n4").match(/^([nio])([1-9])$/i);n&&(this.a=n[1],this.f=parseInt(n[2],10))}function x(t){return k(t)+" "+(t.f+"00")+" 300px "+w(t.c)}function w(t){var e=[];t=t.split(/,\s*/);for(var n=0;nparseInt(t[1],10)||536===parseInt(t[1],10)&&11>=parseInt(t[2],10))}return ot}function I(t,e,n){for(var r in at)if(at.hasOwnProperty(r)&&e===t.f[at[r]]&&n===t.f[at[r]])return!0;return!1}function D(t){var e,n=t.g.a.offsetWidth,r=t.h.a.offsetWidth;(e=n===t.f.serif&&r===t.f["sans-serif"])||(e=R()&&I(t,n,r)),e?rt()-t.A>=t.w?R()&&I(t,n,r)&&(null===t.u||t.u.hasOwnProperty(t.a.c))?V(t,t.v):V(t,t.B):q(t):V(t,t.v)}function q(t){setTimeout(r(function(){D(this)},t),50)}function V(t,e){setTimeout(r(function(){s(this.g.a),s(this.h.a),s(this.j.a),s(this.o.a),e(this.a)},t),0)}function U(t,e,n){this.c=t,this.a=e,this.f=0,this.o=this.j=!1,this.s=n}function B(t){0==--t.f&&t.j&&(t.o?(t=t.a,t.g&&u(t.f,[t.a.c("wf","active")],[t.a.c("wf","loading"),t.a.c("wf","inactive")]),P(t,"active")):A(t.a))}function W(t){this.j=t,this.a=new C,this.h=0,this.f=this.g=!0}function z(t,e,n,i,a){var o=0==--t.h;(t.f||t.g)&&setTimeout(function(){var t=a||null,s=i||null||{};if(0===n.length&&o)A(e.a);else{e.f+=n.length,o&&(e.j=o);var c,l=[];for(c=0;ce;e++)r[e].load(function(e,n,r){z(t,a,e,n,r)})}function G(t,e){this.c=t,this.a=e}function K(t,e,n){var r=l(t.c);return t=(t.a.api||"fast.fonts.net/jsapi").replace(/^.*http(s?):(\/\/)?/,""),r+"//"+t+"/"+e+".js"+(n?"?v="+n:"")}function $(t,e){this.c=t,this.a=e}function Q(t,e,n){t?this.c=t:this.c=e+ut,this.a=[],this.f=[],this.g=n||""}function Y(t,e){for(var n=e.length,r=0;n>r;r++){var i=e[r].split(":");3==i.length&&t.f.push(i.pop());var a="";2==i.length&&""!=i[1]&&(a=":"),t.a.push(i.join(a))}}function J(t){if(0==t.a.length)throw Error("No fonts to load!");if(-1!=t.c.indexOf("kit="))return t.c;for(var e=t.a.length,n=[],r=0;e>r;r++)n.push(t.a[r].replace(/ /g,"+"));return e=t.c+"?family="+n.join("%7C"),0n;n++){var r=t.f[n].split(":"),i=r[0].replace(/\+/g," "),a=["n4"];if(2<=r.length){var o,s=r[1];if(o=[],s)for(var s=s.split(","),u=s.length,c=0;u>c;c++){var l;if(l=s[c],l.match(/^[\w-]+$/)){var p=ft.exec(l.toLowerCase());if(null==p)l="";else{if(l=p[2],l=null==l||""==l?"n":pt[l],p=p[1],null==p||""==p)p="4";else var f=lt[p],p=f?f:isNaN(p)?"4":p.substr(0,1);l=""+l+p}}else l="";l&&o.push(l)}0=n.j?n.f(n.a):e.fonts.load(x(n.a),n.h).then(function(e){1<=e.length?n.g(n.a):setTimeout(t,25)},function(){n.f(n.a)})}var e=this.c.m.document,n=this,r=rt();t()};var at={D:"serif",C:"sans-serif"},ot=null;N.prototype.start=function(){this.f.serif=this.j.a.offsetWidth,this.f["sans-serif"]=this.o.a.offsetWidth,this.A=rt(),D(this)};var st=null;U.prototype.g=function(t){var e=this.a;e.g&&u(e.f,[e.a.c("wf",t.c,""+_(t),"active")],[e.a.c("wf",t.c,""+_(t),"loading"),e.a.c("wf",t.c,""+_(t),"inactive")]),P(e,"fontactive",t),this.o=!0,B(this)},U.prototype.h=function(t){var e=this.a;if(e.g){var n=c(e.f,e.a.c("wf",t.c,""+_(t),"active")),r=[],i=[e.a.c("wf",t.c,""+_(t),"loading")];n||r.push(e.a.c("wf",t.c,""+_(t),"inactive")),u(e.f,r,i)}P(e,"fontinactive",t),B(this)},W.prototype.load=function(t){this.c=new i(this.j,t.context||this.j),this.g=!1!==t.events,this.f=!1!==t.classes,H(this,new S(this.c,t),t)},G.prototype.load=function(t){function e(){if(i["__mti_fntLst"+n]){var r,a=i["__mti_fntLst"+n](),o=[];if(a)for(var s=0;se;e++)f(this.c,r[e],m(o));var s=[];for(e=0,n=i.length;n>e;e++)if(r=i[e].split(":"),r[1])for(var u=r[1].split(","),c=0;ci;++i){var o=n.fonts[i];r.a.push(new b(o.name,E("font-weight:"+o.weight+";font-style:"+o.style)))}t(r.a)},d(this.c,l(this.c)+(this.f.api||"//f.fontdeck.com/s/css/js/")+p(this.c)+"/"+e+".js",function(e){e&&t([])})):t([])};var ht=new W(window);ht.a.c.custom=function(t,e){return new $(e,t)},ht.a.c.fontdeck=function(t,e){return new nt(e,t)},ht.a.c.monotype=function(t,e){return new G(e,t)},ht.a.c.typekit=function(t,e){return new et(e,t)},ht.a.c.google=function(t,e){return new tt(e,t)};var mt={load:r(ht.load,ht)};"function"==typeof define&&define.amd?define(function(){return mt}):void 0!==e&&e.exports?e.exports=mt:(window.WebFont=mt,window.WebFontConfig&&ht.load(window.WebFontConfig))}()},{}],205:[function(t,e,n){var r=t(203),i={exports:{}};!function(t){"use strict";t.exports={oninit:function(){var t=this;this.observe("value",function(e,n,r){var i=t.get(),a=i.min,o=i.max,s=Math.clamp(a,o,e);t.animate("percentage",Math.round((s-a)/(o-a)*100))})}}}(i),i.exports.template={v:3,t:[" ",{p:[13,1,293],t:7,e:"div",a:{"class":"bar"},f:[{p:[14,3,313],t:7,e:"div",a:{"class":["barFill ",{t:2,r:"state",p:[14,23,333]}],style:["width: ",{t:2,r:"percentage",p:[14,48,358]},"%"]}}," ",{p:[15,3,384],t:7,e:"span",a:{"class":"barText"},f:[{t:16,p:[15,25,406]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],206:[function(t,e,n){var r=t(203),i={exports:{}};!function(e){"use strict";var n=t(259),r=t(258);e.exports={computed:{clickable:function(){return this.get("enabled")&&!this.get("state")?!0:!1},enabled:function(){return this.get("config.status")===n.UI_INTERACTIVE?!0:!1},styles:function(){var t="";if(this.get("tooltip-side")&&(t=" tooltip-"+this.get("tooltip-side")),this.get("grid")&&(t+=" gridable"),this.get("enabled")){var e=this.get("state"),n=this.get("style");return e?"inactive "+e+" "+t:"active normal "+n+" "+t}return"inactive disabled "+t}},oninit:function(){var t=this;this.on("press",function(e){var n=t.get(),i=n.action,a=n.params;(0,r.act)(t.get("config.ref"),i,a),e.node.blur()})}}}(i),i.exports.template={v:3,t:[" ",{p:[48,1,1178],t:7,e:"span",a:{"class":["button ",{t:2,r:"styles",p:[48,21,1198]}],unselectable:"on","data-tooltip":[{t:2,r:"tooltip",p:[51,17,1280]}]},m:[{t:4,f:["tabindex='0'"],r:"clickable",p:[50,3,1232]}],v:{"mouseover-mousemove":"hover",mouseleave:"unhover","click-enter":{n:[{t:4,f:["press"],r:"clickable",p:[54,19,1370]}],d:[]}},f:[{t:4,f:[{p:[56,5,1416],t:7,e:"i",a:{"class":["fa fa-",{t:2,r:"icon",p:[56,21,1432]}]}}],n:50,r:"icon",p:[55,3,1399]}," ",{t:16,p:[58,3,1459]}]}]},e.exports=r.extend(i.exports)},{203:203,258:258,259:259}],207:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"display"},f:[{t:4,f:[{p:[3,5,42],t:7,e:"header",f:[{p:[4,7,57],t:7,e:"h3",f:[{t:2,r:"title",p:[4,11,61]}]}," ",{t:4,f:[{p:[6,9,105],t:7,e:"div",a:{"class":"buttonRight"},f:[{t:16,n:"button",p:[6,34,130]}]}],n:50,r:"button",p:[5,7,82]}]}],n:50,r:"title",p:[2,3,24]}," ",{p:[10,3,193],t:7,e:"article",f:[{t:16,p:[11,5,207]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],208:[function(t,e,n){var r=t(203),i={exports:{}};!function(t){"use strict";t.exports={oninit:function(){var t=this;this.on("clear",function(){t.set("value",""),t.find("input").focus()})}}}(i),i.exports.template={v:3,t:[" ",{p:[12,1,170],t:7,e:"input",a:{type:"text",value:[{t:2,r:"value",p:[12,27,196]}],placeholder:[{t:2,r:"placeholder",p:[12,51,220]}]}}," ",{p:[13,1,240],t:7,e:"ui-button",a:{icon:"refresh"},v:{press:"clear"}}]},e.exports=r.extend(i.exports)},{203:203}],209:[function(t,e,n){var r=t(203),i={exports:{}};!function(e){"use strict";e.exports={data:{graph:t(199),xaccessor:function(t){return t.x},yaccessor:function(t){return t.y}},computed:{size:function(){var t=this.get("points");return t[0].length},scale:function(){var t,e=this.get("points");return(t=Math).max.apply(t,Array.map(e,function(t){var e;return(e=Math).max.apply(e,Array.map(t,function(t){return t.y}))}))},xaxis:function(){var t=this.get("xinc"),e=this.get("size");return Array.from(Array(e).keys()).filter(function(e){return e&&e%t==0})},yaxis:function(){var t=this.get("yinc"),e=this.get("scale");return Array.from(Array(t).keys()).map(function(t){return Math.round(e*(++t/100)*10)})}},oninit:function(){var t=this;this.on({enter:function(t){this.set("selected",t.index.count)},exit:function(t){this.set("selected")}}),window.addEventListener("resize",function(e){t.set("width",t.el.clientWidth)})},onrender:function(){this.set("width",this.el.clientWidth)}}}(i),i.exports.template={v:3,t:[" ",{p:[47,1,1269],t:7,e:"svg",a:{"class":"linegraph",width:"100%",height:[{t:2,x:{r:["height"],s:"_0+10"},p:[47,45,1313]}]},f:[{p:[48,3,1334],t:7,e:"g",a:{transform:"translate(0, 5)"},f:[{t:4,f:[{t:4,f:[{p:[51,9,1504],t:7,e:"line",a:{x1:[{t:2,x:{r:["xscale","."],s:"_0(_1)"},p:[51,19,1514]}],x2:[{t:2,x:{r:["xscale","."],s:"_0(_1)"},p:[51,38,1533]}],y1:"0",y2:[{t:2,r:"height",p:[51,64,1559]}],stroke:"darkgray"}}," ",{t:4,f:[{p:[53,11,1635],t:7,e:"text",a:{x:[{t:2,x:{r:["xscale","."],s:"_0(_1)"},p:[53,20,1644]}],y:[{t:2,x:{r:["height"],s:"_0-5"},p:[53,38,1662]}],"text-anchor":"middle",fill:"white"},f:[{t:2,x:{r:["size",".","xfactor"],s:"(_0-_1)*_2"},p:[53,88,1712]}," ",{t:2,r:"xunit",p:[53,113,1737]}]}],n:50,x:{r:["@index"],s:"_0%2==0"},p:[52,9,1600]}],n:52,r:"xaxis",p:[50,7,1479]}," ",{t:4,f:[{p:[57,9,1820],t:7,e:"line",a:{x1:"0",x2:[{t:2,r:"width",p:[57,26,1837]}],y1:[{t:2,x:{r:["yscale","."],s:"_0(_1)"},p:[57,41,1852]}],y2:[{t:2,x:{r:["yscale","."],s:"_0(_1)"},p:[57,60,1871]}],stroke:"darkgray"}}," ",{p:[58,9,1915],t:7,e:"text",a:{x:"0",y:[{t:2,x:{r:["yscale","."],s:"_0(_1)-5"},p:[58,24,1930]}],"text-anchor":"begin",fill:"white"},f:[{t:2,x:{r:[".","yfactor"],s:"_0*_1"},p:[58,76,1982]}," ",{t:2,r:"yunit",p:[58,92,1998]}]}],n:52,r:"yaxis",p:[56,7,1795]}," ",{t:4,f:[{p:[61,9,2071],t:7,e:"path",a:{d:[{t:2,x:{r:["area.path"],s:"_0.print()"},p:[61,18,2080]}],fill:[{t:2,rx:{r:"colors",m:[{t:30,n:"curve"}]},p:[61,47,2109]}],opacity:"0.1"}}],n:52,i:"curve",r:"curves",p:[60,7,2039]}," ",{t:4,f:[{p:[64,9,2200],t:7,e:"path",a:{d:[{t:2,x:{r:["line.path"],s:"_0.print()"},p:[64,18,2209]}],stroke:[{t:2,rx:{r:"colors",m:[{t:30,n:"curve"}]},p:[64,49,2240]}],fill:"none"}}],n:52,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=r.extend(i.exports)},{199:199,203:203}],210:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"notice"},f:[{t:16,p:[2,3,23]}]}]},e.exports=r.extend(i.exports)},{203:203}],211:[function(t,e,n){var r=t(203),i={exports:{}};!function(e){"use strict";var n=t(258);e.exports={oninit:function(){var t=this;this.observe("config.fancy",function(e,r,i){(0,n.winset)(t.get("config.window"),"can-resize",!e)})}}}(i),i.exports.template={v:3,t:[" ",{t:4,f:[{p:[14,3,258],t:7,e:"div",a:{"class":"resize"},v:{mousedown:"resize"}}],n:50,r:"config.fancy",p:[13,1,235]}]},e.exports=r.extend(i.exports)},{203:203,258:258}],212:[function(t,e,n){var r=t(203),i={exports:{}};i.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,82],t:7,e:"span",a:{"class":"label",style:[{t:4,f:["color:",{t:2,r:"labelcolor",p:[3,53,130]}],r:"labelcolor",p:[3,32,109]}]},f:[{t:2,r:"label",p:[3,84,161]},":"]}],n:50,r:"label",p:[2,3,64]}," ",{t:4,f:[{t:16,p:[6,5,210]}],n:50,r:"nowrap",p:[5,3,191]},{t:4,n:51,f:[{p:[8,5,235],t:7,e:"div",a:{"class":"content",style:[{t:4,f:["float:right;"],r:"right",p:[8,33,263]}]},f:[{t:16,p:[9,7,304]}]}],r:"nowrap"}]}]},e.exports=r.extend(i.exports); +},{203:203}],213:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"subdisplay"},f:[{t:4,f:[{p:[3,5,45],t:7,e:"header",f:[{p:[4,7,60],t:7,e:"h4",f:[{t:2,r:"title",p:[4,11,64]}]}," ",{t:4,f:[{t:16,n:"button",p:[5,21,99]}],n:50,r:"button",p:[5,7,85]}]}],n:50,r:"title",p:[2,3,27]}," ",{p:[8,3,149],t:7,e:"article",f:[{t:16,p:[9,5,163]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],214:[function(t,e,n){var r=t(203),i={exports:{}};!function(e){"use strict";var n=t(259),r=t(258);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;this.observe("config.fancy",function(e,n,i){(0,r.winset)(t.get("config.window"),"titlebar",!e)}),this.on({close:function(){(0,r.winset)(this.get("config.window"),"is-visible",!1),window.location.href=(0,r.href)({command:"uiclose "+this.get("config.ref")},"winset")},minimize:function(){(0,r.winset)(this.get("config.window"),"is-minimized",!0)}})}}}(i),i.exports.template={v:3,t:[" ",{p:[34,1,859],t:7,e:"header",a:{"class":"titlebar"},v:{mousedown:"drag"},f:[{p:[35,3,907],t:7,e:"i",a:{"class":["statusicon fa fa-eye fa-2x ",{t:2,r:"visualStatus",p:[35,40,944]}]}}," ",{p:[36,3,969],t:7,e:"span",a:{"class":"title"},f:[{t:16,p:[36,23,989]}]}," ",{t:4,f:[{p:[38,5,1033],t:7,e:"i",a:{"class":"minimize fa fa-minus fa-2x"},v:{click:"minimize"}}," ",{p:[39,5,1100],t:7,e:"i",a:{"class":"close fa fa-close fa-2x"},v:{click:"close"}}],n:50,r:"config.fancy",p:[37,3,1008]}]}]},e.exports=r.extend(i.exports)},{203:203,258:258,259:259}],215:[function(t,e,n){var r=t(203),i={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")})}}}(i),i.exports.template={v:3,t:[" ",{t:4,f:[{p:[27,3,596],t:7,e:"ui-notice",f:[{p:[28,5,612],t:7,e:"span",f:["You have an old (IE",{t:2,r:"ie",p:[28,30,637]},") end-of-life (click 'EOL Info' for more information) version of Internet Explorer installed."]},{p:[28,137,744],t:7,e:"br"}," ",{p:[29,5,754],t:7,e:"span",f:["To upgrade click 'Upgrade IE' to download IE11 from Microsoft."]},{p:[29,81,830],t:7,e:"br"}," ",{p:[30,5,840],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,957],t:7,e:"br"}," ",{p:[31,5,967],t:7,e:"span",f:["Otherwise click 'No Frills' below to disable potentially incompatible features (and this message)."]}," ",{p:[32,5,1084],t:7,e:"hr"}," ",{p:[33,5,1094],t:7,e:"ui-button",a:{icon:"close",action:"tgui:nofrills"},f:["No Frills"]}," ",{p:[34,5,1167],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,1341],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,1488],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,1659],t:7,e:"ui-button",a:{icon:"bug"},v:{press:"debug"},f:["Debug Info"]}," ",{t:4,f:[{p:[42,7,1745],t:7,e:"hr"}," ",{p:[43,7,1757],t:7,e:"span",f:["Detected: IE",{t:2,r:"ie",p:[43,25,1775]}]},{p:[43,38,1788],t:7,e:"br"}," ",{p:[44,7,1800],t:7,e:"span",f:["User Agent: ",{t:2,r:"userAgent",p:[44,25,1818]}]}],n:50,r:"debug",p:[41,5,1725]}]}],n:50,x:{r:["config.fancy","ie"],s:"_0&&_1&&_1<11"},p:[26,1,556]}]},e.exports=r.extend(i.exports)},{203:203}],216:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[" "," "," "," "," ",{p:[7,1,261],t:7,e:"ui-notice",f:[{t:4,f:[{p:[9,5,304],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[10,7,346],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[10,24,363]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[10,75,414]}]}]}],n:50,r:"data.siliconUser",p:[8,3,275]},{t:4,n:51,f:[{p:[13,5,502],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[13,31,528]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[16,1,610],t:7,e:"status"}," ",{t:4,f:[{t:4,f:[{p:[19,7,701],t:7,e:"ui-display",a:{title:"Air Controls"},f:[{p:[20,9,743],t:7,e:"ui-section",f:[{p:[21,11,766],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"exclamation-triangle":"exclamation"'},p:[21,28,783]}],style:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"caution":null'},p:[21,98,853]}],action:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"reset":"alarm"'},p:[22,23,916]}]},f:["Area Atmosphere Alarm"]}]}," ",{p:[24,9,1022],t:7,e:"ui-section",f:[{p:[25,11,1045],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==3?"exclamation-triangle":"exclamation"'},p:[25,28,1062]}],style:[{t:2,x:{r:["data.mode"],s:'_0==3?"danger":null'},p:[25,96,1130]}],action:"mode",params:['{"mode": ',{t:2,x:{r:["data.mode"],s:"_0==3?1:3"},p:[26,44,1211]},"}"]},f:["Panic Siphon"]}]}," ",{p:[28,9,1295],t:7,e:"br"}," ",{p:[29,9,1309],t:7,e:"ui-section",f:[{p:[30,11,1332],t:7,e:"ui-button",a:{icon:"sign-out",action:"tgui:view",params:'{"screen": "vents"}'},f:["Vent Controls"]}]}," ",{p:[32,9,1463],t:7,e:"ui-section",f:[{p:[33,11,1486],t:7,e:"ui-button",a:{icon:"filter",action:"tgui:view",params:'{"screen": "scrubbers"}'},f:["Scrubber Controls"]}]}," ",{p:[35,9,1623],t:7,e:"ui-section",f:[{p:[36,11,1646],t:7,e:"ui-button",a:{icon:"cog",action:"tgui:view",params:'{"screen": "modes"}'},f:["Operating Mode"]}]}," ",{p:[38,9,1773],t:7,e:"ui-section",f:[{p:[39,11,1796],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,663]},{t:4,n:51,f:[{t:4,n:50,x:{r:["config.screen"],s:'_0=="vents"'},f:[{p:[43,5,1990],t:7,e:"vents"}]},{t:4,n:50,x:{r:["config.screen"],s:'(!(_0=="vents"))&&(_0=="scrubbers")'},f:[" ",{p:[45,5,2045],t:7,e:"scrubbers"}]},{t:4,n:50,x:{r:["config.screen"],s:'(!(_0=="vents"))&&((!(_0=="scrubbers"))&&(_0=="modes"))'},f:[" ",{p:[47,5,2100],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,2156],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,620]}]},i.exports.components=i.exports.components||{};var a={vents:t(222),modes:t(218),thresholds:t(221),status:t(220),scrubbers:t(219)};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{203:203,218:218,219:219,220:220,221:221,222:222}],217:[function(t,e,n){var r=t(203),i={exports:{}};i.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=r.extend(i.exports)},{203:203}],218:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,111],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Operating Modes",button:0},f:[" ",{t:4,f:[{p:[8,5,161],t:7,e:"ui-section",f:[{p:[9,7,180],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["selected"],s:'_0?"check-square-o":"square-o"'},p:[9,24,197]}],state:[{t:2,x:{r:["selected","danger"],s:'_0?_1?"danger":"selected":null'},p:[10,16,258]}],action:"mode",params:['{"mode": ',{t:2,r:"mode",p:[11,40,351]},"}"]},f:[{t:2,r:"name",p:[11,51,362]}]}]}],n:52,r:"data.modes",p:[7,3,136]}]}]},i.exports.components=i.exports.components||{};var a={back:t(217)};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{203:203,217:217}],219:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,113],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Scrubber Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,167],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,189]}]},f:[{p:[9,7,211],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,246],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,263]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,305]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,381]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,401]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,415]}]}]}," ",{p:[13,7,478],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,512],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["scrubbing"],s:'_0?"filter":"sign-in"'},p:[14,26,529]}],style:[{t:2,x:{r:["scrubbing"],s:'_0?null:"danger"'},p:[14,71,574]}],action:"scrubbing",params:['{"id_tag": "',{t:2,r:"id_tag",p:[15,50,656]},'", "val": ',{t:2,x:{r:["scrubbing"],s:"+!_0"},p:[15,70,676]},"}"]},f:[{t:2,x:{r:["scrubbing"],s:'_0?"Scrubbing":"Siphoning"'},p:[15,88,694]}]}]}," ",{p:[17,7,774],t:7,e:"ui-section",a:{label:"Range"},f:[{p:[18,9,809],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["widenet"],s:'_0?"expand":"compress"'},p:[18,26,826]}],style:[{t:2,x:{r:["widenet"],s:'_0?"selected":null'},p:[18,70,870]}],action:"widenet",params:['{"id_tag": "',{t:2,r:"id_tag",p:[19,48,950]},'", "val": ',{t:2,x:{r:["widenet"],s:"+!_0"},p:[19,68,970]},"}"]},f:[{t:2,x:{r:["widenet"],s:'_0?"Expanded":"Normal"'},p:[19,84,986]}]}]}," ",{p:[21,7,1060],t:7,e:"ui-section",a:{label:"Filters"},f:[{p:[22,9,1097],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_co2"],s:'_0?"check-square-o":"square-o"'},p:[22,26,1114]}],style:[{t:2,x:{r:["filter_co2"],s:'_0?"selected":null'},p:[22,81,1169]}],action:"co2_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[23,50,1254]},'", "val": ',{t:2,x:{r:["filter_co2"],s:"+!_0"},p:[23,70,1274]},"}"]},f:["CO2"]}," ",{p:[24,9,1317],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_n2o"],s:'_0?"check-square-o":"square-o"'},p:[24,26,1334]}],style:[{t:2,x:{r:["filter_n2o"],s:'_0?"selected":null'},p:[24,81,1389]}],action:"n2o_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[25,50,1474]},'", "val": ',{t:2,x:{r:["filter_n2o"],s:"+!_0"},p:[25,70,1494]},"}"]},f:["N2O"]}," ",{p:[26,9,1537],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_toxins"],s:'_0?"check-square-o":"square-o"'},p:[26,26,1554]}],style:[{t:2,x:{r:["filter_toxins"],s:'_0?"selected":null'},p:[26,84,1612]}],action:"tox_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[27,50,1700]},'", "val": ',{t:2,x:{r:["filter_toxins"],s:"+!_0"},p:[27,70,1720]},"}"]},f:["Plasma"]}]}]}],n:52,r:"data.scrubbers",p:[7,3,138]},{t:4,n:51,f:[{p:[31,5,1817],t:7,e:"span",a:{"class":"bad"},f:["Error: No scrubbers connected."]}],r:"data.scrubbers"}]}]},i.exports.components=i.exports.components||{};var a={back:t(217)};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{203:203,217:217}],220:[function(t,e,n){var r=t(203),i={exports:{}};i.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,107],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[4,26,126]}]},f:[{p:[5,6,142],t:7,e:"span",a:{"class":[{t:2,x:{r:["danger_level"],s:'_0==2?"bad":_0==1?"average":"good"'},p:[5,19,155]}]},f:[{t:2,x:{r:["value"],s:"Math.fixed(_0,2)"},p:[6,5,232]},{t:2,r:"unit",p:[6,29,256]}]}]}],n:52,r:"adata.environment_data",p:[3,5,68]}," ",{p:[10,5,313],t:7,e:"ui-section",a:{label:"Local Status"},f:[{p:[11,7,353],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,366]}]},f:[{t:2,x:{r:["data.danger_level"],s:'_0==2?"Danger (Internals Required)":_0==1?"Caution":"Optimal"'},p:[12,6,464]}]}]}," ",{p:[15,5,605],t:7,e:"ui-section",a:{label:"Area Status"},f:[{p:[16,7,644],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,657]}]},f:[{t:2,x:{r:["data.atmos_alarm","fire_alarm"],s:'_0?"Atmosphere Alarm":_1?"Fire Alarm":"Nominal"'},p:[17,8,728]}]}]}],n:50,r:"data.environment_data",p:[2,3,34]},{t:4,n:51,f:[{p:[21,5,856],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[22,7,891],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,1015],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[27,7,1050],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,990]}]}]},e.exports=r.extend(i.exports)},{203:203}],221:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.css=" th, td {\n padding-right: 16px;\n text-align: left;\n }",i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,112],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Alarm Thresholds",button:0},f:[" ",{p:[7,3,137],t:7,e:"table",f:[{p:[8,5,149],t:7,e:"thead",f:[{p:[8,12,156],t:7,e:"tr",f:[{p:[9,7,167],t:7,e:"th"}," ",{p:[10,7,183],t:7,e:"th",f:[{p:[10,11,187],t:7,e:"span",a:{"class":"bad"},f:["min2"]}]}," ",{p:[11,7,228],t:7,e:"th",f:[{p:[11,11,232],t:7,e:"span",a:{"class":"average"},f:["min1"]}]}," ",{p:[12,7,277],t:7,e:"th",f:[{p:[12,11,281],t:7,e:"span",a:{"class":"average"},f:["max1"]}]}," ",{p:[13,7,326],t:7,e:"th",f:[{p:[13,11,330],t:7,e:"span",a:{"class":"bad"},f:["max2"]}]}]}]}," ",{p:[15,5,387],t:7,e:"tbody",f:[{t:4,f:[{p:[16,32,426],t:7,e:"tr",f:[{p:[17,9,439],t:7,e:"th",f:[{t:3,r:"name",p:[17,13,443]}]}," ",{t:4,f:[{p:[18,27,485],t:7,e:"td",f:[{p:[19,11,500],t:7,e:"ui-button",a:{action:"threshold",params:['{"env": "',{t:2,r:"env",p:[19,58,547]},'", "var": "',{t:2,r:"val",p:[19,76,565]},'"}']},f:[{t:2,x:{r:["selected"],s:"Math.fixed(_0,2)"},p:[19,87,576]}]}]}],n:52,r:"settings",p:[18,9,467]}]}],n:52,r:"data.thresholds",p:[16,7,401]}]}," ",{p:[23,3,675],t:7,e:"table",f:[]}]}]}," "]},i.exports.components=i.exports.components||{};var a={back:t(217)};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{203:203,217:217}],222:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,109],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Vent Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,159],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,181]}]},f:[{p:[9,7,203],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,238],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,255]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,297]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,373]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,393]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,407]}]}]}," ",{p:[13,7,470],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,504],t:7,e:"span",f:[{t:2,x:{r:["direction"],s:'_0=="release"?"Pressurizing":"Siphoning"'},p:[14,15,510]}]}]}," ",{p:[16,7,601],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[17,9,649],t:7,e:"ui-button",a:{icon:"sign-in",style:[{t:2,x:{r:["incheck"],s:'_0?"selected":null'},p:[17,42,682]}],action:"incheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[18,48,762]},'", "val": ',{t:2,r:"checks",p:[18,68,782]},"}"]},f:["Internal"]}," ",{p:[19,9,824],t:7,e:"ui-button",a:{icon:"sign-out",style:[{t:2,x:{r:["excheck"],s:'_0?"selected":null'},p:[19,43,858]}],action:"excheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[20,48,938]},'", "val": ',{t:2,r:"checks",p:[20,68,958]},"}"]},f:["External"]}]}," ",{p:[22,7,1018],t:7,e:"ui-section",a:{label:"Target Pressure"},f:[{p:[23,9,1063],t:7,e:"ui-button",a:{icon:"pencil",action:"set_external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[24,31,1149]},'"}']},f:[{t:2,x:{r:["external"],s:"Math.fixed(_0)"},p:[24,45,1163]}]}," ",{p:[25,9,1208],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["extdefault"],s:'_0?"disabled":null'},p:[25,42,1241]}],action:"reset_external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[26,31,1340]},'"}']},f:["Reset"]}]}]}],n:52,r:"data.vents",p:[7,3,134]},{t:4,n:51,f:[{p:[30,5,1428],t:7,e:"span",a:{"class":"bad"},f:["Error: No vents connected."]}],r:"data.vents"}]}]},i.exports.components=i.exports.components||{};var a={back:t(217)};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{203:203,217:217}],223:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.css=" table {\n width: 100%;\n border-spacing: 2px;\n }\n th {\n text-align: left;\n }\n td {\n vertical-align: top;\n }\n td .button {\n margin-top: 4px\n }",i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,15],t:7,e:"ui-section",f:[{p:[3,5,32],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oneAccess"],s:'_0?"unlock":"lock"'},p:[3,22,49]}],action:"one_access"},f:[{t:2,x:{r:["data.oneAccess"],s:'_0?"One":"All"'},p:[3,82,109]}," Required"]}," ",{p:[4,5,169],t:7,e:"ui-button",a:{icon:"refresh",action:"clear"},f:["Clear"]}]}," ",{p:[6,3,246],t:7,e:"hr"}," ",{p:[7,3,254],t:7,e:"table",f:[{p:[8,3,264],t:7,e:"thead",f:[{p:[9,4,275],t:7,e:"tr",f:[{t:4,f:[{p:[10,5,306],t:7,e:"th",f:[{p:[10,9,310],t:7,e:"span",a:{"class":"highlight bold"},f:[{t:2,r:"name",p:[10,38,339]}]}]}],n:52,r:"data.regions",p:[9,8,279]}]}]}," ",{p:[13,3,391],t:7,e:"tbody",f:[{p:[14,4,402],t:7,e:"tr",f:[{t:4,f:[{p:[15,5,433],t:7,e:"td",f:[{t:4,f:[{p:[16,11,466],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["req"],s:'_0?"check-square-o":"square-o"'},p:[16,28,483]}],style:[{t:2,x:{r:["req"],s:'_0?"selected":null'},p:[16,76,531]}],action:"set",params:['{"access": "',{t:2,r:"id",p:[17,46,605]},'"}']},f:[{t:2,r:"name",p:[17,56,615]}]}," ",{p:[18,9,644],t:7,e:"br"}],n:52,r:"accesses",p:[15,9,437]}]}],n:52,r:"data.regions",p:[14,8,406]}]}]}]}]}," "]},e.exports=r.extend(i.exports)},{203:203}],224:[function(t,e,n){var r=t(203),i={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"}}}}(i),i.exports.template={v:3,t:[" ",{p:[46,1,1139],t:7,e:"ui-notice",f:[{t:4,f:[{p:[48,5,1182],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[49,7,1224],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[49,24,1241]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[49,75,1292]}]}]}],n:50,r:"data.siliconUser",p:[47,3,1153]},{t:4,n:51,f:[{p:[52,5,1380],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[52,31,1406]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[55,1,1488],t:7,e:"ui-display",a:{title:"Power Status"},f:[{p:[56,3,1524],t:7,e:"ui-section",a:{label:"Main Breaker"},f:[{t:4,f:[{p:[58,7,1609],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.isOperating"],s:'_0?"good":"bad"'},p:[58,20,1622]}]},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[58,59,1661]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[57,5,1562]},{t:4,n:51,f:[{p:[60,7,1723],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[60,24,1740]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[60,77,1793]}],action:"breaker"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[61,26,1860]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}," ",{p:[64,3,1938],t:7,e:"ui-section",a:{label:"External Power"},f:[{p:[65,5,1978],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.externalPower"],s:"_0(_1)"},p:[65,18,1991]}]},f:[{t:2,x:{r:["data.externalPower"],s:'_0==2?"Good":_0==1?"Low":"None"'},p:[65,54,2027]}]}]}," ",{p:[67,3,2132],t:7,e:"ui-section",a:{label:"Power Cell"},f:[{t:4,f:[{p:[69,7,2211],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerCellStatus",p:[69,40,2244]}],state:[{t:2,r:"powerCellStatusState",p:[69,73,2277]}]},f:[{t:2,x:{r:["adata.powerCellStatus"],s:"Math.fixed(_0)"},p:[69,99,2303]},"%"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[68,5,2168]},{t:4,n:51,f:[{p:[71,7,2370],t:7,e:"span",a:{"class":"bad"},f:["Removed"]}],x:{r:["data.powerCellStatus"],s:"_0!=null"}}]}," ",{t:4,f:[{p:[75,5,2474],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{t:4,f:[{p:[77,9,2562],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.chargeMode"],s:'_0?"good":"bad"'},p:[77,22,2575]}]},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[77,60,2613]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[76,7,2513]},{t:4,n:51,f:[{p:[79,9,2680],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.chargeMode"],s:'_0?"refresh":"close"'},p:[79,26,2697]}],style:[{t:2,x:{r:["data.chargeMode"],s:'_0?"selected":null'},p:[79,76,2747]}],action:"charge"},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[80,27,2814]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}," [",{p:[83,8,2897],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.chargingStatus"],s:"_0(_1)"},p:[83,21,2910]}]},f:[{t:2,x:{r:["data.chargingStatus"],s:'_0==2?"Fully Charged":_0==1?"Charging":"Not Charging"'},p:[83,58,2947]}]},"]"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[74,3,2433]}]}," ",{p:[87,1,3101],t:7,e:"ui-display",a:{title:"Power Channels"},f:[{t:4,f:[{p:[89,5,3172],t:7,e:"ui-section",a:{label:[{t:2,r:"title",p:[89,24,3191]}],nowrap:0},f:[{p:[90,7,3216],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.powerChannels"],s:"Math.round(_1[_0].powerLoad)"},p:[90,28,3237]}," W"]}," ",{p:[91,7,3305],t:7,e:"div",a:{"class":"content"},f:[{p:[91,28,3326],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0>=2?"good":"bad"'},p:[91,41,3339]}]},f:[{t:2,x:{r:["status"],s:'_0>=2?"On":"Off"'},p:[91,75,3373]}]}]}," ",{p:[92,7,3423],t:7,e:"div",a:{"class":"content"},f:["[",{p:[92,29,3445],t:7,e:"span",f:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"Auto":"Manual"'},p:[92,35,3451]}]},"]"]}," ",{p:[93,7,3522],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{t:4,f:[{p:[95,11,3623],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"selected":null'},p:[95,44,3656]}],action:"channel",params:[{t:2,r:"topicParams.auto",p:[96,38,3745]}]},f:["Auto"]}," ",{p:[97,11,3794],t:7,e:"ui-button",a:{icon:"power-off",state:[{t:2,x:{r:["status"],s:'_0==2?"selected":null'},p:[97,46,3829]}],action:"channel",params:[{t:2,r:"topicParams.on",p:[98,21,3903]}]},f:["On"]}," ",{p:[99,11,3948],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["status"],s:'_0==0?"selected":null'},p:[99,42,3979]}],action:"channel",params:[{t:2,r:"topicParams.off",p:[100,21,4053]}]},f:["Off"]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[94,9,3572]}]}]}],n:52,r:"data.powerChannels",p:[88,3,3139]}," ",{p:[105,3,4151],t:7,e:"ui-section",a:{label:"Total Load"},f:[{p:[106,5,4187],t:7,e:"span",a:{"class":"bold"},f:[{t:2,x:{r:["adata.totalLoad"],s:"Math.round(_0)"},p:[106,24,4206]}," W"]}]}]}," ",{t:4,f:[{p:[110,3,4304],t:7,e:"ui-display",a:{title:"System Overrides"},f:[{p:[111,5,4346],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"overload"},f:["Overload"]}," ",{t:4,f:[{p:[113,7,4449],t:7,e:"ui-button",a:{icon:[{t:2,r:"malfIcon",p:[113,24,4466]}],state:[{t:2,x:{r:["data.malfStatus"],s:'_0==4?"disabled":null'},p:[113,45,4487]}],action:[{t:2,r:"malfAction",p:[113,99,4541]}]},f:[{t:2,r:"malfButton",p:[113,115,4557]}]}],n:50,r:"data.malfStatus",p:[112,5,4419]}]}],n:50,r:"data.siliconUser",p:[109,1,4277]},{p:[117,1,4620],t:7,e:"ui-notice",f:[{p:[118,3,4634],t:7,e:"ui-section",a:{label:"Cover Lock"},f:[{t:4,f:[{p:[120,7,4717],t:7,e:"span",f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[120,13,4723]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[119,5,4670]},{t:4,n:51,f:[{p:[122,7,4797],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.coverLocked"],s:'_0?"lock":"unlock"'},p:[122,24,4814]}],action:"cover"},f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[122,81,4871]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}]}]},e.exports=r.extend(i.exports)},{203:203}],225:[function(t,e,n){var r=t(203),i={exports:{}};i.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=r.extend(i.exports)},{203:203}],226:[function(t,e,n){var r=t(203),i={exports:{}};i.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=r.extend(i.exports)},{203:203}],227:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,15],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,46],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,63]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,107]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,161]}]}]}," ",{p:[6,3,218],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,259],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[8,5,353],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,383]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,510],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[9,11,516]}," kPa"]}]}," ",{p:[11,3,576],t:7,e:"ui-section",a:{label:"Filter"},f:[{p:[12,5,608],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==""?"selected":null'},p:[12,23,626]}],action:"filter",params:'{"mode": ""}'},f:["Nothing"]}," ",{p:[14,5,742],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0=="plasma"?"selected":null'},p:[14,23,760]}],action:"filter",params:'{"mode": "plasma"}'},f:["Plasma"]}," ",{p:[16,5,887],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0=="o2"?"selected":null'},p:[16,23,905]}],action:"filter",params:'{"mode": "o2"}'},f:["O2"]}," ",{p:[18,5,1020],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0=="n2"?"selected":null'},p:[18,23,1038]}],action:"filter",params:'{"mode": "n2"}'},f:["N2"]}," ",{p:[20,5,1153],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0=="co2"?"selected":null'},p:[20,23,1171]}],action:"filter",params:'{"mode": "co2"}'},f:["CO2"]}," ",{p:[22,5,1289],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0=="n2o"?"selected":null'},p:[22,23,1307]}],action:"filter",params:'{"mode": "n2o"}'},f:["N2O"]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],228:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,15],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,46],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,63]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,107]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,161]}]}]}," ",{p:[6,3,218],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,259],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[8,5,353],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,383]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,514],t:7,e:"span",f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,11,520]}," kPa"]}]}," ",{p:[11,3,584],t:7,e:"ui-section",a:{label:"Node 1"},f:[{p:[12,5,616],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,655]}],action:"node1",params:'{"concentration": -0.1}'}}," ",{p:[14,5,770],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[14,39,804]}],action:"node1",params:'{"concentration": -0.01}'}}," ",{p:[16,5,920],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[16,38,953]}],action:"node1",params:'{"concentration": 0.01}'}}," ",{p:[18,5,1070],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,1108]}],action:"node1",params:'{"concentration": 0.1}'}}," ",{p:[20,5,1224],t:7,e:"span",f:[{t:2,x:{r:["adata.node1_concentration"],s:"Math.round(_0)"},p:[20,11,1230]},"%"]}]}," ",{p:[22,3,1298],t:7,e:"ui-section",a:{label:"Node 2" +},f:[{p:[23,5,1330],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,1369]}],action:"node2",params:'{"concentration": -0.1}'}}," ",{p:[25,5,1484],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[25,39,1518]}],action:"node2",params:'{"concentration": -0.01}'}}," ",{p:[27,5,1634],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[27,38,1667]}],action:"node2",params:'{"concentration": 0.01}'}}," ",{p:[29,5,1784],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,1822]}],action:"node2",params:'{"concentration": 0.1}'}}," ",{p:[31,5,1938],t:7,e:"span",f:[{t:2,x:{r:["adata.node2_concentration"],s:"Math.round(_0)"},p:[31,11,1944]},"%"]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],229:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,15],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,46],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,63]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,107]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,161]}]}]}," ",{t:4,f:[{p:[7,5,244],t:7,e:"ui-section",a:{label:"Transfer Rate"},f:[{p:[8,7,285],t:7,e:"ui-button",a:{icon:"pencil",action:"rate",params:'{"rate": "input"}'},f:["Set"]}," ",{p:[9,7,373],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,403]}],action:"transfer",params:'{"rate": "max"}'},f:["Max"]}," ",{p:[10,7,520],t:7,e:"span",f:[{t:2,x:{r:["adata.rate"],s:"Math.round(_0)"},p:[10,13,526]}," L/s"]}]}],n:50,r:"data.max_rate",p:[6,3,218]},{t:4,n:51,f:[{p:[13,5,597],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[14,7,640],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[15,7,736],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,766]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[16,7,895],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[16,13,901]}," kPa"]}]}],r:"data.max_rate"}]}]},e.exports=r.extend(i.exports)},{203:203}],230:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:{button:[{p:[3,5,65],t:7,e:"ui-button",a:{icon:"clock-o",style:[{t:2,x:{r:["data.timing"],s:'_0?"selected":null'},p:[3,38,98]}],action:[{t:2,x:{r:["data.timing"],s:'_0?"stop":"start"'},p:[3,83,143]}]},f:[{t:2,x:{r:["data.timing"],s:'_0?"Stop":"Start"'},p:[3,119,179]}]}," ",{p:[4,5,230],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,282]}]},f:[{t:2,x:{r:["data.flash_charging"],s:'_0?"Recharging":"Flash"'},p:[4,102,327]}]}]},t:7,e:"ui-display",a:{title:"Cell Timer",button:0},f:[" ",{p:[6,3,405],t:7,e:"ui-section",f:[{p:[7,5,422],t:7,e:"ui-button",a:{icon:"fast-backward",action:"time",params:'{"adjust": -600}'}}," ",{p:[8,5,511],t:7,e:"ui-button",a:{icon:"backward",action:"time",params:'{"adjust": -100}'}}," ",{p:[9,5,595],t:7,e:"span",f:[{t:2,x:{r:["text","data.minutes"],s:"_0.zeroPad(_1,2)"},p:[9,11,601]},":",{t:2,x:{r:["text","data.seconds"],s:"_0.zeroPad(_1,2)"},p:[9,45,635]}]}," ",{p:[10,5,680],t:7,e:"ui-button",a:{icon:"forward",action:"time",params:'{"adjust": 100}'}}," ",{p:[11,5,762],t:7,e:"ui-button",a:{icon:"fast-forward",action:"time",params:'{"adjust": 600}'}}]}," ",{p:[13,3,863],t:7,e:"ui-section",f:[{p:[14,7,882],t:7,e:"ui-button",a:{icon:"hourglass-start",action:"preset",params:'{"preset": "short"}'},f:["Short"]}," ",{p:[15,7,985],t:7,e:"ui-button",a:{icon:"hourglass-start",action:"preset",params:'{"preset": "medium"}'},f:["Medium"]}," ",{p:[16,7,1090],t:7,e:"ui-button",a:{icon:"hourglass-start",action:"preset",params:'{"preset": "long"}'},f:["Long"]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],231:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,14],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[2,23,34]}," connected to a tank."]}]}," ",{p:{button:[{p:[6,5,180],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,259],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[9,5,293],t:7,e:"span",f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[9,11,299]}," kPa"]}]}," ",{p:[11,3,363],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[12,5,393],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.portConnected"],s:'_0?"good":"average"'},p:[12,18,406]}]},f:[{t:2,x:{r:["data.portConnected"],s:'_0?"Connected":"Not Connected"'},p:[12,63,451]}]}]}]}," ",{p:[15,1,543],t:7,e:"ui-display",a:{title:"Valve"},f:[{p:[16,3,572],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[17,5,614],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[17,18,627]}],max:[{t:2,r:"data.maxReleasePressure",p:[17,52,661]}],value:[{t:2,r:"data.releasePressure",p:[18,14,703]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[18,40,729]}," kPa"]}]}," ",{p:[20,3,798],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[21,5,842],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[21,38,875]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[23,5,1029],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[23,36,1060]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[25,5,1205],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[26,5,1299],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[26,35,1329]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[29,3,1488],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[30,5,1519],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[30,22,1536]}],style:[{t:2,x:{r:["data.valveOpen","data.hasHoldingTank"],s:'_0?_1?"caution":"danger":null'},p:[31,14,1589]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[32,22,1682]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[38,7,1864],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.valveOpen"],s:'_0?"danger":null'},p:[38,38,1895]}],action:"eject"},f:["Eject"]}],n:50,r:"data.hasHoldingTank",p:[37,5,1830]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[42,3,2025],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holdingTank.name",p:[43,4,2055]}]}," ",{p:[45,3,2099],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holdingTank.tankPressure"],s:"Math.round(_0)"},p:[46,4,2132]}," kPa"]}],n:50,r:"data.hasHoldingTank",p:[41,3,1995]},{t:4,n:51,f:[{p:[49,3,2211],t:7,e:"ui-section",f:[{p:[50,4,2227],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.hasHoldingTank"}]}]},e.exports=r.extend(i.exports)},{203:203}],232:[function(t,e,n){var r=t(203),i={exports:{}};!function(e){"use strict";var n=t(261);e.exports={data:{filter:""},oninit:function(){var t=this;this.observe("filter",function(e,r,i){var a=t.findAll(".display:nth-child(n+4)");(0,n.filterMulti)(a,t.get("filter").toLowerCase())},{init:!1})}}}(i),i.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[19,7,474],t:7,e:"ui-input",a:{value:[{t:2,r:"filter",p:[19,24,491]}],placeholder:"Filter..."}}],n:50,r:"config.fancy",p:[18,5,446]}]},t:7,e:"ui-display",a:{title:"Cargo",button:0},f:[" ",{p:[22,3,561],t:7,e:"ui-section",a:{label:"Shuttle"},f:[{t:4,f:[{p:[24,7,643],t:7,e:"ui-button",a:{action:"send"},f:[{t:2,r:"data.location",p:[24,32,668]}]}],n:50,x:{r:["data.docked","data.requestonly"],s:"_0&&!_1"},p:[23,5,595]},{t:4,n:51,f:[{p:[26,7,719],t:7,e:"span",f:[{t:2,r:"data.location",p:[26,13,725]}]}],x:{r:["data.docked","data.requestonly"],s:"_0&&!_1"}}]}," ",{p:[29,3,783],t:7,e:"ui-section",a:{label:"Points"},f:[{p:[30,5,816],t:7,e:"span",f:[{t:2,x:{r:["adata.points"],s:"Math.floor(_0)"},p:[30,11,822]}]}]}," ",{p:[32,3,878],t:7,e:"ui-section",a:{label:"Centcom Message"},f:[{p:[33,7,922],t:7,e:"span",f:[{t:2,r:"data.message",p:[33,13,928]}]}]}," ",{t:4,f:[{p:[36,5,1016],t:7,e:"ui-section",a:{label:"Loan"},f:[{t:4,f:[{p:[38,9,1088],t:7,e:"ui-button",a:{action:"loan"},f:["Loan Shuttle"]}],n:50,x:{r:["data.loan_dispatched"],s:"!_0"},p:[37,7,1049]},{t:4,n:51,f:[{p:[40,9,1163],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:[35,3,972]}]}," ",{t:4,f:[{p:{button:[{p:[48,7,1361],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.cart.length"],s:'_0?null:"disabled"'},p:[48,38,1392]}],action:"clear"},f:["Clear"]}]},t:7,e:"ui-display",a:{title:"Cart",button:0},f:[" ",{t:4,f:[{p:[51,7,1517],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[52,9,1558],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[52,31,1580]}]}," ",{p:[53,9,1602],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"object",p:[53,30,1623]}]}," ",{p:[54,9,1649],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"cost",p:[54,30,1670]}," Points"]}," ",{p:[55,9,1701],t:7,e:"div",a:{"class":"content"},f:[{p:[56,11,1734],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"id": "',{t:2,r:"id",p:[56,67,1790]},'"}']}}]}]}],n:52,r:"data.cart",p:[50,5,1490]},{t:4,n:51,f:[{p:[60,7,1860],t:7,e:"span",f:["Nothing in Cart"]}],r:"data.cart"}]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[45,1,1267]},{p:{button:[{t:4,f:[{p:[67,7,2029],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.requests.length"],s:'_0?null:"disabled"'},p:[67,38,2060]}],action:"denyall"},f:["Clear"]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[66,5,1996]}]},t:7,e:"ui-display",a:{title:"Requests",button:0},f:[" ",{t:4,f:[{p:[71,5,2202],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[72,7,2241],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[72,29,2263]}]}," ",{p:[73,7,2283],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"object",p:[73,28,2304]}]}," ",{p:[74,7,2328],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"cost",p:[74,28,2349]}," Points"]}," ",{p:[75,7,2378],t:7,e:"div",a:{"class":"content"},f:["By ",{t:2,r:"orderer",p:[75,31,2402]}]}," ",{p:[76,7,2427],t:7,e:"div",a:{"class":"content"},f:["Comment: ",{t:2,r:"reason",p:[76,37,2457]}]}," ",{t:4,f:[{p:[78,9,2516],t:7,e:"div",a:{"class":"content"},f:[{p:[79,11,2549],t:7,e:"ui-button",a:{icon:"check",action:"approve",params:['{"id": "',{t:2,r:"id",p:[79,68,2606]},'"}']}}," ",{p:[80,11,2629],t:7,e:"ui-button",a:{icon:"close",action:"deny",params:['{"id": "',{t:2,r:"id",p:[80,65,2683]},'"}']}}]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[77,7,2481]}]}],n:52,r:"data.requests",p:[70,3,2173]},{t:4,n:51,f:[{p:[85,7,2766],t:7,e:"span",f:["No Requests"]}],r:"data.requests"}]}," ",{t:4,f:[{p:[89,3,2849],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[89,22,2868]}]},f:[{t:4,f:[{p:[91,7,2907],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[91,26,2926]}],candystripe:0,right:0},f:[{p:[92,9,2964],t:7,e:"ui-button",a:{action:"add",params:['{"id": "',{t:2,r:"id",p:[92,49,3004]},'"}']},f:[{t:2,r:"cost",p:[92,59,3014]}," Points"]}]}],n:52,r:"packs",p:[90,5,2884]}]}],n:52,r:"data.supplies",p:[88,1,2822]}]},e.exports=r.extend(i.exports)},{203:203,261:261}],233:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,30],t:7,e:"ui-section",a:{label:"Energy"},f:[{p:[3,5,62],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.maxEnergy",p:[3,26,83]}],value:[{t:2,r:"data.energy",p:[3,53,110]}]},f:[{t:2,x:{r:["adata.energy"],s:"Math.fixed(_0)"},p:[3,70,127]}," Units"]}]}]}," ",{p:{button:[{t:4,f:[{p:[9,7,307],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.amount","."],s:'_0==_1?"selected":null'},p:[9,37,337]}],action:"amount",params:['{"target": ',{t:2,r:".",p:[9,114,414]},"}"]},f:[{t:2,r:".",p:[9,122,422]}]}],n:52,r:"data.beakerTransferAmounts",p:[8,5,264]}]},t:7,e:"ui-display",a:{title:"Dispense",button:0},f:[" ",{p:[12,3,471],t:7,e:"ui-section",f:[{t:4,f:[{p:[14,7,519],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense",params:['{"reagent": "',{t:2,r:"id",p:[14,74,586]},'"}']},f:[{t:2,r:"title",p:[14,84,596]}]}],n:52,r:"data.chemicals",p:[13,5,488]}]}]}," ",{p:{button:[{t:4,f:[{p:[21,7,766],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"amount": ',{t:2,r:".",p:[21,66,825]},"}"]},f:[{t:2,r:".",p:[21,74,833]}]}],n:52,r:"data.beakerTransferAmounts",p:[20,5,723]}," ",{p:[23,5,869],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[23,36,900]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[25,3,995],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[27,7,1063],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[27,13,1069]},"/",{t:2,r:"data.beakerMaxVolume",p:[27,55,1111]}," Units"]}," ",{p:[28,7,1155],t:7,e:"br"}," ",{t:4,f:[{p:[30,9,1206],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[30,52,1249]}," units of ",{t:2,r:"name",p:[30,87,1284]}]},{p:[30,102,1299],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[29,7,1167]},{t:4,n:51,f:[{p:[32,9,1328],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[26,5,1029]},{t:4,n:51,f:[{p:[35,7,1401],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{203:203}],234:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[2,3,34],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,65],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isActive"],s:'_0?"power-off":"close"'},p:[3,22,82]}],style:[{t:2,x:{r:["data.isActive"],s:'_0?"selected":null'},p:[4,10,134]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,10,182]}],action:"power"},f:[{t:2,x:{r:["data.isActive"],s:'_0?"On":"Off"'},p:[6,18,244]}]}]}," ",{p:[8,3,307],t:7,e:"ui-section",a:{label:"Target"},f:[{p:[9,4,338],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,413]}," K"]}]}]}," ",{p:{button:[{p:[14,5,551],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[14,36,582]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[16,3,677],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[18,7,745],t:7,e:"span",f:["Temperature: ",{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[18,26,764]}," K"]}," ",{p:[19,7,813],t:7,e:"br"}," ",{t:4,f:[{p:[21,9,865],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[21,52,908]}," units of ",{t:2,r:"name",p:[21,87,943]}]},{p:[21,102,958],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[20,7,826]},{t:4,n:51,f:[{p:[23,9,987],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[17,5,711]},{t:4,n:51,f:[{p:[26,7,1060],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{203:203}],235:[function(t,e,n){var r=t(203),i={exports:{}};!function(t){"use strict";t.exports={data:{temperatureStatus:function(t){return 225>t?"good":273.15>t?"average":"bad"}},computed:{occupantStatState:function(){switch(this.get("data.occupant.stat")){case 0:return"good";case 1:return"average";default:return"bad"}}}}}(i),i.exports.template={v:3,t:[" ",{p:[22,1,445],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[23,3,477],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[24,3,509],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[24,9,515]}]}]}," ",{t:4,f:[{p:[27,5,629],t:7,e:"ui-section",a:{label:"State"},f:[{p:[28,7,662],t:7,e:"span",a:{"class":[{t:2,r:"occupantStatState",p:[28,20,675]}]},f:[{t:2,x:{r:["data.occupant.stat"],s:'_0==0?"Conscious":_0==1?"Unconcious":"Dead"'},p:[28,43,698]}]}]}," ",{p:[30,4,817],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[31,6,855],t:7,e:"span",a:{"class":[{t:2,x:{r:["temperatureStatus","adata.occupant.bodyTemperature"],s:"_0(_1)"},p:[31,19,868]}]},f:[{t:2,x:{r:["adata.occupant.bodyTemperature"],s:"Math.round(_0)"},p:[31,74,923]}," K"]}]}," ",{p:[33,5,1e3],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[34,7,1034],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[34,20,1047]}],max:[{t:2,r:"data.occupant.maxHealth",p:[34,54,1081]}],value:[{t:2,r:"data.occupant.health",p:[34,90,1117]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[35,16,1158]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[35,68,1210]}]}]}," ",{t:4,f:[{p:[38,7,1444],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[38,26,1463]}]},f:[{p:[39,9,1483],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[39,30,1504]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[39,66,1540]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[39,103,1577]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[37,5,1279]}],n:50,r:"data.hasOccupant",p:[26,3,600]}]}," ",{p:[44,1,1681],t:7,e:"ui-display",a:{title:"Cell"},f:[{p:[45,3,1709],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[46,5,1740],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[46,22,1757]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[47,14,1816]}],state:[{t:2,x:{r:["data.isOpen"],s:'_0?"disabled":null'},p:[48,14,1871]}],action:"power"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[49,22,1929]}]}]}," ",{p:[51,3,1995],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[52,3,2030],t:7,e:"span",a:{"class":[{t:2,x:{r:["temperatureStatus","adata.cellTemperature"],s:"_0(_1)"},p:[52,16,2043]}]},f:[{t:2,x:{r:["adata.cellTemperature"],s:"Math.round(_0)"},p:[52,62,2089]}," K"]}]}," ",{p:[54,2,2152],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[55,5,2182],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOpen"],s:'_0?"unlock":"lock"'},p:[55,22,2199]}],action:"door"},f:[{t:2,x:{r:["data.isOpen"],s:'_0?"Open":"Closed"'},p:[55,73,2250]}]}," ",{p:[56,5,2302],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoEject"],s:'_0?"sign-out":"sign-in"'},p:[56,22,2319]}],action:"autoeject"},f:[{t:2,x:{r:["data.autoEject"],s:'_0?"Auto":"Manual"'},p:[56,86,2383]}]}]}]}," ",{p:{button:[{p:[61,5,2524],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[61,36,2555]}],action:"ejectbeaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[63,3,2656],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[66,9,2763],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[66,52,2806]}," units of ",{t:2,r:"name",p:[66,87,2841]}]},{p:[66,102,2856],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[65,7,2724]},{t:4,n:51,f:[{p:[68,9,2885],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[64,5,2690]},{t:4,n:51,f:[{p:[71,7,2958],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{203:203}],236:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,14],t:7,e:"span",f:["The requested interface (",{t:2,r:"config.interface",p:[2,34,45]},") was not found. Does it exist?"]}]}]},e.exports=r.extend(i.exports)},{203:203}],237:[function(t,e,n){var r=t(203),i={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"}}}}}(i),i.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=r.extend(i.exports)},{203:203}],238:[function(t,e,n){var r=t(203),i={exports:{}};!function(t){"use strict";t.exports={computed:{healthState:function(){var t=this.get("data.health");return t>70?"good":t>50?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{t:4,f:[{p:[15,2,261],t:7,e:"ui-notice",f:[{p:[16,3,275],t:7,e:"ui-section",f:["Wipe in progress!"]}]}],n:50,r:"data.wiping",p:[14,1,240]},{p:{button:[{t:4,f:[{p:[24,4,453],t:7,e:"ui-button",a:{icon:"trash",state:[{t:2,x:{r:["data.wiping","data.isDead"],s:'_0||_1?"disabled":null'},p:[24,35,484]}],action:"wipe"},f:["Wipe AI"]}],n:50,r:"data.name",p:[23,3,432]}]},t:7,e:"ui-display",a:{title:[{t:2,x:{r:["data.name"],s:'_0?_0:"Empty Card"'},p:[21,19,360]}],button:0},f:[" ",{t:4,f:[{p:[28,3,615],t:7,e:"ui-section",a:{label:"Status"},f:[{t:4,f:[{p:[30,4,688],t:7,e:"ui-section",f:[{p:[30,16,700],t:7,e:"span",a:{"class":"bad"},f:["AI nonfunctional"]}]}],n:50,x:{r:["data.isDead","data.isBraindead"],s:"_0||_1"},p:[29,3,645]},{t:4,n:51,f:[{p:[32,4,769],t:7,e:"ui-section",f:[{p:[32,16,781],t:7,e:"span",a:{"class":"good"},f:["AI functional"]}]}],x:{r:["data.isDead","data.isBraindead"],s:"_0||_1"}}]}," ",{p:[35,3,862],t:7,e:"ui-section",a:{label:"Structural Integrity"},f:[{p:[36,4,907],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.health",p:[36,37,940]}],state:[{t:2,r:"healthState",p:[36,61,964]}]},f:[{t:2,x:{r:["adata.health"],s:"Math.round(_0)"},p:[36,78,981]},"%"]}]}," ",{p:[38,3,1038],t:7,e:"ui-section",a:{label:"Laws"},f:[{t:4,f:[{p:[40,4,1089],t:7,e:"ui-section",f:[{t:2,r:".",p:[40,16,1101]}]}],n:52,r:"data.laws",p:[39,3,1066]}]}," ",{p:[43,3,1150],t:7,e:"ui-section",a:{label:"Settings"},f:[{p:[44,4,1183],t:7,e:"ui-button",a:{icon:"signal",style:[{t:2,x:{r:["data.wireless"],s:'_0?"selected":null'},p:[44,36,1215]}],action:"wireless"},f:["Wireless Activity"]}," ",{p:[45,4,1305],t:7,e:"ui-button",a:{icon:"microphone",style:[{t:2,x:{r:["data.radio"],s:'_0?"selected":null'},p:[45,40,1341]}],action:"radio"},f:["Subspace Radio"]}]}],n:50,r:"data.name",p:[27,2,595]}]}]},e.exports=r.extend(i.exports)},{203:203}],239:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{t:4,f:[{p:[2,2,22],t:7,e:"ui-notice",f:[{p:[3,3,36],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,127],t:7,e:"ui-display",f:[{p:[7,3,142],t:7,e:"ui-section",f:[{t:4,f:[{p:[9,5,189],t:7,e:"ui-button",a:{icon:"check",action:"auth_swipe"},f:["Authorize ",{t:2,r:"data.auth_required",p:[9,59,243]}]}],n:50,r:"data.auth_required",p:[8,4,158]},{t:4,n:51,f:[{p:[11,5,294],t:7,e:"ui-button",a:{icon:"warning",state:[{t:2,x:{r:["data.red_alert"],s:'_0?"disabled":null'},p:[11,38,327]}],action:"red_alert"},f:["Red Alert"]}," ",{p:[12,5,412],t:7,e:"ui-button",a:{icon:"wrench",state:[{t:2,x:{r:["data.emergency_maint"],s:'_0?"disabled":null'},p:[12,37,444]}],action:"emergency_maint"},f:["Emergency Maintenance Access"]}],r:"data.auth_required"}]}]}],r:"data.waiting"}]},e.exports=r.extend(i.exports)},{203:203}],240:[function(t,e,n){var r=t(203),i={exports:{}};i.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=r.extend(i.exports)},{203:203}],241:[function(t,e,n){var r=t(203),i={exports:{}};i.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.holding"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:[4,1,113],t:7,e:"ui-display",a:{title:"Status",button:0},f:[{p:[5,3,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,5,186],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[6,11,192]}," kPa"]}]}," ",{p:[8,3,254],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[9,5,285],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected"],s:'_0?"good":"average"'},p:[9,18,298]}]},f:[{t:2,x:{r:["data.connected"],s:'_0?"Connected":"Not Connected"'},p:[9,59,339]}]}]}]}," ",{p:[12,1,430],t:7,e:"ui-display",a:{title:"Pump"},f:[{p:[13,3,459],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,5,491],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,22,508]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":"null"'},p:[15,14,559]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,616]}]}]}," ",{p:[18,3,675],t:7,e:"ui-section",a:{label:"Direction"},f:[{p:[19,5,711],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.direction"],s:'_0=="out"?"sign-out":"sign-in"'},p:[19,22,728]}],action:"direction"},f:[{t:2,x:{r:["data.direction"],s:'_0=="out"?"Out":"In"'},p:[20,26,808]}]}]}," ",{p:[22,3,883],t:7,e:"ui-section",a:{label:"Target Pressure"},f:[{p:[23,5,925],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.min_pressure",p:[23,18,938]}],max:[{t:2,r:"data.max_pressure",p:[23,46,966]}],value:[{t:2,r:"data.target_pressure",p:[24,14,1003]}]},f:[{t:2,x:{r:["adata.target_pressure"],s:"Math.round(_0)"},p:[24,40,1029]}," kPa"]}]}," ",{p:[26,3,1100],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[27,5,1145],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.target_pressure","data.default_pressure"],s:'_0!=_1?null:"disabled"'},p:[27,38,1178]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[29,5,1328],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.target_pressure","data.min_pressure"],s:'_0>_1?null:"disabled"'},p:[29,36,1359]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1500],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1595],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.target_pressure","data.max_pressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1625]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}]}," ",{p:{button:[{t:4,f:[{p:[39,7,1891],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.on"],s:'_0?"danger":null'},p:[39,38,1922]}],action:"eject"},f:["Eject"]}],n:50,r:"data.holding",p:[38,5,1863]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[43,3,2042],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holding.name",p:[44,4,2073]}]}," ",{p:[46,3,2115],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holding.pressure"],s:"Math.round(_0)"},p:[47,4,2149]}," kPa"]}],n:50,r:"data.holding",p:[42,3,2018]},{t:4,n:51,f:[{p:[50,3,2223],t:7,e:"ui-section",f:[{p:[51,4,2240],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.holding"}]}]},e.exports=r.extend(i.exports)},{203:203}],242:[function(t,e,n){var r=t(203),i={exports:{}};i.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.holding"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:[4,1,113],t:7,e:"ui-display",a:{title:"Status",button:0},f:[{p:[5,3,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,5,186],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[6,11,192]}," kPa"]}]}," ",{p:[8,3,254],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[9,5,285],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected"],s:'_0?"good":"average"'},p:[9,18,298]}]},f:[{t:2,x:{r:["data.connected"],s:'_0?"Connected":"Not Connected"'},p:[9,59,339]}]}]}]}," ",{p:[12,1,430],t:7,e:"ui-display",a:{title:"Filter"},f:[{p:[13,3,461],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,5,493],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,22,510]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":"null"'},p:[15,14,561]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,618]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[22,7,787],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.on"],s:'_0?"danger":null'},p:[22,38,818]}],action:"eject"},f:["Eject"]}],n:50,r:"data.holding",p:[21,5,759]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[26,3,938],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holding.name",p:[27,4,969]}]}," ",{p:[29,3,1011],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holding.pressure"],s:"Math.round(_0)"},p:[30,4,1045]}," kPa"]}],n:50,r:"data.holding",p:[25,3,914]},{t:4,n:51,f:[{p:[33,3,1119],t:7,e:"ui-section",f:[{p:[34,4,1136],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.holding"}]}]},e.exports=r.extend(i.exports)},{203:203}],243:[function(t,e,n){var r=t(203),i={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}})})}}}}(i),i.exports.template={v:3,t:[" ",{p:[42,1,1035],t:7,e:"ui-display",a:{title:"Network"},f:[{t:4,f:[{p:[44,5,1093],t:7,e:"ui-linegraph",a:{points:[{t:2,r:"graphData",p:[44,27,1115]}],height:"500",legend:'["Available", "Load"]',colors:'["rgb(0, 102, 0)", "rgb(153, 0, 0)"]',xunit:"seconds ago",xfactor:[{t:2,r:"data.interval",p:[46,38,1267]}],yunit:"W",yfactor:"1",xinc:[{t:2,x:{r:["data.stored"],s:"_0/10"},p:[47,15,1323]}],yinc:"9"}}],n:50,r:"config.fancy",p:[43,3,1067]},{t:4,n:51,f:[{p:[49,5,1373],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[50,7,1411],t:7,e:"span",f:[{t:2,r:"data.supply",p:[50,13,1417]}," W"]}]}," ",{p:[52,5,1466],t:7,e:"ui-section",a:{label:"Load"},f:[{p:[53,9,1501],t:7,e:"span",f:[{t:2,r:"data.demand",p:[53,15,1507]}," W"]}]}],r:"config.fancy"}]}," ",{p:[57,1,1578],t:7,e:"ui-display",a:{title:"Areas"},f:[{p:[58,3,1608],t:7,e:"ui-section",a:{nowrap:0},f:[{p:[59,5,1633],t:7,e:"div",a:{"class":"content"},f:["Area"]}," ",{p:[60,5,1670],t:7,e:"div",a:{"class":"content"},f:["Charge"]}," ",{p:[61,5,1709],t:7,e:"div",a:{"class":"content"},f:["Load"]}," ",{p:[62,5,1746],t:7,e:"div",a:{"class":"content"},f:["Status"]}," ",{p:[63,5,1785],t:7,e:"div",a:{"class":"content"},f:["Equipment"]}," ",{p:[64,5,1827],t:7,e:"div",a:{"class":"content"},f:["Lighting"]}," ",{p:[65,5,1868],t:7,e:"div",a:{"class":"content"},f:["Environment"]}]}," ",{t:4,f:[{p:[68,5,1953],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[68,24,1972]}],nowrap:0},f:[{p:[69,7,1997],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.areas"],s:"Math.round(_1[_0].charge)"},p:[69,28,2018]}," %"]}," ",{p:[70,7,2076],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.areas"],s:"Math.round(_1[_0].load)"},p:[70,28,2097]}," W"]}," ",{p:[71,7,2153],t:7,e:"div",a:{"class":"content"},f:[{p:[71,28,2174],t:7,e:"span",a:{"class":[{t:2,x:{r:["chargingState","charging"],s:"_0(_1)"},p:[71,41,2187]}]},f:[{t:2,x:{r:["chargingMode","charging"],s:"_0(_1)"},p:[71,70,2216]}]}]}," ",{p:[72,7,2263],t:7,e:"div",a:{"class":"content"},f:[{p:[72,28,2284],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","eqp"],s:"_0(_1)"},p:[72,41,2297]}]},f:[{t:2,x:{r:["channelPower","eqp"],s:"_0(_1)"},p:[72,64,2320]}," [",{p:[72,87,2343],t:7,e:"span",f:[{t:2,x:{r:["channelMode","eqp"],s:"_0(_1)"},p:[72,93,2349]}]},"]"]}]}," ",{p:[73,7,2398],t:7,e:"div",a:{"class":"content"},f:[{p:[73,28,2419],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","lgt"],s:"_0(_1)"},p:[73,41,2432]}]},f:[{t:2,x:{r:["channelPower","lgt"],s:"_0(_1)"},p:[73,64,2455]}," [",{p:[73,87,2478],t:7,e:"span",f:[{t:2,x:{r:["channelMode","lgt"],s:"_0(_1)"},p:[73,93,2484]}]},"]"]}]}," ",{p:[74,7,2533],t:7,e:"div",a:{"class":"content"},f:[{p:[74,28,2554],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","env"],s:"_0(_1)"},p:[74,41,2567]}]},f:[{t:2,x:{r:["channelPower","env"],s:"_0(_1)"},p:[74,64,2590]}," [",{p:[74,87,2613],t:7,e:"span",f:[{t:2,x:{r:["channelMode","env"],s:"_0(_1)"},p:[74,93,2619]}]},"]"]}]}]}],n:52,r:"data.areas",p:[67,3,1927]}]}]},e.exports=r.extend(i.exports)},{203:203}],244:[function(t,e,n){var r=t(203),i={exports:{}};!function(t){"use strict";t.exports={computed:{readableFrequency:function(){return Math.round(this.get("adata.frequency"))/10}}}}(i),i.exports.template={v:3,t:[" ",{p:[11,1,167],t:7,e:"ui-display",a:{title:"Settings"},f:[{t:4,f:[{p:[13,5,224],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,7,257],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.listening"],s:'_0?"power-off":"close"'},p:[14,24,274]}],style:[{t:2,x:{r:["data.listening"],s:'_0?"selected":null'},p:[14,75,325]}],action:"listen"},f:[{t:2,x:{r:["data.listening"],s:'_0?"On":"Off"'},p:[16,9,398]}]}]}],n:50,r:"data.headset",p:[12,3,199]},{t:4,n:51,f:[{p:[19,5,476],t:7,e:"ui-section",a:{label:"Microphone"},f:[{p:[20,7,514],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.broadcasting"],s:'_0?"power-off":"close"'},p:[20,24,531]}],style:[{t:2,x:{r:["data.broadcasting"],s:'_0?"selected":null'},p:[20,78,585]}],action:"broadcast"},f:[{t:2,x:{r:["data.broadcasting"],s:'_0?"Engaged":"Disengaged"'},p:[22,9,664]}]}]}," ",{p:[24,5,746],t:7,e:"ui-section",a:{label:"Speaker"},f:[{p:[25,7,781],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.listening"],s:'_0?"power-off":"close"'},p:[25,24,798]}],style:[{t:2,x:{r:["data.listening"],s:'_0?"selected":null'},p:[25,75,849]}],action:"listen"},f:[{t:2,x:{r:["data.listening"],s:'_0?"Engaged":"Disengaged"'},p:[27,9,922]}]}]}],r:"data.headset"}," ",{t:4,f:[{p:[31,5,1034],t:7,e:"ui-section",a:{label:"High Volume"},f:[{p:[32,7,1073],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.useCommand"],s:'_0?"power-off":"close"'},p:[32,24,1090]}],style:[{t:2,x:{r:["data.useCommand"],s:'_0?"selected":null'},p:[32,76,1142]}],action:"command"},f:[{t:2,x:{r:["data.useCommand"],s:'_0?"On":"Off"'},p:[34,9,1217]}]}]}],n:50,r:"data.command",p:[30,3,1009]}]}," ",{p:[38,1,1305],t:7,e:"ui-display",a:{title:"Channel"},f:[{p:[39,3,1336],t:7,e:"ui-section",a:{label:"Frequency"},f:[{t:4,f:[{p:[41,7,1399],t:7,e:"span",f:[{t:2,r:"readableFrequency",p:[41,13,1405]}]}],n:50,r:"data.freqlock",p:[40,5,1371]},{t:4,n:51,f:[{p:[43,7,1453],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.frequency","data.minFrequency"],s:'_0==_1?"disabled":null'},p:[43,46,1492]}],action:"frequency",params:'{"adjust": -1}'}}," ",{p:[44,7,1603],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.frequency","data.minFrequency"],s:'_0==_1?"disabled":null'},p:[44,41,1637]}],action:"frequency",params:'{"adjust": -.2}'}}," ",{p:[45,7,1749],t:7,e:"ui-button",a:{icon:"pencil",action:"frequency",params:'{"tune": "input"}'},f:[{t:2,r:"readableFrequency",p:[45,78,1820]}]}," ",{p:[46,7,1860],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.frequency","data.maxFrequency"],s:'_0==_1?"disabled":null'},p:[46,40,1893]}],action:"frequency",params:'{"adjust": .2}'}}," ",{p:[47,7,2004],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.frequency","data.maxFrequency"],s:'_0==_1?"disabled":null'},p:[47,45,2042]}],action:"frequency",params:'{"adjust": 1}'}}],r:"data.freqlock"}]}," ",{t:4,f:[{p:[51,5,2212],t:7,e:"ui-section",a:{label:"Subspace Transmission"},f:[{p:[52,7,2261],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.subspace"],s:'_0?"power-off":"close"'},p:[52,24,2278]}],style:[{t:2,x:{r:["data.subspace"],s:'_0?"selected":null'},p:[52,74,2328]}],action:"subspace"},f:[{t:2,x:{r:["data.subspace"],s:'_0?"Active":"Inactive"'},p:[53,29,2395]}]}]}],n:50,r:"data.subspaceSwitchable",p:[50,3,2176]}," ",{t:4,f:[{p:[57,5,2522],t:7,e:"ui-section",a:{label:"Channels"},f:[{t:4,f:[{p:[59,9,2598],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["."],s:'_0?"check-square-o":"square-o"'},p:[59,26,2615]}],style:[{t:2,x:{r:["."],s:'_0?"selected":null'},p:[60,18,2671]}],action:"channel",params:['{"channel": "',{t:2,r:"channel",p:[61,49,2746]},'"}']},f:[{t:2,r:"channel",p:[62,11,2772]}]},{p:[62,34,2795],t:7,e:"br"}],n:52,i:"channel",r:"data.channels",p:[58,7,2558]}]}],n:50,x:{r:["data.subspace","data.channels"],s:"_0&&_1"},p:[56,3,2479]}]}]},e.exports=r.extend(i.exports)},{203:203}],245:[function(t,e,n){var r=t(203),i={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"}}}}}(i),i.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]}]}]}," ",{p:[23,5,658],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[24,7,693],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[24,20,706]}],max:[{t:2,r:"data.occupant.maxHealth",p:[24,54,740]}],value:[{t:2,r:"data.occupant.health",p:[24,90,776]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[25,16,818]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[25,68,870]}]}]}," ",{t:4,f:[{p:[28,7,1107],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[28,26,1126]}]},f:[{p:[29,9,1147],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[29,30,1168]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[29,66,1204]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[29,103,1241]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[27,5,941]}," ",{p:[32,5,1328],t:7,e:"ui-section",a:{label:"Cells"},f:[{p:[33,9,1364],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"bad":"good"'},p:[33,22,1377]}]},f:[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"Damaged":"Healthy"'},p:[33,68,1423]}]}]}," ",{p:[35,5,1506],t:7,e:"ui-section",a:{label:"Brain"},f:[{p:[36,9,1542],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"bad":"good"'},p:[36,22,1555]}]},f:[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"Abnormal":"Healthy"'},p:[36,68,1601]}]}]}," ",{p:[38,5,1685],t:7,e:"ui-section",a:{label:"Bloodstream"},f:[{t:4,f:[{p:[40,11,1772],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,1)"},p:[40,54,1815]}," units of ",{t:2,r:"name",p:[40,89,1850]}]},{p:[40,104,1865],t:7,e:"br"}],n:52,r:"adata.occupant.reagents",p:[39,9,1727]},{t:4,n:51,f:[{p:[42,11,1900],t:7,e:"span",a:{"class":"good"},f:["Pure"]}],r:"adata.occupant.reagents"}]}],n:50,r:"data.occupied",p:[19,3,439]}]}," ",{p:[47,1,1996],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[48,2,2028],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[49,5,2059],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"unlock":"lock"'},p:[49,22,2076]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Open":"Closed"'},p:[49,71,2125]}]}]}," ",{p:[51,3,2190],t:7,e:"ui-section",a:{label:"Inject"},f:[{t:4,f:[{p:[53,7,2251],t:7,e:"ui-button",a:{icon:"flask",state:[{t:2,x:{r:["data.occupied","allowed"],s:'_0&&_1?null:"disabled"'},p:[53,38,2282]}],action:"inject",params:['{"chem": "',{t:2,r:"id",p:[53,122,2366]},'"}']},f:[{t:2,r:"name",p:[53,132,2376]}]},{p:[53,152,2396],t:7,e:"br"}],n:52,r:"data.chems",p:[52,5,2223]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],246:[function(t,e,n){var r=t(203),i={exports:{}};!function(t){"use strict";t.exports={computed:{capacityPercentState:function(){var t=this.get("data.capacityPercent");return t>50?"good":t>15?"average":"bad"},inputState:function(){return this.get("data.capacityPercent")>=100?"good":this.get("data.inputting")?"average":"bad"},outputState:function(){return this.get("data.outputting")?"good":this.get("data.charge")>0?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[24,1,640],t:7,e:"ui-display",a:{title:"Storage"},f:[{p:[25,3,671],t:7,e:"ui-section",a:{label:"Stored Energy"},f:[{p:[26,5,710],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.capacityPercent",p:[26,38,743]}],state:[{t:2,r:"capacityPercentState",p:[26,71,776]}]},f:[{t:2,x:{r:["adata.capacityPercent"],s:"Math.fixed(_0)"},p:[26,97,802]},"%"]}]}]}," ",{p:[29,1,880],t:7,e:"ui-display",a:{title:"Input"},f:[{p:[30,3,909],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{p:[31,5,946],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"refresh":"close"'},p:[31,22,963]}],style:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"selected":null'},p:[31,74,1015]}],action:"tryinput"},f:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"Auto":"Off"'},p:[32,25,1082]}]},"   [",{p:[34,6,1149],t:7,e:"span",a:{"class":[{t:2,r:"inputState",p:[34,19,1162]}]},f:[{t:2,x:{r:["data.capacityPercent","data.inputting"],s:'_0>=100?"Fully Charged":_1?"Charging":"Not Charging"'},p:[34,35,1178]}]},"]"]}," ",{p:[36,3,1300],t:7,e:"ui-section",a:{label:"Target Input"},f:[{p:[37,5,1338],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.inputLevelMax",p:[37,26,1359]}],value:[{t:2,r:"data.inputLevel",p:[37,57,1390]}]},f:[{t:2,x:{r:["adata.inputLevel"],s:"Math.round(_0)"},p:[37,78,1411]},"W"]}]}," ",{p:[39,3,1471],t:7,e:"ui-section",a:{label:"Adjust Input"},f:[{p:[40,5,1509],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[40,44,1548]}],action:"input",params:'{"target": "min"}'}}," ",{p:[41,5,1642],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[41,39,1676]}],action:"input",params:'{"adjust": -10000}'}}," ",{p:[42,5,1771],t:7,e:"ui-button",a:{icon:"pencil",action:"input",params:'{"target": "input"}'},f:["Set"]}," ",{p:[43,5,1860],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[43,38,1893]}],action:"input",params:'{"adjust": 10000}'}}," ",{p:[44,5,2004],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[44,43,2042]}],action:"input",params:'{"target": "max"}'}}]}," ",{p:[46,3,2167],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[47,3,2200],t:7,e:"span",f:[{t:2,x:{r:["adata.inputAvailable"],s:"Math.round(_0)"},p:[47,9,2206]},"W"]}]}]}," ",{p:[50,1,2280],t:7,e:"ui-display",a:{title:"Output"},f:[{p:[51,3,2310],t:7,e:"ui-section",a:{label:"Output Mode"},f:[{p:[52,5,2347],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"power-off":"close"'},p:[52,22,2364]}],style:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"selected":null'},p:[52,77,2419]}],action:"tryoutput"},f:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"On":"Off"'},p:[53,26,2488]}]},"   [",{p:[55,6,2554],t:7,e:"span",a:{"class":[{t:2,r:"outputState",p:[55,19,2567]}]},f:[{t:2,x:{r:["data.outputting","data.charge"],s:'_0?"Sending":_1>0?"Not Sending":"No Charge"'},p:[55,36,2584]}]},"]"]}," ",{p:[57,3,2689],t:7,e:"ui-section",a:{label:"Target Output"},f:[{p:[58,5,2728],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.outputLevelMax",p:[58,26,2749]}],value:[{t:2,r:"data.outputLevel",p:[58,58,2781]}]},f:[{t:2,x:{r:["adata.outputLevel"],s:"Math.round(_0)"},p:[58,80,2803]},"W"]}]}," ",{p:[60,3,2864],t:7,e:"ui-section",a:{label:"Adjust Output"},f:[{p:[61,5,2903],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[61,44,2942]}],action:"output",params:'{"target": "min"}'}}," ",{p:[62,5,3038],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[62,39,3072]}],action:"output",params:'{"adjust": -10000}'}}," ",{p:[63,5,3169],t:7,e:"ui-button",a:{icon:"pencil",action:"output",params:'{"target": "input"}'},f:["Set"]}," ",{p:[64,5,3259],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[64,38,3292]}],action:"output",params:'{"adjust": 10000}'}}," ",{p:[65,5,3406],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[65,43,3444]}],action:"output",params:'{"target": "max"}'}}]}," ",{p:[67,3,3572],t:7,e:"ui-section",a:{label:"Outputting"},f:[{p:[68,3,3606],t:7,e:"span",f:[{t:2,x:{r:["adata.outputUsed"],s:"Math.round(_0)"},p:[68,9,3612]},"W"]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],247:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,30],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{t:2,x:{r:["adata.generated"],s:"Math.round(_0)"},p:[3,5,71]},"W"]}," ",{p:[5,3,122],t:7,e:"ui-section",a:{label:"Orientation"},f:[{p:[6,5,159],t:7,e:"span",f:[{t:2,x:{r:["adata.angle"],s:"Math.round(_0)"},p:[6,11,165]},"° (",{t:2,r:"data.direction",p:[6,45,199]},")"]}]}," ",{p:[8,3,244],t:7,e:"ui-section",a:{label:"Adjust Angle"},f:[{p:[9,5,282],t:7,e:"ui-button",a:{icon:"step-backward",action:"angle",params:'{"adjust": -15}'},f:["15°"]}," ",{p:[10,5,378],t:7,e:"ui-button",a:{icon:"backward",action:"angle",params:'{"adjust": -5}'},f:["5°"]}," ",{p:[11,5,467],t:7,e:"ui-button",a:{icon:"forward",action:"angle",params:'{"adjust": 5}'},f:["5°"]}," ",{p:[12,5,554],t:7,e:"ui-button",a:{icon:"step-forward",action:"angle",params:'{"adjust": 15}'},f:["15°"]}]}]}," ",{p:[15,1,673],t:7,e:"ui-display",a:{title:"Tracking"},f:[{p:[16,3,705],t:7,e:"ui-section",a:{label:"Tracker Mode"},f:[{p:[17,5,743],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==0?"selected":null'},p:[17,36,774]}],action:"tracking",params:'{"mode": 0}'},f:["Off"]}," ",{p:[19,5,889],t:7,e:"ui-button",a:{icon:"clock-o",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==1?"selected":null'},p:[19,38,922]}],action:"tracking",params:'{"mode": 1}'},f:["Timed"]}," ",{p:[21,5,1039],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.connected_tracker","data.tracking_state"],s:'_0?_1==2?"selected":null:"disabled"'},p:[21,38,1072]}],action:"tracking",params:'{"mode": 2}'},f:["Auto"]}]}," ",{p:[24,3,1239],t:7,e:"ui-section",a:{label:"Tracking Rate"},f:[{p:[25,3,1276],t:7,e:"span",f:[{t:2,x:{r:["adata.tracking_rate"],s:"Math.round(_0)"},p:[25,9,1282]},"°/h (",{t:2,r:"data.rotating_way",p:[25,53,1326]},")"]}]}," ",{p:[27,3,1373],t:7,e:"ui-section",a:{label:"Adjust Rate"},f:[{p:[28,5,1410],t:7,e:"ui-button",a:{icon:"fast-backward",action:"rate",params:'{"adjust": -180}'},f:["180°"]}," ",{p:[29,5,1507],t:7,e:"ui-button",a:{icon:"step-backward",action:"rate",params:'{"adjust": -30}'},f:["30°"]}," ",{p:[30,5,1602],t:7,e:"ui-button",a:{icon:"backward",action:"rate",params:'{"adjust": -5}'},f:["5°"]}," ",{p:[31,5,1690],t:7,e:"ui-button",a:{icon:"forward",action:"rate",params:'{"adjust": 5}'},f:["5°"]}," ",{p:[32,5,1776],t:7,e:"ui-button",a:{icon:"step-forward",action:"rate",params:'{"adjust": 30}'},f:["30°"]}," ",{p:[33,5,1869],t:7,e:"ui-button",a:{icon:"fast-forward",action:"rate",params:'{"adjust": 180}'},f:["180°"]}]}]}," ",{p:{button:[{p:[38,5,2051],t:7,e:"ui-button",a:{icon:"refresh",action:"refresh"},f:["Refresh"]}]},t:7,e:"ui-display",a:{title:"Devices",button:0},f:[" ",{p:[40,2,2130],t:7,e:"ui-section",a:{label:"Solar Tracker"},f:[{p:[41,5,2169],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_tracker"],s:'_0?"good":"bad"'},p:[41,18,2182]}]},f:[{t:2,x:{r:["data.connected_tracker"],s:'_0?"":"Not "'},p:[41,63,2227]},"Found"]}]}," ",{p:[43,2,2296],t:7,e:"ui-section",a:{label:"Solar Panels"},f:[{p:[44,3,2332],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_panels"],s:'_0?"good":"bad"'},p:[44,16,2345]}]},f:[{t:2,x:{r:["adata.connected_panels"],s:"Math.round(_0)"},p:[44,60,2389]}," Panels Connected"]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],248:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:{button:[{t:4,f:[{p:[4,7,84],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.hasPowercell"],s:'_0?null:"disabled"'},p:[4,38,115]}],action:"eject"},f:["Eject"]}],n:50,r:"data.open",p:[3,5,60]}]},t:7,e:"ui-display",a:{title:"Power",button:0},f:[" ",{p:[7,3,220],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[8,5,251],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[8,22,268]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[9,14,318]}],state:[{t:2,x:{r:["data.hasPowercell"],s:'_0?null:"disabled"'},p:[9,54,358]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[10,22,422]}]}]}," ",{p:[12,3,479],t:7,e:"ui-section",a:{label:"Cell"},f:[{t:4,f:[{p:[14,7,541],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerLevel",p:[14,40,574]}]},f:[{t:2,x:{r:["adata.powerLevel"],s:"Math.fixed(_0)"},p:[14,61,595]},"%"]}],n:50,r:"data.hasPowercell",p:[13,5,509]},{t:4,n:51,f:[{p:[16,4,652],t:7,e:"span",a:{"class":"bad"},f:["No Cell"]}],r:"data.hasPowercell"}]}]}," ",{p:[20,1,725],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[21,3,759],t:7,e:"ui-section",a:{label:"Current Temperature"},f:[{p:[22,3,802],t:7,e:"span",f:[{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[22,9,808]},"°C"]}]}," ",{p:[24,2,871],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[25,3,913],t:7,e:"span",f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[25,9,919]},"°C"]}]}," ",{t:4,f:[{p:[28,5,1004],t:7,e:"ui-section",a:{label:"Adjust Target"},f:[{p:[29,7,1045],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[29,46,1084]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[30,7,1189],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[30,41,1223]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[31,7,1327],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:["Set"]}," ",{p:[32,7,1419],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[32,40,1452]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[33,7,1555],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[33,45,1593]}],action:"target",params:'{"adjust": 20}'}}]}],n:50,r:"data.open",p:[27,3,982]}," ",{p:[36,3,1719],t:7,e:"ui-section",a:{label:"Mode"},f:[{t:4,f:[{p:[38,7,1771],t:7,e:"ui-button",a:{icon:"long-arrow-up",state:[{t:2,x:{r:["data.mode"],s:'_0=="heat"?"selected":null'},p:[38,46,1810]}],action:"mode",params:'{"mode": "heat"}'},f:["Heat"]}," ",{p:[39,7,1918],t:7,e:"ui-button",a:{icon:"long-arrow-down",state:[{t:2,x:{r:["data.mode"],s:'_0=="cool"?"selected":null'},p:[39,48,1959]}],action:"mode",params:'{"mode": "cool"}'},f:["Cool"]}," ",{p:[40,7,2067],t:7,e:"ui-button",a:{icon:"arrows-v",state:[{t:2,x:{r:["data.mode"],s:'_0=="auto"?"selected":null'},p:[40,41,2101]}],action:"mode",params:'{"mode": "auto"}'},f:["Auto"]}],n:50,r:"data.open",p:[37,3,1747]},{t:4,n:51,f:[{p:[42,4,2217],t:7,e:"span",f:[{t:2,x:{r:["text","data.mode"],s:"_0.titleCase(_1)"},p:[42,10,2223]}]}],r:"data.open"}]}]}]},e.exports=r.extend(i.exports)},{203:203}],249:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{t:4,f:[{p:[2,3,31],t:7,e:"ui-display",a:{title:[{t:2,r:"class",p:[2,22,50]}," Alarms"]},f:[{p:[3,5,74],t:7,e:"ul",f:[{t:4,f:[{p:[5,9,107],t:7,e:"li",f:[{t:2,r:".",p:[5,13,111]}]}],n:52,r:".",p:[4,7,86]},{t:4,n:51,f:[{p:[7,9,147],t:7,e:"li",f:["System Nominal"]}],r:"."}]}]}],n:52,i:"class",r:"data.alarms",p:[1,1,0]}]},e.exports=r.extend(i.exports)},{203:203}],250:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{t:4,f:[{p:[2,3,41],t:7,e:"ui-notice",f:[{p:[3,5,57],t:7,e:"span",f:["Biological entity detected in contents. Please remove."]}]}],n:50,x:{r:["data.occupied","data.safeties"],s:"_0&&_1"},p:[1,1,0]},{t:4,f:[{p:[7,3,173],t:7,e:"ui-notice",f:[{p:[8,5,189],t:7,e:"span",f:["Contents are being disinfected. Please wait."]}]}],n:50,r:"data.uv_active",p:[6,1,148]},{t:4,n:51,f:[{p:{button:[{t:4,f:[{p:[13,25,357],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[13,42,374]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Unlock":"Lock"'},p:[13,93,425]}]}],n:50,x:{r:["data.open"],s:"!_0"},p:[13,7,339]}," ",{t:4,f:[{p:[14,27,506],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"sign-out":"sign-in"'},p:[14,44,523]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Close":"Open"'},p:[14,98,577]}]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[14,7,486]}]},t:7,e:"ui-display",a:{title:"Storage",button:0},f:[" ",{t:4,f:[{p:[17,7,676],t:7,e:"ui-notice",f:[{p:[18,9,696],t:7,e:"span",f:["Unit Locked"]}]}],n:50,r:"data.locked",p:[16,5,650]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.open"],s:"_0"},f:[{p:[21,9,773],t:7,e:"ui-section",a:{label:"Helmet"},f:[{p:[22,11,811],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.helmet"],s:'_0?"square":"square-o"'},p:[22,28,828]}],state:[{t:2,x:{r:["data.helmet"],s:'_0?null:"disabled"'},p:[22,75,875]}],action:"dispense",params:'{"item": "helmet"}'},f:[{t:2,x:{r:["data.helmet"],s:'_0||"Empty"'},p:[23,59,970]}]}]}," ",{p:[25,9,1039],t:7,e:"ui-section",a:{label:"Suit"},f:[{p:[26,11,1075],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.suit"],s:'_0?"square":"square-o"'},p:[26,28,1092]}],state:[{t:2,x:{r:["data.suit"],s:'_0?null:"disabled"'},p:[26,74,1138]}],action:"dispense",params:'{"item": "suit"}'},f:[{t:2,x:{r:["data.suit"],s:'_0||"Empty"'},p:[27,57,1229]}]}]}," ",{p:[29,9,1296],t:7,e:"ui-section",a:{label:"Mask"},f:[{p:[30,11,1332],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mask"],s:'_0?"square":"square-o"'},p:[30,28,1349]}],state:[{t:2,x:{r:["data.mask"],s:'_0?null:"disabled"'},p:[30,74,1395]}],action:"dispense",params:'{"item": "mask"}'},f:[{t:2,x:{r:["data.mask"],s:'_0||"Empty"'},p:[31,57,1486]}]}]}," ",{p:[33,9,1553],t:7,e:"ui-section",a:{label:"Storage"},f:[{p:[34,11,1592],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.storage"],s:'_0?"square":"square-o"'},p:[34,28,1609]}],state:[{t:2,x:{r:["data.storage"],s:'_0?null:"disabled"'},p:[34,77,1658]}],action:"dispense",params:'{"item": "storage"}'},f:[{t:2,x:{r:["data.storage"],s:'_0||"Empty"'},p:[35,60,1755]}]}]}]},{t:4,n:50,x:{r:["data.open"],s:"!(_0)"},f:[" ",{p:[38,7,1836],t:7,e:"ui-button",a:{icon:"recycle",state:[{t:2,x:{r:["data.occupied","data.safeties"],s:'_0&&_1?"disabled":null'},p:[38,40,1869]}],action:"uv"},f:["Disinfect"]}]}],r:"data.locked"}]}],r:"data.uv_active"}]},e.exports=r.extend(i.exports)},{203:203}],251:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,5,18],t:7,e:"ui-section",a:{label:"Dispense"},f:[{p:[3,9,57],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.plasma"],s:'_0?"square":"square-o"'},p:[3,26,74]}],state:[{t:2,x:{r:["data.plasma"],s:'_0?null:"disabled"'},p:[3,74,122]}],action:"plasma"},f:["Plasma (",{t:2,x:{r:["adata.plasma"],s:"Math.round(_0)"},p:[4,37,196]},")"]}," ",{p:[5,9,247],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oxygen"],s:'_0?"square":"square-o"'},p:[5,26,264]}],state:[{t:2,x:{r:["data.oxygen"],s:'_0?null:"disabled"'},p:[5,74,312]}],action:"oxygen"},f:["Oxygen (",{t:2,x:{r:["adata.oxygen"],s:"Math.round(_0)"},p:[6,37,386]},")"]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],252:[function(t,e,n){var r=t(203),i={exports:{}};!function(t){"use strict";t.exports={computed:{tankPressureState:function(){var t=this.get("data.tankPressure");return t>=200?"good":t>=100?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[14,1,282],t:7,e:"ui-notice",f:[{p:[15,3,296],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.maskConnected"],s:'_0?"is":"is not"'},p:[15,23,316]}," connected to a mask."]}]}," ",{p:[17,1,398],t:7,e:"ui-display",f:[{p:[18,3,413],t:7,e:"ui-section",a:{label:"Tank Pressure"},f:[{p:[19,7,454],t:7,e:"ui-bar",a:{min:"0",max:"1013",value:[{t:2,r:"data.tankPressure",p:[19,41,488]}],state:[{t:2,r:"tankPressureState",p:[20,16,526]}]},f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[20,39,549]}," kPa"]}]}," ",{p:[22,3,615],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[23,5,657],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[23,18,670]}],max:[{t:2,r:"data.maxReleasePressure",p:[23,52,704]}],value:[{t:2,r:"data.releasePressure",p:[24,14,746]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[24,40,772]}," kPa"]}]}," ",{p:[26,3,841],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[27,5,885],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[27,38,918]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[29,5,1072],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[29,36,1103]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1248],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1342],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1372]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[35,3,1531],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[36,5,1562],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[36,22,1579]}],state:[{t:2,x:{r:["data.maskConnected"],s:'_0?null:"disabled"'},p:[36,69,1626]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[37,22,1691]}]}]}]}]},e.exports=r.extend(i.exports)},{203:203}],253:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,5,33],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[3,9,75],t:7,e:"span",f:[{t:2,x:{r:["adata.temperature"],s:"Math.fixed(_0,2)"},p:[3,15,81]}," K"]}]}," ",{p:[5,5,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,9,190],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.fixed(_0,2)"},p:[6,15,196]}," kPa"]}]}]}," ",{p:[9,1,276],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[10,5,311],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[11,9,347],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[11,26,364]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[11,70,408]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[12,28,469]}]}]}," ",{p:[14,5,531],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[15,9,580],t:7,e:"ui-button",a:{icon:"fast-backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'}, +p:[15,48,619]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[17,9,733],t:7,e:"ui-button",a:{icon:"backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[17,43,767]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[19,9,880],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:[{t:2,x:{r:["adata.target"],s:"Math.fixed(_0,2)"},p:[19,79,950]}]}," ",{p:[20,9,1003],t:7,e:"ui-button",a:{icon:"forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[20,42,1036]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[22,9,1148],t:7,e:"ui-button",a:{icon:"fast-forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[22,47,1186]}],action:"target",params:'{"adjust": 20}'}}]}]}]},e.exports=r.extend(i.exports)},{203:203}],254:[function(t,e,n){var r=t(203),i={exports:{}};!function(e){"use strict";var n=t(261);e.exports={data:{filter:""},oninit:function(){var t=this;this.on({hover:function(t){var e=this.get("data.telecrystals");e>=t.context.params.cost&&this.set("hovered",t.context.params)},unhover:function(t){this.set("hovered")}}),this.observe("filter",function(e,r,i){var a=t.findAll(".display:not(:first-child)");(0,n.filterMulti)(a,t.get("filter").toLowerCase())},{init:!1})}}}(i),i.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[29,7,770],t:7,e:"ui-input",a:{value:[{t:2,r:"filter",p:[29,24,787]}],placeholder:"Filter..."}}],n:50,r:"config.fancy",p:[28,5,742]}," ",{t:4,f:[{p:[32,7,872],t:7,e:"ui-button",a:{icon:"lock",action:"lock"},f:["Lock"]}],n:50,r:"data.lockable",p:[31,5,843]}]},t:7,e:"ui-display",a:{title:"Uplink",button:0},f:[" ",{p:[35,3,958],t:7,e:"ui-section",a:{label:"Telecrystals",right:0},f:[{p:[36,5,1003],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.telecrystals"],s:'_0>0?"good":"bad"'},p:[36,18,1016]}]},f:[{t:2,r:"data.telecrystals",p:[36,62,1060]}," TC"]}]}]}," ",{t:4,f:[{p:[40,3,1154],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[40,22,1173]}]},f:[{t:4,f:[{p:[42,7,1212],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[42,26,1231]}],candystripe:0,right:0},f:[{p:[43,9,1269],t:7,e:"ui-button",a:{tooltip:[{t:2,r:"name",p:[43,29,1289]},": ",{t:2,r:"desc",p:[43,39,1299]}],"tooltip-side":"left",state:[{t:2,x:{r:["data.telecrystals","hovered.cost","cost","hovered.item","name"],s:'_0<_2||(_0-_1<_2&&_3!=_4)?"disabled":null'},p:[44,18,1347]}],action:"buy",params:['{"category": "',{t:2,r:"category",p:[45,46,1512]},'", "item": ',{t:2,r:"name",p:[45,69,1535]},', "cost": ',{t:2,r:"cost",p:[45,87,1553]},"}"]},v:{hover:"hover",unhover:"unhover"},f:[{t:2,r:"cost",p:[46,49,1613]}," TC"]}]}],n:52,r:"items",p:[41,5,1189]}]}],n:52,r:"data.categories",p:[39,1,1125]}]},e.exports=r.extend(i.exports)},{203:203,261:261}],255:[function(t,e,n){var r=t(203),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{t:4,f:[{p:[3,5,40],t:7,e:"ui-section",a:{label:[{t:2,r:"color",p:[3,24,59]},{t:2,x:{r:["wire"],s:'_0?" ("+_0+")":""'},p:[3,33,68]}],labelcolor:[{t:2,r:"color",p:[3,80,115]}],candystripe:0,right:0},f:[{p:[4,7,151],t:7,e:"ui-button",a:{action:"cut",params:['{"wire":"',{t:2,r:"color",p:[4,48,192]},'"}']},f:[{t:2,x:{r:["cut"],s:'_0?"Mend":"Cut"'},p:[4,61,205]}]}," ",{p:[5,7,248],t:7,e:"ui-button",a:{action:"pulse",params:['{"wire":"',{t:2,r:"color",p:[5,50,291]},'"}']},f:["Pulse"]}," ",{p:[6,7,328],t:7,e:"ui-button",a:{action:"attach",params:['{"wire":"',{t:2,r:"color",p:[6,51,372]},'"}']},f:[{t:2,x:{r:["attached"],s:'_0?"Detach":"Attach"'},p:[6,64,385]}]}]}],n:52,r:"data.wires",p:[2,3,15]}]}," ",{t:4,f:[{p:[11,3,498],t:7,e:"ui-display",f:[{t:4,f:[{p:[13,7,543],t:7,e:"ui-section",f:[{t:2,r:".",p:[13,19,555]}]}],n:52,r:"data.status",p:[12,5,515]}]}],n:50,r:"data.status",p:[10,1,476]}]},e.exports=r.extend(i.exports)},{203:203}],256:[function(t,e,n){(function(e){"use strict";var n=t(203),r=e.interopRequireDefault(n);t(192),t(1),t(190),t(191);var i=t(257),a=e.interopRequireDefault(i),o=t(258),s=t(204),u=e.interopRequireDefault(s);r["default"].DEBUG=/minified/.test(function(){}),Object.assign(Math,t(262)),window.initialize=function(e){window.tgui||(window.tgui=new a["default"]({el:"#container",data:function(){var n=JSON.parse(e);return{constants:t(259),text:t(263),config:n.config,data:n.data,adata:n.data}}}),window.initialize=function(){})};var c=document.getElementById("data"),l=c.textContent,p=c.getAttribute("data-ref");"{}"!==l&&(window.initialize(l),c.remove()),(0,o.act)(p,"tgui:initialize"),u["default"].load({custom:{families:["FontAwesome"],urls:["https://netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"],testStrings:{FontAwesome:""}}})}).call(this,t("babel/external-helpers"))},{1:1,190:190,191:191,192:192,203:203,204:204,257:257,258:258,259:259,262:262,263:263,"babel/external-helpers":"babel/external-helpers"}],257:[function(t,e,n){var r=t(203),i={exports:{}};!function(e){"use strict";var n=t(258),r=t(260);e.exports={components:{"ui-bar":t(205),"ui-button":t(206),"ui-display":t(207),"ui-input":t(208),"ui-linegraph":t(209),"ui-notice":t(210),"ui-section":t(212),"ui-subdisplay":t(213)},events:{enter:t(201).enter,space:t(201).space},transitions:{fade:t(202)},onconfig:function(){var e=this.get("config.interface"),n={airalarm:t(216),"airalarm/back":t(217),"airalarm/modes":t(218),"airalarm/scrubbers":t(219),"airalarm/status":t(220),"airalarm/thresholds":t(221),"airalarm/vents":t(222),airlock_electronics:t(223),apc:t(224),atmos_alert:t(225),atmos_control:t(226),atmos_filter:t(227),atmos_mixer:t(228),atmos_pump:t(229),brig_timer:t(230),canister:t(231),cargo:t(232),chem_dispenser:t(233),chem_heater:t(234),cryo:t(235),error:t(236),firealarm:t(237),intellicard:t(238),keycard_auth:t(239),mulebot:t(240),portable_pump:t(241),portable_scrubber:t(242),power_monitor:t(243),radio:t(244),sleeper:t(245),smes:t(246),solar_control:t(247),space_heater:t(248),station_alert:t(249),suit_storage_unit:t(250),tank_dispenser:t(251),tanks:t(252),thermomachine:t(253),uplink:t(254),wires:t(255)};e in n?this.components["interface"]=n[e]:this.components["interface"]=n.error},oninit:function(){var t=this;this.observe("config.style",function(t,e,n){t&&document.body.classList.add(t),e&&document.body.classList.remove(e)}),this.on("titlebar.drag",function(){return t.toggle("drag"),!1}),this.on("resize.resize",function(){return t.toggle("resize"),!1}),document.addEventListener("mousemove",function(e){t.get("drag")?r.drag.bind(t)(e):t.get("resize")&&r.resize.bind(t)(e)}),document.addEventListener("mouseup",function(e){t.set({drag:!1,resize:!1,x:null,y:null})})},oncomplete:function(){if(this.get("config.locked")){var t=(0,r.lock)(window.screenLeft,window.screenTop),e=t.x,i=t.y;(0,n.winset)(this.get("config.window"),"pos",e+","+i)}(0,n.winset)("mapwindow.map","focus",!0)}}}(i),i.exports.template={v:3,t:[" "," "," "," ",{p:[72,1,2296],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[72,11,2306]}]}," ",{p:[73,1,2336],t:7,e:"main",f:[{p:[74,3,2345],t:7,e:"warnings"}," ",{p:[75,3,2359],t:7,e:"interface"}]}," ",{p:[77,1,2380],t:7,e:"resize"}]},i.exports.components=i.exports.components||{};var a={warnings:t(215),titlebar:t(214),resize:t(211)};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{201:201,202:202,203:203,205:205,206:206,207:207,208:208,209:209,210:210,211:211,212:212,213:213,214:214,215:215,216:216,217:217,218:218,219:219,220:220,221:221,222:222,223:223,224:224,225:225,226:226,227:227,228:228,229:229,230:230,231:231,232:232,233:233,234:234,235:235,236:236,237:237,238:238,239:239,240:240,241:241,242:242,243:243,244:244,245:245,246:246,247:247,248:248,249:249,250:250,251:251,252:252,253:253,254:254,255:255,258:258,260:260}],258:[function(t,e,n){"use strict";function r(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=arguments.length<=1||void 0===arguments[1]?"":arguments[1];return"byond://"+e+"?"+Object.keys(t).map(function(e){return o(e)+"="+o(t[e])}).join("&")}function i(t,e){var n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];window.location.href=r(Object.assign({src:t,action:e},n))}function a(t,e,n){var i;window.location.href=r((i={},i[t+"."+e]=n,i),"winset")}n.__esModule=!0,n.href=r,n.act=i,n.winset=a;var o=encodeURIComponent},{}],259:[function(t,e,n){"use strict";n.__esModule=!0;n.UI_INTERACTIVE=2,n.UI_UPDATE=1,n.UI_DISABLED=0,n.UI_CLOSE=-1},{}],260:[function(t,e,n){"use strict";function r(t,e){return 0>t?t=0:t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth),0>e?e=0:e+window.innerHeight>window.screen.availHeight&&(e=window.screen.availHeight-window.innerHeight),{x:t,y:e}}function i(t){if(t.preventDefault(),this.get("x")){var e=t.screenX-this.get("x")+window.screenLeft,n=t.screenY-this.get("y")+window.screenTop;if(this.get("config.locked")){var i=r(e,n);e=i.x,n=i.y}(0,s.winset)(this.get("config.window"),"pos",e+","+n)}this.set({x:t.screenX,y:t.screenY})}function a(t,e){return t=Math.clamp(100,window.screen.width,t),e=Math.clamp(100,window.screen.height,e),{x:t,y:e}}function o(t){if(t.preventDefault(),this.get("x")){var e=t.screenX-this.get("x")+window.innerWidth,n=t.screenY-this.get("y")+window.innerHeight,r=a(e,n);e=r.x,n=r.y,(0,s.winset)(this.get("config.window"),"size",e+","+n)}this.set({x:t.screenX,y:t.screenY})}n.__esModule=!0,n.lock=r,n.drag=i,n.sane=a,n.resize=o;var s=t(258)},{258:258}],261:[function(t,e,n){"use strict";function r(t,e){for(var n=t,r=Array.isArray(n),a=0,n=r?n:n[Symbol.iterator]();;){var o;if(r){if(a>=n.length)break;o=n[a++]}else{if(a=n.next(),a.done)break;o=a.value}var s=o;s.textContent.toLowerCase().includes(e)?(s.style.display="",i(s,e)):s.style.display="none"}}function i(t,e){for(var n=t.queryAll("section"),r=t.query("header").textContent.toLowerCase().includes(e),i=n,a=Array.isArray(i),o=0,i=a?i:i[Symbol.iterator]();;){var s;if(a){if(o>=i.length)break;s=i[o++]}else{if(o=i.next(),o.done)break;s=o.value}var u=s;r||u.textContent.toLowerCase().includes(e)?u.style.display="":u.style.display="none"}}n.__esModule=!0,n.filterMulti=r,n.filter=i},{}],262:[function(t,e,n){"use strict";function r(t,e,n){return Math.max(t,Math.min(n,e))}function i(t){var e=arguments.length<=1||void 0===arguments[1]?1:arguments[1];return+(Math.round(t+"e"+e)+"e-"+e)}n.__esModule=!0,n.clamp=r,n.fixed=i},{}],263:[function(t,e,n){"use strict";function r(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()}function i(t){return t.replace(/\w\S*/g,r)}function a(t,e){for(t=""+t;t.length1){for(var u=Array(o),c=0;o>c;c++)u[c]=arguments[c+3];n.children=u}return{$$typeof:t,type:e,key:void 0===r?null:""+r,ref:null,props:n,_owner:null}}}(),e.asyncToGenerator=function(t){return function(){var e=t.apply(this,arguments);return new Promise(function(t,n){function r(i,a){try{var o=e[i](a),s=o.value}catch(u){return void n(u)}return o.done?void t(s):Promise.resolve(s).then(function(t){return r("next",t)},function(t){return r("throw",t)})}return r("next")})}},e.classCallCheck=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},e.createClass=function(){function t(t,e){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n},e.possibleConstructorReturn=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},e.selfGlobal=void 0===t?self:t,e.set=function r(t,e,n,i){var a=Object.getOwnPropertyDescriptor(t,e);if(void 0===a){var o=Object.getPrototypeOf(t);null!==o&&r(o,e,n,i)}else if("value"in a&&a.writable)a.value=n;else{var s=a.set;void 0!==s&&s.call(i,n)}return n},e.slicedToArray=function(){function t(t,e){var n=[],r=!0,i=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);r=!0);}catch(u){i=!0,a=u}finally{try{!r&&s["return"]&&s["return"]()}finally{if(i)throw a}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),e.slicedToArrayLoose=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){for(var n,r=[],i=t[Symbol.iterator]();!(n=i.next()).done&&(r.push(n.value),!e||r.length!==e););return r}throw new TypeError("Invalid attempt to destructure non-iterable instance")},e.taggedTemplateLiteral=function(t,e){return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))},e.taggedTemplateLiteralLoose=function(t,e){return t.raw=e,t},e.temporalRef=function(t,e,n){if(t===n)throw new ReferenceError(e+" is not defined - temporal dead zone");return t},e.temporalUndefined={},e.toArray=function(t){return Array.isArray(t)?t:Array.from(t)},e.toConsumableArray=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e#{{id}}
    {{object}}
    {{cost}} Points
    -
    By {{orderedby}}
    -
    Comment: {{comment}}
    +
    By {{orderer}}
    +
    Comment: {{reason}}
    {{#if !data.requestonly}}
    From 97b7cf50bb616e28288d7852f004fa9dcddc360a Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Sun, 7 Feb 2016 05:01:53 -0600 Subject: [PATCH 053/142] Fix crates on other maps --- _maps/map_files/BirdStation/BirdStation.dmm | 4 +-- _maps/map_files/MiniStation/supplypacks.dm | 31 ++++++++++----------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/_maps/map_files/BirdStation/BirdStation.dmm b/_maps/map_files/BirdStation/BirdStation.dmm index 654f570eaf9..0f8a0549a9f 100644 --- a/_maps/map_files/BirdStation/BirdStation.dmm +++ b/_maps/map_files/BirdStation/BirdStation.dmm @@ -2374,7 +2374,7 @@ "aTJ" = (/obj/structure/bed,/obj/item/clothing/suit/apron/chef,/obj/item/clothing/suit/apron/chef,/turf/simulated/floor/plasteel/white,/area/maintenance/asmaint2) "aTK" = (/turf/simulated/wall,/area/hallway/primary/aft{name = "\improper South Hallway"}) "aTL" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) -"aTM" = (/obj/structure/closet/crate/hydroponics/prespawned,/obj/item/weapon/shovel/spade,/obj/item/weapon/wrench,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/wirecutters,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/twohanded/required/chainsaw,/turf/simulated/floor/plasteel/whitegreen/side{icon_state = "whitegreen"; dir = 9},/area/hydroponics) +"aTM" = (/obj/structure/closet/crate/hydroponics,/obj/item/weapon/shovel/spade,/obj/item/weapon/wrench,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/wirecutters,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/twohanded/required/chainsaw,/turf/simulated/floor/plasteel/whitegreen/side{icon_state = "whitegreen"; dir = 9},/area/hydroponics) "aTN" = (/obj/machinery/atmospherics/pipe/simple/cyan/hidden{icon_state = "intact"; dir = 4},/turf/simulated/floor/plasteel,/area/toxins/misc_lab) "aTO" = (/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,/turf/simulated/floor/plasteel,/area/toxins/misc_lab) "aTP" = (/obj/effect/landmark/start{name = "Scientist"},/obj/machinery/atmospherics/pipe/simple/cyan/hidden{icon_state = "intact"; dir = 4},/turf/simulated/floor/plasteel,/area/toxins/misc_lab) @@ -2653,7 +2653,7 @@ "aZc" = (/obj/machinery/biogenerator,/turf/simulated/floor/plasteel/white,/area/maintenance/fore{name = "Security Maintenance"}) "aZd" = (/obj/machinery/seed_extractor,/turf/simulated/floor/plasteel/white,/area/maintenance/fore{name = "Security Maintenance"}) "aZe" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/item/weapon/reagent_containers/spray/plantbgone,/turf/simulated/floor/plasteel/white,/area/maintenance/fore{name = "Security Maintenance"}) -"aZf" = (/obj/structure/closet/crate/secure/hydrosec{req_access_txt = "35"},/obj/item/seeds/kudzuseed{potency = 0; production = 8},/obj/item/seeds/chilighost,/obj/item/seeds/deathberryseed,/obj/item/device/gps,/turf/simulated/floor/plasteel/white,/area/maintenance/fore{name = "Security Maintenance"}) +"aZf" = (/obj/structure/closet/crate/secure/hydroponics{req_access_txt = "35"},/obj/item/seeds/kudzuseed{potency = 0; production = 8},/obj/item/seeds/chilighost,/obj/item/seeds/deathberryseed,/obj/item/device/gps,/turf/simulated/floor/plasteel/white,/area/maintenance/fore{name = "Security Maintenance"}) "aZg" = (/obj/structure/cable/cyan{icon_state = "1-2"},/obj/machinery/camera/autoname{icon_state = "camera"; dir = 5},/turf/simulated/floor/wood,/area/security/brig) "aZh" = (/obj/structure/closet/secure_closet/detective,/obj/item/device/camera/detective,/turf/simulated/floor/wood,/area/security/brig) "aZi" = (/obj/structure/table/wood,/turf/simulated/floor/wood,/area/security/brig) diff --git a/_maps/map_files/MiniStation/supplypacks.dm b/_maps/map_files/MiniStation/supplypacks.dm index 8bfe0e285b1..dc7900c0ff1 100644 --- a/_maps/map_files/MiniStation/supplypacks.dm +++ b/_maps/map_files/MiniStation/supplypacks.dm @@ -1,31 +1,30 @@ /datum/supply_packs/engineering/oxygen name = "Oxygen Canister" - contains = list(/obj/machinery/portable_atmospherics/canister/oxygen) cost = 15 - containertype = /obj/structure/closet/crate/large - containername = "oxygen canister crate" + contains = list(/obj/machinery/portable_atmospherics/canister/oxygen) + crate_name = "oxygen canister crate" + crate_type = /obj/structure/closet/crate/large /datum/supply_packs/engineering/toxins - name = "Toxins Canister" - contains = list(/obj/machinery/portable_atmospherics/canister/toxins) + name = "Plasma Canister" cost = 30 - containertype = /obj/structure/closet/crate/large - containername = "toxins canister crate" + contains = list(/obj/machinery/portable_atmospherics/canister/toxins) + crate_name = "plasma canister crate" + crate_type = /obj/structure/closet/crate/large /datum/supply_packs/engineering/nitrogen name = "Nitrogen Canister" - contains = list(/obj/machinery/portable_atmospherics/canister/nitrogen) cost = 20 - containertype = /obj/structure/closet/crate/large - containername = "nitrogen canister crate" + contains = list(/obj/machinery/portable_atmospherics/canister/nitrogen) + crate_name = "nitrogen canister crate" + crate_type = /obj/structure/closet/crate/large /datum/supply_packs/engineering/carbon_dio name = "Carbon Dioxide Canister" - contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide) cost = 35 - containertype = /obj/structure/closet/crate/large - containername = "carbon dioxide canister crate" - + contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide) + crate_name = "carbon dioxide canister crate" + crate_type = /obj/structure/closet/crate/large /obj/machinery/hydroponics/constructable/unattached anchored = 0 @@ -34,5 +33,5 @@ name = "Hydroponics Tray Kit" contains = list(/obj/machinery/hydroponics/constructable/unattached) cost = 10 - containertype = /obj/structure/closet/crate/large - containername = "hydroponics kit" \ No newline at end of file + crate_name = "hydroponics kit" + crate_type = /obj/structure/closet/crate/large \ No newline at end of file From ed47afaa05ebc1303390eda4a5b7cc70a193c148 Mon Sep 17 00:00:00 2001 From: AnturK Date: Sun, 7 Feb 2016 13:18:10 +0100 Subject: [PATCH 054/142] Fixes crayon/spraycan buffer mode. --- code/__HELPERS/text.dm | 5 +++++ code/game/objects/items/toys.dm | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index ddaf73e00ea..ac392a72090 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -420,3 +420,8 @@ var/list/binary = list("0","1") t = replacetext(t, "\[/list\]", "") return t + +/proc/char_split(t) + . = list() + for(var/x in 1 to length(t)) + . += copytext(t,x,x+1) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 390ab2612bd..7ab9b6001ac 100755 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -384,12 +384,12 @@ dat = "" /obj/item/toy/crayon/proc/crayon_text_strip(text) - var/list/base = splittext(lowertext(text),"") + var/list/base = char_split(lowertext(text)) var/list/out = list() for(var/a in base) if(a in (letters|numerals)) out += a - return jointext(out, null) + return jointext(out,"") /obj/item/toy/crayon/Topic(href, href_list, hsrc) var/temp = "a" From 7ec90c686abd4b1f9a598c452ef36e8f7d6b178e Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Sun, 7 Feb 2016 16:08:14 +0000 Subject: [PATCH 055/142] Automatic changelog generation for PR #14947 --- html/changelogs/AutoChangeLog-pr-14947.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-14947.yml diff --git a/html/changelogs/AutoChangeLog-pr-14947.yml b/html/changelogs/AutoChangeLog-pr-14947.yml new file mode 100644 index 00000000000..a9a39045a10 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-14947.yml @@ -0,0 +1,4 @@ +author: Kor +delete-after: True +changes: + - rscadd: "A certain hygiene obsessed alien is now obtainable via xenobiology gold cores." From 164335ee8c113768ae5d9742a44d23eb406210bc Mon Sep 17 00:00:00 2001 From: Tkdrg Date: Sun, 7 Feb 2016 14:17:48 -0300 Subject: [PATCH 056/142] Adds a minimum account age for drones Currently two weeks. Experience on basil has proven the need for this. --- .../simple_animal/friendly/drone/drones_as_items.dm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm index 1b611d1da57..f42d394094f 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm @@ -1,3 +1,4 @@ +#define DRONE_MINIMUM_AGE 14 /////////////////// //DRONES AS ITEMS// @@ -24,6 +25,12 @@ /obj/item/drone_shell/attack_ghost(mob/user) if(jobban_isbanned(user,"drone")) return + if(config.use_age_restriction_for_jobs) + if(!isnum(user.client.player_age)) //apparently what happens when there's no DB connected. just don't let anybody be a drone without admin intervention + return + if(user.client.player_age < DRONE_MINIMUM_AGE) + user << "You're too new to play as a drone! Please try again in [DRONE_MINIMUM_AGE - user.client.player_age] days." + return if(!ticker.mode) user << "Can't become a drone before the game has started." return @@ -74,4 +81,4 @@ if(!D) return icon_state = "[D.visualAppearence]_hat" - . = icon_state \ No newline at end of file + . = icon_state From 3ffee29ba7fa1a6893c5e0a2ea38161604369d76 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sun, 7 Feb 2016 11:29:31 -0600 Subject: [PATCH 057/142] Adds a missing \ --- code/modules/mob/living/simple_animal/hostile/alien.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 9e249e362d4..f894280a8cb 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -172,5 +172,5 @@ return var/atom/movable/M = target M.clean_blood() - visible_message("[src] polishes the [target].") + visible_message("[src] polishes \the [target].") From 867eefc24080d1bac15f05edd2162c89cddcccaa Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sun, 7 Feb 2016 11:32:40 -0600 Subject: [PATCH 058/142] Adds a second missing \ --- code/modules/mob/living/simple_animal/hostile/alien.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index f894280a8cb..c91631ef175 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -167,7 +167,7 @@ /mob/living/simple_animal/hostile/alien/maid/AttackingTarget() if(istype(target, /atom/movable)) if(istype(target, /obj/effect/decal/cleanable)) - visible_message("[src] cleans up the [target].") + visible_message("[src] cleans up \the [target].") qdel(target) return var/atom/movable/M = target From fc8c1f93b7fde2bd75909d1fa99fdac7b404075a Mon Sep 17 00:00:00 2001 From: phil235 Date: Sun, 7 Feb 2016 19:01:09 +0100 Subject: [PATCH 059/142] Fixes vision not being correctly updated in some cases when ghosting. --- code/modules/mob/login.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index b0b37ca266b..ed0e6f7dac4 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -30,6 +30,7 @@ update_Login_details() world.update_status() client.screen = list() //remove hud items just in case + client.images = list() if(!hud_used) create_mob_hud() From a785d71e7ecbe1067d9ce0712f8188603296ced6 Mon Sep 17 00:00:00 2001 From: phil235 Date: Sun, 7 Feb 2016 20:12:23 +0100 Subject: [PATCH 060/142] Fixes staminaloss going too high. Fixes hud internals not updating correctly. --- code/modules/mob/living/carbon/carbon.dm | 2 +- code/modules/mob/living/living.dm | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 57bcc2efceb..72ed1487238 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -851,7 +851,7 @@ var/const/GALOSHES_DONT_HELP = 4 /mob/living/carbon/proc/update_internals_hud_icon(internal_state = 0) if(hud_used && hud_used.internals) - hud_used.internals = "internal[internal_state]" + hud_used.internals.icon_state = "internal[internal_state]" /mob/living/carbon/update_stat() if(status_flags & GODMODE) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 0208282e7fa..eecc8028e3a 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -961,6 +961,7 @@ Sorry Giacom. Please don't be mad :( if(total_health <= config.health_threshold_crit && !stat) src << "You're too exhausted to keep going..." Weaken(5) + setStaminaLoss(health - 2) update_health_hud() /mob/proc/update_sight() From 6261120ad49f2c4b852af775475263e7b436a8b7 Mon Sep 17 00:00:00 2001 From: duncathan salt Date: Sun, 7 Feb 2016 13:57:42 -0600 Subject: [PATCH 061/142] hopefully speeds up share() --- .../atmospherics/gasmixtures/gas_mixture.dm | 61 ++++++++++++------- 1 file changed, 40 insertions(+), 21 deletions(-) diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm index 490f7adc035..37548be8a46 100644 --- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm @@ -12,10 +12,12 @@ var/list/meta_gas_info = meta_gas_list() //see ATMOSPHERICS/gas_types.dm var/list/gaslist_cache = null /proc/gaslist(id) var/list/cached_gas - + + //only instantiate the first time it's needed if(!gaslist_cache) gaslist_cache = new(meta_gas_info.len) - + + //only setup the individual lists the first time they're needed if(!gaslist_cache[id]) if(!meta_gas_info[id]) CRASH("Gas [id] does not exist!") @@ -27,13 +29,14 @@ var/list/gaslist_cache = null cached_gas[GAS_META] = meta_gas_info[id] else cached_gas = gaslist_cache[id] + //Copy() it because only GAS_META is static return cached_gas.Copy() /datum/gas_mixture var/list/gases - var/temperature // Kelvins + var/temperature //kelvins var/tmp/temperature_archived - var/volume + var/volume //liters var/last_share var/tmp/fuel_burnt @@ -54,7 +57,7 @@ var/list/gaslist_cache = null var/cached_gases = gases if(cached_gases[gas_id]) return - cached_gases[gas_id] = gaslist(gas_id) //see ATMOSPHERICS/gas_types.dm + cached_gases[gas_id] = gaslist(gas_id) //assert_gases(args) - shorthand for calling assert_gas() once for each gas type. /datum/gas_mixture/proc/assert_gases() @@ -73,46 +76,47 @@ var/list/gaslist_cache = null add_gas(id) //garbage_collect() - removes any gas list which is empty. + //If called with a list as an argument, only removes gas lists with IDs from that list. //Must be used after subtracting from a gas. Must be used after assert_gas() //if assert_gas() was called only to read from the gas. //By removing empty gases, processing speed is increased. -/datum/gas_mixture/proc/garbage_collect() +/datum/gas_mixture/proc/garbage_collect(list/tocheck = gases) var/list/cached_gases = gases - for(var/id in cached_gases) + for(var/id in cached_gases&tocheck) if(cached_gases[id][MOLES] <= 0 && cached_gases[id][ARCHIVE] <= 0) cached_gases -= id //PV = nRT -/datum/gas_mixture/proc/heat_capacity() +/datum/gas_mixture/proc/heat_capacity() //joules per kelvin var/list/cached_gases = gases . = 0 for(var/id in cached_gases) . += cached_gases[id][MOLES] * cached_gases[id][GAS_META][META_GAS_SPECIFIC_HEAT] -/datum/gas_mixture/proc/heat_capacity_archived() +/datum/gas_mixture/proc/heat_capacity_archived() //joules per kelvin var/list/cached_gases = gases . = 0 for(var/id in cached_gases) . += cached_gases[id][ARCHIVE] * cached_gases[id][GAS_META][META_GAS_SPECIFIC_HEAT] -/datum/gas_mixture/proc/total_moles() +/datum/gas_mixture/proc/total_moles() //moles var/list/cached_gases = gases . = 0 for(var/id in cached_gases) . += cached_gases[id][MOLES] -/datum/gas_mixture/proc/return_pressure() +/datum/gas_mixture/proc/return_pressure() //kilopascals if(volume > 0) // to prevent division by zero return total_moles() * R_IDEAL_GAS_EQUATION * temperature / volume return 0 -/datum/gas_mixture/proc/return_temperature() +/datum/gas_mixture/proc/return_temperature() //kelvins return temperature -/datum/gas_mixture/proc/return_volume() +/datum/gas_mixture/proc/return_volume() //liters return max(0, volume) -/datum/gas_mixture/proc/thermal_energy() +/datum/gas_mixture/proc/thermal_energy() //joules return temperature * heat_capacity() //Procedures used for very specific events @@ -125,6 +129,7 @@ var/list/gaslist_cache = null temperature = TCMB if(cached_gases["agent_b"] && temperature > 900 && cached_gases["plasma"] && cached_gases["co2"]) + //agent b converts hot co2 to o2 (endothermic) if(cached_gases["plasma"][MOLES] > MINIMUM_HEAT_CAPACITY && cached_gases["co2"][MOLES] > MINIMUM_HEAT_CAPACITY) var/reaction_rate = min(cached_gases["co2"][MOLES]*0.75, cached_gases["plasma"][MOLES]*0.25, cached_gases["agent_b"][MOLES]*0.05) @@ -143,6 +148,7 @@ var/list/gaslist_cache = null /* if(thermal_energy() > (PLASMA_BINDING_ENERGY*10)) if(cached_gases["plasma"] && cached_gases["co2"] && cached_gases["plasma"][MOLES] > MINIMUM_HEAT_CAPACITY && cached_gases["co2"][MOLES] > MINIMUM_HEAT_CAPACITY && (cached_gases["plasma"][MOLES]+cached_gases["co2"][MOLES])/total_moles() >= FUSION_PURITY_THRESHOLD)//Fusion wont occur if the level of impurities is too high. + //fusion converts plasma and co2 to o2 and n2 (exothermic) //world << "pre [temperature, [cached_gases["plasma"][MOLES]], [cached_gases["co2"][MOLES]] var/old_heat_capacity = heat_capacity() var/carbon_efficency = min(cached_gases["plasma"][MOLES]/cached_gases["co2"][MOLES],MAX_CARBON_EFFICENCY) @@ -183,6 +189,7 @@ var/list/gaslist_cache = null return reacting /datum/gas_mixture/proc/fire() + //combustion of plasma and volatile fuel, which both act as hydrocarbons (exothermic) var/energy_released = 0 var/old_heat_capacity = heat_capacity() var/list/cached_gases = gases //this speeds things up because accessing datum vars is slow @@ -266,9 +273,11 @@ var/list/gaslist_cache = null /datum/gas_mixture/proc/copy_from(datum/gas_mixture/sample) //Copies variables from sample + //Returns: 1 in all cases /datum/gas_mixture/proc/copy_from_turf(turf/model) //Copies all gas info from the turf into the gas list along with temperature + //Returns: 1 in all cases /datum/gas_mixture/proc/share(datum/gas_mixture/sharer) //Performs air sharing calculations between two gas_mixtures assuming only 1 boundary length @@ -279,13 +288,17 @@ var/list/gaslist_cache = null //Return: amount of gas exchanged /datum/gas_mixture/proc/check_turf(turf/model) + //Similar to compare(...), except for turfs without their own gas mixtures //Returns: 0 if self-check failed or 1 if check passes -/datum/gas_mixture/proc/temperature_mimic(turf/model, conduction_coefficient) //I want this proc to die a painful death - /datum/gas_mixture/proc/temperature_share(datum/gas_mixture/sharer, conduction_coefficient) + //Performs temperature sharing calculations (via conduction) between two gas_mixtures assuming only 1 boundary length -/datum/gas_mixture/proc/temperature_turf_share(turf/simulated/sharer, conduction_coefficient) +/datum/gas_mixture/proc/temperature_mimic(turf/model, conduction_coefficient) //I want this proc to die a painful death + //Similar to temperature_share(...), except between a gas_mixture and a turf without its own gas_mixture + +/datum/gas_mixture/proc/temperature_turf_share(turf/simulated/sharer, conduction_coefficient) //I want this proc to die a painful death + //Similar to temperature_share(...), except between a gas_mixture and a simulated turf /datum/gas_mixture/proc/compare(datum/gas_mixture/sample) //Compares sample to self to see if within acceptable ranges that group processing may be enabled @@ -303,16 +316,18 @@ var/list/gaslist_cache = null /datum/gas_mixture/merge(datum/gas_mixture/giver) if(!giver) return 0 - + + //heat transfer if(abs(temperature - giver.temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) var/self_heat_capacity = heat_capacity() var/giver_heat_capacity = giver.heat_capacity() var/combined_heat_capacity = giver_heat_capacity + self_heat_capacity if(combined_heat_capacity) temperature = (giver.temperature * giver_heat_capacity + temperature * self_heat_capacity) / combined_heat_capacity - + var/list/cached_gases = gases //accessing datum vars is slower than proc vars var/list/giver_gases = giver.gases + //gas transfer for(var/giver_id in giver_gases) assert_gas(giver_id) cached_gases[giver_id][MOLES] += giver_gases[giver_id][MOLES] @@ -376,6 +391,7 @@ var/list/gaslist_cache = null for(var/id in sample_gases) assert_gas(id) cached_gases[id][MOLES] = sample_gases[id][MOLES] + //remove all gases not in the sample cached_gases &= sample_gases return 1 @@ -389,6 +405,7 @@ var/list/gaslist_cache = null cached_gases["n2"][MOLES] = model.nitrogen cached_gases["plasma"][MOLES] = model.toxins cached_gases["co2"][MOLES] = model.carbon_dioxide + //remove all gases not handled by turfs cached_gases &= hardcoded_gases return 1 @@ -467,8 +484,8 @@ var/list/gaslist_cache = null var/delta_pressure = temperature_archived*(total_moles() + moved_moles) - sharer.temperature_archived*(sharer.total_moles() - moved_moles) . = delta_pressure * R_IDEAL_GAS_EQUATION / volume - garbage_collect() - sharer.garbage_collect() + garbage_collect(cached_gases - sharer_gases) //any gases the sharer had, we are guaranteed to have. gases that it didn't have we are not. + sharer.garbage_collect(sharer_gases - cached_gases) //the reverse is equally true /datum/gas_mixture/mimic(turf/model, atmos_adjacent_turfs = 4) var/datum/gas_mixture/copied = new @@ -490,6 +507,7 @@ var/list/gaslist_cache = null sharer.temperature = max(sharer.temperature + heat/sharer_heat_capacity, TCMB) //thermal energy of the system (self and sharer) is unchanged +//see above /datum/gas_mixture/temperature_mimic(turf/model, conduction_coefficient) var/temperature_delta = temperature - model.temperature if(abs(temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) @@ -501,6 +519,7 @@ var/list/gaslist_cache = null temperature = max(temperature - heat/self_heat_capacity, TCMB) +//see above /datum/gas_mixture/temperature_turf_share(turf/simulated/sharer, conduction_coefficient) var/temperature_delta = temperature_archived - sharer.temperature if(abs(temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) From e26dd3eb39959d4fc2c0f1b6d5172af920b2ab26 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sun, 7 Feb 2016 14:40:10 -0600 Subject: [PATCH 062/142] Fixes carrot/biobag interaction --- code/modules/hydroponics/grown.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 27f97bb5770..05fa5dd2056 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -1035,6 +1035,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() bitesize = 1 + round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/carrot/attackby(obj/item/I, mob/user, params) + . = ..() if(istype(I, /obj/item/weapon/kitchen/knife) || istype(I, /obj/item/weapon/hatchet)) user << "You sharpen the carrot into a shiv with [I]." var/obj/item/weapon/kitchen/knife/carrotshiv/Shiv = new /obj/item/weapon/kitchen/knife/carrotshiv From 3cceb1e379b151be84e03296e7420c7a260b173f Mon Sep 17 00:00:00 2001 From: Lzimann Date: Sun, 7 Feb 2016 19:03:41 -0200 Subject: [PATCH 063/142] Fix voice analyzers --- code/modules/assembly/voice.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index 71ef85ef8c5..e53b9719b31 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -64,6 +64,7 @@ . = 1 /obj/item/device/assembly/voice/attackby(obj/item/weapon/W, mob/user, params) + ..() if(istype(W, /obj/item/device/multitool)) mode %= modes.len mode++ From 8383552ef8a9dabdb6c660287a99168139748c70 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sun, 7 Feb 2016 15:36:37 -0600 Subject: [PATCH 064/142] Carrot fix --- code/modules/hydroponics/grown.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 05fa5dd2056..fc30cec85e5 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -1035,7 +1035,6 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() bitesize = 1 + round(reagents.total_volume / 2, 1) /obj/item/weapon/reagent_containers/food/snacks/grown/carrot/attackby(obj/item/I, mob/user, params) - . = ..() if(istype(I, /obj/item/weapon/kitchen/knife) || istype(I, /obj/item/weapon/hatchet)) user << "You sharpen the carrot into a shiv with [I]." var/obj/item/weapon/kitchen/knife/carrotshiv/Shiv = new /obj/item/weapon/kitchen/knife/carrotshiv @@ -1043,7 +1042,8 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice() user.unEquip(src) user.put_in_hands(Shiv) qdel(src) - + else + return ..() /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom name = "mushroom" From edd89aeef3cbc0d4264057b744d5e021ec43236f Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Sun, 7 Feb 2016 17:21:52 -0600 Subject: [PATCH 065/142] Fix flood mode on air alarms incorrectly setting pressure bounds --- .../atmospherics/machinery/airalarm.dm | 101 +++++++++--------- 1 file changed, 49 insertions(+), 52 deletions(-) diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index d1dd417493d..d08ec5689ed 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -412,110 +412,107 @@ if(AALARM_MODE_SCRUBBING) for(var/device_id in alarm_area.air_scrub_names) send_signal(device_id, list( - "power"= 1, - "co2_scrub"= 1, - "tox_scrub"= 0, - "n2o_scrub"= 0, - "scrubbing"= 1, - "widenet"= 0, + "power" = 1, + "co2_scrub" = 1, + "tox_scrub" = 0, + "n2o_scrub" = 0, + "scrubbing" = 1, + "widenet" = 0, )) for(var/device_id in alarm_area.air_vent_names) send_signal(device_id, list( - "power"= 1, - "checks"= 1, - "set_external_pressure"= ONE_ATMOSPHERE + "power" = 1, + "checks" = 1, + "set_external_pressure" = ONE_ATMOSPHERE )) if(AALARM_MODE_CONTAMINATED) for(var/device_id in alarm_area.air_scrub_names) send_signal(device_id, list( - "power"= 1, - "co2_scrub"= 1, - "tox_scrub"= 1, - "n2o_scrub"= 1, - "scrubbing"= 1, - "widenet"= 1, + "power" = 1, + "co2_scrub" = 1, + "tox_scrub" = 1, + "n2o_scrub" = 1, + "scrubbing" = 1, + "widenet" = 1, )) for(var/device_id in alarm_area.air_vent_names) send_signal(device_id, list( - "power"= 1, - "checks"= 1, - "set_external_pressure"= ONE_ATMOSPHERE + "power" = 1, + "checks" = 1, + "set_external_pressure" = ONE_ATMOSPHERE )) if(AALARM_MODE_VENTING) for(var/device_id in alarm_area.air_scrub_names) send_signal(device_id, list( - "power"= 1, - "widenet"= 0, - "scrubbing"= 0 + "power" = 1, + "widenet" = 0, + "scrubbing" = 0 )) for(var/device_id in alarm_area.air_vent_names) send_signal(device_id, list( - "power"= 1, - "checks"= 1, + "power" = 1, + "checks" = 1, "set_external_pressure" = ONE_ATMOSPHERE*2 )) if(AALARM_MODE_REFILL) for(var/device_id in alarm_area.air_scrub_names) send_signal(device_id, list( - "power"= 1, - "co2_scrub"= 1, - "tox_scrub"= 0, - "n2o_scrub"= 0, - "scrubbing"= 1, - "widenet"= 0, + "power" = 1, + "co2_scrub" = 1, + "tox_scrub" = 0, + "n2o_scrub" = 0, + "scrubbing" = 1, + "widenet" = 0, )) for(var/device_id in alarm_area.air_vent_names) send_signal(device_id, list( - "power"= 1, - "checks"= 1, - "set_external_pressure" = ONE_ATMOSPHERE*3 + "power" = 1, + "checks" = 1, + "set_external_pressure" = ONE_ATMOSPHERE * 3 )) - if( - AALARM_MODE_PANIC, - AALARM_MODE_REPLACEMENT - ) + if(AALARM_MODE_PANIC, + AALARM_MODE_REPLACEMENT) for(var/device_id in alarm_area.air_scrub_names) send_signal(device_id, list( - "power"= 1, - "widenet"= 1, - "scrubbing"= 0 + "power" = 1, + "widenet" = 1, + "scrubbing" = 0 )) for(var/device_id in alarm_area.air_vent_names) send_signal(device_id, list( - "power"= 0 + "power" = 0 )) - if( - AALARM_MODE_SIPHON - ) + if(AALARM_MODE_SIPHON) for(var/device_id in alarm_area.air_scrub_names) send_signal(device_id, list( - "power"= 1, - "widenet"= 0, - "scrubbing"= 0 + "power" = 1, + "widenet" = 0, + "scrubbing" = 0 )) for(var/device_id in alarm_area.air_vent_names) send_signal(device_id, list( - "power"= 0 + "power" = 0 )) if(AALARM_MODE_OFF) for(var/device_id in alarm_area.air_scrub_names) send_signal(device_id, list( - "power"= 0 + "power" = 0 )) for(var/device_id in alarm_area.air_vent_names) send_signal(device_id, list( - "power"= 0 + "power" = 0 )) if(AALARM_MODE_FLOOD) for(var/device_id in alarm_area.air_scrub_names) send_signal(device_id, list( - "power"=0 + "power" = 0 )) for(var/device_id in alarm_area.air_vent_names) send_signal(device_id, list( - "power"= 1, - "checks"= 0, + "power" = 1, + "checks" = 2, + "set_internal_pressure" = 0 )) /obj/machinery/airalarm/update_icon() From 1d10561a91c1b7a2442462e2840522940500a2d6 Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Sun, 7 Feb 2016 17:48:25 -0600 Subject: [PATCH 066/142] Fix ministation --- .../MiniStation/{supplypacks.dm => cargopacks.dm} | 10 +++++----- _maps/ministation.dm | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) rename _maps/map_files/MiniStation/{supplypacks.dm => cargopacks.dm} (79%) diff --git a/_maps/map_files/MiniStation/supplypacks.dm b/_maps/map_files/MiniStation/cargopacks.dm similarity index 79% rename from _maps/map_files/MiniStation/supplypacks.dm rename to _maps/map_files/MiniStation/cargopacks.dm index dc7900c0ff1..a6a1db75df3 100644 --- a/_maps/map_files/MiniStation/supplypacks.dm +++ b/_maps/map_files/MiniStation/cargopacks.dm @@ -1,25 +1,25 @@ -/datum/supply_packs/engineering/oxygen +/datum/supply_pack/engineering/oxygen name = "Oxygen Canister" cost = 15 contains = list(/obj/machinery/portable_atmospherics/canister/oxygen) crate_name = "oxygen canister crate" crate_type = /obj/structure/closet/crate/large -/datum/supply_packs/engineering/toxins +/datum/supply_pack/engineering/toxins name = "Plasma Canister" cost = 30 contains = list(/obj/machinery/portable_atmospherics/canister/toxins) crate_name = "plasma canister crate" crate_type = /obj/structure/closet/crate/large -/datum/supply_packs/engineering/nitrogen +/datum/supply_pack/engineering/nitrogen name = "Nitrogen Canister" cost = 20 contains = list(/obj/machinery/portable_atmospherics/canister/nitrogen) crate_name = "nitrogen canister crate" crate_type = /obj/structure/closet/crate/large -/datum/supply_packs/engineering/carbon_dio +/datum/supply_pack/engineering/carbon_dio name = "Carbon Dioxide Canister" cost = 35 contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide) @@ -29,7 +29,7 @@ /obj/machinery/hydroponics/constructable/unattached anchored = 0 -/datum/supply_packs/organic/hydroponics/hydro_tray +/datum/supply_pack/organic/hydroponics/hydro_tray name = "Hydroponics Tray Kit" contains = list(/obj/machinery/hydroponics/constructable/unattached) cost = 10 diff --git a/_maps/ministation.dm b/_maps/ministation.dm index eb39ecc4ed0..70a1a381242 100644 --- a/_maps/ministation.dm +++ b/_maps/ministation.dm @@ -67,7 +67,7 @@ Changes to the uplinks were made to discourage murderboning, the rest is the sam #if !defined(MAP_OVERRIDE_FILES) #define MAP_OVERRIDE_FILES #include "map_files\MiniStation\misc.dm" - #include "map_files\MiniStation\supplypacks.dm" + #include "map_files\MiniStation\cargopacks.dm" #include "map_files\MiniStation\telecomms.dm" #include "map_files\MiniStation\uplink_item.dm" #include "map_files\MiniStation\job\jobs.dm" From 6ab94b5003eda78f1a91ee3adf12daaec032ba94 Mon Sep 17 00:00:00 2001 From: duncathan salt Date: Sun, 7 Feb 2016 17:55:10 -0600 Subject: [PATCH 067/142] silly dunc this is a much better idea --- .../atmospherics/gasmixtures/gas_mixture.dm | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm index 37548be8a46..9fe10a439ca 100644 --- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm @@ -80,9 +80,9 @@ var/list/gaslist_cache = null //Must be used after subtracting from a gas. Must be used after assert_gas() //if assert_gas() was called only to read from the gas. //By removing empty gases, processing speed is increased. -/datum/gas_mixture/proc/garbage_collect(list/tocheck = gases) +/datum/gas_mixture/proc/garbage_collect(list/tocheck) var/list/cached_gases = gases - for(var/id in cached_gases&tocheck) + for(var/id in (tocheck || cached_gases)) if(cached_gases[id][MOLES] <= 0 && cached_gases[id][ARCHIVE] <= 0) cached_gases -= id @@ -398,13 +398,20 @@ var/list/gaslist_cache = null /datum/gas_mixture/copy_from_turf(turf/model) var/list/cached_gases = gases - + temperature = model.temperature - assert_gases(arglist(hardcoded_gases)) - cached_gases["o2"][MOLES] = model.oxygen - cached_gases["n2"][MOLES] = model.nitrogen - cached_gases["plasma"][MOLES] = model.toxins - cached_gases["co2"][MOLES] = model.carbon_dioxide + if(model.oxygen) + assert_gas("o2") + cached_gases["o2"][MOLES] = model.oxygen + if(model.nitrogen) + assert_gas("n2") + cached_gases["n2"][MOLES] = model.nitrogen + if(model.toxins) + assert_gas("plasma") + cached_gases["plasma"][MOLES] = model.toxins + if(model.carbon_dioxide) + assert_gas("co2") + cached_gases["co2"][MOLES] = model.carbon_dioxide //remove all gases not handled by turfs cached_gases &= hardcoded_gases @@ -479,13 +486,16 @@ var/list/gaslist_cache = null if(abs(old_sharer_heat_capacity) > MINIMUM_HEAT_CAPACITY) if(abs(new_sharer_heat_capacity/old_sharer_heat_capacity - 1) < 0.10) // <10% change in sharer heat capacity temperature_share(sharer, OPEN_HEAT_TRANSFER_COEFFICIENT) - + + var/list/unique_gases = cached_gases ^ sharer_gases + if(unique_gases.len) //if all gases were present in both mixtures, we know that no gases are 0 + garbage_collect(cached_gases - sharer_gases) //any gases the sharer had, we are guaranteed to have. gases that it didn't have we are not. + sharer.garbage_collect(sharer_gases - cached_gases) //the reverse is equally true + if(temperature_delta > MINIMUM_TEMPERATURE_TO_MOVE || abs(moved_moles) > MINIMUM_MOLES_DELTA_TO_MOVE) var/delta_pressure = temperature_archived*(total_moles() + moved_moles) - sharer.temperature_archived*(sharer.total_moles() - moved_moles) - . = delta_pressure * R_IDEAL_GAS_EQUATION / volume - - garbage_collect(cached_gases - sharer_gases) //any gases the sharer had, we are guaranteed to have. gases that it didn't have we are not. - sharer.garbage_collect(sharer_gases - cached_gases) //the reverse is equally true + return delta_pressure * R_IDEAL_GAS_EQUATION / volume + /datum/gas_mixture/mimic(turf/model, atmos_adjacent_turfs = 4) var/datum/gas_mixture/copied = new From 080a2c989ec3c49cff58368b4045e41eef3d3a5f Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Mon, 8 Feb 2016 00:17:34 +0000 Subject: [PATCH 068/142] Automatic changelog generation for PR #15238 --- html/changelogs/AutoChangeLog-pr-15238.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-15238.yml diff --git a/html/changelogs/AutoChangeLog-pr-15238.yml b/html/changelogs/AutoChangeLog-pr-15238.yml new file mode 100644 index 00000000000..501075bc6ba --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-15238.yml @@ -0,0 +1,4 @@ +author: Kor +delete-after: True +changes: + - rscadd: "Capture the flag now features a high speed instagib mode, with guns courtesy of MMMiracles." From eef4f4d534c4e4d4079ce76af3ae18b8e9b003ea Mon Sep 17 00:00:00 2001 From: MrStonedOne Date: Sun, 7 Feb 2016 17:34:52 -0800 Subject: [PATCH 069/142] Optimizes tesla_zap, adds fuel tank tesla_act, misc tesla changes --- code/__HELPERS/unsorted.dm | 18 ++ code/game/machinery/machinery.dm | 14 +- code/modules/power/tesla/energy_ball.dm | 219 ++++++++++----------- code/modules/reagents/reagent_dispenser.dm | 22 ++- 4 files changed, 154 insertions(+), 119 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index e128530958d..4c39d2e8414 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1220,3 +1220,21 @@ B --><-- A for(var/atom/location = A.loc, location, location = location.loc) if(location == src) return 1 + + +/proc/get_closest_atom(type, list, source) + var/closest_atom + var/closest_distance + for(var/A in list) + if(!istype(A, type)) + continue + var/distance = get_dist(source, A) + if(!closest_distance) + closest_distance = distance + closest_atom = A + else + if(closest_distance > distance) + closest_distance = distance + closest_atom = A + return closest_atom + diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 49ad34f033a..2470949b883 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -412,4 +412,16 @@ Class Procs: if (hclient.client.mob && hclient.client.mob.machine == src) hclient.client.mob.unset_machine() /obj/machinery/proc/can_be_overridden() - . = 1 \ No newline at end of file + . = 1 + + +/obj/machinery/tesla_act(var/power) + ..() + if(prob(85)) + emp_act(2) + else if(prob(50)) + ex_act(3) + else if(prob(90)) + ex_act(2) + else + ex_act(1) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index d11aed5a694..f34f92ce559 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -28,44 +28,44 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, grav_pull = 0 contained = 0 density = 1 - + var/list/orbiting_balls = list() var/produced_power - var/energy_to_raise = 100 - var/energy_to_lower = -10 + var/energy_to_raise = 32 + var/energy_to_lower = -20 /obj/singularity/energy_ball/Destroy() - if (orbiting && istype(orbiting, /obj/singularity/energy_ball)) + if(orbiting && istype(orbiting, /obj/singularity/energy_ball)) var/obj/singularity/energy_ball/EB = orbiting EB.orbiting_balls -= src orbiting = null - + for(var/ball in orbiting_balls) var/obj/singularity/energy_ball/EB = ball qdel(EB) - + return ..() /obj/singularity/energy_ball/process() - if(orbiting) + if(!orbiting) handle_energy() - + move_the_basket_ball(2 + orbiting_balls.len * 2) - + playsound(src.loc, 'sound/magic/lightningbolt.ogg', 100, 1, extrarange = 15) - + pixel_x = 0 pixel_y = 0 - + dir = tesla_zap(src, 7, TESLA_DEFAULT_POWER) - + pixel_x = -32 pixel_y = -32 for (var/ball in orbiting_balls) tesla_zap(ball, rand(1, Clamp(orbiting_balls.len, 3, 7)), TESLA_MINI_POWER) else energy = 0 // ensure we dont have miniballs of miniballs - + return /obj/singularity/energy_ball/examine(mob/user) @@ -85,28 +85,28 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, /obj/singularity/energy_ball/proc/handle_energy() if(energy >= energy_to_raise) - energy_to_lower = energy_to_raise - 10 + energy_to_lower = energy_to_raise - 20 energy_to_raise += energy_to_raise playsound(src.loc, 'sound/magic/lightning_chargeup.ogg', 100, 1, extrarange = 15) spawn(100) var/obj/singularity/energy_ball/EB = new(loc) - + EB.transform *= pick(0.3, 0.4, 0.5, 0.6, 0.7) var/icon/I = icon(icon,icon_state,dir) - - var/orbitsize = (I.Width() + I.Height()) * pick(0.5, 0.6, 0.7) + + var/orbitsize = (I.Width() + I.Height()) * pick(0.4, 0.5, 0.6, 0.7, 0.8) orbitsize -= (orbitsize / world.icon_size) * (world.icon_size * 0.25) - + EB.orbit(src, orbitsize, pick(FALSE, TRUE), rand(10, 25), pick(3, 4, 5, 6, 36)) - + else if(energy < energy_to_lower && orbiting_balls.len) energy_to_raise = energy_to_raise * 0.5 - energy_to_lower = (energy_to_raise * 0.5) - 10 - + energy_to_lower = (energy_to_raise * 0.5) - 20 + var/Orchiectomy_target = pick(orbiting_balls) qdel(Orchiectomy_target) - + else if(orbiting_balls.len) energy -= orbiting_balls.len @@ -120,9 +120,9 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, if (istype(target)) target.orbiting_balls += src poi_list -= src - + . = ..() - + if (istype(target)) target.orbiting_balls -= src @@ -132,106 +132,105 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, C.dust() return -/proc/get_closest_atom(list, source, typetocheck) - var/closest_atom - var/closest_distance - for(var/A in list) - if (typetocheck && !istype(A, typetocheck)) - continue - var/distance = get_dist(source, A) - if(!closest_atom || closest_distance > distance) - closest_distance = distance - closest_atom = A - return closest_atom - /proc/tesla_zap(var/atom/source, zap_range = 3, power) . = source.dir if(power < 1000) return - var/list/tesla_coils = list() - var/list/grounding_rods = list() - var/list/potential_machine_zaps = list() - var/list/potential_mob_zaps = list() - var/list/potential_structure_zaps = list() + + var/closest_dist = 0 var/closest_atom - for(var/atom/A in oview(source, zap_range)) + var/obj/machinery/power/tesla_coil/closest_tesla_coil + var/obj/machinery/power/grounding_rod/closest_grounding_rod + var/mob/living/closest_mob + var/obj/machinery/closest_machine + var/obj/structure/closest_structure + + for(var/A in oview(source, zap_range)) if(istype(A, /obj/machinery/power/tesla_coil)) + var/dist = get_dist(source, A) var/obj/machinery/power/tesla_coil/C = A - if(!C.being_shocked) - tesla_coils += C + if((dist < closest_dist || !closest_tesla_coil) && !C.being_shocked) + closest_dist = dist + + //we use both of these to save on istype and typecasting overhead later on + //while still allowing common code to run before hand + closest_tesla_coil = C + closest_atom = C + + + else if(closest_tesla_coil) + continue //no need checking these other things else if(istype(A, /obj/machinery/power/grounding_rod)) - var/obj/machinery/power/grounding_rod/R = A - grounding_rods += R - + var/dist = get_dist(source, A) + if(dist < closest_dist || !closest_grounding_rod) + closest_grounding_rod = A + closest_atom = A + closest_dist = dist + + else if(closest_grounding_rod || is_type_in_list(A, blacklisted_tesla_types)) + continue + + else if(istype(A, /mob/living)) + var/dist = get_dist(source, A) + var/mob/living/L = A + if((dist < closest_dist || !closest_mob) && L.stat != DEAD) + closest_mob = L + closest_atom = A + closest_dist = dist + + else if(closest_mob) + continue + else if(istype(A, /obj/machinery)) var/obj/machinery/M = A - if(!is_type_in_list(M, blacklisted_tesla_types) && !M.being_shocked) - potential_machine_zaps += M - + var/dist = get_dist(source, A) + if((dist < closest_dist || !closest_machine) && !M.being_shocked) + closest_machine = M + closest_atom = A + closest_dist = dist + + else if(closest_mob) + continue + else if(istype(A, /obj/structure)) - var/obj/structure/M = A - if(!is_type_in_list(M, blacklisted_tesla_types) && !M.being_shocked) - potential_structure_zaps += M - - else if(istype(A, /mob/living)) - var/mob/living/L = A - if(!is_type_in_list(L, blacklisted_tesla_types) && L.stat != DEAD) - potential_mob_zaps += L + var/obj/structure/S = A + var/dist = get_dist(source, A) + if((dist < closest_dist || !closest_tesla_coil) && !S.being_shocked) + closest_structure = S + closest_atom = A + closest_dist = dist - closest_atom = get_closest_atom(tesla_coils, source) - if(closest_atom) - var/obj/machinery/power/tesla_coil/C = closest_atom - source.Beam(C, icon_state="lightning[rand(1,12)]", icon='icons/effects/effects.dmi', time=5) - C.tesla_act(power) - if(!closest_atom) - closest_atom = get_closest_atom(grounding_rods, source) - if(closest_atom) - var/obj/machinery/power/grounding_rod/R = closest_atom - source.Beam(R, icon_state="lightning[rand(1,12)]", icon='icons/effects/effects.dmi', time=5) - R.tesla_act(power) - - if(!closest_atom) - closest_atom = get_closest_atom(potential_mob_zaps, source) - if(closest_atom) - var/mob/living/L = closest_atom - var/shock_damage = Clamp(round(power/400), 10, 90) + rand(-5, 5) - source.Beam(L, icon_state="lightning[rand(1,12)]", icon='icons/effects/effects.dmi', time=5) - L.electrocute_act(shock_damage, source, 1, tesla_shock = 1) - if(istype(L, /mob/living/silicon)) - var/mob/living/silicon/S = L - S.emp_act(2) - tesla_zap(S, 7, power / 1.5) // metallic folks bounce it further - else - tesla_zap(L, 5, power / 1.5) - - if(!closest_atom) - closest_atom = get_closest_atom(potential_machine_zaps, source) - if(closest_atom) - var/obj/machinery/M = closest_atom - source.Beam(M, icon_state="lightning[rand(1,12)]", icon='icons/effects/effects.dmi',time=5) - M.tesla_act(power) - if(prob(85)) - M.emp_act(2) - else - if(prob(50)) - M.ex_act(3) - else - if(prob(90)) - M.ex_act(2) - else - M.ex_act(1) - - if(!closest_atom) - closest_atom = get_closest_atom(/obj/structure, potential_structure_zaps, source) - if(closest_atom) - var/obj/structure/S = closest_atom - source.Beam(S, icon_state="lightning[rand(1,12)]", icon='icons/effects/effects.dmi', time=5) - S.tesla_act(power) - + //Alright, we've done our loop, now lets see if was anything interesting in range if(closest_atom) + //common stuff + source.Beam(closest_atom, icon_state="lightning[rand(1,12)]", icon='icons/effects/effects.dmi', time=5) var/zapdir = get_dir(source, closest_atom) - if (zapdir) - . = zapdir + if(zapdir) + . = closest_atom + + //per type stuff: + if(closest_tesla_coil) + closest_tesla_coil.tesla_act(power) + + else if(closest_grounding_rod) + closest_grounding_rod.tesla_act(power) + + else if(closest_mob) + var/shock_damage = Clamp(round(power/400), 10, 90) + rand(-5, 5) + closest_mob.electrocute_act(shock_damage, source, 1, tesla_shock = 1) + if(istype(closest_mob, /mob/living/silicon)) + var/mob/living/silicon/S = closest_mob + S.emp_act(2) + tesla_zap(S, 7, power / 1.5) // metallic folks bounce it further + else + tesla_zap(closest_mob, 5, power / 1.5) + + else if(closest_machine) + closest_machine.tesla_act(power) + + else if(closest_structure) + closest_structure.tesla_act(power) + diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 3b8886f3571..26807a8dfe0 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -91,22 +91,28 @@ return message_admins("[key_name_admin(Proj.firer)] triggered a fueltank explosion.") log_game("[key_name(Proj.firer)] triggered a fueltank explosion.") - explosion(src.loc,-1,0,2, flame_range = 2) + boom() - -/obj/structure/reagent_dispensers/fueltank/blob_act() +/obj/structure/reagent_dispensers/fueltank/proc/boom() explosion(src.loc,0,1,5,7,10, flame_range = 5) - - -/obj/structure/reagent_dispensers/fueltank/ex_act() - explosion(src.loc,-1,0,2, flame_range = 2) if(src) qdel(src) +/obj/structure/reagent_dispensers/fueltank/blob_act() + boom() + + +/obj/structure/reagent_dispensers/fueltank/ex_act() + boom() + + /obj/structure/reagent_dispensers/fueltank/fire_act() - blob_act() //saving a few lines of copypasta + boom() +/obj/structure/reagent_dispensers/fueltank/tesla_act() + ..() //extend the zap + boom() /obj/structure/reagent_dispensers/peppertank name = "Pepper Spray Refiller" From c91c592f04c461cfb74970fb3d01549ed9725a72 Mon Sep 17 00:00:00 2001 From: MrStonedOne Date: Sun, 7 Feb 2016 18:03:19 -0800 Subject: [PATCH 070/142] MC: tweaks, midnight rollover fix, and some 510 work Fixes the mc getting all fucked up during midnight rollover Mc now tracks the tick_usage of every subsystem, and will skip running an expensive subsystem if we are too close to overrunning in a tick, waiting until next tick, unless that subsystem is excessively past due (because we kept skipping it). It now assumes that 20% of a tick should be saved for byond to do it's things, and stops running all subsystems once we get to 80% tick usage. Dynamic wait will only smooth out wait changes over 8 fires if the new wait is lower than the old wait, before it would smooth out wait increases as well as decreases. The fps throttle system is now 509 only. The mc will now run every 1ds, no GCD bullshit, as we want to spread things out more. Offline subsystems will still show their stat message DS is now rounded to 2 digits, not 3, to make room for the tick percentage bit, and because the 3rd digit was useless and all MoE --- code/controllers/master.dm | 64 +++++++++++++++++------------------ code/controllers/subsystem.dm | 13 +++++-- code/modules/mob/mob.dm | 2 +- 3 files changed, 42 insertions(+), 37 deletions(-) diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 6800c95e2b4..75ded6c78cd 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -21,8 +21,10 @@ var/global/datum/controller/master/Master = new() var/iteration = 0 // The cost (in deciseconds) of the MC loop. var/cost = 0 +#if DM_VERSION < 510 // The old fps when we slow it down to prevent lag. var/old_fps +#endif // A list of subsystems to process(). var/list/subsystems = list() // The cost of running the subsystems (in deciseconds). @@ -39,7 +41,6 @@ var/global/datum/controller/master/Master = new() else init_subtypes(/datum/subsystem, subsystems) Master = src - processing_interval = calculate_gcd() /datum/controller/master/Destroy() ..() @@ -109,7 +110,9 @@ var/global/datum/controller/master/Master = new() SS.next_fire = world.time + rand(0, SS.wait) // Stagger subsystems. // Used to smooth out costs to try and avoid oscillation. +#define MC_AVERAGE_FAST(average, current) (0.7 * (average) + 0.3 * (current)) #define MC_AVERAGE(average, current) (0.8 * (average) + 0.2 * (current)) +#define MC_AVERAGE_SLOW(average, current) (0.9 * (average) + 0.1 * (current)) /datum/controller/master/process() if(!Failsafe) new/datum/controller/failsafe() // (re)Start the failsafe. @@ -129,29 +132,44 @@ var/global/datum/controller/master/Master = new() var/ran_subsystems = 0 for(var/datum/subsystem/SS in subsystems) +#if DM_VERSION >= 510 + if (world.tick_usage > 80) +#else if(world.cpu >= 100) - //if world.cpu gets above 120, - //byond will pause most client updates for (about) 1.6 seconds. - //(1.6 seconds worth of ticks) - //We just stop running subsystems to avoid that. +#endif break + if(SS.can_fire > 0) if(SS.next_fire <= world.time && SS.last_fire + (SS.wait * 0.75) <= world.time) // Check if it's time. +#if DM_VERSION >= 510 + if (world.tick_usage + SS.tick_usage > 80 && SS.last_fire + (SS.wait*1.25) > world.time) + continue +#endif ran_subsystems = 1 timer = world.timeofday last_type_processed = SS.type SS.last_fire = world.time +#if DM_VERSION >= 510 + var/tick_usage = world.tick_usage +#endif SS.fire() // Fire the subsystem and record the cost. - SS.cost = MC_AVERAGE(SS.cost, world.timeofday - timer) +#if DM_VERSION >= 510 + var/newusage = max(world.tick_usage - tick_usage, 0) + if (newusage < SS.tick_usage) + SS.tick_usage = MC_AVERAGE_SLOW(SS.tick_usage,world.tick_usage - tick_usage) + else + SS.tick_usage = MC_AVERAGE_FAST(SS.tick_usage,world.tick_usage - tick_usage) +#endif + SS.cost = max(MC_AVERAGE(SS.cost, world.timeofday - timer), 0) if(SS.dynamic_wait) // Adjust wait depending on lag. var/oldwait = SS.wait var/global_delta = (subsystem_cost - (SS.cost / (SS.wait / 10))) - 1 var/newwait = (SS.cost - SS.dwait_buffer + global_delta) * SS.dwait_delta newwait = newwait * (world.cpu / 100 + 1) - newwait = MC_AVERAGE(oldwait, newwait) + //smooth out wait changes, but only if going down + if(newwait < oldwait) + newwait = MC_AVERAGE(oldwait, newwait) SS.wait = Clamp(newwait, SS.dwait_lower, SS.dwait_upper) - if(oldwait != SS.wait) - processing_interval = calculate_gcd() SS.next_fire = world.time + SS.wait else SS.next_fire += SS.wait @@ -161,7 +179,7 @@ var/global/datum/controller/master/Master = new() break sleep(0) - cost = MC_AVERAGE(cost, world.timeofday - start_time) + cost = max(MC_AVERAGE(cost, world.timeofday - start_time), 0) if(ran_subsystems) var/oldcost = subsystem_cost var/newcost = 0 @@ -172,13 +190,10 @@ var/global/datum/controller/master/Master = new() subsystem_cost = MC_AVERAGE(oldcost, newcost) var/extrasleep = 0 - // If we caused BYOND to miss a tick, sleep a bit extra... - if(startingtick < world.time || start_time + 1 < world.timeofday) - extrasleep += world.tick_lag * 2 // If we are loading the server too much, sleep a bit extra... if(world.cpu >= 75) extrasleep += (extrasleep + processing_interval) * ((world.cpu-50)/10) - +#if DM_VERSION < 510 if(world.cpu >= 100) if(!old_fps) old_fps = world.fps @@ -187,33 +202,16 @@ var/global/datum/controller/master/Master = new() else if(old_fps && world.cpu < 50) world.fps = old_fps old_fps = null - +#endif sleep(processing_interval + extrasleep) else sleep(50) #undef MC_AVERAGE -// Determine the GCD of subsystem waits: the longest the MC can wait while still staying on schedule. -/datum/controller/master/proc/calculate_gcd() - var/GCD - // The shortest possible fire rate is the lowest of two ticks or 1 decisecond. - var/minimumInterval = min(world.tick_lag * 2, 1) - - // Loop over each subsystem and determine the GCD based on its wait value. - for(var/datum/subsystem/SS in subsystems) - if(SS.wait) - GCD = Gcd(round(SS.wait * 10), GCD) - GCD = round(GCD) - // If the GCD is less than the minimum, just use the minimum. - if(GCD < minimumInterval * 10) - GCD = minimumInterval * 10 - // Return GCD. - return GCD / 10 - /datum/controller/master/proc/stat_entry() if(!statclick) statclick = new/obj/effect/statclick/debug("Initializing...", src) - stat("Master Controller:", statclick.update("[round(Master.cost, 0.001)]ds (Interval: [Master.processing_interval] | Iteration:[Master.iteration])")) + stat("Master Controller:", statclick.update("[round(Master.cost, 0.01)]ds (Interval: [Master.processing_interval] | Iteration:[Master.iteration])")) diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index 90ba95687b4..2edfa916c59 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -24,6 +24,9 @@ var/last_fire = 0 //last world.time we called fire() var/next_fire = 0 //scheduled world.time for next fire() var/cost = 0 //average time to execute +#if DM_VERSION >= 510 + var/tick_usage = 0 //average tick usage +#endif var/times_fired = 0 //number of times we have called fire() // The object used for the clickable stat() button. @@ -59,9 +62,13 @@ dwait = "DWait:[round(wait,0.1)]ds " if(can_fire) - msg = "[round(cost,0.001)]ds\t[dwait][msg]" +#if DM_VERSION >= 510 + msg = "[round(cost,0.01)]ds|[round(tick_usage,1)]%\t[dwait][msg]" +#else + msg = "[round(cost,0.01)]ds\t[dwait][msg]" +#endif else - msg = "OFFLINE" + msg = "OFFLINE\t[msg]" stat(name, statclick.update(msg)) @@ -79,4 +86,4 @@ /datum/subsystem/on_varedit(edited_var) if (edited_var == "can_fire" && can_fire) next_fire = world.time + wait - + diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 311a277d875..3e93c4ba1a0 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -600,7 +600,7 @@ var/next_mob_id = 0 else stat("Failsafe Controller:", "ERROR") if(Master) - stat("Subsystems:", "[round(Master.subsystem_cost, 0.001)]ds") + stat("Subsystems:", "[round(Master.subsystem_cost, 0.01)]ds") stat(null) for(var/datum/subsystem/SS in Master.subsystems) SS.stat_entry() From c920ae1f159862a18850d6d53f62ccde2eb0fbc7 Mon Sep 17 00:00:00 2001 From: PKPenguin321 Date: Sun, 7 Feb 2016 18:15:42 -0800 Subject: [PATCH 071/142] bumps helmet armor up --- code/modules/clothing/head/helmet.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 095e86969f8..6727996aea8 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -4,7 +4,7 @@ icon_state = "helmet" flags = HEADBANGPROTECT item_state = "helmet" - armor = list(melee = 25, bullet = 15, laser = 25,energy = 10, bomb = 25, bio = 0, rad = 0) + armor = list(melee = 30, bullet = 25, laser = 25,energy = 10, bomb = 25, bio = 0, rad = 0) flags_inv = HIDEEARS|HIDEEYES cold_protection = HEAD min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT From 6f660075a7203135dbb7c41928c09f6f3e142374 Mon Sep 17 00:00:00 2001 From: PKPenguin321 Date: Sun, 7 Feb 2016 18:20:01 -0800 Subject: [PATCH 072/142] bumps beret armor up --- code/modules/clothing/head/jobs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index a469f0aeff8..662e22539d7 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -101,7 +101,7 @@ name = "security beret" desc = "A robust beret with the security insignia emblazoned on it. Uses reinforced fabric to offer sufficent protection." icon_state = "beret_badge" - armor = list(melee = 25, bullet = 15, laser = 25,energy = 10, bomb = 25, bio = 0, rad = 0) + armor = list(melee = 30, bullet = 25, laser = 25,energy = 10, bomb = 25, bio = 0, rad = 0) strip_delay = 60 /obj/item/clothing/head/beret/sec/navyhos From eefeb813a40d7ba5d6d50cdfc79893f194b79bc7 Mon Sep 17 00:00:00 2001 From: PKPenguin321 Date: Sun, 7 Feb 2016 18:21:09 -0800 Subject: [PATCH 073/142] gives caps bomb armor --- code/modules/clothing/head/soft_caps.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm index e4250170a4d..689bd54862e 100644 --- a/code/modules/clothing/head/soft_caps.dm +++ b/code/modules/clothing/head/soft_caps.dm @@ -109,11 +109,11 @@ desc = "It's a robust baseball hat in tasteful red colour." icon_state = "secsoft" item_color = "sec" - armor = list(melee = 30, bullet = 25, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0) + armor = list(melee = 30, bullet = 25, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0) strip_delay = 60 /obj/item/clothing/head/soft/emt name = "EMT cap" desc = "It's a baseball hat with a dark turquoise color and a reflective cross on the top." icon_state = "emtsoft" - item_color = "emt" \ No newline at end of file + item_color = "emt" From 0b70d8e40e2484bb916fae1d92831d58d37bd417 Mon Sep 17 00:00:00 2001 From: sybil-tgstation13 Date: Mon, 8 Feb 2016 02:56:56 +0000 Subject: [PATCH 074/142] Automatic changelog compile --- html/changelog.html | 21 ++++++++++++++++ html/changelogs/.all_changelog.yml | 28 ++++++++++++++++++++++ html/changelogs/AutoChangeLog-pr-14947.yml | 4 ---- html/changelogs/AutoChangeLog-pr-14992.yml | 4 ---- html/changelogs/AutoChangeLog-pr-15177.yml | 6 ----- html/changelogs/AutoChangeLog-pr-15183.yml | 6 ----- html/changelogs/AutoChangeLog-pr-15208.yml | 4 ---- html/changelogs/AutoChangeLog-pr-15238.yml | 4 ---- 8 files changed, 49 insertions(+), 28 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-14947.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-14992.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-15177.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-15183.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-15208.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-15238.yml diff --git a/html/changelog.html b/html/changelog.html index c7d4e78570a..43842de0d7e 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,27 @@ -->
    +

    08 February 2016

    +

    Incoming5643 updated:

    +
      +
    • Poly will now speak a line or emote when pet.
    • +
    • Poly now responds to getting fed crackers by becoming more annoying for the round.
    • +
    • Every day he is growing stronger
    • +
    +

    Kor updated:

    +
      +
    • A certain hygiene obsessed alien is now obtainable via xenobiology gold cores.
    • +
    • Add laserguns with swappable, rechargeable magazines. They are adminspawn only.
    • +
    • Operatives now get their pinpointers in their pocket when they spawn, meaning reinforcements automatically come with them (and hopefully people stop forgetting them in general).
    • +
    • Capture the flag now features a high speed instagib mode, with guns courtesy of MMMiracles.
    • +
    +

    phil235 updated:

    +
      +
    • The vision updates for mobs are now instantaneous (e.g. you don't have to wait one second to see again when removing your welding helmet)
    • +
    • Your vision is now affected when you're inside something or viewing through a camera. You can no longer see mobs or objects when ventcrawling (unless you have xray for example), an xray user viewing through a camera do not see through walls around the camera. On the other hand, cameras with an xray upgrade let you see through walls. Unfocused camera now give you the same effect as when you are nearsighted. Being inside closets, morgue container and disposal bins give you some vision impairments.
    • +
    • The ability to toggle your hud on and off (with f12) is now available to all mobs not just humans.
    • +
    +

    06 February 2016

    LordPidey updated: