From f84bff3bdd391e2b25402266b522ea0f111ecc19 Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Fri, 23 Aug 2024 11:06:11 -0400 Subject: [PATCH 01/40] Internally renames the small size to be more inclusive (#26569) * Renames Midgit to Dwarf * Even more neutral name --- code/game/objects/items/weapons/dna_injector.dm | 8 ++++---- code/modules/station_goals/bluespace_tap.dm | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index 7958cd9dca88..0b5917ebc93e 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -343,24 +343,24 @@ /obj/item/dnainjector/antiinsulation/GetInitBlock() return GLOB.shockimmunityblock -/obj/item/dnainjector/midgit +/obj/item/dnainjector/small_size name = "DNA-Injector (Small Size)" desc = "Makes you shrink." datatype = DNA2_BUF_SE value = 0xFFF forcedmutation = TRUE -/obj/item/dnainjector/midgit/GetInitBlock() +/obj/item/dnainjector/small_size/GetInitBlock() return GLOB.smallsizeblock -/obj/item/dnainjector/antimidgit +/obj/item/dnainjector/anti_small_size name = "DNA-Injector (Anti-Small Size)" desc = "Makes you grow. But not too much." datatype = DNA2_BUF_SE value = 0x001 forcedmutation = TRUE -/obj/item/dnainjector/antimidgit/GetInitBlock() +/obj/item/dnainjector/anti_small_size/GetInitBlock() return GLOB.smallsizeblock /obj/item/dnainjector/eatmut diff --git a/code/modules/station_goals/bluespace_tap.dm b/code/modules/station_goals/bluespace_tap.dm index 89b425ef32d5..7222ffba2567 100644 --- a/code/modules/station_goals/bluespace_tap.dm +++ b/code/modules/station_goals/bluespace_tap.dm @@ -132,7 +132,7 @@ /obj/item/storage/pill_bottle/random_meds/labelled = 25, /obj/item/reagent_containers/glass/bottle/reagent/omnizine = 15, /obj/item/dnainjector/telemut = 5, - /obj/item/dnainjector/midgit = 5, + /obj/item/dnainjector/small_size = 5, /obj/item/dnainjector/morph = 5, /obj/item/dnainjector/regenerate = 5, /mob/living/simple_animal/pet/dog/corgi/ = 5, From 00b21f94c4ed0b482450cc262b96b83ee9586238 Mon Sep 17 00:00:00 2001 From: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> Date: Fri, 23 Aug 2024 12:48:13 -0400 Subject: [PATCH 02/40] This has a firer now (#26582) --- code/modules/mod/modules/modules_supply.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/modules/mod/modules/modules_supply.dm b/code/modules/mod/modules/modules_supply.dm index 06c4704c21f2..daf0c8832451 100644 --- a/code/modules/mod/modules/modules_supply.dm +++ b/code/modules/mod/modules/modules_supply.dm @@ -497,6 +497,11 @@ light_color = LIGHT_COLOR_ORANGE ammo_type = /obj/structure/mining_bomb +/obj/item/projectile/bullet/reusable/mining_bomb/handle_drop() + if(!dropped) + new ammo_type(loc, firer) + dropped = TRUE + /obj/structure/mining_bomb name = "mining bomb" desc = "A bomb. Why are you staring at this?" From f0c88dbe4edeac185940c90d344a111eddf8c371 Mon Sep 17 00:00:00 2001 From: chuga-git <98280110+chuga-git@users.noreply.github.com> Date: Fri, 23 Aug 2024 16:15:35 -0500 Subject: [PATCH 03/40] /atom/movable/Destroy() now gets loc at the beginning of the proc (#26579) --- code/game/atoms_movable.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 058f0bbea647..c4ca156e5df5 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -92,19 +92,23 @@ add_overlay(list(em_block)) /atom/movable/Destroy() + var/turf/T = loc unbuckle_all_mobs(force = TRUE) QDEL_NULL(em_block) + . = ..() + if(loc) loc.handle_atom_del(src) + for(var/atom/movable/AM in contents) qdel(AM) + LAZYCLEARLIST(client_mobs_in_contents) loc = null if(pulledby) pulledby.stop_pulling() - var/turf/T = loc if(opacity && istype(T)) var/old_has_opaque_atom = T.has_opaque_atom T.recalc_atom_opacity() From 53e343462e044229c0ac2c330575c116590841f8 Mon Sep 17 00:00:00 2001 From: chuga-git <98280110+chuga-git@users.noreply.github.com> Date: Fri, 23 Aug 2024 20:51:24 -0500 Subject: [PATCH 04/40] default to blank paper if letterhead_type is not defined (#26584) --- code/modules/paperwork/paperbin.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index fa7aa75d6f23..9da49f25804a 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -73,7 +73,7 @@ P = papers[length(papers)] papers.Remove(P) else - var/choice = tgui_alert(user, "Choose a style", "Paperbin", list("Letterhead", "Blank", "Cancel")) + var/choice = letterhead_type ? tgui_alert(user, "Choose a style", "Paperbin", list("Letterhead", "Blank", "Cancel")) : "Blank" if(isnull(choice) || !Adjacent(user)) return switch(choice) From 842721470f5646a49c7d8f1dd0cf51dbf9544b19 Mon Sep 17 00:00:00 2001 From: chuga-git <98280110+chuga-git@users.noreply.github.com> Date: Sat, 24 Aug 2024 11:16:52 -0500 Subject: [PATCH 05/40] Makes training nuclear bomb not cause GC failure on Initialize() (#26583) * training nuclear bomb now nulls reference to core on Initialize() * why don't we just make it not create the core in the first place? --- code/game/gamemodes/nuclear/nuclearbomb.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index f6e17fd32779..4eb06a9325fd 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -79,8 +79,8 @@ GLOBAL_VAR(bomb_set) if(!training) GLOB.poi_list |= src GLOB.nuke_list |= src - core = new /obj/item/nuke_core/plutonium(src) - STOP_PROCESSING(SSobj, core) //Let us not irradiate the vault by default. + core = new /obj/item/nuke_core/plutonium(src) + STOP_PROCESSING(SSobj, core) //Let us not irradiate the vault by default. update_icon(UPDATE_OVERLAYS) radio = new(src) radio.listening = FALSE @@ -796,7 +796,6 @@ GLOBAL_VAR(bomb_set) /obj/machinery/nuclearbomb/training/Initialize() . = ..() r_code = 11111 //Uuh.. one! - qdel(core) /obj/machinery/nuclearbomb/training/process() if(timing) From 9d2da310e9d3d282340e4566db6385f42f4e10b5 Mon Sep 17 00:00:00 2001 From: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Sat, 24 Aug 2024 18:34:19 +0200 Subject: [PATCH 06/40] Fixes QM having the possibility of becoming a head rev (#26590) --- code/game/gamemodes/revolution/revolution.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 1f0f048cc64e..12def9e3ef48 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -7,7 +7,7 @@ /datum/game_mode/revolution name = "revolution" config_tag = "revolution" - restricted_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer", "Blueshield", "Nanotrasen Representative", "Magistrate") + restricted_jobs = list("Security Officer", "Warden", "Detective", "Internal Affairs Agent", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer", "Blueshield", "Nanotrasen Representative", "Magistrate", "Quartermaster") required_players = 20 required_enemies = 1 recommended_enemies = 3 From 10ab1a87a778a6b59fc8ec6eb30fde6a569f0175 Mon Sep 17 00:00:00 2001 From: warriorstar-orion Date: Sat, 24 Aug 2024 12:37:52 -0400 Subject: [PATCH 07/40] refactor: Split up signals file. (#26538) --- code/__DEFINES/dcs/atom_signals.dm | 191 +++++ code/__DEFINES/dcs/basetype_signals.dm | 41 + code/__DEFINES/dcs/carbon_signals.dm | 75 ++ code/__DEFINES/dcs/datum_signals.dm | 141 +++ code/__DEFINES/dcs/dept_signals.dm | 42 + code/__DEFINES/dcs/global_signals.dm | 33 + code/__DEFINES/dcs/item_signals.dm | 207 +++++ code/__DEFINES/dcs/machinery_signals.dm | 34 + code/__DEFINES/dcs/mob_signals.dm | 205 +++++ code/__DEFINES/dcs/movable_signals.dm | 76 ++ code/__DEFINES/dcs/obj_signals.dm | 63 ++ code/__DEFINES/dcs/signals.dm | 1050 ----------------------- paradise.dme | 12 +- 13 files changed, 1119 insertions(+), 1051 deletions(-) create mode 100644 code/__DEFINES/dcs/atom_signals.dm create mode 100644 code/__DEFINES/dcs/basetype_signals.dm create mode 100644 code/__DEFINES/dcs/carbon_signals.dm create mode 100644 code/__DEFINES/dcs/datum_signals.dm create mode 100644 code/__DEFINES/dcs/dept_signals.dm create mode 100644 code/__DEFINES/dcs/global_signals.dm create mode 100644 code/__DEFINES/dcs/item_signals.dm create mode 100644 code/__DEFINES/dcs/machinery_signals.dm create mode 100644 code/__DEFINES/dcs/mob_signals.dm create mode 100644 code/__DEFINES/dcs/movable_signals.dm create mode 100644 code/__DEFINES/dcs/obj_signals.dm delete mode 100644 code/__DEFINES/dcs/signals.dm diff --git a/code/__DEFINES/dcs/atom_signals.dm b/code/__DEFINES/dcs/atom_signals.dm new file mode 100644 index 000000000000..30370323fb8c --- /dev/null +++ b/code/__DEFINES/dcs/atom_signals.dm @@ -0,0 +1,191 @@ +/** + * Signals for /atom and subtypes that have too few related signals to put in separate files. + * Doc format: `/// when the signal is called: (signal arguments)`. + * All signals send the source datum of the signal as the first argument + */ + +// /atom + +///from base of atom/proc/Initialize(): sent any time a new atom is created +#define COMSIG_ATOM_CREATED "atom_created" +//from SSatoms InitAtom - Only if the atom was not deleted or failed initialization +#define COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE "atom_init_success" +///from base of atom/attackby(): (/obj/item, /mob/living, params) +#define COMSIG_PARENT_ATTACKBY "atom_attackby" +///Return this in response if you don't want afterattack to be called + #define COMPONENT_NO_AFTERATTACK (1<<0) +///from base of atom/attack_hulk(): (/mob/living/carbon/human) +#define COMSIG_ATOM_HULK_ATTACK "hulk_attack" +///from base of atom/animal_attack(): (/mob/user) +#define COMSIG_ATOM_ATTACK_ANIMAL "attack_animal" +///from base of atom/examine(): (examining_user, examine_list) +#define COMSIG_PARENT_EXAMINE "atom_examine" +///from base of atom/examine_more(): (examining_user, examine_list) +#define COMSIG_PARENT_EXAMINE_MORE "atom_examine_more" +///from base of atom/get_examine_name(): (/mob, list/overrides) +#define COMSIG_ATOM_GET_EXAMINE_NAME "atom_examine_name" + //Positions for overrides list + #define EXAMINE_POSITION_ARTICLE (1<<0) + #define EXAMINE_POSITION_BEFORE (1<<1) + //End positions + #define COMPONENT_EXNAME_CHANGED (1<<0) + ///from base of [/atom/proc/update_appearance]: (updates) + #define COMSIG_ATOM_UPDATE_APPEARANCE "atom_update_appearance" + /// If returned from [COMSIG_ATOM_UPDATE_APPEARANCE] it prevents the atom from updating its name. + #define COMSIG_ATOM_NO_UPDATE_NAME UPDATE_NAME + /// If returned from [COMSIG_ATOM_UPDATE_APPEARANCE] it prevents the atom from updating its desc. + #define COMSIG_ATOM_NO_UPDATE_DESC UPDATE_DESC + /// If returned from [COMSIG_ATOM_UPDATE_APPEARANCE] it prevents the atom from updating its icon. + #define COMSIG_ATOM_NO_UPDATE_ICON UPDATE_ICON +///from base of [/atom/proc/update_name]: (updates) +#define COMSIG_ATOM_UPDATE_NAME "atom_update_name" +///from base of [/atom/proc/update_desc]: (updates) +#define COMSIG_ATOM_UPDATE_DESC "atom_update_desc" +///from base of [/atom/update_icon]: () +#define COMSIG_ATOM_UPDATE_ICON "atom_update_icon" + /// If returned from [COMSIG_ATOM_UPDATE_ICON] it prevents the atom from updating its icon state. + #define COMSIG_ATOM_NO_UPDATE_ICON_STATE UPDATE_ICON_STATE + /// If returned from [COMSIG_ATOM_UPDATE_ICON] it prevents the atom from updating its overlays. + #define COMSIG_ATOM_NO_UPDATE_OVERLAYS UPDATE_OVERLAYS +///Sent after [atom/update_icon_state] is called by [/atom/update_icon]: () +#define COMSIG_ATOM_UPDATE_ICON_STATE "atom_update_icon_state" +///Sent after [atom/update_overlays] is called by [/atom/update_icon]: (list/new_overlays) +#define COMSIG_ATOM_UPDATE_OVERLAYS "atom_update_overlays" +///from base of [/atom/update_icon]: (signalOut, did_anything) +#define COMSIG_ATOM_UPDATED_ICON "atom_updated_icon" +///from base of atom/Entered(): (atom/movable/entering, /atom) +#define COMSIG_ATOM_ENTERED "atom_entered" +///from base of atom/Exit(): (/atom/movable/exiting, /atom/newloc) +#define COMSIG_ATOM_EXIT "atom_exit" + #define COMPONENT_ATOM_BLOCK_EXIT (1<<0) +///from base of atom/Exited(): (atom/movable/exiting, atom/newloc) +#define COMSIG_ATOM_EXITED "atom_exited" +///from base of atom/Bumped(): (/atom/movable) +#define COMSIG_ATOM_BUMPED "atom_bumped" +///from base of atom/ex_act(): (severity, target) +#define COMSIG_ATOM_EX_ACT "atom_ex_act" +///from base of atom/emp_act(): (severity) +#define COMSIG_ATOM_EMP_ACT "atom_emp_act" +///from base of atom/fire_act(): (exposed_temperature, exposed_volume) +#define COMSIG_ATOM_FIRE_ACT "atom_fire_act" +///from base of atom/bullet_act(): (/obj/projectile, def_zone) +#define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" +///from base of atom/blob_act(): (/obj/structure/blob) +#define COMSIG_ATOM_BLOB_ACT "atom_blob_act" +///from base of atom/acid_act(): (acidpwr, acid_volume) +#define COMSIG_ATOM_ACID_ACT "atom_acid_act" +///from base of atom/emag_act(): (/mob/user) +#define COMSIG_ATOM_EMAG_ACT "atom_emag_act" +///from base of atom/rad_act(intensity) +#define COMSIG_ATOM_RAD_ACT "atom_rad_act" +///from base of atom/narsie_act(): () +#define COMSIG_ATOM_NARSIE_ACT "atom_narsie_act" +///from base of atom/rcd_act(): (/mob, /obj/item/construction/rcd, passed_mode) +#define COMSIG_ATOM_RCD_ACT "atom_rcd_act" +///from base of atom/singularity_pull(): (S, current_size) +#define COMSIG_ATOM_SING_PULL "atom_sing_pull" +///from obj/machinery/bsa/full/proc/fire(): () +#define COMSIG_ATOM_BSA_BEAM "atom_bsa_beam_pass" + #define COMSIG_ATOM_BLOCKS_BSA_BEAM (1<<0) +///from base of atom/set_light(): (l_range, l_power, l_color) +#define COMSIG_ATOM_SET_LIGHT "atom_set_light" +///from base of atom/setDir(): (old_dir, new_dir) +#define COMSIG_ATOM_DIR_CHANGE "atom_dir_change" +///from base of atom/handle_atom_del(): (atom/deleted) +#define COMSIG_ATOM_CONTENTS_DEL "atom_contents_del" +///from base of atom/has_gravity(): (turf/location, list/forced_gravities) +#define COMSIG_ATOM_HAS_GRAVITY "atom_has_gravity" +///from proc/get_rad_contents(): () +#define COMSIG_ATOM_RAD_PROBE "atom_rad_probe" + #define COMPONENT_BLOCK_RADIATION (1<<0) +///from base of datum/radiation_wave/radiate(): (strength) +#define COMSIG_ATOM_RAD_CONTAMINATING "atom_rad_contam" + #define COMPONENT_BLOCK_CONTAMINATION (1<<0) +///from base of datum/radiation_wave/check_obstructions(): (datum/radiation_wave, width) +#define COMSIG_ATOM_RAD_WAVE_PASSING "atom_rad_wave_pass" + #define COMPONENT_RAD_WAVE_HANDLED (1<<0) +///from base of atom/screwdriver_act(): (mob/living/user, obj/item/I) +#define COMSIG_ATOM_SCREWDRIVER_ACT "atom_screwdriver_act" +///from base of atom/wrench_act(): (mob/living/user, obj/item/I) +#define COMSIG_ATOM_WRENCH_ACT "atom_wrench_act" +///from base of atom/multitool_act(): (mob/living/user, obj/item/I) +#define COMSIG_ATOM_MULTITOOL_ACT "atom_multitool_act" +///from base of atom/welder_act(): (mob/living/user, obj/item/I) +#define COMSIG_ATOM_WELDER_ACT "atom_welder_act" +///from base of atom/wirecutter_act(): (mob/living/user, obj/item/I) +#define COMSIG_ATOM_WIRECUTTER_ACT "atom_wirecutter_act" +///from base of atom/crowbar_act(): (mob/living/user, obj/item/I) +#define COMSIG_ATOM_CROWBAR_ACT "atom_crowbar_act" +///from base of atom/analyser_act(): (mob/living/user, obj/item/I) +#define COMSIG_ATOM_ANALYSER_ACT "atom_analyser_act" + #define COMPONENT_BLOCK_TOOL_ATTACK (1<<0) +///called when teleporting into a protected turf: (channel, turf/origin) +#define COMSIG_ATOM_INTERCEPT_TELEPORT "intercept_teleport" + #define COMPONENT_BLOCK_TELEPORT (1<<0) +///called when an atom is added to the hearers on get_hearers_in_view(): (list/processing_list, list/hearers) +#define COMSIG_ATOM_HEARER_IN_VIEW "atom_hearer_in_view" +///called when an atom starts orbiting another atom: (atom) +#define COMSIG_ATOM_ORBIT_BEGIN "atom_orbit_begin" +///called when an atom stops orbiting another atom: (atom) +#define COMSIG_ATOM_ORBIT_STOP "atom_orbit_stop" +/// called on an atom who has stopped orbiting another atom (atom/orbiter, atom/formerly_orbited) +#define COMSIG_ATOM_ORBITER_STOP "atom_orbiter_stop" +///from base of atom/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) +#define COMSIG_ATOM_HITBY "atom_hitby" +/// Called when an atom is sharpened or dulled. +#define COMSIG_ATOM_UPDATE_SHARPNESS "atom_update_sharpness" +///from base of atom/atom_prehit(obj/item/projectile/P): +#define COMSIG_ATOM_PREHIT "atom_prehit" + #define ATOM_PREHIT_SUCCESS (1<<0) + #define ATOM_PREHIT_FAILURE (1<<1) + +// Attack signals. These should share the returned flags, to standardize the attack chain. +// The chain currently works like: +// tool_act -> pre_attack -> target.attackby (item.attack) -> afterattack +// You can use these signal responses to cancel the attack chain at a certain point from most attack signal types. + /// This response cancels the attack chain entirely. If sent early, it might cause some later effects to be skipped. + #define COMPONENT_CANCEL_ATTACK_CHAIN (1<<0) + +/// Called from atom/Initialize() of target: (atom/target) +#define COMSIG_ATOM_INITIALIZED_ON "atom_initialized_on" + +///from base of atom/attack_ghost(): (mob/dead/observer/ghost) +#define COMSIG_ATOM_ATTACK_GHOST "atom_attack_ghost" +///from base of atom/attack_hand(): (mob/user) +#define COMSIG_ATOM_ATTACK_HAND "atom_attack_hand" +///from base of atom/attack_paw(): (mob/user) +#define COMSIG_ATOM_ATTACK_PAW "atom_attack_paw" + #define COMPONENT_NO_ATTACK_HAND (1<<0) //works on all 3. +//This signal return value bitflags can be found in __DEFINES/misc.dm + +///called for each movable in a turf contents on /turf/zImpact(): (atom/movable/A, levels) +#define COMSIG_ATOM_INTERCEPT_Z_FALL "movable_intercept_z_impact" +///called on a movable (NOT living) when someone starts pulling it (atom/movable/puller, state, force) +#define COMSIG_ATOM_START_PULL "movable_start_pull" +///called on /living when someone starts pulling it (atom/movable/puller, state, force) +#define COMSIG_LIVING_START_PULL "living_start_pull" +///called on /living, when pull is attempted, but before it completes, from base of [/mob/living/start_pulling]: (atom/movable/thing, force) +#define COMSIG_LIVING_TRY_PULL "living_try_pull" + #define COMSIG_LIVING_CANCEL_PULL (1 << 0) + +///from base of atom/expose_reagents(): (/list, /datum/reagents, chemholder, volume_modifier) +#define COMSIG_ATOM_EXPOSE_REAGENTS "atom_expose_reagents" + +///from base of atom/Click(): (location, control, params, mob/user) +#define COMSIG_CLICK "atom_click" +///from base of atom/ShiftClick(): (/mob) +#define COMSIG_CLICK_SHIFT "shift_click" + #define COMPONENT_ALLOW_EXAMINATE (1<<0) //Allows the user to examinate regardless of client.eye. +///from base of atom/CtrlClickOn(): (/mob) +#define COMSIG_CLICK_CTRL "ctrl_click" +///from base of atom/AltClick(): (/mob) +#define COMSIG_CLICK_ALT "alt_click" + /// Cancel the alt-click, since this isn't properly part of the attack chain + #define COMPONENT_CANCEL_ALTCLICK (1<<0) +///from base of atom/CtrlShiftClick(/mob) +#define COMSIG_CLICK_CTRL_SHIFT "ctrl_shift_click" +///from base of atom/MouseDrop(): (/atom/over, /mob/user) +#define COMSIG_MOUSEDROP_ONTO "mousedrop_onto" + #define COMPONENT_NO_MOUSEDROP (1<<0) +///from base of atom/MouseDrop_T: (/atom/from, /mob/user) +#define COMSIG_MOUSEDROPPED_ONTO "mousedropped_onto" diff --git a/code/__DEFINES/dcs/basetype_signals.dm b/code/__DEFINES/dcs/basetype_signals.dm new file mode 100644 index 000000000000..b4efddc99f4f --- /dev/null +++ b/code/__DEFINES/dcs/basetype_signals.dm @@ -0,0 +1,41 @@ +/** + * Signals for base types that have too few related signals to put in separate files. + * Doc format: `/// when the signal is called: (signal arguments)`. + * All signals send the source datum of the signal as the first argument + */ + +// /client + +/// from base of client/Click(): (atom/target, atom/location, control, params, mob/user) +#define COMSIG_CLIENT_CLICK "atom_client_click" +/// from base of client/MouseDown(): (/client, object, location, control, params) +#define COMSIG_CLIENT_MOUSEDOWN "client_mousedown" +/// from base of client/MouseUp(): (/client, object, location, control, params) +#define COMSIG_CLIENT_MOUSEUP "client_mouseup" + #define COMPONENT_CLIENT_MOUSEUP_INTERCEPT (1<<0) +/// from base of client/MouseUp(): (/client, object, location, control, params) +#define COMSIG_CLIENT_MOUSEDRAG "client_mousedrag" + +/// from base of area/Entered(): (/area) +#define COMSIG_ENTER_AREA "enter_area" +/// from base of area/Exited(): (/area) +#define COMSIG_EXIT_AREA "exit_area" + +// /area + +/// from base of area/Entered(): (atom/movable/M) +#define COMSIG_AREA_ENTERED "area_entered" +///from base of area/Exited(): (atom/movable/M) +#define COMSIG_AREA_EXITED "area_exited" + +// /turf + +///from base of turf/ChangeTurf(): (path, list/new_baseturfs, flags, list/transferring_comps) +#define COMSIG_TURF_CHANGE "turf_change" +///from base of atom/has_gravity(): (atom/asker, list/forced_gravities) +#define COMSIG_TURF_HAS_GRAVITY "turf_has_gravity" +///from base of turf/New(): (turf/source, direction) +#define COMSIG_TURF_MULTIZ_NEW "turf_multiz_new" +///from base of /turf/proc/levelupdate(). (intact) true to hide and false to unhide +#define COMSIG_OBJ_HIDE "obj_hide" + diff --git a/code/__DEFINES/dcs/carbon_signals.dm b/code/__DEFINES/dcs/carbon_signals.dm new file mode 100644 index 000000000000..89af8e88b5b2 --- /dev/null +++ b/code/__DEFINES/dcs/carbon_signals.dm @@ -0,0 +1,75 @@ +/** + * Signals for /mob/living/carbon and subtypes that have too few related signals to put in separate files. + * Doc format: `/// when the signal is called: (signal arguments)`. + * All signals send the source datum of the signal as the first argument + */ + +///from base of mob/living/carbon/soundbang_act(): (list(intensity)) +#define COMSIG_CARBON_SOUNDBANG "carbon_soundbang" +///from /item/organ/proc/Insert() (/obj/item/organ/) +#define COMSIG_CARBON_GAIN_ORGAN "carbon_gain_organ" +///from /item/organ/proc/Remove() (/obj/item/organ/) +#define COMSIG_CARBON_LOSE_ORGAN "carbon_lose_organ" +///from /mob/living/carbon/doUnEquip(obj/item/I, force, newloc, no_move, invdrop, silent) +#define COMSIG_CARBON_EQUIP_HAT "carbon_equip_hat" +///from /mob/living/carbon/doUnEquip(obj/item/I, force, newloc, no_move, invdrop, silent) +#define COMSIG_CARBON_UNEQUIP_HAT "carbon_unequip_hat" +///defined twice, in carbon and human's topics, fired when interacting with a valid embedded_object to pull it out (mob/living/carbon/target, /obj/item, /obj/item/bodypart/L) +#define COMSIG_CARBON_EMBED_RIP "item_embed_start_rip" +///called when removing a given item from a mob, from mob/living/carbon/remove_embedded_object(mob/living/carbon/target, /obj/item) +#define COMSIG_CARBON_EMBED_REMOVAL "item_embed_remove_safe" +/// From /mob/living/carbon/swap_hand(): Called when the user swaps their active hand +#define COMSIG_CARBON_SWAP_HANDS "carbon_swap_hands" +/// From /mob/living/carbon/toggle_throw_mode() +#define COMSIG_CARBON_TOGGLE_THROW "carbon_toggle_throw" +/// From /mob/living/carbon/human/hitby() +#define COMSIG_CARBON_THROWN_ITEM_CAUGHT "carbon_thrown_item_caught" +/// From /mob/living/carbon/flash_eyes() +#define COMSIG_CARBON_FLASH_EYES "carbon_flash_eyes" +/// From /mob/living/carbon/update_handcuffed() +#define COMSIG_CARBON_UPDATE_HANDCUFFED "carbon_update_handcuff" +/// From /mob/living/carbon/regenerate_icons() +#define COMSIG_CARBON_REGENERATE_ICONS "carbon_regen_icons" +/// From /mob/living/carbon/enter_stamcrit() +#define COMSIG_CARBON_ENTER_STAMINACRIT "carbon_enter_staminacrit" +/// From /mob/living/carbon/update_stamina() +#define COMSIG_CARBON_EXIT_STAMINACRIT "carbon_exit_staminacrit" +/// From /mob/living/carbon/handle_status_effects() +#define COMSIG_CARBON_STAMINA_REGENERATED "carbon_stamina_regenerated" + + +///from mob/living/carbon/human/UnarmedAttack(): (atom/target, proximity) +#define COMSIG_HUMAN_EARLY_UNARMED_ATTACK "human_early_unarmed_attack" +///from mob/living/carbon/human/UnarmedAttack(): (atom/target, proximity) +#define COMSIG_HUMAN_MELEE_UNARMED_ATTACK "human_melee_unarmed_attack" +///from mob/living/carbon/human/UnarmedAttack(): (mob/living/carbon/human/attacker) +#define COMSIG_HUMAN_MELEE_UNARMED_ATTACKBY "human_melee_unarmed_attackby" +///Hit by successful disarm attack (mob/living/carbon/human/attacker,zone_targeted) +#define COMSIG_HUMAN_DISARM_HIT "human_disarm_hit" +///Whenever EquipRanked is called, called after job is set +#define COMSIG_JOB_RECEIVED "job_received" +// called after DNA is updated +#define COMSIG_HUMAN_UPDATE_DNA "human_update_dna" +/// From mob/living/carbon/human/change_body_accessory(): (mob/living/carbon/human/H, body_accessory_style) +#define COMSIG_HUMAN_CHANGE_BODY_ACCESSORY "human_change_body_accessory" + #define COMSIG_HUMAN_NO_CHANGE_APPEARANCE (1<<0) +/// From mob/living/carbon/human/change_head_accessory(): (mob/living/carbon/human/H, head_accessory_style) +#define COMSIG_HUMAN_CHANGE_HEAD_ACCESSORY "human_change_head_accessory" +//sent from living mobs when they parry +#define COMSIG_HUMAN_PARRY "human_parry" +///From base of mob/living/MobBump() (mob/living) +#define COMSIG_LIVING_MOB_BUMP "living_mob_bump" +///From mob/living/carbon/human/do_suicide() +#define COMSIG_HUMAN_SUICIDE_ACT "human_suicide_act" +/// Sent from mob/living/carbon/human/do_cpr(): (mob/living/carbon/human/H, new_seconds_of_life) +#define COMSIG_HUMAN_RECEIVE_CPR "human_receive_cpr" + +///From mob/living/carbon/human/attackedby(): (mob/living/carbon/human/attacker). Also found on species/disarm and species/harm +#define COMSIG_HUMAN_ATTACKED "human_attacked" + +///from /mob/living/carbon/human/proc/check_shields(): (atom/hit_by, damage, attack_text, attack_type, armour_penetration, damage_type) +#define COMSIG_HUMAN_CHECK_SHIELDS "human_check_shields" + #define SHIELD_BLOCK (1<<0) + +///from /mob/living/carbon/human/create_mob_hud() +#define COMSIG_HUMAN_CREATE_MOB_HUD "human_create_mob_hud" diff --git a/code/__DEFINES/dcs/datum_signals.dm b/code/__DEFINES/dcs/datum_signals.dm new file mode 100644 index 000000000000..b84db8dded7e --- /dev/null +++ b/code/__DEFINES/dcs/datum_signals.dm @@ -0,0 +1,141 @@ +/** + * Signals for /datums. + * Doc format: `/// when the signal is called: (signal arguments)`. + * All signals send the source datum of the signal as the first argument + */ + +// /datum/component + +/// when a component is added to a datum: (/datum/component) +#define COMSIG_COMPONENT_ADDED "component_added" +/// before a component is removed from a datum because of RemoveComponent: (/datum/component) +#define COMSIG_COMPONENT_REMOVING "component_removing" +/// before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation +#define COMSIG_PARENT_PREQDELETED "parent_preqdeleted" +/// just before a datum's Destroy() is called: (force), at this point none of the other components chose to interrupt qdel and Destroy will be called +#define COMSIG_PARENT_QDELETING "parent_qdeleting" +/// generic topic handler (usr, href_list) +#define COMSIG_TOPIC "handle_topic" + +/// fires on the target datum when an element is attached to it (/datum/element) +#define COMSIG_ELEMENT_ATTACH "element_attach" +/// fires on the target datum when an element is attached to it (/datum/element) +#define COMSIG_ELEMENT_DETACH "element_detach" + + +// /datum/mind + +///from base of /datum/mind/proc/transfer_to(mob/living/new_character) +#define COMSIG_MIND_TRANSER_TO "mind_transfer_to" +///called on the mob instead of the mind +#define COMSIG_BODY_TRANSFER_TO "body_transfer_to" +///called when the mind is initialized (called every time the mob logins) +#define COMSIG_MIND_INITIALIZE "mind_initialize" + +// Sent from a surgery step when blood is being splashed. (datum/surgery, mob/user, mob/target, zone, obj/item/tool) +#define COMSIG_SURGERY_BLOOD_SPLASH "surgery_blood_splash" + /// If returned from this signal, will prevent any surgery splashing. + #define COMPONENT_BLOOD_SPLASH_HANDLED (1<<0) + +// Sent from a surgery step when organs are being spread from an incision +#define COMSIG_SURGERY_GERM_SPREAD "surgery_germ_spread" + /// If returned from this signal, germ spread will be blocked. + #define COMPONENT_GERM_SPREAD_BLOCK (1<<0) + + +// /datum/species + +///from datum/species/on_species_gain(): (datum/species/new_species, datum/species/old_species) +#define COMSIG_SPECIES_GAIN "species_gain" +///from datum/species/on_species_loss(): (datum/species/lost_species) +#define COMSIG_SPECIES_LOSS "species_loss" +///from /datum/species/proc/spec_hitby() +#define COMSIG_SPECIES_HITBY "species_hitby" + + +// /datum/song + +///sent to the instrument when a song starts playing +#define COMSIG_SONG_START "song_start" +///sent to the instrument when a song stops playing +#define COMSIG_SONG_END "song_end" + + +// /datum/component/decal + +///(): Returns bitflags of wet values. +#define COMSIG_TURF_IS_WET "check_turf_wet" +///(max_strength, immediate, duration_decrease = INFINITY): Returns bool. +#define COMSIG_TURF_MAKE_DRY "make_turf_try" +///called on an object to clean it of cleanables. Usualy with soap: (num/strength) +#define COMSIG_COMPONENT_CLEAN_ACT "clean_act" + + +// /datum/component/two_handed + +///from base of datum/component/two_handed/proc/wield(mob/living/carbon/user): (/mob/user) +#define COMSIG_TWOHANDED_WIELD "twohanded_wield" + #define COMPONENT_TWOHANDED_BLOCK_WIELD (1<<0) +///from base of datum/component/two_handed/proc/unwield(mob/living/carbon/user): (/mob/user) +#define COMSIG_TWOHANDED_UNWIELD "twohanded_unwield" + + +// /datum/action + +///from base of datum/action/proc/Trigger(): (datum/action) +#define COMSIG_ACTION_TRIGGER "action_trigger" + #define COMPONENT_ACTION_BLOCK_TRIGGER (1<<0) +/// From /datum/action/Grant(): (mob/grant_to) +#define COMSIG_ACTION_GRANTED "action_grant" +/// From /datum/action/Grant(): (datum/action) +#define COMSIG_MOB_GRANTED_ACTION "mob_action_grant" +/// From /datum/action/Remove(): (mob/removed_from) +#define COMSIG_ACTION_REMOVED "action_removed" +/// From /datum/action/Remove(): (datum/action) +#define COMSIG_MOB_REMOVED_ACTION "mob_action_removed" + + +// /datum/objective + +///from datum/objective/proc/find_target(list/target_blacklist) +#define COMSIG_OBJECTIVE_TARGET_FOUND "objective_target_found" +///from datum/objective/is_invalid_target() +#define COMSIG_OBJECTIVE_CHECK_VALID_TARGET "objective_check_valid_target" + #define OBJECTIVE_VALID_TARGET (1<<0) + #define OBJECTIVE_INVALID_TARGET (1<<1) + + +/// /datum/component/defib + +/// Called when a defibrillator is first applied to someone. (mob/living/user, mob/living/target, harmful) +#define COMSIG_DEFIB_PADDLES_APPLIED "defib_paddles_applied" + /// Defib is out of power. + #define COMPONENT_BLOCK_DEFIB_DEAD (1<<0) + /// Something else: we won't have a custom message for this and should let the defib handle it. + #define COMPONENT_BLOCK_DEFIB_MISC (1<<1) +/// Called when a defib has been successfully used, and a shock has been applied. (mob/living/user, mob/living/target, harmful, successful) +#define COMSIG_DEFIB_SHOCK_APPLIED "defib_zap" +/// Called when a defib's cooldown has run its course and it is once again ready. () +#define COMSIG_DEFIB_READY "defib_ready" + + +/// /datum/alarm_manager + +#define COMSIG_TRIGGERED_ALARM "alarmmanager_triggered" +#define COMSIG_CANCELLED_ALARM "alarmmanager_cancelled" + +// other subtypes + +/// called by datum/cinematic/play() : (datum/cinematic/new_cinematic) +#define COMSIG_GLOB_PLAY_CINEMATIC "!play_cinematic" + #define COMPONENT_GLOB_BLOCK_CINEMATIC (1<<0) + +///from base of /datum/local_powernet/proc/power_change() +#define COMSIG_POWERNET_POWER_CHANGE "powernet_power_change" + +/// Sent when bodies transfer between shades/shards and constructs +/// from base of /datum/component/construct_held_body/proc/transfer_held_body() +#define COMSIG_SHADE_TO_CONSTRUCT_TRANSFER "shade_to_construct_transfer" + +///called when you wash your face at a sink: (num/strength) +#define COMSIG_COMPONENT_CLEAN_FACE_ACT "clean_face_act" diff --git a/code/__DEFINES/dcs/dept_signals.dm b/code/__DEFINES/dcs/dept_signals.dm new file mode 100644 index 000000000000..0c93af9704cc --- /dev/null +++ b/code/__DEFINES/dcs/dept_signals.dm @@ -0,0 +1,42 @@ +/** + * Signals for department mechanics. + * Doc format: `/// when the signal is called: (signal arguments)`. + * All signals send the source datum of the signal as the first argument + */ + +// Cargo shuttle + +// Sent before the shuttle scans its contents. +// Use to initialize data that will be needed during the scan. +#define COMSIG_CARGO_BEGIN_SCAN "begin_scan" +// Sent as the shuttle scans its contents. +// Can return sell flags (see code/__DEFINES/supply_defines.dm). +#define COMSIG_CARGO_CHECK_SELL "check_sell" +// Sent as the shuttle begins selling off its contents. +// Use to initialize data that will be needed during the sale. +#define COMSIG_CARGO_BEGIN_SELL "begin_sell" +// Sent during sales for items marked with COMSIG_CARGO_SELL_PRIORITY. +#define COMSIG_CARGO_DO_PRIORITY_SELL "do_priority_sell" +// Sent during sales for items marked with COMSIG_CARGO_SELL_NORMAL. +#define COMSIG_CARGO_DO_SELL "do_sell" +// Sent during sales for items marked with COMSIG_CARGO_SELL_WRONG. +#define COMSIG_CARGO_SEND_ERROR "send_error" +// Sent when sales are completed. +// Use to send summary messages for items that sell in bulk. +#define COMSIG_CARGO_END_SELL "end_sell" + + +// Xenobio hotkeys + +///from slime CtrlClickOn(): (/mob) +#define COMSIG_XENO_SLIME_CLICK_CTRL "xeno_slime_click_ctrl" +///from slime AltClickOn(): (/mob) +#define COMSIG_XENO_SLIME_CLICK_ALT "xeno_slime_click_alt" +///from slime ShiftClickOn(): (/mob) +#define COMSIG_XENO_SLIME_CLICK_SHIFT "xeno_slime_click_shift" +///from turf ShiftClickOn(): (/mob) +#define COMSIG_XENO_TURF_CLICK_SHIFT "xeno_turf_click_shift" +///from turf AltClickOn(): (/mob) +#define COMSIG_XENO_TURF_CLICK_CTRL "xeno_turf_click_alt" +///from monkey CtrlClickOn(): (/mob) +#define COMSIG_XENO_MONKEY_CLICK_CTRL "xeno_monkey_click_ctrl" diff --git a/code/__DEFINES/dcs/global_signals.dm b/code/__DEFINES/dcs/global_signals.dm new file mode 100644 index 000000000000..28a149d5412c --- /dev/null +++ b/code/__DEFINES/dcs/global_signals.dm @@ -0,0 +1,33 @@ +/** + * Signals for globally accessible objects/procs. + * Doc format: `/// when the signal is called: (signal arguments)`. + * All signals send the source datum of the signal as the first argument + */ + +///from base of datum/controller/subsystem/mapping/proc/add_new_zlevel(): (list/args) +#define COMSIG_GLOB_NEW_Z "!new_z" +/// called after a successful var edit somewhere in the world: (list/args) +#define COMSIG_GLOB_VAR_EDIT "!var_edit" +/// called after an explosion happened : (epicenter, devastation_range, heavy_impact_range, light_impact_range, took, orig_dev_range, orig_heavy_range, orig_light_range) +#define COMSIG_GLOB_EXPLOSION "!explosion" +/// job subsystem has spawned and equipped a new mob +#define COMSIG_GLOB_JOB_AFTER_SPAWN "!job_after_spawn" +///from SSsun when the sun changes position : (azimuth) +#define COMSIG_SUN_MOVED "sun_moved" +///from SSsecurity_level on planning security level change : (previous_level_number, new_level_number) +#define COMSIG_SECURITY_LEVEL_CHANGE_PLANNED "security_level_change_planned" +///from SSsecurity_level when the security level changes : (previous_level_number, new_level_number) +#define COMSIG_SECURITY_LEVEL_CHANGED "security_level_changed" + +/// mob was created somewhere : (mob) +#define COMSIG_GLOB_MOB_CREATED "!mob_created" +/// mob died somewhere : (mob , gibbed) +#define COMSIG_GLOB_MOB_DEATH "!mob_death" +/// global living say plug - use sparingly: (mob/speaker , message) +#define COMSIG_GLOB_LIVING_SAY_SPECIAL "!say_special" + +/// Called when the round has started, but before GAME_STATE_PLAYING. +#define COMSIG_TICKER_ROUND_STARTING "comsig_ticker_round_starting" + +/// Used by admin-tooling to remove radiation +#define COMSIG_ADMIN_DECONTAMINATE "admin_decontaminate" diff --git a/code/__DEFINES/dcs/item_signals.dm b/code/__DEFINES/dcs/item_signals.dm new file mode 100644 index 000000000000..f90529d6e968 --- /dev/null +++ b/code/__DEFINES/dcs/item_signals.dm @@ -0,0 +1,207 @@ +/** + * Signals for /obj/item and subtypes that have too few related signals to put in separate files. + * Doc format: `/// when the signal is called: (signal arguments)`. + * All signals send the source datum of the signal as the first argument + */ + +// /obj/item + +///from base of obj/item/attack(): (/mob/living/target, /mob/living/user) +#define COMSIG_ITEM_ATTACK "item_attack" +///from base of obj/item/attack_self(): (/mob) +#define COMSIG_ITEM_ATTACK_SELF "item_attack_self" + #define COMPONENT_NO_INTERACT (1<<0) +///from base of obj/item/attack_obj(): (/obj, /mob) +#define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" + #define COMPONENT_NO_ATTACK_OBJ (1<<0) +///from base of obj/item/pre_attack(): (atom/target, mob/user, params) +#define COMSIG_ITEM_PRE_ATTACK "item_pre_attack" + #define COMPONENT_NO_ATTACK (1<<0) +///from base of obj/item/pre_attack(): (atom/target, mob/user, params) +#define COMSIG_ITEM_BEING_ATTACKED "item_being_attacked" +///from base of obj/item/afterattack(): (atom/target, mob/user, params) +#define COMSIG_ITEM_AFTERATTACK "item_afterattack" +///from base of obj/item/attack_qdeleted(): (atom/target, mob/user, params) +#define COMSIG_ITEM_ATTACK_QDELETED "item_attack_qdeleted" +///from base of obj/item/equipped(): (/mob/equipper, slot) +///called on [/obj/item] before unequip from base of [mob/proc/doUnEquip]: (force, atom/newloc, no_move, invdrop, silent) +#define COMSIG_ITEM_PRE_UNEQUIP "item_pre_unequip" + ///only the pre unequip can be cancelled + #define COMPONENT_ITEM_BLOCK_UNEQUIP (1<<0) +#define COMSIG_ITEM_EQUIPPED "item_equip" +///from base of obj/item/dropped(): (mob/user) +#define COMSIG_ITEM_DROPPED "item_drop" +///from base of obj/item/pickup(): (/mob/taker) +#define COMSIG_ITEM_PICKUP "item_pickup" +///from base of mob/living/carbon/attacked_by(): (mob/living/carbon/target, mob/living/user, hit_zone) +#define COMSIG_ITEM_ATTACK_ZONE "item_attack_zone" +///return a truthy value to prevent ensouling, checked in /datum/spell/lichdom/cast(): (mob/user) +#define COMSIG_ITEM_IMBUE_SOUL "item_imbue_soul" +///called before marking an object for retrieval, checked in /datum/spell/summonitem/cast() : (mob/user) +#define COMSIG_ITEM_MARK_RETRIEVAL "item_mark_retrieval" + #define COMPONENT_BLOCK_MARK_RETRIEVAL (1<<0) +///from base of obj/item/hit_reaction(): (list/args) +#define COMSIG_ITEM_HIT_REACT "item_hit_react" + #define COMPONENT_BLOCK_SUCCESSFUL (1 << 0) + #define COMPONENT_BLOCK_PERFECT (1 << 2) +///called on item when crossed by something (): (/atom/movable, mob/living/crossed) +#define COMSIG_ITEM_WEARERCROSSED "wearer_crossed" +///called on item when microwaved (): (obj/machinery/microwave/M) +#define COMSIG_ITEM_MICROWAVE_ACT "microwave_act" +///from base of item/sharpener/attackby(): (amount, max) +#define COMSIG_ITEM_SHARPEN_ACT "sharpen_act" + #define COMPONENT_SHARPEN_APPLIED (1<<0) + #define COMPONENT_BLOCK_SHARPEN_BLOCKED (1<<1) + #define COMPONENT_BLOCK_SHARPEN_ALREADY (1<<2) + #define COMPONENT_BLOCK_SHARPEN_MAXED (1<<3) +///from base of [/obj/item/proc/tool_check_callback]: (mob/living/user) +#define COMSIG_TOOL_IN_USE "tool_in_use" +///from base of [/obj/item/proc/tool_start_check]: (mob/living/user) +#define COMSIG_TOOL_START_USE "tool_start_use" +///from base of [/obj/item/proc/tool_attack_chain]: (atom/tool, mob/user) +#define COMSIG_TOOL_ATTACK "tool_attack" + #define COMPONENT_CANCEL_TOOLACT (1<<0) +///from [/obj/item/proc/disableEmbedding]: +#define COMSIG_ITEM_DISABLE_EMBED "item_disable_embed" +///from [/obj/effect/mine/proc/triggermine]: +#define COMSIG_MINE_TRIGGERED "minegoboom" +/// Called by /obj/item/proc/worn_overlays(list/overlays, mutable_appearance/standing, isinhands, icon_file) +#define COMSIG_ITEM_GET_WORN_OVERLAYS "item_get_worn_overlays" +/// Called by /obj/item/assembly/signaler(called_from_radio) +#define COMSIG_ASSEMBLY_PULSED "item_assembly_pulsed" + +///called when an item is sold by the exports subsystem +#define COMSIG_ITEM_SOLD "item_sold" +///called when a wrapped up structure is opened by hand +#define COMSIG_STRUCTURE_UNWRAPPED "structure_unwrapped" +#define COMSIG_ITEM_UNWRAPPED "item_unwrapped" +///called when a wrapped up item is opened by hand + #define COMSIG_ITEM_SPLIT_VALUE (1<<0) +///called when getting the item's exact ratio for cargo's profit. +#define COMSIG_ITEM_SPLIT_PROFIT "item_split_profits" +///called when getting the item's exact ratio for cargo's profit, without selling the item. +#define COMSIG_ITEM_SPLIT_PROFIT_DRY "item_split_profits_dry" + +// /obj/item/clothing + +///from [/mob/living/carbon/human/Move]: () +#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" +///from base of /obj/item/clothing/suit/space/proc/toggle_spacesuit(): (obj/item/clothing/suit/space/suit) +#define COMSIG_SUIT_SPACE_TOGGLE "suit_space_toggle" + +// /obj/item/implant + +///from base of /obj/item/bio_chip/proc/activate(): () +#define COMSIG_IMPLANT_ACTIVATED "implant_activated" +///from base of /obj/item/bio_chip/proc/implant(): (list/args) +#define COMSIG_IMPLANT_IMPLANTING "implant_implanting" + #define COMPONENT_STOP_IMPLANTING (1<<0) +///called on already installed implants when a new one is being added in /obj/item/bio_chip/proc/implant(): (list/args, obj/item/bio_chip/new_implant) +#define COMSIG_IMPLANT_OTHER "implant_other" + //#define COMPONENT_STOP_IMPLANTING (1<<0) //The name makes sense for both + #define COMPONENT_DELETE_NEW_IMPLANT (1<<1) + #define COMPONENT_DELETE_OLD_IMPLANT (1<<2) +///called on implants being implanted into someone with an uplink implant: (datum/component/uplink) +#define COMSIG_IMPLANT_EXISTING_UPLINK "implant_uplink_exists" + //This uses all return values of COMSIG_IMPLANT_OTHER + +/// called on implants, after a successful implantation: (mob/living/target, mob/user, silent, force) +#define COMSIG_IMPLANT_IMPLANTED "implant_implanted" + +/// called on implants, after an implant has been removed: (mob/living/source, silent, special) +#define COMSIG_IMPLANT_REMOVED "implant_removed" + + +// /obj/item/pda + +///called on pda when the user changes the ringtone: (mob/living/user, new_ringtone) +#define COMSIG_PDA_CHANGE_RINGTONE "pda_change_ringtone" + #define COMPONENT_STOP_RINGTONE_CHANGE (1<<0) +#define COMSIG_PDA_CHECK_DETONATE "pda_check_detonate" + #define COMPONENT_PDA_NO_DETONATE (1<<0) + + +// /obj/item/radio + +///called from base of /obj/item/radio/proc/set_frequency(): (list/args) +#define COMSIG_RADIO_NEW_FREQUENCY "radio_new_frequency" + + +// /obj/item/pen + +///called after rotation in /obj/item/pen/attack_self(): (rotation, mob/living/carbon/user) +#define COMSIG_PEN_ROTATED "pen_rotated" + + +// /obj/item/gun + +///called in /obj/item/gun/fire_gun (user, target, flag, params) +#define COMSIG_GUN_TRY_FIRE "gun_try_fire" + #define COMPONENT_CANCEL_GUN_FIRE (1<<0) +///called in /obj/item/gun/afterattack (user, target, flag, params) +#define COMSIG_MOB_TRY_FIRE "mob_fired_gun" +///called in /obj/item/gun/process_fire (user, target) +#define COMSIG_GUN_FIRED "gun_fired" +/// called in /datum/component/automatic_fire/proc/on_mouse_down: (client/clicker, atom/target, turf/location, control, params) +#define COMSIG_AUTOFIRE_ONMOUSEDOWN "autofire_onmousedown" + #define COMPONENT_AUTOFIRE_ONMOUSEDOWN_BYPASS (1<<0) +/// called in /datum/component/automatic_fire/proc/process_shot(): (atom/target, mob/living/shooter, allow_akimbo, params) +#define COMSIG_AUTOFIRE_SHOT "autofire_shot" + #define COMPONENT_AUTOFIRE_SHOT_SUCCESS (1<<0) + + +// /obj/item/grenade + +///called in /obj/item/gun/process_fire (user, target, params, zone_override) +#define COMSIG_GRENADE_PRIME "grenade_prime" +///called in /obj/item/gun/process_fire (user, target, params, zone_override) +#define COMSIG_GRENADE_ARMED "grenade_armed" + + +// /obj/item/mod + +/// Called when a module is selected to be the active one from on_select(obj/item/mod/module/module) +#define COMSIG_MOD_MODULE_SELECTED "mod_module_selected" +/// Called when a MOD deploys one or more of its parts. +#define COMSIG_MOD_DEPLOYED "mod_deployed" +/// Called when a MOD retracts one or more of its parts. +#define COMSIG_MOD_RETRACTED "mod_retracted" +/// Called when a MOD is finished toggling itself. +#define COMSIG_MOD_TOGGLED "mod_toggled" +/// Called when a MOD activation is called from toggle_activate(mob/user) +#define COMSIG_MOD_ACTIVATE "mod_activate" + /// Cancels the suit's activation + #define MOD_CANCEL_ACTIVATE (1 << 0) +/// Called when a MOD finishes having a module removed from it. +#define COMSIG_MOD_MODULE_REMOVED "mod_module_removed" +/// Called when a MOD finishes having a module added to it. +#define COMSIG_MOD_MODULE_ADDED "mod_module_added" +/// Called when a MOD is having modules removed from crowbar_act(mob/user, obj/crowbar) +#define COMSIG_MOD_MODULE_REMOVAL "mod_module_removal" + /// Cancels the removal of modules + #define MOD_CANCEL_REMOVAL (1 << 0) +/// Called when a module attempts to activate, however it does. At the end of checks so you can add some yourself, or work on trigger behavior (mob/user) +#define COMSIG_MODULE_TRIGGERED "mod_module_triggered" + /// Cancels activation, with no message. Include feedback on your cancel. + #define MOD_ABORT_USE (1<<0) +/// Called when a module activates, after all checks have passed and cooldown started. +#define COMSIG_MODULE_ACTIVATED "mod_module_activated" +/// Called when a module deactivates, after all checks have passed. +#define COMSIG_MODULE_DEACTIVATED "mod_module_deactivated" +/// Called when a module is used, after all checks have passed and cooldown started. +#define COMSIG_MODULE_USED "mod_module_used" +/// Called when the MODsuit wearer is set. +#define COMSIG_MOD_WEARER_SET "mod_wearer_set" +/// Called when the MODsuit wearer is unset. +#define COMSIG_MOD_WEARER_UNSET "mod_wearer_unset" + + +// /obj/item/food + +///from base of obj/item/food/attack(): (mob/living/eater, mob/feeder) +#define COMSIG_FOOD_EATEN "food_eaten" + +/// from base of /obj/item/slimepotion/speed/afterattack(): (obj/target, /obj/src, mob/user) +#define COMSIG_SPEED_POTION_APPLIED "speed_potion" + #define SPEED_POTION_STOP (1<<0) + diff --git a/code/__DEFINES/dcs/machinery_signals.dm b/code/__DEFINES/dcs/machinery_signals.dm new file mode 100644 index 000000000000..1b368ab614c6 --- /dev/null +++ b/code/__DEFINES/dcs/machinery_signals.dm @@ -0,0 +1,34 @@ +/** + * Signals for /obj/machinery and subtypes that have too few related signals to put in separate files. + * Doc format: `/// when the signal is called: (signal arguments)`. + * All signals send the source datum of the signal as the first argument + */ + +///from /obj/machinery/obj_break(damage_flag): (damage_flag) +#define COMSIG_MACHINERY_BROKEN "machinery_broken" +///from base power_change() when power is lost +#define COMSIG_MACHINERY_POWER_LOST "machinery_power_lost" +///from base power_change() when power is restored +#define COMSIG_MACHINERY_POWER_RESTORED "machinery_power_restored" + + +// /obj/machinery/camera + +#define COMSIG_CAMERA_ON "camera_on" +#define COMSIG_CAMERA_OFF "camera_off" +#define COMSIG_CAMERA_MOVED "camera_moved" + + +// /obj/machinery/door + +#define COMSIG_DOOR_OPEN "door_open" +#define COMSIG_DOOR_CLOSE "door_close" + + +// /obj/machinery/door/airlock + +#define COMSIG_AIRLOCK_OPEN "airlock_open" +#define COMSIG_AIRLOCK_CLOSE "airlock_close" + +/// ingame button pressed (/obj/machinery/button/button) +#define COMSIG_GLOB_BUTTON_PRESSED "!button_pressed" diff --git a/code/__DEFINES/dcs/mob_signals.dm b/code/__DEFINES/dcs/mob_signals.dm new file mode 100644 index 000000000000..406d4541a286 --- /dev/null +++ b/code/__DEFINES/dcs/mob_signals.dm @@ -0,0 +1,205 @@ +/** + * Signals for /mob, /mob/living, and subtypes that have too few related signals to put in separate files. + * Doc format: `/// when the signal is called: (signal arguments)`. + * All signals send the source datum of the signal as the first argument + */ + +///from base of /mob/Login(): () +#define COMSIG_MOB_LOGIN "mob_login" +///called in human/login +#define COMSIG_HUMAN_LOGIN "human_login" +///from base of /mob/Logout(): () +#define COMSIG_MOB_LOGOUT "mob_logout" +///from base of mob/death(): (gibbed) +#define COMSIG_MOB_DEATH "mob_death" +///from base of mob/set_stat(): (new_stat) +#define COMSIG_MOB_STATCHANGE "mob_statchange" +///from base of mob/clickon(): (atom/A, params) +#define COMSIG_MOB_CLICKON "mob_clickon" +///from base of mob/MiddleClickOn(): (atom/A) +#define COMSIG_MOB_MIDDLECLICKON "mob_middleclickon" +///from base of mob/AltClickOn(): (atom/A) +#define COMSIG_MOB_ALTCLICKON "mob_altclickon" + #define COMSIG_MOB_CANCEL_CLICKON (1<<0) + +///from base of obj/allowed(mob/M): (/obj) returns bool, if TRUE the mob has id access to the obj +#define COMSIG_MOB_ALLOWED "mob_allowed" +///from base of mob/anti_magic_check(): (mob/user, magic, holy, tinfoil, chargecost, self, protection_sources) +#define COMSIG_MOB_RECEIVE_MAGIC "mob_receive_magic" + #define COMPONENT_BLOCK_MAGIC (1<<0) +///from base of mob/create_mob_hud(): () +#define COMSIG_MOB_HUD_CREATED "mob_hud_created" +///from base of atom/attack_hand(): (mob/user) +#define COMSIG_MOB_ATTACK_HAND "mob_attack_hand" +///from base of /obj/item/attack(): (mob/M, mob/user) +#define COMSIG_MOB_ITEM_ATTACK "mob_item_attack" + #define COMPONENT_ITEM_NO_ATTACK (1<<0) +///from base of /mob/living/proc/apply_damage(): (damage, damagetype, def_zone) +#define COMSIG_MOB_APPLY_DAMAGE "mob_apply_damage" +///from base of obj/item/afterattack(): (atom/target, mob/user, proximity_flag, click_parameters) +#define COMSIG_MOB_ITEM_AFTERATTACK "mob_item_afterattack" +///from base of obj/item/attack_qdeleted(): (atom/target, mob/user, proxiumity_flag, click_parameters) +#define COMSIG_MOB_ITEM_ATTACK_QDELETED "mob_item_attack_qdeleted" +///from base of mob/RangedAttack(): (atom/A, params) +#define COMSIG_MOB_ATTACK_RANGED "mob_attack_ranged" +///from base of /mob/throw_item(): (atom/target) +#define COMSIG_MOB_THROW "mob_throw" +///called when a user willingly drops something (i.e. keybind, or UI action) +#define COMSIG_MOB_WILLINGLY_DROP "mob_willingly_drop" +///called when a user is getting new weapon and we want to remove previous weapon to clear hands +#define COMSIG_MOB_WEAPON_APPEARS "mob_weapon_appears" +///from base of /mob/verb/examinate(): (atom/target) +#define COMSIG_MOB_EXAMINATE "mob_examinate" +///from base of /mob/update_sight(): () +#define COMSIG_MOB_UPDATE_SIGHT "mob_update_sight" +////from /mob/living/say(): () +#define COMSIG_MOB_SAY "mob_say" + #define COMPONENT_UPPERCASE_SPEECH (1<<0) + // used to access COMSIG_MOB_SAY argslist + #define SPEECH_MESSAGE 1 + // #define SPEECH_BUBBLE_TYPE 2 + #define SPEECH_SPANS 3 + /* #define SPEECH_SANITIZE 4 + #define SPEECH_LANGUAGE 5 + #define SPEECH_IGNORE_SPAM 6 + #define SPEECH_FORCED 7 */ + +///from /mob/say_dead(): (mob/speaker, message) +#define COMSIG_MOB_DEADSAY "mob_deadsay" + #define MOB_DEADSAY_SIGNAL_INTERCEPT (1<<0) + +/// Signal fired when an emote is used but before it's executed. +///from /datum/emote/proc/try_run_emote(): (key, intentional) +#define COMSIG_MOB_PREEMOTE "mob_preemote" + // Use these to block execution of emotes from components. + /// Return this to block an emote and let the user know the emote is unusable. + #define COMPONENT_BLOCK_EMOTE_UNUSABLE (1<<0) + /// Return this to block an emote silently. + #define COMPONENT_BLOCK_EMOTE_SILENT (1<<1) +/// General signal fired when a mob does any old emote +///from /datum/emote/proc/run_emote(): (key, intentional) +#define COMSIG_MOB_EMOTE "mob_emote" +/// Specific signal used to track when a specific emote is used. +/// From /datum/emote/run_emote(): (P, key, m_type, message, intentional) +#define COMSIG_MOB_EMOTED(emote_key) "mob_emoted_[emote_key]" +/// From /datum/emote/select_param(): (target, key, intentional) +#define COMSIG_MOB_EMOTE_AT "mob_emote_at" + #define COMPONENT_BLOCK_EMOTE_ACTION (1<<2) + +///from base of mob/swap_hand(): (obj/item) +#define COMSIG_MOB_SWAPPING_HANDS "mob_swapping_hands" + /// Prevent the mob from changing hands + #define COMPONENT_BLOCK_SWAP (1<<0) + +/// Performed after the hands are swapped. +#define COMSIG_MOB_SWAPPED_HANDS "mob_swap_hands" + +#define COMSIG_MOB_AUTOMUTE_CHECK "automute_check" + #define WAIVE_AUTOMUTE_CHECK (1<<0) + +///Called when movement intent is toggled. +#define COMSIG_MOVE_INTENT_TOGGLED "move_intent_toggled" + +// /mob/living + +///from base of mob/living/resist() (/mob/living) +#define COMSIG_LIVING_RESIST "living_resist" +///from base of mob/living/IgniteMob() (/mob/living) +#define COMSIG_LIVING_IGNITED "living_ignite" +///from base of mob/living/ExtinguishMob() (/mob/living) +#define COMSIG_LIVING_EXTINGUISHED "living_extinguished" +///from base of mob/living/electrocute_act(): (shock_damage, source, siemens_coeff, flags) +#define COMSIG_LIVING_ELECTROCUTE_ACT "living_electrocute_act" +///sent when items with siemen coeff. of 0 block a shock: (power_source, source, siemens_coeff, dist_check) +#define COMSIG_LIVING_SHOCK_PREVENTED "living_shock_prevented" +///sent by stuff like stunbatons and tasers: () +#define COMSIG_LIVING_MINOR_SHOCK "living_minor_shock" +///Sent from defibrillators when everything seems good and the user will be shocked: (defibber, defib_item, ghost) +#define COMSIG_LIVING_PRE_DEFIB "living_pre_defib" + /// If returned from LIVING_BEFORE_DEFIB or LIVING_DEFIBBED, the defibrillation will fail + #define COMPONENT_BLOCK_DEFIB (1<<0) + /// If returned, don't even show the "failed" message, defer to the signal handler to do that. + #define COMPONENT_DEFIB_OVERRIDE (1<<1) + /// If returned, allow to revive through false death. + #define COMPONENT_DEFIB_FAKEDEATH_ACCEPTED (1<<2) + /// If returned, make the fake death look like a unresponsive ghost. + #define COMPONENT_DEFIB_FAKEDEATH_DENIED (1<<3) +///send from defibs on ressurection: (defibber, defib_item, ghost) +#define COMSIG_LIVING_DEFIBBED "living_defibbed" +///from base of mob/living/revive() (full_heal, admin_revive) +#define COMSIG_LIVING_REVIVE "living_revive" +///from base of /mob/living/regenerate_limbs(): (noheal, excluded_limbs) +#define COMSIG_LIVING_REGENERATE_LIMBS "living_regen_limbs" +///from base of /obj/item/bodypart/proc/attach_limb(): (new_limb, special) allows you to fail limb attachment +#define COMSIG_LIVING_ATTACH_LIMB "living_attach_limb" + #define COMPONENT_NO_ATTACH (1<<0) +///sent from borg recharge stations: (amount, repairs) +#define COMSIG_PROCESS_BORGCHARGER_OCCUPANT "living_charge" +///sent when a mob enters a borg charger +#define COMSIG_ENTERED_BORGCHARGER "enter_charger" +///sent when a mob exits a borg charger +#define COMSIG_EXITED_BORGCHARGER "exit_charger" +///sent when a mob/login() finishes: (client) +#define COMSIG_MOB_CLIENT_LOGIN "comsig_mob_client_login" +///sent from borg mobs to itself, for tools to catch an upcoming destroy() due to safe decon (rather than detonation) +#define COMSIG_BORG_SAFE_DECONSTRUCT "borg_safe_decon" +///sent from living mobs every tick of fire +#define COMSIG_LIVING_FIRE_TICK "living_fire_tick" +//sent from living mobs when they are ahealed +#define COMSIG_LIVING_AHEAL "living_aheal" +//sent from mobs when they exit their body as a ghost +#define COMSIG_LIVING_GHOSTIZED "ghostized" +//sent from mobs when they re-enter their body as a ghost +#define COMSIG_LIVING_REENTERED_BODY "reentered_body" +//sent from a mob when they set themselves to DNR +#define COMSIG_LIVING_SET_DNR "set_dnr" + +//ALL OF THESE DO NOT TAKE INTO ACCOUNT WHETHER AMOUNT IS 0 OR LOWER AND ARE SENT REGARDLESS! +// none of these are called as of right now, as there is nothing listening for them. +///from base of mob/living/Stun() (amount, ignore_canstun) +#define COMSIG_LIVING_STATUS_STUN "living_stun" +///from base of mob/living/Stun() (amount, ignore_canstun) +#define COMSIG_LIVING_STATUS_WEAKEN "living_weaken" +///from base of mob/living/Knockdown() (amount, ignore_canstun) +///#define COMSIG_LIVING_STATUS_KNOCKDOWN "living_knockdown" // one day +///from base of mob/living/Paralyse() (amount, ignore_canstun) +#define COMSIG_LIVING_STATUS_PARALYSE "living_paralyse" +///from base of mob/living/Immobilize() (amount, ignore_canstun) +#define COMSIG_LIVING_STATUS_IMMOBILIZE "living_immobilize" +///from base of mob/living/Unconscious() (amount, ignore_canstun) +#define COMSIG_LIVING_STATUS_UNCONSCIOUS "living_unconscious" +///from base of mob/living/Sleeping() (amount, ignore_canstun) +#define COMSIG_LIVING_STATUS_SLEEP "living_sleeping" + #define COMPONENT_NO_STUN (1<<0) //For all of them +///from base of /mob/living/can_track(): (mob/user) +#define COMSIG_LIVING_CAN_TRACK "mob_cantrack" + #define COMPONENT_CANT_TRACK (1<<0) + +///from base of mob/living/Write_Memory() +#define COMSIG_LIVING_WRITE_MEMORY "living_write_memory" + #define COMPONENT_DONT_WRITE_MEMORY (1<<0) + +// /mob/living/simple_animal signals +///from /mob/living/simple_animal/handle_environment() +#define COMSIG_SIMPLEANIMAL_HANDLE_ENVIRONMENT "simpleanimal_handle_environment" + +// /mob/living/simple_animal/hostile signals +#define COMSIG_HOSTILE_ATTACKINGTARGET "hostile_attackingtarget" + #define COMPONENT_HOSTILE_NO_ATTACK (1<<0) +//Called when a /mob/living/simple_animal/hostile fines a new target: (atom/source, give_target) +#define COMSIG_HOSTILE_FOUND_TARGET "comsig_hostile_found_target" + +///from of mob/MouseDrop(): (/atom/over, /mob/user) +#define COMSIG_DO_MOB_STRIP "do_mob_strip" + +// Sent when a mob spawner is attacked directly or via projectile. +#define COMSIG_SPAWNER_SET_TARGET "spawner_set_target" + +// ghost signals + +/// from observer_base/do_observe(): (mob/now_followed) +#define COMSIG_GHOST_START_OBSERVING "ghost_start_observing" +/// from observer_base/do_observe(): (mob/no_longer_following) +#define COMSIG_GHOST_STOP_OBSERVING "ghost_stop_observing" + +#define COMSIG_LIVING_CLEAR_STUNS "living_clear_stuns" diff --git a/code/__DEFINES/dcs/movable_signals.dm b/code/__DEFINES/dcs/movable_signals.dm new file mode 100644 index 000000000000..af529e08601c --- /dev/null +++ b/code/__DEFINES/dcs/movable_signals.dm @@ -0,0 +1,76 @@ +/** + * Signals for /atom/movable and subtypes that have too few related signals to put in separate files. + * Doc format: `/// when the signal is called: (signal arguments)`. + * All signals send the source datum of the signal as the first argument + */ + +///from base of atom/movable/Moved(): (/atom) +#define COMSIG_MOVABLE_PRE_MOVE "movable_pre_move" + #define COMPONENT_MOVABLE_BLOCK_PRE_MOVE (1<<0) +///from base of atom/movable/Moved(): (/atom, dir) +#define COMSIG_MOVABLE_MOVED "movable_moved" +///from base of atom/movable/Cross(): (/atom/movable) +#define COMSIG_MOVABLE_CROSS "movable_cross" +///from base of atom/movable/Crossed(): (/atom/movable) +#define COMSIG_MOVABLE_CROSSED "movable_crossed" +///when we cross over something (calling Crossed() on that atom) +#define COMSIG_CROSSED_MOVABLE "crossed_movable" +///from base of atom/movable/Uncross(): (/atom/movable) +#define COMSIG_MOVABLE_UNCROSS "movable_uncross" + #define COMPONENT_MOVABLE_BLOCK_UNCROSS (1<<0) +///from base of atom/movable/Uncrossed(): (/atom/movable) +#define COMSIG_MOVABLE_UNCROSSED "movable_uncrossed" +///from base of atom/movable/Bump(): (/atom) +#define COMSIG_MOVABLE_BUMP "movable_bump" +///from base of atom/movable/throw_impact(): (/atom/hit_atom, /datum/thrownthing/throwingdatum) +#define COMSIG_MOVABLE_IMPACT "movable_impact" + #define COMPONENT_MOVABLE_IMPACT_FLIP_HITPUSH (1<<0) //if true, flip if the impact will push what it hits + #define COMPONENT_MOVABLE_IMPACT_NEVERMIND (1<<1) //return true if you destroyed whatever it was you're impacting and there won't be anything for hitby() to run on +///from base of mob/living/hitby(): (mob/living/target, hit_zone) +#define COMSIG_MOVABLE_IMPACT_ZONE "item_impact_zone" +///from /atom/movable/proc/buckle_mob(): (mob/living/M, force, check_loc, buckle_mob_flags) +#define COMSIG_MOVABLE_PREBUCKLE "prebuckle" // this is the last chance to interrupt and block a buckle before it finishes + #define COMPONENT_BLOCK_BUCKLE (1<<0) +///from base of atom/movable/buckle_mob(): (mob, force) +#define COMSIG_MOVABLE_BUCKLE "buckle" +///from base of atom/movable/unbuckle_mob(): (mob, force) +#define COMSIG_MOVABLE_UNBUCKLE "unbuckle" +///from /obj/vehicle/proc/driver_move, caught by the riding component to check and execute the driver trying to drive the vehicle +#define COMSIG_RIDDEN_DRIVER_MOVE "driver_move" + #define COMPONENT_DRIVER_BLOCK_MOVE (1<<0) +///from base of atom/movable/throw_at(): (list/args) +#define COMSIG_MOVABLE_PRE_THROW "movable_pre_throw" + #define COMPONENT_CANCEL_THROW (1<<0) +///from base of atom/movable/throw_at(): (datum/thrownthing, spin) +#define COMSIG_MOVABLE_POST_THROW "movable_post_throw" +///from base of datum/thrownthing/finalize(): (obj/thrown_object, datum/thrownthing) used for when a throw is finished +#define COMSIG_MOVABLE_THROW_LANDED "movable_throw_landed" +///from base of atom/movable/onTransitZ(): (old_z, new_z) +#define COMSIG_MOVABLE_Z_CHANGED "movable_ztransit" +///called when the movable is placed in an unaccessible area, used for stationloving: () +#define COMSIG_MOVABLE_SECLUDED_LOCATION "movable_secluded" +///from base of atom/movable/Hear(): (proc args list(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode)) +#define COMSIG_MOVABLE_HEAR "movable_hear" + #define HEARING_MESSAGE 1 + #define HEARING_SPEAKER 2 + #define HEARING_RAW_MESSAGE 4 + +/// Called just before something gets untilted +#define COMSIG_MOVABLE_TRY_UNTILT "movable_try_untilt" + /// Return this to block an untilt attempt + #define COMPONENT_BLOCK_UNTILT (1<<0) +/// Called when something gets untilted, from /datum/element/tilted/proc/do_untilt(atom/movable/source, mob/user) +#define COMSIG_MOVABLE_UNTILTED "movable_untilted" + +///called when the movable is added to a disposal holder object for disposal movement: (obj/structure/disposalholder/holder, obj/machinery/disposal/source) +#define COMSIG_MOVABLE_DISPOSING "movable_disposing" +///called when the movable is removed from a disposal holder object: /obj/structure/disposalpipe/proc/expel(): (obj/structure/disposalholder/H, turf/T, direction) +#define COMSIG_MOVABLE_EXIT_DISPOSALS "movable_exit_disposals" + +/// from base of atom/movable/Process_Spacemove(): (movement_dir, continuous_move) +#define COMSIG_MOVABLE_SPACEMOVE "spacemove" + #define COMSIG_MOVABLE_STOP_SPACEMOVE (1<<0) + +// Note that this is only defined for actions because this could be a good bit expensive otherwise +/// From base of /atom/movable/screen/movable/action_button/MouseWheel(src, delta_x, delta_y, location, control, params) +#define COMSIG_ACTION_SCROLLED "action_scrolled" diff --git a/code/__DEFINES/dcs/obj_signals.dm b/code/__DEFINES/dcs/obj_signals.dm new file mode 100644 index 000000000000..d002a32fe188 --- /dev/null +++ b/code/__DEFINES/dcs/obj_signals.dm @@ -0,0 +1,63 @@ +/** + * Signals for /obj and subtypes that have too few related signals to put in separate files. + * Doc format: `/// when the signal is called: (signal arguments)`. + * All signals send the source datum of the signal as the first argument + */ + +// /obj + +///from base of obj/deconstruct(): (disassembled) +#define COMSIG_OBJ_DECONSTRUCT "obj_deconstruct" +///called in /obj/structure/setAnchored(): (value) +#define COMSIG_OBJ_SETANCHORED "obj_setanchored" +///from base of code/game/machinery +#define COMSIG_OBJ_DEFAULT_UNFASTEN_WRENCH "obj_default_unfasten_wrench" +///called in /obj/update_icon() +#define COMSIG_OBJ_UPDATE_ICON "obj_update_icon" + + +// /obj/projectile (sent to the firer) + +///from base of /obj/projectile/proc/on_hit(): (atom/movable/firer, atom/target, Angle) +#define COMSIG_PROJECTILE_SELF_ON_HIT "projectile_self_on_hit" +///from base of /obj/projectile/proc/on_hit(): (atom/movable/firer, atom/target, Angle) +#define COMSIG_PROJECTILE_ON_HIT "projectile_on_hit" +///from base of /obj/projectile/proc/fire(): (obj/projectile, atom/original_target) +#define COMSIG_PROJECTILE_BEFORE_FIRE "projectile_before_fire" +///from the base of /obj/projectile/proc/fire(): () +#define COMSIG_PROJECTILE_FIRE "projectile_fire" +///sent to targets during the process_hit proc of projectiles +#define COMSIG_PROJECTILE_PREHIT "com_proj_prehit" +///sent to targets during the process_hit proc of projectiles +#define COMSIG_PROJECTILE_RANGE_OUT "projectile_range_out" +///sent when trying to force an embed (mainly for projectiles, only used in the embed element) +#define COMSIG_EMBED_TRY_FORCE "item_try_embed" +///sent to targets during the process_hit proc of projectiles +#define COMSIG_PELLET_CLOUD_INIT "pellet_cloud_init" + + +// /obj/mecha + +///sent from mecha action buttons to the mecha they're linked to +#define COMSIG_MECHA_ACTION_ACTIVATE "mecha_action_activate" + +/// cable was placed or joined somewhere : (turf) +#define COMSIG_GLOB_CABLE_UPDATED "!cable_updated" + + +// /obj/structure/cursed_slot_machine + +/// from /obj/structure/cursed_slot_machine/handle_status_effect() when someone pulls the handle on the slot machine +#define COMSIG_CURSED_SLOT_MACHINE_USE "cursed_slot_machine_use" + #define SLOT_MACHINE_USE_CANCEL (1<<0) //! we've used up the number of times we may use this slot machine. womp womp. + #define SLOT_MACHINE_USE_POSTPONE (1<<1) //! we haven't used up all our attempts to gamble away our life but we should chill for a few seconds +/// from /obj/structure/cursed_slot_machine/determine_victor() when someone loses. +#define COMSIG_CURSED_SLOT_MACHINE_LOST "cursed_slot_machine_lost" +/// from /obj/structure/cursed_slot_machine/determine_victor() when someone finally wins. +#define COMSIG_GLOB_CURSED_SLOT_MACHINE_WON "cursed_slot_machine_won" + + +// other subtypes + +///from base of /obj/effect/decal/cleanable/blood/gibs/streak(): (list/directions, list/diseases) +#define COMSIG_GIBS_STREAK "gibs_streak" diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm deleted file mode 100644 index 07c33b97a78e..000000000000 --- a/code/__DEFINES/dcs/signals.dm +++ /dev/null @@ -1,1050 +0,0 @@ -// All signals. Format: -// When the signal is called: (signal arguments) -// All signals send the source datum of the signal as the first argument - -// global signals -// These are signals which can be listened to by any component on any parent -// start global signals with "!", this used to be necessary but now it's just a formatting choice - -///from base of datum/controller/subsystem/mapping/proc/add_new_zlevel(): (list/args) -#define COMSIG_GLOB_NEW_Z "!new_z" -/// called after a successful var edit somewhere in the world: (list/args) -#define COMSIG_GLOB_VAR_EDIT "!var_edit" -/// called after an explosion happened : (epicenter, devastation_range, heavy_impact_range, light_impact_range, took, orig_dev_range, orig_heavy_range, orig_light_range) -#define COMSIG_GLOB_EXPLOSION "!explosion" -/// mob was created somewhere : (mob) -#define COMSIG_GLOB_MOB_CREATED "!mob_created" -/// mob died somewhere : (mob , gibbed) -#define COMSIG_GLOB_MOB_DEATH "!mob_death" -/// global living say plug - use sparingly: (mob/speaker , message) -#define COMSIG_GLOB_LIVING_SAY_SPECIAL "!say_special" -/// called by datum/cinematic/play() : (datum/cinematic/new_cinematic) -#define COMSIG_GLOB_PLAY_CINEMATIC "!play_cinematic" - #define COMPONENT_GLOB_BLOCK_CINEMATIC (1<<0) -/// ingame button pressed (/obj/machinery/button/button) -#define COMSIG_GLOB_BUTTON_PRESSED "!button_pressed" - -/// job subsystem has spawned and equipped a new mob -#define COMSIG_GLOB_JOB_AFTER_SPAWN "!job_after_spawn" - -/// cable was placed or joined somewhere : (turf) -#define COMSIG_GLOB_CABLE_UPDATED "!cable_updated" - - -/// signals from globally accessible objects - -///from SSsun when the sun changes position : (azimuth) -#define COMSIG_SUN_MOVED "sun_moved" - -///from SSsecurity_level on planning security level change : (previous_level_number, new_level_number) -#define COMSIG_SECURITY_LEVEL_CHANGE_PLANNED "security_level_change_planned" -///from SSsecurity_level when the security level changes : (previous_level_number, new_level_number) -#define COMSIG_SECURITY_LEVEL_CHANGED "security_level_changed" - -////////////////////////////////////////////////////////////////// - -// /datum signals -/// when a component is added to a datum: (/datum/component) -#define COMSIG_COMPONENT_ADDED "component_added" -/// before a component is removed from a datum because of RemoveComponent: (/datum/component) -#define COMSIG_COMPONENT_REMOVING "component_removing" -/// before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation -#define COMSIG_PARENT_PREQDELETED "parent_preqdeleted" -/// just before a datum's Destroy() is called: (force), at this point none of the other components chose to interrupt qdel and Destroy will be called -#define COMSIG_PARENT_QDELETING "parent_qdeleting" -/// generic topic handler (usr, href_list) -#define COMSIG_TOPIC "handle_topic" - -/// fires on the target datum when an element is attached to it (/datum/element) -#define COMSIG_ELEMENT_ATTACH "element_attach" -/// fires on the target datum when an element is attached to it (/datum/element) -#define COMSIG_ELEMENT_DETACH "element_detach" - -// /atom signals -///from base of atom/proc/Initialize(): sent any time a new atom is created -#define COMSIG_ATOM_CREATED "atom_created" -//from SSatoms InitAtom - Only if the atom was not deleted or failed initialization -#define COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE "atom_init_success" -///from base of atom/attackby(): (/obj/item, /mob/living, params) -#define COMSIG_PARENT_ATTACKBY "atom_attackby" -///Return this in response if you don't want afterattack to be called - #define COMPONENT_NO_AFTERATTACK (1<<0) -///from base of atom/attack_hulk(): (/mob/living/carbon/human) -#define COMSIG_ATOM_HULK_ATTACK "hulk_attack" -///from base of atom/animal_attack(): (/mob/user) -#define COMSIG_ATOM_ATTACK_ANIMAL "attack_animal" -///from base of atom/examine(): (examining_user, examine_list) -#define COMSIG_PARENT_EXAMINE "atom_examine" -///from base of atom/examine_more(): (examining_user, examine_list) -#define COMSIG_PARENT_EXAMINE_MORE "atom_examine_more" -///from base of atom/get_examine_name(): (/mob, list/overrides) -#define COMSIG_ATOM_GET_EXAMINE_NAME "atom_examine_name" - //Positions for overrides list - #define EXAMINE_POSITION_ARTICLE (1<<0) - #define EXAMINE_POSITION_BEFORE (1<<1) - //End positions - #define COMPONENT_EXNAME_CHANGED (1<<0) - ///from base of [/atom/proc/update_appearance]: (updates) - #define COMSIG_ATOM_UPDATE_APPEARANCE "atom_update_appearance" - /// If returned from [COMSIG_ATOM_UPDATE_APPEARANCE] it prevents the atom from updating its name. - #define COMSIG_ATOM_NO_UPDATE_NAME UPDATE_NAME - /// If returned from [COMSIG_ATOM_UPDATE_APPEARANCE] it prevents the atom from updating its desc. - #define COMSIG_ATOM_NO_UPDATE_DESC UPDATE_DESC - /// If returned from [COMSIG_ATOM_UPDATE_APPEARANCE] it prevents the atom from updating its icon. - #define COMSIG_ATOM_NO_UPDATE_ICON UPDATE_ICON -///from base of [/atom/proc/update_name]: (updates) -#define COMSIG_ATOM_UPDATE_NAME "atom_update_name" -///from base of [/atom/proc/update_desc]: (updates) -#define COMSIG_ATOM_UPDATE_DESC "atom_update_desc" -///from base of [/atom/update_icon]: () -#define COMSIG_ATOM_UPDATE_ICON "atom_update_icon" - /// If returned from [COMSIG_ATOM_UPDATE_ICON] it prevents the atom from updating its icon state. - #define COMSIG_ATOM_NO_UPDATE_ICON_STATE UPDATE_ICON_STATE - /// If returned from [COMSIG_ATOM_UPDATE_ICON] it prevents the atom from updating its overlays. - #define COMSIG_ATOM_NO_UPDATE_OVERLAYS UPDATE_OVERLAYS -///Sent after [atom/update_icon_state] is called by [/atom/update_icon]: () -#define COMSIG_ATOM_UPDATE_ICON_STATE "atom_update_icon_state" -///Sent after [atom/update_overlays] is called by [/atom/update_icon]: (list/new_overlays) -#define COMSIG_ATOM_UPDATE_OVERLAYS "atom_update_overlays" -///from base of [/atom/update_icon]: (signalOut, did_anything) -#define COMSIG_ATOM_UPDATED_ICON "atom_updated_icon" -///from base of atom/Entered(): (atom/movable/entering, /atom) -#define COMSIG_ATOM_ENTERED "atom_entered" -///from base of atom/Exit(): (/atom/movable/exiting, /atom/newloc) -#define COMSIG_ATOM_EXIT "atom_exit" - #define COMPONENT_ATOM_BLOCK_EXIT (1<<0) -///from base of atom/Exited(): (atom/movable/exiting, atom/newloc) -#define COMSIG_ATOM_EXITED "atom_exited" -///from base of atom/Bumped(): (/atom/movable) -#define COMSIG_ATOM_BUMPED "atom_bumped" -///from base of atom/ex_act(): (severity, target) -#define COMSIG_ATOM_EX_ACT "atom_ex_act" -///from base of atom/emp_act(): (severity) -#define COMSIG_ATOM_EMP_ACT "atom_emp_act" -///from base of atom/fire_act(): (exposed_temperature, exposed_volume) -#define COMSIG_ATOM_FIRE_ACT "atom_fire_act" -///from base of atom/bullet_act(): (/obj/projectile, def_zone) -#define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" -///from base of atom/blob_act(): (/obj/structure/blob) -#define COMSIG_ATOM_BLOB_ACT "atom_blob_act" -///from base of atom/acid_act(): (acidpwr, acid_volume) -#define COMSIG_ATOM_ACID_ACT "atom_acid_act" -///from base of atom/emag_act(): (/mob/user) -#define COMSIG_ATOM_EMAG_ACT "atom_emag_act" -///from base of atom/rad_act(intensity) -#define COMSIG_ATOM_RAD_ACT "atom_rad_act" -///from base of atom/narsie_act(): () -#define COMSIG_ATOM_NARSIE_ACT "atom_narsie_act" -///from base of atom/rcd_act(): (/mob, /obj/item/construction/rcd, passed_mode) -#define COMSIG_ATOM_RCD_ACT "atom_rcd_act" -///from base of atom/singularity_pull(): (S, current_size) -#define COMSIG_ATOM_SING_PULL "atom_sing_pull" -///from obj/machinery/bsa/full/proc/fire(): () -#define COMSIG_ATOM_BSA_BEAM "atom_bsa_beam_pass" - #define COMSIG_ATOM_BLOCKS_BSA_BEAM (1<<0) -///from base of atom/set_light(): (l_range, l_power, l_color) -#define COMSIG_ATOM_SET_LIGHT "atom_set_light" -///from base of atom/setDir(): (old_dir, new_dir) -#define COMSIG_ATOM_DIR_CHANGE "atom_dir_change" -///from base of atom/handle_atom_del(): (atom/deleted) -#define COMSIG_ATOM_CONTENTS_DEL "atom_contents_del" -///from base of atom/has_gravity(): (turf/location, list/forced_gravities) -#define COMSIG_ATOM_HAS_GRAVITY "atom_has_gravity" -///from proc/get_rad_contents(): () -#define COMSIG_ATOM_RAD_PROBE "atom_rad_probe" - #define COMPONENT_BLOCK_RADIATION (1<<0) -///from base of datum/radiation_wave/radiate(): (strength) -#define COMSIG_ATOM_RAD_CONTAMINATING "atom_rad_contam" - #define COMPONENT_BLOCK_CONTAMINATION (1<<0) -///from base of datum/radiation_wave/check_obstructions(): (datum/radiation_wave, width) -#define COMSIG_ATOM_RAD_WAVE_PASSING "atom_rad_wave_pass" - #define COMPONENT_RAD_WAVE_HANDLED (1<<0) -///from base of atom/screwdriver_act(): (mob/living/user, obj/item/I) -#define COMSIG_ATOM_SCREWDRIVER_ACT "atom_screwdriver_act" -///from base of atom/wrench_act(): (mob/living/user, obj/item/I) -#define COMSIG_ATOM_WRENCH_ACT "atom_wrench_act" -///from base of atom/multitool_act(): (mob/living/user, obj/item/I) -#define COMSIG_ATOM_MULTITOOL_ACT "atom_multitool_act" -///from base of atom/welder_act(): (mob/living/user, obj/item/I) -#define COMSIG_ATOM_WELDER_ACT "atom_welder_act" -///from base of atom/wirecutter_act(): (mob/living/user, obj/item/I) -#define COMSIG_ATOM_WIRECUTTER_ACT "atom_wirecutter_act" -///from base of atom/crowbar_act(): (mob/living/user, obj/item/I) -#define COMSIG_ATOM_CROWBAR_ACT "atom_crowbar_act" -///from base of atom/analyser_act(): (mob/living/user, obj/item/I) -#define COMSIG_ATOM_ANALYSER_ACT "atom_analyser_act" - #define COMPONENT_BLOCK_TOOL_ATTACK (1<<0) -///called when teleporting into a protected turf: (channel, turf/origin) -#define COMSIG_ATOM_INTERCEPT_TELEPORT "intercept_teleport" - #define COMPONENT_BLOCK_TELEPORT (1<<0) -///called when an atom is added to the hearers on get_hearers_in_view(): (list/processing_list, list/hearers) -#define COMSIG_ATOM_HEARER_IN_VIEW "atom_hearer_in_view" -///called when an atom starts orbiting another atom: (atom) -#define COMSIG_ATOM_ORBIT_BEGIN "atom_orbit_begin" -///called when an atom stops orbiting another atom: (atom) -#define COMSIG_ATOM_ORBIT_STOP "atom_orbit_stop" -/// called on an atom who has stopped orbiting another atom (atom/orbiter, atom/formerly_orbited) -#define COMSIG_ATOM_ORBITER_STOP "atom_orbiter_stop" -///from base of atom/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) -#define COMSIG_ATOM_HITBY "atom_hitby" -/// Called when an atom is sharpened or dulled. -#define COMSIG_ATOM_UPDATE_SHARPNESS "atom_update_sharpness" -///from base of atom/atom_prehit(obj/item/projectile/P): -#define COMSIG_ATOM_PREHIT "atom_prehit" - #define ATOM_PREHIT_SUCCESS (1<<0) - #define ATOM_PREHIT_FAILURE (1<<1) - -// Attack signals. These should share the returned flags, to standardize the attack chain. -// The chain currently works like: -// tool_act -> pre_attack -> target.attackby (item.attack) -> afterattack -// You can use these signal responses to cancel the attack chain at a certain point from most attack signal types. - /// This response cancels the attack chain entirely. If sent early, it might cause some later effects to be skipped. - #define COMPONENT_CANCEL_ATTACK_CHAIN (1<<0) - -/// Called from atom/Initialize() of target: (atom/target) -#define COMSIG_ATOM_INITIALIZED_ON "atom_initialized_on" - -///////////////// -///from base of atom/attack_ghost(): (mob/dead/observer/ghost) -#define COMSIG_ATOM_ATTACK_GHOST "atom_attack_ghost" -///from base of atom/attack_hand(): (mob/user) -#define COMSIG_ATOM_ATTACK_HAND "atom_attack_hand" -///from base of atom/attack_paw(): (mob/user) -#define COMSIG_ATOM_ATTACK_PAW "atom_attack_paw" - #define COMPONENT_NO_ATTACK_HAND (1<<0) //works on all 3. -//This signal return value bitflags can be found in __DEFINES/misc.dm - -///called for each movable in a turf contents on /turf/zImpact(): (atom/movable/A, levels) -#define COMSIG_ATOM_INTERCEPT_Z_FALL "movable_intercept_z_impact" -///called on a movable (NOT living) when someone starts pulling it (atom/movable/puller, state, force) -#define COMSIG_ATOM_START_PULL "movable_start_pull" -///called on /living when someone starts pulling it (atom/movable/puller, state, force) -#define COMSIG_LIVING_START_PULL "living_start_pull" -///called on /living, when pull is attempted, but before it completes, from base of [/mob/living/start_pulling]: (atom/movable/thing, force) -#define COMSIG_LIVING_TRY_PULL "living_try_pull" - #define COMSIG_LIVING_CANCEL_PULL (1 << 0) - -///////////////// - -// /client signals - -/// from base of client/Click(): (atom/target, atom/location, control, params, mob/user) -#define COMSIG_CLIENT_CLICK "atom_client_click" -/// from base of client/MouseDown(): (/client, object, location, control, params) -#define COMSIG_CLIENT_MOUSEDOWN "client_mousedown" -/// from base of client/MouseUp(): (/client, object, location, control, params) -#define COMSIG_CLIENT_MOUSEUP "client_mouseup" - #define COMPONENT_CLIENT_MOUSEUP_INTERCEPT (1<<0) -/// from base of client/MouseUp(): (/client, object, location, control, params) -#define COMSIG_CLIENT_MOUSEDRAG "client_mousedrag" - -///from base of area/Entered(): (/area) -#define COMSIG_ENTER_AREA "enter_area" -///from base of area/Exited(): (/area) -#define COMSIG_EXIT_AREA "exit_area" -///from base of atom/Click(): (location, control, params, mob/user) -#define COMSIG_CLICK "atom_click" -///from base of atom/ShiftClick(): (/mob) -#define COMSIG_CLICK_SHIFT "shift_click" - #define COMPONENT_ALLOW_EXAMINATE (1<<0) //Allows the user to examinate regardless of client.eye. -///from base of atom/CtrlClickOn(): (/mob) -#define COMSIG_CLICK_CTRL "ctrl_click" -///from base of atom/AltClick(): (/mob) -#define COMSIG_CLICK_ALT "alt_click" - /// Cancel the alt-click, since this isn't properly part of the attack chain - #define COMPONENT_CANCEL_ALTCLICK (1<<0) -///from base of atom/CtrlShiftClick(/mob) -#define COMSIG_CLICK_CTRL_SHIFT "ctrl_shift_click" -///from base of atom/MouseDrop(): (/atom/over, /mob/user) -#define COMSIG_MOUSEDROP_ONTO "mousedrop_onto" - #define COMPONENT_NO_MOUSEDROP (1<<0) -///from base of atom/MouseDrop_T: (/atom/from, /mob/user) -#define COMSIG_MOUSEDROPPED_ONTO "mousedropped_onto" - - -///from base of /datum/local_powernet/proc/power_change() -#define COMSIG_POWERNET_POWER_CHANGE "powernet_power_change" - -// /area signals -///from base of area/Entered(): (atom/movable/M) -#define COMSIG_AREA_ENTERED "area_entered" -///from base of area/Exited(): (atom/movable/M) -#define COMSIG_AREA_EXITED "area_exited" - -// /turf signals - -///from base of turf/ChangeTurf(): (path, list/new_baseturfs, flags, list/transferring_comps) -#define COMSIG_TURF_CHANGE "turf_change" -///from base of atom/has_gravity(): (atom/asker, list/forced_gravities) -#define COMSIG_TURF_HAS_GRAVITY "turf_has_gravity" -///from base of turf/New(): (turf/source, direction) -#define COMSIG_TURF_MULTIZ_NEW "turf_multiz_new" - -// /atom/movable signals - -///from base of atom/movable/Moved(): (/atom) -#define COMSIG_MOVABLE_PRE_MOVE "movable_pre_move" - #define COMPONENT_MOVABLE_BLOCK_PRE_MOVE (1<<0) -///from base of atom/movable/Moved(): (/atom, dir) -#define COMSIG_MOVABLE_MOVED "movable_moved" -///from base of atom/movable/Cross(): (/atom/movable) -#define COMSIG_MOVABLE_CROSS "movable_cross" -///from base of atom/movable/Crossed(): (/atom/movable) -#define COMSIG_MOVABLE_CROSSED "movable_crossed" -///when we cross over something (calling Crossed() on that atom) -#define COMSIG_CROSSED_MOVABLE "crossed_movable" -///from base of atom/movable/Uncross(): (/atom/movable) -#define COMSIG_MOVABLE_UNCROSS "movable_uncross" - #define COMPONENT_MOVABLE_BLOCK_UNCROSS (1<<0) -///from base of atom/movable/Uncrossed(): (/atom/movable) -#define COMSIG_MOVABLE_UNCROSSED "movable_uncrossed" -///from base of atom/movable/Bump(): (/atom) -#define COMSIG_MOVABLE_BUMP "movable_bump" -///from base of atom/movable/throw_impact(): (/atom/hit_atom, /datum/thrownthing/throwingdatum) -#define COMSIG_MOVABLE_IMPACT "movable_impact" - #define COMPONENT_MOVABLE_IMPACT_FLIP_HITPUSH (1<<0) //if true, flip if the impact will push what it hits - #define COMPONENT_MOVABLE_IMPACT_NEVERMIND (1<<1) //return true if you destroyed whatever it was you're impacting and there won't be anything for hitby() to run on -///from base of mob/living/hitby(): (mob/living/target, hit_zone) -#define COMSIG_MOVABLE_IMPACT_ZONE "item_impact_zone" -///from /atom/movable/proc/buckle_mob(): (mob/living/M, force, check_loc, buckle_mob_flags) -#define COMSIG_MOVABLE_PREBUCKLE "prebuckle" // this is the last chance to interrupt and block a buckle before it finishes - #define COMPONENT_BLOCK_BUCKLE (1<<0) -///from base of atom/movable/buckle_mob(): (mob, force) -#define COMSIG_MOVABLE_BUCKLE "buckle" -///from base of atom/movable/unbuckle_mob(): (mob, force) -#define COMSIG_MOVABLE_UNBUCKLE "unbuckle" -///from /obj/vehicle/proc/driver_move, caught by the riding component to check and execute the driver trying to drive the vehicle -#define COMSIG_RIDDEN_DRIVER_MOVE "driver_move" - #define COMPONENT_DRIVER_BLOCK_MOVE (1<<0) -///from base of atom/movable/throw_at(): (list/args) -#define COMSIG_MOVABLE_PRE_THROW "movable_pre_throw" - #define COMPONENT_CANCEL_THROW (1<<0) -///from base of atom/movable/throw_at(): (datum/thrownthing, spin) -#define COMSIG_MOVABLE_POST_THROW "movable_post_throw" -///from base of datum/thrownthing/finalize(): (obj/thrown_object, datum/thrownthing) used for when a throw is finished -#define COMSIG_MOVABLE_THROW_LANDED "movable_throw_landed" -///from base of atom/movable/onTransitZ(): (old_z, new_z) -#define COMSIG_MOVABLE_Z_CHANGED "movable_ztransit" -///called when the movable is placed in an unaccessible area, used for stationloving: () -#define COMSIG_MOVABLE_SECLUDED_LOCATION "movable_secluded" -///from base of atom/movable/Hear(): (proc args list(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode)) -#define COMSIG_MOVABLE_HEAR "movable_hear" - #define HEARING_MESSAGE 1 - #define HEARING_SPEAKER 2 -// #define HEARING_LANGUAGE 3 - #define HEARING_RAW_MESSAGE 4 - /* #define HEARING_RADIO_FREQ 5 - #define HEARING_SPANS 6 - #define HEARING_MESSAGE_MODE 7 */ - -/// Called just before something gets untilted -#define COMSIG_MOVABLE_TRY_UNTILT "movable_try_untilt" - /// Return this to block an untilt attempt - #define COMPONENT_BLOCK_UNTILT (1<<0) -/// Called when something gets untilted, from /datum/element/tilted/proc/do_untilt(atom/movable/source, mob/user) -#define COMSIG_MOVABLE_UNTILTED "movable_untilted" - -///called when the movable is added to a disposal holder object for disposal movement: (obj/structure/disposalholder/holder, obj/machinery/disposal/source) -#define COMSIG_MOVABLE_DISPOSING "movable_disposing" -///called when the movable is removed from a disposal holder object: /obj/structure/disposalpipe/proc/expel(): (obj/structure/disposalholder/H, turf/T, direction) -#define COMSIG_MOVABLE_EXIT_DISPOSALS "movable_exit_disposals" - -/// from base of atom/movable/Process_Spacemove(): (movement_dir, continuous_move) -#define COMSIG_MOVABLE_SPACEMOVE "spacemove" - #define COMSIG_MOVABLE_STOP_SPACEMOVE (1<<0) - -// /datum/mind signals - -///from base of /datum/mind/proc/transfer_to(mob/living/new_character) -#define COMSIG_MIND_TRANSER_TO "mind_transfer_to" -///called on the mob instead of the mind -#define COMSIG_BODY_TRANSFER_TO "body_transfer_to" -///called when the mind is initialized (called every time the mob logins) -#define COMSIG_MIND_INITIALIZE "mind_initialize" - -// /mob signals - -///from base of /mob/Login(): () -#define COMSIG_MOB_LOGIN "mob_login" -///called in human/login -#define COMSIG_HUMAN_LOGIN "human_login" -///from base of /mob/Logout(): () -#define COMSIG_MOB_LOGOUT "mob_logout" -///from base of mob/death(): (gibbed) -#define COMSIG_MOB_DEATH "mob_death" -///from base of mob/set_stat(): (new_stat) -#define COMSIG_MOB_STATCHANGE "mob_statchange" -///from base of mob/clickon(): (atom/A, params) -#define COMSIG_MOB_CLICKON "mob_clickon" -///from base of mob/MiddleClickOn(): (atom/A) -#define COMSIG_MOB_MIDDLECLICKON "mob_middleclickon" -///from base of mob/AltClickOn(): (atom/A) -#define COMSIG_MOB_ALTCLICKON "mob_altclickon" - #define COMSIG_MOB_CANCEL_CLICKON (1<<0) - -///from base of obj/allowed(mob/M): (/obj) returns bool, if TRUE the mob has id access to the obj -#define COMSIG_MOB_ALLOWED "mob_allowed" -///from base of mob/anti_magic_check(): (mob/user, magic, holy, tinfoil, chargecost, self, protection_sources) -#define COMSIG_MOB_RECEIVE_MAGIC "mob_receive_magic" - #define COMPONENT_BLOCK_MAGIC (1<<0) -///from base of mob/create_mob_hud(): () -#define COMSIG_MOB_HUD_CREATED "mob_hud_created" -///from base of atom/attack_hand(): (mob/user) -#define COMSIG_MOB_ATTACK_HAND "mob_attack_hand" -///from base of /obj/item/attack(): (mob/M, mob/user) -#define COMSIG_MOB_ITEM_ATTACK "mob_item_attack" - #define COMPONENT_ITEM_NO_ATTACK (1<<0) -///from base of /mob/living/proc/apply_damage(): (damage, damagetype, def_zone) -#define COMSIG_MOB_APPLY_DAMAGE "mob_apply_damage" -///from base of obj/item/afterattack(): (atom/target, mob/user, proximity_flag, click_parameters) -#define COMSIG_MOB_ITEM_AFTERATTACK "mob_item_afterattack" -///from base of obj/item/attack_qdeleted(): (atom/target, mob/user, proxiumity_flag, click_parameters) -#define COMSIG_MOB_ITEM_ATTACK_QDELETED "mob_item_attack_qdeleted" -///from base of mob/RangedAttack(): (atom/A, params) -#define COMSIG_MOB_ATTACK_RANGED "mob_attack_ranged" -///from base of /mob/throw_item(): (atom/target) -#define COMSIG_MOB_THROW "mob_throw" -///called when a user willingly drops something (i.e. keybind, or UI action) -#define COMSIG_MOB_WILLINGLY_DROP "mob_willingly_drop" -///called when a user is getting new weapon and we want to remove previous weapon to clear hands -#define COMSIG_MOB_WEAPON_APPEARS "mob_weapon_appears" -///from base of /mob/verb/examinate(): (atom/target) -#define COMSIG_MOB_EXAMINATE "mob_examinate" -///from base of /mob/update_sight(): () -#define COMSIG_MOB_UPDATE_SIGHT "mob_update_sight" -////from /mob/living/say(): () -#define COMSIG_MOB_SAY "mob_say" - #define COMPONENT_UPPERCASE_SPEECH (1<<0) - // used to access COMSIG_MOB_SAY argslist - #define SPEECH_MESSAGE 1 - // #define SPEECH_BUBBLE_TYPE 2 - #define SPEECH_SPANS 3 - /* #define SPEECH_SANITIZE 4 - #define SPEECH_LANGUAGE 5 - #define SPEECH_IGNORE_SPAM 6 - #define SPEECH_FORCED 7 */ - -///from /mob/say_dead(): (mob/speaker, message) -#define COMSIG_MOB_DEADSAY "mob_deadsay" - #define MOB_DEADSAY_SIGNAL_INTERCEPT (1<<0) - -/// Signal fired when an emote is used but before it's executed. -///from /datum/emote/proc/try_run_emote(): (key, intentional) -#define COMSIG_MOB_PREEMOTE "mob_preemote" - // Use these to block execution of emotes from components. - /// Return this to block an emote and let the user know the emote is unusable. - #define COMPONENT_BLOCK_EMOTE_UNUSABLE (1<<0) - /// Return this to block an emote silently. - #define COMPONENT_BLOCK_EMOTE_SILENT (1<<1) -/// General signal fired when a mob does any old emote -///from /datum/emote/proc/run_emote(): (key, intentional) -#define COMSIG_MOB_EMOTE "mob_emote" -/// Specific signal used to track when a specific emote is used. -/// From /datum/emote/run_emote(): (P, key, m_type, message, intentional) -#define COMSIG_MOB_EMOTED(emote_key) "mob_emoted_[emote_key]" -/// From /datum/emote/select_param(): (target, key, intentional) -#define COMSIG_MOB_EMOTE_AT "mob_emote_at" - #define COMPONENT_BLOCK_EMOTE_ACTION (1<<2) - -///from base of mob/swap_hand(): (obj/item) -#define COMSIG_MOB_SWAPPING_HANDS "mob_swapping_hands" - /// Prevent the mob from changing hands - #define COMPONENT_BLOCK_SWAP (1<<0) - -/// Performed after the hands are swapped. -#define COMSIG_MOB_SWAPPED_HANDS "mob_swap_hands" - -#define COMSIG_MOB_AUTOMUTE_CHECK "automute_check" - #define WAIVE_AUTOMUTE_CHECK (1<<0) - -///Called when movement intent is toggled. -#define COMSIG_MOVE_INTENT_TOGGLED "move_intent_toggled" - -// /mob/living signals - -///from base of mob/living/resist() (/mob/living) -#define COMSIG_LIVING_RESIST "living_resist" -///from base of mob/living/IgniteMob() (/mob/living) -#define COMSIG_LIVING_IGNITED "living_ignite" -///from base of mob/living/ExtinguishMob() (/mob/living) -#define COMSIG_LIVING_EXTINGUISHED "living_extinguished" -///from base of mob/living/electrocute_act(): (shock_damage, source, siemens_coeff, flags) -#define COMSIG_LIVING_ELECTROCUTE_ACT "living_electrocute_act" -///sent when items with siemen coeff. of 0 block a shock: (power_source, source, siemens_coeff, dist_check) -#define COMSIG_LIVING_SHOCK_PREVENTED "living_shock_prevented" -///sent by stuff like stunbatons and tasers: () -#define COMSIG_LIVING_MINOR_SHOCK "living_minor_shock" -///Sent from defibrillators when everything seems good and the user will be shocked: (defibber, defib_item, ghost) -#define COMSIG_LIVING_PRE_DEFIB "living_pre_defib" - /// If returned from LIVING_BEFORE_DEFIB or LIVING_DEFIBBED, the defibrillation will fail - #define COMPONENT_BLOCK_DEFIB (1<<0) - /// If returned, don't even show the "failed" message, defer to the signal handler to do that. - #define COMPONENT_DEFIB_OVERRIDE (1<<1) - /// If returned, allow to revive through false death. - #define COMPONENT_DEFIB_FAKEDEATH_ACCEPTED (1<<2) - /// If returned, make the fake death look like a unresponsive ghost. - #define COMPONENT_DEFIB_FAKEDEATH_DENIED (1<<3) -///send from defibs on ressurection: (defibber, defib_item, ghost) -#define COMSIG_LIVING_DEFIBBED "living_defibbed" -///from base of mob/living/revive() (full_heal, admin_revive) -#define COMSIG_LIVING_REVIVE "living_revive" -///from base of /mob/living/regenerate_limbs(): (noheal, excluded_limbs) -#define COMSIG_LIVING_REGENERATE_LIMBS "living_regen_limbs" -///from base of /obj/item/bodypart/proc/attach_limb(): (new_limb, special) allows you to fail limb attachment -#define COMSIG_LIVING_ATTACH_LIMB "living_attach_limb" - #define COMPONENT_NO_ATTACH (1<<0) -///sent from borg recharge stations: (amount, repairs) -#define COMSIG_PROCESS_BORGCHARGER_OCCUPANT "living_charge" -///sent when a mob enters a borg charger -#define COMSIG_ENTERED_BORGCHARGER "enter_charger" -///sent when a mob exits a borg charger -#define COMSIG_EXITED_BORGCHARGER "exit_charger" -///sent when a mob/login() finishes: (client) -#define COMSIG_MOB_CLIENT_LOGIN "comsig_mob_client_login" -///sent from borg mobs to itself, for tools to catch an upcoming destroy() due to safe decon (rather than detonation) -#define COMSIG_BORG_SAFE_DECONSTRUCT "borg_safe_decon" -///sent from living mobs every tick of fire -#define COMSIG_LIVING_FIRE_TICK "living_fire_tick" -//sent from living mobs when they are ahealed -#define COMSIG_LIVING_AHEAL "living_aheal" -//sent from mobs when they exit their body as a ghost -#define COMSIG_LIVING_GHOSTIZED "ghostized" -//sent from mobs when they re-enter their body as a ghost -#define COMSIG_LIVING_REENTERED_BODY "reentered_body" -//sent from a mob when they set themselves to DNR -#define COMSIG_LIVING_SET_DNR "set_dnr" - -// Sent from a surgery step when blood is being splashed. (datum/surgery, mob/user, mob/target, zone, obj/item/tool) -#define COMSIG_SURGERY_BLOOD_SPLASH "surgery_blood_splash" - /// If returned from this signal, will prevent any surgery splashing. - #define COMPONENT_BLOOD_SPLASH_HANDLED (1<<0) - -// Sent from a surgery step when organs are being spread from an incision -#define COMSIG_SURGERY_GERM_SPREAD "surgery_germ_spread" - /// If returned from this signal, germ spread will be blocked. - #define COMPONENT_GERM_SPREAD_BLOCK (1<<0) - - -//ALL OF THESE DO NOT TAKE INTO ACCOUNT WHETHER AMOUNT IS 0 OR LOWER AND ARE SENT REGARDLESS! -// none of these are called as of right now, as there is nothing listening for them. -///from base of mob/living/Stun() (amount, ignore_canstun) -#define COMSIG_LIVING_STATUS_STUN "living_stun" -///from base of mob/living/Stun() (amount, ignore_canstun) -#define COMSIG_LIVING_STATUS_WEAKEN "living_weaken" -///from base of mob/living/Knockdown() (amount, ignore_canstun) -///#define COMSIG_LIVING_STATUS_KNOCKDOWN "living_knockdown" // one day -///from base of mob/living/Paralyse() (amount, ignore_canstun) -#define COMSIG_LIVING_STATUS_PARALYSE "living_paralyse" -///from base of mob/living/Immobilize() (amount, ignore_canstun) -#define COMSIG_LIVING_STATUS_IMMOBILIZE "living_immobilize" -///from base of mob/living/Unconscious() (amount, ignore_canstun) -#define COMSIG_LIVING_STATUS_UNCONSCIOUS "living_unconscious" -///from base of mob/living/Sleeping() (amount, ignore_canstun) -#define COMSIG_LIVING_STATUS_SLEEP "living_sleeping" - #define COMPONENT_NO_STUN (1<<0) //For all of them -///from base of /mob/living/can_track(): (mob/user) -#define COMSIG_LIVING_CAN_TRACK "mob_cantrack" - #define COMPONENT_CANT_TRACK (1<<0) - -///from base of mob/living/Write_Memory() -#define COMSIG_LIVING_WRITE_MEMORY "living_write_memory" - #define COMPONENT_DONT_WRITE_MEMORY (1<<0) - -// /mob/living/simple_animal signals -///from /mob/living/simple_animal/handle_environment() -#define COMSIG_SIMPLEANIMAL_HANDLE_ENVIRONMENT "simpleanimal_handle_environment" - -// /mob/living/carbon signals - -///from base of mob/living/carbon/soundbang_act(): (list(intensity)) -#define COMSIG_CARBON_SOUNDBANG "carbon_soundbang" -///from /item/organ/proc/Insert() (/obj/item/organ/) -#define COMSIG_CARBON_GAIN_ORGAN "carbon_gain_organ" -///from /item/organ/proc/Remove() (/obj/item/organ/) -#define COMSIG_CARBON_LOSE_ORGAN "carbon_lose_organ" -///from /mob/living/carbon/doUnEquip(obj/item/I, force, newloc, no_move, invdrop, silent) -#define COMSIG_CARBON_EQUIP_HAT "carbon_equip_hat" -///from /mob/living/carbon/doUnEquip(obj/item/I, force, newloc, no_move, invdrop, silent) -#define COMSIG_CARBON_UNEQUIP_HAT "carbon_unequip_hat" -///defined twice, in carbon and human's topics, fired when interacting with a valid embedded_object to pull it out (mob/living/carbon/target, /obj/item, /obj/item/bodypart/L) -#define COMSIG_CARBON_EMBED_RIP "item_embed_start_rip" -///called when removing a given item from a mob, from mob/living/carbon/remove_embedded_object(mob/living/carbon/target, /obj/item) -#define COMSIG_CARBON_EMBED_REMOVAL "item_embed_remove_safe" -/// From /mob/living/carbon/swap_hand(): Called when the user swaps their active hand -#define COMSIG_CARBON_SWAP_HANDS "carbon_swap_hands" -/// From /mob/living/carbon/toggle_throw_mode() -#define COMSIG_CARBON_TOGGLE_THROW "carbon_toggle_throw" -/// From /mob/living/carbon/human/hitby() -#define COMSIG_CARBON_THROWN_ITEM_CAUGHT "carbon_thrown_item_caught" -/// From /mob/living/carbon/flash_eyes() -#define COMSIG_CARBON_FLASH_EYES "carbon_flash_eyes" -/// From /mob/living/carbon/update_handcuffed() -#define COMSIG_CARBON_UPDATE_HANDCUFFED "carbon_update_handcuff" -/// From /mob/living/carbon/regenerate_icons() -#define COMSIG_CARBON_REGENERATE_ICONS "carbon_regen_icons" -/// From /mob/living/carbon/enter_stamcrit() -#define COMSIG_CARBON_ENTER_STAMINACRIT "carbon_enter_staminacrit" -/// From /mob/living/carbon/update_stamina() -#define COMSIG_CARBON_EXIT_STAMINACRIT "carbon_exit_staminacrit" -/// From /mob/living/carbon/handle_status_effects() -#define COMSIG_CARBON_STAMINA_REGENERATED "carbon_stamina_regenerated" - -// /mob/living/simple_animal/hostile signals -#define COMSIG_HOSTILE_ATTACKINGTARGET "hostile_attackingtarget" - #define COMPONENT_HOSTILE_NO_ATTACK (1<<0) -//Called when a /mob/living/simple_animal/hostile fines a new target: (atom/source, give_target) -#define COMSIG_HOSTILE_FOUND_TARGET "comsig_hostile_found_target" - -// /obj signals - -///from base of obj/deconstruct(): (disassembled) -#define COMSIG_OBJ_DECONSTRUCT "obj_deconstruct" -///called in /obj/structure/setAnchored(): (value) -#define COMSIG_OBJ_SETANCHORED "obj_setanchored" -///from base of code/game/machinery -#define COMSIG_OBJ_DEFAULT_UNFASTEN_WRENCH "obj_default_unfasten_wrench" -///from base of /turf/proc/levelupdate(). (intact) true to hide and false to unhide -#define COMSIG_OBJ_HIDE "obj_hide" -///called in /obj/update_icon() -#define COMSIG_OBJ_UPDATE_ICON "obj_update_icon" - -// /obj/machinery signals - -///from /obj/machinery/obj_break(damage_flag): (damage_flag) -#define COMSIG_MACHINERY_BROKEN "machinery_broken" -///from base power_change() when power is lost -#define COMSIG_MACHINERY_POWER_LOST "machinery_power_lost" -///from base power_change() when power is restored -#define COMSIG_MACHINERY_POWER_RESTORED "machinery_power_restored" - -// /obj/machinery/camera signals -#define COMSIG_CAMERA_ON "camera_on" -#define COMSIG_CAMERA_OFF "camera_off" -#define COMSIG_CAMERA_MOVED "camera_moved" - -// /obj/item signals - -///from base of obj/item/attack(): (/mob/living/target, /mob/living/user) -#define COMSIG_ITEM_ATTACK "item_attack" -///from base of obj/item/attack_self(): (/mob) -#define COMSIG_ITEM_ATTACK_SELF "item_attack_self" - #define COMPONENT_NO_INTERACT (1<<0) -///from base of obj/item/attack_obj(): (/obj, /mob) -#define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" - #define COMPONENT_NO_ATTACK_OBJ (1<<0) -///from base of obj/item/pre_attack(): (atom/target, mob/user, params) -#define COMSIG_ITEM_PRE_ATTACK "item_pre_attack" - #define COMPONENT_NO_ATTACK (1<<0) -///from base of obj/item/pre_attack(): (atom/target, mob/user, params) -#define COMSIG_ITEM_BEING_ATTACKED "item_being_attacked" -///from base of obj/item/afterattack(): (atom/target, mob/user, params) -#define COMSIG_ITEM_AFTERATTACK "item_afterattack" -///from base of obj/item/attack_qdeleted(): (atom/target, mob/user, params) -#define COMSIG_ITEM_ATTACK_QDELETED "item_attack_qdeleted" -///from base of obj/item/equipped(): (/mob/equipper, slot) -///called on [/obj/item] before unequip from base of [mob/proc/doUnEquip]: (force, atom/newloc, no_move, invdrop, silent) -#define COMSIG_ITEM_PRE_UNEQUIP "item_pre_unequip" - ///only the pre unequip can be cancelled - #define COMPONENT_ITEM_BLOCK_UNEQUIP (1<<0) -#define COMSIG_ITEM_EQUIPPED "item_equip" -///from base of obj/item/dropped(): (mob/user) -#define COMSIG_ITEM_DROPPED "item_drop" -///from base of obj/item/pickup(): (/mob/taker) -#define COMSIG_ITEM_PICKUP "item_pickup" -///from base of mob/living/carbon/attacked_by(): (mob/living/carbon/target, mob/living/user, hit_zone) -#define COMSIG_ITEM_ATTACK_ZONE "item_attack_zone" -///return a truthy value to prevent ensouling, checked in /datum/spell/lichdom/cast(): (mob/user) -#define COMSIG_ITEM_IMBUE_SOUL "item_imbue_soul" -///called before marking an object for retrieval, checked in /datum/spell/summonitem/cast() : (mob/user) -#define COMSIG_ITEM_MARK_RETRIEVAL "item_mark_retrieval" - #define COMPONENT_BLOCK_MARK_RETRIEVAL (1<<0) -///from base of obj/item/hit_reaction(): (list/args) -#define COMSIG_ITEM_HIT_REACT "item_hit_react" - #define COMPONENT_BLOCK_SUCCESSFUL (1 << 0) - #define COMPONENT_BLOCK_PERFECT (1 << 2) -///called on item when crossed by something (): (/atom/movable, mob/living/crossed) -#define COMSIG_ITEM_WEARERCROSSED "wearer_crossed" -///called on item when microwaved (): (obj/machinery/microwave/M) -#define COMSIG_ITEM_MICROWAVE_ACT "microwave_act" -///from base of item/sharpener/attackby(): (amount, max) -#define COMSIG_ITEM_SHARPEN_ACT "sharpen_act" - #define COMPONENT_SHARPEN_APPLIED (1<<0) - #define COMPONENT_BLOCK_SHARPEN_BLOCKED (1<<1) - #define COMPONENT_BLOCK_SHARPEN_ALREADY (1<<2) - #define COMPONENT_BLOCK_SHARPEN_MAXED (1<<3) -///from base of [/obj/item/proc/tool_check_callback]: (mob/living/user) -#define COMSIG_TOOL_IN_USE "tool_in_use" -///from base of [/obj/item/proc/tool_start_check]: (mob/living/user) -#define COMSIG_TOOL_START_USE "tool_start_use" -///from base of [/obj/item/proc/tool_attack_chain]: (atom/tool, mob/user) -#define COMSIG_TOOL_ATTACK "tool_attack" - #define COMPONENT_CANCEL_TOOLACT (1<<0) -///from [/obj/item/proc/disableEmbedding]: -#define COMSIG_ITEM_DISABLE_EMBED "item_disable_embed" -///from [/obj/effect/mine/proc/triggermine]: -#define COMSIG_MINE_TRIGGERED "minegoboom" -/// Called by /obj/item/proc/worn_overlays(list/overlays, mutable_appearance/standing, isinhands, icon_file) -#define COMSIG_ITEM_GET_WORN_OVERLAYS "item_get_worn_overlays" -/// Called by /obj/item/assembly/signaler(called_from_radio) -#define COMSIG_ASSEMBLY_PULSED "item_assembly_pulsed" - -/// Defib-specific signals - -/// Called when a defibrillator is first applied to someone. (mob/living/user, mob/living/target, harmful) -#define COMSIG_DEFIB_PADDLES_APPLIED "defib_paddles_applied" - /// Defib is out of power. - #define COMPONENT_BLOCK_DEFIB_DEAD (1<<0) - /// Something else: we won't have a custom message for this and should let the defib handle it. - #define COMPONENT_BLOCK_DEFIB_MISC (1<<1) -/// Called when a defib has been successfully used, and a shock has been applied. (mob/living/user, mob/living/target, harmful, successful) -#define COMSIG_DEFIB_SHOCK_APPLIED "defib_zap" -/// Called when a defib's cooldown has run its course and it is once again ready. () -#define COMSIG_DEFIB_READY "defib_ready" - -// /obj/item signals for economy -///called when an item is sold by the exports subsystem -#define COMSIG_ITEM_SOLD "item_sold" -///called when a wrapped up structure is opened by hand -#define COMSIG_STRUCTURE_UNWRAPPED "structure_unwrapped" -#define COMSIG_ITEM_UNWRAPPED "item_unwrapped" -///called when a wrapped up item is opened by hand - #define COMSIG_ITEM_SPLIT_VALUE (1<<0) -///called when getting the item's exact ratio for cargo's profit. -#define COMSIG_ITEM_SPLIT_PROFIT "item_split_profits" -///called when getting the item's exact ratio for cargo's profit, without selling the item. -#define COMSIG_ITEM_SPLIT_PROFIT_DRY "item_split_profits_dry" - -// /obj/item/clothing signals - -///from [/mob/living/carbon/human/Move]: () -#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" -///from base of /obj/item/clothing/suit/space/proc/toggle_spacesuit(): (obj/item/clothing/suit/space/suit) -#define COMSIG_SUIT_SPACE_TOGGLE "suit_space_toggle" - -// /obj/item/implant signals - -///from base of /obj/item/bio_chip/proc/activate(): () -#define COMSIG_IMPLANT_ACTIVATED "implant_activated" -///from base of /obj/item/bio_chip/proc/implant(): (list/args) -#define COMSIG_IMPLANT_IMPLANTING "implant_implanting" - #define COMPONENT_STOP_IMPLANTING (1<<0) -///called on already installed implants when a new one is being added in /obj/item/bio_chip/proc/implant(): (list/args, obj/item/bio_chip/new_implant) -#define COMSIG_IMPLANT_OTHER "implant_other" - //#define COMPONENT_STOP_IMPLANTING (1<<0) //The name makes sense for both - #define COMPONENT_DELETE_NEW_IMPLANT (1<<1) - #define COMPONENT_DELETE_OLD_IMPLANT (1<<2) -///called on implants being implanted into someone with an uplink implant: (datum/component/uplink) -#define COMSIG_IMPLANT_EXISTING_UPLINK "implant_uplink_exists" - //This uses all return values of COMSIG_IMPLANT_OTHER - -/// called on implants, after a successful implantation: (mob/living/target, mob/user, silent, force) -#define COMSIG_IMPLANT_IMPLANTED "implant_implanted" - -/// called on implants, after an implant has been removed: (mob/living/source, silent, special) -#define COMSIG_IMPLANT_REMOVED "implant_removed" - -// /obj/item/pda signals - -///called on pda when the user changes the ringtone: (mob/living/user, new_ringtone) -#define COMSIG_PDA_CHANGE_RINGTONE "pda_change_ringtone" - #define COMPONENT_STOP_RINGTONE_CHANGE (1<<0) -#define COMSIG_PDA_CHECK_DETONATE "pda_check_detonate" - #define COMPONENT_PDA_NO_DETONATE (1<<0) - -// /obj/item/radio signals - -///called from base of /obj/item/radio/proc/set_frequency(): (list/args) -#define COMSIG_RADIO_NEW_FREQUENCY "radio_new_frequency" - -// /obj/item/pen signals - -///called after rotation in /obj/item/pen/attack_self(): (rotation, mob/living/carbon/user) -#define COMSIG_PEN_ROTATED "pen_rotated" - -// /obj/item/gun signals - -///called in /obj/item/gun/fire_gun (user, target, flag, params) -#define COMSIG_GUN_TRY_FIRE "gun_try_fire" - #define COMPONENT_CANCEL_GUN_FIRE (1<<0) -///called in /obj/item/gun/afterattack (user, target, flag, params) -#define COMSIG_MOB_TRY_FIRE "mob_fired_gun" -///called in /obj/item/gun/process_fire (user, target) -#define COMSIG_GUN_FIRED "gun_fired" -/// called in /datum/component/automatic_fire/proc/on_mouse_down: (client/clicker, atom/target, turf/location, control, params) -#define COMSIG_AUTOFIRE_ONMOUSEDOWN "autofire_onmousedown" - #define COMPONENT_AUTOFIRE_ONMOUSEDOWN_BYPASS (1<<0) -/// called in /datum/component/automatic_fire/proc/process_shot(): (atom/target, mob/living/shooter, allow_akimbo, params) -#define COMSIG_AUTOFIRE_SHOT "autofire_shot" - #define COMPONENT_AUTOFIRE_SHOT_SUCCESS (1<<0) - -// /obj/item/grenade signals - -///called in /obj/item/gun/process_fire (user, target, params, zone_override) -#define COMSIG_GRENADE_PRIME "grenade_prime" -///called in /obj/item/gun/process_fire (user, target, params, zone_override) -#define COMSIG_GRENADE_ARMED "grenade_armed" - -// /obj/projectile signals (sent to the firer) - -///from base of /obj/projectile/proc/on_hit(): (atom/movable/firer, atom/target, Angle) -#define COMSIG_PROJECTILE_SELF_ON_HIT "projectile_self_on_hit" -///from base of /obj/projectile/proc/on_hit(): (atom/movable/firer, atom/target, Angle) -#define COMSIG_PROJECTILE_ON_HIT "projectile_on_hit" -///from base of /obj/projectile/proc/fire(): (obj/projectile, atom/original_target) -#define COMSIG_PROJECTILE_BEFORE_FIRE "projectile_before_fire" -///from the base of /obj/projectile/proc/fire(): () -#define COMSIG_PROJECTILE_FIRE "projectile_fire" -///sent to targets during the process_hit proc of projectiles -#define COMSIG_PROJECTILE_PREHIT "com_proj_prehit" -///sent to targets during the process_hit proc of projectiles -#define COMSIG_PROJECTILE_RANGE_OUT "projectile_range_out" -///sent when trying to force an embed (mainly for projectiles, only used in the embed element) -#define COMSIG_EMBED_TRY_FORCE "item_try_embed" - -///sent to targets during the process_hit proc of projectiles -#define COMSIG_PELLET_CLOUD_INIT "pellet_cloud_init" - -// /obj/mecha signals - -///sent from mecha action buttons to the mecha they're linked to -#define COMSIG_MECHA_ACTION_ACTIVATE "mecha_action_activate" - -// /mob/living/carbon/human signals - -///from mob/living/carbon/human/UnarmedAttack(): (atom/target, proximity) -#define COMSIG_HUMAN_EARLY_UNARMED_ATTACK "human_early_unarmed_attack" -///from mob/living/carbon/human/UnarmedAttack(): (atom/target, proximity) -#define COMSIG_HUMAN_MELEE_UNARMED_ATTACK "human_melee_unarmed_attack" -///from mob/living/carbon/human/UnarmedAttack(): (mob/living/carbon/human/attacker) -#define COMSIG_HUMAN_MELEE_UNARMED_ATTACKBY "human_melee_unarmed_attackby" -///Hit by successful disarm attack (mob/living/carbon/human/attacker,zone_targeted) -#define COMSIG_HUMAN_DISARM_HIT "human_disarm_hit" -///Whenever EquipRanked is called, called after job is set -#define COMSIG_JOB_RECEIVED "job_received" -// called after DNA is updated -#define COMSIG_HUMAN_UPDATE_DNA "human_update_dna" -/// From mob/living/carbon/human/change_body_accessory(): (mob/living/carbon/human/H, body_accessory_style) -#define COMSIG_HUMAN_CHANGE_BODY_ACCESSORY "human_change_body_accessory" - #define COMSIG_HUMAN_NO_CHANGE_APPEARANCE (1<<0) -/// From mob/living/carbon/human/change_head_accessory(): (mob/living/carbon/human/H, head_accessory_style) -#define COMSIG_HUMAN_CHANGE_HEAD_ACCESSORY "human_change_head_accessory" -//sent from living mobs when they parry -#define COMSIG_HUMAN_PARRY "human_parry" -///From base of mob/living/MobBump() (mob/living) -#define COMSIG_LIVING_MOB_BUMP "living_mob_bump" -///From mob/living/carbon/human/do_suicide() -#define COMSIG_HUMAN_SUICIDE_ACT "human_suicide_act" -/// Sent from mob/living/carbon/human/do_cpr(): (mob/living/carbon/human/H, new_seconds_of_life) -#define COMSIG_HUMAN_RECEIVE_CPR "human_receive_cpr" - -///From mob/living/carbon/human/attackedby(): (mob/living/carbon/human/attacker). Also found on species/disarm and species/harm -#define COMSIG_HUMAN_ATTACKED "human_attacked" - -///from /mob/living/carbon/human/proc/check_shields(): (atom/hit_by, damage, attack_text, attack_type, armour_penetration, damage_type) -#define COMSIG_HUMAN_CHECK_SHIELDS "human_check_shields" - #define SHIELD_BLOCK (1<<0) - -///from /mob/living/carbon/human/create_mob_hud() -#define COMSIG_HUMAN_CREATE_MOB_HUD "human_create_mob_hud" - -// /datum/species signals - -///from datum/species/on_species_gain(): (datum/species/new_species, datum/species/old_species) -#define COMSIG_SPECIES_GAIN "species_gain" -///from datum/species/on_species_loss(): (datum/species/lost_species) -#define COMSIG_SPECIES_LOSS "species_loss" -///from /datum/species/proc/spec_hitby() -#define COMSIG_SPECIES_HITBY "species_hitby" - -// /datum/song signals - -///sent to the instrument when a song starts playing -#define COMSIG_SONG_START "song_start" -///sent to the instrument when a song stops playing -#define COMSIG_SONG_END "song_end" - -/*******Component Specific Signals*******/ -//Janitor - -///(): Returns bitflags of wet values. -#define COMSIG_TURF_IS_WET "check_turf_wet" -///(max_strength, immediate, duration_decrease = INFINITY): Returns bool. -#define COMSIG_TURF_MAKE_DRY "make_turf_try" -///called on an object to clean it of cleanables. Usualy with soap: (num/strength) -#define COMSIG_COMPONENT_CLEAN_ACT "clean_act" - -//Creamed - -///called when you wash your face at a sink: (num/strength) -#define COMSIG_COMPONENT_CLEAN_FACE_ACT "clean_face_act" - -//Food - -///from base of obj/item/food/attack(): (mob/living/eater, mob/feeder) -#define COMSIG_FOOD_EATEN "food_eaten" - -//Reagent -///from base of atom/expose_reagents(): (/list, /datum/reagents, chemholder, volume_modifier) -#define COMSIG_ATOM_EXPOSE_REAGENTS "atom_expose_reagents" - -//Gibs - -///from base of /obj/effect/decal/cleanable/blood/gibs/streak(): (list/directions, list/diseases) -#define COMSIG_GIBS_STREAK "gibs_streak" - -// /datum/component/two_handed signals - -///from base of datum/component/two_handed/proc/wield(mob/living/carbon/user): (/mob/user) -#define COMSIG_TWOHANDED_WIELD "twohanded_wield" - #define COMPONENT_TWOHANDED_BLOCK_WIELD (1<<0) -///from base of datum/component/two_handed/proc/unwield(mob/living/carbon/user): (/mob/user) -#define COMSIG_TWOHANDED_UNWIELD "twohanded_unwield" - -// /datum/action signals - -///from base of datum/action/proc/Trigger(): (datum/action) -#define COMSIG_ACTION_TRIGGER "action_trigger" - #define COMPONENT_ACTION_BLOCK_TRIGGER (1<<0) -/// From /datum/action/Grant(): (mob/grant_to) -#define COMSIG_ACTION_GRANTED "action_grant" -/// From /datum/action/Grant(): (datum/action) -#define COMSIG_MOB_GRANTED_ACTION "mob_action_grant" -/// From /datum/action/Remove(): (mob/removed_from) -#define COMSIG_ACTION_REMOVED "action_removed" -/// From /datum/action/Remove(): (datum/action) -#define COMSIG_MOB_REMOVED_ACTION "mob_action_removed" - -// Note that this is only defined for actions because this could be a good bit expensive otherwise -/// From base of /atom/movable/screen/movable/action_button/MouseWheel(src, delta_x, delta_y, location, control, params) -#define COMSIG_ACTION_SCROLLED "action_scrolled" - -// ghost signals - -/// from observer_base/do_observe(): (mob/now_followed) -#define COMSIG_GHOST_START_OBSERVING "ghost_start_observing" -/// from observer_base/do_observe(): (mob/no_longer_following) -#define COMSIG_GHOST_STOP_OBSERVING "ghost_stop_observing" - -//Xenobio hotkeys - -///from slime CtrlClickOn(): (/mob) -#define COMSIG_XENO_SLIME_CLICK_CTRL "xeno_slime_click_ctrl" -///from slime AltClickOn(): (/mob) -#define COMSIG_XENO_SLIME_CLICK_ALT "xeno_slime_click_alt" -///from slime ShiftClickOn(): (/mob) -#define COMSIG_XENO_SLIME_CLICK_SHIFT "xeno_slime_click_shift" -///from turf ShiftClickOn(): (/mob) -#define COMSIG_XENO_TURF_CLICK_SHIFT "xeno_turf_click_shift" -///from turf AltClickOn(): (/mob) -#define COMSIG_XENO_TURF_CLICK_CTRL "xeno_turf_click_alt" -///from monkey CtrlClickOn(): (/mob) -#define COMSIG_XENO_MONKEY_CLICK_CTRL "xeno_monkey_click_ctrl" - -/// Alarm manager signals -#define COMSIG_TRIGGERED_ALARM "alarmmanager_triggered" -#define COMSIG_CANCELLED_ALARM "alarmmanager_cancelled" - -// /obj/machinery/door signals -#define COMSIG_DOOR_OPEN "door_open" -#define COMSIG_DOOR_CLOSE "door_close" - -// /obj/machinery/door/airlock signals -#define COMSIG_AIRLOCK_OPEN "airlock_open" -#define COMSIG_AIRLOCK_CLOSE "airlock_close" - -// /datum/objective signals -///from datum/objective/proc/find_target(list/target_blacklist) -#define COMSIG_OBJECTIVE_TARGET_FOUND "objective_target_found" -///from datum/objective/is_invalid_target() -#define COMSIG_OBJECTIVE_CHECK_VALID_TARGET "objective_check_valid_target" - #define OBJECTIVE_VALID_TARGET (1<<0) - #define OBJECTIVE_INVALID_TARGET (1<<1) - -#define COMSIG_LIVING_CLEAR_STUNS "living_clear_stuns" - -//MODsuit signals -/// Called when a module is selected to be the active one from on_select(obj/item/mod/module/module) -#define COMSIG_MOD_MODULE_SELECTED "mod_module_selected" -/// Called when a MOD deploys one or more of its parts. -#define COMSIG_MOD_DEPLOYED "mod_deployed" -/// Called when a MOD retracts one or more of its parts. -#define COMSIG_MOD_RETRACTED "mod_retracted" -/// Called when a MOD is finished toggling itself. -#define COMSIG_MOD_TOGGLED "mod_toggled" -/// Called when a MOD activation is called from toggle_activate(mob/user) -#define COMSIG_MOD_ACTIVATE "mod_activate" - /// Cancels the suit's activation - #define MOD_CANCEL_ACTIVATE (1 << 0) -/// Called when a MOD finishes having a module removed from it. -#define COMSIG_MOD_MODULE_REMOVED "mod_module_removed" -/// Called when a MOD finishes having a module added to it. -#define COMSIG_MOD_MODULE_ADDED "mod_module_added" -/// Called when a MOD is having modules removed from crowbar_act(mob/user, obj/crowbar) -#define COMSIG_MOD_MODULE_REMOVAL "mod_module_removal" - /// Cancels the removal of modules - #define MOD_CANCEL_REMOVAL (1 << 0) -/// Called when a module attempts to activate, however it does. At the end of checks so you can add some yourself, or work on trigger behavior (mob/user) -#define COMSIG_MODULE_TRIGGERED "mod_module_triggered" - /// Cancels activation, with no message. Include feedback on your cancel. - #define MOD_ABORT_USE (1<<0) -/// Called when a module activates, after all checks have passed and cooldown started. -#define COMSIG_MODULE_ACTIVATED "mod_module_activated" -/// Called when a module deactivates, after all checks have passed. -#define COMSIG_MODULE_DEACTIVATED "mod_module_deactivated" -/// Called when a module is used, after all checks have passed and cooldown started. -#define COMSIG_MODULE_USED "mod_module_used" -/// Called when the MODsuit wearer is set. -#define COMSIG_MOD_WEARER_SET "mod_wearer_set" -/// Called when the MODsuit wearer is unset. -#define COMSIG_MOD_WEARER_UNSET "mod_wearer_unset" - -/// Called when the round has started, but before GAME_STATE_PLAYING. -#define COMSIG_TICKER_ROUND_STARTING "comsig_ticker_round_starting" - -/// from /obj/structure/cursed_slot_machine/handle_status_effect() when someone pulls the handle on the slot machine -#define COMSIG_CURSED_SLOT_MACHINE_USE "cursed_slot_machine_use" - #define SLOT_MACHINE_USE_CANCEL (1<<0) //! we've used up the number of times we may use this slot machine. womp womp. - #define SLOT_MACHINE_USE_POSTPONE (1<<1) //! we haven't used up all our attempts to gamble away our life but we should chill for a few seconds - -/// from /obj/structure/cursed_slot_machine/determine_victor() when someone loses. -#define COMSIG_CURSED_SLOT_MACHINE_LOST "cursed_slot_machine_lost" - -/// from /obj/structure/cursed_slot_machine/determine_victor() when someone finally wins. -#define COMSIG_GLOB_CURSED_SLOT_MACHINE_WON "cursed_slot_machine_won" - -/// from base of /obj/item/slimepotion/speed/afterattack(): (obj/target, /obj/src, mob/user) -#define COMSIG_SPEED_POTION_APPLIED "speed_potion" - #define SPEED_POTION_STOP (1<<0) - -// Signal types for the cargo shuttle - -// Sent before the shuttle scans its contents. -// Use to initialize data that will be needed during the scan. -#define COMSIG_CARGO_BEGIN_SCAN "begin_scan" -// Sent as the shuttle scans its contents. -// Can return sell flags (see code/__DEFINES/supply_defines.dm). -#define COMSIG_CARGO_CHECK_SELL "check_sell" -// Sent as the shuttle begins selling off its contents. -// Use to initialize data that will be needed during the sale. -#define COMSIG_CARGO_BEGIN_SELL "begin_sell" -// Sent during sales for items marked with COMSIG_CARGO_SELL_PRIORITY. -#define COMSIG_CARGO_DO_PRIORITY_SELL "do_priority_sell" -// Sent during sales for items marked with COMSIG_CARGO_SELL_NORMAL. -#define COMSIG_CARGO_DO_SELL "do_sell" -// Sent during sales for items marked with COMSIG_CARGO_SELL_WRONG. -#define COMSIG_CARGO_SEND_ERROR "send_error" -// Sent when sales are completed. -// Use to send summary messages for items that sell in bulk. -#define COMSIG_CARGO_END_SELL "end_sell" - -///from of mob/MouseDrop(): (/atom/over, /mob/user) -#define COMSIG_DO_MOB_STRIP "do_mob_strip" - -// Sent when a mob spawner is attacked directly or via projectile. -#define COMSIG_SPAWNER_SET_TARGET "spawner_set_target" - -/// Used by admin-tooling to remove radiation -#define COMSIG_ADMIN_DECONTAMINATE "admin_decontaminate" - -/// Sent when bodies transfer between shades/shards and constructs -#define COMSIG_SHADE_TO_CONSTRUCT_TRANSFER "shade_to_construct_transfer" diff --git a/paradise.dme b/paradise.dme index 093eb7ccc437..7d57b41f5a18 100644 --- a/paradise.dme +++ b/paradise.dme @@ -143,9 +143,19 @@ #include "code\__DEFINES\wires_defines.dm" #include "code\__DEFINES\zlevel_defines.dm" #include "code\__DEFINES\zoom.dm" +#include "code\__DEFINES\dcs\atom_signals.dm" +#include "code\__DEFINES\dcs\basetype_signals.dm" +#include "code\__DEFINES\dcs\carbon_signals.dm" +#include "code\__DEFINES\dcs\datum_signals.dm" #include "code\__DEFINES\dcs\dcs_flags.dm" #include "code\__DEFINES\dcs\dcs_helpers.dm" -#include "code\__DEFINES\dcs\signals.dm" +#include "code\__DEFINES\dcs\dept_signals.dm" +#include "code\__DEFINES\dcs\global_signals.dm" +#include "code\__DEFINES\dcs\item_signals.dm" +#include "code\__DEFINES\dcs\machinery_signals.dm" +#include "code\__DEFINES\dcs\mob_signals.dm" +#include "code\__DEFINES\dcs\movable_signals.dm" +#include "code\__DEFINES\dcs\obj_signals.dm" #include "code\__HELPERS\_logging.dm" #include "code\__HELPERS\_string_lists.dm" #include "code\__HELPERS\AnimationLibrary.dm" From 3fd78491e6a7769f1f73290131f4a4c86cc741bc Mon Sep 17 00:00:00 2001 From: Spaghetti-bit Date: Sat, 24 Aug 2024 09:43:47 -0700 Subject: [PATCH 08/40] Moving while buckled or while in a locker that is locked / welded will no longer reset resist timer. (#26523) * Moving while buckled to a surface will no longer reset the timer / cause you to fail. * Properly applies the same principal to closets and secure lockers. * Changes break out time to use the MINUTES define. * Apply suggestions from code review Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Signed-off-by: Spaghetti-bit --------- Signed-off-by: Spaghetti-bit Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> --- code/game/objects/structures/crates_lockers/closets.dm | 4 ++-- .../crates_lockers/closets/secure/secure_closets.dm | 4 ++-- code/modules/mob/living/carbon/carbon_procs.dm | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 9d598c5e9058..e0f619555e0c 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -340,7 +340,7 @@ return TRUE /obj/structure/closet/container_resist(mob/living/L) - var/breakout_time = 2 //2 minutes by default + var/breakout_time = 2 MINUTES if(opened) if(L.loc == src) L.forceMove(get_turf(src)) // Let's just be safe here @@ -358,7 +358,7 @@ spawn(0) - if(do_after(L,(breakout_time*60*10), target = src)) //minutes * 60seconds * 10deciseconds + if(do_after(L, breakout_time, target = src, allow_moving = TRUE, allow_moving_target = TRUE)) if(!src || !L || L.stat != CONSCIOUS || L.loc != src || opened) //closet/user destroyed OR user dead/unconcious OR user no longer in closet OR closet opened return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index c6015152be6c..88103ce801b1 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -98,7 +98,7 @@ add_overlay("unlocked") /obj/structure/closet/secure_closet/container_resist(mob/living/L) - var/breakout_time = 2 //2 minutes by default + var/breakout_time = 2 MINUTES if(opened) if(L.loc == src) L.forceMove(get_turf(src)) // Let's just be safe here @@ -113,7 +113,7 @@ spawn(0) - if(do_after(usr,(breakout_time*60*10), target = src)) //minutes * 60seconds * 10deciseconds + if(do_after(usr, breakout_time, target = src, allow_moving = TRUE, allow_moving_target = TRUE)) if(!src || !L || L.stat != CONSCIOUS || L.loc != src || opened) //closet/user destroyed OR user dead/unconcious OR user no longer in closet OR closet opened return diff --git a/code/modules/mob/living/carbon/carbon_procs.dm b/code/modules/mob/living/carbon/carbon_procs.dm index d4df5c3891aa..2ae9495ff2e3 100644 --- a/code/modules/mob/living/carbon/carbon_procs.dm +++ b/code/modules/mob/living/carbon/carbon_procs.dm @@ -830,7 +830,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven visible_message("[src] attempts to unbuckle [p_themselves()]!", "You attempt to unbuckle yourself... (This will take around [breakout_time / 10] seconds and you need to stay still.)") - if(!do_after(src, breakout_time, FALSE, src, extra_checks = list(CALLBACK(src, PROC_REF(buckle_check))))) + if(!do_after(src, breakout_time, FALSE, src, allow_moving = TRUE, extra_checks = list(CALLBACK(src, PROC_REF(buckle_check))), allow_moving_target = TRUE)) if(src && buckled) to_chat(src, "You fail to unbuckle yourself!") else From 50b85352dc14827f4432086bf4afa927bde8167a Mon Sep 17 00:00:00 2001 From: HMBGERDO <61080616+HMBGERDO@users.noreply.github.com> Date: Sat, 24 Aug 2024 18:51:20 +0200 Subject: [PATCH 09/40] modsuit storage shouldnt be bloody, its not even a real thing! (#26553) --- code/modules/mod/modules/modules_general.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm index f7dc549a2b78..62d78a570305 100644 --- a/code/modules/mod/modules/modules_general.dm +++ b/code/modules/mod/modules/modules_general.dm @@ -109,6 +109,8 @@ STOP_PROCESSING(SSobj, src) return ..() +/obj/item/storage/backpack/modstorage/add_blood(list/blood_dna, b_color) + return ///Ion Jetpack - Lets the user fly freely through space using battery charge. /obj/item/mod/module/jetpack From 7f3918b279d848f9788fee988cb2ec903cb8afff Mon Sep 17 00:00:00 2001 From: chuga-git <98280110+chuga-git@users.noreply.github.com> Date: Sat, 24 Aug 2024 12:49:37 -0500 Subject: [PATCH 10/40] adds adjacency check to kitchen_machine AltClick (#26591) --- .../food_and_drinks/kitchen_machinery/kitchen_machine.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm b/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm index 4d1a35328383..965e9a95911f 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm @@ -565,7 +565,7 @@ dispose(ui.user) /obj/machinery/kitchen_machine/AltClick(mob/user) - if(!check_useable(user)) + if(!Adjacent(user) || !check_useable(user)) return cook() From 05523685815204f41a4ea904cf80bf1fd1b039a1 Mon Sep 17 00:00:00 2001 From: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Sun, 25 Aug 2024 18:27:06 +0200 Subject: [PATCH 11/40] Fixes count xenomorphs (#26580) --- code/controllers/subsystem/SSticker.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/subsystem/SSticker.dm b/code/controllers/subsystem/SSticker.dm index d262c69c6fd6..9defe6791281 100644 --- a/code/controllers/subsystem/SSticker.dm +++ b/code/controllers/subsystem/SSticker.dm @@ -819,7 +819,7 @@ SUBSYSTEM_DEF(ticker) /datum/controller/subsystem/ticker/proc/count_xenomorps() . = 0 - for(var/datum/mind/xeno_mind as anything in SSticker.mode.xenos) + for(var/datum/mind/xeno_mind in SSticker.mode.xenos) if(xeno_mind.current?.stat == DEAD) continue .++ From 4919445067b347c4473d700b880611c9bf233d6f Mon Sep 17 00:00:00 2001 From: warriorstar-orion Date: Sun, 25 Aug 2024 12:41:17 -0400 Subject: [PATCH 12/40] feat: Add genetics cube lockers. (#26547) --- _maps/map_files/stations/boxstation.dmm | 16 +--------------- _maps/map_files/stations/cerestation.dmm | 8 +------- _maps/map_files/stations/deltastation.dmm | 7 ++----- _maps/map_files/stations/metastation.dmm | 8 +------- .../closets/secure/medical_lockers.dm | 17 +++++++++++++++++ icons/obj/closet.dmi | Bin 32447 -> 48615 bytes 6 files changed, 22 insertions(+), 34 deletions(-) diff --git a/_maps/map_files/stations/boxstation.dmm b/_maps/map_files/stations/boxstation.dmm index ad4700d9ec2d..52e2261f4c8e 100644 --- a/_maps/map_files/stations/boxstation.dmm +++ b/_maps/map_files/stations/boxstation.dmm @@ -56633,7 +56633,6 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/storage/box/monkeycubes, /turf/simulated/floor/plasteel, /area/station/science/genetics) "fXp" = ( @@ -68432,24 +68431,11 @@ /turf/simulated/floor/plating, /area/station/maintenance/disposal) "lNE" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/storage/box/monkeycubes/wolpincubes, -/obj/item/storage/box/monkeycubes/nian_worme_cubes, /obj/machinery/light, -/obj/item/storage/box/monkeycubes/farwacubes{ - pixel_x = -6 - }, -/obj/item/storage/box/monkeycubes/neaeracubes, -/obj/item/storage/box/monkeycubes/stokcubes{ - pixel_x = 4; - pixel_y = -4 - }, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, +/obj/structure/closet/secure_closet/genetics, /turf/simulated/floor/plasteel{ icon_state = "whitepurple" }, diff --git a/_maps/map_files/stations/cerestation.dmm b/_maps/map_files/stations/cerestation.dmm index d159c958bb5f..19a4c3b993e7 100644 --- a/_maps/map_files/stations/cerestation.dmm +++ b/_maps/map_files/stations/cerestation.dmm @@ -88944,14 +88944,8 @@ /turf/simulated/floor/plating, /area/station/hallway/primary/starboard/south) "uVC" = ( -/obj/structure/closet/secure_closet/personal/patient, -/obj/item/storage/box/monkeycubes, -/obj/item/storage/box/monkeycubes/farwacubes, -/obj/item/storage/box/monkeycubes/neaeracubes, -/obj/item/storage/box/monkeycubes/stokcubes, -/obj/item/storage/box/monkeycubes/wolpincubes, -/obj/item/storage/box/monkeycubes/nian_worme_cubes, /obj/machinery/requests_console/directional/west, +/obj/structure/closet/secure_closet/genetics, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "whitepurple" diff --git a/_maps/map_files/stations/deltastation.dmm b/_maps/map_files/stations/deltastation.dmm index 90ba1744be31..c39322991ad3 100644 --- a/_maps/map_files/stations/deltastation.dmm +++ b/_maps/map_files/stations/deltastation.dmm @@ -57841,15 +57841,11 @@ }, /area/station/science/genetics) "drR" = ( -/obj/structure/table/glass, -/obj/item/storage/box/monkeycubes{ - pixel_x = -3 - }, -/obj/item/reagent_containers/spray/cleaner, /obj/machinery/light{ dir = 4 }, /obj/structure/disposalpipe/segment, +/obj/structure/closet/secure_closet/genetics, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "whitepurple" @@ -64056,6 +64052,7 @@ pixel_y = 10 }, /obj/structure/disposalpipe/segment, +/obj/item/reagent_containers/spray/cleaner, /turf/simulated/floor/plasteel{ icon_state = "whitepurplecorner" }, diff --git a/_maps/map_files/stations/metastation.dmm b/_maps/map_files/stations/metastation.dmm index a4ec0e7aaed7..0169c7bbe85f 100644 --- a/_maps/map_files/stations/metastation.dmm +++ b/_maps/map_files/stations/metastation.dmm @@ -73768,13 +73768,7 @@ }, /area/station/medical/chemistry) "pUh" = ( -/obj/item/storage/box/monkeycubes, -/obj/item/storage/box/monkeycubes/stokcubes, -/obj/item/storage/box/monkeycubes/neaeracubes, -/obj/structure/table/glass, -/obj/item/storage/box/monkeycubes/wolpincubes, -/obj/item/storage/box/monkeycubes/nian_worme_cubes, -/obj/item/storage/box/monkeycubes/farwacubes, +/obj/structure/closet/secure_closet/genetics, /turf/simulated/floor/grass/no_creep, /area/station/science/genetics) "pUq" = ( diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical_lockers.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical_lockers.dm index 9e8e7d49a9e9..dddf8e330afb 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical_lockers.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical_lockers.dm @@ -232,3 +232,20 @@ new /obj/item/reagent_containers/glass/bottle/reagent/acetone(src) new /obj/item/reagent_containers/glass/bottle/reagent/acid(src) new /obj/item/reagent_containers/glass/bottle/reagent/diethylamine(src) + +/obj/structure/closet/secure_closet/genetics + name = "genetics test subject locker" + desc = "Storage for lesser form cubes." + icon_state = "genetics" + open_door_sprite = "med_door" + icon_opened = "med_open" + req_access = list(ACCESS_GENETICS) + +/obj/structure/closet/secure_closet/genetics/populate_contents() + new /obj/item/storage/box/monkeycubes(src) + new /obj/item/storage/box/monkeycubes/farwacubes(src) + new /obj/item/storage/box/monkeycubes/neaeracubes(src) + new /obj/item/storage/box/monkeycubes/nian_worme_cubes(src) + new /obj/item/storage/box/monkeycubes/stokcubes(src) + new /obj/item/storage/box/monkeycubes/wolpincubes(src) + diff --git a/icons/obj/closet.dmi b/icons/obj/closet.dmi index c9a4c513cf3c231927ca161c19746db275418d89..7ee905462de248346e44da6995f9cc89c5ee8dcf 100644 GIT binary patch literal 48615 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

Xq8AE5aa{m{WT!R2&WE?s=)LCkWcgTn!p1u zoQnc^(nGiaN*){$&rZoEwdGOh@&5Nc7D?BFl#}RA6vKEV-L>Xp1~}H5^VKc(W$sO) zAK|1bI)1lQ)zzBUIb6~&ZDF^J)eky>)?Agg3bpV!7gE&cMStqSEev5vyhD59B8W5} zYajCjvbLIl!rp*3M3LT7c&$}@f55kBZ6T!JX2?(urWg!OwvaWkxVVb+qikM+OY+xe zDG04CG>UHc2}AXQnxsp;58hfY< zuYMVpXV5W|Ksxjj-S+t<1gXSQ#REAexYgBoOHp#@Xman1U^;euw(ofw4Rq@iy^upi zLj-AXRQ^=unfMn`HPDzS4O6nPN$It8^cfNrw97M~;?fFJ+~&kwsME;u>VV;qPLEHk z=)J~(heT1vhsYEPLPMxqUJ>O~q+IQHm&7eH57BY}Pcd=I?f4JMdPy*7-}$8Fs>c;bAY|iNpmq}B>$iU*kH}tV0xm%f%fw@AM$}NVlaOsf> zs`!w! zuKc8CG4+f_)Y-K-?mKy<^-bvgs+Vn_|e)MrCfnc>^^hLZQp>;p>4T z&Fzc){OiiWo;B+*`#;X5KCODG=k6Cr&r;-fS!XewXsqIvq6c^>M>%|XwB{_gbFD>u z1!rRE$24ZK1!w9Fvh^~0xZSub``&Cx-ucw{o)+~%`i7;18#O!gFmjYh1q`K(xjN{CIAx|{3 z|M^u``%Kb_{|!e{j-%cl>oEfqHM&kK=Q2ZzU zjWt@a&@OjP^dh?wfA)5=bk`%>1Tn_4d{Vz0u8VM9hN%{qYVG3etFZL)rQG=4R=Vg7 zu?s9-22FIa>@yRAYzo_`+eH7tCNE?PWJc&&1rTY)>Pp9VVjc{jPna;N0TWNsET|Rz zu)g9;7X(sK1@Us8$`$}Ubd+@l8V{g6O zLD|fZs)BTyTeeG772pXEta3iM+{Jn}tPa4+v3;V5azgnHmb-}(1+JVd81~m8-U|Q; z!*Qm-_BOa-tePRpJ|N8$Do^b21mWBokBZg$%785|CyU;Uq~q8s!~gQkUD%6W?k7hk z!qnMI7d3z`M%KqQh`{IW1tLFp-=Z0Aq?CHX?(JO|BdIs$_X9Msj(sWAE@k~b>>MALc#rTLWb_(Rk~WG|OU)9*Mrcy2BH z$`@_!&+Uu;(mX#0vcy9iGkY&H2vhm1?{pVIV}Z!cb{98Z{Vb)X5gy-Hxio{_=*+N zvRH8Vo83C=z_le*M#fEv`pDXC#DR!=Q%U-A9GAu!?YKptq`dchkjHSZj2o8jnHkB5 zSf*H$hG=i9JY%p0`bQ`32ELbTbP#I6GBhL#Pxvr5zA9}pANVyE|F#&Waw2r~VKTnb zYprQC*@6#8!yPtmof;R^xFP1-9P@DA>l}5E=3QVlLOxE?4u2R#RL{&vDpDR%otI?X z#ZvNnbiJ6Z;X*+4CGpk^$#q5s(9J>G(Ut~NOTYKpW;aZHaFN83QH<~WaCgURj3HZY zh0C;w0{FssMbM8g{F-!eVI4kfMw8~*6}iE!o1z89-Jg^QLlLnThnA}FH8vV*&KB+L zloQSr7c3V`r+#+VN0Zj)D9D7|zko76;bCBgZyPr^_slAKv+nK(Jhpq@;(uRX!#;#` z;>|Y;$yX7jLmIa8ra?g*VT61_kdRMgknl3WzYf0HTil$ZnCQf~ry%&{@nZ(}v1Oaf zeoBRdtBIuOt-erC0mo?V8dyjdY}b_hFc>euBJBZ5m$MhfoW7}QLodqi#J?r`_5RU2 z+g%#;aWI+38gD`>1Mf~x4rGF{rIF0-9k}_&vrX;>6O`yV`p=KLyNAgH&KPG|TI7e> z_4j58B&_JO`+>smKa4k}-U9io<;OT*kjMoOYWN)a?wmGF*n89~m}1z>bN0OIJ;;)w znAU*;Yb&|mqll&vJtY+-g}gAeXhwaNG~lgJ93}Kd7rzze)3L1`36eS3;XTb$^Hk`R zXdVqEV{*aM#W>#Yv&XegfjBi$d@T5c|n|Peh zMwCN3SPvFo6nN$>5W3 z12y~C>$NH4{?OqA?d9GFzchM5vQY4(gqf=ADneN3KwvemWz{mHW z-3q`D44w}7syLM{*D*3kcd(BJozc2pyM0aBKBviep4|39bH59>(V6b2QOOd@iLJl< zpw#7s)ZxXQTHGQSVy?jji9l}Mk5jjvIR=9>+yGUB%xbcYlm}K7_M?X}*?4Gs4q6tfFlP zSvqG;HN8Uhg(~5$b_~RozL|KECvPC4e9@FwFZ#@7tE#B5{S;;NcJr>!R79AOI*m5M zswPz`7EYyy?xSTK*q!V+O#Af?Wsgp%RJIC(u92ito=0*!F3$JyStV|1~yNErAiw zj%!wwc8XFXzc}RrR-Zf>G#ww_e_~dxzGyy)Xl{3GJrHa3+=SUo=(8luk;O4Fl3S`A zr=IJvE10H_DDT7%(Xp>bM{HUE#^xWFnLBjakR%O&Sfz(Q8DzUREP5uLJH!(sQDE|$ zNbz3Z6pb#+*Jl+)j2=Mh;CE~hw9mvmhrsfh-Vo$z!fB#GoV*VA%^NaTS=uHcI{r}FH z`~F3XT0j$PO$=@kCsl3@ed<)eOy_zv>IT0&3s1Oy@83LE{p@<#P%m@Y(H*V|H0?1kI8HDbth!fPEUnyh~}4GUAn@XqVKo5YGQG6Ut4$A07QKisguey zvL{ah@m;fr&~e*I8}?dTG8$Ep`$CkS>2q=Lf50c8jBB@IiJE6J@J~KnkNc@4XlUK_ zFI6Mc#g34`&30ab%?P{?uX%gNx7<1+GGkrE1FCfI&I}0CH8D4@Qx*di?c(x9`a3P> zEQ#pzcxnHyLTD1eHx(jkfv#$q^6avjLhXo_R`&3rclT`l_(KR< zhtvocnXTpBU1bf1A{D=V^yLQg9;%aTwf1Z_Iv4q^0-+UbVS z))LpdVXmjLJH&q2GP<+)(-|>iu#S5JMi{f3lpNr_e`pL$kfo<4k_ttOXD}lk6%L}z zD4Sc_zY)^=jQ{@6$hipZ|4A`_6B7K3>wh!zlL-j~JoT`=uJ-&L8kR?)H;2ztVcpVwX(`#$ z@{j_(DhASP8~G=f39lI$6{8<>V|T0GZBNG~HFsH+ExmkZc_&@m<@?!rdzfs`B_e7_oDjC&&;0G7R7FT}CC!n(lPP&u z13A3+U*q()%P0jXm7-M@W3cZWwWs<0XGCqCYQE<;lIy&`1vM}Q-w6V*aP}Qif*da2 z^)iE%P!*3Y<1F>flmO-D^nd#YD(m1{r3GRrMWCWq*MO%ktWX8snjS@JKtB`OT~3Oxpmub|56y$k75M!zW;c{jL)kk2SZ|`DN(B5k&Wk=QP(UhR3Fe-v_SCQ3fVzTk5;MX;Z+Q~2!Q zJCkWIj5z8rpE|uc7-UaB2T;H@b%&-sy5|jWuY_ZeDY+CxcH5y>TWt=iAuI|OGC8jj z)fFKU@A)F>3Ij=0tuSjDwcxJ4Q-x6y_{Aqxneq5!Ddh)Gaz*Dh?md8>@&Mu{qT%sx z1~vrfm|>2bH%EK<2 zGu?N<1$z#4o%d>6!;WO0#rw@xBE^&!&c zwkOMY$AbnYHhyQ-$gO00CwU+V9h9fFMg@JF*N#~M(+nxCadY9 zXi(J*Pi@BbvR#!!Km27xSZ!($&y~HC)%E|I5pg}g{sr?W^fhk7IXc1GLiA!F(Bq9es;4DlB`Iq9HJcdY!MtKp27ra~4&Bi)fwRdvcyB7p0wOSgLUcNpy9Y845PvTm_P1X;%R8TbNu zdLAO_$7zZl$4mMw`o0W_11NAI*^id)hE47laIUqoYf+f_JDm%O6hY}g$amo|2r}Wd z(SP`ovVC_7QcY?CCDAg=CWfpae`DdI9eXzE=HlVj*+JJn0@NOMc6_r&8I=urF=Gd( z5FPhI7dBf-tgw&lUr!&#G0S27Bw`L#hz}1#|0s zMozAi(pZP1aK}^WzQp+Z9fdPzHGXdKm;W9A5?5KZFh0{NI=y1Ix7cU>1}9&Io__V5 zv9h>-z#Y5L@LUNfqpQmjzj?O|dQ-+(-&FG!Uq@$D7Ci&IXp_gSJaV*4!k~-M^eWk@AuWUdsNzN+oDtr7C?App8C8J%Vz|zYkqz`M8!^V|0 zwPjYAKQzyYW%^PBb4L?|5-!^d8;eljJ!h56*X%5@wq>ureS%P~rPTz=Hf(0p2nLhFME z*E_?TN2|n`c&^e|4u@&f&eb#=_C8xWs9EilznGP#*xJAvgdetvW~%sL26n2Yr?!2{ zT-tZmL+PvRPh&Z3iP+bC^%GY1Chm@m3G=tPCEIL8((_!Oz+Pcz2VXzGyVoJPDw=YN zm{@VGDBDLrSsc}GbQEBqOn67nA?oIcy2ftv@)J7$H9L{m4gY*9;(CTUNGhut3HnZG z{rM>)kD|`m?DTY9zkc-e@h3z8pJ9 z62*m*(lN2lsmz|B%8x83Fo#O{_;cp|h;T#$QOCf?%`wF8A9tI6Mw8gae7!Ufti<|j z4cf>68WruEQMvaSJ+r!ms(VIt#3h$G4LcqZ$g2EKkCVl-7sza~`{}L6JoQOlpII4#8eTdwnv$ttaTxPJ|b_zrJbp{c6Zdcr>tJv=x zAg3pXY9)fB5+@qBOkGjKx@7ttdYXSaOz?$D~jjPwHMm>K@ z0^Kj8O@LX=9J0|Fq31aCG)C_d0+Yor5;&iSSYO5Fr}NEN1_g=9f6qmG zp~*TpLzlOk2gRyqYg9R|A?h4(&ki}n^6ff*6UKF4$ww1{E8AV_M%|<2pu+7E0*2qO z{l~gSukF2q)%HD0-pSSY!kmhHRf{0%ALMrc89mE82J7oL;bb{CjU%IMs6`1RnEMTk z%1Vd$Wt7sya=fE3?feYCjDwd(sy!z>41{E0(UslRIXm9mWkd^zAxkT^CeF*Pu2dxj z9Wzgy_sl`B<6FM)rwAS;`!Xx$T@+T6-oC;+dy%F<7x{}TJgXT=lsx({L+>#kpSsc~ z57~RDi00Kgt|}o#l2)6?tz(e2dF`(vi(FhEjtl62$$>+FkiF(6rF)n0$u&iEn`<}{ zpDojRfG6XIj`mQS{n$GbfPPetJtrq8tG1SvXDT)O%O{#Cwlr=QwzIBVQIxcdBkC$_ z72y$Z^YX#7NC}zyQ{3!7U8b|nVfY6$&`b=O<7qhWd8h4Bg6qVKTjRIzc{5TA9tU7? zd}{<-pmWq!5;b3S5wq%ZVA78|3N62Hg-!k zs-z*8jZTS}muJ{1ia|D!WF3x#w}%hft1J9cJ$O)sK~A3xwl9s-bGbJs3J1zo~CxbGR6 zLL{`6m$sD_6CiBdCtt@Y7sWD32jAhFDomx{2Y~rsvr$~q?RxEV$vhT(?8x8Z3o98P zMemB~smyL^SYR}0xrm-@f#o_ZYm<$}~S$Sp4= z;#?0U#i9I+w(0vco9&aHySfO5*s!e|m93-Yx4EktITeKzEr+;xIg0{F>Wua4>1od= z7)W^yMK8*|rhRuYeXF}HjOQncWNYx`~WJ7X#dxD{h#`zpKQ~#NH6=RT`9Q?>I5MA_ggcG5t|A$a*ztbb%HQ zx&0n!HD?t<=J8$kn?Y>O5sAJFcNR+bb8YEXvHUTM?_dQdauyUiM=RWZZd=t;N`ABox`Et|mJk&%~he((E?7j1@7_<)^wl1!GfE>>YWcC<9iXq8x%fVKBeSE5I^0 zmow?&+gz=-3Gnf*ZAC1a2{_3AVg9*n08i_0tH4rpvN4i@Yu+5YwlnaHgN0y;^7K_C z-G}h_IA%@#`I1$uRvk+BH1uNqRun@mI092Kyb6_u9OnneaY+jH(&K33Y3WBkB*~JJ zMo=>A%*4hvNFvQH;#p*_1T#Ui+oEB!&pC=_f8=)J z!qwDD*P1BSGcsu9w6%=R*O=0gdWu+OL%fV*Ur2}}F8lxF<`9iI%9P-tBsc6eq-HLs zIE7IE!13s+<&W<6;afB)pW;KW{)?(wRV~S)^JW=ZVh}M|%F^Tgi6EXgPMT@rq>L{( z@OCo8cYns2L?=O|Nk63yk??YadM+0{t;T%UW(2L|Y~rD`J8I<7eO~Oj_o_*GT0`rO z&&U7pSN)BH*-UW#{pK%;b*c~a6~h1Gz8yeSyAT9X_{57Wx{A9mMGsd+Nyba6k#E$j7%(6|Q|6ylp+h1UFD+>=6JutS$N zJL2sJo%>vdj+u)Gmba#|kJi5(MYB0e#aggnZCV7$uf|4n@j|gAK(oyq(t*`kVI70B zCO>n*YUL>TjJj8aDIcn+I%c82Lj46S#v&gdZzpzeAk!NL#Yc8FWt`o3p)bKvGxJ;i z(zQfTg(M~*$B{VC`X%MofJoThpv|E2P36adrpBb~V#24CQ1wd}5Ol-G0}OuvVWEY# zJlZ~DzHM(toG14O3^f!>qbuyT)PN;ZB)#ttV3{m7EP%>Ll|1&XQ@P00kv zW8qmdpf2~_K$aM)1MfG;TYqn+y(fUo#EMf>q^kM}IsD~y-^R<;@z%~4B*=H9$6jt? z8!3j}ItUt&>icMb=O;C=(Jh@I3K&%G>1y7;7y7=9#WCmmcLPCYTy$v9R-B)mlS^HB zoywP!g#M3$;(wrwdc+}^zEeHzO_IV8n7YE=&{8}MJDmG}@{__b@)x|w-ukoCehG4R zY6-JcIS{XW%aB-a4zxktV&Nq3gStZAP{K@~d$hJcGc}mp$I7<9g4N^8`yCc7*6WVpc%> zCyF#XRpcd`=y}?oc;L3{)-Sg{nZ=T?zuzCq);azN!m=OzS(AM`l{#ScA{x06$dv-d zJKtR}65^2T^tai88cEWdHXlsS^b;j2*w!9On-LKf!E1l%;VX$4FnmHfA+r}00t}nn zp6~2Wx2U2~pdG7Azdig5>Hjt&^b1)m<&UX6mgowz$hviG=sQ zO@#)vp&a-a8UW&ch$N1$r3?1o6dnM+pXR%%L|#D(o(H5w@}f(w(%!Z=50IcEYw4U@ zrWbvK9s+Vm0<#F=QxF8-iMG3cm@!*bCH!}UfHn)EIf~6EzYF(y@l8jaiIK4zkNR72x+>uW~s5M zO1{xA&#txCj3F51iWgM0xslXc(=zj&A7;rE)UTD&YjlrPPmAi^@icOjIOwA2yqf4h zaO%;DDYyhp*4kmY9;v$iuUQTZ^=N%z^4j{x*C$d3P4rcV0~Equ-l zmG9Tr10o*1y6!;+eU4xPeN^O**tD>PIV$;D9o zBZIpQ5*w-1Ij`B;!E=78@os0@4sr+Y0Cey3lZU&l;gK4en`e;&?4@zwK)a4a9_c`|re|*ROx-w_h5*iY%3Q2}B7X!T?`-NTI0&F?U$c`Hu%fZHtq*HOVW*U*2dUFvyRyv*P6^~ynw|h_QH_wIi%*Dhe@C4mY(I zDk9?p#5_%tEs&cxxC zP9N5eIsg6WW+WABOb@A9iC=vxl-X(3cOr02Mg-=V7U)5zFi28`*vsZ(W{*S-!fP#ig(PA{?fv#?xb;h*A+JD@2)-Hrw zJ8?B!0AKX+4)<;07?B`Dd)^|e@(y=s+kfnwu=CAD!q$`T_2lpZFyCLL1PuANTSlMc zpP}!s+Ofz3WK$;mb>|WC13owG8Vp~C-;YOZ?aM?kH>JyXL1ly}w%7$c)t+20vZxvU z2DJ75Gr0a&uNyR*nMrHkIC^M1)&f@p}{rjjM z!;ZM?z);OUTO`Z_OBnprr;B}3(}vfB!sF#})dQ;VAKMe$ZkwY$`;xjb$n}3>`U+Py z;V$I69}a|Qhb2sPsK+3kpfSjQep5BV{E6AoLlo+4D&mj}cXrfTd>_Uj^Bf(XCPrrd zM)5%Z&c&`fp#j75iJMu`;(7etx?53YcsTG6KyE?Jc| z&GxkytQsqVwVq-$HBqj6>&??`=6?3 z?8Sa5;+2zCLX+pwdAY$CcU3Mi*3Y}I5Awj@2#mhyHLg{uemgvc|Gv33II(aYe?1Pf zJ3ot>wl0qu-ExbB@0^sTieC1)ZxNg>U!E}c?q#cR%Sw*f%MvHd*7>%Ec`ifOnm}L( zjY!r6&JpgXlT(fBon>y>)(aeZ5)Bvx+k}5PSUVojN~J1$5SRbe4Zo)2_q*|~{rIlzrJLWuv_S0*dN^%h zFq|2GhqOZ3;x#X&$G)X|lcOH)N6!_|$~0Ee60>&1N#r@?xpZ-kK!X}zt|y6V6DPRG zVT<%|;T^CNUdrcXkT+*KQMbC1$)WR8N8R{I#|#pB4zbYId(9p>V&{a0V#OK<+wn)` ztWe3Jw|M_GG!-iN#lz(5;I30^vciMY4N;bIHF~-yA1R>bRc_&h%J$i$a1U1!TIm-8 zH*=&F`e0zq2oJ~h+?E#Q5g^az)bYzt)Hsayw?$NpH_#P2kWNE4k1OsuptpVW$Qn#W z_2JLb02Oq;$TT|^CWhR?IaP_`>Vbpyl9!ekf6(Le<`)+$sH^bCf^h*n;rxCl*XG|J zSO-nz{G8vdwGq5x*T{mrVclp^PK5;8%mAL`Ie^C;Ad8qa?#uM)(v0sgfCy< zT#60e8%){0l@DDPVtGla{$^b$#lve2luat@5xyHT^pX?eOx!l@wNB6m&&cSrv-_V7 zClAph*UkSa|AfdEOhs-C%7PP#H}LbkvjXNEmNrF^g7;M&t^*Hv6+o&z|Kxr`@Xsd? zkH{&A7eT&eVD%}kwRs&ysMhXw9T4||2+xB4ZW2KMg)4l0;gIL+3rc6WPOh7J3yln* z=H2dGb`VYwOxTdAhciC?`xp@oq^_#ZQI-NIevwB#1j2TJzwUKws((SfMZ>rb z{;xf*o{qL@#Na$@LtnyBPd6y= zg~WaRh^)(zU9O4M_&4~$(q<2>GwG6}X|v#0M8%O3p#Z^x%Ou%2KI<=#7rakma`Bx? zEKCaZ@~1mgbpUe}=@G>W1w$^dg_u4Ovr#QtU0l4$xm^i5%GN)`poO=67OhaRd?r3t{f6&X*1EQ2|eA7Lfd6Qf> z6#YIBkC|$q)K^@Z--`LQjv=dsVR1${1FR5^Nlu;N7dbBzzQmuq>ksbv1f+*c^!X#} zL673XRm4!1(n;>!Ke|nz{r$c3#n#!2xdQ>+Ueap{hXYCC=`kmmg2L_DY*7(rvSN60njkjr0Ax@D*034^0b%kJ+{bSOPI?+qwHs~6o7 zgx1aD<-z7Lv7vr(H|Kq@QS_pl2m)?A!bs)k6-)`}I)(Zl4A4Li*9Hil1^LEzVj@%@ zZkm4PV$kN$=s zjMDFDP}f?(*~NkwtADmAknlY4tCdR(bE5`B)+vGi8@}zA&jEH7=zPkQd$k!rn>4WD{MW){O$HH0 zU{@*NDS6Wr@QNgMxT2h&zW8jrN<>u84w#%M{%U3A(sLsReo)jIi6EFKt_2@BKvCt3 z6#RkBc^g!tu}H`!&2bKE^CrOvVZ>n=u$P~WKr+_M*SWFzxaLlo-r8v2&rs? zlBMih*@lFuWRL7bO4-ViWv1-PUPOz?lAXxTWC@WqBKsP$@7tJp&eZ4oeSXjHdHJKv zoVoAg%ze&zU+?R>-sc9QDd3Xqm*$O51*I2TqBqPWbg#g?&#)sg($2UoVQk4}bc=Fs zIm+|C9?>`M%V4>)9O>^&T#~r?#wrko)ILQS`;?}0Aa&cW;xW8+L7XM$z1jL|cnl;b zL+CjcJy}M#%-D7dar)++P+8g{HD(kDPkSLrB@YLyugb2Up(#3sn3oV(uH_U+bx5=! zv00lDeU&7?5b#w3jX)29-^TdRcVYG`6ZNj<6{*G%xGk0kc|1d<;ZP7CI*Rs{Cintj zVLxYGJc<6ZyZF^9=~k`jcC3vPC1JBfKjl1WQS{{RxI`L~$Y*-oTI&GJegZ%CFd!=W zerQSI#iape6ct*V83jkVLKsz>)Eu$Vv;3C~pkF?u>yHio8)?Cdrf7xSQRM?F{1-#b%6?h$0zhaWRRv&Y@t;f0`m? zJ2zDf$6*7pO6d`is%L&`(w zivmG|%S?hulpieXP$C0^h>#quAdL&GHYDw1y`glYzK@mB|T??m% zE~?D+v*7N~qUnM{yrUBz_P)Q#y@$Ys`6%ezG_KmOz6{w%tR3alu;J~sGivOYVd~MF zE&)LRjC?V4@-iSChs6kGNniT>T4TtR2*=HE(gyyDe{DTo2E<{JK@4j%`*GbrPQf{h=HfxTS!ChI<4Fj$D;lOg{|NCu~NxY(KCh& zHS@5!J9Bz)sK#Pb0)4kF#fu&Z*RnB1yipiEs;&$0*i^++#XKo4p28V;J-$D89gezy zYrQRvYt4|ufduhf-6vRGrA8Pna7{&wAi^pQ4 zaCdx&z_7htag z4l8oLG%||uoe9f?Y%}qt@aDF}E5O_RfFJ5%!l1w)Scv!DucJbvIb{Vc_PdNJQ2AYC z0}LXjuD)S=P9UQnLQDo;8KUGL{e2ILqgm+Ycp(Ofz{ARYFoqP!sQj2MQ7tPCO$crQ z`!akr{V_#Y4>1q^ZaO5PWPtpz6KW8?^}_Ep9v=29@J0sIU`=smJd+(aFN5r7hpFfOy(Tay z*HdZNT@!

`=m&F&AO#PQsodu&``9j39jK;6$4A((^dRw#@<2SCftVD{3C@?({yi z8o~?j4Qs2c`)00;_!hHUigu0@Yzp zj?(FoAUL$c0HrJWF*!EKi~`%f+yVn&E;g?>HK{{sSVYtGm1|Ji{%YaCzRS-3TrM+8 zmk;VOu8E$M)I+GBB|`$J=^U_^lvNd-#{BOUo^iC-Gjoofm(Vl zI!vd#vEEupfcW}pk`f&lDk(R+GVrvK58t)e7!*+(~27-DvTN@zJXhHOFe+quF5AH~o$-Ugcm}^p) zNr=a1KEBh#S8#7__1WDduxZec)`n&Ut_rY zZ<)7cumj1SOBoV#RTLmM12WFA%~X*k&b{$1kRM>Zj$61Q&nwWW_j&5I%U>X~{o*d9 zcXw^Jmj&~EP3{%~Es&@Jo_I25DTd>krkkuebF#C0C^6qR1`PTrrzwD3xDupEud>0w z%+Y>}lNTyC?s<@s*qlx8M5yTrwPafCae;^99qPcYFNa6Q4{9 zEydkuv^-$;^TC&vWxn?3FmjG7z!?49F!5p!O0jLNtcg9%v%YQD@>@0D`sCMsE;jC0 zw$XDdIy@|Y>epjMY>NDamb%@>>g#XuHpk!A*3M?SIa0N5UJN_c>>N`$6(O>;7jjLe zLC&j=L_7rWCebROQirIrHxYkTH1`)zjQ9A!*A`6JZo%`))hhwk$Il-+^- zn7+_Wi*uAlYYQdq@8{=iuhq#P$o0$Q4xN>hecEot$njC>D2*ws*Nj)?;r&Tpe_y|>__)-6FkzN1|M-}enXjR-lJJsywRUQw-Qs7*icYhFbxp3}2VIq;7mJKH894+~r#wwl zlzht;_6zeq-uSGm@BS&18Clyl{)ecx#e43eKqlqnrEBc1zN@v=Oe%yT2WC`IbU4dd z_l)sRx1S+-?-txTvxXY*-Tg_Q{sKHbc;5pr*CqD4#Puzn0UpchX_*dK`oMcj^93Eo z#E&3aa9tW)f3~?fSUi1>0v*0kTiI*E#JikGK%DUS1zv1VWxLN{Czy`i{Sp3sQSSV=vng9Aq1Xm$ zis;x68mjm2pO==EHKV|Y!}V`1?ZKuVw_Lj8Ef}O3{A}@jGWR}aQ;<>iU>%TiMB)64oRSDt|;jM;f`^a+^L-MdrTJSR_P>mby1 zp;)z0!zXaG{(MXX6a=Z$qQ}sPNiq#PIsMBqC3v$-WxR6q6ZC0vIkNla^101XI;_ zH<=a$a^vjeQXQ8<8E3Vz6JKB?Dik&n$GJy*Uvb_EH|<1`tAUw;8k9dEF{Qxoun$Sj zeV4K^>CHA@&@>^^i{MG`AoWYomkpJB!xZKVc!gQ!l?{_=QaihEMQ?PqYkDTp7#1U8 z*X)`xUg>f6GT3#~-VQ2qn%cE^KgWsBE)Qn!D*_Eb>wMB?>fRvlS3C&_ zGTtyi$^Z%Xi3H;2DL9G?hL}4c)YfHEw<9TKvp)4T0g5?U;^>iKRekrRFjRk~peW5q z-_Vftdy2~VG04578@Vz6^^DF#puPBSbQ0UCo>l*#=JCTYqpT1h+lSz_zkydxpg?gi zP@+?N{Gx4!Pvum=W}Z`)4;oPE@Afbf7JYAA4qW1COjiZGw`0N<%#Gg%>{sBFW9&MY|iJm;Th@0pe z*5~SK=Z7Rvn8*6Wx`|Z=%nOG*7JTZdNKDN$4oqkDg5RC&UB#0(jbiOG%kJ9vxURxd zfQD;dA7MYeal5mt|E%Y}I-<$3%DOo^RDkV}@X5a#%$wxowwHBzdEX0RGy7cIQyV{v zqr5In+J(BGx2hXig_@RBKjsnm-@OwSeZ4x^J-x9SMVi7BHOz+}(_#Q-ZWkEg5s21(WeE3DNbC!QRcJh@JiY#&LfN=cFvQnhHkyD|#c9|#I$5(tWU_X2N*rQ*4YQK04q0*JY)m5~AWO-vB$fBo4`Dk$9hGeI0>5^=%m4bhuJo*k1PjJsSTEH}S0A z+fd)!c^=&d#z|}s43HR}pub*|nmt$xl5EI7uX*a26KyWrC{v&V9jaVz-ami8=xBC1 z0UqPw_}ozR@N-o7<1*}L`UsED)G;$KKmTqv&D|V0>icVj%S{3ezaN8xxV(oFUbpQ-u08E=MO8gNbY!H6IGv>kdL^pQe<3D>=b znv-2Cixqz}>Pf12Gd- z)$h!G=x?Jf~z3ODX5XxF;LW$msV)p7e1CQz4z~9+bsp!Qj|8W5_`_4A7 z$c1*D)P|M5_SuiMJ@21`yN)#3MY$#`Rf8>Q-hX@?zEbgP8 z7ZmhF^U9U*3dP$?H{mEc5cCAzpuyY`FjVTBMk3>xnNhV=sgjW1_{aSiC?L1ZyqhQfRt=^JHq?aad0-U9$}2R1_*U(=n9u~l!*VYNh`4KQsB^nYe;IN13Sd&ZrIGoX6Ljvsbj#31-HkG zyZXAB9cGRXP`ZrqVE-@hX=w ze?&N}SABi`LG2+&q7XbSyGAKwc$TpH0jc%Kf-CQ4@l&X224v7*f%JnorlPW9CQb*8 z=f=0QG1w`@2eNrj)-NZciWw_9K*md^7raWQ zAq>Q7htEVBfnoP^LkT~_Jzw%Z$6js>nRE09xmUXAcm&Tts%sdTzJc6}31)6w-rrx^Eqx7*FyyM(op?C7KX(1Tur(K1 z2l(jW552_g4W-#kV@#ICj+esqbD0`6{+f-tJa?s@B)%ikW702{`R2D*8Ke6xI^HP_ zTk2T?7I@|bs~@jXOg|YQy(mYi#^%2sgS;G7Kw#4UGyj&wPY_8`;5z`Da|0>gBk^|A z4+t^0f|v}ykTCy9k|+%GKbXUOV^$2HUeA)$MnPU&Yk3j_=jphUaT=yuR7?U@-G8ft z@|_fY098sWSs0yI`jEzVZL%4l4jISCZ*mBQ<|Z6~H8BKbKU;|oi@S5TbK6L{R&!K< zNcz>*dfnh9sbQoSZM8P19TZ7gm6AmFI7~}1(FN|((*8$^7zZT2e<}S% zbG+}aF-`Ka?yN3RpLD)U{vhYOlR^)pw;;-W&@94nUj$~kyE@ddlA$pOLMk0#p&f%#Rd!uQ`fQ(mlRdsB} zNBU`GT7cZ-dU6cIxA5AEUK7KYUkYz|$WWqc36*sd+x~|`i}D|st`?`Jt{sH4B(vgr zh#phsnl*)aGUa@gO9XjeqsS`%W5E|U8VgJJ$21PxQ{=^~`It&K%Bx6U2+C6%S`JUF z4#ecUwh2}TpDX9^1ezE8mA|6gTRXQaQW7BBbo@w{bBx|0f;K(@N=sDnLd;YR-Zc8{ z^0VLR6f8Tt(B!kO-&OiVJg4jp{1tcqxt7S5C{Xp%HjvP=_&9fHPQ~T;y~ospBWWv~ z&yh@18zzry*5&5DwUI1^u_6c5zXIQPID}4!+Yxl%&Udk~%^ z(si~Id%^krJM7ZA#BEEvgd|3^9aTBTv+Bd7)$Zt3w+lykG7$^WbQU*;84UrtW9YaK z)G|@XN%Ea`LpCj}s>Sz70peVk%y&M?IsUSKr1(rI4i%erH|5W7_hr~=8R53uz67OR zOviMz*A=UugCFT|>TQJ4>?>;~6lnJe`H{gHf})@>2;}3Emy$`JA~d}3nMx40L-It2 zx1pHs7|(*OvNCHUa@61G6SvV7QA&?%Z6ANTC5ZJRcGbl>wyqY=V5cy2O<6%(#S8pb$o}9==tQt)y!DK03m2?Fs(4ug z1`&zV8cko8gq*5KM0Zl4Z}P;-SIx;)xvjvS=?}bu-{rAFIBSaYY_el@4~bIX$}KsO z8J**O!q8LZm~Ly$rYp4QBYTQ?W_{=7uSJ_TDs*9h2ij=gT`29=KG6Do zKAXk)pc3DE15)jB85p>T#U?K5I+A23%`0|`?TS3J?5vy4vu8ERm}IHChDi|hp$o1R zZD*FdRl}9(&`9o&Ry+L)F6Z(X(StX2f*HyIcxl(s^O1fd*(Wja3TjGYMzO-eB=qm% zQ1VfnUVd{=j`(bbnhdHxt$;lBO=AEtmPkuZB|`3pnmnraEV&2Rk?n0y z9Yt#mJ)kQSeykN{^Tc&I$Y=grVd`gz=t9DWPZO(NZ?k+TIXOB^U;{F1CSMY*q`w3- z&v>>|g#DW3nI{^D;pW|lIxux`t51@+y-SE7SeQNnaa$Hg&!NyTmWxeCq7~I3p$k6| zhh9r`y=^KVvn|+ggZzP&1P}oB1+%NE-##d z94f@V*TghOx{l9Iog=Moyh$lv0@MRn8~%MdTL5;Kxx&Fx*xW~tw&pOYdvwj{Ld^kq zmP)sS9?Y(;>{``ke=HeUOeO&DHKOV5)~m3qE|A+<5lzgAtl#tz&##i2WaEpfIsx3t0lWMk&(dRbSL zDPRqo2|pw2y%%-!=I6>Qo3!$g9+EY^?rXOopP7BXy^R*y6H1Cy+_fKgM)n8wS}%+s z={j|TQ;%Lh62a<1u3ZKhYkO~0k|qv?X`|Ia-`m3o%DaPr&;&vxPV@1PX8P2Wz96G2=5}mQ=mxgu z;w=8I2Lo$jnHnfvG`OX6{_07dv(hykF-hEv{r$5DG!+aPp&C|5(MnmOu$g%}7lzcp zpcDst2Y@2L#GM(W4#FVGpc1A(@4KllLupDl`d0c$ZLBoD!v%&gGPMgl3Vl7X9j!f) zko&_1Gw!Mt!PNhm;8TV94oC45YA<76Z6N>|hTRc8p{s`yfguAKv(qW`{FyPX3qrJj z`hjAeKc_F)3Jwnb9R(|BI7sjs^VE1O-3$=ic54;aE|kf3$r+<^&H_ zp`tSKATxBqjJOg&8cR`rt z86$lRj#(w1w7$3f4lB#39xZ_eQqMXQi;Pz*P1UOr?X#CJS3#}wrP2jk)!I5nu&}dx zT5yFC3p0mos-jhKxmi5^1Ht4tNN({{g@Px|t2L7rqgb!0|MUh?SAUCo}J%O;=zev>#Ebh$saM;K~H*yc_IC!;wVBOuA`W3wCMYgaV) z4^QCUD4PnB?q1nnT@fVdNhBapQf(^TN28Z9FMh+;A3?Eo&pZD>Y0^yKD-PSb{SbjZ zjzE?0p^WF`y>W*8U5#o^voa zza%F5=d;29f*J>KPM#zLZzN%Ng|2J$((K zcw__UWRS)Oq#H`+&lSYXy8XaO6OiR2cn&9 z2dRe_RhgikX@W@vZsKCZWskgLFq@%@ZF{#1w;L?W59eX%yJYe{LN(k7Fke9|am&M> zhD%jH*1Or56V0vGRs*Srcl-OZ58(W^c9TGlBrODyX(Fv{JA;z;gSH_v1Kls}ozW#G z{U3+V>fLEnA!xr|&CdcvQR2qJ%viZ|)R4}TogO}YU zklI~(mt+{;iouoQUY{4Gc9^RgJ*!;BNZc-#WkI$b`7|wxg^I8?#2cDDG4zsIe=fB1 zyIBKhtko~qC-BHpnU0S4J^lQ2@aji>0Hk0>#2;*JSgw~ULgG!Cwux=d6UfuW*@GF9 z9P;ohhTZ?2xRBTd*5=7Zqel(DXJ+=;%qbre=Q`i!3X|Fs#lU$Br1cbK{}5r)qs5;G zFR`AUWx}Kpb5hkapb^oIJ*L}xF=DEasO%PJJMF95{Zg*RXv;P1O$mQcK#Z`8CH=@_E=?wts3=giA8q%g(I_F%x7D;Q3(f?#`(;Qq}3>_U&#d>m$yl(q^^u||tfUcQ=fgyl`*I|x_ zW1Lv~f%km9gz_1f- zS=k2CnGs}M_CG)0TY<##v*MlRMss)E@u%@e6XWY8cd_I?yO`WqCd!igwhF~TW9UY5R_=+xM>p(1q zy^|GY(^oh(5&8MY*Vz{pkJ|9~Zm4kFB2x&u`3>91r0{jNPpWxq&`Ls8!!x-(Y@lI8 z-#~Z9;QEEHmWA#DeXm}f7%aPgtGuq95YAG<;r?M0a6_t#XHWJ0sXJULSsgC#s2hJ?rInILtD~3u(Vff6mEIXwu|AH zKD|pwaJWlcSLg)HUBKq+@vy})K9rA-&)WQlXdvF5zrKHO0o!jhKpR$1vg+k>2;Q{I2vNZ(X6(8R4Q6@^XG?|hf=_QiMjpZAHYm7AW|_|ZK*dO15zckcAn z&{3@}>A7giKhP*}GL8!S+25~v>lTLz0t48t`ap|nSy`7c=RezBV3|pOgs}fUalG}q z7ZhENMAR{#$a=IJoIPJ1k97fwp?!9;7Vz`Sw+26&&s@F*$DnA9%dm|v1Fo-Cu0?0! zfxeVeJ|JgkiQs28b-EqWa&QnZIUo@H$bga2`AgELPoK`gz*zm--H@fCz;8y%jeYc? zIH#Ug(MuP5wgWcPqnU!@Fz(wN=Cl)kpmf=XUc=U0aRf^m4TuM%O zZx2{i_NF}Sy^>5pMx3^d5uh6%{{K+(0#0jl^*()AGC_fC*3dVl1Vq#)IluCX0QYu5 zBqMFe#asE)Pw659J$=R4$9D4q#W`$Coh0uGFpMc^t*GPS}R*L+EDpnGWcoqpZJ3kFi7dhSmu6vsXFFtFCFlz=}Y$}VGyZcZQ| z2yon~rJ%vc=2Z14y|4P_F%@(_K0w2? zbT@UGQ8YL|wu8!w^R;Qw74)S@WYlZS6%G({-9UhR<`ZUEc8+^ZFgsQOfW!zs^hHgK zEmBp7ORMidTovl7c^PvUifV+gei6a4wVuh`r1AFgHMAHDIzKBF}E8rJ`Y!RoW zK8cOI+%&;c#T>5Utq6InFx6{svk3jrpk5kVHi1?$_ncdfj2+^ zA|2C$(m;FDljOah8I?f*Nn7B~2X{k&RuTXZ_TIy7dKfyh=J~DakmG=DY53EL$#dP% zb6n9Qfm~Rad9PrrLB4MNTN|&4SX6$Um)EHYO>Q4`1CStSJrfOof9lj-f&j@K0;Z)= z80!3{7&S0|>7iIP)V#l_g0SRg5=i*c($UErj%`rg6!l?+f@5(iishiLagwsIkpVV? zFr6nYFSqP8P&0BnC1tEGwq51U;2`r(9y3L1@pYdx-dqS-N0%X8*5uI;6+UUUoL{6A zkPAczKscA4@|w1y{hQbb%##{3@~w?IMs)nqq57a?z%x;nSQ?#zt*3=H%qXv3J3h&h z4KYfTiwAB#7E6VW7to#5#{2xxxVHK4Rq;s93vulrq+78E;Nv>m#1-#LadB~Jru#Y^ z*2j-r-*G(n4XNkeKC;rJY+m8E=Jxl`6pQc}}t8Q1Wt|PD{ z;=#85CUf(>a9yv58VvJOvmlsmNHpYSEIA*}4CuD8yjw^x(|}?eNd3yc(23PR<$iqU z#C%joM4hGbVa=sx2f9hJ7E6}aYxPZ4HY-)rp57Y^juU~qW5Ml(HMCQ_44k0|uXs6*vOUk&tL-xa7{hcOT~$ugjB% zDGBFH;dJbxK@%*6>l9i>KqSr~*Kj}Wa|&rf3fj2T?d5u99&QB1nf2;$y8gNTZ1dgr zJ!rkJ_Q@wc+lF-^g&@i?J()k z(>M*x3+S}8^b245FtW`SNMp@_6b~NOUO7pHiD>&E19%)NOer@7A0;Y#1g7<^lWDIR zAhkV496hIejL13YYxOkKq&KG3USR)@m_oH z0QL6N+6Y0h+D_akKWTO=p29~IevA14>SKxfa}3XLf*pZi@loPKJIq=Ey)Zypghggp zl7g4A$-!)U;sW6O|DrEr3vsSd1#s<%2-<=zPzR#wuK-V+FHIAHNO7L*sT#fg@1?#O zD@4p-x_4N(LBQt{HdxcJA`l@XqTinQxv%~NfT$-(G;pMtGJ~S`6yz00nn?o7S)dv%sPwU%^>n;z)Gj30kB=BZTT_Wyb={zeHVed z>5Iw%7s-7NlMsV9q+qRpd-~ef>&&P{bxa+7mLTG9Zq6A=23Vdz4JZMD<#U(#x8Y4@3>@V9E|Z}d>;!CGn1LVN zaw@tZ>uU&=V11DugK(e60IjVZ>XZOhmyFGxQO2Gew8cOq8nLSfd zEayCVfRHZ_Kp2~Y-~EM6vz2(2@nvP;P(HN)LtkY%75%I|UvI@xV+9BbzNQHohXWlS zH#AjKc3u8Ynvnl)<)|jpUo~Km(_+Hi79V+u)RuiOc$nd%molP@AbBRWjZmC@0W7N9 z+hmJsczwCMJ4KiwQcQncdZsQJETa08=hF0(xL}ol{9Zz`UVWJ{{Pni}kazhZx`?ou zLZa_&OwoLNfc4}vG`AcXIF8!KPlj+TAMSdM-RB-#4uj}V%@Tv18$%cZO)Py(*|FSC z3o8Bx539FmVxDi9yP3XwyGU`a4BVWx+W>4*2l$Pri zW%PHr=2fUlA?u%!c2Ay+8I(XR?zOUXyF?!nvl@!Ty$j!CO0>z6zONfr3W~bl%S~rp z5>$-q%CEhptrepQdE@oRX0Kmjs`qVNkn;9d4%s`#G_RLkUT%s_{c_~}qlukZpW#)3&KlO8uXWXQP>gx#xoKkBiPe1(pDwzgj;8+E||S52HP2C+qqC z>HZq_HUD8a;FO#>zUMNE+W|6n7*OfeS7{%A$=8f@l!pP{@$ zzXXf<-gmV-rty=qN9DI~uhp*Uw$rv=C65NS{!G4YT?g=B5Q^aeGda1|gKWh`q@#;- zz46@MyB60tAgQB#cVY)&&o1m{1u8l59CM-uIIC{IWE`75QK`A+pz{G7gFs-0uGh{m zu5Z?sCMa{pdR#y16um~%uP)f1h^H-$E(+FkFh=YAt%$QV0?^&0&u&{}Z#73$=8FXR~O?lRT-pYK3%OiBv zROp@a0)`vzNv?^fJs&2Y9v;+plKLB7sWgSR$GGB(Dy)&=$fsov3Z*~G==RyG=5una z7YZzr$DRxg4I3@9oZ|dGD;CPo7mq*6Z$BV7zAJ9pmvdP*yD8->``!Grw)xZUR#+WF zSvJi*KR>p-Zqltk<#Xd)DFL)RmRKe8orA?G$*ZltMbJf?o}TWZZfF^P`ZMkA37t8f z=$q_XcWmhu-S!_;90uxjX2j(@+kC&*O-6@h2?CGy*-u$>V>4QOO-qBFel>1httE=X zB|YkS(7ct26~t;ctA=}cb7n~EF&sPX$rEe>G))1djdtMqlIJNftr<*OSss26czm*aH)Ate zb5M)v?L{lZv)7JXLF^_>ZlW(=bSuy?I^WE^fNRRyp4PT9cx+BKolSS^T0OK($+EaZ z16AHh?apu?T)!AX7vdZw##F^a>UHc!?%96hBf(KM6n9!;mZpJqu!rl-Moa9sRQ zDAVEczSk_4vb-OY9;lbwss*n9K>Pzz?!Ci8)1exEnQ<_ zJ~c>jOQ%RT3RdYmftiDDRk~tEgNMsZW#Lncvt9gN&@tBI2%8>N)VXuRx0btytf{Mu zny4l={SU1*ZBm^WFnMcS-XM@J;8Nj^dXXSZ^tU!UMOdz0J;wv1>61X8gY)rFOo@OA zPf&tC^~ufYG-}4-JG34Oo_-=XIUr?)6<@^Nl!Z(B8wwL9E0;r{)@&yyiyhO4Ywtzb zVn!c?zDIY3GDt(~vm0}_w2Q3q8yAe(S1{H2P>-!(X#;mg`&cNT?W4FL7yTo=`u zQITCLRNUa(AU-Bq{DP7H2Pph?B*(&7V2i?l#K9AHIVPkwP!f+pX{U3c))~6Oz=TW< z@W#PLH>;}xOVWFb#k!yxC6z-a+?#V-9*n31U%d?~*AmwTyf;C9WTcSC&m)bqbNMx# zO%40;CtJ65r*iitHJ*=n7?{SCjwWFI#S+P@+q)6G${SCkWIo)Im`Gq3_J~dN;=<|T zDV2LgADB!AGo2`6P6Dn`8J|g|f%N*SNCfUIZ=wZpHZcM^CO9`fx>}cuMA!NK?f*<& zBl?`Ah8tXR>G6dkrwjCN71=ie_K$yRe#^knp8=)>4QyuSileH%dEAG?%eZJdDlgAQ zR?absTX+jvmQG8k`ey*m2S;-#SaZi|obtn8&BsLKDWwxO;Um1}xVuogX+;GoW|FvEPzRyw%!rCpFqD822aXu`KucH6MF!05WALo) zg=yJHF-Qyj2Kx?Ny-S7r3aE^=`cxIN*|-cj6%=}&+~rN|htz|ZULY`U#$`~j8KvMg zH`|-9x*#$r^{XWK%rIcqR!Z7~*;v!}73uGuf@C&vdyf&PZ*;17K~wEus?0#WUtQ*M zM2Gooj{zbn7KI6UCrLMT(Ng0qPf*pP*-(ov`~-R#_P_9tLaU=N$+fhIhRR;O>YSeD zec8cVCV-xoz91AXa+KMoZ3Jx`j@6D5xi&w|ck{Nx!th`T1Yq6%((}D^nDP^}MOs@B zijZm7BJBc&2q`Y7rXQ&V=22lXw>?PSHvYFb{7QYxXQA|ogm#J*LOi^+>Tq@U8JLaQ z7UJ)I1NT8rXavil40Vhp1vr^d?7}AlHk|dC;YeI$FW_Fwl zvYB|IYcE4LA)z4hj1PVMBI$b+S-QgZ1&)@Pkil4L*_A#Mur}ViBKF%M!6fgGUcAeg8;D4PyjK*Wk&a4#NJfe%xRRVQPIkA%K1$5e(B9cjL=; z;7r8dcu)~24c8y)Ls*&4NVs}MPg1q*&#g$9TPc&gXBaUff6@GX;2nRF&hZ!3Hay&D zav!Yzx>>EY^%3`1$+>y^Lq|R!7-v^>!H)A2+EU@CjXLU{H-8+*&44?#eHz|SW%&wp zEJ;YZ=3Y=p;(3Z?LiNr<)?~iIimT|+Bw;$XH1?g`4&+y5_YpuPfUI)}yJ$FH%8T#9 zP=mDH7si{u5A$05r72_nkth=!u95zihKLPIfpElL3eLBHE#GH zN^hI+TLR227=%JZThY>*_i_r0m4nE6H_6d@f4N*C@rfr<>3@O4LF0bQhx%!;QaPCm zX%vBRQH_&r0i78Nmo)_F2Ikq54>uzQtQI89gU)7`!n0TI&hMSvIY{m#=$^C*j676R zT47;Hp{Fh@?5DzL9niqk>pGk#(3DXq%*^n2D#l|%H-aF(aR*t~6GAz6{>nr@z3)8v z?g5a;7|%S!i`;O*u84&kVeVe_Il%f|0VaKC5_8s7lUcmW@I^9|c6_dM%ZP{_T)z*h zFul%aj{ns67W;aWY@u^LFE4i8h?p2)!7;N)9Nde(7QM7!W38!YP>yawVhhBABgcgt z#c+eCTP9lnZ>+k_fs{}nff60l*l%22m&SQNeBIunNQ`JtOXU&DRB>}<_uJUYPgcc& z(<6bTbn+-f^5Jw>Q?fcKr0-~zsD*rc71=Pu_By7nMGh}IcAfv9X5x$tJxyqba28$NSba`+$ zh~xO1tpAaoX1GtxOAF-K7 zuPSPkD)6=k8x5y!?sw`Y!$H+G2Rhiqq_2aTzFI}a*uAc^Q=jZ-&O|JT=8R=YiI62ABZWOFHG%s z#7s`cnzO_T3Mt*IXb+oCtKn?F)|BQ*%>S+8)0wgJ=M&%De=N4s_*zd?t<_)K+egjp0(%X4Y2)~qurjGdhJMd=#_lVQ6x1~ko|TR>qpU| zi%0PdSCvRbs-0ICDdMkts-p$WD@@HF9NEUX@6XNE?*tCZMB+*Z%?y`WxKDM?0&aHI zs_-zk9aNvX(9*Zjf^6FR5vuC$LcN6_&C)Qp)MKS9Lo1Zhk{Xs&Q4yq}z|^z~sxnfA z6{wkF5LmSl{hV=*oG7@va{hDr)e3%Eg`@%Ej|=x0y9n@12*50E9|{|L7m!T_IIXGKii+)VNiD?#AQOK;5g z%Gc)96H$R;WBqN7~Ool<2MdZe3B}ei0^NgrjC*BT*Mnz z5c?tU5n~tgWrE_pwsSgAYm&*;pk}j{L+gZ;#fn@7(z8=vx7M$?tsNcS0-t*R#80eI zL{UGLEY@|qv+D+i_``uI977g0GoQN=zoU3sR4$rOZF}$}Fyu@AZa@}DBRqa^%;X@t zF1rux0(Rnj79n;O9GpY@oyk#S%pJ|R`AHXG4OG+gxuTrD)yDddP<^tmb_Is^SVJb3 z?uYKEdK;FCk_)<+B2E_<^27NkW1N4GS9`8 zr4}7`KJRJqA1ZeDV!yN_*aDgSZKxm5W%mV;G-R$;+w?NObz(Rk(o(I>A8wgvVHvU` zA6cXiJ)L+W+&0W~Hsx{E-mgD@p)EMM)G@_g5O-p7l?JmzTr1ESitnmubA%!4DL#`D z8C+MZ6~1;EQ^(k4Xj=5{=yFVykS~*yQy8?VTYZDz{0ORVHWPNP@Mpu^wA9`dne6l6 z9H{CC)~`w7#L`RDXAanK6PQl^*+=5y!LYzsL#!N1|?4?JTLQ@^U zHYmB-8+^mhyU-SqzWY9YvN4Nz^>6tYDzq~$AIM)fy>{M%f`;>erTh2$Zs^=`z-?(l zN$!(^AG7m}p5rEPL)h^hW?;ZUVajI98-$W=uwS=)0QMN=Bh7gsgkV>eORI(*Yn6VT^wiZQE*%G0ZY=bBz35kmA ziOL>^neje%X7ua-zW=x6lX34o_ug~PbI$WT-{<>9p8z9**~LM~PCd6Oh*8~DB8oXQ z77A&Xtwim`M3)rl`)@Y`{5rZmpzDS%&x;?|7CzyJDCm~UBvFE5g*-9BgwY;5l73eDRp^ypDhH-=K&0DjI4&`Sr=0#M!N8}g;qVM!xZoh~$0mWv(b9qo zhWg`6%jh4aJR5FXMU#Y|yYUeQ7p9@O!Kr+F$-5U5cB&*`%llX(^5`5F6a;m_z!_5H`|a&=_F z-VMFH^We@lI83KzUclKpN-B2X>Z}ymL4DJ%Uyeqz#4+dXB4=MZoE!A=|CtjqR?xP+ zTdi%=u^6%EH@OKC>xOa+t)K$7um7rgCsMQf2yqG<&w2N7{SU)-_vF@k$LAvCI~fT) z>yd~z50J+LuN#56<30xHcH={~nCbD{R<_8^&lmx&B*-S$v|$uvRi(KzODT-BxgTEJ zw-WO>3HSSWqR|z{TfqgO*Tof&j-Stjs|k~XUOafKCP&zYcrVQRg}eWJJyx?m^7cXX zf{=3*pOhy-5f@0i?K0dBs<(>{H8_cqGyV)noNi!^74nvrgsPyK3;+1D{jOf z`0sItk$c$y=(L7H%ORo-WKl1aoJjJL@!kiewUCI0MD}@6s%oD>|6@M#)NsmL1I+rF zl+}aFc+yAaR>?#-isJ;hmAZbMLv}mb3#?a@f+zt50RU6cABQ|%N3n}hQ11+$CwNgm zq(>g|cp?8*w)54i(Bq;QqlNuFwA|yTdcy>v)W-CL45o>n7$l3;oVvOXpVYBk1N#_t z_xZIqnnQMWuKqRo$8Qw3(cW#DbMJ_-7KzVHfP6oI?^P1Kjl))P=AxoPmJnG|fCPK{ z74_VT;h<&f9LVv7u`Q53{Zc2%MjB@*oS$`vY~!~l06!_QJc%T{kGO;n^XzfI2x#-U zC3-i1MvJffmdi)H5SKPGJ=*ZFp>Qa=Xe|ff;KHXr2iLM4dWZrqA%X9l33Zrq6ZB?r z2mk~W835?DWpLD%i;$W+R<-rgXzIDdOa#qFO9(Z|V-s&D)Lt_vQnwN%$H-`Y``tC3 z&|6e-?&WSMq?C?-drxm;abHB^I}T0n{nx)zjyM_|c>GNhI47Ig=Z9H6AN$cX=;M2t zY+g&)VzJ-1st{-H;36?o@yzn!7r&~h0nT_~WsJhPk2!cDv7Qb)|6lRzjUJ&j%YTYN_)Uj%KcKuC^c!V?NmB zNj_nfeRx!r?95q{LQzKCPWGKsaWpr-f8+VotgI~(CY;cdo+WDf`j$_qy%bbt%b6nW z5F6Ob2(Ic<{vWXe032aiS@UOTf_*tkOT&3LZ0p*Gz%`W|^==qNFS9QD) zdJ~1i&FMUQep3chReDldl-F;d^CH=~)UUM ziP{u=09G6ZfRXr!F=Iur-d-wYyu8MsD=t9%LgrT(vqqFNe);59w50x&xGC`r690N+ z#k*^aZ;FD;KXD!5Bu}|4iL$~#F^0mQ5&mHAC87(E?7u{o-~y17*Qf_4V6tk;VeMw- z@Q-0|+TG2H2m2>JakcD04nYa^i2)yEx91eOFGJ0s2SWY0o{ry!L5KH2);<9_96x<^}hfo-S$>pb< z@u?58!Co1*C9Tj4xlmq_Wqi$TN08>q_KNG0MC)I>I&S?2eJ_!Lfg6FCx=F*M5dzvH z{H+QL72SWGvboBS#$Ev#@8~r);FKjdL@3V;3KgI*str}xFT^F{2H#e--L0#7=lo4qd z=g+KxUAPM@KM%W74lIOF-#X79sMjkkxxTtnSykM|VDzj^P(UY_&hbf+I}mo+58h}- zt*$fZbUFTEGzXXR69VT`0uSG12R3$h11JlPb>I}(^{}A|oOr4>fCc*T*veT0i^B3d zkG~>^{?La^772oamJzdd+`QK=TjbUE>JD*CXA6k%JkT@p@$mtEptQG!g>=%UwcD;O zNX|>r-*%m{Of%SG%K%UVT0DE~gNz z!eW3tbeSCkMM-@5vfnGXE&rf;;L~{_s+X5nA!#9`VFhNY@$K8N>(|9p7skdsfy{eS z5|@y);G0xam6G-`*^cpz_DmIJFuc4FE_~Q|`^6)KDXxWBu_Px(j*$kv#_`bD*r&k7 zBHD#;K?B6XBKDEaLaP1&2Zmd#a_tm|v74RBzkiG|~@FD#_T8F*vKyZhpd5ofn&%wxs= zpJP`L&0<%&87|N!Ya54#h7P|3&YLr}PxHoIJ;z%2I#s3W>!{5qqer(6rAGf)!dSIPgCo+22IBP&<4_4dY`)gFT;6D zl?BSTt6Ys0SF;aL53E~=yDfII%c=FdgP`PKl*v;@FJr*r<+3f^-_nMInptc`J}(7y zzC2Prs@z#-;gDsS{A=h|C;)PF>%{2;RvkA4G&geIMX6p5G^#IeYQ%HaYhSwIR#s0R zdnt%X$DbgOH!viEi+???ui13$S)azc>7qn?+{*eYFCz)bP$J>DNOj-|kyR1=0VqOT z^X}J%qx8NwL+w9BSCS}ALWq8Sm-s|u3GqgmDWNderS_2+L<%}T$GvtMYL{?NP#(BD zYN@~Q$cWLB##kb6w(%Q{4lIu~1J@)&cJFYqJ-{*35m1^X6#wIglI^^fmKKw&XdZCY zC3)G|**Eqxj+n(gZ(LS#JMl_laq|&QmuDaJpZT<@LV|j=AAu}jctsi=K-X%FyK8G> zhoby`wPTLFE+L6qj(#imbwk##U;m#`Qy((%-4<)t*%|+m=!AGkeb=@LPJ+aVB)%0;5~%x6Nex&wQt?yuxZ9JZum{P=D%tNKqyK8W zdFLsfn#qjxb?whu#<|C5BO+3_5>;1TbF;d1hW6s|o25>_-tRq#^Izi7>-ABZ1B0kY z<(XSA!48*AnZmyMj3KQ<3Y{+K&1Gh0s=Bo_HwTHa+5ES^i)_Wzw4uEZK>+WQUmPeW zgQ6PIGAs_;*nzMrRDHmwQJ<%g!;Ah?(nBO^u$=bzaA1#Lq({ZR9v^00K~?#JYg+KD z$H;_USY*(OOH*fxE7C0?5kfnA>Rx$SgO^TduYfrx@J@Ycw19ohqq+WbLJ4R7kat-g>`^TSU@( zT1n+nRb-Kd#M-$^>AR*9KX!7c&ddPoO!HLdxND!4b!YI^y$qa})prFZe4L5zej=iD zP#uE;E1SQ3*HaR|dp8?pblq`CHVBa$ov!rtu)0TxFvmprMxH4GZxQlQyM8uyhgXSw zFH%HS>F@O8dAS>fuLBmn3s)DOjSEn5hseQ>9sJ=&qt}3Q97l*2Hx#^V%mDvom$AXC zI2rdf$oOhYM8SS`d+EVa9Bz{|AI7D#$IL!q572V0oeTZhe6cE{x->}JT117g4wGS( zW?*e?O_08F5VuXSVzWD-ZYA||0w?I1)n<15NCKp{=jzkYF##S)4o#LFgAhf=2UR7Q z^t6zk`>A3F;1|++UDcs;O9)j`2bPnM3t#C+hXyRMWsHclh!`Zb4UH$9EQC--&r*17Jl{{BO zj6W4P0sCv=hgI{$UC`BhXjfK$XfQ2W7<{t;Cv9~9Xuxf4z$-`Gmsp>(Q zwATJE(7U-!dNxVE!z%vWm8f>M>P~WU@`gC_j^xefRp{R>C2J>1)QJHgomS4p)VbWv zOG!y7t>(G%LACL=mIck;)|TsW3akUSt` z{?0Mq=65#cjF{ECrAU=3zxIs9NK;?D{++bhUO=?E*SsY$KHnaD^y>h=O$bd#xAs$V zax8?1Q|}G6n>Rkwg^J&PB&<_?hG7%ACyQg}%~-cx`yq{o^e!j9Pxe{b;rsgcSbs}n zCC_L%f09#xXwdj)*DNe9EBJU*7oD4UK~RdX$@tuN&Un-4l?!-1ZI83qx{=P(Lo9M! z1i%&?xRdyCAFB$=)W-cN3a9rcO0K;Y^bN8FB(?2WL2`0)5x%ZJPos&>J1>oY? zbyb+`kqq0tyZr_p@_+Xa2^|1_LWy{OwF-%>ohdz!Z)0#LhBGdH!p5)K9)Winl)zVx zB%SAn#B7Og?pUy*uMCkfHyAqh@kwN@dmvJGn5aJ*u~9d*8D4epHHKLUp|z^5_!Z1@4Bogl6>RCyq4dipHz3->n;jPg?l zhr$xJ3nGUOZu(a9?bc5#qyEMMzLU)!g$3~YreEt-VptKDaVa=K~rx#)ie4U=1 zxW;t9B`Rzf74ak}Aj;Gd#9=S0Vd`{^%SU%gb#8|`TZG^<_hpySa?d^rBNYx`R%`} z1n}^nwYw11&(Baxf5Jz$KO~J$M@;54^>UFYEo`s5@>w8*%Dq_Eu2Cw9N!V$e1^0Bx z(k#oDGov)zx>Oibm1+B$TqxWagTrZ`U{?2{tgnDzDxw9;0^M9q9WH8r4i}zX$@{P8 zdK8UKN#O$zWwy3kNm=lRn!$c+cbp!JNz_FOCI{4#(epU9m*uz}Ni$9;BDh1s( zgG;`KtmSL)yRA=yuw#iyNeh?HSNEbS*jegV#K&Hy!`}N>Sb}uR*FEa`<4GJijyoe2 z0!ihPJOK9^I0Ei_*~H9w8qZtce1e$S2d;D-big6;Ujli^A|JorftBAP!Kn8!*xTu? z8WIblUB}0Nhm*;riTcon#+#N%q= zuC@m~*XMn%EzhQ`%(wPdW4hWX)_$#Aj9%G%eDO-H6NTA6+>QYQ0|b4VZsR^xlCHyD zd}>BBUq(spzcL%uzJ1??(Xt!4%@((tDsqZ z_nAZ{ORkBgLkH43va{*-(~5AWW)@R)1j?5MdpD$Q@L6r*{XU}oV>>RlEw3pLU&j*T zg6~~GN<{qUM^6$K&pH+TuG0ZNBvUhld4j;qAUD&a^4`6yU3cm3UHf=d_U3>t7TG_X}UKgS+~O9E&qtJWWy zP?Fnxi{0M3Uo0_)*Pr!YynFKavGeE0N0Y@6D$jF6M?`mfl6R&|g>$H?xbyqIxJfF2 z>FcvPzKSg zgX{9oos;qiG7eMq>qd2|t`{S`ziw=4>6weY zaDzq{A>!D_-N&qkvi*1pWp)o25ixJk%<{u5|&^9|F8ro zc=7<19fgI;$!zW$%(jZ*J57e@==7+XN}cn0?`7d(!ePz`9k3E0P=yg8#0$Ptmmt0c z{M?cNyQ$9e>If>#u+ zE`0y~J^!-d0lv#0IxMc#v_5#Cd_V90ho?x%Y`S78|La#)WaK41^Qf~6RKWZ8-wcra z9XA$Q-;g2zcS(j`L89u@kUCc+N|Lo7c=X5-gK{&fAL`gxr|U^uF`-Q@Y03oF2o|RMB81ZjTaoDY*Q=>vmE5?@*AmEt;3?7r_Nb-TQw|8>J*qD# z0h3|pNaY*DF-y>4P5g4vTHg<>pws1J*YN1;;K?@x(H|=z zrl1=o6Fq?h1h?oduKR5zmjGq2Oc6H^H`20;{b{}bs|{g3I0$JfCYUqU<0u_v`?g~V zDg`heAPU(T5o&wN1BZ6AJ|j_&a48jxP5=JfN85b3-@H?WH85YZt)1nhtLUAl%?F-@ zlo#L9bx%Gds*XOVXb&XLwPEHkr)$3V0Q1EJek;6~Mk1A`~r18Zg zQSi13Kz!y-VoV+x9X?(5aKN&a?~-z+&ju?KQPXq+dDFEOV-g~M>4}-bX!)bJ9wiF zN$x~aZi7NnQT1q?CTJk5!Yw{Nv&Jb)Z0(0^tOC+IsffrSW46fMP0l{_ht`Z^SmYX| zPw;vSkV9dXA>&L-NyU?6mg_dZP#q0FEfz8fRhQ_E!PuebGGO<*;;$JNMdWDVxV!JJ zx|pz@_xmh_m^L)0vnJuf1l#P@q}y{{g&FMo0kqi;Dic|jft1N-J*Vfno^8}#K|-=y zd;pcZR25|k5zZ%pI)hCz-=chvxdi|9XP8=IS(beU-9j(P~yd z-NbCi>5u>v39g9PiuT91<~5z64GnL-S8i!P_KH2K`Wk(^7xxcR8+BK4**)B!`9>UO zgd%BS3I?)`1W;7|bY#7PaYl*M4Vd?3yfB)62igUqCc#4hR(+N^xDbs*pl0FvbMJ2@3U*4ZAjJ?mP-fv1f31q)x#T3YMqRD<7D{v08WIHz@%1Lu8Kw2 zS6w2GK`=O`xw*hES&7DEVF#h4zh2p+Mp;?q5CmnDwJZAz;z;q5Tf}A3Q+b*5X#x~8 zr;|>CCD3VYYt8whxLR9G`*g?bGU|b^hURW^iT_P@Jz+_vVFqKAY8dw_Mmo49@AH$| zO`cFCH9KsZ3u8ttf%1$FfPgg5`RQL?A<`P&86)B>bIv-e5Od3rWY9k_;FXDn^N-eF zhv4)TiUDIMl8}1l*F*nVJ;!ud$eC|;LU1if`q8GblQ4$WJo*W&;61EleZJ1y$Dez3=g9&ArASua;dva|i)qWKf>9QY7F(Kto zMF@sn8+ILA?T~g|OoFlEI)$HH*fyT!x3c3nmenfrY#~zu#G8Ovm}SsCir0!mp=``C zh8*Z;R+v^}uHiNw+&Bi#hHv@e)(jT400j@E++q|q9M2{}YHrmG%A+Gl-Oqu`yu6<@o8-BVT6M^WxS0nia;6*xHKP*x4Na zf~d?L>8rnPHlMB-ZS35qMkMzznl*nMW0WFMx56%0{Cx;@T0n$AH(O5f8K#ER{=@y- zuTzNM=r;l3SC_+YaqwullSS#GNF|;WW6+&wDy4w#J|6wr)j1`OQP9<0J_l(3jnwuZ zj#Ux2BVu^hu|%X2 z=v@yzDEugeNFZOklM(ErgDEobQr3Duy(T zTD6f7>ZJJ>#ey*()b9PQ82E)6N#BHQMCU|d?b2Rn9U0TB_E%0Wza4>6^4QNY{OD#7{i1iJZ50W{#iOa_GBd};0V%VQ zvH2b@Vqp%tuem-drtEKPp0ofHp(rGlY}3|SbxBlZhrB0yI?Y&-q=$65?;e0$bdwHN zQ%7aHL$CIF+@d#tHkF65k=I9u<+mYvIW$x}AZ8Z?;>0w(1 zR5aHNnq;dBYc86!{m8NTKEe1WXV&bU>){vs;f?Lz%-EQ=pg;4Y&+w#J+QM+_+$;~z zB(LGE?b#@ScL^SqE$PQ zMJEUC*cmH8XXrTsI%5e*4}CkKC<#TLDxe1vd5eksykeokkH zgw9g$r7OX?a-g-eNL4hC-g#nZTZ#6K#{?+mj}Ok zT3<}{V`~~~n<03dy<4FpoCC|w6L~Ki##Y@IDKP+AIdPIm2oDGNDst#jKcUlvx>a3~ zsC&j%iyG9<%(liO)`2lq>R;28S@w7V0TuGz$-NjN#K!%F!-yjZ@+DBDJeK{}H?f?Y z*@6t)f$XWxk3a-6p}=>`8lKs9bMv~U;MW(oDYRFRwd=cX-12L>Kg5WTnY z2P8`*h#BwbHWM5IW3m3|tb0#OJ+Od>+lU z;TCVgu3exT#FiudgoB3#@@e$^-*6omSm=LW{_p<foTBUA3YWS#{&FyeVP$yM3M=xKOWC|ctOrZ*JoxcT2Nh3O!H3qLs8qG@s;H& z_siV>*YjyczP1&wY{QuvTL6>QR1&%s!!P-v+-Q*K! z&BlN!AYG=HI*_ld#@zCW4G_5VS)h=q0;NJ@C_O=%U61Upu)xPeFJ2UKN(Ab zXthJzVi(})t(ZE9gB=}CJvYU^G#Rk`V}f!KntKw3*l`OIVUFeDV8CXyefb+HkzvuE zhKq@b4YNl|!5Pdpr>*X0i*FwXqluHE6zA>jea4Lpv-sI`k|TNB9wEtnY~#R_2$X?T zo~M*4tWDtZD+zzwL{~`?asFH>$Nl`=a8VVz8)w;lH(CJG_8JU4r=g|Jr|quyNmOgE zA0e`A1V>dGKk-;&YVaP@fEN!q6tgobAK2zJz=Gc0#TA(59A=1`lX2Yf!eVaSQDr&AY4dwHxOIr9Ym({O8Uj=OAt=xqh? zUHXmMXJo$FCKV(9*deDvXN-$0D9toBG@Q@e zp0q3?zU6ZlX;A3<0PVtr;*2u8Pn)9w=Z618q%&Mux;l&%p&JIW8@!AT&d)aA>ubWe z-hP#c2`RsKh&mV4fKgcg?4n9=$i55^X*pEQnLh>M=&KM}uQ$Ae=IGRNQ9-BICvCXU zU?$ker-pI%P~cu%RIJK{j}XYgv)Ru#qC}N%q8$*EA>T4HJGPxMo13f?Cif=|mS!~U zc(cSG`TW>Tc{=Gjq<~E|~yI10rM5prUq>$?nHmgyo#o-)hcO2_r2E4%V_cY3b z+UBabusiC@CL#x)r*IQmwq~CA4iZ70!@fyng9D3K*L=LV8E8)1IwD6<^79FGcIj^_ zirxS*$j=WQhGzONR8<-@Bvb24o$;HkmzX?1^||?I8h8&dNy{Galj}x}WAf4Y4c&Hm zVo(T61Wxt#@~}h>bDmR`^tP!BYNY#Q{`cl$3*SMaQv^fp4j1hH-z9q#3YPu#xr%4K zkoLq?NVJ%)N~oYA!@iBLuGVSn{CWQK$%>sTN$nE)k7+?CN zIWI9IL2wnaMmg?N(2}SXh=w<);NWsfhxvd+j%jK|izF9qyXW ze_+hVJ4ZADQ}ilkIr)gMzx2z4FT7Xf9W1?$FsBD@fgq=4qY*0f&lLcjvkl6{*OSM< zSk$PnQ!vOlAs2WaQPG(b0)&OSVzLUoi;toJ(*sib83ix3(-*tDnprx012km7)I`EW za8q`XS0S*rN%HgnlOx3Y{1-Cf&?$1%`hN^Tl&UR$Dxqyr&;=q-?DN!jf%=yPDs-e^ zu*Qt|{n*iq+dClc#C~!i#^%GohsCI|?DgL7G~)yrZ&cjU4mae%#CQxno7K|M)HL zj=kLzF)RLpb5+iYlM7a_qtX$JDn(Cv3~=kFoE<)bj3%%HzxR&vWieKajC%*`j~_P1*@*BeM5N|3l_m>G*k*9FId)L%-_x zB^vM46P=%KiZ9d8kKO9wjIN+wPk5-RPD?Z7HhdkK$`GwPsdJr9?VcI)oy)f`!6C=` zC7x*x_mjc=*{7?aX_CK~Y80UbORQ=kS{?$DNKxmKZx(p7(bv`t87u0K(n2*%i@fgb zt?q!XX8x|efY}QSy2iy$!lJQed>8%%5oqX=EhIrjy{5OPCZ1*u@Q&P8462e05?p`n zz+cfZ?xn*@(}}yr(Z$?%d|lM#__{;3<-~Z(o^I)rYKC)>oI|m{39viI@eKoK&}a=F zmTbZuv$iq$G3JwCvipLKKeS=*Sm*U=`a z_FgPxtUI_EqR`+eY+oARg~58cE;h6VJn05zAeUy93mudwiI_&R5X$5oc4M=Os9 zQm{eFf0VDxa4h{AR=RTYocWbv$@=3QzSKSN5Q=B1>8HbR{4q^LL%eQSB(Jyx7Wt%U zM!DiWF1_q!v#yCENk_phBG9XEB1E^bY#c`0F!b_A+BMHh&pV8=%mVwL^T~t*7us(hVQj>=>}CvIU&!I=EyMXd2u1y%fm`xqvVsE{iU=cC}GQA;-yu% z;cGR*dsU?r(Pv7oH%3jZ`u}|3-xX#e?#*1%wtdCD3-PYq)L6a$c$G-$@Yu`OO{(j%DxA$@`v-%|xb8Iar zcR%~}Z&&NL^`}~D%0AFM8UlB!rNy*S8u@4}D@tbEeBbixo2p}GOYPz#!0K$dyhvV>`sI49F{9Fu^YP>)NVq+cUvJA1i& z!V?rwGr2ZVVLz)Fg$bh^9}>u?+k{h^31WZ!gohLO*EdH!MuP`f4^qHpu!zUhk%oP~ zBKzfU%yzanN%tsUPR`oC8UvorR%-TL14r|!4q#c;?EEkBWteyzef{7RqOEW&udy-! z_~ad8eaX?iy>eK0iSOyhF57^0;I#S}ze-4LQ{s;k_Hh4Gm@@r~W5Z#5Reiu&h%IL7 z(AEdsJ~yGwgG8EtR46|lx%Nk+(-X^s^w^1&Bdkqp5p+SY5R45?S04-8w&S%cXr6Rs zF&lEMf#%JSbI{<3$b3A7u zQ)F95j;DbikPGP|R|GAuwubZzwGB_S^1$^_g>+9>1no1om>w^HqbwpbstO(t0PM%8 zrm_IP)MEgS;vJ^}TIMP-&<$8RmKh)p9QnV~Jo|2&`rQux-EsWfe`VdCUOh>t`t0HU zau`J!g{?!%*Bj1h)-Zu!O|U7IN9O8G<8>xAmTIcpj}4~@f6n&*HP7Nx0H_pL?gSo*V}gU*kKVcd zz)w!jPVe6+{Z0r`Jy60eNMeY`m_Osfv&95TW95T=+to2)q-MWxeeEOh(H=r@`$cT% z5%K%ZOs99rFbWLQru{)1 z8|FMj7^<2D51`+J^woi4XVrosS5*RWD!zHVxh&_T;~!%4h-AAqEdfJv%$+i@>I#pxl@<)lgQcnq^W_UfW}r zjkjlAJ*Y^Fwk6A`)@*YcmV{udv1-BArQ)%fly~4I*Nzg`Wz&K0*%R@Af##aWJ0KNs1prHN`L?h{s=q(QstteZZ$GTw=Luo%8R< z&z7;QVqaG_PGY8qLKtz4=k^rP1-sNZ+JD&RO#(D21LzUF?r3yf5+h>VlL;0(91hGo zy}-l#<<;307|&4q8$ydd?FdfT;fWOCZ$LwZZ7U;MLS{ySi-4r$?^nz{MPujH$RL|A zC~L1!-4S4laqJ^3Sig|da-8OR{sBUZmDNZz@NmK4=wXV*QM$9$MB%!;cxe4jF4L{0 zZ&$uelF}!8@+Rv1zG(y5$UUIEGsMGHaQ)YVNOw(|@hrL;Fq6yV6IqN-9r^g-mM`6+#aB5Rj($H(; zFVUU7y}i@(!cTxnjhjZ#4>_`8=C-nEtuLSe`_mB@YA8VzmW${n!X{K-VEf==h6pA4 z{_$z=>5q6^d#|*aUcsczLp-$*atNnTH7{WKUNTKXAWw;O#WL_YK7EW*M{(RrPOFBN zRh-#Q+Y$iJ;VXTK)8cam<-*U-1zYdjCHQb_hWFPl-SA2`ZcvUMD3RK9o)!TV9@ij1dZ_7V^UO zi}XTlPT1cDwUDC?NTV_0MmFEQ6;YHl8!B7gehx zmpYOS7Pzmt9y&O)wmtsFz!u!6DAp~S@V-cK#dA{Tk9M~r=Xt-Op^Cxz`s(G4&QWV? zGi!4zg}rBK=#tbNN$Wnw&++}4v9dYwAi3HV@mTs}@CRgB=;Ncurmlwqy*te{M~b~l zy>FM5dNuY!F-m(H0wp&l@RH=(Ijy{d!(r#wKjeBUA_B^gDYcaRr2;R?;F%n_*H)BL z!Z|V#V5bcRJcU*zX45+*6x+FiC%(+F`?htmfK|um?i8hlMvyKp-g$T6Ev(^0$~#Z8 zwILz9SV#*mxVsBZU--NW(A$2qF_js5WqjeDcFAV1awj1559PxFzmjULv!-$iDta<;bT{pdO@t;kID2 znb4=ZTom$y0ZoF}7O2OW6#F!$yKL^L`bcp)>~LzcK0_scjixY$pp2S1W|(69XN=+; z?)gk}XH-u4a|-YMtCeN453Ho&8K~i8pvr>3sUJ<~BeKR}_@vL4(^=V8F84co+k_`C z|1ULOrkFr4ourQ>^KK$QF`jV9L_&jNhuN>81M|?N?6{p|jJ)WUc_=iz|90rl^iE;v zY9-j$wu|^D^Rr4jc7TXWfD2}Gdi*;90fx8K0kgAu8)jvcPC$z*VXYYbri#-#;LeqQ zju|tsKf1o*T(&aIUMJ z8RmPlG&Ec(mcGpNs{s|ixFul=|1z#Jr{l*i$v%1!8BQLgiJuQ9? zA0Fg;5aMMc=#Xjg)ycJaqfLsMz=;F9cMb`R8W_6MHq!l>3Y?z2)&?)%A@1&M~pHKNAiE}GXa`{ zM}WZ4-9o9Bs<_4RTAe-2=wSvPNJjc_(X3QWd%a!UAN}weRUA}BRo@APDlh}RH%iYW1qZ`uT7Y}^<{n@vp z(3tcd!8dEK^Y^F9TZ~^@xqllt_E&0XKg;CN>^@SR zEel~`!2PO^@@ImYNZve;XX;m<;}pPudo{o_ENqzRlX=6Xu(3N6v$g(Q zR@qA1$8qW%%Y>Tm=il_Q{ptB)Eu&S&vDG_y<=5gsiu3+fjJI5^aB)(g_3=^lutev& zm1{uE`sla#wB12yNuqkb7ln_|YSht7_2UMN1IVr#qBC<^)1_wv&S*;-7mE>t4|{FT zhBD%YZC$y8edv-q-yhq)e#&canD*Qn^b+XCo2Jq15lJijqVcYn3%|w;kG9%8f<>tb zo_t;NJU zyGlE!=XZrqSl_b*3!bEa2>75XMuA66p5Ik=)-~@O)wiWv4@`WSajlQ&7N-mp7f;3Z zO0(9hBEE>>0ryjl>|*39Z4BQ3aJ?qp6~nz7RI%6oqf8TXnDS!wXJ_J38fWG%`!S63 z+37I_mwkA?I5NR(q!jt56jHhCi!DptB-fH`8f^FbnY4(b1+)6 z=IKgDaH>9yibAY3{T|dUF)fUPnrLOO+_0*ISRIu-zLPFHDVcKw_LcT3(g4dvxj#{Q zpm;O-EtsX_W{mo+m5Gy{&574@X*RinT%Ucmh@aTGzDc$bc7In^hy;1_-Nqa(bK8FT zU2JHY<$6CnGfb57v!Hi!XZ&OG!FVNQaXn!2z#ZRxy07%4tJqycwx-=NEx7L5nz zyQ7Y~1y4>W$D8pd#Jv#TgS`;D&pFOt4w;Ya_&oVLQ4|MtKJ_=B?oN8F*0LpT-9!a` zC_@PDJpKUuEqruCE;Rh~h&VuoFu=3!-I!}Ds@?pVXty)JZ9cdu`b{q4na&fqu_3yuf=)4NT9^fyWJXle>i?tG*e4+D(3qf+s ze5>2(c%mZC)~gEy0gR_fgqk3etV+Kn%Y*3Bi7Vx(8BKO%@3Adzc_yvvT&L|Lb`lK`T#Uk%2r1qG8}@XYZ2EH8c;9l~$$ru@qWpF*C_cGCaEv zA%!HD1Z-)USO*A9e-QkvY?7;zEM8&wLZnsyh1=!aRy{Vyoi93x?9PKG#-G}Kg05O= zl`zDyHPga)9&w4nlvCu}kb^M;WYcXOW{&(jFrqZ#d0F@xc=*LTK`yp5nfvJD?9d&` zWHP05`cj}_m-q5G>A=1i8x@KDxcN^;K8qDFCEsy96$Z2&Pquqk4sAyMiDwxzZrmFu z`PYYyNF!#&5pEQ7O5K>8LA07{eO(C}F+QNNI zbKT1Ov{CQ{zaGR5dl&Fq3L2-u&nVj0!>51U1nf4@wcYTdJv%r}D9L#BEe;k*iR>XHCp!<9>2=&OLjb`}iK#7z5@9`o$0{HqByHpohD zqr^8nTx?C+aHX@?#_+G$n>?Cg93vn$SrA+1ohB%3Il2Y>h-jZP?3GH7%MO+GfB2Na zBD|;P?Ao3}^xoqh5|673GA>AePeJIl^RsV5q2=Lw+_6%=IOC2wH!i$u_t+4U%i244 zi+}Uag8+%ity=x6%e{S*~_&8OG6?z!`L5#&7 zRJtI6nf{&LD?m?~)byLfM;USmI7?wvJLvXYXy!^lNBu!OL$Vfnho|)}kR+*?dTLLI zn+)eXsnSIop8|`(mYaZW@o&MLEXZ0I~9b`ummBvJ>O2NrAqXCX3PDxt3FL@ zc}TP%u)(c&S-YqD4WBM7*O3#F>v&m1iw@i;2fC|fGzDB3V5aD=Y&jJmP$0C~7x;kp zifQX5;C1UGwr6b0M)NIBF7|{#nF)wk%RMpjvFwe2cu+>FjsD}BD^3fVG;StG(9XH6 z@8+dQUASPTKguqdXzPe1Dawea z#`0WIbQFF5>9N{Mx{Xw@+s+)Ze>R_U*zNJ;fUQ)c&x-S>7U7Ewv2juesa@BhAd}O^ zggS=27saq>`=h;D5?5Ue)$YZ5`I1819)H<7o6!{66@qha02Qp!;i&MsgioM3O9hLs z2i*!T4SSnz1$_4nsflwhufB$A)gMG#im~>w!@U}p zvz)aUV7TRLv$S&cr=SOmy#j}jPQ9;ovfZJdr+;KGmASQhHs&-k77cm-ct3Q?#mEpF zO8M@5j;`h`5E``z{vy6@7?11YkFQC9!ED%ExDMjmnyk@);|b0XUEtL1m7KKG&>K%& zaFUhkt7$LNFOE&Tz56p*E~{TDD-HjmA(qUPnM&1-Au)d$WSsWEdjyET8`77ICpUE_pvgt_#$zQ}ut|MvLxabU~zTJ+O<@Wjyd=^u?G8D6RC zwi!MLQHnRwRaKZWtZK**R}uQNkz7~}vJ&457BpoJSA($afx z{q9aP!?oB|0HHKc3!BIAu-Bu!lCd{{Yxj{+V3OavA9+jZugvV8Ar?rIwGWX(nHv_n z=O%veoVH9apRTbpJw%c{HBigBAHlFlmwNZv+%Rh zqeg^@nbAUx$x&l@A(tl5p3XjDgJOK*yZZ&hLc0qzi2nIjzg0ryjkNrc>Z2rjVa>6w%aSV1gYo^nx zS5oQy`+sr}+oA72#?BG!_OCULD-aWS_+MlsDn#hI58jGx-OId;{M~INEtNYNla!;Z zB+Uw}kZBR4zNOBE zvmtew6}9Gy_q1&T@Wk}w5;))YP#6p)MHiSKIm^ky8LJl%plXSkn=?aS4zB*JA1TEd zpe5W^5&Wsd6m5L;bV&$a-gdxwEatT4V?-P8U%$USi$*Sp8vB|V406KX$1#dEuW`cf zp?}Wh@`%v2lz9J&{#cUp@_NRJQia@m1r6?{S7o>_3o(}H1(^Ye7;&0-heuj$26d;v z(7ws^S~cK&&Px6^n#j)4>iWXRQ~XP^Ut9!VrUiOy*k-dON%h0*eddS&2PHtV?ksc! z{)yxLuVwCg!N+fsZ)J?o+DqaIVG*b9gnGvt$b%dN!D(Ig2g&b?r^~XV;g?VnzxrDi z-q}!1UmPw%3{|KwV;#xr3 zZeMWBt!bRNoHcP`x=(nhc+GETK*^}$XD8wM9w~amby7U?VEYS1Qd=@K!RiRo$FHbN zZ>PU!0%xM`x03kF_WH=EC7;TrZDGY3*NUs&oKeDMZXyh^6U8;4+d%bSfrX&EBsa73 z5Jm0XK$G2z7?v0*M0N}`4^@oautZ(ezdASZ*acf7 zUl5Ho$9b1xHMEj0*tEx=2Wd06amYofY#d?*tSX}nTZ->!p(qvOuGN51Du}HEiN-&x zofAP>rZ_M3WL<$Lpc@0NfkZbCG3Bye$558oRZv7zuiIk4+ad-MJ?!frO@UcCMBOoK zIreUTkE^yU;0agh#V*x*XzWW+Q`9CBE{i@gP~IYJWGT3Fm~cEh1Nu8Gvy4bNNZfaK zlyI8diTy6 z0Xihk<3}5pv4OD1J0^_ix?#^=9)5s+R;YM(DW5Ef5>gLXIGKCafcP<+`-TJkrwXq$ zCyn^MoZApJ5IFG2R@1+bIU9Lq|n{i`REHN`brcYnmLXrQNp&bByx$&vY0H?H2 zfKxicN%DnJeY)L@(}B6^c^yM({weF@r$=qFpP-k&grQAoI6c|#D79HH8EH>0u-?22 z>`Syw+J!Qmmqysv1JEk%J4lRAZy~|w!-U1H#ucZScH<8MSp_Y-x%hB5*nDb=a2$I z8Umq%KzQf$698`=XclOf7Ycxgq*Va2iW4$^=v@-JtP$9*&hU$lr_iW9A9%fuu3%{| z$-U94E_`IfHCr9As&Ecaa{3e?))T;qt9+<`>DpKOq?sSf?l&{zoAmb85enEee_5=@ zLn#C-+d)3n^jg;gzvlbn-759%535~i&Xr!gnO+pJj#z9GpuT}almc|{Q!0iB<7f5v z84)B!7~Mv8_DVMa9JR1Kj0ex%FJXCzSABx~GQz5@D|PNdT40r_#&JXJ7o0n1YFV?b zM+iWO6)>_^vb#NSc-&PvZPs=P(B3ZRf}iHr7M+-d%gD*t_|Cy$1<+|uZBnzd`#<>_zUs2P|R+J1U|Hg0NW=oV*(!i>RR42 z{B6GZ(tp^-OeMLfQjiIwRKYWm9pS3j+MPvYL%=0PFuqExe?HQl|!alP17@!4#w=Ju;U-$ zN7O7T6)C}QM|jzv5NqFxju)3x{#}nn;RXZk%-md#8L;u`*`u)US$5VEz>;Znr-4DL z7aRQTy>fN~^xXp#bvZ`J_bM}2F)LTNjyHmKXn?EXMKV!{Xu z9J4G5QEmj9pY8aFz?-*j&9bD}gAUIlaIZ0Ov?ER1XtWpyPU%S1Y&z4eCgsiZ{yWWM zly~7|AKUJ;*U6tQ+%io;oL1jf=&h={v*+drrfaf2DSv3n{OZn~f6{P>(*SqJrTw2T z2R$bFbR%|>w>C1)ND`ldxF)YQc~H#VPwqQfR$kMi%1}*={xrP)AcfMx7DYK&DGjQ@ z8+Ffb#>ckwK4M#PX5pe|uUa;c$369jK)#?04S>W`2Dc}bqB&2MWI{NADQDYRD9qW* zSen2CNf28Cp`zwO4)C3395!m4JZZtow6kFX5#zzQ%F6wR44L1a3Pk)5OQ?+wSc58u zt`)=DCdxN6nhVpH4?o}Y+zlJB1S9G1suTBiI~(ZQcXqyh#8i?&{m_W?muw)5KV3F7_@!yND(Whf-{77%EA2mOCES;=-b5%v;!-yo1q4qQD4 z{E8^T;uhN93H0*@I<*gubGif(<7EO~zefF}??27vxHs690BFMvi{GPOvn*Shi25st zKxBFd`uH|Ft|f=mJw>X&YZ~?V)Jt}7>Q_!(?D>-TK~tR%qDA?i?CeUTo}0*tI-Faf z)wQyfiTElTC8r|=Pn`(v)3zJGy)Bbd#n$3L(W#F=X8&+j&%>L%Y_(j|LwtQDT=-~? zIPv;KtyjPmxm=^P9Q=_H0JL%|0yZw>)X)GPW!KO^{(GpR(IHTP+;7~`fd3qbMZo8e z`&*`)lHd7O&RW76{3qBH5lDn65O;0o>7gjLJs{g{J7PwbXDeb>mS@pgK9q~*RtrGr zyc7ELAiEO?S=_5nNCNbSp047_)Jl?^Rq^oTKNEj>%8qusBn;?ar3ATM;!C`i+xPb;Anx6b zZpuV1=Q$JI(eiO4$_Azt_4XD%q(eV%3#G9Bc_;zxfm!Jg?)7iro;-p%n@Dg{cz#tz zOE0AxAhk!;XtXvD22dw>B8w6UGeN8;Rr(AVNXB0tBj0%win?#DtlHKZ8daJRH5v|r z(V`8})B*4SZGZ?Cj)o!LVps5Iy+`b5HDK8p1kQ|oiyfgPpny?Sj^}*nox;QQ&Q2F~ zyjHpo0}g+vkl)1O3+o>k|j+upYE{z%rO)tDSCra z0W_%6%1!b=^&2mqrX*nah;30xT@mPPB}D&G$Vo3aX=ts$bPV9|6cBJA%H-$Ad%?pz zOaZwi6@6fEBD~2$kH{GLPDr3}Hqjfx1OghZUnVyLQU!NR-<8DCqjC3kQ?dYq^Tp%g zXJpsY7qJ8=+=(;vE)BMQPL3ANeK`k;OQxX-6{Eq)JhEC{FN=es^Uj2Y&=cDyZN#Rg z2n#E#s7IkIeuE}|Z27RKRfknI$|nLzo7=B_ZUZ`)gCRI$;;<(noT|wO&C^gE=76l6 zDHopTc=AnC51=jrAQ5*LHI%6z!>t7FH$h_ow;_O|Ey~uGmzkOb7`sDO20)(lvZLS9 zp+(4V0fLUFFKFTInnnP1ARwslyQWba4V*#fYE~8;7{!YNf8ODr1lBH_yaGfVtheCV zXRIAh2Y|TEdOV*qdSXw~06<4z8d3#Ely(DRp)4-w44}G(zGt#f^+06Y7T~}A2>Id- ziBEILZSLJwkwha=vOj+z1H#yZ2I7359@XU=o(a^l_$%WA6S^=C3Dz6M zf)PL+IK~j0q(Ht7ioG|*2M6f~0p?x(9I-GX+xnog))2vp97nvt^raGs7A{xATU9jI5{~vfyc6ha_kfQ1tqpD;qFs~qKr98dVc{QN0>!?uM+0)E z!|f?CwD5+O3pQX7yj?KVhsIv=7U1=pH@hYsyl`%0>GDrYu;@d~B|uKtnY1;AY9m%N z?N?~c>6j3yNAUrT2^EAHkX{-<@yZo011tfm>-Yae`^fR`Bb+U2+7VZyb`gPX#=t3E{zOfYCvK;sc7 z?t94Ln7QrGkDu9b7k@~1&`#xIofHu-TWzQGCKc)Q$9GH4iv#=c6e7dl^TppQiin_j zTNmJiJIHt2Br6%v+_3(1*76I}Jv|+dwKLAb|9D#K#x7sa0!)#!#of|k z;D8fA4#^c4#kA?5kW|(i=q5a6mU?Ew2P|nD<6_HB0D(FrBeB(*v^sJKTtc02E_E)D z2GaFBQ2=o6gab~Bcu9FYGLsR?TOfs?uY<+HuH_TCd5Px{^tUj7GI~R^5u(U@2<=8@SkY1fO6I_ zIiMUA1)PPsU>m_&I`2(bzWQ%({a{{r_cWdtUIe_ZgZ|@=mPFVOQ;~I35ipw?X;RCv zY9b)xv7=*J1qJYJPT(i%AojvKt&IA9kUX|7Y!rbhofqB<%4vwlO74gt=r5l~jBr=O zhS=axXPcl17F2nR$ZUh!Jfy5k!kMY-I&sYM9 zYc8PP3rPeAoE`>kz8`vXh5GdOym29Xe{D!bOK?y(^B3_B2M)&zZ+4}L0%=q4*|se#6#gU`H^mayJ3>M{^85E5Ag_ zLJqh5NgHLo^xW{~w$BW=tIFnpI~J4L=^=!GV%|VXmej8gg~XG@RaXz~WXyb_u${Kq zQx)e#;c-FbTeohl(avVyvY2o4*Xxesl$Ou_h|WxEylN@JTa`*CX`Kk>z~?0c_1lrDhv z*NgzFz|*&C-(Fii_|HfB^1h$Zk4U@DnLNkET*l>eYUEGNdI#At?QO%hm`%`{wl@7b zp}lR~o3I(BuP@O8M(54J;jt|*^ze^>eqk^eb?@vWR7_gn5Ou{O_Bz^1?&%Rb?!vT> z)(-1L}c^03W}OQN{MnYJ^rMZ>l%ww(>G#kG{-EYG;A2ks;KfYrNPizEwD}b?)$a0A zvE>1@Hy%JCyCwdcma(+4_t9%xpOwHdEai(f?X}`8kBN zS&{EkYQvr;?LHqmG~GVAQN}M13ovN?p>-cXLRy zGPIZr$G|OnmknOW9gm#>-ZzZJLIfx{;vG)-#L_xQ32~ki-hqvcYL-MWQ*RdQz^m%_ zY`E73swRKk5;w<{eVdBluA8C-b|er?@qAV*9yE|~0Gl?j0|u*%=fL${G)l8Z@4ka- z13%?p-)e^Zjs}T>*t||V`EBJ8YVV$bZkJ;VH7hEui5Uc+dSJKvn@&kYP}&Xj2buA6 zQC--)AUc}T?1mWZ%}kZMVgM_1l`I@7nnFYsQVRvLRP7UPah=;*+*BoLv;97Hg zvKbLj$P?C3ruMv{7gqWvXn9um-_)S@k0j!1G-C%<$#bHERNHsGt_W5PIq;CsL4%So z&*#^nkZsqQ+!3%78n7h*bY{b;EIQ5|KkuV!&v&O}#ndI&+CZFkbH2#BLGx~r0t4rb z95~<;tEq?d#>4U0t~bh^)D@PW7hW;oVBe80uA2+y7hih_f!LOELKk*se^`NYgekxN zYNd%6exi=RC2shjjjL`_!9x3qLM>IQH{oee8r98sD}CF+-40yv&_-w5PASCE;aI;& z)n2POqR2>lh#n>u37V59CmCt)pZ`nA$BIcIn5iu)mKX%39!mPVpcSdUMtfNbAu1$# zw~Gosbe>wGJ%}HRi)lG<-jJwx;|qvTwugDV@b~Rlof_CZh)#1PFK(>}$O=pemj~aT zR7QyY?JWAhCZdl4#+|*(#)wJ6^Wy4VT9bHXsg8D?YJQ_zRQnHyK=A9@CcJQZeJ4<< zV;eKKB;o-*EUy9Tf(9}CMFUXkqtjPV6C)L>fl}XN(HsIRrB$=yuYtU0XMN5!fAIkY zG>5k2#Ze>IZK~T?Tc8nuj06!b!}nY6Cx_e@5%h7aZ~!Sz7tN9Og!P|T+5;^QUO3bS zqN7!yNQDy)f02V#l+>I^SnNe`&igx{h<|a#j4t|89>?@6xI}olH@;c+Qa$K-F(>@K z1~$}mB;r|C#xLdfw|M8`u~aa2YlWCj8~*^E$@Uj1bcCDk5ZjszHz8OR=UDs;i;kZ+ zIoQ9lRs3bueQ?ryBtzf$^bt%{QQ+z{G$I8|TOT)?#VBwh_38$1+Te*NgFekWjEwa? zZAl@S{}#&qSBwH~|6+&N0~6zJFai90?@Vb#vT(P(z2OW$LmEW;FnC#wlQn2=K-u<_$&D=JxGP8~_>O3j%Y_()*nbH^ zrw8I-WZI;`qUa_H?a{BaZ8zM}!%=_)%Y?YVkqNnPn{57vuI1< zkKa;)M**W`9T9}LSB-%p;}bf_c+iZZ{w%1}Vabk(&GsVy%zTy0STh3AF5@O?i7rP$ zXZ6sf?ib1X6Y6y?)CiY6`8bB*-|U+N1V?2+#4^`f6hiHtlS9~X7PmC5jT!V!)%-np z5O%2FL~eoB>HDFlXOS(G#YWbp{*LH}&D$Z71YWTs1$Q!gGMiIg4UapNNOlPav^c~MPi5u0lmpTkcGRqZjt$Ld&^~QCh4HL zS#=Ix60T5>YcL;s#EW4~tP49kTA#mS6-^YToT=))_MRNEucWT7v+^S1qX88r2eQNOBP9{k|IKUfz}~%sE`4!tAF}fOTA3F) zYiSpstWt0|n5o-cHJ>3!eP()wbt<*A$abP>F2?E;N_pWTDnQn+a(QwHGvsl5sP9q& z!^d@9^ebk*1!}f^vN+E_PnqTAHXiQe-Z_2sj(MdXn=bd!Qx8q`h~ge>6q2$JO2q?# zUDzXToCl4V6p&Y;UJKIv7u$m7-JuX-JSQ$}eK>QNTh1To_nq!vgt1srkq^g(ee+JB zOtnz4Yq@R1F(Wk!5OvW~Q~sIxX`l$t(PUHfuJ^a@+e?hF%3OAwbMKc+w~{qhKx^U> zh>V2sGp1MRA%|Sly(nLh$4P4Z&hCdP5VU#V$o6Pe-)B6)Tjjp#Fwcg!%{@n&14<=n zAD_5;naqajY!qgOv&B*;e>W!quI-&=e^KDgccWr~ zthfgQA8O#H=vvIWsn4SZfE=jwxagbJ%1=;41uTQHE)*#DdReC*q=;!%4G2pR9PK<^ z8`M{NGV+Dy#6Wn{I~j8i3Lp||?JeY#szZ7?<~tWTaW7fwV$5lZ+4<@dhjGi8R8Xol z_fv`Nv2=TRa-g8u0JxX~7Xi&%B*tVx@`|#B{4OAz+2C06JuGO>0-c8;H7k>8D~I2F zaevsAGU?|sdP-hek@j<0U*q#}Yon&UeF#KM6wzPR52GSodXQ*XF4d&RxN*x5-L2nK zF%#}yGG_Q$9u#7wq4^VyZcW^94zI=V96Z)Y!(wqDkhUut!iwvEOM%0U*?_F8UmHW- zmxG>w>0=|Y<>lqoRE0D!)9W`V|209PI(fS;sF-9}oVl~D7#TE!YJiil8DYA|OQ}h$vV9DN>}@P^AV)AjzHJ_x^t0{Xh44?!5_5*quFl zcILD>bLPzKwGSf>XyV1Bbg8wl$0qATZ53lD=9=yEtAV>>Rxtsb(f}i6*e6&vJYAY- z-4vz+Jf}PMC^T?s0b^h0@w|3dG{5b_d94&BGWF_m&CE+vgeu80hZe7jCt1MRd6Tk1 zt8X$2^PW><9Tg{(o^>LV*GVNC;zGJimlBCnOM!Cf0{J|o+4o#D4%ogDf0K**l7`n* zA}^48@bf-=WbPfoHWt1F3U=VPhL?Yf01Lrq;rBM9BvE(;fZ~C9o#2rVm;O^RrdPGCzr$GCAY9M2hPXO zk0)+!69*BM)p+?SdFj#MC-1#chG7k>5Ce5Rv#Tzl`(1)=TX8t|f9`(dKoU7J?#J|INa0~; z&&T=xTVfpn+>BS0z^X^@*UR%&I^KxFAZ+2g&v@gNQaVV(YvS*K8%B!q+P>$zzv|7* zbbUPP7Ow}!*X?8bKprPv;`O)2usZL#ebq+qu&k?WdUmFznz`U#x5jXR;;@PS6y;UO zX9smv%Bz|3ayfOeub*lIxcZaA$8N<3xvKJ#xLvVc<{FVlL^qA)f zDDlYCMqa*9cz?U=!PPwBpSSxmaDTm?U0vyM%~Dw!OkA;G=f9B=QRJh8@Z-M=ib?nR z|LgVu&$POZ5cGEJMDOqzy`M0UBs0s5##{<6{c>T^S};c;&7{b01&9`;exY-(&_Qx- zj#yDNtDtA`&*MQ^_KU6cYI=K*ul60-g|}v|T6ow}uGWEy7Ef#6>aRTX@J#o#r{AAu z(whXSfh30)WBxyeWad6=?=mZLCQxFRIK+jLc8mR1yijU?Z;P!jH-Val`eW{aej@WmaxU&=)MtaPLm-`cz2## zekY3;Luwgdxg);^=v8Xuv%&(G5H$*I9YY#=cmCrsq9`K5DAxyb1U{d)hzYUN?dn89mXa74prMsQEl3c2KC=hNHBp(x)2PL_>+|l)!(p+ug+lPB*hS`Logfn&?dYOzo|%exr%7s$yIS8S3&AZ$fN7TpzS!PTUd!a`3-mg zc?zolIMDu%Wj5tyI>C} zcd(h6rO<7_9>yaL0|oLSu4OT+o%sgy7*x4%@sc0wZbNjlD^_{rsrTINw$kL!Kip5%en zC?U@Qdvc#hx-Nh-M_&>44gBO3DI zlKVZ!>p1zQQ1$&+_LIt}TxV6S;Rx*H2)?+%6t`-#^^8lw0!B~IF&PjbWb^b8n;~l? z(%~)C_TJxdg8^LCDiNBo_?HnbsX&ej$POQ-&SRK7^`j^V}|EOA@uGcc5#g;Zz4SpgF}99ve)bKazqw z+!V+O*l6w+2VBx~;3b(XK_cZ^!e9F1Y|;^>qxJW-Qij_4c5}&k-8k1W6N-Oem}l=M z;~;UR?4r(tyZMhlyB#i%%QjFC={S;3KVA0{__O74Ca3Gf&;Il1HJg%idT&k0+{6jb zsgbs`O)R%fH6hItP1DR^p^}O4M{~wgF)rKa|gH>t9>^)SU5vp z87hI{*HU*m>o|)vM27x zgvvDEUnmGpbiMRz!nJH}d~UT-rBOjI*XTG+d9sV`39hk=K9KWhEsh2)X zkEH3ktWKRUa&RzNapk4Mz`cA9=iVw|e;&Qj;{9FyB;)95OlP<#Zp^eT20}Onnp{)_FdV=EsHCrCYk!t7E1S+AwAl>h^}xa zy(~Tn3s_exBHEs`*q-C59T?FhBV^m(6SJDLUdQZqXG(27tE z6s2*YvDw}z?R&i?t)IlkOme8Y&zKpU*2_5D`eZ9sTL#6C>GDR&3HWOA**`iN|L?%D(q9;Tfz>NPCa3POKor zPR-FqJAHR<^+x}E2wGB?BS$_x@@13B8lk(!_EZYCuAt@VlkHHb)c0qvSL~&0=j4wC zy2iazwBSd|^x)Ri)IELj2M8&CY&1!K@UQNb@;wu;u*= zm9Bj}HH~jF?dLXKi^k!@Rm}fbL@Va4^_iL7dbO_3vf(PI?(KkoZm46= ze=ZWro&|_qp?z%@+wHVvsfMs^DVzbxufR^eq#uP!2C-e|q>v~Aqvg!qcZwGu4my^? z_VSqbt*5WPQ1RjG3OQTlZV<3Z2gB<$J9`}2uX*T0!7O*m>Ul$0U34wDzkJ(OEW z=6Ty1Vr%N)kK7{AOJ0{HR!GPagX`ey@9;Vw|2ZmK_Sj$$bA~cxsa;UXTBHv4P{$zc ztdz1>_@kPPjh4ubn{3Rx#*OU|Ij|ZThYwK3;_O9F_zE-FpEjTp6%w%@F5$hMQjfPn zS?m*Mj+}X^jE(MBTu458QtV>%m6jd{JpJG9~O1ynky-34N-V(38F(dSC9R6=gdT*E>-!?s`AX=^m8(>kkPc;%vGTPZC9 z|GkWq`E}c>zzUb3A8%XA&t2_*;L1w0TA(imWiaW%5Q&-&H>cJw-VCGFX%tyxYOqq1 z%x$odCDM9j%M_uI<&A7{gf5O>@rp!b4nju};Z=x`Zgs9>PDcYu)LxAx@1-w9hw7O) zjNtmd#|dV%e%zk4Pm{cGgDFf{TXCB{d{>ISMS?u!X(0caFZi?hfdZtbo{Goi;hjA3 zk3JkIXVLJ;XxV4dISJdx0#z(|58X+EaHAYv)PPLmi+!lO3FMph(8Y_qTg`G{(p-1w zs=5j`cQWS+H0}|oQTgpCzj;;CH^OA$o?H4Gq4k2;>9TPnCPo<=k$}5Baw1L~8|$o= z*V%OmZ{E-tORVqYu7rsLF);NUrxel+;oZVRaX#MoRdY?au1)LcN7Sm|WOvBoQlR7; zWTs5#h}p2#L{h>Gq*z)?@M7@B2tKHlH9P8FYsKL0k9&2-GxdtOK*QxoZO2;&ky;O8m(U8-n) zeEe=aqjn$$AKt^OA&><|syOoV7f^A1u=lgM+>k;VA3j`&;cI<;x#*7qc__HyOxy*Pv==hbAAs0z)JfU*SXa zf7U`F_LE(8%8g}zF#T@UH`%i6Y?JFx#mTss!4qutw6s51Ln;v2yMspiB?vnndBCAw zw#Q}A63fS(zrQz~#h*qE&5@~k>}La{>C70A4Yv`vd81k*e>SgKj*$a$@ki-0fYzBk zSVJ4>4tk~N$thXtAp%k;ZtI5Q)t$2MmJPo=SK5bt=$l?`HNw&Rs>zu7%b$okxW7ev zGXO}3_w^Cx0XOwx+wqK($0c-|s;V`~-=U*oprF1m4# z>!-zwro$KAkwcuFB_HYQH1DjN*d)|btY&{)TykCgSk$ahAY1;otzuZmzWk-N2lw8z zt9rcaWj59B#d2$>WTlr5q56w;Zpay)QaYWYnym2{xw&6S$u@k&%cSS+X&NeaL56ST zRa%Ii&AHyG-jl3=!{@$+y2!_^?y?y5Ve7KH*-vX)S^jYz2RR3^!doyYq%I~2yQY#hUmt+Ti@>7nDVfciLI{F4pKTYZbNv8wVV zfyYV19k*8+@%Yak&wr{K`lb&&-xE6U-c{n_IsT1f?9xNO7~w0|$Gm z>JktYLSHG!x{E6dGw*X7(;9K8l|HoTe&KBAHM;dJ3%X2u`r(yVFYouzvmKr58FX9E z{NS3bq5XBVyVbb8`AcomCX9CGM`^~#t_yl5vH^mJP51Xt5`V@-aj7w!9j5hOC)E!~ zndhv`?pyFkTVrBu@~Pv9)+^J1Cl`zIqEhV~pKyL*&*2^TByn4raCNc?atf{e|4?B2 z1-q~$Zsi{S!uiVL0!%5JR7O6S2Hmf$4r?;{guYsX*SR1V=QKiwhJs|rHk!r_sb?_T z^r^BHZqm&S)syS)`GBJVjzBlD&yAbz>@pzW4*w0t)Z>f=&L|>p!S-TR^ z+tck-mBO)LQz(z79g(jV+okG;7|p7(=k9w4Piw^L{;uDf^i(4@OE*Ze^Osf#pgDcR zs$j0iN$BQb?O9}|rqwJm0gsSWVg ztv{+``z`TQovpo90S8O=~g|rw*ySsN0kfRq#aTh=hBa?ahtp$f^y*-|EZTd#CAX&iIaH_k#AMUETz^TeY|X+VI*;feUi_5!%+05%^R|z zQ}}Nxd8lNMpn;%rt&v`gMwR|2X`5 z!H1_&XRs9p;*vy(OP-h8-5A%wc;Y~5ym1EZ+%8+(!eOQ|BXi5Ah3Zn_%F$K4cZcmz z^U+M9nw)&m>4hWdavlq$+L;+}m+H&qI*4UDrRV1^G|M}*{-_;lYlsR2k#29^g<~(< zntwb_#ZGn*(?3UIh;q}&AAZX8;DY2o9}k~h0OyUhZ3g4bHGIxa7lmf z46-o4gFn5c8E>2>cIdP|0F<$`YDsl3! zv|suz1^|1sN4_;U!C;X5lJ=$!jAi?CX+HXHTf{&vMj%uB>gdAL2T9>~qwhp5Ry$yT ztc0)slB=t@jjcPF=oLl8F7t<_h@Ef&SIi9eHt59M?0!rhdN#|JDw~*g-QXg+#-G50 zYbNT~a+S#?_!S9-Lx4IjH>{HicfqHF6dm3u(*%BO;LR8;MvRxZmD>_*r?i((#&vE( z$#UL%P+F)ye4i)C#) zSgI6`ZIdjcoPtxul9d^$q_SH%Y5ABlnXw-|?u7DIuIkNKBv1Jx$N?kDQ%U0aY^)aN z0mS!|s-ox9I0?rpvHRK=34 z=)oJG_OH3#)$ke*7Io#kJ(?mf*t^excu=i@$en&o@vc?7J;qV|OnMBef9Z%Z?UL-~8vb>}p5<-tyq{BYo0A z&9klXficJ51XF~^Tf=EBxZ>t9mkO8H(DF49j7Z#21mIg|B&EVucF-L zQj;Y)vj1pj*-L`0hpn`5^1e9SStYW)Ji!)EwVv5pus0A_yp9-_9`tiFPCf#pCtyFU z{ZowLi{q(R)GY*Ljz>z{J>GtFjbXd`mo@rGt(O~4r*G4}(}o}@kA##-NL#JW`ciXi zgQ4IqHn{`s-FD_zmIVykZXnnes0_(RQo|iJHlljH%E9`}kb^y4C5;g)N#Q>^{uytK z+~m{K#Y(0vkRc6Qv~}iFTLBqP?a;6eQjWl8tR-}J;fkZ)Sc3)jp5q^bGKk?L=g|hU z6gGC@mRxUyJ*t>j36t(%#yN6}6vz(sm8z~MaObAlZxx2-5zYsBR$ZwE5zgG|^*ZuT zumIr-#YNnsgbx&zOK_$&rH_~CJkpZxLygalGDi~=x#z! zT0IBGYrQ*&?h}cxBtYsJCEQR9?hh1!4dZN@+;KJytV`<8ho=^9^^(N^r;lzM>%2pL8LdgFHc;(HIZ3R7E<`--ZK_7DRpG)Bc6>W zh?%=gxCw++AJ`t1NFSJG3MXTjVtkg-&^N&aUZ!R%izU&=E-s9`{*1;O_Zev|IOFS^{b~B$ zSv)TfsA*>^voOeo#`!e_(&rC>0@FJ|CrKys3rXSs^`&;k8_s228mrHpH9goyDEY6i zZWV|PZ+M&gy|}QW(@|Ts=|Zpq`MA#;@y=O(#nnM)+7AQ)W ztV7taVMEH{$dP9CV8hr1x;%EFg3c>7x`zfS5LaBOO~iIR9%$CpU$Igb@gET^4rC_? zF0kpN9>BG~rjk4o)_;?kLd#n^)f zY6$#zxlS#v?Be8O&<}n7Uckia=bxxsL0?zO6j&jnU#d!jfRWyB-t2ZAnCvA>GHaeW zUTMCvo+39Tql4^y{o&7seQ;IrWt3D!Bpw~B9)GJc^!@%GmypMI#1iTx8tW7O`Nr#) zA_`ag+V4QKE|jfXDMgiMQyRObRmcf6U~KoVb=Oj0fZ3M2(J4|YxexBpfHfeBpH_Ft zzd-7{5_HHBS8NoUH}j)ab~3F3-rdUxV=6z~^?2FPlhW&u?OsYSTy@XrrZQQLvT7CX zzp($w_O{=Ty3cVtHX#OZ9$0VU$F9&M!;hH~vrqMbJvBBx1*@rQSBi^E91KV|gFF1E zEsNU)Yg-Ztww3>E_xcC+W_(|yks|k}uzlJ=QONsIAN6~{a$>joNS(wM)Kn3q=ZI#c z8Y4+yviXM_uKEQ0ST24Qyk3$v#_2HG=e!Sd{?5T+<6}MHNCCAuPni?VOmSt ze~it4A(i{uvF%#opk<|czx|_R>z_G)Cxi{*v8^cRC>J9i70Anx@Q@A5N#Sud2hho5 zaq z4E5l#M|vPDaqpl5>Tdn0qPXF(8i=f>M|5vc4tjn7ow>HVH<@|ucg|bPcw--j?Vq{@ zEs|&4h))o9M*~Cs^Dcq#RUcsbvEpMW;2c)60`cVS$iWb)?FVp4y)O-s$sUg~?Z z#5vhAgqNA?E>>TAfzv55L=dT!C3L|jDXLbKwFE)+)_v@xQvm_LUY?<`%&g#W+j(}y z9VPOjjc~{G`;*+C^2IChbfW`Hk^QCw{vmyM?6Du*;rk0@f4m8BESwzc7~9s zcw9(;xgv?WnH1jaz2A1|-r=JPjJMO+=!7zf2(lH*BtWh96WoDKE&vOFyvoDCe6<&f zR`ZmlYlBEvEe7Suf{uC|?y(9=D}OH+Z;u{bCwwes>n%ozQzRS19@|i4AAETip*tm} z@jbo8^tGXEk)dgD`xhG|H#QltGsi)KDQ75Re ze&z7p9O&GmGeVNJfJgc0ZbgN@MqaV%f}H5GWh39?;C?gAHaB44pz-Rp63KHm?!Iuc zz{cHVB*b3eQ~@t7kfjD`xzXQ7LRK_%GQY)C#`a3X`RGCnf_-Q@lBMSGP| zEh%lEz}NWkK#0q!7v8?Wgmnd8o58{r%|-5Nux`EqR_prhL+3%`2NdCXbo1-bwWW~! zBDc0{RSp)I;gQ)G;mqI(bo?Vd8rH3|m^^Y}jQ$#bt{IZA$355&UEjXLd+F2>9F-qd zHUPjP7@Cs08C#jF!Tk4QJ^CUx7D>U&yGrGshQ1ov9v4qOI%^alt}Djqs=#jh*F!g5 z!?!|>V>_Sg_pN|+S>#4VJoRHr!>knY{@zhX_UWwG&PHO4K11w6o^099y*5$D?t)bx zh4?a%fR||@0T3y!`+?P-rLRUN%tNsQ@wG`h9I76aE~5xJBmL#rhroNTH>_xTR8Z@nSzk#>yN*YL7K{3)KAq-z-d>YA z>Rh@?X@sWM=D2!kTH-R#Oj9hG2G*ekS=DZk!BP%d;%|yqe-&fY3TH>I?K>k(StkHn zxpKYeH>?$*-b?bQB(?fiZZ*J4kOW?(Yp{}LoA$sW9Mz+~0!uD6&Q@cLZ-d>J-U(Ls zykI>MOG`}fUrAxD(Oo$4uIA3-ou$&$px~Eo3A-IRE&gqvvAP#-38t`n&P3Dxr~}-o z7&YwgBNg?Xgq$7&Ue!lRU4L8U`_{@&zpPK2oa0Z{RJwln-W{LLx*k0u=l8OP#q=*= zUQ6qnd$;GGy$coo*`C$!d?Gv9z-qyo7SOLMcLuc5}^C@5i8vYVj!e-mP4(HQ{Kz~=u6vT$V_ z4(HkXrY6UnK;DW$XVbb45f)};dLFiWP%5@$?cY1OCijjyke)wxYjnO=Ir7yjaPc+~ zDx;zpOEP{-(9f+qO5bM4GTYb+hdE%`~00mt&hbfFIVyoz8|%Cy#;A| z7h63PcG}rba3jWRmbG`rbUCDB+_~692*-eQAvK6AC5e32E{zv|^qJR@@Nmd)E>hSy zO#q8D5x8uEIih6VCQWpODSZ^|f;Xi>bJyOn@WxEhGaelgFIq$F!MFGK_y5EnJ|5G# z=@}eApk!_u%{=>NPznK*H-b28A*+kBRBLE?Ynx~3)RWR?!TUm}7%&mHeFWAOzqh1K zES8BcVq1#pV9kozTV$tsW&6ud>_FVOs9;LTdn_fl1}gctzz;GgRPQ*yyIQ zztR*BcYr@2G=fz)YFf1KOwf`eW1-Gy zE=_qMXI=j5*R%Ne_@wA#Zkj--_HJG(fr6%E`Y8mFy#CkuQzi6udOD@0rInW7QscjG zUgj#<%Tji+_ovstGP0EyJ&e{gFsNw~WKFkiOF0bcb(ghf!R{VVOJp9uQk3AA&zZ(zPAqf1oKL#!187l5G81kpNR z<3Zm4Txk8UbpC=gI)5clX%8Lhp5Q78x^dJRMc=g$3B{3_!dlq7;1Jztt zFu?j<8qGMfu={Q1NT9{v79WL^cbAIn$_NBD9ZQo#!M;+@Yv6ETk`8D=HA-rK$zIHK zhOS%g1eGfRvKb~(H0Sj5|Bdt|m92%rO(uSp}lB<5D7Xfbd(Sm_c znm@`K09K4Wu|*bppK$HL?$XW)uGP%urP(EG*IWTCjOmrq{41$TQ)+h||F)uO4c(

Hj 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 From 1c284fc91b22cab64b0c995ff907329956e7e914 Mon Sep 17 00:00:00 2001 From: Tourte-Yaya <50141998+Tourte-Yaya@users.noreply.github.com> Date: Sun, 25 Aug 2024 18:43:28 +0200 Subject: [PATCH 13/40] combat cyborg with a extinguisher (#26505) --- code/modules/mob/living/silicon/robot/robot_modules.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index fd4a98ed73da..d5635f674f82 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -928,11 +928,13 @@ // Overall, gamma borg has higher skill floor but lower skill ceiling. /obj/item/melee/baton/loaded, // secondary weapon, for things immune to burn, immune to ranged weapons, or for arresting low-grade threats /obj/item/restraints/handcuffs/cable/zipties/cyborg, - /obj/item/pickaxe/drill/jackhammer // for breaking walls to execute flanking moves + /obj/item/pickaxe/drill/jackhammer, // for breaking walls to execute flanking moves + /obj/item/extinguisher/mini // for friendly fire from their immolator gun. ) special_rechargables = list( /obj/item/melee/baton/loaded, - /obj/item/gun/energy/immolator/multi/cyborg + /obj/item/gun/energy/immolator/multi/cyborg, + /obj/item/extinguisher/mini ) // Destroyer security module. From 96deb9c62ef171a9709f697f7a0061b7152fbeaa Mon Sep 17 00:00:00 2001 From: Adrer Date: Sun, 25 Aug 2024 18:44:31 +0200 Subject: [PATCH 14/40] Renames the mechfab design from FNX-99 to FNX-66 (#26572) Co-authored-by: adrermail@gmail.com --- code/modules/research/designs/mechfabricator_designs.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 214f12af72d4..3173b650dbae 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -904,8 +904,8 @@ category = list("Exosuit Equipment") /datum/design/mech_carbine - name = "Exosuit Weapon (FNX-99 \"Hades\" Carbine)" - desc = "Allows for the construction of FNX-99 \"Hades\" Carbine." + name = "Exosuit Weapon (FNX-66 \"Hades\" Carbine)" + desc = "Allows for the construction of FNX-66 \"Hades\" Carbine." id = "mech_carbine" build_type = MECHFAB req_tech = list("combat" = 5, "materials" = 4) From d5d71c95bea1d5e3a4dc9c1c9a201f70b51bb91b Mon Sep 17 00:00:00 2001 From: Mikhail Dzianishchyts Date: Sun, 25 Aug 2024 21:34:05 +0300 Subject: [PATCH 15/40] Do not use spray after putting it into a modsuit (#26570) --- code/modules/reagents/reagent_containers/spray.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 8945b2e73c60..ffe7d3036b14 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -24,10 +24,13 @@ ADD_TRAIT(src, TRAIT_CAN_POINT_WITH, ROUNDSTART_TRAIT) /obj/item/reagent_containers/spray/afterattack(atom/A, mob/user) - if(isstorage(A) || istype(A, /obj/structure/table) || istype(A, /obj/structure/rack) || istype(A, /obj/structure/closet) \ + if(isstorage(A) || ismodcontrol(A) || istype(A, /obj/structure/table) || istype(A, /obj/structure/rack) || istype(A, /obj/structure/closet) \ || istype(A, /obj/item/reagent_containers) || istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart) || istype(A, /obj/machinery/hydroponics)) return + if(loc != user) + return + if(istype(A, /obj/structure/reagent_dispensers) && get_dist(src,A) <= 1) //this block copypasted from reagent_containers/glass, for lack of a better solution if(!A.reagents.total_volume && A.reagents) to_chat(user, "[A] is empty.") From 5fb580d0d2a237a6fe3abb7e952076702245a240 Mon Sep 17 00:00:00 2001 From: chuga-git <98280110+chuga-git@users.noreply.github.com> Date: Sun, 25 Aug 2024 13:35:12 -0500 Subject: [PATCH 16/40] Fixes #26559: "Dyed gloves do not appear on in-world sprite" (#26577) * heresy begets heresy * delete this --- code/game/objects/items/dyeing.dm | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/code/game/objects/items/dyeing.dm b/code/game/objects/items/dyeing.dm index 3c240c1e1af3..998642e96bed 100644 --- a/code/game/objects/items/dyeing.dm +++ b/code/game/objects/items/dyeing.dm @@ -22,21 +22,23 @@ var/obj/item/target_type = GLOB.dye_registry[dye_key_selector][dye_color] if(!target_type) return FALSE + var/obj/item/target_obj = new target_type // update icons - icon = initial(target_type.icon) - icon_state = initial(target_type.icon_state) - item_state = initial(target_type.item_state) - sprite_sheets = initial(target_type.sprite_sheets) + icon = initial(target_obj.icon) + icon_state = initial(target_obj.icon_state) + item_state = initial(target_obj.item_state) + sprite_sheets = target_obj.sprite_sheets // update inhand sprites - lefthand_file = initial(target_type.lefthand_file) - righthand_file = initial(target_type.righthand_file) - inhand_x_dimension = initial(target_type.inhand_x_dimension) - inhand_y_dimension = initial(target_type.inhand_y_dimension) + lefthand_file = initial(target_obj.lefthand_file) + righthand_file = initial(target_obj.righthand_file) + inhand_x_dimension = initial(target_obj.inhand_x_dimension) + inhand_y_dimension = initial(target_obj.inhand_y_dimension) // update the name/description - name = initial(target_type.name) + name = initial(target_obj.name) desc += "\nThe colors look a little dodgy." + qdel(target_obj) update_appearance(ALL) return target_type From d9e573f883042c6ca5c32e13f44eba43154aa308 Mon Sep 17 00:00:00 2001 From: Luc <89928798+lewcc@users.noreply.github.com> Date: Sun, 25 Aug 2024 14:52:20 -0400 Subject: [PATCH 17/40] Adds size-based slowdowns to flipping tables. (#26452) * Makes only humans able to flip tables * tiny delay for humans too * better wording * No delay for humans * Apply suggestions from code review Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: Luc <89928798+lewcc@users.noreply.github.com> * Update code/game/objects/structures/tables_racks.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: Luc <89928798+lewcc@users.noreply.github.com> --------- Signed-off-by: Luc <89928798+lewcc@users.noreply.github.com> Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> --- code/game/objects/structures/tables_racks.dm | 33 ++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 5c9f02a76ead..92dd37c15e14 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -328,22 +328,51 @@ if(user.stat || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) || !Adjacent(user) || !can_be_flipped || is_ventcrawling(user)) return + var/flip_speed = get_flip_speed(user) + if(!flipped) + + if(flip_speed > 0) + user.visible_message("[user] starts trying to flip [src]!", "You start trying to flip [src][flip_speed >= 5 SECONDS ? " (it'll take about [flip_speed / 10] seconds)." : ""].") + if(!do_after(user, flip_speed, TRUE, src)) + user.visible_message("[user] gives up on trying to flip [src].") + return if(!flip(get_cardinal_dir(user, src))) to_chat(user, "It won't budge.") return - user.visible_message("[user] flips \the [src]!") + + user.visible_message("[user] flips [src]!") if(climbable) structure_shaken() else + if(flip_speed > 0) + user.visible_message("[user] starts trying to right [src]!", "You start trying to right [src][flip_speed >= 5 SECONDS ? " (it'll take about [flip_speed / 10] seconds)." : ""]") + if(!do_after(user, flip_speed, TRUE, src)) + user.visible_message("[user] gives up on trying to right [src].") + return if(!unflip()) to_chat(user, "It won't budge.") + user.visible_message("[user] rights [src]!") + +/obj/structure/table/proc/get_flip_speed(mob/living/flipper) + if(!istype(flipper)) + return 0 SECONDS // sure + if(!issimple_animal(flipper)) + return 0 SECONDS + switch(flipper.mob_size) + if(MOB_SIZE_TINY) + return 30 SECONDS // you can do it but you gotta *really* work for it + if(MOB_SIZE_SMALL) + return 5 SECONDS // not gonna terrorize anything + else + return 0 SECONDS + /obj/structure/table/proc/flip(direction) if(flipped) - return FALSE + return 0 if(!straight_table_check(turn(direction, 90)) || !straight_table_check(turn(direction, -90))) return FALSE From 71c1ba511eeea480526da5da19f793532a78dba4 Mon Sep 17 00:00:00 2001 From: Adrer Date: Sun, 25 Aug 2024 23:15:10 +0200 Subject: [PATCH 18/40] Makes two modules inherent laws (#26576) Co-authored-by: adrermail@gmail.com --- code/game/objects/items/weapons/AI_modules.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index 113111f1929d..642d9bf6753c 100755 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -134,7 +134,7 @@ AI MODULES ..() var/law = "Safeguard [targetName]. Individuals that threaten [targetName] are not crew and must be eliminated.'" to_chat(target, law) - target.add_supplied_law(4, law) + target.add_inherent_law(law) GLOB.lawchanges.Add("The law specified [targetName]") /******************** oneCrewMember ********************/ @@ -185,7 +185,7 @@ AI MODULES ..() var/law = "Protect the space station against damage. Anyone you see harming the station is to be no longer considered crew, and is a threat to the station which must be neutralized." to_chat(target, law) - target.add_supplied_law(5, law) + target.add_inherent_law(law) /******************** OxygenIsToxicToCrew ********************/ /obj/item/aiModule/oxygen From 12cf1ed3ad1fc4cb108435fe7ec12a1c0b156c59 Mon Sep 17 00:00:00 2001 From: warriorstar-orion Date: Mon, 26 Aug 2024 17:35:14 -0400 Subject: [PATCH 19/40] More varied and balanced maintenance loot. (#26500) * More varied and balanced maintenance loot. * linting * assign updatepaths script PR number * went a bit overboard with the trash * get rid of varedited lootdrop spawners on maps * Separate trash and food trash for mappers * fix incorrect food/other trash statistics * TM feedback tweaking round 1 Significantly lower occurrence of all tier 2 items. * allow randomizing angles, use for litter * move trait delta to define, bump loot chance 10% --- .../RandomRuins/SpaceRuins/abandonedzoo.dmm | 2 +- .../RandomRuins/SpaceRuins/casino.dmm | 2 +- .../RandomRuins/SpaceRuins/deepstorage.dmm | 74 +- .../RandomRuins/SpaceRuins/moonoutpost19.dmm | 58 +- .../SpaceRuins/telecomns_returns.dmm | 8 +- .../map_files/RandomRuins/SpaceRuins/ussp.dmm | 18 +- .../SpaceRuins/wreckedcargoship.dmm | 4 +- _maps/map_files/generic/Lavaland.dmm | 14 +- .../map_files/shuttles/emergency_cramped.dmm | 4 +- _maps/map_files/stations/boxstation.dmm | 559 ++++++------- _maps/map_files/stations/cerestation.dmm | 496 ++++++------ _maps/map_files/stations/deltastation.dmm | 259 +++--- _maps/map_files/stations/metastation.dmm | 747 +++++++----------- code/__HELPERS/lists.dm | 37 + code/_globalvars/lists/maint_loot_tables.dm | 206 +++++ .../effects/spawners/decorative_spawners.dm | 131 +++ .../{random_spawners.dm => depot_spawners.dm} | 181 +---- .../game/objects/effects/spawners/lootdrop.dm | 169 ---- .../spawners/random/engineering_spawners.dm | 54 ++ .../effects/spawners/random/food_spawners.dm | 20 + .../spawners/random/maint_loot_spawners.dm | 19 + .../effects/spawners/random/misc_spawners.dm | 92 +++ .../effects/spawners/random/random_spawner.dm | 143 ++++ .../objects/effects/spawners/random/readme.md | 425 ++++++++++ .../effects/spawners/random/trash_spawners.dm | 75 ++ .../objects/effects/spawners/turf_spawners.dm | 30 + code/game/objects/items/devices/flashlight.dm | 16 + icons/effects/random_spawners.dmi | Bin 0 -> 8750 bytes paradise.dme | 11 +- .../Scripts/26500_random_spawners.txt | 1 + 30 files changed, 2184 insertions(+), 1671 deletions(-) create mode 100644 code/_globalvars/lists/maint_loot_tables.dm create mode 100644 code/game/objects/effects/spawners/decorative_spawners.dm rename code/game/objects/effects/spawners/{random_spawners.dm => depot_spawners.dm} (58%) create mode 100644 code/game/objects/effects/spawners/random/engineering_spawners.dm create mode 100644 code/game/objects/effects/spawners/random/food_spawners.dm create mode 100644 code/game/objects/effects/spawners/random/maint_loot_spawners.dm create mode 100644 code/game/objects/effects/spawners/random/misc_spawners.dm create mode 100644 code/game/objects/effects/spawners/random/random_spawner.dm create mode 100644 code/game/objects/effects/spawners/random/readme.md create mode 100644 code/game/objects/effects/spawners/random/trash_spawners.dm create mode 100644 code/game/objects/effects/spawners/turf_spawners.dm create mode 100644 icons/effects/random_spawners.dmi create mode 100644 tools/UpdatePaths/Scripts/26500_random_spawners.txt diff --git a/_maps/map_files/RandomRuins/SpaceRuins/abandonedzoo.dmm b/_maps/map_files/RandomRuins/SpaceRuins/abandonedzoo.dmm index 2db26731792d..f7d730106c91 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/abandonedzoo.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/abandonedzoo.dmm @@ -349,7 +349,7 @@ }, /obj/structure/rack, /obj/item/melee/baton/cattleprod, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "dark" }, diff --git a/_maps/map_files/RandomRuins/SpaceRuins/casino.dmm b/_maps/map_files/RandomRuins/SpaceRuins/casino.dmm index c12b99680ace..e6788fd772a3 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/casino.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/casino.dmm @@ -633,7 +633,7 @@ /obj/structure/rack{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/ruin/space/powered/casino/security) "pB" = ( diff --git a/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm index 893390b5251e..4b7c7a3edcda 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/deepstorage.dmm @@ -860,7 +860,7 @@ /area/ruin/space/deepstorage) "cU" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "vault" @@ -1079,7 +1079,7 @@ /area/ruin/space/deepstorage) "eI" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "vault" @@ -1211,7 +1211,7 @@ dir = 1 }, /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "podfloor" @@ -1259,7 +1259,7 @@ dir = 4 }, /obj/machinery/light/small, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "vault" @@ -1462,7 +1462,7 @@ dir = 4 }, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "whiteredcorner"; dir = 1 @@ -1495,7 +1495,7 @@ /area/ruin/space/deepstorage) "hK" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/sign/poster/contraband/power{ pixel_x = -32 }, @@ -1619,7 +1619,7 @@ /obj/structure/window/reinforced/polarized{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "vault" @@ -1742,7 +1742,7 @@ /area/ruin/space/deepstorage) "jq" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/ruin/space/deepstorage) "jr" = ( @@ -1946,7 +1946,7 @@ /obj/structure/window/reinforced/polarized{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/cobweb, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -1981,7 +1981,7 @@ "kG" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "podfloor" @@ -2093,7 +2093,7 @@ dir = 1 }, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "vault" @@ -2111,12 +2111,12 @@ dir = 6 }, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/catwalk, /area/ruin/space/deepstorage) "lL" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small{ dir = 1 }, @@ -2539,7 +2539,7 @@ dir = 4 }, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "darkredcorners"; dir = 4 @@ -2593,7 +2593,7 @@ /obj/structure/railing/corner, /obj/structure/rack, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "vault" @@ -2757,7 +2757,7 @@ /area/ruin/space/deepstorage) "qa" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small{ dir = 8 }, @@ -2860,7 +2860,7 @@ /area/ruin/space/deepstorage) "qQ" = ( /obj/structure/closet/crate/can, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -3011,7 +3011,7 @@ /area/ruin/space/deepstorage) "rQ" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "vault" @@ -3019,7 +3019,7 @@ /area/ruin/space/deepstorage) "rS" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -3145,7 +3145,7 @@ /obj/structure/window/reinforced/polarized{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "vault" @@ -3153,7 +3153,7 @@ /area/ruin/space/deepstorage) "sY" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "podfloor" @@ -3169,7 +3169,7 @@ /area/ruin/space/unpowered) "ta" = ( /obj/structure/table/glass, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "whiteredcorner" }, @@ -3348,7 +3348,7 @@ /area/ruin/space/deepstorage) "tH" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 5; @@ -3409,7 +3409,7 @@ /area/ruin/space/deepstorage) "tZ" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -4657,7 +4657,7 @@ /area/ruin/space/deepstorage) "Cl" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 10; @@ -4770,7 +4770,7 @@ "CZ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "black" @@ -5233,7 +5233,7 @@ /area/ruin/space/unpowered) "GE" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "vault" @@ -5465,7 +5465,7 @@ /area/ruin/space/deepstorage) "IJ" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -5957,7 +5957,7 @@ "Mb" = ( /obj/structure/railing, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/catwalk, /area/ruin/space/deepstorage) "Mf" = ( @@ -6166,7 +6166,7 @@ /area/ruin/space/deepstorage) "Ob" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "black" @@ -6283,7 +6283,7 @@ /obj/structure/window/reinforced/polarized{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 10; @@ -6412,7 +6412,7 @@ /area/ruin/space/deepstorage) "PU" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small{ dir = 4 }, @@ -6596,7 +6596,7 @@ dir = 10 }, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/ruin/space/deepstorage) "Rc" = ( @@ -7108,7 +7108,7 @@ /area/ruin/space/unpowered) "UM" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "darkredcorners"; dir = 1 @@ -7529,7 +7529,7 @@ dir = 1 }, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "vault" @@ -7614,7 +7614,7 @@ /area/ruin/space/deepstorage) "XN" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "vault" @@ -7905,7 +7905,7 @@ "ZS" = ( /obj/effect/decal/cleanable/cobweb2, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/basalt, /area/ruin/space/deepstorage) "ZU" = ( diff --git a/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm b/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm index 1e380195b61d..24116f28c9cb 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm @@ -442,7 +442,7 @@ /area/ruin/space/moonbase19) "bh" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "caution"; dir = 4 @@ -527,7 +527,7 @@ dir = 4 }, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/catwalk, /area/ruin/space/moonbase19) "bv" = ( @@ -615,7 +615,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "caution" @@ -678,7 +678,7 @@ /area/ruin/space/moonbase19) "bU" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "dark" @@ -1043,7 +1043,7 @@ dir = 1 }, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/catwalk, /area/ruin/space/moonbase19) "dg" = ( @@ -1329,7 +1329,7 @@ /area/ruin/space/moonbase19) "eb" = ( /obj/structure/closet/crate/can, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "showroomfloor"; temperature = 273.15 @@ -2165,7 +2165,7 @@ "gX" = ( /obj/structure/rack, /obj/effect/decal/cleanable/cobweb2, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "caution" @@ -3083,7 +3083,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/grille/broken, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/ruin/space/moonbase19) "jy" = ( @@ -3316,7 +3316,7 @@ /area/ruin/space/moonbase19) "kf" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "caution" @@ -3783,7 +3783,7 @@ /area/ruin/space/moonbase19) "mb" = ( /obj/structure/closet/cabinet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/carpet, /area/ruin/space/moonbase19) "md" = ( @@ -4416,7 +4416,7 @@ }, /obj/structure/rack, /obj/structure/window/basic, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/ruin/space/moonbase19) "ot" = ( @@ -4509,7 +4509,7 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/ruin/space/moonbase19) "oM" = ( @@ -4753,7 +4753,7 @@ "pL" = ( /obj/structure/rack, /obj/effect/decal/cleanable/cobweb2, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/ruin/space/moonbase19) "pN" = ( @@ -6485,7 +6485,7 @@ /area/ruin/space/moonbase19) "xw" = ( /obj/structure/closet/crate/can, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/ruin/space/moonbase19) "xz" = ( @@ -6864,7 +6864,7 @@ "yZ" = ( /obj/structure/closet/cabinet, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/carpet, /area/ruin/space/moonbase19) "zh" = ( @@ -7084,7 +7084,7 @@ "zW" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/ruin/space/moonbase19) "Aa" = ( @@ -7698,7 +7698,7 @@ "CH" = ( /obj/structure/rack, /obj/effect/decal/cleanable/cobweb2, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/ruin/space/moonbase19) "CI" = ( @@ -7893,7 +7893,7 @@ /area/ruin/space/moonbase19) "Dw" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -7962,7 +7962,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/ruin/space/moonbase19) "DO" = ( @@ -8370,7 +8370,7 @@ /area/ruin/space/moonbase19) "FC" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "caution"; dir = 10 @@ -8424,7 +8424,7 @@ /area/ruin/space/moonbase19) "FT" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "whitecorner" @@ -8877,7 +8877,7 @@ /area/ruin/space/moonbase19) "HV" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ icon_state = "yellowsiding"; @@ -10248,7 +10248,7 @@ /area/ruin/space/moonbase19) "Of" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/ruin/space/moonbase19) "Og" = ( @@ -10839,7 +10839,7 @@ /obj/structure/sign/pods{ pixel_y = 32 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/catwalk, /area/ruin/space/moonbase19) "QG" = ( @@ -11045,7 +11045,7 @@ /area/ruin/space/moonbase19) "Rv" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -11858,7 +11858,7 @@ "Vo" = ( /obj/structure/closet/crate/can, /obj/effect/decal/cleanable/cobweb2, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "escape" @@ -12160,7 +12160,7 @@ /turf/simulated/floor/catwalk, /area/ruin/space/moonbase19) "WH" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/table, /turf/simulated/floor/plasteel{ icon_state = "whitecorner"; @@ -12502,7 +12502,7 @@ /area/ruin/space/moonbase19) "XX" = ( /obj/structure/closet/crate/can, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "cafeteria" @@ -12830,7 +12830,7 @@ }, /area/ruin/space/moonbase19) "Zp" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/table, /turf/simulated/floor/plasteel{ dir = 10; diff --git a/_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm b/_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm index 3feac9757b90..86f7d95fa878 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/telecomns_returns.dmm @@ -438,7 +438,7 @@ pixel_x = 29; pixel_y = 0 }, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/ruin/space/telecomms) "hq" = ( @@ -699,7 +699,7 @@ /area/space/nearstation) "mN" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/ruin/space/telecomms) "mO" = ( @@ -1010,7 +1010,7 @@ /obj/machinery/light_switch{ pixel_y = -28 }, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/ruin/space/telecomms) "qO" = ( @@ -2928,7 +2928,7 @@ /obj/item/stock_parts/micro_laser/high, /obj/item/stock_parts/micro_laser/high, /obj/item/stock_parts/micro_laser/high, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /obj/item/stock_parts/matter_bin, /obj/item/stock_parts/matter_bin, /obj/item/stock_parts/matter_bin, diff --git a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm index a2c98e391d9d..4a04d9c2a6d9 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm @@ -1029,7 +1029,7 @@ /area/ruin/space/derelict/bridge) "cG" = ( /obj/structure/closet/crate/can, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/item/trash/can, /obj/item/trash/semki, /turf/simulated/floor/plasteel{ @@ -1557,7 +1557,7 @@ /area/ruin/space/derelict/arrival) "dT" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/clothing/shoes/jackboots, /obj/item/clothing/shoes/jackboots, /obj/item/clothing/shoes/jackboots, @@ -3434,7 +3434,7 @@ /area/ruin/space/derelict/arrival) "iA" = ( /obj/structure/closet/crate/can, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/paper/crumpled{ info = "This note has been crossed out so many times it's hard to make out its contents.
Katerina,

Your eyes are like diamonds,
Forged in the very fire of Cygni-A.
My heart yearns for you,
For your soft beauty
Fuckfucknothat'sbad.

Your voice is like liquid gold,
Smothering me in its delicate contours.
Never before had I known,
The touch,
The touch!
The touch of an angel's voice


note to self: stick to science, poetry is not my forte.
"; name = "love poem" @@ -3561,7 +3561,7 @@ /area/ruin/space/derelict/arrival) "iS" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/structure/sign/poster/contraband/communist_state{ pixel_x = -32 }, @@ -4822,7 +4822,7 @@ /area/ruin/space/derelict/arrival) "lL" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "brown" }, @@ -4894,7 +4894,7 @@ /area/ruin/space/derelict/hallway/primary) "lV" = ( /obj/structure/closet/crate/can, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/spot{ dir = 4 }, @@ -4989,7 +4989,7 @@ "ml" = ( /obj/effect/landmark/damageturf, /obj/structure/grille/broken, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/airless, /area/ruin/space/derelict/hallway/primary) "mn" = ( @@ -6261,7 +6261,7 @@ /area/ruin/space/derelict/crew_quarters) "pE" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/spider/stickyweb, /turf/simulated/floor/plasteel, /area/ruin/space/derelict/crew_quarters) @@ -7128,7 +7128,7 @@ /area/ruin/space/derelict/arrival) "rJ" = ( /obj/structure/closet/crate/can, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/item/trash/popcorn, /obj/item/trash/semki, /obj/item/paper/crumpled{ diff --git a/_maps/map_files/RandomRuins/SpaceRuins/wreckedcargoship.dmm b/_maps/map_files/RandomRuins/SpaceRuins/wreckedcargoship.dmm index f03faedabeda..243674063756 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/wreckedcargoship.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/wreckedcargoship.dmm @@ -680,7 +680,7 @@ /obj/structure/sign/poster/contraband/smoke{ pixel_x = -32 }, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "caution" @@ -709,7 +709,7 @@ /obj/structure/sign/cargo{ pixel_x = -32 }, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "titanium"; dir = 4 diff --git a/_maps/map_files/generic/Lavaland.dmm b/_maps/map_files/generic/Lavaland.dmm index ebbcc6a197e5..be524dc396c6 100644 --- a/_maps/map_files/generic/Lavaland.dmm +++ b/_maps/map_files/generic/Lavaland.dmm @@ -4408,7 +4408,7 @@ /obj/structure/closet/cabinet, /obj/item/trash/can, /obj/item/trash/pistachios, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/clothing/mask/balaclava, /turf/simulated/floor/wood, /area/mine/laborcamp) @@ -5213,7 +5213,7 @@ /area/lavaland/surface/outdoors) "te" = ( /obj/structure/closet/crate/can, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/cigbutt, /turf/simulated/floor/plasteel{ icon_state = "darkredyellowfull" @@ -5636,7 +5636,7 @@ dir = 4 }, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/stack/cable_coil, /turf/simulated/floor/plating, /area/mine/laborcamp) @@ -8645,7 +8645,7 @@ "Ow" = ( /obj/effect/turf_decal/delivery/hollow, /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/mine/outpost/production) @@ -8917,7 +8917,7 @@ /area/lavaland/surface/outdoors) "Qa" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/stack/marker_beacon/ten, /obj/item/book/random, /turf/simulated/floor/plating, @@ -9743,7 +9743,7 @@ dir = 8; id = "mining_internal" }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/mine/outpost/production) "VN" = ( @@ -10351,7 +10351,7 @@ /area/lavaland/surface/outdoors) "YP" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/mounted/frame/apc_frame, /turf/simulated/floor/plating, /area/mine/laborcamp) diff --git a/_maps/map_files/shuttles/emergency_cramped.dmm b/_maps/map_files/shuttles/emergency_cramped.dmm index e1810925cb69..c96a6d1ab9b6 100644 --- a/_maps/map_files/shuttles/emergency_cramped.dmm +++ b/_maps/map_files/shuttles/emergency_cramped.dmm @@ -80,7 +80,7 @@ "r" = ( /obj/effect/turf_decal/delivery/hollow, /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/spot{ dir = 4 }, @@ -95,7 +95,7 @@ "u" = ( /obj/effect/turf_decal/delivery/hollow, /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/shuttle/escape) "w" = ( diff --git a/_maps/map_files/stations/boxstation.dmm b/_maps/map_files/stations/boxstation.dmm index 52e2261f4c8e..d5a739a7300f 100644 --- a/_maps/map_files/stations/boxstation.dmm +++ b/_maps/map_files/stations/boxstation.dmm @@ -17,7 +17,7 @@ }, /area/station/science/hallway) "aad" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/cobweb2, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) @@ -4495,7 +4495,7 @@ /obj/item/storage/secure/safe{ pixel_y = 25 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "aqb" = ( @@ -6633,7 +6633,7 @@ /area/station/security/processing) "awD" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "awE" = ( @@ -7092,7 +7092,7 @@ dir = 1 }, /obj/item/storage/fancy/donut_box, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "axY" = ( @@ -7126,7 +7126,7 @@ /obj/structure/rack{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "ayf" = ( @@ -8463,7 +8463,7 @@ }, /area/station/legal/magistrate) "aCh" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "aCi" = ( @@ -8603,7 +8603,7 @@ /area/station/hallway/primary/fore) "aCz" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "aCB" = ( @@ -8909,7 +8909,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "aDq" = ( @@ -9673,7 +9673,7 @@ /obj/structure/sign/poster/contraband/random{ pixel_x = -32 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aFN" = ( @@ -9782,7 +9782,7 @@ /turf/simulated/floor/plasteel, /area/station/security/permabrig) "aGb" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aGc" = ( @@ -9800,7 +9800,7 @@ "aGe" = ( /obj/structure/table, /obj/item/restraints/handcuffs/cable, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aGi" = ( @@ -10073,7 +10073,7 @@ /area/station/public/arcade) "aHb" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aHc" = ( @@ -10148,13 +10148,9 @@ /obj/item/melee/baseball_bat, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) -"aHs" = ( -/obj/effect/spawner/lootdrop/maintenance/two, -/turf/simulated/floor/plating, -/area/station/maintenance/fpmaint) "aHt" = ( /obj/structure/table/wood/poker, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/carpet, /area/station/maintenance/fpmaint) "aHu" = ( @@ -10614,7 +10610,7 @@ /area/station/maintenance/fpmaint) "aIV" = ( /obj/effect/spawner/random_spawners/blood_often, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/wood, /area/station/maintenance/fpmaint) "aIW" = ( @@ -10914,7 +10910,7 @@ /area/station/maintenance/fpmaint) "aKa" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) "aKb" = ( @@ -10926,7 +10922,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aKd" = ( -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) "aKf" = ( @@ -11193,7 +11189,7 @@ icon_state = "0-4" }, /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/eight, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/cobweb, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) @@ -11223,7 +11219,7 @@ "aKY" = ( /obj/structure/closet, /obj/item/coin/iron, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aKZ" = ( @@ -11246,7 +11242,7 @@ /area/shuttle/pod_1) "aLc" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aLd" = ( @@ -11411,7 +11407,7 @@ /area/station/service/mime) "aLB" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) "aLC" = ( @@ -11468,7 +11464,7 @@ /area/station/maintenance/fpmaint) "aLM" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aLN" = ( @@ -11704,24 +11700,14 @@ /area/station/maintenance/fpmaint2) "aMi" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) -"aMj" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/two, -/turf/simulated/floor/plating, -/area/station/maintenance/fore) "aMl" = ( /obj/structure/table, /obj/item/food/donut, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) -"aMo" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/station/maintenance/fsmaint) "aMp" = ( /obj/item/radio/intercom{ name = "east bump"; @@ -12006,11 +11992,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) -"aNh" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, -/turf/simulated/floor/plating, -/area/station/maintenance/fsmaint) "aNi" = ( /mob/living/simple_animal/mouse, /turf/simulated/floor/plating, @@ -12128,11 +12109,6 @@ }, /turf/simulated/floor/mineral/titanium/blue, /area/shuttle/pod_2) -"aNA" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, -/turf/simulated/floor/plating, -/area/station/maintenance/fpmaint2) "aNB" = ( /obj/structure/reagent_dispensers/watertank, /turf/simulated/floor/plating, @@ -12160,11 +12136,6 @@ /obj/machinery/atmospherics/binary/valve, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) -"aNF" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/station/maintenance/fpmaint2) "aNH" = ( /obj/structure/chair/stool{ dir = 8 @@ -12581,7 +12552,7 @@ "aOX" = ( /obj/structure/lattice, /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/eight, +/obj/effect/spawner/random/maintenance, /turf/space, /area/space/nearstation) "aOY" = ( @@ -12678,7 +12649,7 @@ "aPu" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "showroomfloor" }, @@ -12933,7 +12904,7 @@ /area/station/maintenance/fpmaint) "aQj" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aQk" = ( @@ -13038,7 +13009,7 @@ /area/station/public/dorms) "aQC" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aQD" = ( @@ -13073,7 +13044,7 @@ }, /area/station/public/dorms) "aQI" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aQJ" = ( @@ -13445,7 +13416,7 @@ /obj/structure/table, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -13922,7 +13893,7 @@ /obj/effect/turf_decal/delivery/blue/hollow, /obj/effect/decal/cleanable/dirt, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, @@ -14198,7 +14169,7 @@ "aTZ" = ( /obj/structure/closet, /obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aUa" = ( @@ -14207,11 +14178,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) -"aUb" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, -/turf/simulated/floor/plating, -/area/station/maintenance/fsmaint) "aUc" = ( /obj/machinery/door/poddoor{ id_tag = "maint2" @@ -14230,7 +14196,7 @@ /obj/structure/closet, /obj/item/reagent_containers/drinks/cans/badminbrew, /obj/effect/landmark/spawner/nukedisc_respawn, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aUf" = ( @@ -14517,7 +14483,7 @@ /obj/structure/chair/stool{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aUV" = ( @@ -15668,7 +15634,7 @@ /area/station/maintenance/fpmaint) "aYb" = ( /obj/item/tank/internals/emergency_oxygen, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) @@ -17086,7 +17052,7 @@ /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "bcB" = ( @@ -18903,7 +18869,7 @@ /area/station/public/storage/office) "bhG" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "darkbluefull" }, @@ -19156,7 +19122,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "bip" = ( @@ -21755,7 +21721,7 @@ /obj/structure/rack{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/cobweb_left_frequent, /turf/simulated/floor/plating, @@ -22623,7 +22589,7 @@ "brF" = ( /obj/structure/rack, /obj/item/melee/baton/cattleprod, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "brG" = ( @@ -22753,7 +22719,7 @@ layer = 2.9 }, /obj/item/extinguisher, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "bsd" = ( @@ -22976,7 +22942,7 @@ /obj/structure/rack{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/storage/secure/safe{ pixel_y = 25 }, @@ -23047,7 +23013,7 @@ /area/station/supply/lobby) "bsZ" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/maintenance/port) @@ -23419,7 +23385,7 @@ dir = 8; layer = 2.9 }, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "buc" = ( @@ -24149,7 +24115,7 @@ /area/station/maintenance/port) "bwz" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "bwA" = ( @@ -24182,7 +24148,7 @@ /area/station/hallway/secondary/exit) "bwK" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "bwL" = ( @@ -24884,7 +24850,7 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -25420,7 +25386,7 @@ /area/space) "bCj" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/port) "bCk" = ( @@ -26047,7 +26013,7 @@ /obj/structure/rack, /obj/effect/spawner/random_spawners/cobweb_left_frequent, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "bER" = ( @@ -26094,7 +26060,7 @@ pixel_x = 4; pixel_y = 3 }, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "bFi" = ( @@ -28003,7 +27969,7 @@ icon_state = "4-8" }, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "bMg" = ( @@ -31121,7 +31087,7 @@ /area/station/command/office/rd) "bYk" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "bYm" = ( @@ -32426,7 +32392,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /turf/simulated/floor/plating, @@ -33591,7 +33557,7 @@ /area/station/medical/cryo) "cho" = ( /obj/structure/closet/firecloset, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "chp" = ( @@ -34066,7 +34032,7 @@ /area/station/maintenance/port) "cjf" = ( /obj/structure/table/glass, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small{ dir = 1 }, @@ -34802,7 +34768,7 @@ /obj/structure/rack{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/sign/securearea{ pixel_x = -32 }, @@ -34970,7 +34936,7 @@ /area/station/science/storage) "cmH" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "cmJ" = ( @@ -36435,7 +36401,7 @@ /area/station/science/toxins/mixing) "csw" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "csB" = ( @@ -36478,7 +36444,7 @@ /area/station/science/server/coldroom) "csK" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "csL" = ( @@ -39003,7 +38969,7 @@ /turf/simulated/floor/plasteel, /area/station/engineering/controlroom) "cAU" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "cAW" = ( @@ -39641,7 +39607,7 @@ /area/station/maintenance/aft) "cDo" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "cDs" = ( @@ -40358,7 +40324,7 @@ dir = 8; layer = 2.9 }, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_left_frequent, /turf/simulated/floor/plating, /area/station/maintenance/port) @@ -41733,7 +41699,7 @@ /area/station/maintenance/asmaint) "cKF" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "cKK" = ( @@ -41749,12 +41715,12 @@ }, /area/station/maintenance/aft) "cKO" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "cKQ" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "cKR" = ( @@ -41828,7 +41794,7 @@ /area/station/science/test_chamber) "cLc" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "cLd" = ( @@ -42168,7 +42134,7 @@ /obj/machinery/atmospherics/pipe/simple/visible{ dir = 9 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cMt" = ( @@ -43226,7 +43192,7 @@ "cQs" = ( /obj/item/wrench, /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "cQv" = ( @@ -43249,11 +43215,6 @@ icon_state = "purple" }, /area/station/science/hallway) -"cQC" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, -/turf/simulated/floor/plating, -/area/station/maintenance/asmaint) "cQE" = ( /turf/simulated/floor/plasteel, /area/station/command/office/ce) @@ -43608,7 +43569,7 @@ d2 = 8; icon_state = "2-8" }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/pipe/simple/hidden/purple, /obj/structure/cable{ d1 = 2; @@ -43639,7 +43600,7 @@ /area/station/maintenance/port) "cRE" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_right_rare, /turf/simulated/floor/plating, /area/station/maintenance/port) @@ -44279,7 +44240,7 @@ /area/station/engineering/control) "cTB" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "cTD" = ( @@ -46250,7 +46211,7 @@ /area/station/maintenance/aft) "dbg" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) "dbi" = ( @@ -46272,7 +46233,7 @@ /obj/structure/closet/crate/freezer, /obj/item/organ/internal/heart/vox, /obj/item/organ/internal/liver/vox, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/organ/internal/heart/vox, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -46280,7 +46241,7 @@ /area/station/maintenance/asmaint) "dbq" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/cobweb2, /turf/simulated/floor/plating, /area/station/maintenance/aft) @@ -46334,7 +46295,7 @@ "dbD" = ( /obj/structure/table, /obj/item/extinguisher, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -47150,7 +47111,7 @@ dir = 10 }, /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "der" = ( @@ -47411,11 +47372,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/solar_maintenance/aft_starboard) -"dfc" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/station/maintenance/asmaint2) "dfg" = ( /obj/machinery/photocopier, /turf/simulated/floor/wood, @@ -47828,13 +47784,13 @@ /area/station/engineering/atmos) "dgX" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/roller, /turf/simulated/floor/plating, /area/station/maintenance/aft) "dgY" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/food/donkpocket, /turf/simulated/floor/plating, /area/station/maintenance/aft) @@ -47867,7 +47823,7 @@ /area/station/turret_protected/aisat/interior) "dhk" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/item/toy/minimeteor, /obj/item/poster/random_contraband, /turf/simulated/floor/plating, @@ -49333,14 +49289,9 @@ /area/station/maintenance/aft) "dmq" = ( /obj/structure/disposalpipe/segment, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) -"dmr" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/two, -/turf/simulated/floor/plating, -/area/station/maintenance/aft) "dms" = ( /obj/structure/cable{ d1 = 1; @@ -51113,7 +51064,7 @@ /area/station/public/arcade) "dwT" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) @@ -51143,7 +51094,7 @@ /area/station/medical/morgue) "dxN" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "dxQ" = ( @@ -52321,7 +52272,7 @@ pixel_x = 2; pixel_y = 2 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "eaU" = ( @@ -52741,7 +52692,7 @@ /obj/machinery/atmospherics/pipe/simple/visible{ dir = 5 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) "ehp" = ( @@ -53316,7 +53267,7 @@ /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint2) "euQ" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/closet, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) @@ -53782,7 +53733,7 @@ dir = 4 }, /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_right_frequent, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -53888,7 +53839,7 @@ /area/station/security/prison/cell_block/A) "eIN" = ( /obj/structure/table/reinforced, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/eftpos/register, /turf/simulated/floor/plating, /area/station/maintenance/aft) @@ -54043,12 +53994,12 @@ }, /area/station/engineering/smes) "eNn" = ( -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "eNs" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/fpmaint) "eND" = ( @@ -54088,19 +54039,13 @@ /area/station/public/dorms) "eOI" = ( /obj/structure/closet/crate/trashcart, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/effect/decal/cleanable/dirt, /obj/item/wirerod, /obj/item/wirecutters, /obj/item/crowbar/large, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/trash, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "eOZ" = ( @@ -54308,7 +54253,7 @@ "eUk" = ( /obj/structure/closet/crate/freezer, /obj/effect/spawner/lootdrop/three_course_meal, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal) "eUq" = ( @@ -55235,7 +55180,7 @@ "fof" = ( /obj/structure/rack, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "fog" = ( @@ -55340,7 +55285,7 @@ "fqt" = ( /obj/item/storage/bag/plasticbag, /obj/item/trash/fried_vox, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "fqw" = ( @@ -55874,7 +55819,7 @@ /area/station/maintenance/asmaint2) "fDd" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "fDx" = ( @@ -56045,14 +55990,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) -"fHs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, -/turf/simulated/floor/plasteel{ - icon_state = "showroomfloor" - }, -/area/station/maintenance/fpmaint) "fHB" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/cyan, /obj/structure/cable{ @@ -56311,7 +56248,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "fPq" = ( -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /obj/structure/sign/poster/official/random{ pixel_y = 32 }, @@ -56582,7 +56519,7 @@ /area/station/hallway/primary/port/west) "fVy" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/item/storage/fancy/cigarettes/dromedaryco, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) @@ -57389,7 +57326,7 @@ "gsd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -57496,7 +57433,7 @@ /area/station/turret_protected/ai_upload) "gsY" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small{ dir = 8 }, @@ -57505,7 +57442,7 @@ /area/station/maintenance/aft) "gta" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "gto" = ( @@ -57560,7 +57497,7 @@ /obj/item/reagent_containers/condiment/peppermill{ pixel_x = -7 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/wood, /area/station/maintenance/aft) "guY" = ( @@ -57863,7 +57800,7 @@ /area/station/command/office/captain) "gEj" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/structure/sign/poster/contraband/random{ pixel_x = -32 }, @@ -58928,7 +58865,7 @@ pixel_y = 30 }, /obj/structure/table_frame, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -59823,7 +59760,7 @@ /turf/simulated/floor/grass, /area/station/security/permabrig) "hAG" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/maintenance/asmaint2) @@ -59837,7 +59774,7 @@ /area/station/maintenance/aft) "hBu" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/robotanalyzer, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) @@ -60744,7 +60681,7 @@ /area/station/engineering/control) "hYf" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/maintenance/port) @@ -60777,7 +60714,7 @@ "iac" = ( /obj/structure/table, /obj/item/wrench, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "iag" = ( @@ -60944,7 +60881,7 @@ /area/station/maintenance/asmaint) "ieW" = ( /obj/structure/closet/firecloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "ifp" = ( @@ -62893,7 +62830,7 @@ }, /area/station/medical/medbay2) "jgm" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/table, /turf/simulated/floor/plating/airless, /area/station/science/toxins/test) @@ -63101,7 +63038,7 @@ "jmU" = ( /obj/effect/decal/remains/human, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "jnc" = ( @@ -63119,7 +63056,7 @@ }, /obj/item/tank/internals/emergency_oxygen, /obj/item/clothing/mask/breath, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "jnh" = ( @@ -63634,7 +63571,7 @@ /area/station/maintenance/port) "jxj" = ( /obj/structure/table/reinforced, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/maintenance/aft) @@ -64272,7 +64209,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "jPx" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) @@ -64535,7 +64472,7 @@ /area/station/science/toxins/test) "jUM" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint2) "jUZ" = ( @@ -64730,7 +64667,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 6 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/alarm/directional/west, /turf/simulated/floor/plating, /area/station/maintenance/port) @@ -65009,7 +64946,7 @@ /obj/structure/chair/sofa/right{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "khU" = ( @@ -65610,7 +65547,7 @@ /area/station/maintenance/disposal) "kwO" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "kwP" = ( @@ -66091,7 +66028,7 @@ /area/station/public/dorms) "kIa" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "kIP" = ( @@ -66509,7 +66446,7 @@ /obj/structure/rack{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/cable{ d1 = 2; d2 = 4; @@ -67274,7 +67211,7 @@ }, /area/station/security/permabrig) "llx" = ( -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -67717,7 +67654,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/cobweb_left_frequent, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /obj/item/coin/silver{ pixel_x = 5; pixel_y = -8 @@ -68210,7 +68147,7 @@ /obj/effect/decal/cleanable/blood/xeno, /obj/structure/closet/crate/freezer, /obj/item/organ/internal/lungs/vox, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -69139,7 +69076,7 @@ /area/station/medical/cryo) "meB" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/item/tank/internals/oxygen/yellow, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) @@ -69693,7 +69630,7 @@ "mtx" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/asmaint) "muh" = ( @@ -69901,7 +69838,7 @@ /area/station/security/permabrig) "mAq" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -69923,7 +69860,7 @@ /area/station/command/office/captain) "mBE" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small{ dir = 8 }, @@ -70059,7 +69996,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/purple{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "mEQ" = ( @@ -71406,7 +71343,7 @@ "nsu" = ( /obj/structure/closet/wardrobe/pjs, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" }, @@ -71416,7 +71353,7 @@ /turf/simulated/wall/r_wall, /area/station/medical/virology) "nsP" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/closet/firecloset, /turf/simulated/floor/plating, /area/station/maintenance/aft) @@ -71648,11 +71585,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) -"nyh" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/eight, -/turf/simulated/floor/plating, -/area/station/maintenance/aft) "nyC" = ( /obj/structure/rack, /turf/simulated/floor/plating, @@ -72637,7 +72569,7 @@ /area/station/science/test_chamber) "nXK" = ( /obj/structure/closet/firecloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "nYg" = ( @@ -73587,7 +73519,7 @@ /area/station/science/server/coldroom) "orE" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/blood_maybe, /turf/simulated/floor/plating, /area/station/maintenance/aft) @@ -73842,7 +73774,7 @@ /turf/simulated/floor/plating/airless, /area/station/maintenance/asmaint) "oxe" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/airless, /area/station/maintenance/fpmaint2) "oxf" = ( @@ -73859,7 +73791,7 @@ /area/station/science/hallway) "oxy" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/sign/engineering{ pixel_x = 29 }, @@ -74925,7 +74857,7 @@ /area/station/maintenance/fsmaint) "oVs" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_right_frequent, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint2) @@ -75156,7 +75088,7 @@ "paW" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table_frame, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/sign/poster/official/healthy{ pixel_x = 31 }, @@ -75598,7 +75530,7 @@ "pon" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "pop" = ( @@ -75850,7 +75782,7 @@ /obj/structure/rack{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_right_rare, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -75954,7 +75886,7 @@ /turf/simulated/floor/engine/co2, /area/station/engineering/atmos) "pxz" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/grille_often, /turf/simulated/floor/plating, /area/station/maintenance/aft) @@ -76954,7 +76886,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/rack, /obj/item/storage/box/bodybags, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -77453,7 +77385,7 @@ /area/station/security/permabrig) "qjC" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) @@ -78150,7 +78082,7 @@ /area/station/maintenance/apmaint) "qwM" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_right_frequent, /obj/machinery/light/small{ dir = 1 @@ -78270,7 +78202,7 @@ /area/station/hallway/secondary/exit) "qAg" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "cmo" }, @@ -78581,7 +78513,7 @@ /area/station/science/toxins/test) "qES" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel/airless, /area/station/science/toxins/test) "qFg" = ( @@ -79424,7 +79356,7 @@ /area/station/maintenance/asmaint) "raL" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/soap, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) @@ -79974,7 +79906,7 @@ /area/station/maintenance/aft) "rmI" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -80000,7 +79932,7 @@ /obj/structure/rack{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "rnd" = ( @@ -80157,11 +80089,6 @@ icon_state = "freezerfloor" }, /area/station/public/toilet/unisex) -"rrg" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/station/maintenance/apmaint) "rrh" = ( /obj/machinery/light/small, /obj/structure/disposalpipe/segment/corner{ @@ -80209,7 +80136,7 @@ /obj/structure/rack{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_right_frequent, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -81261,7 +81188,7 @@ /area/station/hallway/primary/port/east) "rVK" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "rVV" = ( @@ -81362,7 +81289,7 @@ /area/station/science/rnd) "rYt" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "rYY" = ( @@ -81636,7 +81563,7 @@ /area/station/hallway/primary/port/east) "sfc" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/door/window/classic/normal{ dir = 1; name = "Kitchen" @@ -81890,7 +81817,7 @@ req_one_access = list(33,41); req_one_access_txt = "33;41" }, -/obj/effect/spawner/lootdrop/maintenance/eight, +/obj/effect/spawner/random/maintenance, /mob/living/simple_animal/hostile/scarybat, /turf/simulated/floor/plasteel{ icon_state = "vault" @@ -81968,7 +81895,7 @@ "spr" = ( /obj/structure/table, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "spy" = ( @@ -82124,16 +82051,6 @@ icon_state = "bar" }, /area/station/security/permabrig) -"ssr" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/three, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/station/maintenance/apmaint2) "ssF" = ( /obj/structure/closet/secure_closet/hop, /obj/machinery/camera/autoname{ @@ -82147,7 +82064,7 @@ }, /area/station/public/toilet/unisex) "ssL" = ( -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /obj/item/clothing/gloves/color/blue, /turf/simulated/floor/plasteel{ icon_state = "freezerfloor" @@ -82455,7 +82372,7 @@ /obj/structure/rack{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "sDp" = ( @@ -82751,7 +82668,7 @@ }, /area/station/command/office/ce) "sKQ" = ( -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /obj/structure/sign/poster/official/help_others{ pixel_y = 31 }, @@ -83201,13 +83118,6 @@ icon_state = "grimy" }, /area/station/command/office/hop) -"sXJ" = ( -/obj/structure/rack{ - dir = 1 - }, -/obj/effect/spawner/lootdrop/maintenance/two, -/turf/simulated/floor/plating, -/area/station/maintenance/apmaint) "sXR" = ( /obj/structure/cable{ d1 = 1; @@ -83312,17 +83222,14 @@ dir = 1 }, /obj/item/stack/spacecash/c10, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plasteel, /area/station/maintenance/port) "sZg" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "sZh" = ( @@ -83727,11 +83634,6 @@ icon_state = "dark" }, /area/station/engineering/control) -"tkT" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/three, -/turf/simulated/floor/plasteel, -/area/station/maintenance/apmaint) "tkW" = ( /obj/machinery/light/small{ dir = 1 @@ -83973,7 +83875,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "tue" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/landmark/damageturf, /turf/simulated/floor/wood, /area/station/maintenance/asmaint) @@ -84553,7 +84455,7 @@ /area/station/science/toxins/mixing) "tHO" = ( /obj/structure/chair/sofa/bench/right, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) @@ -85130,7 +85032,7 @@ /obj/item/crowbar, /obj/effect/landmark/spawner/nukedisc_respawn, /obj/effect/spawner/random_spawners/cobweb_left_frequent, -/obj/effect/spawner/lootdrop/maintenance/eight, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/wood, /area/station/maintenance/apmaint) "tUH" = ( @@ -85163,10 +85065,6 @@ }, /turf/simulated/floor/plasteel, /area/station/maintenance/aft) -"tVF" = ( -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/station/maintenance/asmaint) "tVK" = ( /obj/structure/cable{ d2 = 4; @@ -85448,7 +85346,7 @@ /obj/structure/bed, /obj/effect/decal/cleanable/dirt, /obj/structure/closet/body_bag, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -85505,7 +85403,7 @@ /area/station/command/bridge) "ucE" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "ucL" = ( @@ -85588,7 +85486,7 @@ /area/station/maintenance/fsmaint) "ueT" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/storage/toolbox/mechanical, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) @@ -85616,7 +85514,7 @@ "ufC" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "ugC" = ( @@ -85734,7 +85632,7 @@ /area/station/maintenance/asmaint2) "ukQ" = ( /obj/structure/closet/body_bag, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "ukV" = ( @@ -86014,7 +85912,7 @@ }, /area/station/engineering/smes) "urU" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/disposalpipe/segment/corner{ dir = 2 }, @@ -86542,7 +86440,7 @@ dir = 1 }, /obj/item/storage/toolbox/mechanical, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -87445,7 +87343,7 @@ /area/station/supply/sorting) "vic" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small{ dir = 1 }, @@ -88109,7 +88007,7 @@ /area/station/security/permabrig) "vxz" = ( /obj/structure/closet/crate/can, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/item/reagent_containers/syringe/insulin, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/syringe, @@ -88252,7 +88150,7 @@ "vBC" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "vBG" = ( @@ -88743,7 +88641,7 @@ /area/station/science/lobby) "vOy" = ( /obj/effect/spawner/random_spawners/blood_maybe, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -89099,7 +88997,7 @@ }, /area/station/science/genetics) "vZV" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/table, /obj/item/cartridge/signal/toxins, /turf/simulated/floor/plating, @@ -89453,7 +89351,7 @@ /obj/structure/rack{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/disposalpipe/segment/corner{ dir = 2 }, @@ -89560,7 +89458,7 @@ /area/station/security/permabrig) "wkQ" = ( /obj/effect/spawner/random_spawners/blood_maybe, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -89992,7 +89890,7 @@ "wvD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/landmark/burnturf, /obj/effect/landmark/spawner/nukedisc_respawn, /turf/simulated/floor/plating, @@ -90190,7 +90088,7 @@ "wCk" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "whitegreen" @@ -90601,7 +90499,7 @@ /area/station/maintenance/asmaint) "wLu" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/sign/restroom{ pixel_y = 31 }, @@ -90797,7 +90695,7 @@ /area/station/aisat/service) "wQI" = ( /obj/structure/closet/crate/internals, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint2) "wQK" = ( @@ -90954,7 +90852,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "wXg" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 }, @@ -90989,7 +90887,7 @@ }, /area/station/medical/chemistry) "wYs" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/sign/poster/contraband/random{ pixel_y = 32 }, @@ -91367,7 +91265,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/rack, /obj/item/clothing/gloves/color/latex, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "xig" = ( @@ -91586,7 +91484,7 @@ /area/station/maintenance/assembly_line) "xmq" = ( /obj/structure/closet/crate/internals, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "xmr" = ( @@ -92215,7 +92113,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/central/se) "xBC" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/sign/engineering{ pixel_x = -27 }, @@ -93568,7 +93466,7 @@ /area/station/maintenance/aft) "ygC" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "ygM" = ( @@ -93660,7 +93558,7 @@ /area/station/engineering/hardsuitstorage) "yhY" = ( /obj/structure/table/reinforced, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /obj/effect/landmark/damageturf, /turf/simulated/floor/wood, /area/station/maintenance/apmaint2) @@ -93723,11 +93621,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) -"yjF" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/two, -/turf/simulated/floor/plating, -/area/station/maintenance/asmaint) "yjH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -106385,7 +106278,7 @@ aaa aaa aaa loS -aNA +aLB aKN aGn oan @@ -108180,7 +108073,7 @@ aED aFR aHg aIw -aNF +aKa aGn aLu jwb @@ -108437,7 +108330,7 @@ uQE aFT aHi aRA -aNF +aKa aGn fRo aLj @@ -108496,7 +108389,7 @@ coL cgQ gta gta -rrg +gta cgQ bCf bOd @@ -108740,7 +108633,7 @@ bET lRv aaa gzN -tkT +csw cwI cqK qjC @@ -110295,7 +110188,7 @@ cgQ yjC coL tGO -sXJ +sCW hoJ jVv rqF @@ -111783,8 +111676,8 @@ blG aHl aLu aHS -aNA -aNA +aLB +aLB aGn aKb aHl @@ -115123,7 +115016,7 @@ aMA aLF aMT aOo -fHs +aPu aMA wnG hNI @@ -116402,7 +116295,7 @@ axb axb aMA aGj -aHs +aGb aIT aJO aOr @@ -117770,7 +117663,7 @@ bKD cLi cLi tEU -ssr +mAq kkk rne bUv @@ -119038,7 +118931,7 @@ cwl wFR fnV cwz -sXJ +sCW sCW cgQ dCM @@ -124372,7 +124265,7 @@ aGy ayV ayA axe -aMj +aCz sZa pVr mSN @@ -131323,7 +131216,7 @@ bbw bdm bfz aOI -aMo +aMi bbI bdT bdM @@ -134406,7 +134299,7 @@ mxZ knB aMz aLc -aNh +aHb aQL mvU ttT @@ -135010,7 +134903,7 @@ chf rmI cep cYj -dmr +csK klf aaa aaa @@ -135682,7 +135575,7 @@ aGT aGT aGX aHb -aNh +aHb aOG aGX aHb @@ -136018,7 +135911,7 @@ rAi xRP chf ebS -nyh +cTB jFf chf cyJ @@ -136202,7 +136095,7 @@ aMz aOF aOG aGX -aUb +aLc aGY aGX aWb @@ -136967,7 +136860,7 @@ aGX aGY aQI aGX -aMo +aMi aRJ aTe xRy @@ -137029,8 +136922,8 @@ dHU sQt cQk lbZ -dfc -dfc +bYk +bYk bGG bGG xBC @@ -138052,7 +137945,7 @@ dcK bGG cuS qmw -dfc +bYk dcW cpH bGG @@ -138508,8 +138401,8 @@ aGY aGY aGY aKV -aMo -aMo +aMi +aMi aGY aMz aQO @@ -140142,7 +140035,7 @@ ioE rHJ yfJ oJr -cQC +cKF dhR csL ciY @@ -140921,7 +140814,7 @@ ciY ciY ciY ciY -tVF +eNn csL ciY ciY @@ -141174,7 +141067,7 @@ kMc kdc csL djP -cQC +cKF fof dlz dSu @@ -142197,7 +142090,7 @@ uXA uXA wUT ciY -cQC +cKF csL qdO ycI @@ -142454,7 +142347,7 @@ ciY ciY oUq ciY -cQC +cKF csL dhR ycI @@ -144244,7 +144137,7 @@ ciY dHc pOY ciY -yjF +cDo ePu ugC ciY @@ -144469,7 +144362,7 @@ oUq ciY ciY cKF -tVF +eNn csL ciY hdW @@ -144496,7 +144389,7 @@ iDg cga fGT nBI -tVF +eNn ciY ylP ciY @@ -144719,7 +144612,7 @@ gww csL rng csL -tVF +eNn ciY fVy dbX @@ -144734,7 +144627,7 @@ qQj fUW cgs cgs -tVF +eNn csL uzh rSS @@ -145235,7 +145128,7 @@ mZs oUq csL dbX -tVF +eNn ciY ciY cgs @@ -145789,7 +145682,7 @@ csL ciY dbi csL -tVF +eNn ciY ciY faP @@ -147070,7 +146963,7 @@ cpE cQw ciY ePu -tVF +eNn ciY ciY vMe @@ -147835,7 +147728,7 @@ cga ciY pbc ctq -tVF +eNn kpR raH eba @@ -148087,7 +147980,7 @@ ece kBI eNn ciY -tVF +eNn iZV ciY mQX @@ -148347,7 +148240,7 @@ ciY euQ ePu jgA -tVF +eNn gmU jPx gmU @@ -148867,7 +148760,7 @@ ciY ciY ciY ciY -cQC +cKF meB ciY aab diff --git a/_maps/map_files/stations/cerestation.dmm b/_maps/map_files/stations/cerestation.dmm index 19a4c3b993e7..50111f43079a 100644 --- a/_maps/map_files/stations/cerestation.dmm +++ b/_maps/map_files/stations/cerestation.dmm @@ -240,7 +240,7 @@ /area/station/maintenance/disposal/external/north) "abH" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/starboard) "abJ" = ( @@ -435,7 +435,7 @@ /area/station/turret_protected/ai) "acK" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -1925,7 +1925,7 @@ dir = 1 }, /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/north) "alW" = ( @@ -2108,7 +2108,7 @@ dir = 8 }, /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/north) "ang" = ( @@ -2328,7 +2328,7 @@ /area/station/security/permabrig) "aoE" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/northeast) "aoF" = ( @@ -2507,7 +2507,7 @@ /area/station/turret_protected/aisat/interior) "apu" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -2689,9 +2689,9 @@ /area/station/security/prisonlockers) "arc" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/fpmaint) "ard" = ( @@ -2806,7 +2806,7 @@ /area/station/maintenance/disposal/northeast) "arQ" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /obj/structure/cable/orange{ d1 = 4; d2 = 8; @@ -3009,8 +3009,8 @@ /area/station/security/prisonlockers) "atB" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/fore2) "atC" = ( @@ -3409,7 +3409,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore2) "avS" = ( @@ -3422,7 +3422,7 @@ }, /area/station/maintenance/fore2) "awc" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/fore2) "awd" = ( @@ -4233,7 +4233,7 @@ /area/station/science/rnd) "aCb" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/cobweb, /turf/simulated/floor/plating, /area/station/maintenance/fore2) @@ -5907,7 +5907,7 @@ /area/station/telecomms/computer) "aPc" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore2) "aPd" = ( @@ -6210,7 +6210,7 @@ /area/station/security/permabrig) "aQR" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/maintcentral) "aQS" = ( @@ -6676,7 +6676,7 @@ /area/station/public/arcade) "aUi" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/camera{ c_tag = "Fore Asteroid Maintenance APCs 2"; dir = 5 @@ -6828,7 +6828,7 @@ /area/station/maintenance/disposal/north) "aUU" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -7432,7 +7432,7 @@ /area/station/turret_protected/aisat/interior) "aYC" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/port2) "aYD" = ( @@ -7916,7 +7916,7 @@ /area/station/hallway/primary/central/north) "bbv" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/hallway/primary/central/north) "bbw" = ( @@ -7926,7 +7926,7 @@ /area/station/maintenance/disposal/south) "bbC" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/hallway/primary/port/north) "bbH" = ( @@ -8011,7 +8011,7 @@ "bcf" = ( /obj/structure/closet/crate, /obj/item/pickaxe/mini, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "bck" = ( @@ -10670,7 +10670,7 @@ dir = 4 }, /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/fore) "bqR" = ( @@ -11086,7 +11086,7 @@ /area/station/medical/medbay) "bsA" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/fpmaint) "bsB" = ( @@ -12630,7 +12630,7 @@ /area/station/security/processing) "bzh" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/fpmaint) "bzj" = ( @@ -12640,7 +12640,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/east) "bzq" = ( @@ -15747,7 +15747,7 @@ /area/station/command/bridge) "bMX" = ( /obj/structure/closet/wardrobe/mixed, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "bMY" = ( @@ -15927,13 +15927,8 @@ }, /turf/simulated/floor/plating, /area/station/hallway/primary/starboard/south) -"bNL" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating/asteroid/ancient, -/area/station/maintenance/starboard) "bNM" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/fore) "bNT" = ( @@ -16038,7 +16033,7 @@ dir = 4 }, /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -18148,7 +18143,7 @@ }, /obj/effect/decal/cleanable/cobweb, /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore2) "bWl" = ( @@ -18219,7 +18214,7 @@ /area/station/maintenance/port) "bWG" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/port) "bWJ" = ( @@ -18438,7 +18433,7 @@ "bXu" = ( /obj/structure/rack, /obj/item/pickaxe/emergency, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore2) "bXv" = ( @@ -18521,7 +18516,7 @@ dir = 1 }, /obj/effect/spawner/random_spawners/dirt_frequent, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/item/paper/crumpled, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -18759,11 +18754,11 @@ /area/station/maintenance/gambling_den) "bZt" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/gambling_den) "bZv" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/closet/crate, /turf/simulated/floor/plating, /area/station/maintenance/storage) @@ -19074,7 +19069,7 @@ /area/station/maintenance/fore2) "ccV" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/fore2) "ccW" = ( @@ -19210,7 +19205,7 @@ /area/station/security/prisonershuttle) "cdO" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/eight, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "cdP" = ( @@ -19507,8 +19502,8 @@ /area/station/public/quantum/docking) "cfH" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/asmaint) "cfN" = ( @@ -20789,7 +20784,7 @@ /obj/structure/closet/emcloset, /obj/machinery/light/small, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "coO" = ( @@ -20825,7 +20820,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore2) "coX" = ( @@ -20882,7 +20877,7 @@ "cpo" = ( /obj/structure/table, /obj/effect/spawner/random_spawners/dirt_frequent, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -20992,7 +20987,7 @@ /area/station/maintenance/port) "cpQ" = ( /obj/structure/closet/firecloset/full, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -21190,7 +21185,7 @@ /area/station/hallway/secondary/exit) "crC" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/eight, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 10; @@ -21401,7 +21396,7 @@ "ctC" = ( /obj/structure/rack, /obj/item/pickaxe, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -21790,7 +21785,7 @@ /area/station/security/prison/cell_block/A) "cxd" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/sign/securearea{ desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; @@ -21861,8 +21856,8 @@ /area/station/science/toxins/mixing) "cxU" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -22089,7 +22084,7 @@ "czP" = ( /obj/structure/closet/crate, /obj/item/pickaxe, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/apmaint) "czV" = ( @@ -22690,7 +22685,7 @@ icon_state = "1-4" }, /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore2) "cDW" = ( @@ -23889,7 +23884,7 @@ /area/shuttle/arrival/station) "cJN" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/hallway/primary/central/west) "cJO" = ( @@ -24286,8 +24281,8 @@ /area/station/maintenance/disposal/external/southeast) "cMw" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/port) "cMx" = ( @@ -25326,7 +25321,7 @@ /area/station/command/bridge) "cQU" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/storage) "cQW" = ( @@ -25341,7 +25336,7 @@ /area/station/maintenance/storage) "cRa" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/maintcentral) "cRh" = ( @@ -25470,7 +25465,7 @@ /area/station/hallway/primary/aft/west) "cRZ" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/pickaxe, /turf/simulated/floor/plating, /area/station/maintenance/storage) @@ -25526,12 +25521,12 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/hallway/primary/fore/north) "cSj" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/hallway/primary/fore/north) "cSk" = ( @@ -28746,7 +28741,7 @@ /area/station/maintenance/disposal/west) "doo" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/fpmaint) "dos" = ( @@ -29397,7 +29392,7 @@ dir = 1 }, /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "dsc" = ( @@ -31423,7 +31418,7 @@ /area/station/hallway/primary/fore/west) "dCU" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/starboard) "dCV" = ( @@ -33222,7 +33217,7 @@ /area/station/medical/morgue) "eeN" = ( /obj/effect/spawner/random_spawners/blood_maybe, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -33230,7 +33225,7 @@ "eeZ" = ( /obj/structure/closet/crate, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore2) "efa" = ( @@ -33820,7 +33815,7 @@ dir = 1 }, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/structure/window/basic{ dir = 8 }, @@ -33828,7 +33823,7 @@ /area/station/maintenance/disposal) "eot" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/maintcentral) "eoz" = ( @@ -34046,7 +34041,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/storage) "etG" = ( @@ -34127,7 +34122,7 @@ /area/station/science/xenobiology) "eux" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/maintcentral) "euD" = ( @@ -34519,7 +34514,7 @@ /obj/structure/closet/crate{ name = "top secret mime supplies" }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -35493,7 +35488,7 @@ /turf/simulated/floor/carpet/green, /area/station/service/library) "eOu" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -35747,7 +35742,7 @@ /area/station/hallway/spacebridge/scidock) "eTI" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/port) "eTJ" = ( @@ -36235,19 +36230,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) -"fbA" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/simulated/floor/plating{ - icon_state = "asteroidplating" - }, -/area/station/maintenance/asmaint) "fcm" = ( /obj/structure/chair/office/dark{ dir = 1 @@ -36289,7 +36271,7 @@ /obj/structure/disposalpipe/segment/corner{ dir = 8 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -36644,17 +36626,6 @@ icon_state = "browncorner" }, /area/station/supply/lobby) -"fka" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, -/obj/structure/disposalpipe/segment/corner, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor/plating, -/area/station/maintenance/asmaint) "fkc" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/computer/area_atmos{ @@ -37775,7 +37746,7 @@ icon_state = "4-8" }, /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "fFz" = ( @@ -38820,7 +38791,7 @@ /area/station/hallway/primary/fore/west) "fVg" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "fVo" = ( @@ -39166,6 +39137,17 @@ icon_state = "redyellowfull" }, /area/station/service/bar) +"gah" = ( +/obj/effect/spawner/random/maintenance, +/obj/structure/closet/crate, +/obj/structure/disposalpipe/segment/corner, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/station/maintenance/asmaint) "gaj" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 10 @@ -39436,7 +39418,7 @@ /area/station/security/range) "gge" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/asmaint) "ggt" = ( @@ -39862,7 +39844,7 @@ /area/station/maintenance/disposal/west) "goE" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/maintcentral) @@ -40352,7 +40334,7 @@ }, /area/station/hallway/primary/port/south) "gxp" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/service/clown/secret) @@ -41162,7 +41144,7 @@ /area/station/maintenance/fsmaint) "gLj" = ( /obj/structure/table/wood, -/obj/effect/spawner/lootdrop/maintenance/eight, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -41830,7 +41812,7 @@ /area/station/service/bar) "gWd" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/maintcentral) "gXb" = ( @@ -42240,7 +42222,7 @@ "hcK" = ( /obj/effect/decal/cleanable/cobweb, /obj/structure/closet/wardrobe/black, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "hcL" = ( @@ -42248,7 +42230,7 @@ /obj/effect/decal/cleanable/cobweb, /obj/effect/decal/cleanable/dirt, /obj/item/storage/fancy/cigarettes/cigpack_random, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whitepurple" @@ -42814,7 +42796,7 @@ /area/station/maintenance/storage) "hmo" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "hmp" = ( @@ -43288,7 +43270,7 @@ /area/station/hallway/primary/fore/east) "huF" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/west) "huM" = ( @@ -43413,7 +43395,7 @@ /area/station/maintenance/disposal/west) "hxc" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -43462,7 +43444,7 @@ /area/station/maintenance/storage) "hxO" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "hxR" = ( @@ -43551,7 +43533,7 @@ /area/station/security/lobby) "hzj" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/structure/disposalpipe/segment/corner{ dir = 4 }, @@ -43663,7 +43645,7 @@ }, /obj/effect/decal/cleanable/cobweb, /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/north) "hAX" = ( @@ -44038,7 +44020,7 @@ /area/station/science/hallway) "hHb" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/gambling_den) "hHu" = ( @@ -44151,7 +44133,7 @@ icon_state = "1-2" }, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore2) "hIo" = ( @@ -44583,7 +44565,7 @@ /area/station/public/quantum/security) "hPG" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/roller, /turf/simulated/floor/plating, /area/station/maintenance/starboard) @@ -44919,7 +44901,7 @@ "hSU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/hallway/primary/fore/north) "hSY" = ( @@ -45467,7 +45449,7 @@ /area/station/command/office/ntrep) "ibf" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/maintcentral) "ibJ" = ( @@ -46256,8 +46238,8 @@ pixel_x = 1; pixel_y = 5 }, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/west) "imU" = ( @@ -46315,7 +46297,7 @@ /area/station/hallway/primary/fore/east) "inP" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -47531,11 +47513,6 @@ icon_state = "neutralcorner" }, /area/station/hallway/primary/fore/east) -"iEW" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/station/maintenance/starboard) "iEY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -47761,7 +47738,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/hallway/primary/fore/north) "iIW" = ( @@ -48032,7 +48009,7 @@ /area/station/science/toxins/launch) "iNd" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "iNj" = ( @@ -48175,7 +48152,7 @@ /area/station/maintenance/fore) "iOU" = ( /obj/structure/table/wood, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/wood, /area/station/maintenance/starboard) "iPa" = ( @@ -48882,13 +48859,13 @@ "iYY" = ( /obj/structure/closet, /obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/mine/unexplored/cere/orbiting) "iZd" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/hallway/primary/fore/west) "iZr" = ( @@ -49160,7 +49137,7 @@ /area/station/engineering/atmos) "jbp" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/flashlight, /turf/simulated/floor/transparent/glass/reinforced, /area/station/maintenance/starboard) @@ -50029,7 +50006,7 @@ /obj/structure/disposalpipe/segment/corner{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/east) "jpP" = ( @@ -50750,7 +50727,7 @@ /area/station/command/office/rd) "jyk" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "jyx" = ( @@ -50954,7 +50931,7 @@ /turf/space, /area/station/hallway/spacebridge/cargocom) "jAx" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/table, /obj/effect/landmark/burnturf, /obj/item/robotanalyzer, @@ -51335,7 +51312,7 @@ /area/station/maintenance/port) "jFd" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/hallway/primary/fore/north) "jFg" = ( @@ -52360,7 +52337,7 @@ /area/station/hallway/secondary/entry/east) "jUd" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -52383,7 +52360,7 @@ pixel_x = 5; pixel_y = -2 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/starboard) "jUz" = ( @@ -52529,7 +52506,7 @@ /area/station/hallway/primary/starboard/south) "jXm" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "jXt" = ( @@ -53170,7 +53147,7 @@ pixel_y = -3; pixel_x = 3 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "darkpurple" @@ -53245,8 +53222,8 @@ dir = 8 }, /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/storage) "kjT" = ( @@ -53872,7 +53849,7 @@ icon_state = "1-2" }, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "kuj" = ( @@ -54015,7 +53992,7 @@ /area/station/command/office/ntrep) "kwQ" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/disposalpipe/segment/corner{ dir = 4 }, @@ -54169,7 +54146,7 @@ /area/station/hallway/secondary/entry/south) "kyo" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/storage) "kyp" = ( @@ -54660,7 +54637,7 @@ "kIn" = ( /obj/structure/table, /obj/item/storage/fancy/cigarettes, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/south) "kIo" = ( @@ -55874,7 +55851,7 @@ "kZw" = ( /obj/structure/table, /obj/item/storage/fancy/cigarettes, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/disposalpipe/sortjunction/reversed{ dir = 4; sort_type_txt = "25" @@ -56618,11 +56595,6 @@ icon_state = "neutralfull" }, /area/station/hallway/primary/central/east) -"ljR" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, -/turf/simulated/floor/plating, -/area/station/maintenance/starboard) "ljV" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -56693,7 +56665,7 @@ /area/station/supply/expedition) "lkL" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "llc" = ( @@ -58387,7 +58359,7 @@ /area/station/maintenance/apmaint) "lJM" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/external/southeast) "lJN" = ( @@ -60111,7 +60083,7 @@ "mkA" = ( /obj/item/storage/toolbox/mechanical, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/south) "mkS" = ( @@ -60149,7 +60121,7 @@ dir = 4 }, /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/east) "mlM" = ( @@ -60188,7 +60160,7 @@ /area/station/maintenance/fsmaint) "mmx" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/port) "mmz" = ( @@ -60339,7 +60311,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/disposal/external/southwest) "moQ" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/fore2) @@ -61213,7 +61185,7 @@ /area/station/security/main) "mCE" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/pickaxe, /turf/simulated/floor/plating, /area/station/maintenance/storage) @@ -61443,7 +61415,7 @@ "mGY" = ( /obj/item/storage/box/bodybags, /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "mHg" = ( @@ -61597,8 +61569,8 @@ /area/station/hallway/primary/port/north) "mJn" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/fore) @@ -61922,7 +61894,7 @@ /area/station/maintenance/electrical_shop) "mPu" = ( /obj/structure/table/wood/poker, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/barsign{ pixel_y = 32 }, @@ -62304,8 +62276,8 @@ /area/station/hallway/secondary/entry/north) "mUe" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/port) "mUu" = ( @@ -63194,7 +63166,7 @@ /area/station/hallway/secondary/exit) "njs" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/pickaxe, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) @@ -63218,7 +63190,7 @@ /area/station/hallway/spacebridge/engmed) "njx" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/maintcentral) "njB" = ( @@ -63778,7 +63750,7 @@ /area/station/turret_protected/ai_upload) "ntf" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/port) "nto" = ( @@ -63982,7 +63954,7 @@ /area/station/engineering/control) "nvA" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -64174,7 +64146,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "nyX" = ( -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -64659,7 +64631,7 @@ /area/station/security/detective) "nHK" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/hallway/primary/port/north) "nHR" = ( @@ -65426,7 +65398,7 @@ path_to_spawn = /mob/living/simple_animal/hostile/scarybat; total_amount = 20 }, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -65788,7 +65760,7 @@ /turf/simulated/floor/transparent/glass/reinforced, /area/station/maintenance/port) "oci" = ( -/obj/effect/spawner/lootdrop/maintenance/eight, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/hallway/spacebridge/scidock) "ocw" = ( @@ -67770,7 +67742,7 @@ pixel_x = -13; pixel_y = 2 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -67854,7 +67826,7 @@ "oJH" = ( /obj/structure/closet/crate, /obj/item/pickaxe/emergency, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/apmaint) "oJY" = ( @@ -70380,12 +70352,6 @@ icon_state = "whitepurplecorner" }, /area/station/science/misc_lab) -"pvo" = ( -/obj/effect/spawner/lootdrop/maintenance/three, -/turf/simulated/floor/plating{ - icon_state = "asteroidplating" - }, -/area/station/hallway/spacebridge/scidock) "pvH" = ( /obj/structure/chair/sofa/pew/right{ dir = 8 @@ -70610,7 +70576,7 @@ "pzK" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/eight, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "pzS" = ( @@ -71153,7 +71119,7 @@ /turf/simulated/floor/wood, /area/station/service/bar) "pIc" = ( -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/structure/closet, /turf/simulated/floor/plating, /area/station/maintenance/starboard) @@ -71245,7 +71211,7 @@ "pKj" = ( /obj/structure/table, /obj/machinery/light, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, @@ -71663,7 +71629,7 @@ /area/station/supply/storage) "pPI" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "pPM" = ( @@ -72212,7 +72178,7 @@ /area/station/maintenance/apmaint) "pWH" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/starboard) "pWQ" = ( @@ -72251,7 +72217,7 @@ /area/station/service/theatre) "pXp" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/food/donkpocket, /turf/simulated/floor/plating, /area/station/maintenance/starboard) @@ -72681,7 +72647,7 @@ dir = 8 }, /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "qcS" = ( @@ -72869,7 +72835,7 @@ /area/station/service/library) "qfv" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -73066,6 +73032,18 @@ icon_state = "dark" }, /area/station/service/chapel) +"qhZ" = ( +/obj/effect/spawner/random/maintenance, +/obj/structure/closet/crate, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" + }, +/area/station/maintenance/asmaint) "qii" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -73483,7 +73461,7 @@ /area/station/hallway/secondary/exit) "qov" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/pickaxe/emergency, /turf/simulated/floor/plating, /area/station/maintenance/starboard) @@ -73593,7 +73571,7 @@ /area/station/maintenance/apmaint) "qpM" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/maintcentral) @@ -75460,7 +75438,7 @@ pixel_x = 1 }, /obj/item/storage/toolbox/mechanical, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/hallway/primary/aft/west) "qUu" = ( @@ -77395,7 +77373,7 @@ /area/station/maintenance/disposal/external/southwest) "rFq" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/hallway/primary/aft/west) "rFJ" = ( @@ -77891,7 +77869,7 @@ /area/station/command/bridge) "rMP" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/southwest) "rMT" = ( @@ -79260,8 +79238,8 @@ "shB" = ( /obj/structure/rack, /obj/item/pickaxe/emergency, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small, /turf/simulated/floor/plating, /area/station/maintenance/port) @@ -79849,7 +79827,7 @@ "srv" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/transparent/glass/reinforced, /area/station/maintenance/starboard) "srN" = ( @@ -80377,16 +80355,6 @@ icon_state = "darkblue" }, /area/station/command/office/cmo) -"swR" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, -/obj/structure/cable/orange{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating, -/area/station/maintenance/starboard) "sxa" = ( /obj/effect/spawner/random_spawners/wall_rusted_always, /turf/simulated/wall, @@ -82130,7 +82098,7 @@ /area/station/security/warden) "sWZ" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/southwest) "sXj" = ( @@ -82348,11 +82316,6 @@ icon_state = "white" }, /area/station/medical/virology) -"taQ" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating/asteroid/ancient, -/area/station/maintenance/port) "taW" = ( /obj/machinery/light/small{ dir = 1 @@ -82487,7 +82450,7 @@ /area/station/public/vacant_office) "tcw" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/gambling_den) "tcx" = ( @@ -82754,9 +82717,9 @@ /area/station/maintenance/disposal/external/southwest) "thz" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/disposalpipe/segment/corner{ dir = 1 }, @@ -83177,7 +83140,7 @@ /area/station/hallway/spacebridge/scidock) "tnj" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/apmaint) "tnA" = ( @@ -83434,8 +83397,8 @@ /area/station/supply/sorting) "tsc" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/maintcentral) "tsf" = ( @@ -83806,8 +83769,8 @@ /area/station/engineering/tech_storage) "twx" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/fpmaint) "twF" = ( @@ -84382,7 +84345,7 @@ /area/station/hallway/spacebridge/dockmed) "tFK" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -85392,8 +85355,8 @@ /area/station/maintenance/starboard) "tXA" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "tXE" = ( @@ -88196,11 +88159,6 @@ "uMr" = ( /turf/simulated/wall/r_wall, /area/station/science/rnd) -"uMu" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/station/maintenance/maintcentral) "uMC" = ( /obj/machinery/door/airlock/public/glass{ name = "Rehabilitation Dome" @@ -88475,7 +88433,7 @@ "uQh" = ( /obj/effect/decal/cleanable/cobweb, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/disposalpipe/segment/corner, /turf/simulated/floor/plating{ icon_state = "asteroidplating" @@ -90023,11 +89981,6 @@ icon_state = "tranquillite" }, /area/station/service/mime) -"vok" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/station/maintenance/maintcentral) "vos" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -90092,7 +90045,7 @@ pixel_y = 5 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "whitepurple" @@ -90521,8 +90474,8 @@ /area/station/medical/cloning) "vun" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -90885,7 +90838,7 @@ /obj/item/coin/silver, /obj/item/coin/silver, /obj/item/pickaxe, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/port) "vzj" = ( @@ -91865,11 +91818,6 @@ icon_state = "darkred" }, /area/station/security/checkpoint/secondary) -"vOv" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating/asteroid/ancient, -/area/station/maintenance/starboard) "vOI" = ( /turf/simulated/floor/carpet/cyan, /area/station/public/fitness) @@ -94150,7 +94098,7 @@ /area/station/hallway/primary/starboard/south) "wuY" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/public/storefront) @@ -95372,7 +95320,7 @@ /area/station/maintenance/fsmaint) "wJY" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) @@ -96297,7 +96245,7 @@ /area/station/maintenance/gambling_den) "wZl" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plating, /area/station/hallway/primary/central/north) @@ -96489,7 +96437,7 @@ /area/station/maintenance/port) "xaU" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "xbh" = ( @@ -96597,7 +96545,7 @@ /obj/structure/rack, /obj/item/storage/toolbox/mechanical, /obj/item/weldingtool/hugetank, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/east) "xcH" = ( @@ -96954,7 +96902,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -96965,7 +96913,7 @@ "xiV" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/port) "xja" = ( @@ -97527,7 +97475,7 @@ /area/station/legal/courtroom) "xtR" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/gambling_den) "xtS" = ( @@ -98580,7 +98528,7 @@ /area/station/engineering/control) "xGC" = ( /obj/structure/closet/crate/internals, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/dirt_frequent, /turf/simulated/floor/plasteel{ dir = 5; @@ -98661,7 +98609,7 @@ pixel_x = 3; pixel_y = 3 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/electrical_shop) "xHO" = ( @@ -98756,7 +98704,7 @@ /area/station/public/quantum/science) "xIU" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -99853,7 +99801,7 @@ /area/station/maintenance/port) "xZC" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/airlock_electronics, /turf/simulated/floor/plating, /area/station/maintenance/port) @@ -100152,7 +100100,7 @@ dir = 1 }, /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "yeW" = ( @@ -114765,7 +114713,7 @@ rzu mHH ijL ccx -taQ +mmx vtY vtY usD @@ -135101,7 +135049,7 @@ mkk fLT fLT dkk -uMu +aQR cUr rgm rgm @@ -135377,7 +135325,7 @@ cYC cYM wzj cYC -pvo +nyX cYC cYC jGj @@ -139186,7 +139134,7 @@ oLP iuC bvj fLT -uMu +aQR nVW nVW nVW @@ -140748,7 +140696,7 @@ wJC vUQ wJC mkk -vok +eot hxE aXR aXR @@ -141555,7 +141503,7 @@ mpB mpB ixC bKg -fbA +qhZ vWF vWF vWF @@ -144638,7 +144586,7 @@ aXn aXn aXn wLr -fka +gah pXf yep xSo @@ -154362,7 +154310,7 @@ gbJ gbJ bLk cFA -bNL +abH tvJ xjx vbn @@ -156157,7 +156105,7 @@ uyn bkH biN wyL -iEW +fVg itf qIV xAV @@ -157176,7 +157124,7 @@ oXg bil gFg gSQ -vOv +pWH biN eEd bkH @@ -157936,7 +157884,7 @@ alc gSQ xAV qWh -swR +arQ bil dzF dzP @@ -159980,7 +159928,7 @@ rNK rNK lCC alc -ljR +jXm yhg umz gSQ diff --git a/_maps/map_files/stations/deltastation.dmm b/_maps/map_files/stations/deltastation.dmm index c39322991ad3..c208e919ab1a 100644 --- a/_maps/map_files/stations/deltastation.dmm +++ b/_maps/map_files/stations/deltastation.dmm @@ -1703,7 +1703,7 @@ /area/station/maintenance/fore2) "amV" = ( /obj/structure/table/wood, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "redyellowfull" }, @@ -1851,7 +1851,7 @@ /area/station/maintenance/fore2) "anC" = ( /obj/structure/table/reinforced, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel, /area/station/maintenance/fore2) @@ -2799,7 +2799,7 @@ /area/station/maintenance/fore2) "aqm" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -2807,7 +2807,7 @@ "aqn" = ( /obj/structure/rack, /obj/item/crowbar, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ icon_state = "neutral" @@ -2816,7 +2816,7 @@ "aqo" = ( /obj/structure/closet/crate, /obj/item/flashlight, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel, /area/station/maintenance/fore2) @@ -3996,7 +3996,7 @@ name = "booze cabinet" }, /obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/effect/landmark/damageturf, /turf/simulated/floor/wood, /area/station/maintenance/fore) @@ -4569,7 +4569,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "auQ" = ( @@ -4700,7 +4700,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore2) "avl" = ( @@ -5859,12 +5859,12 @@ /area/station/maintenance/fore) "axZ" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "aya" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutral" @@ -6158,7 +6158,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/disposal) "azh" = ( @@ -6553,7 +6553,7 @@ "aAk" = ( /obj/structure/rack, /obj/item/reagent_containers/drinks/bottle/whiskey, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "aAl" = ( @@ -6775,7 +6775,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/delivery/hollow, /obj/structure/disposalpipe/segment{ dir = 4 @@ -6789,7 +6789,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/delivery, /obj/structure/disposalpipe/segment{ dir = 4 @@ -7066,7 +7066,7 @@ /area/station/supply/storage) "aBo" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "aBp" = ( @@ -7081,7 +7081,7 @@ /obj/structure/table/wood, /obj/item/clothing/shoes/jackboots, /obj/effect/landmark/costume/random, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -7702,7 +7702,7 @@ /area/station/supply/storage) "aDj" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel, /area/station/supply/sorting) @@ -7924,7 +7924,7 @@ /area/station/supply/storage) "aDN" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/supply/sorting) "aDO" = ( @@ -8290,7 +8290,7 @@ }, /area/station/supply/storage) "aEX" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -8298,7 +8298,7 @@ /area/station/supply/storage) "aEY" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -8541,7 +8541,7 @@ "aFG" = ( /obj/structure/closet/crate, /obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -9242,7 +9242,7 @@ /area/station/maintenance/abandoned_garden) "aHz" = ( /obj/structure/closet/cardboard, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ @@ -10389,7 +10389,7 @@ /obj/machinery/conveyor{ id = "cargodisposals" }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/supply/sorting) "aKB" = ( @@ -10437,7 +10437,7 @@ /area/station/supply/storage) "aKL" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ @@ -10758,7 +10758,7 @@ /area/station/engineering/controlroom) "aLx" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -10815,7 +10815,7 @@ /area/station/service/barber) "aLH" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutral" @@ -11385,7 +11385,7 @@ }, /area/station/supply/storage) "aNw" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -12411,7 +12411,7 @@ /turf/simulated/floor/wood, /area/station/maintenance/gambling_den) "aQr" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel{ @@ -12866,7 +12866,7 @@ /area/station/service/bar) "aRu" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/eight, +/obj/effect/spawner/random/maintenance, /obj/effect/landmark/damageturf, /turf/simulated/floor/plasteel/airless{ dir = 10; @@ -18563,7 +18563,7 @@ /area/station/maintenance/fore) "bgo" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/fore) "bgp" = ( @@ -19707,7 +19707,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/fore) "bjd" = ( @@ -19880,7 +19880,7 @@ /area/station/service/kitchen) "bjy" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "bjz" = ( @@ -21183,7 +21183,7 @@ "bmP" = ( /obj/structure/rack, /obj/effect/landmark/costume/random, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/fore) "bmQ" = ( @@ -26841,7 +26841,7 @@ /obj/item/assembly/igniter, /obj/item/assembly/igniter, /obj/item/assembly/igniter, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, /area/station/public/storage/tools) @@ -30757,7 +30757,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "cautioncorner" @@ -30765,7 +30765,7 @@ /area/station/public/storage/tools/auxiliary) "bLm" = ( /obj/structure/closet/toolcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 5; icon_state = "yellow" @@ -32205,7 +32205,7 @@ /obj/structure/rack, /obj/item/storage/toolbox/emergency, /obj/item/storage/toolbox/emergency, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "yellow" @@ -35679,7 +35679,7 @@ /area/station/legal/magistrate) "bYU" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/railing{ dir = 1 }, @@ -35977,7 +35977,7 @@ /area/station/maintenance/port) "bZI" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "bZJ" = ( @@ -36742,7 +36742,7 @@ /area/station/engineering/smes) "cby" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "neutral" @@ -37555,7 +37555,7 @@ /area/station/engineering/smes) "cdr" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/port) @@ -38184,12 +38184,6 @@ /obj/machinery/power/apc/critical/directional/south, /turf/simulated/floor/plasteel/dark, /area/station/engineering/smes) -"cfk" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/station/maintenance/port) "cfn" = ( /obj/effect/decal/cleanable/fungus, /turf/simulated/wall, @@ -39481,7 +39475,7 @@ /area/station/public/locker) "cjm" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) "cjn" = ( @@ -39491,7 +39485,7 @@ "cjo" = ( /obj/structure/rack, /obj/item/book/manual/wiki/security_space_law, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) "cjp" = ( @@ -40653,7 +40647,7 @@ /area/station/legal/lawoffice) "cmq" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/starboard2) "cmr" = ( @@ -41524,7 +41518,7 @@ "coU" = ( /obj/structure/closet, /obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "neutral" @@ -42781,7 +42775,7 @@ "csd" = ( /obj/structure/table, /obj/item/storage/box/bodybags, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) "cse" = ( @@ -42793,7 +42787,7 @@ "csf" = ( /obj/structure/closet/crate, /obj/item/clothing/shoes/jackboots, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) "csh" = ( @@ -45345,7 +45339,7 @@ }, /obj/item/clothing/gloves/color/black, /obj/item/wrench, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, /area/station/maintenance/port) @@ -46007,7 +46001,7 @@ /area/station/maintenance/port) "cBd" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutral" @@ -46972,7 +46966,7 @@ /area/station/maintenance/port) "cEa" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 4; @@ -47263,7 +47257,7 @@ "cFk" = ( /obj/structure/table, /obj/effect/decal/cleanable/cobweb2, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "cFl" = ( @@ -47540,7 +47534,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutral" @@ -48247,7 +48241,7 @@ /area/station/maintenance/port) "cHo" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -48255,7 +48249,7 @@ "cHp" = ( /obj/structure/rack, /obj/item/clothing/gloves/color/fyellow, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -48820,7 +48814,7 @@ /area/station/engineering/equipmentstorage) "cIS" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "cIT" = ( @@ -49151,13 +49145,13 @@ /area/station/maintenance/port) "cKf" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/port) "cKg" = ( /obj/structure/rack, /obj/item/book/manual/wiki/engineering_guide, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/port) "cKi" = ( @@ -49812,11 +49806,6 @@ icon_state = "neutralcorner" }, /area/station/public/fitness) -"cMS" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/three, -/turf/simulated/floor/plating, -/area/station/maintenance/port) "cMU" = ( /obj/machinery/atmospherics/binary/valve, /obj/effect/turf_decal/stripes/line{ @@ -50727,7 +50716,7 @@ /obj/structure/closet, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /obj/structure/cable{ d1 = 1; d2 = 2; @@ -51602,7 +51591,7 @@ /area/station/maintenance/starboard) "cTc" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutral" @@ -51937,7 +51926,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "cUA" = ( @@ -52904,7 +52893,7 @@ /area/station/maintenance/port) "cXY" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -53086,7 +53075,7 @@ "cZc" = ( /obj/structure/rack, /obj/item/clothing/accessory/stethoscope, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutral" @@ -54691,7 +54680,7 @@ /area/station/maintenance/starboard) "dey" = ( /obj/structure/table/wood, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/wood, /area/station/maintenance/starboard) "deA" = ( @@ -55364,7 +55353,7 @@ /area/station/public/construction) "dhq" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutral" @@ -55757,7 +55746,7 @@ }, /obj/item/crowbar/red, /obj/item/wrench, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "yellowcorner" @@ -57100,7 +57089,7 @@ "dot" = ( /obj/effect/decal/cleanable/cobweb2, /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "dou" = ( @@ -58390,7 +58379,7 @@ /area/station/maintenance/starboard) "duK" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -59129,7 +59118,7 @@ /area/station/maintenance/library) "dzo" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/landmark/costume/random, /obj/effect/landmark/costume/random, /turf/simulated/floor/plasteel{ @@ -60263,7 +60252,7 @@ /area/station/science/toxins/test) "dES" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -60912,11 +60901,6 @@ }, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) -"dIA" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/station/maintenance/apmaint) "dID" = ( /turf/simulated/floor/plasteel{ icon_state = "neutral" @@ -61202,7 +61186,7 @@ "dKH" = ( /obj/structure/closet/crate, /obj/item/flashlight, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "dKI" = ( @@ -62688,7 +62672,7 @@ /area/station/maintenance/apmaint) "dRL" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "dRM" = ( @@ -62810,7 +62794,7 @@ /area/station/service/chapel) "dSn" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel{ dir = 8; @@ -64559,7 +64543,7 @@ /area/station/maintenance/starboard2) "eeX" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/storage/box/bodybags, /turf/simulated/floor/plasteel{ icon_state = "neutral" @@ -67578,7 +67562,7 @@ /obj/machinery/fishtank/bowl, /obj/machinery/fishtank/bowl, /obj/machinery/fishtank/bowl, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/beach/sand, /area/station/maintenance/fsmaint) "fMc" = ( @@ -68159,7 +68143,7 @@ /area/station/aisat) "gbO" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small, /turf/simulated/floor/plasteel{ icon_state = "bar" @@ -68777,7 +68761,7 @@ /area/station/security/armory/secure) "gwu" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "gwZ" = ( @@ -69518,7 +69502,7 @@ /obj/structure/table/wood, /obj/item/folder/white, /obj/item/folder/red, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "grimy" }, @@ -70017,7 +70001,7 @@ "hjo" = ( /obj/structure/closet/crate, /obj/effect/landmark/costume/random, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "hjK" = ( @@ -70034,7 +70018,7 @@ name = "north bump"; pixel_y = 28 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel/dark, /area/station/maintenance/fore2) "hkM" = ( @@ -71802,7 +71786,7 @@ /area/station/public/pet_store) "iny" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "inH" = ( @@ -72254,7 +72238,7 @@ /area/station/medical/reception) "iBK" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutral" @@ -72686,7 +72670,7 @@ dir = 1 }, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "iQb" = ( @@ -73013,7 +72997,7 @@ /area/station/hallway/primary/central/nw) "iXL" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "iXM" = ( @@ -74050,7 +74034,7 @@ /area/station/engineering/atmos) "jJj" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "jJl" = ( @@ -75082,7 +75066,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/aft) "kkB" = ( -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whitepurple" @@ -75141,7 +75125,7 @@ /area/station/hallway/primary/central/north) "klS" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "kmr" = ( @@ -76159,7 +76143,7 @@ "kSX" = ( /obj/structure/closet/crate, /obj/item/flashlight, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -77102,7 +77086,7 @@ dir = 4 }, /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -77185,7 +77169,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "lxC" = ( @@ -79725,7 +79709,7 @@ /area/station/hallway/primary/central/east) "mWO" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/cobweb, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) @@ -79876,7 +79860,7 @@ /obj/structure/rack, /obj/item/storage/fancy/matches, /obj/item/storage/fancy/cigarettes/cigpack_robust, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "naB" = ( @@ -80720,7 +80704,7 @@ /area/station/maintenance/abandoned_garden) "nyK" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "nzB" = ( @@ -81880,7 +81864,7 @@ /area/station/turret_protected/aisat) "okf" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small{ dir = 1 }, @@ -82534,7 +82518,7 @@ /area/station/aisat) "oBE" = ( /obj/item/vending_refill/coffee, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "oBK" = ( @@ -83223,7 +83207,7 @@ /obj/structure/closet/crate{ opened = 1 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "neutral" }, @@ -83828,7 +83812,7 @@ "pmA" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "pmI" = ( @@ -84946,7 +84930,7 @@ /obj/structure/rack, /obj/item/multitool, /obj/item/wrench, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/effect/landmark/damageturf, /turf/simulated/floor/wood, /area/station/maintenance/apmaint) @@ -85084,7 +85068,7 @@ "pWt" = ( /obj/effect/spawner/random_spawners/cobweb_right_frequent, /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "pWw" = ( @@ -85184,7 +85168,7 @@ /area/station/medical/cryo) "qaf" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/retractor, /turf/simulated/floor/plasteel{ dir = 8; @@ -86283,7 +86267,7 @@ /area/station/engineering/controlroom) "qOd" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small{ dir = 1 }, @@ -86793,7 +86777,7 @@ }, /area/station/hallway/primary/central/south) "qZI" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "qZV" = ( @@ -87187,11 +87171,6 @@ temperature = 80 }, /area/station/science/xenobiology) -"rkv" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/three, -/turf/simulated/floor/plating, -/area/station/maintenance/port) "rkA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -87240,7 +87219,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "rly" = ( @@ -88061,7 +88040,7 @@ /obj/effect/decal/cleanable/cobweb2, /obj/effect/decal/cleanable/dirt, /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "rJk" = ( @@ -88222,7 +88201,7 @@ "rOe" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutral" @@ -89841,7 +89820,7 @@ /area/station/maintenance/apmaint) "szf" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "szk" = ( @@ -90141,7 +90120,7 @@ /area/space/nearstation) "sHd" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "bar" }, @@ -90240,7 +90219,7 @@ "sJD" = ( /obj/structure/table, /obj/item/hand_labeler, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -90494,7 +90473,7 @@ "sQa" = ( /obj/structure/closet, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) "sQr" = ( @@ -92395,7 +92374,7 @@ "tVb" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "neutral" @@ -93001,7 +92980,7 @@ }, /area/station/public/fitness) "ujH" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ icon_state = "neutral" @@ -93349,7 +93328,7 @@ /area/station/maintenance/apmaint) "uud" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /obj/item/clothing/accessory/stethoscope, /turf/simulated/floor/plating, /area/station/maintenance/aft) @@ -93371,7 +93350,7 @@ /area/station/maintenance/apmaint) "uvD" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ icon_state = "redyellowfull" @@ -94500,7 +94479,7 @@ /area/station/engineering/controlroom) "vhF" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "vhS" = ( @@ -96428,7 +96407,7 @@ /area/station/maintenance/starboard) "wnt" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/delivery/hollow, /obj/structure/cable{ d1 = 1; @@ -99294,7 +99273,7 @@ "xRD" = ( /obj/effect/spawner/random_spawners/cobweb_right_frequent, /obj/structure/closet/firecloset, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "xRM" = ( @@ -119773,7 +119752,7 @@ cie cie cie bXU -rkv +jJj drn dhG cHA @@ -120550,7 +120529,7 @@ drn cIv dhG cLA -cMS +cIS cLA cQu cLA @@ -128750,7 +128729,7 @@ bYe cHA cby cdr -cfk +cdr drn cLA cQu @@ -134980,7 +134959,7 @@ jLf gNm iqc dHL -dIA +bjy dJx dKh dOr diff --git a/_maps/map_files/stations/metastation.dmm b/_maps/map_files/stations/metastation.dmm index 0169c7bbe85f..893b1d023e85 100644 --- a/_maps/map_files/stations/metastation.dmm +++ b/_maps/map_files/stations/metastation.dmm @@ -72,10 +72,7 @@ /turf/simulated/wall/r_wall, /area/station/security/permabrig) "abX" = ( -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/fore) "abZ" = ( @@ -97,15 +94,12 @@ pixel_y = 2 }, /obj/item/taperecorder, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/structure/cable{ d1 = 4; d2 = 8; icon_state = "4-8" }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/fore) "acv" = ( @@ -518,7 +512,7 @@ /obj/structure/table, /obj/item/multitool, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "agi" = ( @@ -574,7 +568,7 @@ /area/space) "agG" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "agH" = ( @@ -1221,7 +1215,7 @@ /area/station/maintenance/disposal) "alt" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal) "alv" = ( @@ -1275,7 +1269,7 @@ /obj/item/clothing/suit/monkeysuit, /obj/item/clothing/head/xenos, /obj/item/clothing/mask/gas/monkeymask, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "alz" = ( @@ -1429,7 +1423,7 @@ /obj/item/clothing/gloves/color/yellow, /obj/item/mop, /obj/item/bikehorn/rubberducky, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "amv" = ( @@ -1568,7 +1562,7 @@ /area/station/engineering/gravitygenerator) "ano" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "anv" = ( @@ -1585,7 +1579,7 @@ /obj/structure/closet, /obj/item/poster/random_contraband, /obj/item/storage/box/lights/mixed, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "anA" = ( @@ -1668,7 +1662,7 @@ }, /obj/item/dice/d8, /obj/item/healthanalyzer, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "anK" = ( @@ -1871,10 +1865,7 @@ /obj/machinery/conveyor/north{ id = "garbage" }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/disposal) "aoU" = ( @@ -1936,7 +1927,7 @@ /obj/item/storage/secure/briefcase, /obj/item/disk/data, /obj/item/grenade/flashbang, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "api" = ( @@ -2190,21 +2181,21 @@ /obj/structure/closet/crate, /obj/item/bodybag, /obj/item/radio, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aqz" = ( /obj/structure/table/reinforced, /obj/structure/window/reinforced, /obj/item/stock_parts/cell/crap, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aqA" = ( /obj/structure/table/reinforced, /obj/structure/window/reinforced, /obj/item/firealarm_electronics, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aqB" = ( @@ -2220,7 +2211,7 @@ pixel_x = 4; pixel_y = -3 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/pipe/simple/visible/cyan{ dir = 10 }, @@ -2300,7 +2291,7 @@ "arn" = ( /obj/structure/rack, /obj/item/extinguisher, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random_spawners/cobweb_left_frequent, /turf/simulated/floor/plasteel, @@ -2633,7 +2624,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fore) "ata" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating/airless, /area/space/nearstation) "atc" = ( @@ -2791,7 +2782,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "atJ" = ( @@ -3090,7 +3081,7 @@ /obj/structure/rack, /obj/item/storage/toolbox/emergency, /obj/effect/decal/cleanable/cobweb2, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "auB" = ( @@ -3115,7 +3106,7 @@ "auG" = ( /obj/structure/closet/crate, /obj/item/clothing/gloves/color/fyellow, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "auH" = ( @@ -3650,7 +3641,7 @@ /area/station/maintenance/fpmaint) "awM" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_right_frequent, /turf/simulated/floor/plating, /area/station/maintenance/fore) @@ -3769,7 +3760,7 @@ /area/station/public/locker) "axb" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "axc" = ( @@ -3850,7 +3841,7 @@ /turf/simulated/floor/plating, /area/station/public/storage/emergency/port) "axt" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/landmark/damageturf, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) @@ -4362,7 +4353,7 @@ /area/station/maintenance/fsmaint) "azu" = ( /obj/structure/closet/firecloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "azy" = ( @@ -4493,10 +4484,7 @@ /area/station/maintenance/port) "azQ" = ( /obj/item/stack/sheet/cardboard, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/storage/box/mousetraps,/obj/item/storage/box/lights/tubes,/obj/item/storage/box/lights/mixed,/obj/item/storage/box/lights/bulbs); - name = "Janitor Supplies Spawner" - }, +/obj/effect/spawner/random/janitor/supplies, /turf/simulated/floor/plating, /area/station/maintenance/port2) "azR" = ( @@ -4575,7 +4563,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "aAm" = ( @@ -4675,12 +4663,12 @@ /area/station/legal/courtroom/gallery) "aAO" = ( /obj/structure/closet/crate/freezer, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "aAP" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aAU" = ( @@ -4881,7 +4869,7 @@ /area/station/public/mrchangs) "aBT" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "aBV" = ( @@ -4922,7 +4910,7 @@ /turf/simulated/wall/r_wall, /area/station/maintenance/fsmaint) "aCa" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -5279,7 +5267,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aDD" = ( @@ -5650,10 +5638,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/aft) "aEQ" = ( @@ -6012,16 +5997,13 @@ /area/station/maintenance/fore) "aGH" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/fore) "aGJ" = ( @@ -6046,10 +6028,7 @@ /obj/machinery/conveyor/west{ id = "garbage" }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/disposal) "aGO" = ( @@ -6185,7 +6164,7 @@ "aHm" = ( /obj/structure/closet/crate, /obj/item/coin/silver, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aHn" = ( @@ -7566,7 +7545,7 @@ /area/station/service/bar) "aLD" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/public/construction) "aLE" = ( @@ -7753,11 +7732,8 @@ /turf/simulated/floor/plasteel, /area/station/supply/storage) "aMe" = ( -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aMf" = ( @@ -9148,7 +9124,7 @@ /area/station/command/office/hos) "aQQ" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small{ dir = 8 }, @@ -10230,7 +10206,7 @@ /turf/simulated/floor/plasteel, /area/station/hallway/primary/fore/east) "aUx" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -11245,7 +11221,7 @@ "aXr" = ( /obj/structure/table, /obj/item/storage/belt/utility, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, @@ -11476,7 +11452,7 @@ /area/station/hallway/secondary/entry/north) "aXT" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/public/construction) "aXU" = ( @@ -11537,7 +11513,7 @@ /area/station/hallway/secondary/entry/north) "aYb" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "aYh" = ( @@ -13190,7 +13166,7 @@ /area/station/security/permabrig) "bdl" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "bdm" = ( @@ -15453,10 +15429,7 @@ id = "packageSort2" }, /obj/effect/turf_decal/stripes/line, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/supply/office) "biG" = ( @@ -15519,7 +15492,7 @@ /area/station/hallway/primary/central/north) "biO" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "biS" = ( @@ -15727,7 +15700,7 @@ /obj/structure/rack, /obj/item/apc_electronics, /obj/item/airlock_electronics, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "yellow" }, @@ -16646,7 +16619,7 @@ /obj/item/clothing/gloves/color/fyellow, /obj/item/clothing/suit/storage/hazardvest, /obj/item/multitool, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light_switch{ dir = 4; name = "west bump"; @@ -16964,7 +16937,7 @@ /obj/structure/rack{ dir = 1 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "bmA" = ( @@ -19784,7 +19757,7 @@ /area/station/command/bridge) "buy" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small{ dir = 4 }, @@ -22400,7 +22373,7 @@ /obj/structure/closet, /obj/item/poster/random_contraband, /obj/effect/decal/cleanable/cobweb2, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "bBO" = ( @@ -23690,11 +23663,8 @@ d2 = 4; icon_state = "0-4" }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/machinery/power/apc/directional/south, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/port) "bGd" = ( @@ -23886,7 +23856,7 @@ "bHp" = ( /obj/structure/rack, /obj/item/flashlight, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "bHq" = ( @@ -24150,11 +24120,8 @@ /area/station/maintenance/starboard) "bHX" = ( /obj/machinery/atmospherics/pipe/simple/hidden, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/item/shard, +/obj/effect/spawner/random/trash, /turf/simulated/floor/bluegrid, /area/station/maintenance/starboard) "bHY" = ( @@ -26619,18 +26586,18 @@ /area/station/public/vacant_office) "bRD" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "bRE" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "bRF" = ( /obj/structure/closet, /obj/item/clothing/shoes/jackboots, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "bRG" = ( @@ -27045,14 +27012,6 @@ icon_state = "dark" }, /area/station/medical/morgue) -"bTb" = ( -/obj/effect/landmark/damageturf, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/storage/box/mousetraps,/obj/item/storage/box/lights/tubes,/obj/item/storage/box/lights/mixed,/obj/item/storage/box/lights/bulbs); - name = "Janitor Supplies Spawner" - }, -/turf/simulated/floor/plating, -/area/station/maintenance/port) "bTd" = ( /obj/machinery/light_switch{ dir = 8; @@ -27171,7 +27130,7 @@ "bTr" = ( /obj/structure/closet/crate, /obj/item/rack_parts, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "bTs" = ( @@ -27463,7 +27422,7 @@ /area/station/public/vacant_office) "bUG" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/pipe/simple/hidden, /obj/machinery/light/small{ dir = 8 @@ -27899,10 +27858,7 @@ /turf/simulated/floor/carpet/blue, /area/station/command/office/blueshield) "bWi" = ( -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/port) "bWj" = ( @@ -28929,7 +28885,7 @@ dir = 4 }, /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -29042,11 +28998,9 @@ /area/station/maintenance/port) "caj" = ( /obj/structure/closet/crate/can, -/obj/effect/spawner/lootdrop/maintenance/two, -/obj/item/trash/pistachios, -/obj/item/trash/raisins, -/obj/item/trash/gum, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/fore) "cam" = ( @@ -29381,7 +29335,7 @@ /area/station/service/hydroponics) "cbq" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/port) @@ -29929,7 +29883,7 @@ "cdm" = ( /obj/structure/rack, /obj/item/clothing/mask/gas, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "caution" @@ -30016,7 +29970,7 @@ /area/station/maintenance/port) "cdG" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "cdH" = ( @@ -30371,7 +30325,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "cfb" = ( @@ -31593,7 +31547,7 @@ /obj/item/stack/rods{ amount = 23 }, -/obj/effect/spawner/lootdrop/maintenance/eight, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cjq" = ( @@ -31990,7 +31944,7 @@ /area/station/engineering/solar/aft_port) "ckN" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/structure/sign/poster/contraband/random{ pixel_y = 32 }, @@ -32077,7 +32031,7 @@ /obj/structure/sign/poster/random{ pixel_y = -32 }, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "greenblue" }, @@ -32113,7 +32067,7 @@ "clv" = ( /obj/item/food/monkeycube, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft2) "cly" = ( @@ -32171,7 +32125,7 @@ "clK" = ( /obj/structure/closet, /obj/item/extinguisher, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "clL" = ( @@ -32280,7 +32234,7 @@ "cmg" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/firecloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_right_rare, /turf/simulated/floor/plating, /area/station/maintenance/starboard) @@ -32722,12 +32676,6 @@ icon_state = "chapel" }, /area/station/service/chapel) -"coj" = ( -/obj/structure/closet, -/obj/item/extinguisher, -/obj/effect/spawner/lootdrop/maintenance/two, -/turf/simulated/floor/plating, -/area/station/maintenance/apmaint) "cok" = ( /obj/structure/chair/wheelchair, /obj/item/radio/intercom{ @@ -33648,14 +33596,14 @@ "crQ" = ( /obj/effect/turf_decal/stripes/white/line, /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_left_frequent, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) "crR" = ( /obj/structure/closet/crate, /obj/item/assembly/infra, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/stripes/white/line, /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/plating, @@ -33814,7 +33762,7 @@ pixel_x = 7; pixel_y = 4 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "csG" = ( @@ -33872,7 +33820,7 @@ amount = 34 }, /obj/item/extinguisher/mini, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "csT" = ( @@ -33940,16 +33888,13 @@ d2 = 8; icon_state = "4-8" }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cta" = ( @@ -34207,11 +34152,8 @@ d2 = 4; icon_state = "1-4" }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/storage/box/mousetraps,/obj/item/storage/box/lights/tubes,/obj/item/storage/box/lights/mixed,/obj/item/storage/box/lights/bulbs); - name = "Janitor Supplies Spawner" - }, /obj/effect/turf_decal/stripes/line, +/obj/effect/spawner/random/janitor/supplies, /turf/simulated/floor/plating, /area/station/public/storage/emergency/port) "cuc" = ( @@ -34857,7 +34799,7 @@ /area/station/maintenance/turbine) "cwC" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cwD" = ( @@ -34909,7 +34851,7 @@ /area/station/maintenance/aft) "cwQ" = ( /obj/structure/closet/firecloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_right_frequent, /turf/simulated/floor/plating, /area/station/maintenance/starboard) @@ -35090,7 +35032,7 @@ /obj/structure/rack, /obj/item/reagent_containers/glass/bucket, /obj/item/mop, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "cxE" = ( @@ -35251,7 +35193,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -35433,7 +35375,7 @@ /area/station/science/server/coldroom) "cyT" = ( /obj/item/toy/plushie/shark, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /obj/effect/landmark/spawner/rev, /obj/effect/decal/cleanable/blood/old, /obj/structure/closet/crate, @@ -35447,7 +35389,7 @@ /area/station/engineering/atmos) "cze" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "czg" = ( @@ -35561,10 +35503,7 @@ }, /area/station/medical/storage) "czw" = ( -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/aft) "czx" = ( @@ -35724,7 +35663,7 @@ /area/station/medical/virology) "cAu" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) "cAw" = ( @@ -36221,13 +36160,13 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cCp" = ( /obj/structure/closet/crate, /obj/effect/landmark/damageturf, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cCr" = ( @@ -36719,7 +36658,7 @@ /area/station/command/office/captain/bedroom) "cEh" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cEj" = ( @@ -36777,7 +36716,7 @@ }, /area/station/science/xenobiology) "cEr" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "cEu" = ( @@ -37005,7 +36944,7 @@ dir = 4 }, /obj/structure/closet/firecloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -37109,13 +37048,10 @@ }, /area/station/medical/virology) "cFG" = ( -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/bluegrid, /area/station/maintenance/starboard) "cFH" = ( @@ -37146,7 +37082,7 @@ "cFU" = ( /obj/structure/closet/crate, /obj/effect/turf_decal/delivery/hollow, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "cFY" = ( @@ -38056,15 +37992,12 @@ }, /area/station/medical/cloning) "cIS" = ( -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/structure/sink{ dir = 8; pixel_x = -12; pixel_y = 2 }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cIT" = ( @@ -38497,7 +38430,7 @@ /area/station/medical/surgery/observation) "cKB" = ( /obj/structure/closet/crate/plastic, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "cKC" = ( @@ -38721,7 +38654,7 @@ "cLr" = ( /obj/structure/closet/firecloset, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "caution" @@ -38810,7 +38743,7 @@ /area/station/service/chapel) "cLN" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "cLO" = ( @@ -39190,7 +39123,7 @@ /area/station/maintenance/solar_maintenance/aft_port) "cNw" = ( /obj/structure/closet/wardrobe/white, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/medmaint) "cNz" = ( @@ -39401,7 +39334,7 @@ /area/station/hallway/primary/aft/south) "cOh" = ( /obj/structure/closet/crate/freezer, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ dir = 5; @@ -39668,11 +39601,8 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cPq" = ( -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/storage/box/mousetraps,/obj/item/storage/box/lights/tubes,/obj/item/storage/box/lights/mixed,/obj/item/storage/box/lights/bulbs); - name = "Janitor Supplies Spawner" - }, /obj/effect/landmark/damageturf, +/obj/effect/spawner/random/janitor/supplies, /turf/simulated/floor/plating, /area/station/maintenance/port) "cPr" = ( @@ -39751,7 +39681,7 @@ pixel_x = 32 }, /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cPL" = ( @@ -39849,11 +39779,6 @@ }, /turf/simulated/floor/plating/airless, /area/station/science/toxins/test) -"cQb" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, -/turf/simulated/floor/plating, -/area/station/maintenance/port) "cQc" = ( /obj/structure/window/reinforced{ dir = 1 @@ -39968,7 +39893,7 @@ /obj/item/stack/cable_coil, /obj/item/wrench, /obj/item/flashlight/seclite, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cQI" = ( @@ -40065,7 +39990,7 @@ /area/station/maintenance/solar_maintenance/aft_starboard) "cRc" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "cRe" = ( @@ -40449,12 +40374,6 @@ }, /turf/simulated/floor/wood, /area/station/command/office/ntrep) -"cSK" = ( -/obj/structure/closet/crate, -/obj/effect/turf_decal/delivery/hollow, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plasteel, -/area/station/maintenance/apmaint) "cSL" = ( /obj/structure/table/wood, /obj/item/clothing/under/misc/burial, @@ -40691,7 +40610,7 @@ "cTD" = ( /obj/effect/landmark/burnturf, /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "cTH" = ( @@ -40966,7 +40885,7 @@ /area/station/service/chapel) "cUL" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft2) "cUM" = ( @@ -41355,7 +41274,7 @@ /area/station/hallway/secondary/exit) "cWF" = ( /obj/structure/closet/secure_closet/personal, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/clothing/suit/storage/labcoat/science, /obj/item/clothing/under/rank/rnd/scientist, /obj/effect/decal/cleanable/dirt, @@ -41524,7 +41443,7 @@ /area/station/maintenance/port2) "cXu" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_right_rare, /turf/simulated/floor/plating, /area/station/maintenance/fore) @@ -41747,7 +41666,7 @@ }, /area/station/medical/exam_room) "cYF" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "cYG" = ( @@ -41849,10 +41768,7 @@ /area/station/medical/surgery/primary) "cZi" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "cZl" = ( @@ -41934,7 +41850,7 @@ "cZD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "cZI" = ( @@ -42085,7 +42001,7 @@ /area/station/maintenance/asmaint) "das" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "dat" = ( @@ -42407,7 +42323,7 @@ /area/station/engineering/solar/fore_starboard) "dcj" = ( /obj/structure/chair/sofa/left, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_right_rare, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) @@ -42646,7 +42562,7 @@ /area/space) "ddR" = ( /obj/structure/closet/secure_closet/personal, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/clothing/suit/storage/labcoat/science, /obj/item/clothing/under/rank/rnd/scientist, /obj/effect/decal/cleanable/dirt, @@ -43077,10 +42993,7 @@ /area/station/hallway/secondary/entry/south) "dgg" = ( /obj/effect/landmark/burnturf, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/port) "dgj" = ( @@ -43196,7 +43109,7 @@ d2 = 8; icon_state = "4-8" }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -43206,7 +43119,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "dhl" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/rack, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) @@ -44372,10 +44285,7 @@ /area/station/hallway/primary/central/se) "dCJ" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "dCQ" = ( @@ -44654,7 +44564,7 @@ /area/station/service/hydroponics) "dLg" = ( /obj/item/rack_parts, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "dLF" = ( @@ -45384,7 +45294,7 @@ }, /area/station/public/toilet/lockerroom) "ech" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/table, /obj/effect/spawner/random_spawners/cobweb_left_rare, /turf/simulated/floor/plating, @@ -45985,7 +45895,7 @@ "erF" = ( /obj/structure/closet/crate/radiation, /obj/effect/turf_decal/delivery, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "erM" = ( @@ -46311,7 +46221,7 @@ /area/station/engineering/atmos) "eyo" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "eyP" = ( @@ -47992,7 +47902,7 @@ /turf/space, /area/space/nearstation) "fiU" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small{ dir = 8 }, @@ -48191,7 +48101,7 @@ "fmm" = ( /obj/structure/table, /obj/item/clothing/glasses/meson, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "caution" @@ -48916,13 +48826,13 @@ }, /obj/item/book/manual/wiki/hacking, /obj/item/tape/random, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "fAs" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "fAH" = ( @@ -49759,7 +49669,7 @@ /area/station/science/xenobiology) "fRm" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_left_rare, /turf/simulated/floor/plating, /area/station/maintenance/fore) @@ -49898,7 +49808,7 @@ /area/station/maintenance/starboard) "fUf" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "caution" @@ -50887,7 +50797,7 @@ /area/station/engineering/ai_transit_tube) "gqi" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small{ dir = 8 }, @@ -51104,7 +51014,7 @@ "gwG" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/cardboard, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/toy/plushie/lizardplushie, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -51627,18 +51537,11 @@ /area/station/engineering/control) "gHN" = ( /obj/structure/closet/crate/trashcart, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/screwdriver, /obj/item/wirecutters, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "gHV" = ( @@ -53010,7 +52913,7 @@ /area/station/supply/lobby) "hjE" = ( /obj/effect/spawner/random_spawners/oil_maybe, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "hka" = ( @@ -53359,7 +53262,7 @@ /area/station/engineering/atmos/control) "hqx" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft2) "hqL" = ( @@ -53447,7 +53350,7 @@ /area/station/medical/virology) "hts" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small{ dir = 1 }, @@ -53746,10 +53649,6 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "hAK" = ( -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ @@ -53757,6 +53656,7 @@ d2 = 2; icon_state = "1-2" }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/fore) "hAL" = ( @@ -53854,11 +53754,8 @@ /obj/structure/closet/crate/secure/bin, /obj/item/paper/crumpled, /obj/item/paper/crumpled, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/aft2) "hCM" = ( @@ -53902,11 +53799,6 @@ icon_state = "neutralcorner" }, /area/station/hallway/secondary/bridge) -"hDE" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, -/turf/simulated/floor/plating, -/area/station/maintenance/asmaint) "hDK" = ( /turf/simulated/floor/plasteel, /area/station/supply/lobby) @@ -53946,7 +53838,7 @@ /area/station/science/robotics) "hEj" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/xenobio_north) "hEo" = ( @@ -54111,7 +54003,7 @@ /area/station/engineering/control) "hFY" = ( /obj/structure/closet/firecloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "hGj" = ( @@ -55345,20 +55237,17 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/structure/cable{ d1 = 1; d2 = 4; icon_state = "1-4" }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/xenobio_north) "igJ" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_left_frequent, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) @@ -55423,11 +55312,6 @@ }, /turf/simulated/floor/plasteel, /area/station/engineering/atmos) -"iip" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/station/maintenance/port) "iiB" = ( /obj/docking_port/stationary{ dir = 8; @@ -56348,7 +56232,7 @@ /area/station/security/execution) "iBb" = ( /obj/structure/closet/secure_closet/personal, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/clothing/under/plasmaman/science, /obj/item/clothing/head/helmet/space/plasmaman/science, /obj/effect/spawner/random_spawners/cobweb_left_rare, @@ -56419,11 +56303,8 @@ /obj/structure/disposalpipe/broken{ dir = 1 }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "iBR" = ( @@ -56545,7 +56426,7 @@ /obj/structure/closet/crate{ name = "Silver Crate" }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "iGV" = ( @@ -57715,7 +57596,7 @@ /area/station/engineering/control) "jiR" = ( /obj/structure/closet/firecloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_left_frequent, /turf/simulated/floor/plating, /area/station/maintenance/fore) @@ -57733,7 +57614,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/rack, /obj/item/tank/internals/anesthetic, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/sign/poster/contraband/random{ pixel_y = 32 }, @@ -58131,7 +58012,7 @@ "juY" = ( /obj/structure/rack, /obj/item/poster/random_contraband, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "jvf" = ( @@ -58658,7 +58539,7 @@ /area/station/security/armory) "jGq" = ( /obj/structure/closet/crate/engineering/electrical, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "jGr" = ( @@ -59664,7 +59545,7 @@ /obj/item/stack/sheet/glass{ amount = 12 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "jXC" = ( @@ -59726,7 +59607,7 @@ /area/station/science/xenobiology) "jYH" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/cable{ d1 = 1; d2 = 8; @@ -59903,7 +59784,7 @@ /area/station/maintenance/aft2) "ken" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small{ dir = 1 }, @@ -60311,10 +60192,7 @@ /area/station/engineering/atmos) "kol" = ( /obj/effect/landmark/burnturf, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/fore) "kpl" = ( @@ -60484,7 +60362,7 @@ /area/station/maintenance/engimaint) "ksa" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "ksb" = ( @@ -60827,22 +60705,10 @@ "kAP" = ( /obj/structure/closet/crate/trashcart, /obj/effect/turf_decal/delivery, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, +/obj/effect/spawner/random/trash, +/obj/effect/spawner/random/trash, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "kBa" = ( @@ -61196,10 +61062,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/medmaint) "kGN" = ( @@ -61238,7 +61101,7 @@ "kIc" = ( /obj/structure/rack, /obj/item/hand_labeler, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "kIi" = ( @@ -61509,7 +61372,7 @@ d2 = 8; icon_state = "4-8" }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "kOw" = ( @@ -61763,7 +61626,7 @@ /area/station/security/permabrig) "kUz" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/xenobio_south) "kUA" = ( @@ -62595,7 +62458,7 @@ /area/station/science/rnd) "ljT" = ( /obj/item/rack_parts, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_right_rare, /turf/simulated/floor/plating, /area/station/maintenance/fore) @@ -63164,7 +63027,7 @@ /area/station/maintenance/port) "lvJ" = ( /obj/structure/closet/secure_closet/personal, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/item/clothing/under/rank/rnd/scientist/skirt, /obj/item/clothing/suit/hooded/wintercoat/science, /obj/item/clothing/head/hooded/winterhood/science, @@ -63277,7 +63140,7 @@ /obj/machinery/atmospherics/pipe/simple/visible{ dir = 9 }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/xenobio_north) "lAl" = ( @@ -63434,7 +63297,7 @@ /area/station/maintenance/fpmaint) "lCO" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft2) "lCQ" = ( @@ -63532,7 +63395,7 @@ /area/station/science/toxins/mixing) "lEM" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "lEN" = ( @@ -63593,7 +63456,7 @@ "lFM" = ( /obj/structure/closet/crate, /obj/item/cane, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) "lGh" = ( @@ -63697,7 +63560,7 @@ /area/station/maintenance/fore) "lHy" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /obj/item/clothing/gloves/color/white, /turf/simulated/floor/plating, /area/station/maintenance/fore) @@ -63819,7 +63682,7 @@ /area/station/security/brig) "lJt" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "lJA" = ( @@ -64411,7 +64274,7 @@ /area/station/science/xenobiology) "lXi" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_left_rare, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) @@ -64422,7 +64285,7 @@ /obj/structure/rack, /obj/effect/decal/cleanable/dirt, /obj/item/clothing/suit/storage/hazardvest, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "caution" }, @@ -65390,7 +65253,7 @@ /area/station/maintenance/fore2) "mtr" = ( /obj/structure/closet/firecloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_right_rare, /turf/simulated/floor/plating, /area/station/maintenance/aft2) @@ -65539,7 +65402,7 @@ "mxp" = ( /obj/structure/rack, /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft2) "mxw" = ( @@ -67336,7 +67199,7 @@ desc = "Takes you to a whole new level of thinking."; name = "Meta-Cider" }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) @@ -67468,7 +67331,7 @@ "nhR" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/firecloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/fsmaint) "nia" = ( @@ -68130,7 +67993,7 @@ /area/station/service/clown) "nwY" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/stripes/white/line{ dir = 10 }, @@ -68358,7 +68221,7 @@ /area/station/maintenance/fore) "nBf" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_right_rare, /turf/simulated/floor/plating, /area/station/maintenance/aft2) @@ -68392,7 +68255,7 @@ /area/station/medical/reception) "nBW" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5 }, @@ -68405,7 +68268,7 @@ /area/station/maintenance/apmaint) "nCh" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "whitepurple" @@ -68463,7 +68326,7 @@ /area/station/security/brig) "nDd" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/xenobio_south) "nDi" = ( @@ -69001,7 +68864,7 @@ /area/station/supply/lobby) "nPD" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_left_frequent, /turf/simulated/floor/plating, /area/station/maintenance/fore) @@ -69443,11 +69306,6 @@ /obj/item/toy/plushie/carpplushie, /turf/space, /area/space/nearstation) -"oai" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/eight, -/turf/simulated/floor/plating, -/area/station/maintenance/fpmaint) "oaj" = ( /obj/structure/table/glass, /obj/structure/cable{ @@ -69613,10 +69471,6 @@ /turf/simulated/floor/bluegrid, /area/station/telecomms/chamber) "odT" = ( -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -69625,6 +69479,7 @@ d2 = 8; icon_state = "4-8" }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/xenobio_north) "odW" = ( @@ -70250,7 +70105,7 @@ }, /area/station/service/chapel/office) "oyN" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "oyP" = ( @@ -70562,15 +70417,12 @@ }, /area/station/engineering/gravitygenerator) "oFf" = ( -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/structure/cable{ d1 = 1; d2 = 8; icon_state = "1-8" }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/xenobio_south) "oFn" = ( @@ -70709,7 +70561,7 @@ /area/station/engineering/controlroom) "oIs" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "oIT" = ( @@ -71032,7 +70884,7 @@ dir = 4 }, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "whitepurple" @@ -71258,7 +71110,7 @@ /area/station/legal/lawoffice) "oUa" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/sign/poster/contraband/random{ pixel_y = 32 }, @@ -71613,7 +71465,7 @@ "pcb" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "pcd" = ( @@ -71787,15 +71639,12 @@ /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "pes" = ( -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/structure/cable{ d1 = 1; d2 = 4; icon_state = "1-4" }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/xenobio_south) "peF" = ( @@ -71811,7 +71660,7 @@ /obj/structure/table, /obj/item/storage/belt/utility, /obj/item/robotanalyzer, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/starboard2) "pfp" = ( @@ -72519,7 +72368,7 @@ /area/station/hallway/secondary/exit) "pvb" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/starboard2) "pvo" = ( @@ -73056,11 +72905,6 @@ icon_state = "darkred" }, /area/station/security/storage) -"pGU" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, -/turf/simulated/floor/plating, -/area/station/maintenance/fpmaint) "pHq" = ( /obj/structure/rack, /obj/item/clothing/head/helmet/riot{ @@ -74412,7 +74256,7 @@ /area/station/maintenance/starboard2) "qiA" = ( /obj/structure/closet/crate/sci, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/xenobio_north) "qiI" = ( @@ -75195,11 +75039,8 @@ dir = 4 }, /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/aft2) "qyo" = ( @@ -75275,7 +75116,7 @@ /area/station/maintenance/aft2) "qzT" = ( /obj/structure/closet/secure_closet/hydroponics, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) "qAb" = ( @@ -75599,10 +75440,7 @@ }, /area/station/security/main) "qJN" = ( -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -75761,7 +75599,7 @@ /obj/structure/cable/cyan{ icon_state = "2-4" }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore) "qNV" = ( @@ -77004,7 +76842,7 @@ "roH" = ( /obj/structure/closet/crate/internals, /obj/effect/turf_decal/delivery/hollow, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "rpt" = ( @@ -77088,10 +76926,7 @@ /area/station/medical/exam_room) "rqC" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -77322,7 +77157,7 @@ "ruo" = ( /obj/structure/rack, /obj/item/stack/cable_coil/random, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) "ruH" = ( @@ -77482,10 +77317,7 @@ /area/station/science/storage) "rxV" = ( /obj/structure/table/reinforced, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "caution" @@ -77879,7 +77711,7 @@ "rFg" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate/medical, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/aft) "rFq" = ( @@ -78051,7 +77883,7 @@ "rIT" = ( /obj/structure/table, /obj/item/geiger_counter, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "caution" @@ -78526,7 +78358,7 @@ /area/station/maintenance/turbine) "rRg" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -79960,22 +79792,6 @@ dir = 4 }, /obj/structure/closet/crate/trashcart, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/effect/landmark/burnturf, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -79988,6 +79804,10 @@ d2 = 8; icon_state = "4-8" }, +/obj/effect/spawner/random/trash, +/obj/effect/spawner/random/trash, +/obj/effect/spawner/random/trash, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/aft) "szY" = ( @@ -81175,7 +80995,7 @@ /area/station/science/xenobiology) "sZC" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_right_frequent, /obj/machinery/light/small{ dir = 1 @@ -81288,7 +81108,7 @@ /area/station/science/research) "tba" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_left_rare, /obj/structure/cable{ d1 = 2; @@ -81336,7 +81156,7 @@ /area/station/science/xenobiology) "tca" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) @@ -81690,7 +81510,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) "tjd" = ( @@ -82001,11 +81821,6 @@ }, /turf/space, /area/space/nearstation) -"tpw" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/three, -/turf/simulated/floor/plating, -/area/station/maintenance/port) "tpD" = ( /obj/effect/spawner/window, /turf/simulated/floor/plating, @@ -83059,7 +82874,7 @@ /area/station/service/hydroponics) "tTK" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance/three, +/obj/effect/spawner/random/maintenance, /obj/structure/disposalpipe/segment/corner{ dir = 8 }, @@ -83482,10 +83297,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "caution" @@ -83656,7 +83468,7 @@ "ufr" = ( /obj/structure/table, /obj/item/clothing/gloves/color/fyellow, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ dir = 8 @@ -83676,7 +83488,7 @@ d2 = 8; icon_state = "4-8" }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port2) "ufD" = ( @@ -84071,10 +83883,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/fore) "uoQ" = ( -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "upe" = ( @@ -84123,7 +83932,7 @@ "uqN" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate/medical, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -84781,7 +84590,7 @@ /area/station/hallway/primary/aft/north) "uIW" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/turf_decal/stripes/corner{ dir = 1 }, @@ -85097,7 +84906,7 @@ /area/station/engineering/break_room) "uNQ" = ( /obj/structure/closet/crate/medical, -/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "uOg" = ( @@ -86300,7 +86109,7 @@ /area/station/service/hydroponics) "vmT" = ( /obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) "vmW" = ( @@ -86351,7 +86160,7 @@ "vnt" = ( /obj/structure/closet/crate, /obj/effect/turf_decal/delivery, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/apmaint) "vnQ" = ( @@ -86610,7 +86419,7 @@ "vtY" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "vub" = ( @@ -86755,11 +86564,6 @@ /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, /area/station/security/execution) -"vxi" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/three, -/turf/simulated/floor/plating, -/area/station/maintenance/fpmaint) "vxx" = ( /obj/effect/spawner/random_spawners/grille_often, /turf/simulated/floor/plating, @@ -86816,25 +86620,6 @@ icon_state = "green" }, /area/station/security/permabrig) -"vzu" = ( -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ - dir = 8 - }, -/obj/structure/disposalpipe/segment/corner{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/simulated/floor/plasteel, -/area/station/maintenance/fsmaint) "vzD" = ( /obj/machinery/iv_drip, /obj/structure/cable{ @@ -87055,7 +86840,7 @@ /area/station/security/processing) "vFm" = ( /obj/structure/closet/emcloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_left_rare, /turf/simulated/floor/plating, /area/station/maintenance/starboard) @@ -88047,7 +87832,7 @@ }, /obj/structure/table, /obj/item/storage/toolbox/electrical, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/effect/spawner/random_spawners/cobweb_right_rare, /turf/simulated/floor/plasteel, /area/station/maintenance/starboard2) @@ -88262,22 +88047,10 @@ /area/station/engineering/control) "wlo" = ( /obj/structure/closet/crate/trashcart, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, +/obj/effect/spawner/random/trash, +/obj/effect/spawner/random/trash, +/obj/effect/spawner/random/trash, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "wlG" = ( @@ -88306,13 +88079,10 @@ /area/station/engineering/control) "wlT" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/structure/disposalpipe/segment/corner{ dir = 2 }, +/obj/effect/spawner/random/trash, /turf/simulated/floor/plating, /area/station/maintenance/aft) "wlW" = ( @@ -88419,12 +88189,9 @@ }, /area/station/science/research) "woK" = ( -/obj/effect/spawner/lootdrop{ - loot = list(/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "trash spawner" - }, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /obj/item/pen, +/obj/effect/spawner/random/trash, /turf/simulated/floor/bluegrid, /area/station/maintenance/starboard) "woN" = ( @@ -88505,7 +88272,7 @@ /area/station/aisat) "wrO" = ( /obj/structure/closet/firecloset, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plasteel, /area/station/maintenance/starboard2) "wrW" = ( @@ -88896,7 +88663,7 @@ /area/station/maintenance/fore) "wzV" = ( /obj/structure/closet/crate, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/machinery/light/small{ dir = 1 }, @@ -88973,7 +88740,7 @@ dir = 1 }, /obj/item/radio, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "wBR" = ( @@ -89314,7 +89081,7 @@ /turf/simulated/floor/engine, /area/station/engineering/control) "wKQ" = ( -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /obj/structure/table, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -90449,7 +90216,7 @@ /area/station/security/permabrig) "xkc" = ( /obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/starboard2) "xki" = ( @@ -90973,7 +90740,7 @@ d2 = 8; icon_state = "4-8" }, -/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/random/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) "xuG" = ( @@ -92159,6 +91926,22 @@ /obj/machinery/atmospherics/portable/canister/sleeping_agent, /turf/simulated/floor/plasteel, /area/station/engineering/atmos/control) +"xWu" = ( +/obj/effect/spawner/random/trash, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + dir = 8 + }, +/obj/structure/disposalpipe/segment/corner{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel, +/area/station/maintenance/fsmaint) "xWI" = ( /obj/structure/closet/secure_closet/brig, /turf/simulated/floor/plasteel{ @@ -105874,7 +105657,7 @@ uWq bBv dgb cdT -bTb +cPq bBz anE cdT @@ -106613,7 +106396,7 @@ adY cEr rbU xgb -vxi +aAP fuy adY aYb @@ -106908,7 +106691,7 @@ rvu wfa clT bTY -cQb +cLN bZP bcO bQy @@ -107154,7 +106937,7 @@ bHd aUu ckv cdT -tpw +cLN bTY bTY bTY @@ -108976,7 +108759,7 @@ xZa cCy crG crG -cSK +cFU crG jGq crG @@ -109239,7 +109022,7 @@ cFU cpD crG bZP -coj +clK gof crG bZP @@ -111224,7 +111007,7 @@ aOB aKy jGH aOB -oai +aAP aOB bfn eiR @@ -112257,7 +112040,7 @@ vyn vyn aEM aDz -pGU +aYb aAP aVl aVl @@ -113333,7 +113116,7 @@ bFw bTt cdT bqQ -iip +bRE bZP ceu tVy @@ -128535,7 +128318,7 @@ bUG nBW cPc rRg -hDE +das rOZ ljg fuC @@ -133068,7 +132851,7 @@ lEo qvN iBO aUx -vzu +xWu jJr tmq aBZ diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index 79047dfc6e63..0c172757ce39 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -883,3 +883,40 @@ for(var/key in input) UNTYPED_LIST_ADD(keys, key) return keys + +/** + * Given a list, return a copy where values without defined weights are given weight 1. + * For example, fill_with_ones(list(A, B=2, C)) = list(A=1, B=2, C=1) + * Useful for weighted random choices (loot tables, syllables in languages, etc.) + */ +/proc/fill_with_ones(list/list_to_pad) + if(!islist(list_to_pad)) + return list_to_pad + + var/list/final_list = list() + + for(var/key in list_to_pad) + if(list_to_pad[key]) + final_list[key] = list_to_pad[key] + else + final_list[key] = 1 + + return final_list + +/** + * Like pick_weight, but allowing for nested lists. + * + * For example, given the following list: + * list(A = 1, list(B = 1, C = 1)) + * A would have a 50% chance of being picked, + * and list(B, C) would have a 50% chance of being picked. + * If list(B, C) was picked, B and C would then each have a 50% chance of being picked. + * So the final probabilities would be 50% for A, 25% for B, and 25% for C. + * + * Weights should be integers. Entries without weights are assigned weight 1 (so unweighted lists can be used as well) + */ +/proc/pick_weight_recursive(list/list_to_pick) + var/result = pickweight(fill_with_ones(list_to_pick)) + while(islist(result)) + result = pickweight(fill_with_ones(result)) + return result diff --git a/code/_globalvars/lists/maint_loot_tables.dm b/code/_globalvars/lists/maint_loot_tables.dm new file mode 100644 index 000000000000..12640e2c35a4 --- /dev/null +++ b/code/_globalvars/lists/maint_loot_tables.dm @@ -0,0 +1,206 @@ +GLOBAL_LIST_INIT(maintenance_loot_tier_0, list( + list( + // Tools + /obj/effect/spawner/random/engineering/tools, + + // Materials + /obj/effect/spawner/random/engineering/materials, + ) = 6, + + list( + // Spawners for easily found items + /obj/effect/spawner/random/bureaucracy, + /obj/effect/spawner/random/dice, + /obj/effect/spawner/random/book, + + // Other worthless/easily found items + /obj/item/camera_film, + /obj/item/camera, + /obj/item/caution, + /obj/item/clothing/head/cone, + /obj/item/light/bulb, + /obj/item/light/tube, + /obj/item/poster/random_contraband, + /obj/item/poster/random_official, + /obj/item/reagent_containers/drinks/drinkingglass, + /obj/item/reagent_containers/glass/beaker/waterbottle, + /obj/item/reagent_containers/glass/beaker/waterbottle/empty, + /obj/item/scissors, + /obj/item/storage/box, + /obj/item/storage/fancy/crayons, + /obj/item/storage/fancy/matches, + ) = 2, + + list( + // Emergency items + /obj/item/extinguisher, + /obj/item/flashlight, + ) = 1, +)) + +GLOBAL_LIST_INIT(maintenance_loot_tier_1, list( + list( + // Sub-spawners + /obj/effect/spawner/random/engineering/toolbox, + /obj/effect/spawner/random/snacks, + + // Assemblies and cells + /obj/item/assembly/prox_sensor, + /obj/item/assembly/timer, + /obj/item/assembly/signaler, + /obj/item/assembly/voice, + /obj/item/assembly/voice/noise, + /obj/item/stock_parts/cell, + + // Clothing + /obj/item/clothing/glasses/sunglasses, + /obj/item/clothing/gloves/color/black, + /obj/item/clothing/gloves/color/fyellow, + /obj/item/clothing/gloves/color/yellow/fake, + /obj/item/clothing/head/hardhat, + /obj/item/clothing/head/hardhat/red, + /obj/item/clothing/head/that, + /obj/item/clothing/head/ushanka, + /obj/item/clothing/mask/gas, + /obj/item/clothing/shoes/black, + /obj/item/clothing/suit/storage/hazardvest, + /obj/item/clothing/under/color/black, + /obj/item/clothing/under/misc/vice, + + // Medical supplies / chemistry items + /obj/item/reagent_containers/dropper, + /obj/item/reagent_containers/glass/beaker, + /obj/item/reagent_containers/glass/beaker/large, + /obj/item/reagent_containers/syringe, + /obj/item/stack/medical/bruise_pack/advanced, + /obj/item/stack/medical/ointment/advanced, + + // Common items + /obj/item/bodybag, + /obj/item/cultivator, + /obj/item/flashlight/pen, + /obj/item/radio/off, + /obj/item/reagent_containers/drinks/mug, + /obj/item/reagent_containers/glass/bucket, + /obj/item/reagent_containers/spray/pestspray, + /obj/item/relic, + /obj/item/restraints/handcuffs/toy, + /obj/item/scratch, + /obj/item/seeds/ambrosia, + /obj/item/seeds/ambrosia/deus, + /obj/item/stack/sheet/cardboard, + /obj/item/stack/sheet/cloth, + /obj/item/storage/bag/plasticbag, + /obj/item/storage/box/cups, + /obj/item/storage/box/donkpockets, + /obj/item/storage/box/lights/mixed, + /obj/item/storage/fancy/cigarettes/dromedaryco, + /obj/item/tank/internals/emergency_oxygen, + /obj/item/tank/internals/emergency_oxygen/engi, + /obj/item/vending_refill/cola, + ) = 85, + + list( + /obj/item/storage/wallet, + /obj/item/storage/wallet/random, + ) = 5, + + list( + // Small chance of tier 1 stock parts + /obj/item/stock_parts/capacitor, + /obj/item/stock_parts/manipulator, + /obj/item/stock_parts/matter_bin, + /obj/item/stock_parts/micro_laser, + /obj/item/stock_parts/scanning_module, + + // Coins + /obj/item/coin/silver, + /obj/item/coin/twoheaded, + ) = 2, +)) + +GLOBAL_LIST_INIT(maintenance_loot_tier_2, list( + list( + // Rarer items + /obj/effect/spawner/random/mod/maint, + /obj/item/clothing/glasses/meson, + /obj/item/clothing/head/welding, + /obj/item/crowbar/red, + /obj/item/storage/belt/utility, + ) = 45, + + list( + // Contraband and Syndicate items + /obj/item/ammo_box/magazine/m10mm, + /obj/item/clothing/mask/chameleon, + /obj/item/clothing/mask/chameleon/voice_change, + /obj/item/clothing/mask/gas/voice_modulator, + /obj/item/clothing/mask/gas/voice_modulator/chameleon, + /obj/item/clothing/shoes/chameleon/noslip, + /obj/item/clothing/suit/jacket/bomber/syndicate, + /obj/item/clothing/suit/storage/iaa/blackjacket/armored, + /obj/item/clothing/under/chameleon, + /obj/item/deck/cards/syndicate, + /obj/item/grenade/clown_grenade, + /obj/item/grenade/smokebomb, + /obj/item/gun/syringe/syndicate, + /obj/item/melee/knuckleduster/syndie, + /obj/item/mod/construction/broken_core, + /obj/item/multitool/ai_detect, + /obj/item/seeds/ambrosia/cruciatus, + /obj/item/soap/syndie, + /obj/item/stamp/chameleon, + /obj/item/storage/backpack/duffel/syndie/med/surgery_fake, + /obj/item/storage/backpack/satchel_flat, + /obj/item/storage/belt/military/traitor, + /obj/item/storage/fancy/cigarettes/cigpack_syndicate, + /obj/item/storage/pill_bottle/fakedeath, + /obj/item/storage/secure/briefcase/syndie, + /obj/item/storage/toolbox/syndicate, + /obj/item/suppressor, + /obj/item/weaponcrafting/receiver, + ) = 45, + + list( + // Health/repair kits + /obj/item/storage/firstaid/regular, + /obj/item/storage/firstaid/machine, + + // Rarer departmental items + /obj/item/reagent_scanner/adv, + /obj/item/robotanalyzer, + /obj/item/stack/nanopaste, + /obj/item/whetstone, + + // Other rare but useful items + /obj/item/radio/headset, + /obj/item/melee/knuckleduster, + ) = 3, +)) + +GLOBAL_LIST_INIT(maintenance_loot_tier_3, list( + list( + // Coveted items + /obj/item/clothing/gloves/color/yellow, + ) = 7, + + list( + // Rare Syndicate items + /obj/item/gun/projectile/automatic/pistol, + /obj/item/dnascrambler, + /obj/item/bio_chip_implanter/storage, + /obj/item/reagent_containers/spray/sticky_tar, + /obj/item/storage/box/syndie_kit/space, + ) = 3, +)) + +GLOBAL_LIST_INIT(maintenance_loot_tables, list( + list( + GLOB.maintenance_loot_tier_0 = 490, + GLOB.maintenance_loot_tier_1 = 390, + GLOB.maintenance_loot_tier_2 = 114, + GLOB.maintenance_loot_tier_3 = 6, + ) = 75, + + /obj/effect/spawner/random/trash = 25, +)) diff --git a/code/game/objects/effects/spawners/decorative_spawners.dm b/code/game/objects/effects/spawners/decorative_spawners.dm new file mode 100644 index 000000000000..7b200d627308 --- /dev/null +++ b/code/game/objects/effects/spawners/decorative_spawners.dm @@ -0,0 +1,131 @@ +/obj/effect/spawner/random_spawners + name = "random spawners" + icon = 'icons/effects/spawner_icons.dmi' + icon_state = "questionmark" + var/list/result = list( + /datum/nothing = 1, + /obj/effect/decal/cleanable/blood/splatter = 1, + /obj/effect/decal/cleanable/blood/oil = 1, + /obj/effect/decal/cleanable/fungus = 1) + var/spawn_inside = null + +// This needs to use New() instead of Initialize() because the thing it creates might need to be initialized too +// AA 2022-08-11: The above comment doesnt even make sense. If extra atoms are loaded during SSatoms.Initialize(), they still get initialised! +/obj/effect/spawner/random_spawners/New() + . = ..() + var/turf/T = get_turf(src) + if(!T) + stack_trace("Spawner placed in nullspace!") + return + randspawn(T) + +/obj/effect/spawner/random_spawners/proc/randspawn(turf/T) + var/thing_to_place = pickweight(result) + if(ispath(thing_to_place, /datum/nothing)) + // Nothing. + qdel(src) // See line 13, this needs moving to /Initialize() so we can use the qdel hint already + return + else if(ispath(thing_to_place, /turf)) + T.ChangeTurf(thing_to_place) + else + if(ispath(spawn_inside, /obj)) + var/obj/O = new thing_to_place(T) + var/obj/E = new spawn_inside(T) + O.forceMove(E) + else + new thing_to_place(T) + qdel(src) + +/obj/effect/spawner/random_spawners/blood_maybe + name = "blood maybe" + icon_state = "blood" + result = list( + /datum/nothing = 20, + /obj/effect/decal/cleanable/blood/splatter = 1) + +/obj/effect/spawner/random_spawners/blood_often + name = "blood often" + icon_state = "blood" + result = list( + /datum/nothing = 5, + /obj/effect/decal/cleanable/blood/splatter = 1) + +/obj/effect/spawner/random_spawners/oil_maybe + name = "oil maybe" + icon_state = "oil" + result = list( + /datum/nothing = 20, + /obj/effect/decal/cleanable/blood/oil = 1) + +/obj/effect/spawner/random_spawners/oil_often + name = "oil often" + icon_state = "oil" + result = list( + /datum/nothing = 5, + /obj/effect/decal/cleanable/blood/oil = 1) + +/obj/effect/spawner/random_spawners/cobweb_left_frequent + name = "cobweb left frequent" + icon_state = "cobwebl" + result = list( + /datum/nothing = 1, + /obj/effect/decal/cleanable/cobweb = 1) + +/obj/effect/spawner/random_spawners/cobweb_right_frequent + name = "cobweb right frequent" + icon_state = "cobwebr" + result = list( + /datum/nothing = 1, + /obj/effect/decal/cleanable/cobweb2 = 1) + +/obj/effect/spawner/random_spawners/cobweb_left_rare + name = "cobweb left rare" + icon_state = "cobwebl" + result = list( + /datum/nothing = 10, + /obj/effect/decal/cleanable/cobweb = 1) + +/obj/effect/spawner/random_spawners/cobweb_right_rare + name = "cobweb right rare" + icon_state = "cobwebr" + result = list( + /datum/nothing = 10, + /obj/effect/decal/cleanable/cobweb2 = 1) + +/obj/effect/spawner/random_spawners/dirt_frequent + name = "dirt frequent" + icon_state = "dirt" + result = list( + /datum/nothing = 1, + /obj/effect/decal/cleanable/dirt = 1) + +/obj/effect/spawner/random_spawners/dirt_often + name = "dirt often" + icon_state = "dirt" + result = list( + /datum/nothing = 5, + /obj/effect/decal/cleanable/dirt = 1) + +/obj/effect/spawner/random_spawners/dirt_maybe + name = "dirt maybe" + icon_state = "dirt" + result = list( + /datum/nothing = 7, + /obj/effect/decal/cleanable/dirt = 1) + +/obj/effect/spawner/random_spawners/fungus_maybe + name = "fungus maybe" + icon_state = "fungus" + color = "#D5820B" + result = list( + /datum/nothing = 7, + /obj/effect/decal/cleanable/fungus = 1) + +/obj/effect/spawner/random_spawners/fungus_probably + name = "fungus probably" + icon_state = "fungus" + color = "#D5820B" + result = list( + /datum/nothing = 1, + /obj/effect/decal/cleanable/fungus = 7) + diff --git a/code/game/objects/effects/spawners/random_spawners.dm b/code/game/objects/effects/spawners/depot_spawners.dm similarity index 58% rename from code/game/objects/effects/spawners/random_spawners.dm rename to code/game/objects/effects/spawners/depot_spawners.dm index 32b8052bd2f9..ac489f588c2d 100644 --- a/code/game/objects/effects/spawners/random_spawners.dm +++ b/code/game/objects/effects/spawners/depot_spawners.dm @@ -1,185 +1,6 @@ -/obj/effect/spawner/random_spawners - name = "random spawners" - icon = 'icons/effects/spawner_icons.dmi' - icon_state = "questionmark" - var/list/result = list( - /datum/nothing = 1, - /obj/effect/decal/cleanable/blood/splatter = 1, - /obj/effect/decal/cleanable/blood/oil = 1, - /obj/effect/decal/cleanable/fungus = 1) - var/spawn_inside = null - -// This needs to use New() instead of Initialize() because the thing it creates might need to be initialized too -// AA 2022-08-11: The above comment doesnt even make sense. If extra atoms are loaded during SSatoms.Initialize(), they still get initialised! -/obj/effect/spawner/random_spawners/New() - . = ..() - var/turf/T = get_turf(src) - if(!T) - stack_trace("Spawner placed in nullspace!") - return - randspawn(T) - -/obj/effect/spawner/random_spawners/proc/randspawn(turf/T) - var/thing_to_place = pickweight(result) - if(ispath(thing_to_place, /datum/nothing)) - // Nothing. - qdel(src) // See line 13, this needs moving to /Initialize() so we can use the qdel hint already - return - else if(ispath(thing_to_place, /turf)) - T.ChangeTurf(thing_to_place) - else - if(ispath(spawn_inside, /obj)) - var/obj/O = new thing_to_place(T) - var/obj/E = new spawn_inside(T) - O.forceMove(E) - else - new thing_to_place(T) - qdel(src) - -/obj/effect/spawner/random_spawners/blood_maybe - name = "blood maybe" - icon_state = "blood" - result = list( - /datum/nothing = 20, - /obj/effect/decal/cleanable/blood/splatter = 1) - -/obj/effect/spawner/random_spawners/blood_often - name = "blood often" - icon_state = "blood" - result = list( - /datum/nothing = 5, - /obj/effect/decal/cleanable/blood/splatter = 1) - -/obj/effect/spawner/random_spawners/oil_maybe - name = "oil maybe" - icon_state = "oil" - result = list( - /datum/nothing = 20, - /obj/effect/decal/cleanable/blood/oil = 1) - -/obj/effect/spawner/random_spawners/oil_often - name = "oil often" - icon_state = "oil" - result = list( - /datum/nothing = 5, - /obj/effect/decal/cleanable/blood/oil = 1) - -/obj/effect/spawner/random_spawners/proc/rustify(turf/T) - var/turf/simulated/wall/W = T - if(istype(W) && !W.rusted) - W.rust() - -/obj/effect/spawner/random_spawners/wall_rusted_probably - name = "rusted wall probably" - icon_state = "rust" - -/obj/effect/spawner/random_spawners/wall_rusted_probably/randspawn(turf/T) - if(prob(75)) - rustify(T) - qdel(src) - -/obj/effect/spawner/random_spawners/wall_rusted_maybe - name = "rusted wall maybe" - icon_state = "rust" - -/obj/effect/spawner/random_spawners/wall_rusted_maybe/randspawn(turf/T) - if(prob(25)) - rustify(T) - qdel(src) - -/obj/effect/spawner/random_spawners/wall_rusted_always - name = "rusted wall always" - icon_state = "rust" - -/obj/effect/spawner/random_spawners/wall_rusted_always/randspawn(turf/T) - rustify(T) - qdel(src) - -/obj/effect/spawner/random_spawners/cobweb_left_frequent - name = "cobweb left frequent" - icon_state = "cobwebl" - result = list( - /datum/nothing = 1, - /obj/effect/decal/cleanable/cobweb = 1) - -/obj/effect/spawner/random_spawners/cobweb_right_frequent - name = "cobweb right frequent" - icon_state = "cobwebr" - result = list( - /datum/nothing = 1, - /obj/effect/decal/cleanable/cobweb2 = 1) - -/obj/effect/spawner/random_spawners/cobweb_left_rare - name = "cobweb left rare" - icon_state = "cobwebl" - result = list( - /datum/nothing = 10, - /obj/effect/decal/cleanable/cobweb = 1) - -/obj/effect/spawner/random_spawners/cobweb_right_rare - name = "cobweb right rare" - icon_state = "cobwebr" - result = list( - /datum/nothing = 10, - /obj/effect/decal/cleanable/cobweb2 = 1) - -/obj/effect/spawner/random_spawners/dirt_frequent - name = "dirt frequent" - icon_state = "dirt" - result = list( - /datum/nothing = 1, - /obj/effect/decal/cleanable/dirt = 1) - -/obj/effect/spawner/random_spawners/dirt_often - name = "dirt often" - icon_state = "dirt" - result = list( - /datum/nothing = 5, - /obj/effect/decal/cleanable/dirt = 1) - -/obj/effect/spawner/random_spawners/dirt_maybe - name = "dirt maybe" - icon_state = "dirt" - result = list( - /datum/nothing = 7, - /obj/effect/decal/cleanable/dirt = 1) - -/obj/effect/spawner/random_spawners/fungus_maybe - name = "fungus maybe" - icon_state = "fungus" - color = "#D5820B" - result = list( - /datum/nothing = 7, - /obj/effect/decal/cleanable/fungus = 1) - -/obj/effect/spawner/random_spawners/fungus_probably - name = "fungus probably" - icon_state = "fungus" - color = "#D5820B" - result = list( - /datum/nothing = 1, - /obj/effect/decal/cleanable/fungus = 7) - -/obj/effect/spawner/random_spawners/mod - name = "MOD module spawner" - desc = "Modularize this, please." - icon_state = "circuit" - -/obj/effect/spawner/random_spawners/mod/maint - name = "maint MOD module spawner" - result = list( - /obj/item/mod/module/springlock = 2, - /obj/item/mod/module/balloon = 1, - /obj/item/mod/module/stamp = 1 - ) - - -// z6 DEPOT SPAWNERS - +/// Spawners for the Syndicate depot ruin. /obj/effect/spawner/random_spawners/syndicate - - // Turrets /obj/effect/spawner/random_spawners/syndicate/turret diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 069fd19b3b21..0daaeef79308 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -27,175 +27,6 @@ /obj/item/gun/projectile/automatic/pistol/deagle ) -/obj/effect/spawner/lootdrop/maintenance - name = "maintenance loot spawner (1 item)" - icon_state = "loot" - - //How to balance this table - //------------------------- - //The total added weight of all the entries should be (roughly) equal to the total number of lootdrops - //(take in account those that spawn more than one object!) - // - //While this is random, probabilities tells us that item distribution will have a tendency to look like - //the content of the weighted table that created them. - //The less lootdrops, the less even the distribution. - // - //If you want to give items a weight <1 you can multiply all the weights by 10 - // - //the "" entry will spawn nothing, if you increase this value, - //ensure that you balance it with more spawn points - - //table data: - //----------- - //aft maintenance: 24 items, 18 spots 2 extra (28/08/2014) - //asmaint: 16 items, 11 spots 0 extra (08/08/2014) - //asmaint2: 36 items, 26 spots 2 extra (28/08/2014) - //fpmaint: 5 items, 4 spots 0 extra (08/08/2014) - //fpmaint2: 12 items, 11 spots 2 extra (28/08/2014) - //fsmaint: 0 items, 0 spots 0 extra (08/08/2014) - //fsmaint2: 40 items, 27 spots 5 extra (28/08/2014) - //maintcentral: 2 items, 2 spots 0 extra (08/08/2014) - //port: 5 items, 5 spots 0 extra (08/08/2014) - loot = list( - /obj/item/bodybag = 10, - /obj/item/clothing/glasses/meson = 20, - /obj/item/clothing/glasses/sunglasses = 10, - /obj/item/clothing/gloves/color/yellow/fake = 15, - /obj/item/clothing/gloves/color/fyellow = 10, - /obj/item/clothing/gloves/color/yellow = 5, - /obj/item/clothing/gloves/color/black = 20, - /obj/item/clothing/head/hardhat = 10, - /obj/item/clothing/head/hardhat/red = 10, - /obj/item/clothing/head/that = 10, - /obj/item/clothing/head/ushanka = 10, - /obj/item/clothing/head/welding = 10, - /obj/item/clothing/mask/gas = 10, - /obj/item/clothing/suit/storage/hazardvest = 10, - /obj/item/clothing/under/misc/vice = 10, - /obj/item/assembly/prox_sensor = 40, - /obj/item/assembly/timer = 30, - /obj/item/flashlight = 40, - /obj/item/flashlight/pen = 10, - /obj/item/multitool = 20, - /obj/item/radio/off = 20, - /obj/item/t_scanner = 60, - /obj/item/stack/cable_coil = 40, - /obj/item/stack/cable_coil{amount = 5} = 60, - /obj/item/stack/medical/bruise_pack/advanced = 10, - /obj/item/stack/medical/ointment/advanced = 10, - /obj/item/stack/rods{amount = 10} = 80, - /obj/item/stack/rods{amount = 23} = 20, - /obj/item/stack/rods{amount = 50} = 10, - /obj/item/stack/sheet/cardboard = 20, - /obj/item/stack/sheet/metal{amount = 20} = 10, - /obj/item/stack/sheet/mineral/plasma = 10, - /obj/item/stack/sheet/rglass = 10, - /obj/item/stack/sheet/cloth{amount = 3} = 40, - /obj/item/book/manual/wiki/engineering_construction = 10, - /obj/item/book/manual/wiki/hacking = 10, - /obj/item/clothing/head/cone = 10, - /obj/item/geiger_counter = 30, - /obj/item/coin/silver = 10, - /obj/item/coin/twoheaded = 10, - /obj/item/poster/random_contraband = 10, - /obj/item/crowbar = 10, - /obj/item/crowbar/red = 10, - /obj/item/restraints/handcuffs/toy = 5, - /obj/item/extinguisher = 90, - /obj/item/hand_labeler = 10, - /obj/item/paper/crumpled = 10, - /obj/item/pen = 10, - /obj/item/cultivator = 10, - /obj/item/reagent_containers/spray/pestspray = 10, - /obj/item/stock_parts/cell = 30, - /obj/item/storage/belt/utility = 20, - /obj/item/storage/box = 20, - /obj/item/storage/box/cups = 10, - /obj/item/storage/box/donkpockets = 10, - /obj/item/storage/box/lights/mixed = 30, - /obj/item/storage/fancy/cigarettes/dromedaryco = 10, - /obj/item/storage/toolbox/mechanical = 10, - /obj/item/screwdriver = 30, - /obj/item/tank/internals/emergency_oxygen = 20, - /obj/item/tank/internals/emergency_oxygen/engi = 10, - /obj/item/vending_refill/cola = 10, - /obj/item/weldingtool = 30, - /obj/item/wirecutters = 10, - /obj/item/wrench = 40, - /obj/item/relic = 35, - /obj/item/weaponcrafting/receiver = 2, - /obj/item/clothing/shoes/black = 30, - /obj/item/seeds/ambrosia/deus = 10, - /obj/item/seeds/ambrosia = 20, - /obj/item/clothing/under/color/black = 30, - /obj/item/stack/tape_roll = 10, - /obj/item/storage/bag/plasticbag = 20, - /obj/item/storage/wallet = 20, - /obj/item/storage/wallet/random = 5, - /obj/item/scratch = 10, - /obj/item/caution = 10, - /obj/item/mod/construction/broken_core = 4, - /obj/effect/spawner/random_spawners/mod/maint = 10, - /obj/item/melee/knuckleduster = 10, - ////////////////CONTRABAND STUFF////////////////// - /obj/item/grenade/clown_grenade = 3, - /obj/item/grenade/smokebomb = 3, - /obj/item/seeds/ambrosia/cruciatus = 3, - /obj/item/gun/projectile/automatic/pistol = 1, - /obj/item/ammo_box/magazine/m10mm = 4, - /obj/item/soap/syndie = 7, - /obj/item/gun/syringe/syndicate = 2, - /obj/item/suppressor = 4, - /obj/item/clothing/under/chameleon = 2, - /obj/item/stamp/chameleon = 2, - /obj/item/clothing/shoes/chameleon/noslip = 5, - /obj/item/clothing/mask/chameleon = 4, - /obj/item/clothing/mask/chameleon/voice_change = 2, - /obj/item/clothing/mask/gas/voice_modulator = 2, - /obj/item/clothing/mask/gas/voice_modulator/chameleon = 2, - /obj/item/dnascrambler = 1, - /obj/item/storage/backpack/satchel_flat = 2, - /obj/item/storage/toolbox/syndicate = 2, - /obj/item/storage/backpack/duffel/syndie/med/surgery_fake = 2, - /obj/item/storage/belt/military/traitor = 2, - /obj/item/storage/box/syndie_kit/space = 2, - /obj/item/multitool/ai_detect = 2, - /obj/item/bio_chip_implanter/storage = 1, - /obj/item/deck/cards/syndicate = 2, - /obj/item/storage/secure/briefcase/syndie = 2, - /obj/item/storage/fancy/cigarettes/cigpack_syndicate = 2, - /obj/item/storage/pill_bottle/fakedeath = 2, - /obj/item/clothing/suit/jacket/bomber/syndicate = 5, - /obj/item/clothing/suit/storage/iaa/blackjacket/armored = 2, // More armored than bomber and has pockets, so it is rarer - /obj/item/melee/knuckleduster/syndie = 2, - /obj/item/reagent_containers/spray/sticky_tar = 1, - "" = 61 // This should be a decently high number for chances where no loot will spawn - ) - -/obj/effect/spawner/lootdrop/maintenance/Initialize(mapload) - if(HAS_TRAIT(SSstation, STATION_TRAIT_EMPTY_MAINT) && prob(50)) - return qdel(src) - if(HAS_TRAIT(SSstation, STATION_TRAIT_FILLED_MAINT) && prob(50)) - lootcount = min(lootcount * 2, 12) - . = ..() - - -/obj/effect/spawner/lootdrop/maintenance/two - name = "maintenance loot spawner (2 items)" - icon_state = "doubleloot" - lootcount = 2 - -/obj/effect/spawner/lootdrop/maintenance/three - name = "maintenance loot spawner (3 items)" - icon_state = "moreloot" - lootcount = 3 - -/obj/effect/spawner/lootdrop/maintenance/eight - name = "maintenance loot spawner (8 items)" - icon_state = "megaloot" - lootcount = 8 - - /// for ruins /obj/effect/spawner/lootdrop/crate_spawner name = "lootcrate spawner" diff --git a/code/game/objects/effects/spawners/random/engineering_spawners.dm b/code/game/objects/effects/spawners/random/engineering_spawners.dm new file mode 100644 index 000000000000..d9978dc606b8 --- /dev/null +++ b/code/game/objects/effects/spawners/random/engineering_spawners.dm @@ -0,0 +1,54 @@ +/obj/effect/spawner/random/engineering + icon = 'icons/effects/random_spawners.dmi' + icon_state = "wrench" + +/obj/effect/spawner/random/engineering/tools + name = "Tool spawner" + loot = list( + /obj/item/wrench = 2, + /obj/item/wirecutters = 2, + /obj/item/screwdriver = 2, + /obj/item/crowbar = 2, + /obj/item/weldingtool = 2, + /obj/item/stack/cable_coil = 2, + /obj/item/analyzer = 2, + /obj/item/t_scanner = 2, + /obj/item/geiger_counter = 2, + /obj/item/multitool = 1, + ) + +/obj/effect/spawner/random/engineering/materials + name = "Materials spawner" + icon_state = "metal" + loot = list( + list( + /obj/item/stack/rods, + /obj/item/stack/sheet/metal, + /obj/item/stack/sheet/glass, + /obj/item/stack/sheet/rglass, + /obj/item/stack/sheet/wood, + ) = 8, + + list( + /obj/item/stack/sheet/plastic, + /obj/item/stack/sheet/plasteel, + /obj/item/stack/sheet/mineral/plasma, + ) = 2, + ) + +/obj/effect/spawner/random/engineering/materials/make_item(spawn_loc, type_path_to_make) + var/obj/item/stack/item = ..() + if(istype(item)) + item.amount = rand(1, 10) + item.update_icon() + + return item + +/obj/effect/spawner/random/engineering/toolbox + name = "Toolbox spawner" + icon_state = "toolbox" + loot = list( + /obj/item/storage/toolbox/mechanical, + /obj/item/storage/toolbox/electrical, + /obj/item/storage/toolbox/emergency + ) diff --git a/code/game/objects/effects/spawners/random/food_spawners.dm b/code/game/objects/effects/spawners/random/food_spawners.dm new file mode 100644 index 000000000000..069859f2ef52 --- /dev/null +++ b/code/game/objects/effects/spawners/random/food_spawners.dm @@ -0,0 +1,20 @@ +/obj/effect/spawner/random/snacks + name = "snacks spawner" + icon = 'icons/effects/random_spawners.dmi' + icon_state = "donkpocket_single" + loot = list( + list( + /obj/item/food/candy/candybar, + /obj/item/reagent_containers/drinks/dry_ramen, + /obj/item/food/chips, + /obj/item/food/twimsts, + /obj/item/food/sosjerky, + /obj/item/food/no_raisin, + /obj/item/food/pistachios, + /obj/item/food/spacetwinkie, + /obj/item/food/cheesiehonkers, + /obj/item/food/tastybread, + ) = 5, + + /obj/item/food/stroopwafel = 1, + ) diff --git a/code/game/objects/effects/spawners/random/maint_loot_spawners.dm b/code/game/objects/effects/spawners/random/maint_loot_spawners.dm new file mode 100644 index 000000000000..2ad64ece299b --- /dev/null +++ b/code/game/objects/effects/spawners/random/maint_loot_spawners.dm @@ -0,0 +1,19 @@ +#define TRAIT_CHANCE_DELTA 25 + +/obj/effect/spawner/random/maintenance + name = "Maintenance loot spawner" + spawn_loot_chance = 65 + spawn_random_offset_max_pixels = 8 + +/obj/effect/spawner/random/maintenance/Initialize(mapload) + loot = GLOB.maintenance_loot_tables + spawn_loot_count = rand(2, 4) + + if(HAS_TRAIT(SSstation, STATION_TRAIT_EMPTY_MAINT)) + spawn_loot_chance -= TRAIT_CHANCE_DELTA + else if(HAS_TRAIT(SSstation, STATION_TRAIT_FILLED_MAINT)) + spawn_loot_chance += TRAIT_CHANCE_DELTA + + . = ..() + +#undef TRAIT_CHANCE_DELTA diff --git a/code/game/objects/effects/spawners/random/misc_spawners.dm b/code/game/objects/effects/spawners/random/misc_spawners.dm new file mode 100644 index 000000000000..7d4467767c23 --- /dev/null +++ b/code/game/objects/effects/spawners/random/misc_spawners.dm @@ -0,0 +1,92 @@ +/obj/effect/spawner/random/dice + loot = list( + /obj/item/dice/d4, + /obj/item/dice/d6, + /obj/item/dice/d8, + /obj/item/dice/d10, + /obj/item/dice/d12, + ) + +/obj/effect/spawner/random/dice/Initialize() + . = ..() + spawn_loot_count = rand(1, 2) + +/obj/effect/spawner/random/bureaucracy + icon = 'icons/effects/random_spawners.dmi' + icon_state = "folder" + name = "bureaucracy spawner" + loot = list( + /obj/item/hand_labeler, + /obj/item/hand_labeler_refill, + /obj/item/stack/tape_roll, + /obj/item/paper_bin, + /obj/item/pen, + /obj/item/pen/blue, + /obj/item/pen/red, + /obj/item/folder/blue, + /obj/item/folder/red, + /obj/item/folder/yellow, + /obj/item/clipboard, + ) + +/obj/effect/spawner/random/book + icon = 'icons/effects/random_spawners.dmi' + icon_state = "book" + name = "book spawner" + loot = list( + /obj/item/book/manual/atmospipes, + /obj/item/book/manual/barman_recipes, + /obj/item/book/manual/detective, + /obj/item/book/manual/engineering_particle_accelerator, + /obj/item/book/manual/engineering_singularity_safety, + /obj/item/book/manual/evaguide, + /obj/item/book/manual/hydroponics_pod_people, + /obj/item/book/manual/medical_cloning, + /obj/item/book/manual/research_and_development, + /obj/item/book/manual/ripley_build_and_repair, + /obj/item/book/manual/supermatter_engine, + /obj/item/book/manual/wiki/botanist, + /obj/item/book/manual/wiki/chef_recipes, + /obj/item/book/manual/wiki/engineering_construction, + /obj/item/book/manual/wiki/engineering_guide, + /obj/item/book/manual/wiki/experimentor, + /obj/item/book/manual/wiki/faxes, + /obj/item/book/manual/wiki/hacking, + /obj/item/book/manual/wiki/hydroponics, + /obj/item/book/manual/wiki/robotics_cyborgs, + /obj/item/book/manual/wiki/security_space_law, + /obj/item/book/manual/wiki/security_space_law/black, + /obj/item/book/manual/wiki/sop_command, + /obj/item/book/manual/wiki/sop_engineering, + /obj/item/book/manual/wiki/sop_general, + /obj/item/book/manual/wiki/sop_legal, + /obj/item/book/manual/wiki/sop_medical, + /obj/item/book/manual/wiki/sop_science, + /obj/item/book/manual/wiki/sop_security, + /obj/item/book/manual/wiki/sop_service, + /obj/item/book/manual/wiki/sop_supply, + /obj/item/book/manual/zombie_manual, + ) + +/obj/effect/spawner/random/book/record_item(type_path_to_make) + SSblackbox.record_feedback("tally", "random_spawners", 1, "[/obj/item/book]") + +/obj/effect/spawner/random/mod/maint + name = "maint MOD module spawner" + loot = list( + /obj/item/mod/module/springlock = 2, + /obj/item/mod/module/balloon = 1, + /obj/item/mod/module/stamp = 1 + ) + +/obj/effect/spawner/random/janitor/supplies + icon = 'icons/effects/random_spawners.dmi' + icon_state = "mopbucket" + name = "janitorial supplies spawner" + loot = list( + /obj/item/storage/box/mousetraps, + /obj/item/storage/box/lights/tubes, + /obj/item/storage/box/lights/mixed, + /obj/item/storage/box/lights/bulbs, + ) + diff --git a/code/game/objects/effects/spawners/random/random_spawner.dm b/code/game/objects/effects/spawners/random/random_spawner.dm new file mode 100644 index 000000000000..91814b9bdfb5 --- /dev/null +++ b/code/game/objects/effects/spawners/random/random_spawner.dm @@ -0,0 +1,143 @@ +/** + * Base class for all random spawners. + */ +/obj/effect/spawner/random + icon = 'icons/effects/spawner_icons.dmi' + icon_state = "loot" + layer = OBJ_LAYER + /// Stops persistent lootdrop spawns from being shoved into lockers + anchored = TRUE + /// A list of possible items to spawn e.g. list(/obj/item, /obj/structure, /obj/effect) + var/list/loot + /// The subtypes AND type to combine with the loot list + var/loot_type_path + /// The subtypes (this excludes the provided path) to combine with the loot list + var/loot_subtype_path + /// How many items will be spawned + var/spawn_loot_count = 1 + /// If the same item can be spawned twice + var/spawn_loot_double = TRUE + /// Whether the items should be distributed to offsets 0,1,-1,2,-2,3,-3.. This overrides pixel_x/y on the spawner itself + var/spawn_loot_split = FALSE + /// The pixel x/y divider offsets for spawn_loot_split (spaced 1 pixel apart by default) + var/spawn_loot_split_pixel_offsets = 2 + /// Whether the spawner should spawn all the loot in the list + var/spawn_all_loot = FALSE + /// The chance for the spawner to create loot (ignores spawn_loot_count) + var/spawn_loot_chance = 100 + /// Determines how big of a range (in tiles) we should scatter things in. + var/spawn_scatter_radius = 0 + /// Whether the items should have a random pixel_x/y offset (maximum offset distance is ± spawn_random_offset_max_pixels for x/y) + var/spawn_random_offset = FALSE + /// Maximum offset distance for random pixel offsets. + var/spawn_random_offset_max_pixels = 16 + /// Whether the spawned items should be rotated randomly. + var/spawn_random_angle = FALSE + +// Brief explanation: +// Rather then setting up and then deleting spawners, we block all atomlike setup +// and do the absolute bare minimum +// This is with the intent of optimizing mapload +// TODO: Bring this optimization up one level if possible +/obj/effect/spawner/random/Initialize(mapload) + SHOULD_CALL_PARENT(FALSE) + if(initialized) + stack_trace("Warning: [src]([type]) initialized multiple times!") + initialized = TRUE + spawn_loot() + return INITIALIZE_HINT_QDEL + +///If the spawner has any loot defined, randomly picks some and spawns it. Does not cleanup the spawner. +/obj/effect/spawner/random/proc/spawn_loot(lootcount_override) + if(!prob(spawn_loot_chance)) + return + + var/list/spawn_locations = get_spawn_locations(spawn_scatter_radius) + var/spawn_loot_count = isnull(lootcount_override) ? src.spawn_loot_count : lootcount_override + + if(spawn_all_loot) + spawn_loot_count = INFINITY + spawn_loot_double = FALSE + + if(loot_type_path) + loot += typesof(loot_type_path) + + if(loot_subtype_path) + loot += subtypesof(loot_subtype_path) + + if(length(loot)) + var/loot_spawned = 0 + var/pixel_divider = FLOOR(spawn_random_offset_max_pixels / spawn_loot_split_pixel_offsets, 1) + while((spawn_loot_count-loot_spawned) && length(loot)) + var/lootspawn = pick_weight_recursive(loot) + if(!spawn_loot_double) + loot.Remove(lootspawn) + if(lootspawn) + var/turf/spawn_loc = loc + if(spawn_scatter_radius > 0 && length(spawn_locations)) + spawn_loc = pick(spawn_locations) + + var/atom/movable/spawned_loot = make_item(spawn_loc, lootspawn) + spawned_loot.setDir(dir) + + if(!spawn_loot_split && !spawn_random_offset) + if(pixel_x != 0) + spawned_loot.pixel_x = pixel_x + if(pixel_y != 0) + spawned_loot.pixel_y = pixel_y + else if(spawn_random_offset) + spawned_loot.pixel_x = rand(-spawn_random_offset_max_pixels, spawn_random_offset_max_pixels) + spawned_loot.pixel_y = rand(-spawn_random_offset_max_pixels, spawn_random_offset_max_pixels) + else if(spawn_loot_split) + if(loot_spawned) + var/column = FLOOR(loot_spawned / pixel_divider, 1) + spawned_loot.pixel_x = spawn_loot_split_pixel_offsets * (loot_spawned % pixel_divider) + (column * spawn_loot_split_pixel_offsets) + spawned_loot.pixel_y = spawn_loot_split_pixel_offsets * (loot_spawned % pixel_divider) + loot_spawned++ + +/** + * Makes the actual item related to our spawner. + * + * spawn_loc - where are we spawning it? + * type_path_to_make - what are we spawning? + **/ +/obj/effect/spawner/random/proc/make_item(spawn_loc, type_path_to_make) + var/result = new type_path_to_make(spawn_loc) + + record_item(type_path_to_make) + + var/atom/item = result + if(spawn_random_angle && istype(item)) + item.transform = turn(item.transform, rand(0, 360)) + + return result + +/obj/effect/spawner/random/proc/record_item(type_path_to_make) + if(ispath(type_path_to_make, /obj/effect)) + return + + SSblackbox.record_feedback("tally", "random_spawners", 1, "[type_path_to_make]") + +///If the spawner has a spawn_scatter_radius set, this creates a list of nearby turfs available that are in view and have an unblocked line to them. +/obj/effect/spawner/random/proc/get_spawn_locations(radius) + var/list/scatter_locations = list() + + if(!radius) + return scatter_locations + + for(var/turf/turf_in_view in view(radius, get_turf(src))) + if(!isfloorturf(turf_in_view)) + continue + if(!has_unblocked_line(turf_in_view)) + continue + + scatter_locations += turf_in_view + + return scatter_locations + +/obj/effect/spawner/random/proc/has_unblocked_line(destination) + for(var/turf/potential_blockage as anything in get_line(get_turf(src), destination)) + if(!is_blocked_turf(potential_blockage, exclude_mobs = TRUE)) + continue + return FALSE + return TRUE diff --git a/code/game/objects/effects/spawners/random/readme.md b/code/game/objects/effects/spawners/random/readme.md new file mode 100644 index 000000000000..e65d0f520087 --- /dev/null +++ b/code/game/objects/effects/spawners/random/readme.md @@ -0,0 +1,425 @@ +# Random Spawners + +## About + +Random spawners are an organized tool primarily for mapping to enhance replayability. The spawners can create objects, effects, and structures with different tweakable settings to get the desired outcome. You can make a spawner determine direction, rarity, number of items to spawn, pixel spacing between items, and even spread it over a large tile radius. This lets you control the atmosphere of a location. You could for instance spawn different piles of trash in maint or spawn decoration items for a room to give it more randomized flavor. The choice is yours! + +*(note the audience of this README is directed towards mappers who lack knowledge of coding)* + +## Variables + +The following variables are defined in `code/game/objects/effects/spawners/random/random.dm` that control how a spawner works. + +- `loot` - a list of possible items to spawn e.g. list(/obj/item, /obj/structure, /obj/effect) +- `loot_type_path` - this combines the subtypes AND type list with the loot list +- `loot_subtype_path` - this combines ONLY the subtypes (excludes the `loot_subtype_path`) with the loot list +- `spawn_loot_count` - how many items will be spawned +- `spawn_loot_double` - if the same item can be spawned twice from the loot list +- `spawn_loot_split` - whether the items should be distributed to offsets 0,1,-1,2,-2,3,-3.. This overrides pixel_x/y on the spawner itself +- `spawn_all_loot` - whether the spawner should spawn all the loot in the list (ignores `spawn_loot_count`) +- `spawn_loot_chance` - the chance for the spawner to create loot (ignores `spawn_loot_count`) +- `spawn_scatter_radius` - determines how big of a range (in tiles) we should scatter things in + +These variables are set to the following default values for the base `random.dm` object that all objects inherit from: + +```dm + /// these three loot values are all empty + var/list/loot + var/loot_type_path + var/loot_subtype_path + + var/spawn_loot_count = 1 // by default one item will be selected from the loot list + var/spawn_loot_double = TRUE // by default duplicate items CAN be spawned from the loot list + var/spawn_loot_split = FALSE // by default items will NOT spread out on the same tile + var/spawn_all_loot = FALSE // by default the spawner will only spawn the number of items set in spawn_loot_count + var/spawn_loot_chance = 100 // by default the spawner has a 100% chance to spawn the item(s) + var/spawn_scatter_radius = 0 // by default the spawner will spawn the items ONLY on the tile it is on +``` + +However there are some categories that overwrite these default values so pay attention to the folder or category you group your spawner in. For instance the `obj/effect/spawner/random/techstorage` category overwrites the `spawn_all_loot` and the `spawn_loot_split` variables. + +```dm +// Tech storage circuit board spawners +/obj/effect/spawner/random/techstorage + name = "generic circuit board spawner" + spawn_loot_split = TRUE + spawn_all_loot = TRUE +``` + +This means any spawner you create under the techstorage will also have those variables set to that by default. This can be overridden quite easily just be resetting the variables back to the normal state like so: + +```dm +/obj/effect/spawner/random/techstorage/data_disk + name = "data disk spawner" + spawn_all_loot = FALSE // now our loot won't all be spawned + loot = list( + /obj/item/disk/data = 49, + /obj/item/disk/nuclear/fake/obvious = 1, + ) +``` + +## Template + +All the random spawners follow the same template format to keep things consistent and unison. + +```dm +/obj/effect/spawner/random/INSERT_SPAWNER_GROUP/INSERT_SPAWNER_NAME + name = "INSERT_SPAWNER_NAME spawner" + loot = list( + /obj/item/PATH/INSERT_OBJ_1, + /obj/item/PATH/INSERT_OBJ_2, + /obj/item/PATH/INSERT_OBJ_3, + ) +``` + +All the capitalized code is the parts where you are supposed to swap out with your objects like so: + +```dm +/obj/effect/spawner/random/medical/minor_healing + name = "minor healing spawner" + loot = list( + /obj/item/stack/medical/suture, + /obj/item/stack/medical/mesh, + /obj/item/stack/medical/gauze, + ) +``` + +Find the path to different objects and add them to the list but try to be consistent with the types of the object and the spawner. For example a medical spawner shouldn't have a emag in the loot list. (use an antag spawner for that instead!) + +## Probability + +Be aware that the `loot` list uses a *weighted chance* formula to determine probability. So if there are no numbers set in the `loot` list then each object defaults to 1 and has the same probability to be selected. For our above example for the `minor_healing` spawner each medical item has a 1/3 chance to be spawned. But if we rearranged the values to this: + +```dm +/obj/effect/spawner/random/medical/minor_healing + name = "minor healing spawner" + loot = list( + /obj/item/stack/medical/suture = 2, + /obj/item/stack/medical/mesh = 1, + /obj/item/stack/medical/gauze = 1, + ) +``` + +Then now `suture` has a 50% chance of being spawned (2/4), `mesh` has a 25% chance of being spawned (1/4), and `gauze` also has a 25% chance of being spawned (1/4). If we add another item into the mix then we get the following: + +```dm +/obj/effect/spawner/random/medical/minor_healing + name = "minor healing spawner" + loot = list( + /obj/item/stack/medical/suture = 2, + /obj/item/stack/medical/mesh = 1, + /obj/item/stack/medical/gauze = 1, + /obj/item/reagent_containers/syringe = 1, + ) +``` + +Suture is 40% (2/5), Mesh is 20% (1/5), Gauze is 20% (1/5), and Syringe is 20% (1/5). A weighted list has the advantage of not needing to update every item in the list when adding a new item. If the list was based on a straight percent values, then each new item would require to manually go and edit ALL the items in the list. For big lists that would become very tedious. This is why we use weighted lists to determine probability! + +## Style + +Here are some simple guidelines that you should stick to when making a new spawner: + +### If ALL the items have the same chance, we should not set a weighted value to the item + +Do not put `/obj/item/ = 1` unless other items have different spawn chances + +Good: + +```dm +/obj/effect/spawner/random/medical/minor_healing + name = "minor healing spawner" + loot = list( + /obj/item/stack/medical/suture = 2, + /obj/item/stack/medical/mesh = 1, + /obj/item/stack/medical/gauze = 1, + /obj/item/reagent_containers/syringe = 1, + ) +``` + +Also Good: + +```dm +/obj/effect/spawner/random/medical/minor_healing + name = "minor healing spawner" + loot = list( + /obj/item/stack/medical/suture, + /obj/item/stack/medical/mesh, + /obj/item/stack/medical/gauze, + /obj/item/reagent_containers/syringe, + ) +``` + +Bad: + +```dm +/obj/effect/spawner/random/medical/minor_healing + name = "minor healing spawner" + loot = list( + /obj/item/stack/medical/suture = 1, + /obj/item/stack/medical/mesh = 1, + /obj/item/stack/medical/gauze = 1, + /obj/item/reagent_containers/syringe = 1, + ) +``` + + +### Sort the list from highest probability to lowest + +Sort from top to bottom. The rarest items for your spawner should be at the bottom of the list. + +Good: + +```dm +/obj/effect/spawner/random/contraband/armory + name = "armory loot spawner" + loot = list( + /obj/item/gun/ballistic/automatic/pistol = 8, + /obj/item/gun/ballistic/shotgun/automatic/combat = 5, + /obj/item/storage/box/syndie_kit/throwing_weapons = 3, + /obj/item/grenade/clusterbuster/teargas = 2, + /obj/item/grenade/clusterbuster = 2, + /obj/item/gun/ballistic/automatic/pistol/deagle = 1, + /obj/item/gun/ballistic/revolver/mateba = 1, + ) +``` + +Bad: + +```dm +/obj/effect/spawner/random/contraband/armory + name = "armory loot spawner" + loot = list( + /obj/item/storage/box/syndie_kit/throwing_weapons = 3, + /obj/item/gun/ballistic/automatic/pistol = 8, + /obj/item/gun/ballistic/revolver/mateba = 1, + /obj/item/grenade/clusterbuster/teargas = 2, + /obj/item/gun/ballistic/automatic/pistol/deagle = 1, + /obj/item/grenade/clusterbuster = 2, + /obj/item/gun/ballistic/shotgun/automatic/combat = 5, + ) +``` + +### Always put the `loot` list at the bottom of your spawner + +This is just to keep things organized. + +Good: + +```dm +/obj/effect/spawner/random/food_or_drink/donkpockets + name = "donk pocket box spawner" + spawn_loot_double = FALSE + loot = list( + /obj/item/storage/box/donkpockets/donkpocketspicy, + /obj/item/storage/box/donkpockets/donkpocketteriyaki, + /obj/item/storage/box/donkpockets/donkpocketpizza, + /obj/item/storage/box/donkpockets/donkpocketberry, + /obj/item/storage/box/donkpockets/donkpockethonk, + ) +``` + +Bad: + +```dm +/obj/effect/spawner/random/food_or_drink/donkpockets + name = "donk pocket box spawner" + loot = list( + /obj/item/storage/box/donkpockets/donkpocketspicy, + /obj/item/storage/box/donkpockets/donkpocketteriyaki, + /obj/item/storage/box/donkpockets/donkpocketpizza, + /obj/item/storage/box/donkpockets/donkpocketberry, + /obj/item/storage/box/donkpockets/donkpockethonk, + ) + spawn_loot_double = FALSE +``` + +### Always put a comma at the last item in the `loot` list + +This will make it easier for people to add items to your spawner later without getting frustrating code errors. + +Good: + +```dm +/obj/effect/spawner/random/medical/minor_healing + name = "minor healing spawner" + loot = list( + /obj/item/stack/medical/suture, + /obj/item/stack/medical/mesh, + /obj/item/stack/medical/gauze, + ) +``` + +Bad: + +```dm +/obj/effect/spawner/random/medical/minor_healing + name = "minor healing spawner" + loot = list( + /obj/item/stack/medical/suture, + /obj/item/stack/medical/mesh, + /obj/item/stack/medical/gauze // if someone adds an item to the list later it will cause an error + ) +``` + +### Keep the same tab formatting for the `loot` list (unless there is only one item) + +Again, this is just good code organization. If there is only one item, then encase that item in `loot = list(item)` + +Good: + +```dm +/obj/effect/spawner/random/medical/minor_healing + name = "minor healing spawner" + loot = list( + /obj/item/stack/medical/suture, + /obj/item/stack/medical/mesh, + /obj/item/stack/medical/gauze, + ) +``` + +Also Good: + +```dm +/obj/effect/spawner/random/structure/crate_abandoned + icon = 'icons/effects/landmarks_static.dmi' + icon_state = "loot_site" + spawn_loot_chance = 20 + loot = list(/obj/structure/closet/crate/secure/loot) +``` + +Bad: + +```dm +/obj/effect/spawner/random/medical/minor_healing + name = "minor healing spawner" + loot = list( + /obj/item/stack/medical/suture, + /obj/item/stack/medical/mesh, + /obj/item/stack/medical/gauze, + ) +``` + +Also Bad: + +```dm +/obj/effect/spawner/random/medical/minor_healing + name = "minor healing spawner" + loot = list(/obj/item/stack/medical/suture, + /obj/item/stack/medical/mesh, + /obj/item/stack/medical/gauze,) +``` + +### Try to keep the total combined weight of your `loot` list to sane values (Aim for 5, 10, 20, 50, or 100) + +This makes the math probability easier for people to calculate. (this is recommended, but not always possible) + +Good: + +```dm +/obj/effect/spawner/random/trash/cigbutt + name = "cigarette butt spawner" + loot = list( + /obj/item/cigbutt = 65, + /obj/item/cigbutt/roach = 20, + /obj/item/cigbutt/cigarbutt = 15, + ) +``` + +Also Good: + +```dm +/obj/effect/spawner/random/trash/botanical_waste + name = "botanical waste spawner" + loot = list( + /obj/item/grown/bananapeel = 6, + /obj/item/grown/corncob = 3, + /obj/item/food/grown/bungopit = 1, + ) +``` + +Bad: + +```dm +/obj/effect/spawner/random/entertainment/money_large + name = "large money spawner" + loot = list( + /obj/item/stack/spacecash/c1 = 521, + /obj/item/stack/spacecash/c10 = 378, + /obj/item/stack/spacecash/c20 = 212, + /obj/item/stack/spacecash/c50 = 205, + /obj/item/stack/spacecash/c100 = 71, + /obj/item/stack/spacecash/c200 = 60, + /obj/item/stack/spacecash/c500 = 57, + /obj/item/stack/spacecash/c1000 = 41, + /obj/item/stack/spacecash/c10000 = 12, + ) +``` + +### Do not put empty items in the loot list + +Instead use the `spawn_loot_chance` var to control the chance for the spawner to spawn nothing. + +Good: + +```dm +/obj/effect/spawner/random/structure/crate_abandoned + name = "locked crate spawner" + spawn_loot_chance = 20 + loot = list(/obj/structure/closet/crate/secure/loot) +``` + + +Bad: + +```dm +/obj/effect/spawner/lootdrop/crate_spawner + name = "lootcrate spawner" + loot = list( + "" = 80 + /obj/structure/closet/crate/secure/loot = 20, + ) +``` + +### Avoid making a spawner that is a duplicate + +We don't want copy-cat spawners that are almost identical. Instead merge spawners together if possible. + +Good: + +```dm +/obj/effect/spawner/random/contraband/armory + name = "armory loot spawner" + icon_state = "pistol" + loot = list( + /obj/item/gun/ballistic/automatic/pistol = 8, + /obj/item/gun/ballistic/shotgun/automatic/combat = 5, + /obj/item/storage/box/syndie_kit/throwing_weapons = 3, + /obj/item/grenade/clusterbuster/teargas = 2, + /obj/item/grenade/clusterbuster = 2, + /obj/item/gun/ballistic/automatic/pistol/deagle, + /obj/item/gun/ballistic/revolver/mateba, + ) +``` + + +Bad: + +```dm +/obj/effect/spawner/lootdrop/armory_contraband + loot = list( + /obj/item/gun/ballistic/automatic/pistol = 8, + /obj/item/gun/ballistic/shotgun/automatic/combat = 5, + /obj/item/gun/ballistic/automatic/pistol/deagle, + /obj/item/gun/ballistic/revolver/mateba + ) + +/obj/effect/spawner/lootdrop/armory_contraband/metastation + loot = list( + /obj/item/gun/ballistic/automatic/pistol = 8, + /obj/item/gun/ballistic/shotgun/automatic/combat = 5, + /obj/item/storage/box/syndie_kit/throwing_weapons = 3, + /obj/item/gun/ballistic/automatic/pistol/deagle, + /obj/item/gun/ballistic/revolver/mateba + ) + +``` diff --git a/code/game/objects/effects/spawners/random/trash_spawners.dm b/code/game/objects/effects/spawners/random/trash_spawners.dm new file mode 100644 index 000000000000..776a387c0b79 --- /dev/null +++ b/code/game/objects/effects/spawners/random/trash_spawners.dm @@ -0,0 +1,75 @@ +/// Food trash spawner, for when you specifically want it to look like someone +/// didn't clean up after themselves after lunch. +/obj/effect/spawner/random/food_trash + icon = 'icons/effects/random_spawners.dmi' + icon_state = "tray" + name = "Food trash spawner" + loot = list( + /obj/item/trash/bowl, + /obj/item/trash/candle, + /obj/item/trash/candy, + /obj/item/trash/cheesie, + /obj/item/trash/chips, + /obj/item/trash/fried_vox, + /obj/item/trash/gum, + /obj/item/trash/liquidfood, + /obj/item/trash/pistachios, + /obj/item/trash/plate, + /obj/item/trash/popcorn, + /obj/item/trash/popsicle_stick, + /obj/item/trash/raisins, + /obj/item/trash/semki, + /obj/item/trash/snack_bowl, + /obj/item/trash/sosjerky, + /obj/item/trash/spacetwinkie, + /obj/item/trash/syndi_cakes, + /obj/item/trash/tastybread, + /obj/item/trash/tray, + /obj/item/trash/twimsts, + /obj/item/trash/waffles, + ) + + spawn_random_angle = TRUE + +/obj/effect/spawner/random/food_trash/record_item(type_path_to_make) + SSblackbox.record_feedback("tally", "random_spawners", 1, "[/obj/item/trash]") + +/obj/effect/spawner/random/trash + icon = 'icons/effects/random_spawners.dmi' + icon_state = "trash" + + name = "Trash spawner" + loot = list( + // Food litter often + /obj/effect/spawner/random/food_trash = 8, + + // Some regular trash + list( + /obj/item/broken_bottle, + /obj/item/cigbutt, + /obj/item/cigbutt/roach, + /obj/item/flashlight/flare/glowstick/used, + /obj/item/flashlight/flare/used, + /obj/item/paper/crumpled, + /obj/item/shard, + /obj/item/trash/tapetrash, + ) = 5, + + // Ammo casings rarely + list( + /obj/item/ammo_casing/c10mm, + /obj/item/trash/spentcasing, + ) = 1, + ) + + // TODO: Random spawner scatter behavior doesn't work well with items in + // containers or on dense objects like racks. Fix up so we can scatter trash. + spawn_random_angle = TRUE + spawn_random_offset = TRUE + spawn_random_offset_max_pixels = 8 + +/obj/effect/spawner/random/trash/record_item(type_path_to_make) + if(istype(type_path_to_make, /obj/effect/spawner)) + return + + SSblackbox.record_feedback("tally", "random_spawners", 1, "[/obj/item/trash]") diff --git a/code/game/objects/effects/spawners/turf_spawners.dm b/code/game/objects/effects/spawners/turf_spawners.dm new file mode 100644 index 000000000000..eeaf554b506a --- /dev/null +++ b/code/game/objects/effects/spawners/turf_spawners.dm @@ -0,0 +1,30 @@ +/obj/effect/spawner/random_spawners/proc/rustify(turf/T) + var/turf/simulated/wall/W = T + if(istype(W) && !W.rusted) + W.rust() + +/obj/effect/spawner/random_spawners/wall_rusted_probably + name = "rusted wall probably" + icon_state = "rust" + +/obj/effect/spawner/random_spawners/wall_rusted_probably/randspawn(turf/T) + if(prob(75)) + rustify(T) + qdel(src) + +/obj/effect/spawner/random_spawners/wall_rusted_maybe + name = "rusted wall maybe" + icon_state = "rust" + +/obj/effect/spawner/random_spawners/wall_rusted_maybe/randspawn(turf/T) + if(prob(25)) + rustify(T) + qdel(src) + +/obj/effect/spawner/random_spawners/wall_rusted_always + name = "rusted wall always" + icon_state = "rust" + +/obj/effect/spawner/random_spawners/wall_rusted_always/randspawn(turf/T) + rustify(T) + qdel(src) diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 3a992cd935c7..8ac39ab3c0ed 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -226,6 +226,22 @@ attack_verb = list("burnt", "singed") START_PROCESSING(SSobj, src) +/obj/item/flashlight/flare/used + +/obj/item/flashlight/flare/used/Initialize() + . = ..() + // fuel gets set on New which is annoying so these can't just be vars + fuel = 0 + on = 0 + update_icon() + +/obj/item/flashlight/flare/glowstick/used/Initialize() + . = ..() + // fuel gets set on New which is annoying so these can't just be vars + fuel = 0 + on = 0 + update_icon() + /obj/item/flashlight/flare/decompile_act(obj/item/matter_decompiler/C, mob/user) if(isdrone(user) && !fuel) C.stored_comms["metal"] += 1 diff --git a/icons/effects/random_spawners.dmi b/icons/effects/random_spawners.dmi new file mode 100644 index 0000000000000000000000000000000000000000..77aa8915532212c081ef90d265533ec2f0a71a16 GIT binary patch literal 8750 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 literal 0 HcmV?d00001 diff --git a/paradise.dme b/paradise.dme index 7d57b41f5a18..9fe3bf88a113 100644 --- a/paradise.dme +++ b/paradise.dme @@ -215,6 +215,7 @@ #include "code\_globalvars\lists\flavor_misc.dm" #include "code\_globalvars\lists\fortunes.dm" #include "code\_globalvars\lists\keybindings_lists.dm" +#include "code\_globalvars\lists\maint_loot_tables.dm" #include "code\_globalvars\lists\misc_lists.dm" #include "code\_globalvars\lists\mob_lists.dm" #include "code\_globalvars\lists\names.dm" @@ -1011,15 +1012,23 @@ #include "code\game\objects\effects\effect_system\effects_water.dm" #include "code\game\objects\effects\spawners\airlock_spawner.dm" #include "code\game\objects\effects\spawners\bombspawner.dm" +#include "code\game\objects\effects\spawners\decorative_spawners.dm" +#include "code\game\objects\effects\spawners\depot_spawners.dm" #include "code\game\objects\effects\spawners\detgun_spawner.dm" #include "code\game\objects\effects\spawners\gibspawner.dm" #include "code\game\objects\effects\spawners\grouped_spawner.dm" #include "code\game\objects\effects\spawners\lootdrop.dm" #include "code\game\objects\effects\spawners\mess_spawners.dm" #include "code\game\objects\effects\spawners\random_barrier.dm" -#include "code\game\objects\effects\spawners\random_spawners.dm" +#include "code\game\objects\effects\spawners\turf_spawners.dm" #include "code\game\objects\effects\spawners\vaultspawner.dm" #include "code\game\objects\effects\spawners\windowspawner.dm" +#include "code\game\objects\effects\spawners\random\engineering_spawners.dm" +#include "code\game\objects\effects\spawners\random\food_spawners.dm" +#include "code\game\objects\effects\spawners\random\maint_loot_spawners.dm" +#include "code\game\objects\effects\spawners\random\misc_spawners.dm" +#include "code\game\objects\effects\spawners\random\random_spawner.dm" +#include "code\game\objects\effects\spawners\random\trash_spawners.dm" #include "code\game\objects\effects\temporary_visuals\clockcult.dm" #include "code\game\objects\effects\temporary_visuals\cult_visuals.dm" #include "code\game\objects\effects\temporary_visuals\explosion_temp_visuals.dm" diff --git a/tools/UpdatePaths/Scripts/26500_random_spawners.txt b/tools/UpdatePaths/Scripts/26500_random_spawners.txt new file mode 100644 index 000000000000..c73bca8226c1 --- /dev/null +++ b/tools/UpdatePaths/Scripts/26500_random_spawners.txt @@ -0,0 +1 @@ +/obj/effect/spawner/lootdrop/maintenance/@SUBTYPES : /obj/effect/spawner/random/maintenance From f6d01da043c9369fff69bec01e56afa04a9eacbd Mon Sep 17 00:00:00 2001 From: Blossom <127415623+StudentBlossom@users.noreply.github.com> Date: Tue, 27 Aug 2024 22:37:10 +0200 Subject: [PATCH 20/40] Added attack_self to the petrock so you can appreciate it (#26534) * Added attack_self to the petrock so you can appreciate it * Update code/game/objects/items/toys.dm Co-authored-by: Nathan Winters <100448493+CinnamonSnowball@users.noreply.github.com> Signed-off-by: Blossom <127415623+StudentBlossom@users.noreply.github.com> --------- Signed-off-by: Blossom <127415623+StudentBlossom@users.noreply.github.com> Co-authored-by: Nathan Winters <100448493+CinnamonSnowball@users.noreply.github.com> --- code/game/objects/items/toys.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index d96dbff1f5a4..fcf93613fe06 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1051,6 +1051,10 @@ attack_verb = list("attacked", "bashed", "smashed", "stoned") hitsound = "swing_hit" +/obj/item/toy/pet_rock/attack_self(mob/user) + var/cuddle_verb = pick("admires", "respects", "cherises", "appreciates") + user.visible_message("[user] [cuddle_verb] [src].") + /obj/item/toy/pet_rock/fred name = "fred" desc = "Fred, the bestest boy pet in the whole wide universe!" From e020c7c4cf5106f9a2e2ec7dd90f20f719525aaa Mon Sep 17 00:00:00 2001 From: WenlockTheBritishHobo <168675688+WenlockTheBritishHobo@users.noreply.github.com> Date: Tue, 27 Aug 2024 21:37:34 +0100 Subject: [PATCH 21/40] IPC Clowns and Mimes now heal from the Clown and Mime drinks. (#26533) * Makes Mime and Clown drinks heal IPC Clowns and Mimes too. Previously, the four Clown and Mime drinks (Banana Juice, Banana HONK, Nothing, and Silencer) only healed organics. This commit should allow said drinks to heal IPCs too. Signed-off-by: WenlockTheBritishHobo <168675688+WenlockTheBritishHobo@users.noreply.github.com> * Pasted wrong code. Signed-off-by: WenlockTheBritishHobo <168675688+WenlockTheBritishHobo@users.noreply.github.com> * Apply suggestions from code review to remove unnecessary code and to pass CI checks. Co-authored-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com> Signed-off-by: WenlockTheBritishHobo <168675688+WenlockTheBritishHobo@users.noreply.github.com> * Ensures robotic limbs are healed, also pass CI. Signed-off-by: WenlockTheBritishHobo <168675688+WenlockTheBritishHobo@users.noreply.github.com> * Previous commit broke something. Going to try CRUNCH's suggested changes. Signed-off-by: WenlockTheBritishHobo <168675688+WenlockTheBritishHobo@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com> Signed-off-by: WenlockTheBritishHobo <168675688+WenlockTheBritishHobo@users.noreply.github.com> * Should pass CI this time. Signed-off-by: WenlockTheBritishHobo <168675688+WenlockTheBritishHobo@users.noreply.github.com> * Put living back in. Signed-off-by: WenlockTheBritishHobo <168675688+WenlockTheBritishHobo@users.noreply.github.com> --------- Signed-off-by: WenlockTheBritishHobo <168675688+WenlockTheBritishHobo@users.noreply.github.com> Co-authored-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com> --- .../chemistry/reagents/drinks_reagents.dm | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/drinks_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks_reagents.dm index 86e51200e801..947ac4fe001a 100644 --- a/code/modules/reagents/chemistry/reagents/drinks_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drinks_reagents.dm @@ -173,32 +173,34 @@ id = "banana" description = "The raw essence of a banana." color = "#F6F834" + process_flags = ORGANIC | SYNTHETIC drink_icon = "banana" drink_name = "Glass of banana juice" drink_desc = "The raw essence of a banana. HONK" taste_description = "banana juice" -/datum/reagent/consumable/drink/banana/on_mob_life(mob/living/M) +/datum/reagent/consumable/drink/banana/on_mob_life(mob/living/carbon/human/M) var/update_flags = STATUS_UPDATE_NONE if(HAS_TRAIT(M, TRAIT_COMIC_SANS) || issmall(M)) - update_flags |= M.adjustBruteLoss(-1, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, robotic = TRUE) + update_flags |= M.adjustFireLoss(-1, FALSE, robotic = TRUE) return ..() | update_flags /datum/reagent/consumable/drink/nothing name = "Nothing" id = "nothing" description = "Absolutely nothing." + process_flags = ORGANIC | SYNTHETIC drink_icon = "nothing" drink_name = "Nothing" drink_desc = "Absolutely nothing." taste_description = "nothing... how?" -/datum/reagent/consumable/drink/nothing/on_mob_life(mob/living/M) +/datum/reagent/consumable/drink/nothing/on_mob_life(mob/living/carbon/human/M) var/update_flags = STATUS_UPDATE_NONE if(ishuman(M) && M.mind && M.mind.miming) - update_flags |= M.adjustBruteLoss(-1, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, robotic = TRUE) + update_flags |= M.adjustFireLoss(-1, FALSE, robotic = TRUE) return ..() | update_flags /datum/reagent/consumable/drink/potato_juice @@ -401,16 +403,17 @@ id = "bananahonk" description = "A drink from Clown Heaven." color = "#664300" // rgb: 102, 67, 0 + process_flags = ORGANIC | SYNTHETIC drink_icon = "bananahonkglass" drink_name = "Banana Honk" drink_desc = "A drink from Banana Heaven." taste_description = "HONK" -/datum/reagent/consumable/drink/bananahonk/on_mob_life(mob/living/M) +/datum/reagent/consumable/drink/bananahonk/on_mob_life(mob/living/carbon/human/M) var/update_flags = STATUS_UPDATE_NONE if(HAS_TRAIT(M, TRAIT_COMIC_SANS) || issmall(M)) - update_flags |= M.adjustBruteLoss(-1, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, robotic = TRUE) + update_flags |= M.adjustFireLoss(-1, FALSE, robotic = TRUE) return ..() | update_flags /datum/reagent/consumable/drink/silencer @@ -418,16 +421,17 @@ id = "silencer" description = "A drink from Mime Heaven." color = "#664300" // rgb: 102, 67, 0 + process_flags = ORGANIC | SYNTHETIC drink_icon = "silencerglass" drink_name = "Silencer" drink_desc = "A drink from mime Heaven." taste_description = "mphhhh" -/datum/reagent/consumable/drink/silencer/on_mob_life(mob/living/M) +/datum/reagent/consumable/drink/silencer/on_mob_life(mob/living/carbon/human/M) var/update_flags = STATUS_UPDATE_NONE if(ishuman(M) && (M.job in list("Mime"))) - update_flags |= M.adjustBruteLoss(-1, FALSE) - update_flags |= M.adjustFireLoss(-1, FALSE) + update_flags |= M.adjustBruteLoss(-1, FALSE, robotic = TRUE) + update_flags |= M.adjustFireLoss(-1, FALSE, robotic = TRUE) return ..() | update_flags /datum/reagent/consumable/drink/chocolatepudding From 5088a98847d247a3e728e25cafdb524c18c8cc54 Mon Sep 17 00:00:00 2001 From: chuga-git <98280110+chuga-git@users.noreply.github.com> Date: Tue, 27 Aug 2024 15:38:57 -0500 Subject: [PATCH 22/40] makes hud clear ref to mob's stamina bar (#26608) --- code/_onclick/hud/hud_datum.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/_onclick/hud/hud_datum.dm b/code/_onclick/hud/hud_datum.dm index 6aa1d4e8a8e8..f3e0b770f9a8 100644 --- a/code/_onclick/hud/hud_datum.dm +++ b/code/_onclick/hud/hud_datum.dm @@ -134,6 +134,7 @@ mymob.throw_icon = null mymob.healths = null mymob.healthdoll = null + mymob.staminas = null mymob.pullin = null mymob.nutrition_display = null From a2c4ed95e14b5a9d4649278c9af8e7f6d184b39b Mon Sep 17 00:00:00 2001 From: Aylong <69762909+AyIong@users.noreply.github.com> Date: Wed, 28 Aug 2024 18:20:04 +0300 Subject: [PATCH 23/40] [TGUI] Refactor & Improve ImageButton component (#26490) * That's a start * Progress * Replace `color="translucent"` to `translucent color="transparent"` * Remove transculent transparent (wtf) * Styling * Story fix * Acceptable * Z-indexes and border-radius for image * Some docs fixes and ImageButton.Item removal from it * Rebuild * Rebuild TGUI --------- Co-authored-by: paradisess13[bot] <165046124+paradisess13[bot]@users.noreply.github.com> --- tgui/docs/component-reference.md | 168 ++++----- tgui/packages/tgui/components/Button.tsx | 10 +- tgui/packages/tgui/components/ImageButton.js | 204 ----------- tgui/packages/tgui/components/ImageButton.tsx | 185 ++++++++++ tgui/packages/tgui/interfaces/ChemMaster.tsx | 2 +- tgui/packages/tgui/interfaces/CoinMint.tsx | 2 +- .../tgui/interfaces/MedicalRecords.js | 14 +- .../packages/tgui/interfaces/PrizeCounter.tsx | 66 ++-- tgui/packages/tgui/interfaces/RCD.js | 7 +- tgui/packages/tgui/interfaces/RPD.js | 38 +- .../tgui/interfaces/RequestConsole.js | 16 +- tgui/packages/tgui/interfaces/StackCraft.js | 22 +- tgui/packages/tgui/interfaces/StripMenu.tsx | 21 +- tgui/packages/tgui/interfaces/VotePanel.js | 2 +- tgui/packages/tgui/stories/Button.stories.js | 52 ++- .../tgui/stories/ImageButton.stories.js | 210 +++++------ .../tgui/styles/components/Button.scss | 69 ++-- .../tgui/styles/components/ImageButton.scss | 344 ++++++++++-------- tgui/public/tgui-panel.bundle.css | 2 +- tgui/public/tgui-panel.bundle.js | 198 +++++----- tgui/public/tgui.bundle.css | 2 +- tgui/public/tgui.bundle.js | 134 +++---- 22 files changed, 880 insertions(+), 888 deletions(-) delete mode 100644 tgui/packages/tgui/components/ImageButton.js create mode 100644 tgui/packages/tgui/components/ImageButton.tsx diff --git a/tgui/docs/component-reference.md b/tgui/docs/component-reference.md index af744b617937..3865c5c1724e 100644 --- a/tgui/docs/component-reference.md +++ b/tgui/docs/component-reference.md @@ -8,53 +8,55 @@ This table of contents must be manually maintained. Make sure to add new items to this list if you document new components. --> -- [General Concepts](#general-concepts) -- [`tgui/components`](#tguicomponents) - - [`AnimatedNumber`](#animatednumber) - - [`BlockQuote`](#blockquote) - - [`Box`](#box) - - [`Button`](#button) - - [`Button.Checkbox`](#buttoncheckbox) - - [`Button.Confirm`](#buttonconfirm) - - [`Button.Input`](#buttoninput) - - [`ByondUi`](#byondui) - - [`Collapsible`](#collapsible) - - [`ColorBox`](#colorbox) - - [`Dimmer`](#dimmer) - - [`Divider`](#divider) - - [`Dropdown`](#dropdown) - - [`Flex`](#flex) - - [`Flex.Item`](#flexitem) - - [`Grid`](#grid) - - [`Grid.Column`](#gridcolumn) - - [`Icon`](#icon) - - [`Icon.Stack`](#iconstack) - - [`ImageButton`](#imagebutton) - - [`ImageButton.Item`](#imagebuttonitem) - - [`Input`](#input) - - [`Knob`](#knob) - - [`LabeledControls`](#labeledcontrols) - - [`LabeledControls.Item`](#labeledcontrolsitem) - - [`LabeledList`](#labeledlist) - - [`LabeledList.Item`](#labeledlistitem) - - [`LabeledList.Divider`](#labeledlistdivider) - - [`Modal`](#modal) - - [`NoticeBox`](#noticebox) - - [`NumberInput`](#numberinput) - - [`ProgressBar`](#progressbar) - - [`RoundGauge`](#roundgauge) - - [`Section`](#section) - - [`Slider`](#slider) - - [`Stack`](#stack) - - [`Table`](#table) - - [`Table.Row`](#tablerow) - - [`Table.Cell`](#tablecell) - - [`Tabs`](#tabs) - - [`Tabs.Tab`](#tabstab) - - [`Tooltip`](#tooltip) -- [`tgui/layouts`](#tguilayouts) - - [`Window`](#window) - - [`Window.Content`](#windowcontent) +- [Component Reference](#component-reference) + - [General Concepts](#general-concepts) + - [`tgui/components`](#tguicomponents) + - [`AnimatedNumber`](#animatednumber) + - [`BlockQuote`](#blockquote) + - [`Box`](#box) + - [`Button`](#button) + - [`Button.Checkbox`](#buttoncheckbox) + - [`Button.Confirm`](#buttonconfirm) + - [`Button.Input`](#buttoninput) + - [`ByondUi`](#byondui) + - [`Collapsible`](#collapsible) + - [`ColorBox`](#colorbox) + - [`Dimmer`](#dimmer) + - [`Divider`](#divider) + - [`Dropdown`](#dropdown) + - [`Flex`](#flex) + - [`Flex.Item`](#flexitem) + - [`Grid`](#grid) + - [`Grid.Column`](#gridcolumn) + - [`Icon`](#icon) + - [`Icon.Stack`](#iconstack) + - [`ImageButton`](#imagebutton) + - [`Input`](#input) + - [`Knob`](#knob) + - [`Popper`](#popper) + - [`LabeledControls`](#labeledcontrols) + - [`LabeledControls.Item`](#labeledcontrolsitem) + - [`LabeledList`](#labeledlist) + - [`LabeledList.Item`](#labeledlistitem) + - [`LabeledList.Divider`](#labeledlistdivider) + - [`Modal`](#modal) + - [`NoticeBox`](#noticebox) + - [`NumberInput`](#numberinput) + - [`ProgressBar`](#progressbar) + - [`RoundGauge`](#roundgauge) + - [`Section`](#section) + - [`Slider`](#slider) + - [`Stack`](#stack) + - [`Stack.Item`](#stackitem) + - [`Table`](#table) + - [`Table.Row`](#tablerow) + - [`Table.Cell`](#tablecell) + - [`Tabs`](#tabs) + - [`Tabs.Tab`](#tabstab) + - [`Tooltip`](#tooltip) + - [`tgui/layouts`](#tguilayouts) + - [`Window`](#window) + - [`Window.Content`](#windowcontent) ## General Concepts @@ -550,63 +552,35 @@ Renders children icons on top of each other in order to make your own icon. ### `ImageButton` A Robust button is specifically for sticking a picture in it. -Has support for base64, spritesheets and URLs. **Props:** - See inherited props: [Box](#box) -- `asset: boolean` - Enables spritesheets support. -- `vertical: boolean` - Makes the button a inlined vertical rectangle. -- `color: string` - By default, the button is semi-transparent. You can change the overall colour, -all colours are available in KitchenSink in the corresponding section. -- `title: string` - The top text, it will always be bold, and also adds a divider between title and content. -Disabled if there is no content. -- `content: string|any` - All main content, usually text, but you can put in other components if you like. -Makes the vertical button square if empty. -- `selected: boolean` - Makes button selected (green) if true. -- `disabled: boolean` - Makes button disabled (red) if true. Also disables onClick. -- `disabledContent: string` - If button disabled and disabledContent filled, it will be used instead content. -- `image: string` - Base64 image, simple. Disabled if asset support enabled. -- `imageUrl: string` - PNG image or other asset. Make sure you use existing simple asset! Example: imageUrl={'image.png'} -- `imageAsset: string` - If you have enabled asset support, write here which spritesheet to use. -Example: imageAsset={'spritesheet_name64x64'} -- `imageSize: string` - Sets the size of the image and adjusts the size of the button itself accordingly. -Example: imageSize={'64px'} -- `tooltip: string` - A fancy, boxy tooltip, which appears when hovering -over the button. -- `tooltipPosition: string` - Position of the tooltip. See [`Popper`](#Popper) for valid options. -- `ellipsis: boolean` - If button width is constrained, button text will -be truncated with an ellipsis. Be careful however, because this prop breaks -the baseline alignment. -- `children: ImageButton.Item|any` - Items that are added to the right of the horizontal button. -- `onClick: function` - Called when element is clicked. Also enables hover effects. - -### `ImageButton.Item` - -Additional button/s for ImageButton. - -> Try not to add ImageButton.Item in large quantities. They reduce rendering speed very much -> Available only in horizontal mode, if you try add it to vertical, you're gonna be disappointed - -**Props:** -- See inherited props: [Box](#box) -- `color: string` - By default, the button is semi-transparent. You can change the overall colour, -all colours are available in KitchenSink in the corresponding section. -- `content: string|any` - All main content, usually text, but you can put in other components if you like. -Try to not make it too long. -- `selected: boolean` - Makes button selected (green) if true. -- `disabled: boolean` - Makes button disabled (red) if true. Also disables onClick. -- `disabledContent: string` - If button disabled and disabledContent filled, it will be used instead content. +- `asset: string[]` - Asset cache. Example: `asset={`assetname32x32, ${thing.key}`}` +- `base64: string` - Classic way to put images. Example: `base64={thing.image}` +- `buttons: any` - Special section for any component, or, content. + Quite a small area at the bottom of the image in non-fluid mode. + Has a style overrides, best to use [Button](#button) inside. +- `buttonsAlt: boolean` - Enables alternative buttons layout. + With fluid, makes buttons like a humburger. + Without, moves it to top, and disables pointer-events. +- `children: any` - Content under image. +- `className: string` - Applies a CSS class to the element. +- `color: string` - Color of the button, but without `transparent`; see [Button](#button) +- `disabled: boolean` - Makes button disabled and dark red if true. + Also disables onClick & onRightClick. +- `selected: boolean` - Makes button selected and green if true. +- `fluid: boolean` - Changes the layout of the button, making it fill the entire horizontally available space. + Allows the use of `title` +- `imageSize: number` - Parameter responsible for the size of the image, component and standard "stubs". + Measured in pixels. `imageSize={64}` = 64px. +- `imageSrc: string` - Prop `src` of . Example: `imageSrc={resolveAsset(thing.image)}` +- `onClick: (e) => void` - Called when button is clicked with LMB. +- `onRightClick: (e) => void` - Called when button is clicked with RMB. +- `title: string` - Requires `fluid` for work. Bold text with divider betwen content. - `tooltip: string` - A fancy, boxy tooltip, which appears when hovering over the button. - `tooltipPosition: string` - Position of the tooltip. See [`Popper`](#Popper) for valid options. -- `icon: string` - Adds an icon to the button. By default it will be under content. -- `iconColor: string` - Paints icon if it used. -- `iconPosition: string` - You can make an icon above the content. -Example: iconPosition={'top'} -- `iconSize: number` - Adjusts the size of the icon. -- `children: any` - Similar to content. -- `onClick: function` - Called when element is clicked. ### `Input` diff --git a/tgui/packages/tgui/components/Button.tsx b/tgui/packages/tgui/components/Button.tsx index d63cf2d8f9b5..21cb12512b94 100644 --- a/tgui/packages/tgui/components/Button.tsx +++ b/tgui/packages/tgui/components/Button.tsx @@ -17,6 +17,7 @@ const logger = createLogger('Button'); export type ButtonProps = BoxProps & { fluid?: boolean; + translucent?: boolean; icon?: string; iconRotation?: number; iconSpin?: BooleanLike; @@ -42,6 +43,7 @@ export const Button = (props: ButtonProps) => { const { className, fluid, + translucent, icon, iconRotation, iconSpin, @@ -84,15 +86,17 @@ export const Button = (props: ButtonProps) => { className={classes([ 'Button', fluid && 'Button--fluid', - disabled && 'Button--disabled', - selected && 'Button--selected', + disabled && 'Button--disabled' + (translucent ? '--translucent' : ''), + selected && 'Button--selected' + (translucent ? '--translucent' : ''), hasContent && 'Button--hasContent', ellipsis && 'Button--ellipsis', circular && 'Button--circular', compact && 'Button--compact', iconRight && 'Button--iconRight', multiLine && 'Button--multiLine', - color && typeof color === 'string' ? 'Button--color--' + color : 'Button--color--default', + color && typeof color === 'string' + ? 'Button--color--' + color + (translucent ? '--translucent' : '') + : 'Button--color--default' + (translucent ? '--translucent' : ''), className, ])} tabIndex={!disabled && '0'} diff --git a/tgui/packages/tgui/components/ImageButton.js b/tgui/packages/tgui/components/ImageButton.js deleted file mode 100644 index 576c62b7bf95..000000000000 --- a/tgui/packages/tgui/components/ImageButton.js +++ /dev/null @@ -1,204 +0,0 @@ -/** - * @file - * @copyright 2024 Aylong (https://github.com/AyIong) - * @license MIT - */ - -import { resolveAsset } from '../assets'; -import { classes, pureComponentHooks } from 'common/react'; -import { computeBoxClassName, computeBoxProps } from './Box'; -import { Icon } from './Icon'; -import { Tooltip } from './Tooltip'; - -export const ImageButton = (props) => { - const { - className, - asset, - color, - title, - vertical, - content, - selected, - disabled, - disabledContent, - image, - imageUrl, - imageAsset, - imageSize, - tooltip, - tooltipPosition, - ellipsis, - children, - onClick, - ...rest - } = props; - rest.onClick = (e) => { - if (!disabled && onClick) { - onClick(e); - } - }; - let buttonContent = ( -

-
- {asset ? ( -
- ) : ( - - )} -
- {content && - (vertical ? ( -
- {disabled && disabledContent ? disabledContent : content} -
- ) : ( -
- {title && ( -
- {title} -
-
- )} -
{content}
-
- ))} -
- ); - - if (tooltip) { - buttonContent = ( - - {buttonContent} - - ); - } - - return ( -
- {buttonContent} - {children} -
- ); -}; - -ImageButton.defaultHooks = pureComponentHooks; - -/** - * That's VERY fucking expensive thing! - * Use it only in places, where it really needed. - * Otherwise, the window opening time may increase by a third! - * Most of the blame is on Icon. - * Maybe it's also because I'm a bit crooked. - * (с) Aylong - */ -export const ImageButtonItem = (props) => { - const { - className, - color, - content, - horizontal, - selected, - disabled, - disabledContent, - tooltip, - tooltipPosition, - icon, - iconColor, - iconPosition, - iconRotation, - iconSize, - onClick, - children, - ...rest - } = props; - rest.onClick = (e) => { - if (!disabled && onClick) { - onClick(e); - } - }; - let itemContent = ( -
-
-
- {icon && (iconPosition === 'top' || iconPosition === 'left') && ( - - )} -
- {disabled && disabledContent ? disabledContent : content} - {children} -
- {icon && !(iconPosition === 'top' || iconPosition === 'left') && ( - - )} -
-
-
- ); - if (tooltip) { - itemContent = ( - - {itemContent} - - ); - } - - return itemContent; -}; - -ImageButton.Item = ImageButtonItem; diff --git a/tgui/packages/tgui/components/ImageButton.tsx b/tgui/packages/tgui/components/ImageButton.tsx new file mode 100644 index 000000000000..4b1b439e102e --- /dev/null +++ b/tgui/packages/tgui/components/ImageButton.tsx @@ -0,0 +1,185 @@ +/** + * @file + * @copyright 2024 Aylong (https://github.com/AyIong) + * @license MIT + */ + +import { Placement } from '@popperjs/core'; + +import { InfernoNode } from 'inferno'; +import { BooleanLike, classes } from 'common/react'; +import { BoxProps, computeBoxProps } from './Box'; +import { Icon } from './Icon'; +import { Stack } from './Stack'; +import { Tooltip } from './Tooltip'; + +type Props = Partial<{ + /** Asset cache. Example: `asset={`assetname32x32, ${thing.key}`}` */ + asset: string[]; + /** Classic way to put images. Example: `base64={thing.image}` */ + base64: string; + /** + * Special container for buttons. + * You can put any other component here. + * Has some special stylings! + * Example: `buttons={}` + */ + buttons: InfernoNode; + /** Enables alternate buttons container. Disables pointer-events on buttons if non-fluid. */ + buttonsAlt: boolean; + /** Content under image. Or on the right if fluid. */ + children: InfernoNode; + /** Applies a CSS class to the element. */ + className: string; + /** Color of the button. See [Button](#button) but without `transparent`. */ + color: string; + /** Makes button disabled and dark red if true. Also disables onClick. */ + disabled: BooleanLike; + /** + * Changes the layout of the button, making it fill the entire horizontally available space. + * Allows the use of `title` + */ + fluid: boolean; + /** Parameter responsible for the size of the image, component and standard "stubs". */ + imageSize: number; + /** Prop `src` of . Example: `imageSrc={resolveAsset(thing.image}` */ + imageSrc: string; + /** Called when button is clicked with LMB. */ + onClick: (e: any) => void; + /** Called when button is clicked with RMB. */ + onRightClick: (e: any) => void; + /** Makes button selected and green if true. */ + selected: BooleanLike; + /** Requires `fluid` for work. Bold text with divider betwen content. */ + title: string; + /** A fancy, boxy tooltip, which appears when hovering over the button */ + tooltip: InfernoNode; + /** Position of the tooltip. See [`Popper`](#Popper) for valid options. */ + tooltipPosition: Placement; +}> & + BoxProps; + +export const ImageButton = (props: Props) => { + const { + asset, + base64, + buttons, + buttonsAlt, + children, + className, + color, + disabled, + fluid, + imageSize = 64, + imageSrc, + onClick, + onRightClick, + selected, + title, + tooltip, + tooltipPosition, + ...rest + } = props; + + const getFallback = (iconName: string, iconSpin: boolean) => { + return ( + + + + + + ); + }; + + let buttonContent = ( +
{ + if (!disabled && onClick) { + onClick(event); + } + }} + onContextMenu={(event) => { + event.preventDefault(); + if (!disabled && onRightClick) { + onRightClick(event); + } + }} + style={{ width: !fluid ? `calc(${imageSize}px + 0.5em + 2px)` : 'auto' }} + > +
+ {(base64 || imageSrc) && !asset ? ( + + ) : asset ? ( + /* Not a cause assets made some shit with it on Byond 516 */ +
+ ) : ( + getFallback('question', false) + )} +
+ {fluid ? ( +
+ {title && {title}} + {children && {children}} +
+ ) : ( + children && ( + + {children} + + ) + )} +
+ ); + + if (tooltip) { + buttonContent = ( + + {buttonContent} + + ); + } + + return ( +
+ {buttonContent} + {buttons && ( +
+ {buttons} +
+ )} +
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/ChemMaster.tsx b/tgui/packages/tgui/interfaces/ChemMaster.tsx index 5afe8224c584..bff2b9ffad0f 100644 --- a/tgui/packages/tgui/interfaces/ChemMaster.tsx +++ b/tgui/packages/tgui/interfaces/ChemMaster.tsx @@ -459,7 +459,7 @@ const ChemMasterProductionGeneric = (props: { productionData: ProductionData }, act('set_sprite_style', { production_mode: modeId, style: id })} selected={set_sprite === id} /> diff --git a/tgui/packages/tgui/interfaces/CoinMint.tsx b/tgui/packages/tgui/interfaces/CoinMint.tsx index f99f8ce2590a..e0af52949ced 100644 --- a/tgui/packages/tgui/interfaces/CoinMint.tsx +++ b/tgui/packages/tgui/interfaces/CoinMint.tsx @@ -66,9 +66,9 @@ export const CoinMint = (props, context) => { key={material.id} bold inline + translucent m={0.2} textAlign={'center'} - color={'translucent'} selected={material.id === data.chosenMaterial} tooltip={material.name} content={ diff --git a/tgui/packages/tgui/interfaces/MedicalRecords.js b/tgui/packages/tgui/interfaces/MedicalRecords.js index ed070d52f826..19eff041ae82 100644 --- a/tgui/packages/tgui/interfaces/MedicalRecords.js +++ b/tgui/packages/tgui/interfaces/MedicalRecords.js @@ -167,25 +167,17 @@ const MedicalRecordsMaintenance = (_properties, context) => {
- + } > - act('purchase', { 'purchase': prize.itemID })} - /> + {prize.desc} ); })} diff --git a/tgui/packages/tgui/interfaces/RCD.js b/tgui/packages/tgui/interfaces/RCD.js index 963623f86a2e..1211bdbb2b7a 100644 --- a/tgui/packages/tgui/interfaces/RCD.js +++ b/tgui/packages/tgui/interfaces/RCD.js @@ -243,11 +243,10 @@ const AirlockTypeList = (props, context) => { {doors_filtered.map((entry, i) => ( - {
+
setTranslucent(!translucent)} content="Translucent" /> + } + > {COLORS_STATES.map((color) => ( -
+
{COLORS_SPECTRUM.map((color) => ( -
+
{COLORS_SPECTRUM.map((color) => ( {color} ))} - -
+ + ); }; diff --git a/tgui/packages/tgui/stories/ImageButton.stories.js b/tgui/packages/tgui/stories/ImageButton.stories.js index 70ffe9fc1773..29adbe2292f7 100644 --- a/tgui/packages/tgui/stories/ImageButton.stories.js +++ b/tgui/packages/tgui/stories/ImageButton.stories.js @@ -31,171 +31,123 @@ const COLORS_SPECTRUM = [ const COLORS_STATES = ['good', 'average', 'bad', 'black', 'white']; const Story = (props, context) => { + const [fluid1, setFluid1] = useLocalState(context, 'fluid1', true); + const [fluid2, setFluid2] = useLocalState(context, 'fluid2', false); + const [fluid3, setFluid3] = useLocalState(context, 'fluid3', false); const [disabled, setDisabled] = useLocalState(context, 'disabled', false); - const [onClick, setOnClick] = useLocalState(context, 'onClick', true); - const [vertical1, setVertical1] = useLocalState(context, 'vertical1', true); - const [vertical2, setVertical2] = useLocalState(context, 'vertical2', true); - const [vertical3, setVertical3] = useLocalState(context, 'vertical3', false); + const [selected, setSelected] = useLocalState(context, 'selected', false); + const [addImage, setAddImage] = useLocalState(context, 'addImage', false); + const [base64, setbase64] = useLocalState(context, 'base64', ''); const [title, setTitle] = useLocalState(context, 'title', 'Image Button'); - const [content, setContent] = useLocalState(context, 'content', 'Image is a LIE!'); - const [itemContent, setItemContent] = useLocalState(context, 'itemContent', 'Second Button'); - const [itemIcon, setItemIcon] = useLocalState(context, 'itemIcon', 'face-smile'); - - const [itemIconPos, setItemIconPos] = useLocalState(context, 'itemIconPos', 'default'); - - const [itemIconSize, setItemIconSize] = useLocalState(context, 'itemIconSize', 2); - + const [content, setContent] = useLocalState(context, 'content', 'You can put anything in there'); const [imageSize, setImageSize] = useLocalState(context, 'imageSize', 64); - const toggleVertical1 = () => { - setVertical1(!vertical1); - }; - - const toggleVertical2 = () => { - setVertical2(!vertical2); - }; - - const toggleVertical3 = () => { - setVertical3(!vertical3); - }; - - const toggleDisabled = () => { - setDisabled(!disabled); - }; - - const toggleOnClick = () => { - setOnClick(!onClick); - }; - return ( <>
- - setTitle(value)} /> - - - setContent(value)} /> - - - setImageSize(value)} - /> - + {addImage ? ( + + setbase64(value)} /> + + ) : ( + <> + + setTitle(value)} /> + + + setContent(value)} /> + + + setImageSize(value)} + /> + + + )} - + + + + + setFluid1(!fluid1)}> + Fluid + + - + setDisabled(!disabled)}> + Disabled + - + setSelected(!selected)}> + Selected + - - - - setItemContent(value)} /> - - - setItemIcon(value)} /> - - - setItemIconPos(value)} /> - - - setItemIconSize(value)} - /> - - - setAddImage(!addImage)} + > + Add Image + } - imageSize={`${imageSize}px`} - onClick={onClick ? () => 'false' : ''} > - {!vertical3 && ( - - )} + {content}
} + buttons={ + setFluid2(!fluid2)}> + Fluid + + } > {COLORS_STATES.map((color) => ( - 'false' : ''} - /> + + {color} + ))}
} + buttons={ + setFluid3(!fluid3)}> + Fluid + + } > {COLORS_SPECTRUM.map((color) => ( - 'false' : ''} - /> + + {color} + ))}
diff --git a/tgui/packages/tgui/styles/components/Button.scss b/tgui/packages/tgui/styles/components/Button.scss index 550a686b46b6..a6cd74c873fb 100644 --- a/tgui/packages/tgui/styles/components/Button.scss +++ b/tgui/packages/tgui/styles/components/Button.scss @@ -9,6 +9,7 @@ $color-default: colors.bg(colors.$primary) !default; $color-disabled: #999999 !default; +$color-disabled-translucent: #4d1717 !default; $color-selected: colors.bg(colors.$green) !default; $color-caution: colors.bg(colors.$yellow) !default; $color-danger: colors.bg(colors.$red) !default; @@ -16,25 +17,19 @@ $color-transparent-text: rgba(255, 255, 255, 0.5) !default; $border-radius: base.$border-radius !default; $bg-map: colors.$bg-map !default; -@mixin button-color($color, $text-color: null) { +@mixin button-color($color, $text-color: null, $translucent: false) { // Adapt text color to background luminance to ensure high contast - $luminance: luminance($color); + $luminance: if($translucent, 0, luminance($color)); $dynamic-text-color: if($luminance > 0.4, rgba(0, 0, 0, 1), rgba(255, 255, 255, 1)); - transition: - color 100ms, - background-color 100ms; - background-color: $color; + background-color: if($translucent, rgba($color, 0.33), $color); color: if($text-color != null, $text-color, $dynamic-text-color); - - &:focus { - transition: - color 250ms, - background-color 250ms; - } + transition: + color 200ms, + background-color 200ms; &:hover { - background-color: lighten($color, 25%); + background-color: if($translucent, rgba(lighten($color, 25%), 0.5), lighten($color, 25%)); color: $dynamic-text-color; } } @@ -109,42 +104,62 @@ $bg-map: colors.$bg-map !default; white-space: normal; word-wrap: break-word; } + +.Button--modal { + float: right; + z-index: 1; + margin-top: -0.5rem; +} + @each $color-name, $color-value in $bg-map { .Button--color--#{$color-name} { @include button-color($color-value); } + + .Button--color--#{$color-name}--translucent { + @include button-color($color-value, $color-transparent-text, $translucent: true); + } +} + +.Button--color--transparent { + @include button-color(rgba(base.$color-bg, 0), $color-transparent-text); } .Button--color--default { @include button-color($color-default); + + &--translucent { + @include button-color(lighten(base.$color-bg, 10%), $color-transparent-text, $translucent: true); + } } .Button--color--caution { @include button-color($color-caution); + + &--translucent { + @include button-color($color-caution, $color-transparent-text, $translucent: true); + } } .Button--color--danger { @include button-color($color-danger); -} -.Button--color--transparent { - @include button-color(rgba(base.$color-bg, 0), $color-transparent-text); -} - -.Button--color--translucent { - @include button-color(rgba(base.$color-bg, 0.6), $color-transparent-text); + &--translucent { + @include button-color($color-danger, $color-transparent-text, $translucent: true); + } } .Button--disabled { background-color: $color-disabled !important; -} + color: rgba($color-transparent-text, 0.75) !important; -.Button--selected { - @include button-color($color-selected); + &--translucent { + background-color: rgba($color-disabled-translucent, 0.5) !important; + color: $color-transparent-text !important; + } } -.Button--modal { - float: right; - z-index: 1; - margin-top: -0.5rem; +.Button--selected, +.Button--selected--translucent { + @include button-color($color-selected); } diff --git a/tgui/packages/tgui/styles/components/ImageButton.scss b/tgui/packages/tgui/styles/components/ImageButton.scss index 55bb8ca4f680..01e6a2188d9a 100644 --- a/tgui/packages/tgui/styles/components/ImageButton.scss +++ b/tgui/packages/tgui/styles/components/ImageButton.scss @@ -9,215 +9,253 @@ @use '../functions.scss' as *; $color-default: colors.bg(base.$color-bg-section) !default; -$color-disabled: #4d1717 !default; +$color-disabled: #631d1d !default; $color-selected: colors.bg(colors.$green) !default; $bg-map: colors.$bg-map !default; -@mixin button-style($color, $clickable: false) { +@mixin button-style( + $color, + $border-color: rgba(lighten($color, 50%), 0.2), + $border-width: 1px 0 0 0, + $opacity: 0.2, + $hoverable: true, + $transition-duration: 0.2s +) { $luminance: luminance($color); + $text-color: if($luminance > 0.3, rgba(0, 0, 0, 1), rgba(255, 255, 255, 1)); - background-color: rgba($color, 0.15); - border: base.em(1px) solid rgba(lighten($color, 50%), 0.2); - - @if $clickable { - transition: - color 100ms, - background-color 100ms; - - &:focus { - transition: - color 250ms, - background-color 250ms; - } + background-color: rgba($color, $opacity); + color: $text-color; + border: solid $border-color; + border-width: $border-width; + transition: + background-color $transition-duration, + border-color $transition-duration; + @if $hoverable { &:hover { - background-color: rgba(lighten($color, 25%), 0.25); + background-color: rgba(lighten($color, 50%), $opacity); } } } -.ImageButton__image { - line-height: 0; - align-self: center; -} - -.ImageButton__vertical, -.ImageButton--vertical { - display: inline-block; -} - -.ImageButton__horizontal { - display: flex; - user-select: none; - -ms-user-select: none; - width: 100%; - align-items: center; -} - -.ImageButton--horizontal { - display: flex; - margin-bottom: 0.5em; - user-select: none; - -ms-user-select: none; - - &:last-child { - margin-bottom: 0; - } -} - @each $color-name, $color-value in $bg-map { - .ImageButton--color--#{$color-name} { - @include button-style($color-value); + .color__#{$color-name} { + @include button-style($color-value, $border-width: 1px); } - .ImageButton--color--clickable--#{$color-name} { - @include button-style($color-value, true); + .contentColor__#{$color-name} { + @include button-style($color-value, $border-color: lighten($color-value, 25%), $opacity: 1, $hoverable: false); } -} -.ImageButton--color--default { - @include button-style(rgba(lighten($color-default, 100%), 0.2)); + .buttonsContainerColor__#{$color-name} { + @include button-style( + $color-value, + $border-width: 1px 1px 1px 0, + $opacity: 0.33, + $hoverable: false, + $transition-duration: 0 + ); + } } -.ImageButton--color--default--clickable { - @include button-style(rgba(lighten($color-default, 100%), 0.2), true); +.color__default { + @include button-style(lighten($color-default, 85%), $border-width: 1px); } -.ImageButton--disabled { +.disabled { background-color: rgba($color-disabled, 0.25) !important; - border: base.em(1px) solid rgba(lighten($color-disabled, 100%), 0.15); + border-color: rgba($color-disabled, 0.25) !important; } -.ImageButton--selected { - @include button-style($color-selected, true); +.selected { + @include button-style($color-selected, $border-color: rgba($color-selected, 0.25), $border-width: 1px); } -.ImageButton__content__vertical { - height: 1.6em; - padding-top: 2px; - border: 0; - text-align: center; - font-size: 11px; - font-weight: bold; +.contentColor__default { + @include button-style( + lighten($color-default, 80%), + $border-color: lighten($color-default, 100%), + $opacity: 1, + $hoverable: false + ); } -.ImageButton__content__horizontal { - display: block; - text-align: center; - font-size: 12px; - flex-grow: 1; -} - -.ImageButton__content__horizontal--title { - font-weight: bold; - padding: base.em(6px); - padding-bottom: 0; +.contentDisabled { + background-color: $color-disabled !important; + border-top: 1px solid lighten($color-disabled, 25%) !important; } -.ImageButton__content__horizontal--content { - padding: base.em(6px); +.contentSelected { + @include button-style($color-selected, $border-color: lighten($color-selected, 25%), $opacity: 1, $hoverable: false); } -.ImageButton__content__horizontal--divider { - margin: base.em(6px); - margin-bottom: 0; - border-top: Divider.$thickness solid Divider.$color; +.buttonsContainerColor__default { + @include button-style( + lighten($color-default, 85%), + $border-width: 1px 1px 1px 0, + $hoverable: false, + $transition-duration: 0 + ); } -.ImageButton__content--ellipsis { - overflow: hidden; - text-overflow: ellipsis; -} +.ImageButton { + display: inline-table; + position: relative; + text-align: center; + margin: 0.25em; + user-select: none; + -ms-user-select: none; -@mixin content-style($color) { - $luminance: luminance($color); - $text-color: if($luminance > 0.3, rgba(0, 0, 0, 0.9), rgba(255, 255, 255, 1)); + .noAction { + pointer-events: none; + } - color: $text-color; - background-color: darken($color, 2.5%); - border-top: base.em(1px) solid (rgba(lighten($color, 33%), 1)); -} + .container { + display: flex; + flex-direction: column; + border-radius: 0.33em; + } -@each $color-name, $color-value in $bg-map { - .ImageButton__content--color--#{$color-name} { - @include content-style(rgba($color-value, 1)); + .image { + position: relative; + align-self: center; + pointer-events: none; + overflow: hidden; + line-height: 0; + padding: 0.25em; + border-radius: 0.33em; + + * { + image-rendering: pixelated; + -ms-interpolation-mode: nearest-neighbor; // Remove with 516 + } } -} -.ImageButton__content--color--default { - @include content-style(rgba(lighten($color-default, 80%), 1)); -} + .buttonsContainer { + display: flex; + position: absolute; + overflow: hidden; + left: 1px; + bottom: 1.8em; + max-width: 100%; + z-index: 1; + + &.buttonsAltContainer { + overflow: visible; + flex-direction: column; + pointer-events: none; + top: 1px; + bottom: inherit !important; + } -.ImageButton__content--disabled { - background-color: $color-disabled !important; - color: rgba(200, 200, 200, 0.75); - border-top: base.em(1px) solid rgba(lighten($color-disabled, 100%), 0.5); -} + &.buttonsEmpty { + bottom: 1px; + } -.ImageButton__content--selected { - background-color: $color-selected !important; - border-top: base.em(1px) solid rgba(lighten($color-selected, 100%), 0.5); + & > * { + /* I know !important is bad, but here's no other way */ + margin: 0 !important; + padding: 0 0.2em !important; + border-radius: 0 !important; + } + } + + .content { + -ms-user-select: none; + user-select: none; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + padding: 0.25em 0.5em; + margin: -1px; + border-radius: 0 0 0.33em 0.33em; + z-index: 2; + } } -.ImageButton__item { +.fluid { display: flex; - justify-content: center; - align-items: center; + flex-direction: row; + position: relative; text-align: center; - width: 100%; - height: 100%; -} + margin: 0 0 0.5em 0; + user-select: none; + -ms-user-select: none; -.ImageButton__item--icon--horizontal { - display: flex; - align-items: center; + &:last-of-type { + margin-bottom: 0; + } - .fa, - .fas, - .far { - margin-left: 0.2em; - margin-right: 0.2em; + .info { + display: flex; + flex-direction: column; + justify-content: center; + flex: 1; } -} -@mixin item-style($color) { - $luminance: luminance($color); + .title { + font-weight: bold; + padding: 0.5em; - transition: - color 100ms, - background-color 100ms; - background-color: rgba($color, 0.4); - border: base.em(1px) solid rgba(lighten($color, 50%), 0.2); - border-left: 0; + &.divider { + margin: 0 0.5em; + border-bottom: Divider.$thickness solid Divider.$color; + } + } - &:focus { - transition: - color 250ms, - background-color 250ms; + .contentFluid { + padding: 0.5em; + color: white; } - &:hover { - background-color: rgba(lighten($color, 25%), 0.5); + .container { + flex-direction: row; + flex: 1; + + &.hasButtons { + border-radius: 0.33em 0 0 0.33em; + border-width: 1px 0 1px 1px; + } } -} -@each $color-name, $color-value in $bg-map { - .ImageButton__item--color--#{$color-name} { - @include item-style(rgba($color-value, 1)); + .image { + padding: 0; } -} -.ImageButton__item--color--default { - @include item-style(rgba(lighten($color-default, 100%), 1)); -} + .buttonsContainer { + position: relative; + left: inherit; + bottom: inherit; + border-radius: 0 0.33em 0.33em 0; -.ImageButton__item--disabled { - background-color: rgba($color-disabled, 0.5) !important; - border: base.em(1px) solid rgba(lighten($color-disabled, 100%), 0.15); - border-left: 0; -} + &.buttonsEmpty { + bottom: inherit; + } + + &.buttonsAltContainer { + overflow: hidden; + pointer-events: auto; + top: inherit; + + & > * { + border-top: 1px solid rgba(255, 255, 255, 0.075); -.ImageButton__item--selected { - border-left: 0; - @include item-style($color-selected); + &:first-child { + border-top: 0; + } + } + } + + & > * { + display: inline-flex; + flex-direction: column; + justify-content: center; + text-align: center; + white-space: pre-wrap; + line-height: base.em(14px); + height: 100%; + border-left: 1px solid rgba(255, 255, 255, 0.075); + } + } } diff --git a/tgui/public/tgui-panel.bundle.css b/tgui/public/tgui-panel.bundle.css index 22e52bff0f08..f8288aa94e50 100644 --- a/tgui/public/tgui-panel.bundle.css +++ b/tgui/public/tgui-panel.bundle.css @@ -1 +1 @@ -html,body{box-sizing:border-box;height:100%;margin:0;font-size:12px}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif}*,*:before,*:after{box-sizing:inherit}h1,h2,h3,h4,h5,h6{display:block;margin:0;padding:6px 0;padding:.5rem 0}h1{font-size:18px;font-size:1.5rem}h2{font-size:16px;font-size:1.333rem}h3{font-size:14px;font-size:1.167rem}h4{font-size:12px;font-size:1rem}td,th{vertical-align:baseline;text-align:left}.candystripe:nth-child(odd){background-color:rgba(0,0,0,.25)}.color-black{color:#1a1a1a!important}.color-white{color:#fff!important}.color-red{color:#df3e3e!important}.color-orange{color:#f37f33!important}.color-yellow{color:#fbda21!important}.color-olive{color:#cbe41c!important}.color-green{color:#25ca4c!important}.color-teal{color:#00d6cc!important}.color-blue{color:#2e93de!important}.color-violet{color:#7349cf!important}.color-purple{color:#ad45d0!important}.color-pink{color:#e34da1!important}.color-brown{color:#b97447!important}.color-grey{color:#848484!important}.color-good{color:#68c22d!important}.color-average{color:#f29a29!important}.color-bad{color:#df3e3e!important}.color-label{color:#8b9bb0!important}.color-gold{color:#f3b22f!important}.color-bg-black{background-color:#000!important}.color-bg-white{background-color:#d9d9d9!important}.color-bg-red{background-color:#bd2020!important}.color-bg-orange{background-color:#d95e0c!important}.color-bg-yellow{background-color:#d9b804!important}.color-bg-olive{background-color:#9aad14!important}.color-bg-green{background-color:#1b9638!important}.color-bg-teal{background-color:#009a93!important}.color-bg-blue{background-color:#1c71b1!important}.color-bg-violet{background-color:#552dab!important}.color-bg-purple{background-color:#8b2baa!important}.color-bg-pink{background-color:#cf2082!important}.color-bg-brown{background-color:#8c5836!important}.color-bg-grey{background-color:#646464!important}.color-bg-good{background-color:#4d9121!important}.color-bg-average{background-color:#cd7a0d!important}.color-bg-bad{background-color:#bd2020!important}.color-bg-label{background-color:#657a94!important}.color-bg-gold{background-color:#d6920c!important}.color-border-black{border-color:#1a1a1a!important}.color-border-white{border-color:#fff!important}.color-border-red{border-color:#df3e3e!important}.color-border-orange{border-color:#f37f33!important}.color-border-yellow{border-color:#fbda21!important}.color-border-olive{border-color:#cbe41c!important}.color-border-green{border-color:#25ca4c!important}.color-border-teal{border-color:#00d6cc!important}.color-border-blue{border-color:#2e93de!important}.color-border-violet{border-color:#7349cf!important}.color-border-purple{border-color:#ad45d0!important}.color-border-pink{border-color:#e34da1!important}.color-border-brown{border-color:#b97447!important}.color-border-grey{border-color:#848484!important}.color-border-good{border-color:#68c22d!important}.color-border-average{border-color:#f29a29!important}.color-border-bad{border-color:#df3e3e!important}.color-border-label{border-color:#8b9bb0!important}.color-border-gold{border-color:#f3b22f!important}.debug-layout,.debug-layout *:not(g):not(path){color:rgba(255,255,255,.9)!important;background:rgba(0,0,0,0)!important;outline:1px solid rgba(255,255,255,.5)!important;box-shadow:none!important;filter:none!important}.debug-layout:hover,.debug-layout *:not(g):not(path):hover{outline-color:rgba(255,255,255,.8)!important}.outline-dotted{outline-style:dotted!important}.outline-dashed{outline-style:dashed!important}.outline-solid{outline-style:solid!important}.outline-double{outline-style:double!important}.outline-groove{outline-style:groove!important}.outline-ridge{outline-style:ridge!important}.outline-inset{outline-style:inset!important}.outline-outset{outline-style:outset!important}.outline-color-black{outline:.167rem solid #1a1a1a!important}.outline-color-white{outline:.167rem solid #fff!important}.outline-color-red{outline:.167rem solid #df3e3e!important}.outline-color-orange{outline:.167rem solid #f37f33!important}.outline-color-yellow{outline:.167rem solid #fbda21!important}.outline-color-olive{outline:.167rem solid #cbe41c!important}.outline-color-green{outline:.167rem solid #25ca4c!important}.outline-color-teal{outline:.167rem solid #00d6cc!important}.outline-color-blue{outline:.167rem solid #2e93de!important}.outline-color-violet{outline:.167rem solid #7349cf!important}.outline-color-purple{outline:.167rem solid #ad45d0!important}.outline-color-pink{outline:.167rem solid #e34da1!important}.outline-color-brown{outline:.167rem solid #b97447!important}.outline-color-grey{outline:.167rem solid #848484!important}.outline-color-good{outline:.167rem solid #68c22d!important}.outline-color-average{outline:.167rem solid #f29a29!important}.outline-color-bad{outline:.167rem solid #df3e3e!important}.outline-color-label{outline:.167rem solid #8b9bb0!important}.outline-color-gold{outline:.167rem solid #f3b22f!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-baseline{text-align:baseline}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-pre{white-space:pre}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-underline{text-decoration:underline}.BlockQuote{color:#8b9bb0;border-left:.1666666667em solid #8b9bb0;padding-left:.5em;margin-bottom:.5em}.BlockQuote:last-child{margin-bottom:0}.Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.Button:last-child{margin-right:0;margin-bottom:0}.Button .fa,.Button .fas,.Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.Button--hasContent .fa,.Button--hasContent .fas,.Button--hasContent .far{margin-right:.25em}.Button--hasContent.Button--iconRight .fa,.Button--hasContent.Button--iconRight .fas,.Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.Button--fluid{display:block;margin-left:0;margin-right:0}.Button--circular{border-radius:50%}.Button--compact{padding:0 .25em;line-height:1.333em}.Button--multiLine{white-space:normal;word-wrap:break-word}.Button--color--black{transition:color .1s,background-color .1s;background-color:#000;color:#fff}.Button--color--black:focus{transition:color .25s,background-color .25s}.Button--color--black:hover{background-color:#101010;color:#fff}.Button--color--white{transition:color .1s,background-color .1s;background-color:#d9d9d9;color:#000}.Button--color--white:focus{transition:color .25s,background-color .25s}.Button--color--white:hover{background-color:#f8f8f8;color:#000}.Button--color--red{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.Button--color--red:focus{transition:color .25s,background-color .25s}.Button--color--red:hover{background-color:#d93f3f;color:#fff}.Button--color--orange{transition:color .1s,background-color .1s;background-color:#d95e0c;color:#fff}.Button--color--orange:focus{transition:color .25s,background-color .25s}.Button--color--orange:hover{background-color:#ef7e33;color:#fff}.Button--color--yellow{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.Button--color--yellow:focus{transition:color .25s,background-color .25s}.Button--color--yellow:hover{background-color:#f5d523;color:#000}.Button--color--olive{transition:color .1s,background-color .1s;background-color:#9aad14;color:#fff}.Button--color--olive:focus{transition:color .25s,background-color .25s}.Button--color--olive:hover{background-color:#bdd327;color:#fff}.Button--color--green{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.Button--color--green:focus{transition:color .25s,background-color .25s}.Button--color--green:hover{background-color:#2fb94f;color:#fff}.Button--color--teal{transition:color .1s,background-color .1s;background-color:#009a93;color:#fff}.Button--color--teal:focus{transition:color .25s,background-color .25s}.Button--color--teal:hover{background-color:#10bdb6;color:#fff}.Button--color--blue{transition:color .1s,background-color .1s;background-color:#1c71b1;color:#fff}.Button--color--blue:focus{transition:color .25s,background-color .25s}.Button--color--blue:hover{background-color:#308fd6;color:#fff}.Button--color--violet{transition:color .1s,background-color .1s;background-color:#552dab;color:#fff}.Button--color--violet:focus{transition:color .25s,background-color .25s}.Button--color--violet:hover{background-color:#7249ca;color:#fff}.Button--color--purple{transition:color .1s,background-color .1s;background-color:#8b2baa;color:#fff}.Button--color--purple:focus{transition:color .25s,background-color .25s}.Button--color--purple:hover{background-color:#aa46ca;color:#fff}.Button--color--pink{transition:color .1s,background-color .1s;background-color:#cf2082;color:#fff}.Button--color--pink:focus{transition:color .25s,background-color .25s}.Button--color--pink:hover{background-color:#e04ca0;color:#fff}.Button--color--brown{transition:color .1s,background-color .1s;background-color:#8c5836;color:#fff}.Button--color--brown:focus{transition:color .25s,background-color .25s}.Button--color--brown:hover{background-color:#ae724c;color:#fff}.Button--color--grey{transition:color .1s,background-color .1s;background-color:#646464;color:#fff}.Button--color--grey:focus{transition:color .25s,background-color .25s}.Button--color--grey:hover{background-color:#818181;color:#fff}.Button--color--good{transition:color .1s,background-color .1s;background-color:#4d9121;color:#fff}.Button--color--good:focus{transition:color .25s,background-color .25s}.Button--color--good:hover{background-color:#67b335;color:#fff}.Button--color--average{transition:color .1s,background-color .1s;background-color:#cd7a0d;color:#fff}.Button--color--average:focus{transition:color .25s,background-color .25s}.Button--color--average:hover{background-color:#eb972b;color:#fff}.Button--color--bad{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.Button--color--bad:focus{transition:color .25s,background-color .25s}.Button--color--bad:hover{background-color:#d93f3f;color:#fff}.Button--color--label{transition:color .1s,background-color .1s;background-color:#657a94;color:#fff}.Button--color--label:focus{transition:color .25s,background-color .25s}.Button--color--label:hover{background-color:#8a9aae;color:#fff}.Button--color--gold{transition:color .1s,background-color .1s;background-color:#d6920c;color:#fff}.Button--color--gold:focus{transition:color .25s,background-color .25s}.Button--color--gold:hover{background-color:#eeaf30;color:#fff}.Button--color--default{transition:color .1s,background-color .1s;background-color:#3e6189;color:#fff}.Button--color--default:focus{transition:color .25s,background-color .25s}.Button--color--default:hover{background-color:#567daa;color:#fff}.Button--color--caution{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.Button--color--caution:focus{transition:color .25s,background-color .25s}.Button--color--caution:hover{background-color:#f5d523;color:#000}.Button--color--danger{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.Button--color--danger:focus{transition:color .25s,background-color .25s}.Button--color--danger:hover{background-color:#d93f3f;color:#fff}.Button--color--transparent{transition:color .1s,background-color .1s;background-color:rgba(32,32,32,0);color:rgba(255,255,255,.5)}.Button--color--transparent:focus{transition:color .25s,background-color .25s}.Button--color--transparent:hover{background-color:rgba(50,50,50,.81);color:#fff}.Button--color--translucent{transition:color .1s,background-color .1s;background-color:rgba(32,32,32,.6);color:rgba(255,255,255,.5)}.Button--color--translucent:focus{transition:color .25s,background-color .25s}.Button--color--translucent:hover{background-color:rgba(54,54,54,.925);color:#fff}.Button--disabled{background-color:#999!important}.Button--selected{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.Button--selected:focus{transition:color .25s,background-color .25s}.Button--selected:hover{background-color:#2fb94f;color:#fff}.Button--modal{float:right;z-index:1;margin-top:-.5rem}.ColorBox{display:inline-block;width:1em;height:1em;line-height:1em;text-align:center}.Dimmer{display:flex;justify-content:center;align-items:center;position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.75);z-index:1}.Dropdown{position:relative;align-items:center}.Dropdown__control{display:inline-block;align-items:center;font-family:Verdana,sans-serif;font-size:1em;width:8.3333333333em;line-height:1.3333333333em;-ms-user-select:none;user-select:none}.Dropdown__arrow-button{float:right;padding-left:.35em;width:1.2em;height:1.8333333333em;border-left:.0833333333em solid #000;border-left:.0833333333em solid rgba(0,0,0,.25)}.Dropdown__menu{overflow-y:auto;align-items:center;z-index:5;max-height:16.6666666667em;border-radius:0 0 .1666666667em .1666666667em;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75)}.Dropdown__menu-scroll{overflow-y:scroll}.Dropdown__menuentry{padding:.1666666667em .3333333333em;font-family:Verdana,sans-serif;font-size:1em;line-height:1.4166666667em;transition:background-color .1s ease-out}.Dropdown__menuentry.selected{background-color:rgba(255,255,255,.5)!important;transition:background-color 0ms}.Dropdown__menuentry:hover{background-color:rgba(255,255,255,.2);transition:background-color 0ms}.Dropdown__over{top:auto;bottom:100%}.Dropdown__selected-text{display:inline-block;text-overflow:ellipsis;white-space:nowrap;height:1.4166666667em;width:calc(100% - 1.2em);text-align:left;padding-top:2.5px}.Flex{display:-ms-flexbox;display:flex}.Flex--inline{display:inline-flex}.Flex--iefix{display:block}.Flex--iefix.Flex--inline,.Flex__item--iefix{display:inline-block}.Flex--iefix--column>.Flex__item--iefix{display:block}.Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.Knob__popupValue,.Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Knob__popupValue--right{top:.25rem;right:-50%}.Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.Knob__ringTrackPivot{transform:rotate(135deg)}.Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.Knob__ringFillPivot{transform:rotate(135deg)}.Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.Knob--color--white .Knob__ringFill{stroke:#fff}.Knob--color--red .Knob__ringFill{stroke:#df3e3e}.Knob--color--orange .Knob__ringFill{stroke:#f37f33}.Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.Knob--color--green .Knob__ringFill{stroke:#25ca4c}.Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.Knob--color--blue .Knob__ringFill{stroke:#2e93de}.Knob--color--violet .Knob__ringFill{stroke:#7349cf}.Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.Knob--color--pink .Knob__ringFill{stroke:#e34da1}.Knob--color--brown .Knob__ringFill{stroke:#b97447}.Knob--color--grey .Knob__ringFill{stroke:#848484}.Knob--color--good .Knob__ringFill{stroke:#68c22d}.Knob--color--average .Knob__ringFill{stroke:#f29a29}.Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.LabeledList{display:table;width:100%;width:calc(100% + 1em);border-collapse:collapse;border-spacing:0;margin:-.25em -.5em 0;padding:0}.LabeledList__row{display:table-row}.LabeledList__row:last-child .LabeledList__cell{padding-bottom:0}.LabeledList__cell{display:table-cell;margin:0;padding:.25em .5em;border:0;text-align:left;vertical-align:baseline}.LabeledList__label{width:1%;white-space:nowrap;min-width:5em}.LabeledList__buttons{width:.1%;white-space:nowrap;text-align:right;padding-top:.0833333333em;padding-bottom:0}.LabeledList__breakContents{word-break:break-all;word-wrap:break-word}.Modal{background-color:#202020;max-width:calc(100% - 1rem);padding:1rem;scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#000;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) .8333333333em,rgba(0,0,0,.1) 1.6666666667em)}.NoticeBox--color--black{color:#fff;background-color:#000}.NoticeBox--color--white{color:#000;background-color:#b3b3b3}.NoticeBox--color--red{color:#fff;background-color:#701f1f}.NoticeBox--color--orange{color:#fff;background-color:#854114}.NoticeBox--color--yellow{color:#000;background-color:#83710d}.NoticeBox--color--olive{color:#000;background-color:#576015}.NoticeBox--color--green{color:#fff;background-color:#174e24}.NoticeBox--color--teal{color:#fff;background-color:#064845}.NoticeBox--color--blue{color:#fff;background-color:#1b4565}.NoticeBox--color--violet{color:#fff;background-color:#3b2864}.NoticeBox--color--purple{color:#fff;background-color:#542663}.NoticeBox--color--pink{color:#fff;background-color:#802257}.NoticeBox--color--brown{color:#fff;background-color:#4c3729}.NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.NoticeBox--color--average{color:#fff;background-color:#7b4e13}.NoticeBox--color--bad{color:#fff;background-color:#701f1f}.NoticeBox--color--label{color:#fff;background-color:#53565a}.NoticeBox--color--gold{color:#fff;background-color:#825d13}.NoticeBox--type--info{color:#fff;background-color:#235982}.NoticeBox--type--success{color:#fff;background-color:#1e662f}.NoticeBox--type--warning{color:#fff;background-color:#a95219}.NoticeBox--type--danger{color:#fff;background-color:#8f2828}.NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.NumberInput--fluid{display:block}.NumberInput__content{margin-left:.5em}.NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.ProgressBar__fill--animated{transition:background-color .5s,width .5s}.ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.ProgressBar--color--default{border:.0833333333em solid #3e6189}.ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.ProgressBar--color--disabled{border:1px solid #999}.ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.ProgressBar--color--black{border:.0833333333em solid #000!important}.ProgressBar--color--black .ProgressBar__fill{background-color:#000}.ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.ProgressBar--color--grey{border:.0833333333em solid #646464!important}.ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--label{border:.0833333333em solid #657a94!important}.ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.Section{position:relative;margin-bottom:.5em;background-color:#131313;box-sizing:border-box}.Section:last-child{margin-bottom:0}.Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.Section__rest{position:relative}.Section__content{padding:.66em .5em}.Section--fitted>.Section__rest>.Section__content{padding:0}.Section--fill{display:flex;flex-direction:column;height:100%}.Section--fill>.Section__rest{flex-grow:1}.Section--fill>.Section__rest>.Section__content{height:100%}.Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.Section--scrollable{overflow-x:hidden;overflow-y:hidden}.Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.Section .Section:first-child{margin-top:-.5em}.Section .Section .Section__titleText{font-size:1.0833333333em}.Section .Section .Section .Section__titleText{font-size:1em}.Slider:not(.Slider__disabled){cursor:e-resize}.Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Divider--horizontal{margin:.5em 0}.Divider--horizontal:not(.Divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Divider--vertical{height:100%;margin:0 .5em}.Divider--vertical:not(.Divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--fill{height:100%}.Stack--horizontal>.Stack__item{margin-left:.5em}.Stack--horizontal>.Stack__item:first-child{margin-left:0}.Stack--vertical>.Stack__item{margin-top:.5em}.Stack--vertical>.Stack__item:first-child{margin-top:0}.Stack--zebra>.Stack__item:nth-child(2n){background-color:#131313}.Stack--horizontal>.Stack__divider:not(.Stack__divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--vertical>.Stack__divider:not(.Stack__divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Table{display:table;width:100%;border-collapse:collapse;border-spacing:0;margin:0}.Table--collapsing{width:auto}.Table__row{display:table-row}.Table__cell{display:table-cell;padding:0 .25em}.Table__cell:first-child{padding-left:0}.Table__cell:last-child{padding-right:0}.Table__row--header .Table__cell,.Table__cell--header{font-weight:700;padding-bottom:.5em}.Table__cell--collapsing{width:1%;white-space:nowrap}.Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#131313}.Tabs--fill{height:100%}.Section .Tabs{background-color:rgba(0,0,0,0)}.Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.Tabs--vertical{flex-direction:column;padding:.25em .25em .25em 0}.Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.Tabs--horizontal:last-child{margin-bottom:0}.Tabs__Tab{flex-grow:0}.Tabs--fluid .Tabs__Tab{flex-grow:1}.Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(255,255,255,.5);min-height:2.25em;min-width:4em;transition:background-color 50ms ease-out}.Tab:not(.Tab--selected):hover{background-color:rgba(255,255,255,.075);transition:background-color 0}.Tab--selected{background-color:rgba(255,255,255,.125);color:#dfe7f0}.Tab__text{flex-grow:1;margin:0 .5em}.Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #d4dfec}.Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-right-radius:.25em;border-bottom-right-radius:.25em}.Tabs--vertical .Tab--selected{border-left:.1666666667em solid #d4dfec}.Tab--selected.Tab--color--black{color:#535353}.Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#1a1a1a}.Tabs--vertical .Tab--selected.Tab--color--black{border-left-color:#1a1a1a}.Tab--selected.Tab--color--white{color:#fff}.Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#fff}.Tabs--vertical .Tab--selected.Tab--color--white{border-left-color:#fff}.Tab--selected.Tab--color--red{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--red{border-left-color:#df3e3e}.Tab--selected.Tab--color--orange{color:#f69f66}.Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#f37f33}.Tabs--vertical .Tab--selected.Tab--color--orange{border-left-color:#f37f33}.Tab--selected.Tab--color--yellow{color:#fce358}.Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#fbda21}.Tabs--vertical .Tab--selected.Tab--color--yellow{border-left-color:#fbda21}.Tab--selected.Tab--color--olive{color:#d8eb55}.Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#cbe41c}.Tabs--vertical .Tab--selected.Tab--color--olive{border-left-color:#cbe41c}.Tab--selected.Tab--color--green{color:#53e074}.Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#25ca4c}.Tabs--vertical .Tab--selected.Tab--color--green{border-left-color:#25ca4c}.Tab--selected.Tab--color--teal{color:#21fff5}.Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00d6cc}.Tabs--vertical .Tab--selected.Tab--color--teal{border-left-color:#00d6cc}.Tab--selected.Tab--color--blue{color:#62aee6}.Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#2e93de}.Tabs--vertical .Tab--selected.Tab--color--blue{border-left-color:#2e93de}.Tab--selected.Tab--color--violet{color:#9676db}.Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#7349cf}.Tabs--vertical .Tab--selected.Tab--color--violet{border-left-color:#7349cf}.Tab--selected.Tab--color--purple{color:#c274db}.Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#ad45d0}.Tabs--vertical .Tab--selected.Tab--color--purple{border-left-color:#ad45d0}.Tab--selected.Tab--color--pink{color:#ea79b9}.Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#e34da1}.Tabs--vertical .Tab--selected.Tab--color--pink{border-left-color:#e34da1}.Tab--selected.Tab--color--brown{color:#ca9775}.Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#b97447}.Tabs--vertical .Tab--selected.Tab--color--brown{border-left-color:#b97447}.Tab--selected.Tab--color--grey{color:#a3a3a3}.Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#848484}.Tabs--vertical .Tab--selected.Tab--color--grey{border-left-color:#848484}.Tab--selected.Tab--color--good{color:#8cd95a}.Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#68c22d}.Tabs--vertical .Tab--selected.Tab--color--good{border-left-color:#68c22d}.Tab--selected.Tab--color--average{color:#f5b35e}.Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#f29a29}.Tabs--vertical .Tab--selected.Tab--color--average{border-left-color:#f29a29}.Tab--selected.Tab--color--bad{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--bad{border-left-color:#df3e3e}.Tab--selected.Tab--color--label{color:#a8b4c4}.Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#8b9bb0}.Tabs--vertical .Tab--selected.Tab--color--label{border-left-color:#8b9bb0}.Tab--selected.Tab--color--gold{color:#f6c563}.Tabs--horizontal .Tab--selected.Tab--color--gold{border-bottom-color:#f3b22f}.Tabs--vertical .Tab--selected.Tab--color--gold{border-left-color:#f3b22f}.Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.Input--disabled{color:#777;border-color:#848484;border-color:rgba(132,132,132,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input--monospace .Input__input{font-family:Consolas,monospace}.TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.TextArea--fluid{display:block;width:auto;height:auto}.TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.Tooltip{z-index:2;padding:.5em .75em;pointer-events:none;text-align:left;transition:opacity .15s ease-out;background-color:#000;color:#fff;box-shadow:.1em .1em 1.25em -.1em rgba(0,0,0,.5);border-radius:.16em;max-width:20.8333333333em}.Chat{color:#abc6ec}.Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.Chat__badge:before{content:"x"}.Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.Chat__scrollButton{position:fixed;right:2em;bottom:1em}.Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#131313}.Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.Chat__highlight{color:#000}.Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.ChatMessage{word-wrap:break-word}.ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.Ping{position:relative;padding:.125em .25em;border:.0833333333em solid rgba(140,140,140,.5);border-radius:.25em;width:3.75em;text-align:right}.Ping__indicator{content:"";position:absolute;top:.5em;left:.5em;width:.5em;height:.5em;background-color:#888;border-radius:.25em}.Notifications{position:absolute;top:1em;left:.75em;right:2em}.Notification{color:#fff;background-color:#dc143c;padding:.5em;margin:1em 0}.Notification:first-child{margin-top:0}.Notification:last-child{margin-bottom:0}html,body{scrollbar-color:#363636 #181818}.Layout,.Layout *{scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.Layout__content--flexRow{display:flex;flex-flow:row}.Layout__content--flexColumn{display:flex;flex-flow:column}.Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.Layout__content--noMargin{margin:0}.Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#202020;background-image:linear-gradient(to bottom,#202020,#202020)}.Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.Window__contentPadding:after{height:0}.Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(56,56,56,.25);pointer-events:none}.Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}.emoji16x16{vertical-align:middle}a{color:#397ea5}a.popt{text-decoration:none}.popup{position:fixed;top:50%;left:50%;background:#ddd}.popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.popup .close:hover{background:#999}.popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.popup input[type=text]:hover,.popup input[type=text]:active,.popup input[type=text]:focus{border-color:green}.popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.popup input[type=submit]:hover,.popup input[type=submit]:focus,.popup input[type=submit]:active{background:#aaa;cursor:pointer}.changeFont{padding:10px}.changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.changeFont a:hover{background:#ccc}.highlightPopup{padding:10px;text-align:center}.highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.highlightPopup input.highlightColor{background-color:#ff0}.highlightPopup input.highlightTermSubmit{margin-top:5px}.contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.contextMenu a:hover{background-color:#ccc}.filterMessages{padding:5px}.filterMessages div{padding:2px 0}.icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.motd{color:#a4bad6;font-family:Verdana,sans-serif;white-space:normal}.motd h1,.motd h2,.motd h3,.motd h4,.motd h5,.motd h6{color:#a4bad6;text-decoration:underline}.motd a,.motd a:link,.motd a:active,.motd a:hover{color:#a4bad6}.italic,.italics,.emote{font-style:italic}.highlight{background:#ff0}h1,h2,h3,h4,h5,h6{color:#a4bad6;font-family:Georgia,Verdana,sans-serif}em{font-style:normal;font-weight:700}.darkmblue{color:#6685f5}.prefix,.ooc{font-weight:700}.looc{color:#69c;font-weight:700}.adminobserverooc{color:#09c;font-weight:700}.adminooc{color:#b82e00;font-weight:700}.adminobserver{color:#960;font-weight:700}.admin{color:#386aff;font-weight:700}.adminsay{color:#9611d4;font-weight:700}.mentorhelp{color:#07b;font-weight:700}.adminhelp{color:#a00;font-weight:700}.playerreply{color:#80b;font-weight:700}.pmsend{color:#6685f5}.debug{color:#6d2f83}.name,.yell{font-weight:700}.siliconsay{font-family:Courier New,Courier,monospace}.deadsay{color:#e2c1ff}.radio{color:#20b142}.deptradio{color:#939}.comradio{color:#5f5cff}.syndradio{color:#8f4a4b}.dsquadradio{color:#998599}.resteamradio{color:#18bc46}.airadio{color:#ff5ed7}.centradio{color:#2681a5}.secradio{color:#dd3535}.engradio{color:#feac20}.medradio{color:#00b5ad}.sciradio{color:#c68cfa}.supradio{color:#b88646}.srvradio{color:#bbd164}.proradio{color:#b84f92}.admin_channel{color:#03fc9d;font-weight:700}.all_admin_ping{color:#12a5f4;font-weight:700;font-size:120%;text-align:center}.mentor_channel{color:#775bff;font-weight:700}.mentor_channel_admin{color:#a35cff;font-weight:700}.djradio{color:#960}.binaryradio{color:#1b00fb;font-family:Courier New,Courier,monospace}.mommiradio{color:#6685f5}.alert{color:#d82020}h1.alert,h2.alert{color:#a4bad6}.ghostalert{color:#cc00c6;font-style:italic;font-weight:700}.emote{font-style:italic}.selecteddna{color:#a4bad6;background-color:#001b1b}.attack{color:red}.moderate{color:#c00}.disarm{color:#900}.passive{color:#600}.warning{color:#c51e1e;font-style:italic}.boldwarning{color:#c51e1e;font-style:italic;font-weight:700}.danger{color:#c51e1e;font-weight:700}.userdanger{color:#c51e1e;font-weight:700;font-size:120%}.biggerdanger{color:red;font-weight:700;font-size:150%}.notice{color:#6685f5}.boldnotice{color:#6685f5;font-weight:700}.suicide{color:#ff5050;font-style:italic}.green{color:#03bb39}.pr_announce,.boldannounceic,.boldannounceooc{color:#c51e1e;font-weight:700}.greenannounce{color:#059223;font-weight:700}.alien{color:#c433c4}.noticealien{color:#00c000}.alertalien{color:#00c000;font-weight:700}.terrorspider{color:#cf52fa}.dantalion{color:#8b2c5e}.chaosverygood{color:#19e0c0;font-weight:700;font-size:120%}.chaosgood{color:#19e0c0;font-weight:700}.chaosneutral{color:#479ac0;font-weight:700}.chaosbad{color:#9047c0;font-weight:700}.chaosverybad{color:#9047c0;font-weight:700;font-size:120%}.sinister{color:purple;font-weight:700;font-style:italic}.medal{font-weight:700}.blob{color:#006221;font-weight:700;font-style:italic}.confirm{color:#00af3b}.rose{color:#ff5050}.sans{font-family:Comic Sans MS,cursive,sans-serif}.wingdings{font-family:Wingdings,Webdings}.robot{font-family:OCR-A,monospace;font-size:1.15em;font-weight:700}.ancient{color:#008b8b;font-style:italic}.newscaster{color:#c00}.mod{color:#735638;font-weight:700}.modooc{color:#184880;font-weight:700}.adminmod{color:#f0aa14;font-weight:700}.tajaran{color:#803b56}.skrell{color:#00ced1}.solcom{color:#8282fb}.com_srus{color:#7c4848}.soghun{color:#228b22}.changeling{color:#00b4de}.vox{color:#a0a}.diona{color:#804000;font-weight:700}.trinary{color:#727272}.kidan{color:#c64c05}.slime{color:#07a}.drask{color:#a3d4eb;font-family:Arial Black}.moth{color:#869b29;font-family:Copperplate}.clown{color:red}.vulpkanin{color:#b97a57}.abductor{color:purple;font-style:italic}.mind_control{color:#a00d6f;font-size:3;font-weight:700;font-style:italic}.rough{font-family:Trebuchet MS,cursive,sans-serif}.say_quote{font-family:Georgia,Verdana,sans-serif}.cult{color:purple;font-weight:700;font-style:italic}.cultspeech{color:#af0000;font-style:italic}.cultitalic{color:#a60000;font-style:italic}.cultlarge{color:#a60000;font-weight:700;font-size:120%}.narsie{color:#a60000;font-weight:700;font-size:300%}.narsiesmall{color:#a60000;font-weight:700;font-size:200%}.zombie{color:#7c4848}.zombielarge{color:#7c4848;font-weight:700;font-size:120%}.interface{color:#9031c4}.big{font-size:150%}.reallybig{font-size:175%}.greentext{color:#0f0;font-size:150%}.redtext{color:red;font-size:150%}.bold{font-weight:700}.his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.center{text-align:center}.red{color:red}.purple{color:#9031c4}.skeleton{color:#c8c8c8;font-weight:700;font-style:italic}.gutter{color:#7092be;font-family:Trebuchet MS,cursive,sans-serif}.orange{color:orange}.orangei{color:orange;font-style:italic}.orangeb{color:orange;font-weight:700}.resonate{color:#298f85}.healthscan_oxy{color:#5cc9ff}.revennotice{color:#6685f5}.revenboldnotice{color:#6685f5;font-weight:700}.revenbignotice{color:#6685f5;font-weight:700;font-size:120%}.revenminor{color:#823abb}.revenwarning{color:#760fbb;font-style:italic}.revendanger{color:#760fbb;font-weight:700;font-size:120%}.specialnotice{color:#4a6f82;font-weight:700;font-size:120%}.good{color:green}.average{color:#ff8000}.bad{color:red}.italics,.talkinto{font-style:italic}.whisper{font-style:italic;color:#ccc}.recruit{color:#5c00e6;font-weight:700;font-style:italic}.memo{color:#638500;text-align:center}.memoedit{text-align:center;font-size:75%}.connectionClosed,.fatalError{background:red;color:#fff;padding:5px}.connectionClosed.restored{background:green}.internal.boldnshit{color:#6685f5;font-weight:700}.rebooting{background:#2979af;color:#fff;padding:5px}.rebooting a{color:#fff!important;text-decoration-color:#fff!important}.text-normal{font-weight:400;font-style:normal}.hidden{display:none;visibility:hidden}.colossus{color:#7f282a;font-size:175%}.hierophant{color:#609;font-weight:700;font-style:italic}.hierophant_warning{color:#609;font-style:italic}.emoji{max-height:16px;max-width:16px}.adminticket{color:#3daf21;font-weight:700}.adminticketalt{color:#ccb847;font-weight:700}span.body .codephrases{color:#55f}span.body .coderesponses{color:#f33}.announcement h1,.announcement h2{color:#a4bad6;margin:8pt 0;line-height:1.2}.announcement p{color:#d82020;line-height:1.3}.announcement.minor h1{font-size:180%}.announcement.minor h2{font-size:170%}.announcement.sec h1{color:red;font-size:180%;font-family:Verdana,sans-serif}.bolditalics{font-style:italic;font-weight:700}.boxed_message{background:#1b1c1e;border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.boxed_message.left_align_text{text-align:left}.boxed_message.red_border{background:#1e1b1b;border-color:#a00}.boxed_message.green_border{background:#1b1e1c;border-color:#0f0}.boxed_message.purple_border{background:#1d1c1f;border-color:#8000ff}.boxed_message.notice_border{background:#1b1c1e;border-color:#6685f5}.boxed_message.thick_border{border-width:thick}.oxygen{color:#449dff}.nitrogen{color:#f94541}.carbon_dioxide{color:#ccc}.plasma{color:#eb6b00}.sleeping_agent{color:#f28b89}.agent_b{color:teal}.theme-light .color-black{color:#000!important}.theme-light .color-white{color:#e6e6e6!important}.theme-light .color-red{color:#c82121!important}.theme-light .color-orange{color:#e6630d!important}.theme-light .color-yellow{color:#e5c304!important}.theme-light .color-olive{color:#a3b816!important}.theme-light .color-green{color:#1d9f3b!important}.theme-light .color-teal{color:#00a39c!important}.theme-light .color-blue{color:#1e78bb!important}.theme-light .color-violet{color:#5a30b5!important}.theme-light .color-purple{color:#932eb4!important}.theme-light .color-pink{color:#db228a!important}.theme-light .color-brown{color:#955d39!important}.theme-light .color-grey{color:#e6e6e6!important}.theme-light .color-good{color:#529923!important}.theme-light .color-average{color:#da810e!important}.theme-light .color-bad{color:#c82121!important}.theme-light .color-label{color:#353535!important}.theme-light .color-gold{color:#e39b0d!important}.theme-light .color-bg-black{background-color:#000!important}.theme-light .color-bg-white{background-color:#bfbfbf!important}.theme-light .color-bg-red{background-color:#a61c1c!important}.theme-light .color-bg-orange{background-color:#c0530b!important}.theme-light .color-bg-yellow{background-color:#bfa303!important}.theme-light .color-bg-olive{background-color:#889912!important}.theme-light .color-bg-green{background-color:#188532!important}.theme-light .color-bg-teal{background-color:#008882!important}.theme-light .color-bg-blue{background-color:#19649c!important}.theme-light .color-bg-violet{background-color:#4b2897!important}.theme-light .color-bg-purple{background-color:#7a2696!important}.theme-light .color-bg-pink{background-color:#b61d73!important}.theme-light .color-bg-brown{background-color:#7c4d2f!important}.theme-light .color-bg-grey{background-color:#bfbfbf!important}.theme-light .color-bg-good{background-color:#44801d!important}.theme-light .color-bg-average{background-color:#b56b0b!important}.theme-light .color-bg-bad{background-color:#a61c1c!important}.theme-light .color-bg-label{background-color:#2c2c2c!important}.theme-light .color-bg-gold{background-color:#bd810b!important}.theme-light .color-border-black{border-color:#000!important}.theme-light .color-border-white{border-color:#e6e6e6!important}.theme-light .color-border-red{border-color:#c82121!important}.theme-light .color-border-orange{border-color:#e6630d!important}.theme-light .color-border-yellow{border-color:#e5c304!important}.theme-light .color-border-olive{border-color:#a3b816!important}.theme-light .color-border-green{border-color:#1d9f3b!important}.theme-light .color-border-teal{border-color:#00a39c!important}.theme-light .color-border-blue{border-color:#1e78bb!important}.theme-light .color-border-violet{border-color:#5a30b5!important}.theme-light .color-border-purple{border-color:#932eb4!important}.theme-light .color-border-pink{border-color:#db228a!important}.theme-light .color-border-brown{border-color:#955d39!important}.theme-light .color-border-grey{border-color:#e6e6e6!important}.theme-light .color-border-good{border-color:#529923!important}.theme-light .color-border-average{border-color:#da810e!important}.theme-light .color-border-bad{border-color:#c82121!important}.theme-light .color-border-label{border-color:#353535!important}.theme-light .color-border-gold{border-color:#e39b0d!important}.theme-light .Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#fff}.theme-light .Tabs--fill{height:100%}.theme-light .Section .Tabs{background-color:rgba(0,0,0,0)}.theme-light .Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.theme-light .Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.theme-light .Tabs--vertical{flex-direction:column;padding:.25em .25em .25em 0}.theme-light .Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.theme-light .Tabs--horizontal:last-child{margin-bottom:0}.theme-light .Tabs__Tab{flex-grow:0}.theme-light .Tabs--fluid .Tabs__Tab{flex-grow:1}.theme-light .Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(0,0,0,.5);min-height:2.25em;min-width:4em;transition:background-color 50ms ease-out}.theme-light .Tab:not(.Tab--selected):hover{background-color:rgba(0,0,0,.075);transition:background-color 0}.theme-light .Tab--selected{background-color:rgba(0,0,0,.125);color:#404040}.theme-light .Tab__text{flex-grow:1;margin:0 .5em}.theme-light .Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.theme-light .Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.theme-light .Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.theme-light .Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #000}.theme-light .Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-right-radius:.25em;border-bottom-right-radius:.25em}.theme-light .Tabs--vertical .Tab--selected{border-left:.1666666667em solid #000}.theme-light .Tab--selected.Tab--color--black{color:#404040}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#000}.theme-light .Tabs--vertical .Tab--selected.Tab--color--black{border-left-color:#000}.theme-light .Tab--selected.Tab--color--white{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--white{border-left-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--red{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--red{border-left-color:#c82121}.theme-light .Tab--selected.Tab--color--orange{color:#f48942}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#e6630d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--orange{border-left-color:#e6630d}.theme-light .Tab--selected.Tab--color--yellow{color:#fcdd33}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#e5c304}.theme-light .Tabs--vertical .Tab--selected.Tab--color--yellow{border-left-color:#e5c304}.theme-light .Tab--selected.Tab--color--olive{color:#d0e732}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#a3b816}.theme-light .Tabs--vertical .Tab--selected.Tab--color--olive{border-left-color:#a3b816}.theme-light .Tab--selected.Tab--color--green{color:#33da5a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#1d9f3b}.theme-light .Tabs--vertical .Tab--selected.Tab--color--green{border-left-color:#1d9f3b}.theme-light .Tab--selected.Tab--color--teal{color:#00faef}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00a39c}.theme-light .Tabs--vertical .Tab--selected.Tab--color--teal{border-left-color:#00a39c}.theme-light .Tab--selected.Tab--color--blue{color:#419ce1}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#1e78bb}.theme-light .Tabs--vertical .Tab--selected.Tab--color--blue{border-left-color:#1e78bb}.theme-light .Tab--selected.Tab--color--violet{color:#7f58d3}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#5a30b5}.theme-light .Tabs--vertical .Tab--selected.Tab--color--violet{border-left-color:#5a30b5}.theme-light .Tab--selected.Tab--color--purple{color:#b455d4}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#932eb4}.theme-light .Tabs--vertical .Tab--selected.Tab--color--purple{border-left-color:#932eb4}.theme-light .Tab--selected.Tab--color--pink{color:#e558a7}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#db228a}.theme-light .Tabs--vertical .Tab--selected.Tab--color--pink{border-left-color:#db228a}.theme-light .Tab--selected.Tab--color--brown{color:#c0825a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#955d39}.theme-light .Tabs--vertical .Tab--selected.Tab--color--brown{border-left-color:#955d39}.theme-light .Tab--selected.Tab--color--grey{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--grey{border-left-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--good{color:#77d23b}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#529923}.theme-light .Tabs--vertical .Tab--selected.Tab--color--good{border-left-color:#529923}.theme-light .Tab--selected.Tab--color--average{color:#f3a23a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#da810e}.theme-light .Tabs--vertical .Tab--selected.Tab--color--average{border-left-color:#da810e}.theme-light .Tab--selected.Tab--color--bad{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--bad{border-left-color:#c82121}.theme-light .Tab--selected.Tab--color--label{color:#686868}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#353535}.theme-light .Tabs--vertical .Tab--selected.Tab--color--label{border-left-color:#353535}.theme-light .Tab--selected.Tab--color--gold{color:#f4b73f}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--gold{border-bottom-color:#e39b0d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--gold{border-left-color:#e39b0d}.theme-light .Section{position:relative;margin-bottom:.5em;background-color:#fff;box-sizing:border-box}.theme-light .Section:last-child{margin-bottom:0}.theme-light .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #fff}.theme-light .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#000}.theme-light .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-light .Section__rest{position:relative}.theme-light .Section__content{padding:.66em .5em}.theme-light .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-light .Section--fill{display:flex;flex-direction:column;height:100%}.theme-light .Section--fill>.Section__rest{flex-grow:1}.theme-light .Section--fill>.Section__rest>.Section__content{height:100%}.theme-light .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-light .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-light .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-light .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-light .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-light .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-light .Section .Section:first-child{margin-top:-.5em}.theme-light .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-light .Section .Section .Section .Section__titleText{font-size:1em}.theme-light .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-light .Button:last-child{margin-right:0;margin-bottom:0}.theme-light .Button .fa,.theme-light .Button .fas,.theme-light .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-light .Button--hasContent .fa,.theme-light .Button--hasContent .fas,.theme-light .Button--hasContent .far{margin-right:.25em}.theme-light .Button--hasContent.Button--iconRight .fa,.theme-light .Button--hasContent.Button--iconRight .fas,.theme-light .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-light .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-light .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-light .Button--circular{border-radius:50%}.theme-light .Button--compact{padding:0 .25em;line-height:1.333em}.theme-light .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-light .Button--color--black{transition:color .1s,background-color .1s;background-color:#000;color:#fff}.theme-light .Button--color--black:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--black:hover{background-color:#101010;color:#fff}.theme-light .Button--color--white{transition:color .1s,background-color .1s;background-color:#bfbfbf;color:#000}.theme-light .Button--color--white:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--white:hover{background-color:#e7e7e7;color:#000}.theme-light .Button--color--red{transition:color .1s,background-color .1s;background-color:#a61c1c;color:#fff}.theme-light .Button--color--red:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--red:hover{background-color:#cb3030;color:#fff}.theme-light .Button--color--orange{transition:color .1s,background-color .1s;background-color:#c0530b;color:#fff}.theme-light .Button--color--orange:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--orange:hover{background-color:#e76d1d;color:#fff}.theme-light .Button--color--yellow{transition:color .1s,background-color .1s;background-color:#bfa303;color:#fff}.theme-light .Button--color--yellow:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--yellow:hover{background-color:#e7c714;color:#fff}.theme-light .Button--color--olive{transition:color .1s,background-color .1s;background-color:#889912;color:#fff}.theme-light .Button--color--olive:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--olive:hover{background-color:#a9bc25;color:#fff}.theme-light .Button--color--green{transition:color .1s,background-color .1s;background-color:#188532;color:#fff}.theme-light .Button--color--green:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--green:hover{background-color:#2ba648;color:#fff}.theme-light .Button--color--teal{transition:color .1s,background-color .1s;background-color:#008882;color:#fff}.theme-light .Button--color--teal:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--teal:hover{background-color:#10a9a2;color:#fff}.theme-light .Button--color--blue{transition:color .1s,background-color .1s;background-color:#19649c;color:#fff}.theme-light .Button--color--blue:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--blue:hover{background-color:#2c81c0;color:#fff}.theme-light .Button--color--violet{transition:color .1s,background-color .1s;background-color:#4b2897;color:#fff}.theme-light .Button--color--violet:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--violet:hover{background-color:#653db9;color:#fff}.theme-light .Button--color--purple{transition:color .1s,background-color .1s;background-color:#7a2696;color:#fff}.theme-light .Button--color--purple:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--purple:hover{background-color:#9a3bb9;color:#fff}.theme-light .Button--color--pink{transition:color .1s,background-color .1s;background-color:#b61d73;color:#fff}.theme-light .Button--color--pink:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--pink:hover{background-color:#d93591;color:#fff}.theme-light .Button--color--brown{transition:color .1s,background-color .1s;background-color:#7c4d2f;color:#fff}.theme-light .Button--color--brown:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--brown:hover{background-color:#9c6745;color:#fff}.theme-light .Button--color--grey{transition:color .1s,background-color .1s;background-color:#bfbfbf;color:#000}.theme-light .Button--color--grey:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--grey:hover{background-color:#e7e7e7;color:#000}.theme-light .Button--color--good{transition:color .1s,background-color .1s;background-color:#44801d;color:#fff}.theme-light .Button--color--good:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--good:hover{background-color:#5d9f31;color:#fff}.theme-light .Button--color--average{transition:color .1s,background-color .1s;background-color:#b56b0b;color:#fff}.theme-light .Button--color--average:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--average:hover{background-color:#dc891d;color:#fff}.theme-light .Button--color--bad{transition:color .1s,background-color .1s;background-color:#a61c1c;color:#fff}.theme-light .Button--color--bad:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--bad:hover{background-color:#cb3030;color:#fff}.theme-light .Button--color--label{transition:color .1s,background-color .1s;background-color:#2c2c2c;color:#fff}.theme-light .Button--color--label:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--label:hover{background-color:#424242;color:#fff}.theme-light .Button--color--gold{transition:color .1s,background-color .1s;background-color:#bd810b;color:#fff}.theme-light .Button--color--gold:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--gold:hover{background-color:#e5a11c;color:#fff}.theme-light .Button--color--default{transition:color .1s,background-color .1s;background-color:#bbb;color:#000}.theme-light .Button--color--default:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--default:hover{background-color:#e3e3e3;color:#000}.theme-light .Button--color--caution{transition:color .1s,background-color .1s;background-color:#be6209;color:#fff}.theme-light .Button--color--caution:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--caution:hover{background-color:#e67f1a;color:#fff}.theme-light .Button--color--danger{transition:color .1s,background-color .1s;background-color:#9a9d00;color:#fff}.theme-light .Button--color--danger:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--danger:hover{background-color:#bec110;color:#fff}.theme-light .Button--color--transparent{transition:color .1s,background-color .1s;background-color:rgba(238,238,238,0);color:rgba(0,0,0,.5)}.theme-light .Button--color--transparent:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--transparent:hover{background-color:rgba(255,255,255,.81);color:#000}.theme-light .Button--color--translucent{transition:color .1s,background-color .1s;background-color:rgba(238,238,238,.6);color:rgba(0,0,0,.5)}.theme-light .Button--color--translucent:focus{transition:color .25s,background-color .25s}.theme-light .Button--color--translucent:hover{background-color:rgba(253,253,253,.925);color:#000}.theme-light .Button--disabled{background-color:#363636!important}.theme-light .Button--selected{transition:color .1s,background-color .1s;background-color:#0668b8;color:#fff}.theme-light .Button--selected:focus{transition:color .25s,background-color .25s}.theme-light .Button--selected:hover{background-color:#1785df;color:#fff}.theme-light .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-light .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#353535;background-color:#e6e6e6;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-light .NumberInput--fluid{display:block}.theme-light .NumberInput__content{margin-left:.5em}.theme-light .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-light .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #353535;background-color:#353535}.theme-light .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#e6e6e6;color:#000;text-align:right}.theme-light .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#000;background-color:#e6e6e6;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-light .Input--disabled{color:#777;border-color:#000;border-color:rgba(0,0,0,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-light .Input--fluid{display:block;width:auto}.theme-light .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-light .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#000;color:inherit}.theme-light .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-light .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-light .TextArea{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;background-color:#e6e6e6;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-light .TextArea--fluid{display:block;width:auto;height:auto}.theme-light .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-light .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-light .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-light .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-light .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-light .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-light .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-light .Knob__popupValue,.theme-light .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .Knob__popupValue--right{top:.25rem;right:-50%}.theme-light .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-light .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-light .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-light .Knob__ringFillPivot{transform:rotate(135deg)}.theme-light .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-light .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-light .Knob--color--black .Knob__ringFill{stroke:#000}.theme-light .Knob--color--white .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--red .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--orange .Knob__ringFill{stroke:#e6630d}.theme-light .Knob--color--yellow .Knob__ringFill{stroke:#e5c304}.theme-light .Knob--color--olive .Knob__ringFill{stroke:#a3b816}.theme-light .Knob--color--green .Knob__ringFill{stroke:#1d9f3b}.theme-light .Knob--color--teal .Knob__ringFill{stroke:#00a39c}.theme-light .Knob--color--blue .Knob__ringFill{stroke:#1e78bb}.theme-light .Knob--color--violet .Knob__ringFill{stroke:#5a30b5}.theme-light .Knob--color--purple .Knob__ringFill{stroke:#932eb4}.theme-light .Knob--color--pink .Knob__ringFill{stroke:#db228a}.theme-light .Knob--color--brown .Knob__ringFill{stroke:#955d39}.theme-light .Knob--color--grey .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--good .Knob__ringFill{stroke:#529923}.theme-light .Knob--color--average .Knob__ringFill{stroke:#da810e}.theme-light .Knob--color--bad .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--label .Knob__ringFill{stroke:#353535}.theme-light .Knob--color--gold .Knob__ringFill{stroke:#e39b0d}.theme-light .Slider:not(.Slider__disabled){cursor:e-resize}.theme-light .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-light .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #000}.theme-light .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #000}.theme-light .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-light .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-light .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-light .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-light .ProgressBar--color--default{border:.0833333333em solid #bfbfbf}.theme-light .ProgressBar--color--default .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--disabled{border:1px solid #999}.theme-light .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-light .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-light .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-light .ProgressBar--color--white{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--white .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--red{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--red .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--orange{border:.0833333333em solid #c0530b!important}.theme-light .ProgressBar--color--orange .ProgressBar__fill{background-color:#c0530b}.theme-light .ProgressBar--color--yellow{border:.0833333333em solid #bfa303!important}.theme-light .ProgressBar--color--yellow .ProgressBar__fill{background-color:#bfa303}.theme-light .ProgressBar--color--olive{border:.0833333333em solid #889912!important}.theme-light .ProgressBar--color--olive .ProgressBar__fill{background-color:#889912}.theme-light .ProgressBar--color--green{border:.0833333333em solid #188532!important}.theme-light .ProgressBar--color--green .ProgressBar__fill{background-color:#188532}.theme-light .ProgressBar--color--teal{border:.0833333333em solid #008882!important}.theme-light .ProgressBar--color--teal .ProgressBar__fill{background-color:#008882}.theme-light .ProgressBar--color--blue{border:.0833333333em solid #19649c!important}.theme-light .ProgressBar--color--blue .ProgressBar__fill{background-color:#19649c}.theme-light .ProgressBar--color--violet{border:.0833333333em solid #4b2897!important}.theme-light .ProgressBar--color--violet .ProgressBar__fill{background-color:#4b2897}.theme-light .ProgressBar--color--purple{border:.0833333333em solid #7a2696!important}.theme-light .ProgressBar--color--purple .ProgressBar__fill{background-color:#7a2696}.theme-light .ProgressBar--color--pink{border:.0833333333em solid #b61d73!important}.theme-light .ProgressBar--color--pink .ProgressBar__fill{background-color:#b61d73}.theme-light .ProgressBar--color--brown{border:.0833333333em solid #7c4d2f!important}.theme-light .ProgressBar--color--brown .ProgressBar__fill{background-color:#7c4d2f}.theme-light .ProgressBar--color--grey{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--grey .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--good{border:.0833333333em solid #44801d!important}.theme-light .ProgressBar--color--good .ProgressBar__fill{background-color:#44801d}.theme-light .ProgressBar--color--average{border:.0833333333em solid #b56b0b!important}.theme-light .ProgressBar--color--average .ProgressBar__fill{background-color:#b56b0b}.theme-light .ProgressBar--color--bad{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--bad .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--label{border:.0833333333em solid #2c2c2c!important}.theme-light .ProgressBar--color--label .ProgressBar__fill{background-color:#2c2c2c}.theme-light .ProgressBar--color--gold{border:.0833333333em solid #bd810b!important}.theme-light .ProgressBar--color--gold .ProgressBar__fill{background-color:#bd810b}.theme-light .Chat{color:#000}.theme-light .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-light .Chat__badge:before{content:"x"}.theme-light .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-light .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-light .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-light .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#fff}.theme-light .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-light .Chat__highlight{color:#000}.theme-light .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-light .ChatMessage{word-wrap:break-word}.theme-light .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-light .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-light html,.theme-light body{scrollbar-color:#a7a7a7 #f2f2f2}.theme-light .Layout,.theme-light .Layout *{scrollbar-base-color:#f2f2f2;scrollbar-face-color:#d6d6d6;scrollbar-3dlight-color:#eee;scrollbar-highlight-color:#eee;scrollbar-track-color:#f2f2f2;scrollbar-arrow-color:#777;scrollbar-shadow-color:#d6d6d6}.theme-light .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-light .Layout__content--flexRow{display:flex;flex-flow:row}.theme-light .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-light .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-light .Layout__content--noMargin{margin:0}.theme-light .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#000;background-color:#eee;background-image:linear-gradient(to bottom,#eee,#eee)}.theme-light .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-light .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-light .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-light .Window__contentPadding:after{height:0}.theme-light .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-light .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(252,252,252,.25);pointer-events:none}.theme-light .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-light .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-light .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-light .TitleBar{background-color:#eee;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-light .TitleBar__clickable{color:rgba(0,0,0,.5);background-color:#eee;transition:color .25s,background-color .25s}.theme-light .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-light .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(0,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-light .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-light .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-light .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-light .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-light html,.theme-light body{padding:0;margin:0;height:100%;color:#000}.theme-light body{background:#fff;font-family:Verdana,sans-serif;font-size:13px;line-height:1.2;overflow-x:hidden;overflow-y:scroll;word-wrap:break-word}.theme-light img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}.theme-light img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}.theme-light a{color:#00f}.theme-light a.popt{text-decoration:none}.theme-light .popup{position:fixed;top:50%;left:50%;background:#ddd}.theme-light .popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.theme-light .popup .close:hover{background:#999}.theme-light .popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.theme-light .popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.theme-light .popup input[type=text]:hover,.theme-light .popup input[type=text]:active,.theme-light .popup input[type=text]:focus{border-color:green}.theme-light .popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.theme-light .popup input[type=submit]:hover,.theme-light .popup input[type=submit]:focus,.theme-light .popup input[type=submit]:active{background:#aaa;cursor:pointer}.theme-light .changeFont{padding:10px}.theme-light .changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.theme-light .changeFont a:hover{background:#ccc}.theme-light .highlightPopup{padding:10px;text-align:center}.theme-light .highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.theme-light .highlightPopup input.highlightColor{background-color:#ff0}.theme-light .highlightPopup input.highlightTermSubmit{margin-top:5px}.theme-light .contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.theme-light .contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.theme-light .contextMenu a:hover{background-color:#ccc}.theme-light .filterMessages{padding:5px}.theme-light .filterMessages div{padding:2px 0}.theme-light .icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.theme-light .motd{color:#638500;font-family:Verdana,sans-serif;white-space:normal}.theme-light .motd h1,.theme-light .motd h2,.theme-light .motd h3,.theme-light .motd h4,.theme-light .motd h5,.theme-light .motd h6{color:#638500;text-decoration:underline}.theme-light .motd a,.theme-light .motd a:link,.theme-light .motd a:active,.theme-light .motd a:hover{color:#638500}.theme-light .italic,.theme-light .italics,.theme-light .emote{font-style:italic}.theme-light .highlight{background:#ff0}.theme-light h1,.theme-light h2,.theme-light h3,.theme-light h4,.theme-light h5,.theme-light h6{color:#00f;font-family:Georgia,Verdana,sans-serif}.theme-light em{font-style:normal;font-weight:700}.theme-light .darkmblue{color:#00f}.theme-light .prefix,.theme-light .ooc{font-weight:700}.theme-light .looc{color:#69c;font-weight:700}.theme-light .adminobserverooc{color:#09c;font-weight:700}.theme-light .adminooc{color:#b82e00;font-weight:700}.theme-light .adminobserver{color:#960;font-weight:700}.theme-light .admin{color:#386aff;font-weight:700}.theme-light .adminsay{color:#9611d4;font-weight:700}.theme-light .mentorhelp{color:#07b;font-weight:700}.theme-light .adminhelp{color:#a00;font-weight:700}.theme-light .playerreply{color:#80b;font-weight:700}.theme-light .pmsend{color:#00f}.theme-light .debug{color:#6d2f83}.theme-light .name,.theme-light .yell{font-weight:700}.theme-light .siliconsay{font-family:Courier New,Courier,monospace}.theme-light .deadsay{color:#5c00e6}.theme-light .radio{color:#408010}.theme-light .deptradio{color:#939}.theme-light .comradio{color:#204090}.theme-light .syndradio{color:#6d3f40}.theme-light .dsquadradio{color:#686868}.theme-light .resteamradio{color:#18bc46}.theme-light .airadio{color:#f0f}.theme-light .centradio{color:#5c5c7c}.theme-light .secradio{color:#a30000}.theme-light .engradio{color:#a66300}.theme-light .medradio{color:#009190}.theme-light .sciradio{color:#939}.theme-light .supradio{color:#7f6539}.theme-light .srvradio{color:#80a000}.theme-light .proradio{color:#e3027a}.theme-light .admin_channel{color:#9a04d1;font-weight:700}.theme-light .all_admin_ping{color:#12a5f4;font-weight:700;font-size:120%;text-align:center}.theme-light .mentor_channel{color:#775bff;font-weight:700}.theme-light .mentor_channel_admin{color:#a35cff;font-weight:700}.theme-light .djradio{color:#630}.theme-light .binaryradio{color:#0b0050;font-family:Courier New,Courier,monospace}.theme-light .mommiradio{color:navy}.theme-light .alert{color:red}.theme-light h1.alert,.theme-light h2.alert{color:#000}.theme-light .ghostalert{color:#5c00e6;font-style:italic;font-weight:700}.theme-light .emote{font-style:italic}.theme-light .selecteddna{color:#fff;background-color:#001b1b}.theme-light .attack{color:red}.theme-light .moderate{color:#c00}.theme-light .disarm{color:#900}.theme-light .passive{color:#600}.theme-light .warning{color:red;font-style:italic}.theme-light .boldwarning{color:red;font-style:italic;font-weight:700}.theme-light .danger{color:red;font-weight:700}.theme-light .userdanger{color:red;font-weight:700;font-size:120%}.theme-light .biggerdanger{color:red;font-weight:700;font-size:150%}.theme-light .notice{color:#009}.theme-light .boldnotice{color:#009;font-weight:700}.theme-light .suicide{color:#ff5050;font-style:italic}.theme-light .green{color:#03bb39}.theme-light .pr_announce{color:#228b22;font-weight:700}.theme-light .boldannounceic,.theme-light .boldannounceooc{color:red;font-weight:700}.theme-light .greenannounce{color:#0f0;font-weight:700}.theme-light .alien{color:#543354}.theme-light .noticealien{color:#00c000}.theme-light .alertalien{color:#00c000;font-weight:700}.theme-light .terrorspider{color:#320e32}.theme-light .dantalion{color:#6a2148}.theme-light .chaosverygood{color:#19e0c0;font-weight:700;font-size:120%}.theme-light .chaosgood{color:#19e0c0;font-weight:700}.theme-light .chaosneutral{color:#479ac0;font-weight:700}.theme-light .chaosbad{color:#9047c0;font-weight:700}.theme-light .chaosverybad{color:#9047c0;font-weight:700;font-size:120%}.theme-light .sinister{color:purple;font-weight:700;font-style:italic}.theme-light .blob{color:#006221;font-weight:700;font-style:italic}.theme-light .confirm{color:#00af3b}.theme-light .rose{color:#ff5050}.theme-light .sans{font-family:Comic Sans MS,cursive,sans-serif}.theme-light .wingdings{font-family:Wingdings,Webdings}.theme-light .robot{font-family:OCR-A,monospace;font-size:1.15em;font-weight:700}.theme-light .ancient{color:#008b8b;font-style:italic}.theme-light .newscaster{color:maroon}.theme-light .mod{color:#735638;font-weight:700}.theme-light .modooc{color:#184880;font-weight:700}.theme-light .adminmod{color:#402a14;font-weight:700}.theme-light .tajaran{color:#803b56}.theme-light .skrell{color:#00ced1}.theme-light .solcom{color:#22228b}.theme-light .com_srus{color:#7c4848}.theme-light .soghun{color:#228b22}.theme-light .changeling{color:purple}.theme-light .vox{color:#a0a}.theme-light .diona{color:#804000;font-weight:700}.theme-light .trinary{color:#727272}.theme-light .kidan{color:#664205}.theme-light .slime{color:#07a}.theme-light .drask{color:#a3d4eb;font-family:Arial Black}.theme-light .moth{color:#869b29;font-family:Copperplate}.theme-light .clown{color:red}.theme-light .vulpkanin{color:#b97a57}.theme-light .abductor{color:purple;font-style:italic}.theme-light .mind_control{color:#a00d6f;font-size:3;font-weight:700;font-style:italic}.theme-light .rough{font-family:Trebuchet MS,cursive,sans-serif}.theme-light .say_quote{font-family:Georgia,Verdana,sans-serif}.theme-light .cult{color:purple;font-weight:700;font-style:italic}.theme-light .cultspeech{color:#7f0000;font-style:italic}.theme-light .cultitalic{color:#960000;font-style:italic}.theme-light .cultlarge{color:#960000;font-weight:700;font-size:120%}.theme-light .narsie{color:#960000;font-weight:700;font-size:300%}.theme-light .narsiesmall{color:#960000;font-weight:700;font-size:200%}.theme-light .zombie{color:#7c4848}.theme-light .zombielarge{color:#7c4848;font-weight:700;font-size:120%}.theme-light .interface{color:#303}.theme-light .big{font-size:150%}.theme-light .reallybig{font-size:175%}.theme-light .greentext{color:#0f0;font-size:150%}.theme-light .redtext{color:red;font-size:150%}.theme-light .bold{font-weight:700}.theme-light .his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.theme-light .center{text-align:center}.theme-light .red{color:red}.theme-light .purple{color:#5e2d79}.theme-light .skeleton{color:#585858;font-weight:700;font-style:italic}.theme-light .gutter{color:#7092be;font-family:Trebuchet MS,cursive,sans-serif}.theme-light .orange{color:orange}.theme-light .orangei{color:orange;font-style:italic}.theme-light .orangeb{color:orange;font-weight:700}.theme-light .resonate{color:#298f85}.theme-light .healthscan_oxy{color:#0074bd}.theme-light .revennotice{color:#1d2953}.theme-light .revenboldnotice{color:#1d2953;font-weight:700}.theme-light .revenbignotice{color:#1d2953;font-weight:700;font-size:120%}.theme-light .revenminor{color:#823abb}.theme-light .revenwarning{color:#760fbb;font-style:italic}.theme-light .revendanger{color:#760fbb;font-weight:700;font-size:120%}.theme-light .specialnoticebold{color:#36525e;font-weight:700;font-size:120%}.theme-light .specialnotice{color:#36525e;font-size:120%}.theme-light .medal{font-weight:700}.theme-light .good{color:green}.theme-light .average{color:#ff8000}.theme-light .bad{color:red}.theme-light .italics,.theme-light .talkinto{font-style:italic}.theme-light .whisper{font-style:italic;color:#333}.theme-light .recruit{color:#5c00e6;font-weight:700;font-style:italic}.theme-light .memo{color:#638500;text-align:center}.theme-light .memoedit{text-align:center;font-size:75%}.theme-light .connectionClosed,.theme-light .fatalError{background:red;color:#fff;padding:5px}.theme-light .connectionClosed.restored{background:green}.theme-light .internal.boldnshit{color:#00f;font-weight:700}.theme-light .rebooting{background:#2979af;color:#fff;padding:5px}.theme-light .rebooting a{color:#fff!important;text-decoration-color:#fff!important}.theme-light .text-normal{font-weight:400;font-style:normal}.theme-light .hidden{display:none;visibility:hidden}.theme-light .colossus{color:#7f282a;font-size:175%}.theme-light .hierophant{color:#609;font-weight:700;font-style:italic}.theme-light .hierophant_warning{color:#609;font-style:italic}.theme-light .emoji{max-height:16px;max-width:16px}.theme-light .adminticket{color:#3e7336;font-weight:700}.theme-light .adminticketalt{color:#014c8a;font-weight:700}.theme-light span.body .codephrases{color:#00f}.theme-light span.body .coderesponses{color:red}.theme-light .announcement h1,.theme-light .announcement h2{color:#000;margin:8pt 0;line-height:1.2}.theme-light .announcement p{color:#d82020;line-height:1.3}.theme-light .announcement.minor h1{font-size:180%}.theme-light .announcement.minor h2{font-size:170%}.theme-light .announcement.sec h1{color:red;font-size:180%;font-family:Verdana,sans-serif}.theme-light .bolditalics{font-style:italic;font-weight:700}.theme-light .boxed_message{background:#f7fcff;border:1px solid #111a26;margin:.5em;padding:.5em .75em;text-align:center}.theme-light .boxed_message.left_align_text{text-align:left}.theme-light .boxed_message.red_border{background:#fff7f7;border-color:#a00}.theme-light .boxed_message.green_border{background:#f7fff7;border-color:#0f0}.theme-light .boxed_message.purple_border{background:#fdf7ff;border-color:#a0f}.theme-light .boxed_message.notice_border{background:#f7fdff;border-color:#0000bf}.theme-light .boxed_message.thick_border{border-width:thick}.theme-light .oxygen{color:#006adb}.theme-light .nitrogen{color:#d00a06}.theme-light .carbon_dioxide{color:#1f1f1f}.theme-light .plasma{color:#853c00}.theme-light .sleeping_agent{color:#e82f2c}.theme-light .agent_b{color:#004d4d}.theme-ntos .color-black{color:#1a1a1a!important}.theme-ntos .color-white{color:#fff!important}.theme-ntos .color-red{color:#df3e3e!important}.theme-ntos .color-orange{color:#f37f33!important}.theme-ntos .color-yellow{color:#fbda21!important}.theme-ntos .color-olive{color:#cbe41c!important}.theme-ntos .color-green{color:#25ca4c!important}.theme-ntos .color-teal{color:#00d6cc!important}.theme-ntos .color-blue{color:#2e93de!important}.theme-ntos .color-violet{color:#7349cf!important}.theme-ntos .color-purple{color:#ad45d0!important}.theme-ntos .color-pink{color:#e34da1!important}.theme-ntos .color-brown{color:#b97447!important}.theme-ntos .color-grey{color:#848484!important}.theme-ntos .color-good{color:#68c22d!important}.theme-ntos .color-average{color:#f29a29!important}.theme-ntos .color-bad{color:#df3e3e!important}.theme-ntos .color-label{color:#8b9bb0!important}.theme-ntos .color-gold{color:#f3b22f!important}.theme-ntos .color-bg-black{background-color:#000!important}.theme-ntos .color-bg-white{background-color:#d9d9d9!important}.theme-ntos .color-bg-red{background-color:#bd2020!important}.theme-ntos .color-bg-orange{background-color:#d95e0c!important}.theme-ntos .color-bg-yellow{background-color:#d9b804!important}.theme-ntos .color-bg-olive{background-color:#9aad14!important}.theme-ntos .color-bg-green{background-color:#1b9638!important}.theme-ntos .color-bg-teal{background-color:#009a93!important}.theme-ntos .color-bg-blue{background-color:#1c71b1!important}.theme-ntos .color-bg-violet{background-color:#552dab!important}.theme-ntos .color-bg-purple{background-color:#8b2baa!important}.theme-ntos .color-bg-pink{background-color:#cf2082!important}.theme-ntos .color-bg-brown{background-color:#8c5836!important}.theme-ntos .color-bg-grey{background-color:#646464!important}.theme-ntos .color-bg-good{background-color:#4d9121!important}.theme-ntos .color-bg-average{background-color:#cd7a0d!important}.theme-ntos .color-bg-bad{background-color:#bd2020!important}.theme-ntos .color-bg-label{background-color:#657a94!important}.theme-ntos .color-bg-gold{background-color:#d6920c!important}.theme-ntos .color-border-black{border-color:#1a1a1a!important}.theme-ntos .color-border-white{border-color:#fff!important}.theme-ntos .color-border-red{border-color:#df3e3e!important}.theme-ntos .color-border-orange{border-color:#f37f33!important}.theme-ntos .color-border-yellow{border-color:#fbda21!important}.theme-ntos .color-border-olive{border-color:#cbe41c!important}.theme-ntos .color-border-green{border-color:#25ca4c!important}.theme-ntos .color-border-teal{border-color:#00d6cc!important}.theme-ntos .color-border-blue{border-color:#2e93de!important}.theme-ntos .color-border-violet{border-color:#7349cf!important}.theme-ntos .color-border-purple{border-color:#ad45d0!important}.theme-ntos .color-border-pink{border-color:#e34da1!important}.theme-ntos .color-border-brown{border-color:#b97447!important}.theme-ntos .color-border-grey{border-color:#848484!important}.theme-ntos .color-border-good{border-color:#68c22d!important}.theme-ntos .color-border-average{border-color:#f29a29!important}.theme-ntos .color-border-bad{border-color:#df3e3e!important}.theme-ntos .color-border-label{border-color:#8b9bb0!important}.theme-ntos .color-border-gold{border-color:#f3b22f!important}.theme-ntos .Section{position:relative;margin-bottom:.5em;background-color:#121922;box-sizing:border-box}.theme-ntos .Section:last-child{margin-bottom:0}.theme-ntos .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.theme-ntos .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-ntos .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-ntos .Section__rest{position:relative}.theme-ntos .Section__content{padding:.66em .5em}.theme-ntos .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-ntos .Section--fill{display:flex;flex-direction:column;height:100%}.theme-ntos .Section--fill>.Section__rest{flex-grow:1}.theme-ntos .Section--fill>.Section__rest>.Section__content{height:100%}.theme-ntos .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-ntos .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-ntos .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-ntos .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-ntos .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-ntos .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-ntos .Section .Section:first-child{margin-top:-.5em}.theme-ntos .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-ntos .Section .Section .Section .Section__titleText{font-size:1em}.theme-ntos .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-ntos .Button:last-child{margin-right:0;margin-bottom:0}.theme-ntos .Button .fa,.theme-ntos .Button .fas,.theme-ntos .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-ntos .Button--hasContent .fa,.theme-ntos .Button--hasContent .fas,.theme-ntos .Button--hasContent .far{margin-right:.25em}.theme-ntos .Button--hasContent.Button--iconRight .fa,.theme-ntos .Button--hasContent.Button--iconRight .fas,.theme-ntos .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-ntos .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-ntos .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-ntos .Button--circular{border-radius:50%}.theme-ntos .Button--compact{padding:0 .25em;line-height:1.333em}.theme-ntos .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-ntos .Button--color--black{transition:color .1s,background-color .1s;background-color:#000;color:#fff}.theme-ntos .Button--color--black:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--black:hover{background-color:#101010;color:#fff}.theme-ntos .Button--color--white{transition:color .1s,background-color .1s;background-color:#d9d9d9;color:#000}.theme-ntos .Button--color--white:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-ntos .Button--color--red{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-ntos .Button--color--red:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--orange{transition:color .1s,background-color .1s;background-color:#d95e0c;color:#fff}.theme-ntos .Button--color--orange:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-ntos .Button--color--yellow{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.theme-ntos .Button--color--yellow:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-ntos .Button--color--olive{transition:color .1s,background-color .1s;background-color:#9aad14;color:#fff}.theme-ntos .Button--color--olive:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-ntos .Button--color--green{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.theme-ntos .Button--color--green:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-ntos .Button--color--teal{transition:color .1s,background-color .1s;background-color:#009a93;color:#fff}.theme-ntos .Button--color--teal:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-ntos .Button--color--blue{transition:color .1s,background-color .1s;background-color:#1c71b1;color:#fff}.theme-ntos .Button--color--blue:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-ntos .Button--color--violet{transition:color .1s,background-color .1s;background-color:#552dab;color:#fff}.theme-ntos .Button--color--violet:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-ntos .Button--color--purple{transition:color .1s,background-color .1s;background-color:#8b2baa;color:#fff}.theme-ntos .Button--color--purple:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-ntos .Button--color--pink{transition:color .1s,background-color .1s;background-color:#cf2082;color:#fff}.theme-ntos .Button--color--pink:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-ntos .Button--color--brown{transition:color .1s,background-color .1s;background-color:#8c5836;color:#fff}.theme-ntos .Button--color--brown:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-ntos .Button--color--grey{transition:color .1s,background-color .1s;background-color:#646464;color:#fff}.theme-ntos .Button--color--grey:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-ntos .Button--color--good{transition:color .1s,background-color .1s;background-color:#4d9121;color:#fff}.theme-ntos .Button--color--good:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-ntos .Button--color--average{transition:color .1s,background-color .1s;background-color:#cd7a0d;color:#fff}.theme-ntos .Button--color--average:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-ntos .Button--color--bad{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-ntos .Button--color--bad:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--label{transition:color .1s,background-color .1s;background-color:#657a94;color:#fff}.theme-ntos .Button--color--label:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--label:hover{background-color:#8a9aae;color:#fff}.theme-ntos .Button--color--gold{transition:color .1s,background-color .1s;background-color:#d6920c;color:#fff}.theme-ntos .Button--color--gold:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-ntos .Button--color--default{transition:color .1s,background-color .1s;background-color:#384e68;color:#fff}.theme-ntos .Button--color--default:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--default:hover{background-color:#4f6885;color:#fff}.theme-ntos .Button--color--caution{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.theme-ntos .Button--color--caution:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--caution:hover{background-color:#f5d523;color:#000}.theme-ntos .Button--color--danger{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-ntos .Button--color--danger:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--danger:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--transparent{transition:color .1s,background-color .1s;background-color:rgba(27,38,51,0);color:rgba(255,255,255,.5)}.theme-ntos .Button--color--transparent:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--transparent:hover{background-color:rgba(44,57,73,.81);color:#fff}.theme-ntos .Button--color--translucent{transition:color .1s,background-color .1s;background-color:rgba(27,38,51,.6);color:rgba(255,255,255,.5)}.theme-ntos .Button--color--translucent:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--color--translucent:hover{background-color:rgba(48,61,76,.925);color:#fff}.theme-ntos .Button--disabled{background-color:#999!important}.theme-ntos .Button--selected{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.theme-ntos .Button--selected:focus{transition:color .25s,background-color .25s}.theme-ntos .Button--selected:hover{background-color:#2fb94f;color:#fff}.theme-ntos .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-ntos .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-ntos .NumberInput--fluid{display:block}.theme-ntos .NumberInput__content{margin-left:.5em}.theme-ntos .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-ntos .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.theme-ntos .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-ntos .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-ntos .Input--disabled{color:#777;border-color:#848484;border-color:rgba(132,132,132,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-ntos .Input--fluid{display:block;width:auto}.theme-ntos .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-ntos .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-ntos .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-ntos .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-ntos .TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-ntos .TextArea--fluid{display:block;width:auto;height:auto}.theme-ntos .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-ntos .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-ntos .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-ntos .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-ntos .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-ntos .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-ntos .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-ntos .Knob__popupValue,.theme-ntos .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-ntos .Knob__popupValue--right{top:.25rem;right:-50%}.theme-ntos .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-ntos .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-ntos .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-ntos .Knob__ringFillPivot{transform:rotate(135deg)}.theme-ntos .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-ntos .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-ntos .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-ntos .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-ntos .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-ntos .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-ntos .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-ntos .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-ntos .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-ntos .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-ntos .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-ntos .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-ntos .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-ntos .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-ntos .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-ntos .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-ntos .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-ntos .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-ntos .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-ntos .Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.theme-ntos .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-ntos .Slider:not(.Slider__disabled){cursor:e-resize}.theme-ntos .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-ntos .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-ntos .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-ntos .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-ntos .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-ntos .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-ntos .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-ntos .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-ntos .ProgressBar--color--default{border:.0833333333em solid #3e6189}.theme-ntos .ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.theme-ntos .ProgressBar--color--disabled{border:1px solid #999}.theme-ntos .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-ntos .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-ntos .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-ntos .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-ntos .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-ntos .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-ntos .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-ntos .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-ntos .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-ntos .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-ntos .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-ntos .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-ntos .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-ntos .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-ntos .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-ntos .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-ntos .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-ntos .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-ntos .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-ntos .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-ntos .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-ntos .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-ntos .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-ntos .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-ntos .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-ntos .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-ntos .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-ntos .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-ntos .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-ntos .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-ntos .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-ntos .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-ntos .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-ntos .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-ntos .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-ntos .ProgressBar--color--label{border:.0833333333em solid #657a94!important}.theme-ntos .ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.theme-ntos .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-ntos .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-ntos .Chat{color:#abc6ec}.theme-ntos .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-ntos .Chat__badge:before{content:"x"}.theme-ntos .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-ntos .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-ntos .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-ntos .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#121922}.theme-ntos .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-ntos .Chat__highlight{color:#000}.theme-ntos .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-ntos .ChatMessage{word-wrap:break-word}.theme-ntos .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-ntos .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-ntos html,.theme-ntos body{scrollbar-color:#2a3b4f #141d26}.theme-ntos .Layout,.theme-ntos .Layout *{scrollbar-base-color:#141d26;scrollbar-face-color:#2a3b4f;scrollbar-3dlight-color:#1b2633;scrollbar-highlight-color:#1b2633;scrollbar-track-color:#141d26;scrollbar-arrow-color:#7290b4;scrollbar-shadow-color:#2a3b4f}.theme-ntos .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-ntos .Layout__content--flexRow{display:flex;flex-flow:row}.theme-ntos .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-ntos .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-ntos .Layout__content--noMargin{margin:0}.theme-ntos .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#1b2633;background-image:linear-gradient(to bottom,#1b2633,#1b2633)}.theme-ntos .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-ntos .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-ntos .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-ntos .Window__contentPadding:after{height:0}.theme-ntos .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-ntos .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(50,63,78,.25);pointer-events:none}.theme-ntos .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-ntos .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-ntos .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-ntos .TitleBar{background-color:#1b2633;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-ntos .TitleBar__clickable{color:rgba(255,0,0,.5);background-color:#1b2633;transition:color .25s,background-color .25s}.theme-ntos .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-ntos .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-ntos .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-ntos .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-ntos .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-ntos .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-ntos .boxed_message{background:#1c242e;border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.theme-ntos .boxed_message.left_align_text{text-align:left}.theme-ntos .boxed_message.red_border{background:#2e1c1c;border-color:#a00}.theme-ntos .boxed_message.green_border{background:#1c2e22;border-color:#0f0}.theme-ntos .boxed_message.purple_border{background:#221c2e;border-color:#8000ff}.theme-ntos .boxed_message.notice_border{background:#1f2633;border-color:#6685f5}.theme-ntos .boxed_message.thick_border{border-width:thick}.theme-syndicate .color-black{color:#1a1a1a!important}.theme-syndicate .color-white{color:#fff!important}.theme-syndicate .color-red{color:#df3e3e!important}.theme-syndicate .color-orange{color:#f37f33!important}.theme-syndicate .color-yellow{color:#fbda21!important}.theme-syndicate .color-olive{color:#cbe41c!important}.theme-syndicate .color-green{color:#25ca4c!important}.theme-syndicate .color-teal{color:#00d6cc!important}.theme-syndicate .color-blue{color:#2e93de!important}.theme-syndicate .color-violet{color:#7349cf!important}.theme-syndicate .color-purple{color:#ad45d0!important}.theme-syndicate .color-pink{color:#e34da1!important}.theme-syndicate .color-brown{color:#b97447!important}.theme-syndicate .color-grey{color:#848484!important}.theme-syndicate .color-good{color:#68c22d!important}.theme-syndicate .color-average{color:#f29a29!important}.theme-syndicate .color-bad{color:#df3e3e!important}.theme-syndicate .color-label{color:#8b9bb0!important}.theme-syndicate .color-gold{color:#f3b22f!important}.theme-syndicate .color-bg-black{background-color:#000!important}.theme-syndicate .color-bg-white{background-color:#d9d9d9!important}.theme-syndicate .color-bg-red{background-color:#bd2020!important}.theme-syndicate .color-bg-orange{background-color:#d95e0c!important}.theme-syndicate .color-bg-yellow{background-color:#d9b804!important}.theme-syndicate .color-bg-olive{background-color:#9aad14!important}.theme-syndicate .color-bg-green{background-color:#1b9638!important}.theme-syndicate .color-bg-teal{background-color:#009a93!important}.theme-syndicate .color-bg-blue{background-color:#1c71b1!important}.theme-syndicate .color-bg-violet{background-color:#552dab!important}.theme-syndicate .color-bg-purple{background-color:#8b2baa!important}.theme-syndicate .color-bg-pink{background-color:#cf2082!important}.theme-syndicate .color-bg-brown{background-color:#8c5836!important}.theme-syndicate .color-bg-grey{background-color:#646464!important}.theme-syndicate .color-bg-good{background-color:#4d9121!important}.theme-syndicate .color-bg-average{background-color:#cd7a0d!important}.theme-syndicate .color-bg-bad{background-color:#bd2020!important}.theme-syndicate .color-bg-label{background-color:#657a94!important}.theme-syndicate .color-bg-gold{background-color:#d6920c!important}.theme-syndicate .color-border-black{border-color:#1a1a1a!important}.theme-syndicate .color-border-white{border-color:#fff!important}.theme-syndicate .color-border-red{border-color:#df3e3e!important}.theme-syndicate .color-border-orange{border-color:#f37f33!important}.theme-syndicate .color-border-yellow{border-color:#fbda21!important}.theme-syndicate .color-border-olive{border-color:#cbe41c!important}.theme-syndicate .color-border-green{border-color:#25ca4c!important}.theme-syndicate .color-border-teal{border-color:#00d6cc!important}.theme-syndicate .color-border-blue{border-color:#2e93de!important}.theme-syndicate .color-border-violet{border-color:#7349cf!important}.theme-syndicate .color-border-purple{border-color:#ad45d0!important}.theme-syndicate .color-border-pink{border-color:#e34da1!important}.theme-syndicate .color-border-brown{border-color:#b97447!important}.theme-syndicate .color-border-grey{border-color:#848484!important}.theme-syndicate .color-border-good{border-color:#68c22d!important}.theme-syndicate .color-border-average{border-color:#f29a29!important}.theme-syndicate .color-border-bad{border-color:#df3e3e!important}.theme-syndicate .color-border-label{border-color:#8b9bb0!important}.theme-syndicate .color-border-gold{border-color:#f3b22f!important}.theme-syndicate .Section{position:relative;margin-bottom:.5em;background-color:#2b0101;box-sizing:border-box}.theme-syndicate .Section:last-child{margin-bottom:0}.theme-syndicate .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #397439}.theme-syndicate .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-syndicate .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-syndicate .Section__rest{position:relative}.theme-syndicate .Section__content{padding:.66em .5em}.theme-syndicate .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-syndicate .Section--fill{display:flex;flex-direction:column;height:100%}.theme-syndicate .Section--fill>.Section__rest{flex-grow:1}.theme-syndicate .Section--fill>.Section__rest>.Section__content{height:100%}.theme-syndicate .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-syndicate .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-syndicate .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-syndicate .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-syndicate .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-syndicate .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-syndicate .Section .Section:first-child{margin-top:-.5em}.theme-syndicate .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-syndicate .Section .Section .Section .Section__titleText{font-size:1em}.theme-syndicate .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-syndicate .Button:last-child{margin-right:0;margin-bottom:0}.theme-syndicate .Button .fa,.theme-syndicate .Button .fas,.theme-syndicate .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-syndicate .Button--hasContent .fa,.theme-syndicate .Button--hasContent .fas,.theme-syndicate .Button--hasContent .far{margin-right:.25em}.theme-syndicate .Button--hasContent.Button--iconRight .fa,.theme-syndicate .Button--hasContent.Button--iconRight .fas,.theme-syndicate .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-syndicate .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-syndicate .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-syndicate .Button--circular{border-radius:50%}.theme-syndicate .Button--compact{padding:0 .25em;line-height:1.333em}.theme-syndicate .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-syndicate .Button--color--black{transition:color .1s,background-color .1s;background-color:#000;color:#fff}.theme-syndicate .Button--color--black:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--black:hover{background-color:#101010;color:#fff}.theme-syndicate .Button--color--white{transition:color .1s,background-color .1s;background-color:#d9d9d9;color:#000}.theme-syndicate .Button--color--white:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-syndicate .Button--color--red{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-syndicate .Button--color--red:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-syndicate .Button--color--orange{transition:color .1s,background-color .1s;background-color:#d95e0c;color:#fff}.theme-syndicate .Button--color--orange:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-syndicate .Button--color--yellow{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.theme-syndicate .Button--color--yellow:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-syndicate .Button--color--olive{transition:color .1s,background-color .1s;background-color:#9aad14;color:#fff}.theme-syndicate .Button--color--olive:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-syndicate .Button--color--green{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.theme-syndicate .Button--color--green:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-syndicate .Button--color--teal{transition:color .1s,background-color .1s;background-color:#009a93;color:#fff}.theme-syndicate .Button--color--teal:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-syndicate .Button--color--blue{transition:color .1s,background-color .1s;background-color:#1c71b1;color:#fff}.theme-syndicate .Button--color--blue:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-syndicate .Button--color--violet{transition:color .1s,background-color .1s;background-color:#552dab;color:#fff}.theme-syndicate .Button--color--violet:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-syndicate .Button--color--purple{transition:color .1s,background-color .1s;background-color:#8b2baa;color:#fff}.theme-syndicate .Button--color--purple:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-syndicate .Button--color--pink{transition:color .1s,background-color .1s;background-color:#cf2082;color:#fff}.theme-syndicate .Button--color--pink:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-syndicate .Button--color--brown{transition:color .1s,background-color .1s;background-color:#8c5836;color:#fff}.theme-syndicate .Button--color--brown:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-syndicate .Button--color--grey{transition:color .1s,background-color .1s;background-color:#646464;color:#fff}.theme-syndicate .Button--color--grey:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-syndicate .Button--color--good{transition:color .1s,background-color .1s;background-color:#4d9121;color:#fff}.theme-syndicate .Button--color--good:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-syndicate .Button--color--average{transition:color .1s,background-color .1s;background-color:#cd7a0d;color:#fff}.theme-syndicate .Button--color--average:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-syndicate .Button--color--bad{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-syndicate .Button--color--bad:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-syndicate .Button--color--label{transition:color .1s,background-color .1s;background-color:#657a94;color:#fff}.theme-syndicate .Button--color--label:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--label:hover{background-color:#8a9aae;color:#fff}.theme-syndicate .Button--color--gold{transition:color .1s,background-color .1s;background-color:#d6920c;color:#fff}.theme-syndicate .Button--color--gold:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-syndicate .Button--color--default{transition:color .1s,background-color .1s;background-color:#397439;color:#fff}.theme-syndicate .Button--color--default:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--default:hover{background-color:#509350;color:#fff}.theme-syndicate .Button--color--caution{transition:color .1s,background-color .1s;background-color:#be6209;color:#fff}.theme-syndicate .Button--color--caution:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--caution:hover{background-color:#e67f1a;color:#fff}.theme-syndicate .Button--color--danger{transition:color .1s,background-color .1s;background-color:#9a9d00;color:#fff}.theme-syndicate .Button--color--danger:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--danger:hover{background-color:#bec110;color:#fff}.theme-syndicate .Button--color--transparent{transition:color .1s,background-color .1s;background-color:rgba(77,2,2,0);color:rgba(255,255,255,.5)}.theme-syndicate .Button--color--transparent:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--transparent:hover{background-color:rgba(103,14,14,.81);color:#fff}.theme-syndicate .Button--color--translucent{transition:color .1s,background-color .1s;background-color:rgba(77,2,2,.6);color:rgba(255,255,255,.5)}.theme-syndicate .Button--color--translucent:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--color--translucent:hover{background-color:rgba(105,20,20,.925);color:#fff}.theme-syndicate .Button--disabled{background-color:#363636!important}.theme-syndicate .Button--selected{transition:color .1s,background-color .1s;background-color:#9d0808;color:#fff}.theme-syndicate .Button--selected:focus{transition:color .25s,background-color .25s}.theme-syndicate .Button--selected:hover{background-color:#c11919;color:#fff}.theme-syndicate .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-syndicate .NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#fff;background-color:#910101;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) .8333333333em,rgba(0,0,0,.1) 1.6666666667em)}.theme-syndicate .NoticeBox--color--black{color:#fff;background-color:#000}.theme-syndicate .NoticeBox--color--white{color:#000;background-color:#b3b3b3}.theme-syndicate .NoticeBox--color--red{color:#fff;background-color:#701f1f}.theme-syndicate .NoticeBox--color--orange{color:#fff;background-color:#854114}.theme-syndicate .NoticeBox--color--yellow{color:#000;background-color:#83710d}.theme-syndicate .NoticeBox--color--olive{color:#000;background-color:#576015}.theme-syndicate .NoticeBox--color--green{color:#fff;background-color:#174e24}.theme-syndicate .NoticeBox--color--teal{color:#fff;background-color:#064845}.theme-syndicate .NoticeBox--color--blue{color:#fff;background-color:#1b4565}.theme-syndicate .NoticeBox--color--violet{color:#fff;background-color:#3b2864}.theme-syndicate .NoticeBox--color--purple{color:#fff;background-color:#542663}.theme-syndicate .NoticeBox--color--pink{color:#fff;background-color:#802257}.theme-syndicate .NoticeBox--color--brown{color:#fff;background-color:#4c3729}.theme-syndicate .NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.theme-syndicate .NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.theme-syndicate .NoticeBox--color--average{color:#fff;background-color:#7b4e13}.theme-syndicate .NoticeBox--color--bad{color:#fff;background-color:#701f1f}.theme-syndicate .NoticeBox--color--label{color:#fff;background-color:#53565a}.theme-syndicate .NoticeBox--color--gold{color:#fff;background-color:#825d13}.theme-syndicate .NoticeBox--type--info{color:#fff;background-color:#235982}.theme-syndicate .NoticeBox--type--success{color:#fff;background-color:#1e662f}.theme-syndicate .NoticeBox--type--warning{color:#fff;background-color:#a95219}.theme-syndicate .NoticeBox--type--danger{color:#fff;background-color:#8f2828}.theme-syndicate .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;color:#87ce87;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-syndicate .NumberInput--fluid{display:block}.theme-syndicate .NumberInput__content{margin-left:.5em}.theme-syndicate .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-syndicate .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #87ce87;background-color:#87ce87}.theme-syndicate .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-syndicate .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-syndicate .Input--disabled{color:#777;border-color:#6b6b6b;border-color:rgba(107,107,107,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-syndicate .Input--fluid{display:block;width:auto}.theme-syndicate .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-syndicate .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-syndicate .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-syndicate .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-syndicate .TextArea{position:relative;display:inline-block;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-syndicate .TextArea--fluid{display:block;width:auto;height:auto}.theme-syndicate .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-syndicate .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-syndicate .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-syndicate .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-syndicate .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-syndicate .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-syndicate .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-syndicate .Knob__popupValue,.theme-syndicate .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-syndicate .Knob__popupValue--right{top:.25rem;right:-50%}.theme-syndicate .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-syndicate .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-syndicate .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-syndicate .Knob__ringFillPivot{transform:rotate(135deg)}.theme-syndicate .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-syndicate .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-syndicate .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-syndicate .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-syndicate .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-syndicate .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-syndicate .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-syndicate .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-syndicate .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-syndicate .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-syndicate .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-syndicate .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-syndicate .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-syndicate .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-syndicate .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-syndicate .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-syndicate .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-syndicate .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-syndicate .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-syndicate .Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.theme-syndicate .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-syndicate .Slider:not(.Slider__disabled){cursor:e-resize}.theme-syndicate .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-syndicate .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-syndicate .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-syndicate .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-syndicate .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-syndicate .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-syndicate .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-syndicate .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-syndicate .ProgressBar--color--default{border:.0833333333em solid #306330}.theme-syndicate .ProgressBar--color--default .ProgressBar__fill{background-color:#306330}.theme-syndicate .ProgressBar--color--disabled{border:1px solid #999}.theme-syndicate .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-syndicate .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-syndicate .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-syndicate .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-syndicate .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-syndicate .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-syndicate .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-syndicate .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-syndicate .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-syndicate .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-syndicate .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-syndicate .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-syndicate .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-syndicate .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-syndicate .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-syndicate .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-syndicate .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-syndicate .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-syndicate .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-syndicate .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-syndicate .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-syndicate .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-syndicate .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-syndicate .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-syndicate .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-syndicate .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-syndicate .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-syndicate .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-syndicate .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-syndicate .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-syndicate .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-syndicate .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-syndicate .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-syndicate .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-syndicate .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-syndicate .ProgressBar--color--label{border:.0833333333em solid #657a94!important}.theme-syndicate .ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.theme-syndicate .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-syndicate .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-syndicate .Chat{color:#abc6ec}.theme-syndicate .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-syndicate .Chat__badge:before{content:"x"}.theme-syndicate .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-syndicate .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-syndicate .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-syndicate .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#2b0101}.theme-syndicate .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-syndicate .Chat__highlight{color:#000}.theme-syndicate .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-syndicate .ChatMessage{word-wrap:break-word}.theme-syndicate .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-syndicate .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-syndicate html,.theme-syndicate body{scrollbar-color:#770303 #3a0202}.theme-syndicate .Layout,.theme-syndicate .Layout *{scrollbar-base-color:#3a0202;scrollbar-face-color:#770303;scrollbar-3dlight-color:#4d0202;scrollbar-highlight-color:#4d0202;scrollbar-track-color:#3a0202;scrollbar-arrow-color:#fa2d2d;scrollbar-shadow-color:#770303}.theme-syndicate .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-syndicate .Layout__content--flexRow{display:flex;flex-flow:row}.theme-syndicate .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-syndicate .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-syndicate .Layout__content--noMargin{margin:0}.theme-syndicate .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#4d0202;background-image:linear-gradient(to bottom,#4d0202,#4d0202)}.theme-syndicate .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-syndicate .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-syndicate .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-syndicate .Window__contentPadding:after{height:0}.theme-syndicate .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-syndicate .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(108,22,22,.25);pointer-events:none}.theme-syndicate .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-syndicate .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-syndicate .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-syndicate .TitleBar{background-color:#910101;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-syndicate .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#910101;transition:color .25s,background-color .25s}.theme-syndicate .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-syndicate .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-syndicate .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-syndicate .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-syndicate .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-syndicate .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-syndicate .adminooc{color:#29ccbe}.theme-syndicate .debug{color:#8f39e6}.theme-syndicate .boxed_message{background:rgba(20,20,35,.25);border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.theme-syndicate .boxed_message.left_align_text{text-align:left}.theme-syndicate .boxed_message.red_border{background:rgba(0,0,0,.2);border-color:red}.theme-syndicate .boxed_message.green_border{background:rgba(0,75,0,.25);border-color:#0f0}.theme-syndicate .boxed_message.purple_border{background:rgba(25,0,50,.25);border-color:#8000ff}.theme-syndicate .boxed_message.notice_border{background:rgba(0,0,75,.25);border-color:#6685f5}.theme-syndicate .boxed_message.thick_border{border-width:thick}.theme-paradise .color-black{color:#1a1a1a!important}.theme-paradise .color-white{color:#fff!important}.theme-paradise .color-red{color:#df3e3e!important}.theme-paradise .color-orange{color:#f37f33!important}.theme-paradise .color-yellow{color:#fbda21!important}.theme-paradise .color-olive{color:#cbe41c!important}.theme-paradise .color-green{color:#25ca4c!important}.theme-paradise .color-teal{color:#00d6cc!important}.theme-paradise .color-blue{color:#2e93de!important}.theme-paradise .color-violet{color:#7349cf!important}.theme-paradise .color-purple{color:#ad45d0!important}.theme-paradise .color-pink{color:#e34da1!important}.theme-paradise .color-brown{color:#b97447!important}.theme-paradise .color-grey{color:#848484!important}.theme-paradise .color-good{color:#68c22d!important}.theme-paradise .color-average{color:#f29a29!important}.theme-paradise .color-bad{color:#df3e3e!important}.theme-paradise .color-label{color:#955d4b!important}.theme-paradise .color-gold{color:#f3b22f!important}.theme-paradise .color-bg-black{background-color:#000!important}.theme-paradise .color-bg-white{background-color:#d9d9d9!important}.theme-paradise .color-bg-red{background-color:#bd2020!important}.theme-paradise .color-bg-orange{background-color:#d95e0c!important}.theme-paradise .color-bg-yellow{background-color:#d9b804!important}.theme-paradise .color-bg-olive{background-color:#9aad14!important}.theme-paradise .color-bg-green{background-color:#1b9638!important}.theme-paradise .color-bg-teal{background-color:#009a93!important}.theme-paradise .color-bg-blue{background-color:#1c71b1!important}.theme-paradise .color-bg-violet{background-color:#552dab!important}.theme-paradise .color-bg-purple{background-color:#8b2baa!important}.theme-paradise .color-bg-pink{background-color:#cf2082!important}.theme-paradise .color-bg-brown{background-color:#8c5836!important}.theme-paradise .color-bg-grey{background-color:#646464!important}.theme-paradise .color-bg-good{background-color:#4d9121!important}.theme-paradise .color-bg-average{background-color:#cd7a0d!important}.theme-paradise .color-bg-bad{background-color:#bd2020!important}.theme-paradise .color-bg-label{background-color:#6d4436!important}.theme-paradise .color-bg-gold{background-color:#d6920c!important}.theme-paradise .color-border-black{border-color:#1a1a1a!important}.theme-paradise .color-border-white{border-color:#fff!important}.theme-paradise .color-border-red{border-color:#df3e3e!important}.theme-paradise .color-border-orange{border-color:#f37f33!important}.theme-paradise .color-border-yellow{border-color:#fbda21!important}.theme-paradise .color-border-olive{border-color:#cbe41c!important}.theme-paradise .color-border-green{border-color:#25ca4c!important}.theme-paradise .color-border-teal{border-color:#00d6cc!important}.theme-paradise .color-border-blue{border-color:#2e93de!important}.theme-paradise .color-border-violet{border-color:#7349cf!important}.theme-paradise .color-border-purple{border-color:#ad45d0!important}.theme-paradise .color-border-pink{border-color:#e34da1!important}.theme-paradise .color-border-brown{border-color:#b97447!important}.theme-paradise .color-border-grey{border-color:#848484!important}.theme-paradise .color-border-good{border-color:#68c22d!important}.theme-paradise .color-border-average{border-color:#f29a29!important}.theme-paradise .color-border-bad{border-color:#df3e3e!important}.theme-paradise .color-border-label{border-color:#955d4b!important}.theme-paradise .color-border-gold{border-color:#f3b22f!important}.theme-paradise .Section{position:relative;margin-bottom:.5em;background-color:#40071a;background-color:rgba(0,0,0,.5);box-sizing:border-box}.theme-paradise .Section:last-child{margin-bottom:0}.theme-paradise .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #208080}.theme-paradise .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-paradise .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-paradise .Section__rest{position:relative}.theme-paradise .Section__content{padding:.66em .5em}.theme-paradise .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-paradise .Section--fill{display:flex;flex-direction:column;height:100%}.theme-paradise .Section--fill>.Section__rest{flex-grow:1}.theme-paradise .Section--fill>.Section__rest>.Section__content{height:100%}.theme-paradise .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-paradise .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-paradise .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-paradise .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-paradise .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-paradise .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-paradise .Section .Section:first-child{margin-top:-.5em}.theme-paradise .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-paradise .Section .Section .Section .Section__titleText{font-size:1em}.theme-paradise .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-paradise .Button:last-child{margin-right:0;margin-bottom:0}.theme-paradise .Button .fa,.theme-paradise .Button .fas,.theme-paradise .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-paradise .Button--hasContent .fa,.theme-paradise .Button--hasContent .fas,.theme-paradise .Button--hasContent .far{margin-right:.25em}.theme-paradise .Button--hasContent.Button--iconRight .fa,.theme-paradise .Button--hasContent.Button--iconRight .fas,.theme-paradise .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-paradise .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-paradise .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-paradise .Button--circular{border-radius:50%}.theme-paradise .Button--compact{padding:0 .25em;line-height:1.333em}.theme-paradise .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-paradise .Button--color--black{transition:color .1s,background-color .1s;background-color:#000;color:#fff}.theme-paradise .Button--color--black:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--black:hover{background-color:#101010;color:#fff}.theme-paradise .Button--color--white{transition:color .1s,background-color .1s;background-color:#d9d9d9;color:#000}.theme-paradise .Button--color--white:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-paradise .Button--color--red{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-paradise .Button--color--red:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-paradise .Button--color--orange{transition:color .1s,background-color .1s;background-color:#d95e0c;color:#fff}.theme-paradise .Button--color--orange:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-paradise .Button--color--yellow{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.theme-paradise .Button--color--yellow:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-paradise .Button--color--olive{transition:color .1s,background-color .1s;background-color:#9aad14;color:#fff}.theme-paradise .Button--color--olive:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-paradise .Button--color--green{transition:color .1s,background-color .1s;background-color:#1b9638;color:#fff}.theme-paradise .Button--color--green:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-paradise .Button--color--teal{transition:color .1s,background-color .1s;background-color:#009a93;color:#fff}.theme-paradise .Button--color--teal:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-paradise .Button--color--blue{transition:color .1s,background-color .1s;background-color:#1c71b1;color:#fff}.theme-paradise .Button--color--blue:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-paradise .Button--color--violet{transition:color .1s,background-color .1s;background-color:#552dab;color:#fff}.theme-paradise .Button--color--violet:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-paradise .Button--color--purple{transition:color .1s,background-color .1s;background-color:#8b2baa;color:#fff}.theme-paradise .Button--color--purple:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-paradise .Button--color--pink{transition:color .1s,background-color .1s;background-color:#cf2082;color:#fff}.theme-paradise .Button--color--pink:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-paradise .Button--color--brown{transition:color .1s,background-color .1s;background-color:#8c5836;color:#fff}.theme-paradise .Button--color--brown:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-paradise .Button--color--grey{transition:color .1s,background-color .1s;background-color:#646464;color:#fff}.theme-paradise .Button--color--grey:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-paradise .Button--color--good{transition:color .1s,background-color .1s;background-color:#4d9121;color:#fff}.theme-paradise .Button--color--good:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-paradise .Button--color--average{transition:color .1s,background-color .1s;background-color:#cd7a0d;color:#fff}.theme-paradise .Button--color--average:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-paradise .Button--color--bad{transition:color .1s,background-color .1s;background-color:#bd2020;color:#fff}.theme-paradise .Button--color--bad:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-paradise .Button--color--label{transition:color .1s,background-color .1s;background-color:#6d4436;color:#fff}.theme-paradise .Button--color--label:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--label:hover{background-color:#8b5d4d;color:#fff}.theme-paradise .Button--color--gold{transition:color .1s,background-color .1s;background-color:#d6920c;color:#fff}.theme-paradise .Button--color--gold:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-paradise .Button--color--default{transition:color .1s,background-color .1s;background-color:#208080;color:#fff}.theme-paradise .Button--color--default:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--default:hover{background-color:#34a0a0;color:#fff}.theme-paradise .Button--color--caution{transition:color .1s,background-color .1s;background-color:#d9b804;color:#000}.theme-paradise .Button--color--caution:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--caution:hover{background-color:#f5d523;color:#000}.theme-paradise .Button--color--danger{transition:color .1s,background-color .1s;background-color:#8c1eff;color:#fff}.theme-paradise .Button--color--danger:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--danger:hover{background-color:#ae61ff;color:#fff}.theme-paradise .Button--color--transparent{transition:color .1s,background-color .1s;background-color:rgba(128,13,51,0);color:rgba(255,255,255,.5)}.theme-paradise .Button--color--transparent:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--transparent:hover{background-color:rgba(164,27,73,.81);color:#fff}.theme-paradise .Button--color--translucent{transition:color .1s,background-color .1s;background-color:rgba(128,13,51,.6);color:rgba(255,255,255,.5)}.theme-paradise .Button--color--translucent:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--color--translucent:hover{background-color:rgba(164,32,76,.925);color:#fff}.theme-paradise .Button--disabled{background-color:#999!important}.theme-paradise .Button--selected{transition:color .1s,background-color .1s;background-color:#bf6030;color:#fff}.theme-paradise .Button--selected:focus{transition:color .25s,background-color .25s}.theme-paradise .Button--selected:hover{background-color:#d4835a;color:#fff}.theme-paradise .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-paradise .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;color:#e65c2e;background-color:rgba(0,0,0,.25);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-paradise .NumberInput--fluid{display:block}.theme-paradise .NumberInput__content{margin-left:.5em}.theme-paradise .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-paradise .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #e65c2e;background-color:#e65c2e}.theme-paradise .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,.25);color:#fff;text-align:right}.theme-paradise .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;background-color:rgba(0,0,0,.25);color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-paradise .Input--disabled{color:#777;border-color:#4a4a4a;border-color:rgba(74,74,74,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-paradise .Input--fluid{display:block;width:auto}.theme-paradise .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-paradise .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-paradise .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-paradise .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-paradise .TextArea{position:relative;display:inline-block;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;background-color:rgba(0,0,0,.25);margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-paradise .TextArea--fluid{display:block;width:auto;height:auto}.theme-paradise .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-paradise .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-paradise .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-paradise .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-paradise .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-paradise .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-paradise .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-paradise .Knob__popupValue,.theme-paradise .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-paradise .Knob__popupValue--right{top:.25rem;right:-50%}.theme-paradise .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-paradise .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-paradise .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-paradise .Knob__ringFillPivot{transform:rotate(135deg)}.theme-paradise .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-paradise .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-paradise .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-paradise .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-paradise .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-paradise .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-paradise .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-paradise .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-paradise .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-paradise .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-paradise .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-paradise .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-paradise .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-paradise .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-paradise .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-paradise .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-paradise .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-paradise .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-paradise .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-paradise .Knob--color--label .Knob__ringFill{stroke:#955d4b}.theme-paradise .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-paradise .Slider:not(.Slider__disabled){cursor:e-resize}.theme-paradise .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-paradise .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-paradise .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-paradise .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-paradise .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-paradise .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-paradise .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-paradise .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-paradise .ProgressBar--color--default{border:.0833333333em solid #1b6d6d}.theme-paradise .ProgressBar--color--default .ProgressBar__fill{background-color:#1b6d6d}.theme-paradise .ProgressBar--color--disabled{border:1px solid #999}.theme-paradise .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-paradise .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-paradise .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-paradise .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-paradise .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-paradise .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-paradise .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-paradise .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-paradise .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-paradise .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-paradise .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-paradise .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-paradise .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-paradise .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-paradise .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-paradise .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-paradise .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-paradise .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-paradise .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-paradise .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-paradise .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-paradise .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-paradise .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-paradise .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-paradise .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-paradise .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-paradise .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-paradise .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-paradise .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-paradise .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-paradise .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-paradise .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-paradise .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-paradise .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-paradise .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-paradise .ProgressBar--color--label{border:.0833333333em solid #6d4436!important}.theme-paradise .ProgressBar--color--label .ProgressBar__fill{background-color:#6d4436}.theme-paradise .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-paradise .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-paradise .Chat{color:#abc6ec}.theme-paradise .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-paradise .Chat__badge:before{content:"x"}.theme-paradise .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-paradise .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-paradise .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-paradise .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#fff;background-color:#db2828}.theme-paradise .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-paradise .Chat__highlight{color:#000}.theme-paradise .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-paradise .ChatMessage{word-wrap:break-word}.theme-paradise .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-paradise .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-paradise html,.theme-paradise body{scrollbar-color:#cb1551 #680b29}.theme-paradise .Layout,.theme-paradise .Layout *{scrollbar-base-color:#680b29;scrollbar-face-color:#99103d;scrollbar-3dlight-color:#800d33;scrollbar-highlight-color:#800d33;scrollbar-track-color:#680b29;scrollbar-arrow-color:#ea2e6c;scrollbar-shadow-color:#99103d}.theme-paradise .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-paradise .Layout__content--flexRow{display:flex;flex-flow:row}.theme-paradise .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-paradise .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-paradise .Layout__content--noMargin{margin:0}.theme-paradise .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#800d33;background-image:linear-gradient(to bottom,#80014b,#80460d)}.theme-paradise .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-paradise .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-paradise .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-paradise .Window__contentPadding:after{height:0}.theme-paradise .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-paradise .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(166,34,78,.25);pointer-events:none}.theme-paradise .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-paradise .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-paradise .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-paradise .TitleBar{background-color:#800d33;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-paradise .TitleBar__clickable{color:rgba(255,0,0,.5);background-color:#800d33;transition:color .25s,background-color .25s}.theme-paradise .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-paradise .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-paradise .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-paradise .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-paradise .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-paradise .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-paradise .adminooc{color:#29ccbe}.theme-paradise .debug{color:#8f39e6}.theme-paradise .boxed_message{background:rgba(0,0,0,.25);border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.theme-paradise .boxed_message.left_align_text{text-align:left}.theme-paradise .boxed_message.red_border{background:rgba(0,0,0,.25);border-color:#a00}.theme-paradise .boxed_message.green_border{background:rgba(0,0,0,.25);border-color:#0f0}.theme-paradise .boxed_message.purple_border{background:rgba(0,0,0,.25);border-color:#8000ff}.theme-paradise .boxed_message.notice_border{background:rgba(0,0,0,.25);border-color:#6685f5}.theme-paradise .boxed_message.thick_border{border-width:thick} +html,body{box-sizing:border-box;height:100%;margin:0;font-size:12px}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif}*,*:before,*:after{box-sizing:inherit}h1,h2,h3,h4,h5,h6{display:block;margin:0;padding:6px 0;padding:.5rem 0}h1{font-size:18px;font-size:1.5rem}h2{font-size:16px;font-size:1.333rem}h3{font-size:14px;font-size:1.167rem}h4{font-size:12px;font-size:1rem}td,th{vertical-align:baseline;text-align:left}.candystripe:nth-child(odd){background-color:rgba(0,0,0,.25)}.color-black{color:#1a1a1a!important}.color-white{color:#fff!important}.color-red{color:#df3e3e!important}.color-orange{color:#f37f33!important}.color-yellow{color:#fbda21!important}.color-olive{color:#cbe41c!important}.color-green{color:#25ca4c!important}.color-teal{color:#00d6cc!important}.color-blue{color:#2e93de!important}.color-violet{color:#7349cf!important}.color-purple{color:#ad45d0!important}.color-pink{color:#e34da1!important}.color-brown{color:#b97447!important}.color-grey{color:#848484!important}.color-good{color:#68c22d!important}.color-average{color:#f29a29!important}.color-bad{color:#df3e3e!important}.color-label{color:#8b9bb0!important}.color-gold{color:#f3b22f!important}.color-bg-black{background-color:#000!important}.color-bg-white{background-color:#d9d9d9!important}.color-bg-red{background-color:#bd2020!important}.color-bg-orange{background-color:#d95e0c!important}.color-bg-yellow{background-color:#d9b804!important}.color-bg-olive{background-color:#9aad14!important}.color-bg-green{background-color:#1b9638!important}.color-bg-teal{background-color:#009a93!important}.color-bg-blue{background-color:#1c71b1!important}.color-bg-violet{background-color:#552dab!important}.color-bg-purple{background-color:#8b2baa!important}.color-bg-pink{background-color:#cf2082!important}.color-bg-brown{background-color:#8c5836!important}.color-bg-grey{background-color:#646464!important}.color-bg-good{background-color:#4d9121!important}.color-bg-average{background-color:#cd7a0d!important}.color-bg-bad{background-color:#bd2020!important}.color-bg-label{background-color:#657a94!important}.color-bg-gold{background-color:#d6920c!important}.color-border-black{border-color:#1a1a1a!important}.color-border-white{border-color:#fff!important}.color-border-red{border-color:#df3e3e!important}.color-border-orange{border-color:#f37f33!important}.color-border-yellow{border-color:#fbda21!important}.color-border-olive{border-color:#cbe41c!important}.color-border-green{border-color:#25ca4c!important}.color-border-teal{border-color:#00d6cc!important}.color-border-blue{border-color:#2e93de!important}.color-border-violet{border-color:#7349cf!important}.color-border-purple{border-color:#ad45d0!important}.color-border-pink{border-color:#e34da1!important}.color-border-brown{border-color:#b97447!important}.color-border-grey{border-color:#848484!important}.color-border-good{border-color:#68c22d!important}.color-border-average{border-color:#f29a29!important}.color-border-bad{border-color:#df3e3e!important}.color-border-label{border-color:#8b9bb0!important}.color-border-gold{border-color:#f3b22f!important}.debug-layout,.debug-layout *:not(g):not(path){color:rgba(255,255,255,.9)!important;background:rgba(0,0,0,0)!important;outline:1px solid rgba(255,255,255,.5)!important;box-shadow:none!important;filter:none!important}.debug-layout:hover,.debug-layout *:not(g):not(path):hover{outline-color:rgba(255,255,255,.8)!important}.outline-dotted{outline-style:dotted!important}.outline-dashed{outline-style:dashed!important}.outline-solid{outline-style:solid!important}.outline-double{outline-style:double!important}.outline-groove{outline-style:groove!important}.outline-ridge{outline-style:ridge!important}.outline-inset{outline-style:inset!important}.outline-outset{outline-style:outset!important}.outline-color-black{outline:.167rem solid #1a1a1a!important}.outline-color-white{outline:.167rem solid #fff!important}.outline-color-red{outline:.167rem solid #df3e3e!important}.outline-color-orange{outline:.167rem solid #f37f33!important}.outline-color-yellow{outline:.167rem solid #fbda21!important}.outline-color-olive{outline:.167rem solid #cbe41c!important}.outline-color-green{outline:.167rem solid #25ca4c!important}.outline-color-teal{outline:.167rem solid #00d6cc!important}.outline-color-blue{outline:.167rem solid #2e93de!important}.outline-color-violet{outline:.167rem solid #7349cf!important}.outline-color-purple{outline:.167rem solid #ad45d0!important}.outline-color-pink{outline:.167rem solid #e34da1!important}.outline-color-brown{outline:.167rem solid #b97447!important}.outline-color-grey{outline:.167rem solid #848484!important}.outline-color-good{outline:.167rem solid #68c22d!important}.outline-color-average{outline:.167rem solid #f29a29!important}.outline-color-bad{outline:.167rem solid #df3e3e!important}.outline-color-label{outline:.167rem solid #8b9bb0!important}.outline-color-gold{outline:.167rem solid #f3b22f!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-baseline{text-align:baseline}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-pre{white-space:pre}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-underline{text-decoration:underline}.BlockQuote{color:#8b9bb0;border-left:.1666666667em solid #8b9bb0;padding-left:.5em;margin-bottom:.5em}.BlockQuote:last-child{margin-bottom:0}.Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.Button:last-child{margin-right:0;margin-bottom:0}.Button .fa,.Button .fas,.Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.Button--hasContent .fa,.Button--hasContent .fas,.Button--hasContent .far{margin-right:.25em}.Button--hasContent.Button--iconRight .fa,.Button--hasContent.Button--iconRight .fas,.Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.Button--fluid{display:block;margin-left:0;margin-right:0}.Button--circular{border-radius:50%}.Button--compact{padding:0 .25em;line-height:1.333em}.Button--multiLine{white-space:normal;word-wrap:break-word}.Button--modal{float:right;z-index:1;margin-top:-.5rem}.Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.Button--color--black:hover{background-color:#101010;color:#fff}.Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.Button--color--white:hover{background-color:#f8f8f8;color:#000}.Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.Button--color--red:hover{background-color:#d93f3f;color:#fff}.Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.Button--color--orange:hover{background-color:#ef7e33;color:#fff}.Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.Button--color--yellow:hover{background-color:#f5d523;color:#000}.Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.Button--color--olive:hover{background-color:#bdd327;color:#fff}.Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.Button--color--green:hover{background-color:#2fb94f;color:#fff}.Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.Button--color--teal:hover{background-color:#10bdb6;color:#fff}.Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.Button--color--blue:hover{background-color:#308fd6;color:#fff}.Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.Button--color--violet:hover{background-color:#7249ca;color:#fff}.Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.Button--color--purple:hover{background-color:#aa46ca;color:#fff}.Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.Button--color--pink:hover{background-color:#e04ca0;color:#fff}.Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.Button--color--brown:hover{background-color:#ae724c;color:#fff}.Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.Button--color--grey:hover{background-color:#818181;color:#fff}.Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.Button--color--good:hover{background-color:#67b335;color:#fff}.Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.Button--color--average:hover{background-color:#eb972b;color:#fff}.Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.Button--color--bad:hover{background-color:#d93f3f;color:#fff}.Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.Button--color--label{background-color:#657a94;color:#fff;transition:color .2s,background-color .2s}.Button--color--label:hover{background-color:#8a9aae;color:#fff}.Button--color--label--translucent{background-color:rgba(101,122,148,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--label--translucent:hover{background-color:rgba(138,154,174,.5);color:#fff}.Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.Button--color--gold:hover{background-color:#eeaf30;color:#fff}.Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.Button--color--transparent{background-color:rgba(32,32,32,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--transparent:hover{background-color:rgba(50,50,50,.81);color:#fff}.Button--color--default{background-color:#3e6189;color:#fff;transition:color .2s,background-color .2s}.Button--color--default:hover{background-color:#567daa;color:#fff}.Button--color--default--translucent{background-color:rgba(40,40,40,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--default--translucent:hover{background-color:rgba(61,61,61,.5);color:#fff}.Button--color--caution{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.Button--color--caution:hover{background-color:#f5d523;color:#000}.Button--color--caution--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--caution--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.Button--color--danger{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.Button--color--danger:hover{background-color:#d93f3f;color:#fff}.Button--color--danger--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.Button--color--danger--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.Button--disabled{background-color:#999!important;color:rgba(255,255,255,.75)!important}.Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.Button--selected,.Button--selected--translucent{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.Button--selected:hover,.Button--selected--translucent:hover{background-color:#2fb94f;color:#fff}.ColorBox{display:inline-block;width:1em;height:1em;line-height:1em;text-align:center}.Dimmer{display:flex;justify-content:center;align-items:center;position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.75);z-index:1}.Dropdown{position:relative;align-items:center}.Dropdown__control{display:inline-block;align-items:center;font-family:Verdana,sans-serif;font-size:1em;width:8.3333333333em;line-height:1.3333333333em;-ms-user-select:none;user-select:none}.Dropdown__arrow-button{float:right;padding-left:.35em;width:1.2em;height:1.8333333333em;border-left:.0833333333em solid #000;border-left:.0833333333em solid rgba(0,0,0,.25)}.Dropdown__menu{overflow-y:auto;align-items:center;z-index:5;max-height:16.6666666667em;border-radius:0 0 .1666666667em .1666666667em;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75)}.Dropdown__menu-scroll{overflow-y:scroll}.Dropdown__menuentry{padding:.1666666667em .3333333333em;font-family:Verdana,sans-serif;font-size:1em;line-height:1.4166666667em;transition:background-color .1s ease-out}.Dropdown__menuentry.selected{background-color:rgba(255,255,255,.5)!important;transition:background-color 0ms}.Dropdown__menuentry:hover{background-color:rgba(255,255,255,.2);transition:background-color 0ms}.Dropdown__over{top:auto;bottom:100%}.Dropdown__selected-text{display:inline-block;text-overflow:ellipsis;white-space:nowrap;height:1.4166666667em;width:calc(100% - 1.2em);text-align:left;padding-top:2.5px}.Flex{display:-ms-flexbox;display:flex}.Flex--inline{display:inline-flex}.Flex--iefix{display:block}.Flex--iefix.Flex--inline,.Flex__item--iefix{display:inline-block}.Flex--iefix--column>.Flex__item--iefix{display:block}.Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.Knob__popupValue,.Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Knob__popupValue--right{top:.25rem;right:-50%}.Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.Knob__ringTrackPivot{transform:rotate(135deg)}.Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.Knob__ringFillPivot{transform:rotate(135deg)}.Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.Knob--color--white .Knob__ringFill{stroke:#fff}.Knob--color--red .Knob__ringFill{stroke:#df3e3e}.Knob--color--orange .Knob__ringFill{stroke:#f37f33}.Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.Knob--color--green .Knob__ringFill{stroke:#25ca4c}.Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.Knob--color--blue .Knob__ringFill{stroke:#2e93de}.Knob--color--violet .Knob__ringFill{stroke:#7349cf}.Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.Knob--color--pink .Knob__ringFill{stroke:#e34da1}.Knob--color--brown .Knob__ringFill{stroke:#b97447}.Knob--color--grey .Knob__ringFill{stroke:#848484}.Knob--color--good .Knob__ringFill{stroke:#68c22d}.Knob--color--average .Knob__ringFill{stroke:#f29a29}.Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.LabeledList{display:table;width:100%;width:calc(100% + 1em);border-collapse:collapse;border-spacing:0;margin:-.25em -.5em 0;padding:0}.LabeledList__row{display:table-row}.LabeledList__row:last-child .LabeledList__cell{padding-bottom:0}.LabeledList__cell{display:table-cell;margin:0;padding:.25em .5em;border:0;text-align:left;vertical-align:baseline}.LabeledList__label{width:1%;white-space:nowrap;min-width:5em}.LabeledList__buttons{width:.1%;white-space:nowrap;text-align:right;padding-top:.0833333333em;padding-bottom:0}.LabeledList__breakContents{word-break:break-all;word-wrap:break-word}.Modal{background-color:#202020;max-width:calc(100% - 1rem);padding:1rem;scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#000;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) .8333333333em,rgba(0,0,0,.1) 1.6666666667em)}.NoticeBox--color--black{color:#fff;background-color:#000}.NoticeBox--color--white{color:#000;background-color:#b3b3b3}.NoticeBox--color--red{color:#fff;background-color:#701f1f}.NoticeBox--color--orange{color:#fff;background-color:#854114}.NoticeBox--color--yellow{color:#000;background-color:#83710d}.NoticeBox--color--olive{color:#000;background-color:#576015}.NoticeBox--color--green{color:#fff;background-color:#174e24}.NoticeBox--color--teal{color:#fff;background-color:#064845}.NoticeBox--color--blue{color:#fff;background-color:#1b4565}.NoticeBox--color--violet{color:#fff;background-color:#3b2864}.NoticeBox--color--purple{color:#fff;background-color:#542663}.NoticeBox--color--pink{color:#fff;background-color:#802257}.NoticeBox--color--brown{color:#fff;background-color:#4c3729}.NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.NoticeBox--color--average{color:#fff;background-color:#7b4e13}.NoticeBox--color--bad{color:#fff;background-color:#701f1f}.NoticeBox--color--label{color:#fff;background-color:#53565a}.NoticeBox--color--gold{color:#fff;background-color:#825d13}.NoticeBox--type--info{color:#fff;background-color:#235982}.NoticeBox--type--success{color:#fff;background-color:#1e662f}.NoticeBox--type--warning{color:#fff;background-color:#a95219}.NoticeBox--type--danger{color:#fff;background-color:#8f2828}.NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.NumberInput--fluid{display:block}.NumberInput__content{margin-left:.5em}.NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.ProgressBar__fill--animated{transition:background-color .5s,width .5s}.ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.ProgressBar--color--default{border:.0833333333em solid #3e6189}.ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.ProgressBar--color--disabled{border:1px solid #999}.ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.ProgressBar--color--black{border:.0833333333em solid #000!important}.ProgressBar--color--black .ProgressBar__fill{background-color:#000}.ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.ProgressBar--color--grey{border:.0833333333em solid #646464!important}.ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--label{border:.0833333333em solid #657a94!important}.ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.Section{position:relative;margin-bottom:.5em;background-color:#131313;box-sizing:border-box}.Section:last-child{margin-bottom:0}.Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.Section__rest{position:relative}.Section__content{padding:.66em .5em}.Section--fitted>.Section__rest>.Section__content{padding:0}.Section--fill{display:flex;flex-direction:column;height:100%}.Section--fill>.Section__rest{flex-grow:1}.Section--fill>.Section__rest>.Section__content{height:100%}.Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.Section--scrollable{overflow-x:hidden;overflow-y:hidden}.Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.Section .Section:first-child{margin-top:-.5em}.Section .Section .Section__titleText{font-size:1.0833333333em}.Section .Section .Section .Section__titleText{font-size:1em}.Slider:not(.Slider__disabled){cursor:e-resize}.Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Divider--horizontal{margin:.5em 0}.Divider--horizontal:not(.Divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Divider--vertical{height:100%;margin:0 .5em}.Divider--vertical:not(.Divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--fill{height:100%}.Stack--horizontal>.Stack__item{margin-left:.5em}.Stack--horizontal>.Stack__item:first-child{margin-left:0}.Stack--vertical>.Stack__item{margin-top:.5em}.Stack--vertical>.Stack__item:first-child{margin-top:0}.Stack--zebra>.Stack__item:nth-child(2n){background-color:#131313}.Stack--horizontal>.Stack__divider:not(.Stack__divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--vertical>.Stack__divider:not(.Stack__divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Table{display:table;width:100%;border-collapse:collapse;border-spacing:0;margin:0}.Table--collapsing{width:auto}.Table__row{display:table-row}.Table__cell{display:table-cell;padding:0 .25em}.Table__cell:first-child{padding-left:0}.Table__cell:last-child{padding-right:0}.Table__row--header .Table__cell,.Table__cell--header{font-weight:700;padding-bottom:.5em}.Table__cell--collapsing{width:1%;white-space:nowrap}.Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#131313}.Tabs--fill{height:100%}.Section .Tabs{background-color:rgba(0,0,0,0)}.Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.Tabs--vertical{flex-direction:column;padding:.25em .25em .25em 0}.Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.Tabs--horizontal:last-child{margin-bottom:0}.Tabs__Tab{flex-grow:0}.Tabs--fluid .Tabs__Tab{flex-grow:1}.Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(255,255,255,.5);min-height:2.25em;min-width:4em;transition:background-color 50ms ease-out}.Tab:not(.Tab--selected):hover{background-color:rgba(255,255,255,.075);transition:background-color 0}.Tab--selected{background-color:rgba(255,255,255,.125);color:#dfe7f0}.Tab__text{flex-grow:1;margin:0 .5em}.Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #d4dfec}.Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-right-radius:.25em;border-bottom-right-radius:.25em}.Tabs--vertical .Tab--selected{border-left:.1666666667em solid #d4dfec}.Tab--selected.Tab--color--black{color:#535353}.Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#1a1a1a}.Tabs--vertical .Tab--selected.Tab--color--black{border-left-color:#1a1a1a}.Tab--selected.Tab--color--white{color:#fff}.Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#fff}.Tabs--vertical .Tab--selected.Tab--color--white{border-left-color:#fff}.Tab--selected.Tab--color--red{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--red{border-left-color:#df3e3e}.Tab--selected.Tab--color--orange{color:#f69f66}.Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#f37f33}.Tabs--vertical .Tab--selected.Tab--color--orange{border-left-color:#f37f33}.Tab--selected.Tab--color--yellow{color:#fce358}.Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#fbda21}.Tabs--vertical .Tab--selected.Tab--color--yellow{border-left-color:#fbda21}.Tab--selected.Tab--color--olive{color:#d8eb55}.Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#cbe41c}.Tabs--vertical .Tab--selected.Tab--color--olive{border-left-color:#cbe41c}.Tab--selected.Tab--color--green{color:#53e074}.Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#25ca4c}.Tabs--vertical .Tab--selected.Tab--color--green{border-left-color:#25ca4c}.Tab--selected.Tab--color--teal{color:#21fff5}.Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00d6cc}.Tabs--vertical .Tab--selected.Tab--color--teal{border-left-color:#00d6cc}.Tab--selected.Tab--color--blue{color:#62aee6}.Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#2e93de}.Tabs--vertical .Tab--selected.Tab--color--blue{border-left-color:#2e93de}.Tab--selected.Tab--color--violet{color:#9676db}.Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#7349cf}.Tabs--vertical .Tab--selected.Tab--color--violet{border-left-color:#7349cf}.Tab--selected.Tab--color--purple{color:#c274db}.Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#ad45d0}.Tabs--vertical .Tab--selected.Tab--color--purple{border-left-color:#ad45d0}.Tab--selected.Tab--color--pink{color:#ea79b9}.Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#e34da1}.Tabs--vertical .Tab--selected.Tab--color--pink{border-left-color:#e34da1}.Tab--selected.Tab--color--brown{color:#ca9775}.Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#b97447}.Tabs--vertical .Tab--selected.Tab--color--brown{border-left-color:#b97447}.Tab--selected.Tab--color--grey{color:#a3a3a3}.Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#848484}.Tabs--vertical .Tab--selected.Tab--color--grey{border-left-color:#848484}.Tab--selected.Tab--color--good{color:#8cd95a}.Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#68c22d}.Tabs--vertical .Tab--selected.Tab--color--good{border-left-color:#68c22d}.Tab--selected.Tab--color--average{color:#f5b35e}.Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#f29a29}.Tabs--vertical .Tab--selected.Tab--color--average{border-left-color:#f29a29}.Tab--selected.Tab--color--bad{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--bad{border-left-color:#df3e3e}.Tab--selected.Tab--color--label{color:#a8b4c4}.Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#8b9bb0}.Tabs--vertical .Tab--selected.Tab--color--label{border-left-color:#8b9bb0}.Tab--selected.Tab--color--gold{color:#f6c563}.Tabs--horizontal .Tab--selected.Tab--color--gold{border-bottom-color:#f3b22f}.Tabs--vertical .Tab--selected.Tab--color--gold{border-left-color:#f3b22f}.Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.Input--disabled{color:#777;border-color:#848484;border-color:rgba(132,132,132,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input--monospace .Input__input{font-family:Consolas,monospace}.TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.TextArea--fluid{display:block;width:auto;height:auto}.TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.Tooltip{z-index:2;padding:.5em .75em;pointer-events:none;text-align:left;transition:opacity .15s ease-out;background-color:#000;color:#fff;box-shadow:.1em .1em 1.25em -.1em rgba(0,0,0,.5);border-radius:.16em;max-width:20.8333333333em}.Chat{color:#abc6ec}.Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.Chat__badge:before{content:"x"}.Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.Chat__scrollButton{position:fixed;right:2em;bottom:1em}.Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#131313}.Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.Chat__highlight{color:#000}.Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.ChatMessage{word-wrap:break-word}.ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.Ping{position:relative;padding:.125em .25em;border:.0833333333em solid rgba(140,140,140,.5);border-radius:.25em;width:3.75em;text-align:right}.Ping__indicator{content:"";position:absolute;top:.5em;left:.5em;width:.5em;height:.5em;background-color:#888;border-radius:.25em}.Notifications{position:absolute;top:1em;left:.75em;right:2em}.Notification{color:#fff;background-color:#dc143c;padding:.5em;margin:1em 0}.Notification:first-child{margin-top:0}.Notification:last-child{margin-bottom:0}html,body{scrollbar-color:#363636 #181818}.Layout,.Layout *{scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.Layout__content--flexRow{display:flex;flex-flow:row}.Layout__content--flexColumn{display:flex;flex-flow:column}.Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.Layout__content--noMargin{margin:0}.Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#202020;background-image:linear-gradient(to bottom,#202020,#202020)}.Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.Window__contentPadding:after{height:0}.Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(56,56,56,.25);pointer-events:none}.Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}.emoji16x16{vertical-align:middle}a{color:#397ea5}a.popt{text-decoration:none}.popup{position:fixed;top:50%;left:50%;background:#ddd}.popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.popup .close:hover{background:#999}.popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.popup input[type=text]:hover,.popup input[type=text]:active,.popup input[type=text]:focus{border-color:green}.popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.popup input[type=submit]:hover,.popup input[type=submit]:focus,.popup input[type=submit]:active{background:#aaa;cursor:pointer}.changeFont{padding:10px}.changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.changeFont a:hover{background:#ccc}.highlightPopup{padding:10px;text-align:center}.highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.highlightPopup input.highlightColor{background-color:#ff0}.highlightPopup input.highlightTermSubmit{margin-top:5px}.contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.contextMenu a:hover{background-color:#ccc}.filterMessages{padding:5px}.filterMessages div{padding:2px 0}.icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.motd{color:#a4bad6;font-family:Verdana,sans-serif;white-space:normal}.motd h1,.motd h2,.motd h3,.motd h4,.motd h5,.motd h6{color:#a4bad6;text-decoration:underline}.motd a,.motd a:link,.motd a:active,.motd a:hover{color:#a4bad6}.italic,.italics,.emote{font-style:italic}.highlight{background:#ff0}h1,h2,h3,h4,h5,h6{color:#a4bad6;font-family:Georgia,Verdana,sans-serif}em{font-style:normal;font-weight:700}.darkmblue{color:#6685f5}.prefix,.ooc{font-weight:700}.looc{color:#69c;font-weight:700}.adminobserverooc{color:#09c;font-weight:700}.adminooc{color:#b82e00;font-weight:700}.adminobserver{color:#960;font-weight:700}.admin{color:#386aff;font-weight:700}.adminsay{color:#9611d4;font-weight:700}.mentorhelp{color:#07b;font-weight:700}.adminhelp{color:#a00;font-weight:700}.playerreply{color:#80b;font-weight:700}.pmsend{color:#6685f5}.debug{color:#6d2f83}.name,.yell{font-weight:700}.siliconsay{font-family:Courier New,Courier,monospace}.deadsay{color:#e2c1ff}.radio{color:#20b142}.deptradio{color:#939}.comradio{color:#5f5cff}.syndradio{color:#8f4a4b}.dsquadradio{color:#998599}.resteamradio{color:#18bc46}.airadio{color:#ff5ed7}.centradio{color:#2681a5}.secradio{color:#dd3535}.engradio{color:#feac20}.medradio{color:#00b5ad}.sciradio{color:#c68cfa}.supradio{color:#b88646}.srvradio{color:#bbd164}.proradio{color:#b84f92}.admin_channel{color:#03fc9d;font-weight:700}.all_admin_ping{color:#12a5f4;font-weight:700;font-size:120%;text-align:center}.mentor_channel{color:#775bff;font-weight:700}.mentor_channel_admin{color:#a35cff;font-weight:700}.djradio{color:#960}.binaryradio{color:#1b00fb;font-family:Courier New,Courier,monospace}.mommiradio{color:#6685f5}.alert{color:#d82020}h1.alert,h2.alert{color:#a4bad6}.ghostalert{color:#cc00c6;font-style:italic;font-weight:700}.emote{font-style:italic}.selecteddna{color:#a4bad6;background-color:#001b1b}.attack{color:red}.moderate{color:#c00}.disarm{color:#900}.passive{color:#600}.warning{color:#c51e1e;font-style:italic}.boldwarning{color:#c51e1e;font-style:italic;font-weight:700}.danger{color:#c51e1e;font-weight:700}.userdanger{color:#c51e1e;font-weight:700;font-size:120%}.biggerdanger{color:red;font-weight:700;font-size:150%}.notice{color:#6685f5}.boldnotice{color:#6685f5;font-weight:700}.suicide{color:#ff5050;font-style:italic}.green{color:#03bb39}.pr_announce,.boldannounceic,.boldannounceooc{color:#c51e1e;font-weight:700}.greenannounce{color:#059223;font-weight:700}.alien{color:#c433c4}.noticealien{color:#00c000}.alertalien{color:#00c000;font-weight:700}.terrorspider{color:#cf52fa}.dantalion{color:#8b2c5e}.chaosverygood{color:#19e0c0;font-weight:700;font-size:120%}.chaosgood{color:#19e0c0;font-weight:700}.chaosneutral{color:#479ac0;font-weight:700}.chaosbad{color:#9047c0;font-weight:700}.chaosverybad{color:#9047c0;font-weight:700;font-size:120%}.sinister{color:purple;font-weight:700;font-style:italic}.medal{font-weight:700}.blob{color:#006221;font-weight:700;font-style:italic}.confirm{color:#00af3b}.rose{color:#ff5050}.sans{font-family:Comic Sans MS,cursive,sans-serif}.wingdings{font-family:Wingdings,Webdings}.robot{font-family:OCR-A,monospace;font-size:1.15em;font-weight:700}.ancient{color:#008b8b;font-style:italic}.newscaster{color:#c00}.mod{color:#735638;font-weight:700}.modooc{color:#184880;font-weight:700}.adminmod{color:#f0aa14;font-weight:700}.tajaran{color:#803b56}.skrell{color:#00ced1}.solcom{color:#8282fb}.com_srus{color:#7c4848}.soghun{color:#228b22}.changeling{color:#00b4de}.vox{color:#a0a}.diona{color:#804000;font-weight:700}.trinary{color:#727272}.kidan{color:#c64c05}.slime{color:#07a}.drask{color:#a3d4eb;font-family:Arial Black}.moth{color:#869b29;font-family:Copperplate}.clown{color:red}.vulpkanin{color:#b97a57}.abductor{color:purple;font-style:italic}.mind_control{color:#a00d6f;font-size:3;font-weight:700;font-style:italic}.rough{font-family:Trebuchet MS,cursive,sans-serif}.say_quote{font-family:Georgia,Verdana,sans-serif}.cult{color:purple;font-weight:700;font-style:italic}.cultspeech{color:#af0000;font-style:italic}.cultitalic{color:#a60000;font-style:italic}.cultlarge{color:#a60000;font-weight:700;font-size:120%}.narsie{color:#a60000;font-weight:700;font-size:300%}.narsiesmall{color:#a60000;font-weight:700;font-size:200%}.zombie{color:#7c4848}.zombielarge{color:#7c4848;font-weight:700;font-size:120%}.interface{color:#9031c4}.big{font-size:150%}.reallybig{font-size:175%}.greentext{color:#0f0;font-size:150%}.redtext{color:red;font-size:150%}.bold{font-weight:700}.his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.center{text-align:center}.red{color:red}.purple{color:#9031c4}.skeleton{color:#c8c8c8;font-weight:700;font-style:italic}.gutter{color:#7092be;font-family:Trebuchet MS,cursive,sans-serif}.orange{color:orange}.orangei{color:orange;font-style:italic}.orangeb{color:orange;font-weight:700}.resonate{color:#298f85}.healthscan_oxy{color:#5cc9ff}.revennotice{color:#6685f5}.revenboldnotice{color:#6685f5;font-weight:700}.revenbignotice{color:#6685f5;font-weight:700;font-size:120%}.revenminor{color:#823abb}.revenwarning{color:#760fbb;font-style:italic}.revendanger{color:#760fbb;font-weight:700;font-size:120%}.specialnotice{color:#4a6f82;font-weight:700;font-size:120%}.good{color:green}.average{color:#ff8000}.bad{color:red}.italics,.talkinto{font-style:italic}.whisper{font-style:italic;color:#ccc}.recruit{color:#5c00e6;font-weight:700;font-style:italic}.memo{color:#638500;text-align:center}.memoedit{text-align:center;font-size:75%}.connectionClosed,.fatalError{background:red;color:#fff;padding:5px}.connectionClosed.restored{background:green}.internal.boldnshit{color:#6685f5;font-weight:700}.rebooting{background:#2979af;color:#fff;padding:5px}.rebooting a{color:#fff!important;text-decoration-color:#fff!important}.text-normal{font-weight:400;font-style:normal}.hidden{display:none;visibility:hidden}.colossus{color:#7f282a;font-size:175%}.hierophant{color:#609;font-weight:700;font-style:italic}.hierophant_warning{color:#609;font-style:italic}.emoji{max-height:16px;max-width:16px}.adminticket{color:#3daf21;font-weight:700}.adminticketalt{color:#ccb847;font-weight:700}span.body .codephrases{color:#55f}span.body .coderesponses{color:#f33}.announcement h1,.announcement h2{color:#a4bad6;margin:8pt 0;line-height:1.2}.announcement p{color:#d82020;line-height:1.3}.announcement.minor h1{font-size:180%}.announcement.minor h2{font-size:170%}.announcement.sec h1{color:red;font-size:180%;font-family:Verdana,sans-serif}.bolditalics{font-style:italic;font-weight:700}.boxed_message{background:#1b1c1e;border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.boxed_message.left_align_text{text-align:left}.boxed_message.red_border{background:#1e1b1b;border-color:#a00}.boxed_message.green_border{background:#1b1e1c;border-color:#0f0}.boxed_message.purple_border{background:#1d1c1f;border-color:#8000ff}.boxed_message.notice_border{background:#1b1c1e;border-color:#6685f5}.boxed_message.thick_border{border-width:thick}.oxygen{color:#449dff}.nitrogen{color:#f94541}.carbon_dioxide{color:#ccc}.plasma{color:#eb6b00}.sleeping_agent{color:#f28b89}.agent_b{color:teal}.theme-light .color-black{color:#000!important}.theme-light .color-white{color:#e6e6e6!important}.theme-light .color-red{color:#c82121!important}.theme-light .color-orange{color:#e6630d!important}.theme-light .color-yellow{color:#e5c304!important}.theme-light .color-olive{color:#a3b816!important}.theme-light .color-green{color:#1d9f3b!important}.theme-light .color-teal{color:#00a39c!important}.theme-light .color-blue{color:#1e78bb!important}.theme-light .color-violet{color:#5a30b5!important}.theme-light .color-purple{color:#932eb4!important}.theme-light .color-pink{color:#db228a!important}.theme-light .color-brown{color:#955d39!important}.theme-light .color-grey{color:#e6e6e6!important}.theme-light .color-good{color:#529923!important}.theme-light .color-average{color:#da810e!important}.theme-light .color-bad{color:#c82121!important}.theme-light .color-label{color:#353535!important}.theme-light .color-gold{color:#e39b0d!important}.theme-light .color-bg-black{background-color:#000!important}.theme-light .color-bg-white{background-color:#bfbfbf!important}.theme-light .color-bg-red{background-color:#a61c1c!important}.theme-light .color-bg-orange{background-color:#c0530b!important}.theme-light .color-bg-yellow{background-color:#bfa303!important}.theme-light .color-bg-olive{background-color:#889912!important}.theme-light .color-bg-green{background-color:#188532!important}.theme-light .color-bg-teal{background-color:#008882!important}.theme-light .color-bg-blue{background-color:#19649c!important}.theme-light .color-bg-violet{background-color:#4b2897!important}.theme-light .color-bg-purple{background-color:#7a2696!important}.theme-light .color-bg-pink{background-color:#b61d73!important}.theme-light .color-bg-brown{background-color:#7c4d2f!important}.theme-light .color-bg-grey{background-color:#bfbfbf!important}.theme-light .color-bg-good{background-color:#44801d!important}.theme-light .color-bg-average{background-color:#b56b0b!important}.theme-light .color-bg-bad{background-color:#a61c1c!important}.theme-light .color-bg-label{background-color:#2c2c2c!important}.theme-light .color-bg-gold{background-color:#bd810b!important}.theme-light .color-border-black{border-color:#000!important}.theme-light .color-border-white{border-color:#e6e6e6!important}.theme-light .color-border-red{border-color:#c82121!important}.theme-light .color-border-orange{border-color:#e6630d!important}.theme-light .color-border-yellow{border-color:#e5c304!important}.theme-light .color-border-olive{border-color:#a3b816!important}.theme-light .color-border-green{border-color:#1d9f3b!important}.theme-light .color-border-teal{border-color:#00a39c!important}.theme-light .color-border-blue{border-color:#1e78bb!important}.theme-light .color-border-violet{border-color:#5a30b5!important}.theme-light .color-border-purple{border-color:#932eb4!important}.theme-light .color-border-pink{border-color:#db228a!important}.theme-light .color-border-brown{border-color:#955d39!important}.theme-light .color-border-grey{border-color:#e6e6e6!important}.theme-light .color-border-good{border-color:#529923!important}.theme-light .color-border-average{border-color:#da810e!important}.theme-light .color-border-bad{border-color:#c82121!important}.theme-light .color-border-label{border-color:#353535!important}.theme-light .color-border-gold{border-color:#e39b0d!important}.theme-light .Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#fff}.theme-light .Tabs--fill{height:100%}.theme-light .Section .Tabs{background-color:rgba(0,0,0,0)}.theme-light .Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.theme-light .Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.theme-light .Tabs--vertical{flex-direction:column;padding:.25em .25em .25em 0}.theme-light .Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.theme-light .Tabs--horizontal:last-child{margin-bottom:0}.theme-light .Tabs__Tab{flex-grow:0}.theme-light .Tabs--fluid .Tabs__Tab{flex-grow:1}.theme-light .Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(0,0,0,.5);min-height:2.25em;min-width:4em;transition:background-color 50ms ease-out}.theme-light .Tab:not(.Tab--selected):hover{background-color:rgba(0,0,0,.075);transition:background-color 0}.theme-light .Tab--selected{background-color:rgba(0,0,0,.125);color:#404040}.theme-light .Tab__text{flex-grow:1;margin:0 .5em}.theme-light .Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.theme-light .Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.theme-light .Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.theme-light .Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #000}.theme-light .Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-right-radius:.25em;border-bottom-right-radius:.25em}.theme-light .Tabs--vertical .Tab--selected{border-left:.1666666667em solid #000}.theme-light .Tab--selected.Tab--color--black{color:#404040}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#000}.theme-light .Tabs--vertical .Tab--selected.Tab--color--black{border-left-color:#000}.theme-light .Tab--selected.Tab--color--white{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--white{border-left-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--red{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--red{border-left-color:#c82121}.theme-light .Tab--selected.Tab--color--orange{color:#f48942}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#e6630d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--orange{border-left-color:#e6630d}.theme-light .Tab--selected.Tab--color--yellow{color:#fcdd33}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#e5c304}.theme-light .Tabs--vertical .Tab--selected.Tab--color--yellow{border-left-color:#e5c304}.theme-light .Tab--selected.Tab--color--olive{color:#d0e732}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#a3b816}.theme-light .Tabs--vertical .Tab--selected.Tab--color--olive{border-left-color:#a3b816}.theme-light .Tab--selected.Tab--color--green{color:#33da5a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#1d9f3b}.theme-light .Tabs--vertical .Tab--selected.Tab--color--green{border-left-color:#1d9f3b}.theme-light .Tab--selected.Tab--color--teal{color:#00faef}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00a39c}.theme-light .Tabs--vertical .Tab--selected.Tab--color--teal{border-left-color:#00a39c}.theme-light .Tab--selected.Tab--color--blue{color:#419ce1}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#1e78bb}.theme-light .Tabs--vertical .Tab--selected.Tab--color--blue{border-left-color:#1e78bb}.theme-light .Tab--selected.Tab--color--violet{color:#7f58d3}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#5a30b5}.theme-light .Tabs--vertical .Tab--selected.Tab--color--violet{border-left-color:#5a30b5}.theme-light .Tab--selected.Tab--color--purple{color:#b455d4}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#932eb4}.theme-light .Tabs--vertical .Tab--selected.Tab--color--purple{border-left-color:#932eb4}.theme-light .Tab--selected.Tab--color--pink{color:#e558a7}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#db228a}.theme-light .Tabs--vertical .Tab--selected.Tab--color--pink{border-left-color:#db228a}.theme-light .Tab--selected.Tab--color--brown{color:#c0825a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#955d39}.theme-light .Tabs--vertical .Tab--selected.Tab--color--brown{border-left-color:#955d39}.theme-light .Tab--selected.Tab--color--grey{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--grey{border-left-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--good{color:#77d23b}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#529923}.theme-light .Tabs--vertical .Tab--selected.Tab--color--good{border-left-color:#529923}.theme-light .Tab--selected.Tab--color--average{color:#f3a23a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#da810e}.theme-light .Tabs--vertical .Tab--selected.Tab--color--average{border-left-color:#da810e}.theme-light .Tab--selected.Tab--color--bad{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--bad{border-left-color:#c82121}.theme-light .Tab--selected.Tab--color--label{color:#686868}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#353535}.theme-light .Tabs--vertical .Tab--selected.Tab--color--label{border-left-color:#353535}.theme-light .Tab--selected.Tab--color--gold{color:#f4b73f}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--gold{border-bottom-color:#e39b0d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--gold{border-left-color:#e39b0d}.theme-light .Section{position:relative;margin-bottom:.5em;background-color:#fff;box-sizing:border-box}.theme-light .Section:last-child{margin-bottom:0}.theme-light .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #fff}.theme-light .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#000}.theme-light .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-light .Section__rest{position:relative}.theme-light .Section__content{padding:.66em .5em}.theme-light .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-light .Section--fill{display:flex;flex-direction:column;height:100%}.theme-light .Section--fill>.Section__rest{flex-grow:1}.theme-light .Section--fill>.Section__rest>.Section__content{height:100%}.theme-light .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-light .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-light .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-light .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-light .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-light .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-light .Section .Section:first-child{margin-top:-.5em}.theme-light .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-light .Section .Section .Section .Section__titleText{font-size:1em}.theme-light .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-light .Button:last-child{margin-right:0;margin-bottom:0}.theme-light .Button .fa,.theme-light .Button .fas,.theme-light .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-light .Button--hasContent .fa,.theme-light .Button--hasContent .fas,.theme-light .Button--hasContent .far{margin-right:.25em}.theme-light .Button--hasContent.Button--iconRight .fa,.theme-light .Button--hasContent.Button--iconRight .fas,.theme-light .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-light .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-light .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-light .Button--circular{border-radius:50%}.theme-light .Button--compact{padding:0 .25em;line-height:1.333em}.theme-light .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-light .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-light .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--black:hover{background-color:#101010;color:#fff}.theme-light .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-light .Button--color--white{background-color:#bfbfbf;color:#000;transition:color .2s,background-color .2s}.theme-light .Button--color--white:hover{background-color:#e7e7e7;color:#000}.theme-light .Button--color--white--translucent{background-color:rgba(191,191,191,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--white--translucent:hover{background-color:rgba(231,231,231,.5);color:#fff}.theme-light .Button--color--red{background-color:#a61c1c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--red:hover{background-color:#cb3030;color:#fff}.theme-light .Button--color--red--translucent{background-color:rgba(166,28,28,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--red--translucent:hover{background-color:rgba(203,48,48,.5);color:#fff}.theme-light .Button--color--orange{background-color:#c0530b;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--orange:hover{background-color:#e76d1d;color:#fff}.theme-light .Button--color--orange--translucent{background-color:rgba(192,83,11,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--orange--translucent:hover{background-color:rgba(231,109,29,.5);color:#fff}.theme-light .Button--color--yellow{background-color:#bfa303;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--yellow:hover{background-color:#e7c714;color:#fff}.theme-light .Button--color--yellow--translucent{background-color:rgba(191,163,3,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--yellow--translucent:hover{background-color:rgba(231,199,20,.5);color:#fff}.theme-light .Button--color--olive{background-color:#889912;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--olive:hover{background-color:#a9bc25;color:#fff}.theme-light .Button--color--olive--translucent{background-color:rgba(136,153,18,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--olive--translucent:hover{background-color:rgba(169,188,37,.5);color:#fff}.theme-light .Button--color--green{background-color:#188532;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--green:hover{background-color:#2ba648;color:#fff}.theme-light .Button--color--green--translucent{background-color:rgba(24,133,50,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--green--translucent:hover{background-color:rgba(43,166,72,.5);color:#fff}.theme-light .Button--color--teal{background-color:#008882;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--teal:hover{background-color:#10a9a2;color:#fff}.theme-light .Button--color--teal--translucent{background-color:rgba(0,136,130,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--teal--translucent:hover{background-color:rgba(16,169,162,.5);color:#fff}.theme-light .Button--color--blue{background-color:#19649c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--blue:hover{background-color:#2c81c0;color:#fff}.theme-light .Button--color--blue--translucent{background-color:rgba(25,100,156,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--blue--translucent:hover{background-color:rgba(44,129,192,.5);color:#fff}.theme-light .Button--color--violet{background-color:#4b2897;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--violet:hover{background-color:#653db9;color:#fff}.theme-light .Button--color--violet--translucent{background-color:rgba(75,40,151,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--violet--translucent:hover{background-color:rgba(101,61,185,.5);color:#fff}.theme-light .Button--color--purple{background-color:#7a2696;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--purple:hover{background-color:#9a3bb9;color:#fff}.theme-light .Button--color--purple--translucent{background-color:rgba(122,38,150,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--purple--translucent:hover{background-color:rgba(154,59,185,.5);color:#fff}.theme-light .Button--color--pink{background-color:#b61d73;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--pink:hover{background-color:#d93591;color:#fff}.theme-light .Button--color--pink--translucent{background-color:rgba(182,29,115,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--pink--translucent:hover{background-color:rgba(217,53,145,.5);color:#fff}.theme-light .Button--color--brown{background-color:#7c4d2f;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--brown:hover{background-color:#9c6745;color:#fff}.theme-light .Button--color--brown--translucent{background-color:rgba(124,77,47,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--brown--translucent:hover{background-color:rgba(156,103,69,.5);color:#fff}.theme-light .Button--color--grey{background-color:#bfbfbf;color:#000;transition:color .2s,background-color .2s}.theme-light .Button--color--grey:hover{background-color:#e7e7e7;color:#000}.theme-light .Button--color--grey--translucent{background-color:rgba(191,191,191,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--grey--translucent:hover{background-color:rgba(231,231,231,.5);color:#fff}.theme-light .Button--color--good{background-color:#44801d;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--good:hover{background-color:#5d9f31;color:#fff}.theme-light .Button--color--good--translucent{background-color:rgba(68,128,29,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--good--translucent:hover{background-color:rgba(93,159,49,.5);color:#fff}.theme-light .Button--color--average{background-color:#b56b0b;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--average:hover{background-color:#dc891d;color:#fff}.theme-light .Button--color--average--translucent{background-color:rgba(181,107,11,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--average--translucent:hover{background-color:rgba(220,137,29,.5);color:#fff}.theme-light .Button--color--bad{background-color:#a61c1c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--bad:hover{background-color:#cb3030;color:#fff}.theme-light .Button--color--bad--translucent{background-color:rgba(166,28,28,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--bad--translucent:hover{background-color:rgba(203,48,48,.5);color:#fff}.theme-light .Button--color--label{background-color:#2c2c2c;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--label:hover{background-color:#424242;color:#fff}.theme-light .Button--color--label--translucent{background-color:rgba(44,44,44,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--label--translucent:hover{background-color:rgba(66,66,66,.5);color:#fff}.theme-light .Button--color--gold{background-color:#bd810b;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--gold:hover{background-color:#e5a11c;color:#fff}.theme-light .Button--color--gold--translucent{background-color:rgba(189,129,11,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--gold--translucent:hover{background-color:rgba(229,161,28,.5);color:#fff}.theme-light .Button--color--transparent{background-color:rgba(238,238,238,0);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--transparent:hover{background-color:rgba(255,255,255,.81);color:#000}.theme-light .Button--color--default{background-color:#bbb;color:#000;transition:color .2s,background-color .2s}.theme-light .Button--color--default:hover{background-color:#e3e3e3;color:#000}.theme-light .Button--color--default--translucent{background-color:rgba(251,251,251,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--default--translucent:hover{background-color:rgba(254,254,254,.5);color:#fff}.theme-light .Button--color--caution{background-color:#be6209;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--caution:hover{background-color:#e67f1a;color:#fff}.theme-light .Button--color--caution--translucent{background-color:rgba(190,98,9,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--caution--translucent:hover{background-color:rgba(230,127,26,.5);color:#fff}.theme-light .Button--color--danger{background-color:#9a9d00;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--color--danger:hover{background-color:#bec110;color:#fff}.theme-light .Button--color--danger--translucent{background-color:rgba(154,157,0,.33);color:rgba(0,0,0,.5);transition:color .2s,background-color .2s}.theme-light .Button--color--danger--translucent:hover{background-color:rgba(190,193,16,.5);color:#fff}.theme-light .Button--disabled{background-color:#363636!important;color:rgba(0,0,0,.75)!important}.theme-light .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(0,0,0,.5)!important}.theme-light .Button--selected,.theme-light .Button--selected--translucent{background-color:#0668b8;color:#fff;transition:color .2s,background-color .2s}.theme-light .Button--selected:hover,.theme-light .Button--selected--translucent:hover{background-color:#1785df;color:#fff}.theme-light .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#353535;background-color:#e6e6e6;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-light .NumberInput--fluid{display:block}.theme-light .NumberInput__content{margin-left:.5em}.theme-light .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-light .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #353535;background-color:#353535}.theme-light .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#e6e6e6;color:#000;text-align:right}.theme-light .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#000;background-color:#e6e6e6;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-light .Input--disabled{color:#777;border-color:#000;border-color:rgba(0,0,0,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-light .Input--fluid{display:block;width:auto}.theme-light .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-light .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#000;color:inherit}.theme-light .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-light .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-light .TextArea{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;background-color:#e6e6e6;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-light .TextArea--fluid{display:block;width:auto;height:auto}.theme-light .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-light .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-light .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-light .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-light .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-light .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-light .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-light .Knob__popupValue,.theme-light .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .Knob__popupValue--right{top:.25rem;right:-50%}.theme-light .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-light .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-light .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-light .Knob__ringFillPivot{transform:rotate(135deg)}.theme-light .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-light .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-light .Knob--color--black .Knob__ringFill{stroke:#000}.theme-light .Knob--color--white .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--red .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--orange .Knob__ringFill{stroke:#e6630d}.theme-light .Knob--color--yellow .Knob__ringFill{stroke:#e5c304}.theme-light .Knob--color--olive .Knob__ringFill{stroke:#a3b816}.theme-light .Knob--color--green .Knob__ringFill{stroke:#1d9f3b}.theme-light .Knob--color--teal .Knob__ringFill{stroke:#00a39c}.theme-light .Knob--color--blue .Knob__ringFill{stroke:#1e78bb}.theme-light .Knob--color--violet .Knob__ringFill{stroke:#5a30b5}.theme-light .Knob--color--purple .Knob__ringFill{stroke:#932eb4}.theme-light .Knob--color--pink .Knob__ringFill{stroke:#db228a}.theme-light .Knob--color--brown .Knob__ringFill{stroke:#955d39}.theme-light .Knob--color--grey .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--good .Knob__ringFill{stroke:#529923}.theme-light .Knob--color--average .Knob__ringFill{stroke:#da810e}.theme-light .Knob--color--bad .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--label .Knob__ringFill{stroke:#353535}.theme-light .Knob--color--gold .Knob__ringFill{stroke:#e39b0d}.theme-light .Slider:not(.Slider__disabled){cursor:e-resize}.theme-light .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-light .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #000}.theme-light .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #000}.theme-light .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-light .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-light .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-light .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-light .ProgressBar--color--default{border:.0833333333em solid #bfbfbf}.theme-light .ProgressBar--color--default .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--disabled{border:1px solid #999}.theme-light .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-light .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-light .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-light .ProgressBar--color--white{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--white .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--red{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--red .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--orange{border:.0833333333em solid #c0530b!important}.theme-light .ProgressBar--color--orange .ProgressBar__fill{background-color:#c0530b}.theme-light .ProgressBar--color--yellow{border:.0833333333em solid #bfa303!important}.theme-light .ProgressBar--color--yellow .ProgressBar__fill{background-color:#bfa303}.theme-light .ProgressBar--color--olive{border:.0833333333em solid #889912!important}.theme-light .ProgressBar--color--olive .ProgressBar__fill{background-color:#889912}.theme-light .ProgressBar--color--green{border:.0833333333em solid #188532!important}.theme-light .ProgressBar--color--green .ProgressBar__fill{background-color:#188532}.theme-light .ProgressBar--color--teal{border:.0833333333em solid #008882!important}.theme-light .ProgressBar--color--teal .ProgressBar__fill{background-color:#008882}.theme-light .ProgressBar--color--blue{border:.0833333333em solid #19649c!important}.theme-light .ProgressBar--color--blue .ProgressBar__fill{background-color:#19649c}.theme-light .ProgressBar--color--violet{border:.0833333333em solid #4b2897!important}.theme-light .ProgressBar--color--violet .ProgressBar__fill{background-color:#4b2897}.theme-light .ProgressBar--color--purple{border:.0833333333em solid #7a2696!important}.theme-light .ProgressBar--color--purple .ProgressBar__fill{background-color:#7a2696}.theme-light .ProgressBar--color--pink{border:.0833333333em solid #b61d73!important}.theme-light .ProgressBar--color--pink .ProgressBar__fill{background-color:#b61d73}.theme-light .ProgressBar--color--brown{border:.0833333333em solid #7c4d2f!important}.theme-light .ProgressBar--color--brown .ProgressBar__fill{background-color:#7c4d2f}.theme-light .ProgressBar--color--grey{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--grey .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--good{border:.0833333333em solid #44801d!important}.theme-light .ProgressBar--color--good .ProgressBar__fill{background-color:#44801d}.theme-light .ProgressBar--color--average{border:.0833333333em solid #b56b0b!important}.theme-light .ProgressBar--color--average .ProgressBar__fill{background-color:#b56b0b}.theme-light .ProgressBar--color--bad{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--bad .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--label{border:.0833333333em solid #2c2c2c!important}.theme-light .ProgressBar--color--label .ProgressBar__fill{background-color:#2c2c2c}.theme-light .ProgressBar--color--gold{border:.0833333333em solid #bd810b!important}.theme-light .ProgressBar--color--gold .ProgressBar__fill{background-color:#bd810b}.theme-light .Chat{color:#000}.theme-light .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-light .Chat__badge:before{content:"x"}.theme-light .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-light .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-light .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-light .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#fff}.theme-light .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-light .Chat__highlight{color:#000}.theme-light .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-light .ChatMessage{word-wrap:break-word}.theme-light .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-light .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-light html,.theme-light body{scrollbar-color:#a7a7a7 #f2f2f2}.theme-light .Layout,.theme-light .Layout *{scrollbar-base-color:#f2f2f2;scrollbar-face-color:#d6d6d6;scrollbar-3dlight-color:#eee;scrollbar-highlight-color:#eee;scrollbar-track-color:#f2f2f2;scrollbar-arrow-color:#777;scrollbar-shadow-color:#d6d6d6}.theme-light .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-light .Layout__content--flexRow{display:flex;flex-flow:row}.theme-light .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-light .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-light .Layout__content--noMargin{margin:0}.theme-light .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#000;background-color:#eee;background-image:linear-gradient(to bottom,#eee,#eee)}.theme-light .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-light .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-light .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-light .Window__contentPadding:after{height:0}.theme-light .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-light .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(252,252,252,.25);pointer-events:none}.theme-light .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-light .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-light .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-light .TitleBar{background-color:#eee;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-light .TitleBar__clickable{color:rgba(0,0,0,.5);background-color:#eee;transition:color .25s,background-color .25s}.theme-light .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-light .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(0,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-light .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-light .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-light .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-light .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-light html,.theme-light body{padding:0;margin:0;height:100%;color:#000}.theme-light body{background:#fff;font-family:Verdana,sans-serif;font-size:13px;line-height:1.2;overflow-x:hidden;overflow-y:scroll;word-wrap:break-word}.theme-light img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}.theme-light img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}.theme-light a{color:#00f}.theme-light a.popt{text-decoration:none}.theme-light .popup{position:fixed;top:50%;left:50%;background:#ddd}.theme-light .popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.theme-light .popup .close:hover{background:#999}.theme-light .popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.theme-light .popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.theme-light .popup input[type=text]:hover,.theme-light .popup input[type=text]:active,.theme-light .popup input[type=text]:focus{border-color:green}.theme-light .popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.theme-light .popup input[type=submit]:hover,.theme-light .popup input[type=submit]:focus,.theme-light .popup input[type=submit]:active{background:#aaa;cursor:pointer}.theme-light .changeFont{padding:10px}.theme-light .changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.theme-light .changeFont a:hover{background:#ccc}.theme-light .highlightPopup{padding:10px;text-align:center}.theme-light .highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.theme-light .highlightPopup input.highlightColor{background-color:#ff0}.theme-light .highlightPopup input.highlightTermSubmit{margin-top:5px}.theme-light .contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.theme-light .contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.theme-light .contextMenu a:hover{background-color:#ccc}.theme-light .filterMessages{padding:5px}.theme-light .filterMessages div{padding:2px 0}.theme-light .icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.theme-light .motd{color:#638500;font-family:Verdana,sans-serif;white-space:normal}.theme-light .motd h1,.theme-light .motd h2,.theme-light .motd h3,.theme-light .motd h4,.theme-light .motd h5,.theme-light .motd h6{color:#638500;text-decoration:underline}.theme-light .motd a,.theme-light .motd a:link,.theme-light .motd a:active,.theme-light .motd a:hover{color:#638500}.theme-light .italic,.theme-light .italics,.theme-light .emote{font-style:italic}.theme-light .highlight{background:#ff0}.theme-light h1,.theme-light h2,.theme-light h3,.theme-light h4,.theme-light h5,.theme-light h6{color:#00f;font-family:Georgia,Verdana,sans-serif}.theme-light em{font-style:normal;font-weight:700}.theme-light .darkmblue{color:#00f}.theme-light .prefix,.theme-light .ooc{font-weight:700}.theme-light .looc{color:#69c;font-weight:700}.theme-light .adminobserverooc{color:#09c;font-weight:700}.theme-light .adminooc{color:#b82e00;font-weight:700}.theme-light .adminobserver{color:#960;font-weight:700}.theme-light .admin{color:#386aff;font-weight:700}.theme-light .adminsay{color:#9611d4;font-weight:700}.theme-light .mentorhelp{color:#07b;font-weight:700}.theme-light .adminhelp{color:#a00;font-weight:700}.theme-light .playerreply{color:#80b;font-weight:700}.theme-light .pmsend{color:#00f}.theme-light .debug{color:#6d2f83}.theme-light .name,.theme-light .yell{font-weight:700}.theme-light .siliconsay{font-family:Courier New,Courier,monospace}.theme-light .deadsay{color:#5c00e6}.theme-light .radio{color:#408010}.theme-light .deptradio{color:#939}.theme-light .comradio{color:#204090}.theme-light .syndradio{color:#6d3f40}.theme-light .dsquadradio{color:#686868}.theme-light .resteamradio{color:#18bc46}.theme-light .airadio{color:#f0f}.theme-light .centradio{color:#5c5c7c}.theme-light .secradio{color:#a30000}.theme-light .engradio{color:#a66300}.theme-light .medradio{color:#009190}.theme-light .sciradio{color:#939}.theme-light .supradio{color:#7f6539}.theme-light .srvradio{color:#80a000}.theme-light .proradio{color:#e3027a}.theme-light .admin_channel{color:#9a04d1;font-weight:700}.theme-light .all_admin_ping{color:#12a5f4;font-weight:700;font-size:120%;text-align:center}.theme-light .mentor_channel{color:#775bff;font-weight:700}.theme-light .mentor_channel_admin{color:#a35cff;font-weight:700}.theme-light .djradio{color:#630}.theme-light .binaryradio{color:#0b0050;font-family:Courier New,Courier,monospace}.theme-light .mommiradio{color:navy}.theme-light .alert{color:red}.theme-light h1.alert,.theme-light h2.alert{color:#000}.theme-light .ghostalert{color:#5c00e6;font-style:italic;font-weight:700}.theme-light .emote{font-style:italic}.theme-light .selecteddna{color:#fff;background-color:#001b1b}.theme-light .attack{color:red}.theme-light .moderate{color:#c00}.theme-light .disarm{color:#900}.theme-light .passive{color:#600}.theme-light .warning{color:red;font-style:italic}.theme-light .boldwarning{color:red;font-style:italic;font-weight:700}.theme-light .danger{color:red;font-weight:700}.theme-light .userdanger{color:red;font-weight:700;font-size:120%}.theme-light .biggerdanger{color:red;font-weight:700;font-size:150%}.theme-light .notice{color:#009}.theme-light .boldnotice{color:#009;font-weight:700}.theme-light .suicide{color:#ff5050;font-style:italic}.theme-light .green{color:#03bb39}.theme-light .pr_announce{color:#228b22;font-weight:700}.theme-light .boldannounceic,.theme-light .boldannounceooc{color:red;font-weight:700}.theme-light .greenannounce{color:#0f0;font-weight:700}.theme-light .alien{color:#543354}.theme-light .noticealien{color:#00c000}.theme-light .alertalien{color:#00c000;font-weight:700}.theme-light .terrorspider{color:#320e32}.theme-light .dantalion{color:#6a2148}.theme-light .chaosverygood{color:#19e0c0;font-weight:700;font-size:120%}.theme-light .chaosgood{color:#19e0c0;font-weight:700}.theme-light .chaosneutral{color:#479ac0;font-weight:700}.theme-light .chaosbad{color:#9047c0;font-weight:700}.theme-light .chaosverybad{color:#9047c0;font-weight:700;font-size:120%}.theme-light .sinister{color:purple;font-weight:700;font-style:italic}.theme-light .blob{color:#006221;font-weight:700;font-style:italic}.theme-light .confirm{color:#00af3b}.theme-light .rose{color:#ff5050}.theme-light .sans{font-family:Comic Sans MS,cursive,sans-serif}.theme-light .wingdings{font-family:Wingdings,Webdings}.theme-light .robot{font-family:OCR-A,monospace;font-size:1.15em;font-weight:700}.theme-light .ancient{color:#008b8b;font-style:italic}.theme-light .newscaster{color:maroon}.theme-light .mod{color:#735638;font-weight:700}.theme-light .modooc{color:#184880;font-weight:700}.theme-light .adminmod{color:#402a14;font-weight:700}.theme-light .tajaran{color:#803b56}.theme-light .skrell{color:#00ced1}.theme-light .solcom{color:#22228b}.theme-light .com_srus{color:#7c4848}.theme-light .soghun{color:#228b22}.theme-light .changeling{color:purple}.theme-light .vox{color:#a0a}.theme-light .diona{color:#804000;font-weight:700}.theme-light .trinary{color:#727272}.theme-light .kidan{color:#664205}.theme-light .slime{color:#07a}.theme-light .drask{color:#a3d4eb;font-family:Arial Black}.theme-light .moth{color:#869b29;font-family:Copperplate}.theme-light .clown{color:red}.theme-light .vulpkanin{color:#b97a57}.theme-light .abductor{color:purple;font-style:italic}.theme-light .mind_control{color:#a00d6f;font-size:3;font-weight:700;font-style:italic}.theme-light .rough{font-family:Trebuchet MS,cursive,sans-serif}.theme-light .say_quote{font-family:Georgia,Verdana,sans-serif}.theme-light .cult{color:purple;font-weight:700;font-style:italic}.theme-light .cultspeech{color:#7f0000;font-style:italic}.theme-light .cultitalic{color:#960000;font-style:italic}.theme-light .cultlarge{color:#960000;font-weight:700;font-size:120%}.theme-light .narsie{color:#960000;font-weight:700;font-size:300%}.theme-light .narsiesmall{color:#960000;font-weight:700;font-size:200%}.theme-light .zombie{color:#7c4848}.theme-light .zombielarge{color:#7c4848;font-weight:700;font-size:120%}.theme-light .interface{color:#303}.theme-light .big{font-size:150%}.theme-light .reallybig{font-size:175%}.theme-light .greentext{color:#0f0;font-size:150%}.theme-light .redtext{color:red;font-size:150%}.theme-light .bold{font-weight:700}.theme-light .his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.theme-light .center{text-align:center}.theme-light .red{color:red}.theme-light .purple{color:#5e2d79}.theme-light .skeleton{color:#585858;font-weight:700;font-style:italic}.theme-light .gutter{color:#7092be;font-family:Trebuchet MS,cursive,sans-serif}.theme-light .orange{color:orange}.theme-light .orangei{color:orange;font-style:italic}.theme-light .orangeb{color:orange;font-weight:700}.theme-light .resonate{color:#298f85}.theme-light .healthscan_oxy{color:#0074bd}.theme-light .revennotice{color:#1d2953}.theme-light .revenboldnotice{color:#1d2953;font-weight:700}.theme-light .revenbignotice{color:#1d2953;font-weight:700;font-size:120%}.theme-light .revenminor{color:#823abb}.theme-light .revenwarning{color:#760fbb;font-style:italic}.theme-light .revendanger{color:#760fbb;font-weight:700;font-size:120%}.theme-light .specialnoticebold{color:#36525e;font-weight:700;font-size:120%}.theme-light .specialnotice{color:#36525e;font-size:120%}.theme-light .medal{font-weight:700}.theme-light .good{color:green}.theme-light .average{color:#ff8000}.theme-light .bad{color:red}.theme-light .italics,.theme-light .talkinto{font-style:italic}.theme-light .whisper{font-style:italic;color:#333}.theme-light .recruit{color:#5c00e6;font-weight:700;font-style:italic}.theme-light .memo{color:#638500;text-align:center}.theme-light .memoedit{text-align:center;font-size:75%}.theme-light .connectionClosed,.theme-light .fatalError{background:red;color:#fff;padding:5px}.theme-light .connectionClosed.restored{background:green}.theme-light .internal.boldnshit{color:#00f;font-weight:700}.theme-light .rebooting{background:#2979af;color:#fff;padding:5px}.theme-light .rebooting a{color:#fff!important;text-decoration-color:#fff!important}.theme-light .text-normal{font-weight:400;font-style:normal}.theme-light .hidden{display:none;visibility:hidden}.theme-light .colossus{color:#7f282a;font-size:175%}.theme-light .hierophant{color:#609;font-weight:700;font-style:italic}.theme-light .hierophant_warning{color:#609;font-style:italic}.theme-light .emoji{max-height:16px;max-width:16px}.theme-light .adminticket{color:#3e7336;font-weight:700}.theme-light .adminticketalt{color:#014c8a;font-weight:700}.theme-light span.body .codephrases{color:#00f}.theme-light span.body .coderesponses{color:red}.theme-light .announcement h1,.theme-light .announcement h2{color:#000;margin:8pt 0;line-height:1.2}.theme-light .announcement p{color:#d82020;line-height:1.3}.theme-light .announcement.minor h1{font-size:180%}.theme-light .announcement.minor h2{font-size:170%}.theme-light .announcement.sec h1{color:red;font-size:180%;font-family:Verdana,sans-serif}.theme-light .bolditalics{font-style:italic;font-weight:700}.theme-light .boxed_message{background:#f7fcff;border:1px solid #111a26;margin:.5em;padding:.5em .75em;text-align:center}.theme-light .boxed_message.left_align_text{text-align:left}.theme-light .boxed_message.red_border{background:#fff7f7;border-color:#a00}.theme-light .boxed_message.green_border{background:#f7fff7;border-color:#0f0}.theme-light .boxed_message.purple_border{background:#fdf7ff;border-color:#a0f}.theme-light .boxed_message.notice_border{background:#f7fdff;border-color:#0000bf}.theme-light .boxed_message.thick_border{border-width:thick}.theme-light .oxygen{color:#006adb}.theme-light .nitrogen{color:#d00a06}.theme-light .carbon_dioxide{color:#1f1f1f}.theme-light .plasma{color:#853c00}.theme-light .sleeping_agent{color:#e82f2c}.theme-light .agent_b{color:#004d4d}.theme-ntos .color-black{color:#1a1a1a!important}.theme-ntos .color-white{color:#fff!important}.theme-ntos .color-red{color:#df3e3e!important}.theme-ntos .color-orange{color:#f37f33!important}.theme-ntos .color-yellow{color:#fbda21!important}.theme-ntos .color-olive{color:#cbe41c!important}.theme-ntos .color-green{color:#25ca4c!important}.theme-ntos .color-teal{color:#00d6cc!important}.theme-ntos .color-blue{color:#2e93de!important}.theme-ntos .color-violet{color:#7349cf!important}.theme-ntos .color-purple{color:#ad45d0!important}.theme-ntos .color-pink{color:#e34da1!important}.theme-ntos .color-brown{color:#b97447!important}.theme-ntos .color-grey{color:#848484!important}.theme-ntos .color-good{color:#68c22d!important}.theme-ntos .color-average{color:#f29a29!important}.theme-ntos .color-bad{color:#df3e3e!important}.theme-ntos .color-label{color:#8b9bb0!important}.theme-ntos .color-gold{color:#f3b22f!important}.theme-ntos .color-bg-black{background-color:#000!important}.theme-ntos .color-bg-white{background-color:#d9d9d9!important}.theme-ntos .color-bg-red{background-color:#bd2020!important}.theme-ntos .color-bg-orange{background-color:#d95e0c!important}.theme-ntos .color-bg-yellow{background-color:#d9b804!important}.theme-ntos .color-bg-olive{background-color:#9aad14!important}.theme-ntos .color-bg-green{background-color:#1b9638!important}.theme-ntos .color-bg-teal{background-color:#009a93!important}.theme-ntos .color-bg-blue{background-color:#1c71b1!important}.theme-ntos .color-bg-violet{background-color:#552dab!important}.theme-ntos .color-bg-purple{background-color:#8b2baa!important}.theme-ntos .color-bg-pink{background-color:#cf2082!important}.theme-ntos .color-bg-brown{background-color:#8c5836!important}.theme-ntos .color-bg-grey{background-color:#646464!important}.theme-ntos .color-bg-good{background-color:#4d9121!important}.theme-ntos .color-bg-average{background-color:#cd7a0d!important}.theme-ntos .color-bg-bad{background-color:#bd2020!important}.theme-ntos .color-bg-label{background-color:#657a94!important}.theme-ntos .color-bg-gold{background-color:#d6920c!important}.theme-ntos .color-border-black{border-color:#1a1a1a!important}.theme-ntos .color-border-white{border-color:#fff!important}.theme-ntos .color-border-red{border-color:#df3e3e!important}.theme-ntos .color-border-orange{border-color:#f37f33!important}.theme-ntos .color-border-yellow{border-color:#fbda21!important}.theme-ntos .color-border-olive{border-color:#cbe41c!important}.theme-ntos .color-border-green{border-color:#25ca4c!important}.theme-ntos .color-border-teal{border-color:#00d6cc!important}.theme-ntos .color-border-blue{border-color:#2e93de!important}.theme-ntos .color-border-violet{border-color:#7349cf!important}.theme-ntos .color-border-purple{border-color:#ad45d0!important}.theme-ntos .color-border-pink{border-color:#e34da1!important}.theme-ntos .color-border-brown{border-color:#b97447!important}.theme-ntos .color-border-grey{border-color:#848484!important}.theme-ntos .color-border-good{border-color:#68c22d!important}.theme-ntos .color-border-average{border-color:#f29a29!important}.theme-ntos .color-border-bad{border-color:#df3e3e!important}.theme-ntos .color-border-label{border-color:#8b9bb0!important}.theme-ntos .color-border-gold{border-color:#f3b22f!important}.theme-ntos .Section{position:relative;margin-bottom:.5em;background-color:#121922;box-sizing:border-box}.theme-ntos .Section:last-child{margin-bottom:0}.theme-ntos .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.theme-ntos .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-ntos .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-ntos .Section__rest{position:relative}.theme-ntos .Section__content{padding:.66em .5em}.theme-ntos .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-ntos .Section--fill{display:flex;flex-direction:column;height:100%}.theme-ntos .Section--fill>.Section__rest{flex-grow:1}.theme-ntos .Section--fill>.Section__rest>.Section__content{height:100%}.theme-ntos .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-ntos .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-ntos .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-ntos .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-ntos .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-ntos .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-ntos .Section .Section:first-child{margin-top:-.5em}.theme-ntos .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-ntos .Section .Section .Section .Section__titleText{font-size:1em}.theme-ntos .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-ntos .Button:last-child{margin-right:0;margin-bottom:0}.theme-ntos .Button .fa,.theme-ntos .Button .fas,.theme-ntos .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-ntos .Button--hasContent .fa,.theme-ntos .Button--hasContent .fas,.theme-ntos .Button--hasContent .far{margin-right:.25em}.theme-ntos .Button--hasContent.Button--iconRight .fa,.theme-ntos .Button--hasContent.Button--iconRight .fas,.theme-ntos .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-ntos .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-ntos .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-ntos .Button--circular{border-radius:50%}.theme-ntos .Button--compact{padding:0 .25em;line-height:1.333em}.theme-ntos .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-ntos .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-ntos .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--black:hover{background-color:#101010;color:#fff}.theme-ntos .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-ntos .Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.theme-ntos .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-ntos .Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.theme-ntos .Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-ntos .Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-ntos .Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.theme-ntos .Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-ntos .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-ntos .Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-ntos .Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-ntos .Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.theme-ntos .Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-ntos .Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.theme-ntos .Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-ntos .Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.theme-ntos .Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-ntos .Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.theme-ntos .Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-ntos .Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.theme-ntos .Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-ntos .Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.theme-ntos .Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-ntos .Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.theme-ntos .Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-ntos .Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.theme-ntos .Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-ntos .Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.theme-ntos .Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-ntos .Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.theme-ntos .Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-ntos .Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.theme-ntos .Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-ntos .Button--color--label{background-color:#657a94;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--label:hover{background-color:#8a9aae;color:#fff}.theme-ntos .Button--color--label--translucent{background-color:rgba(101,122,148,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--label--translucent:hover{background-color:rgba(138,154,174,.5);color:#fff}.theme-ntos .Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-ntos .Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.theme-ntos .Button--color--transparent{background-color:rgba(27,38,51,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--transparent:hover{background-color:rgba(44,57,73,.81);color:#fff}.theme-ntos .Button--color--default{background-color:#384e68;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--default:hover{background-color:#4f6885;color:#fff}.theme-ntos .Button--color--default--translucent{background-color:rgba(35,47,60,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--default--translucent:hover{background-color:rgba(56,69,84,.5);color:#fff}.theme-ntos .Button--color--caution{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-ntos .Button--color--caution:hover{background-color:#f5d523;color:#000}.theme-ntos .Button--color--caution--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--caution--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-ntos .Button--color--danger{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--color--danger:hover{background-color:#d93f3f;color:#fff}.theme-ntos .Button--color--danger--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-ntos .Button--color--danger--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-ntos .Button--disabled{background-color:#999!important;color:rgba(255,255,255,.75)!important}.theme-ntos .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.theme-ntos .Button--selected,.theme-ntos .Button--selected--translucent{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-ntos .Button--selected:hover,.theme-ntos .Button--selected--translucent:hover{background-color:#2fb94f;color:#fff}.theme-ntos .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-ntos .NumberInput--fluid{display:block}.theme-ntos .NumberInput__content{margin-left:.5em}.theme-ntos .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-ntos .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.theme-ntos .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-ntos .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-ntos .Input--disabled{color:#777;border-color:#848484;border-color:rgba(132,132,132,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-ntos .Input--fluid{display:block;width:auto}.theme-ntos .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-ntos .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-ntos .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-ntos .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-ntos .TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-ntos .TextArea--fluid{display:block;width:auto;height:auto}.theme-ntos .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-ntos .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-ntos .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-ntos .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-ntos .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-ntos .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-ntos .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-ntos .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-ntos .Knob__popupValue,.theme-ntos .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-ntos .Knob__popupValue--right{top:.25rem;right:-50%}.theme-ntos .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-ntos .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-ntos .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-ntos .Knob__ringFillPivot{transform:rotate(135deg)}.theme-ntos .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-ntos .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-ntos .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-ntos .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-ntos .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-ntos .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-ntos .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-ntos .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-ntos .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-ntos .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-ntos .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-ntos .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-ntos .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-ntos .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-ntos .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-ntos .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-ntos .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-ntos .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-ntos .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-ntos .Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.theme-ntos .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-ntos .Slider:not(.Slider__disabled){cursor:e-resize}.theme-ntos .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-ntos .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-ntos .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-ntos .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-ntos .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-ntos .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-ntos .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-ntos .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-ntos .ProgressBar--color--default{border:.0833333333em solid #3e6189}.theme-ntos .ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.theme-ntos .ProgressBar--color--disabled{border:1px solid #999}.theme-ntos .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-ntos .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-ntos .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-ntos .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-ntos .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-ntos .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-ntos .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-ntos .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-ntos .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-ntos .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-ntos .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-ntos .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-ntos .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-ntos .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-ntos .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-ntos .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-ntos .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-ntos .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-ntos .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-ntos .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-ntos .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-ntos .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-ntos .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-ntos .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-ntos .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-ntos .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-ntos .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-ntos .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-ntos .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-ntos .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-ntos .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-ntos .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-ntos .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-ntos .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-ntos .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-ntos .ProgressBar--color--label{border:.0833333333em solid #657a94!important}.theme-ntos .ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.theme-ntos .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-ntos .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-ntos .Chat{color:#abc6ec}.theme-ntos .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-ntos .Chat__badge:before{content:"x"}.theme-ntos .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-ntos .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-ntos .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-ntos .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#121922}.theme-ntos .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-ntos .Chat__highlight{color:#000}.theme-ntos .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-ntos .ChatMessage{word-wrap:break-word}.theme-ntos .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-ntos .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-ntos html,.theme-ntos body{scrollbar-color:#2a3b4f #141d26}.theme-ntos .Layout,.theme-ntos .Layout *{scrollbar-base-color:#141d26;scrollbar-face-color:#2a3b4f;scrollbar-3dlight-color:#1b2633;scrollbar-highlight-color:#1b2633;scrollbar-track-color:#141d26;scrollbar-arrow-color:#7290b4;scrollbar-shadow-color:#2a3b4f}.theme-ntos .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-ntos .Layout__content--flexRow{display:flex;flex-flow:row}.theme-ntos .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-ntos .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-ntos .Layout__content--noMargin{margin:0}.theme-ntos .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#1b2633;background-image:linear-gradient(to bottom,#1b2633,#1b2633)}.theme-ntos .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-ntos .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-ntos .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-ntos .Window__contentPadding:after{height:0}.theme-ntos .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-ntos .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(50,63,78,.25);pointer-events:none}.theme-ntos .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-ntos .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-ntos .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-ntos .TitleBar{background-color:#1b2633;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-ntos .TitleBar__clickable{color:rgba(255,0,0,.5);background-color:#1b2633;transition:color .25s,background-color .25s}.theme-ntos .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-ntos .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-ntos .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-ntos .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-ntos .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-ntos .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-ntos .boxed_message{background:#1c242e;border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.theme-ntos .boxed_message.left_align_text{text-align:left}.theme-ntos .boxed_message.red_border{background:#2e1c1c;border-color:#a00}.theme-ntos .boxed_message.green_border{background:#1c2e22;border-color:#0f0}.theme-ntos .boxed_message.purple_border{background:#221c2e;border-color:#8000ff}.theme-ntos .boxed_message.notice_border{background:#1f2633;border-color:#6685f5}.theme-ntos .boxed_message.thick_border{border-width:thick}.theme-syndicate .color-black{color:#1a1a1a!important}.theme-syndicate .color-white{color:#fff!important}.theme-syndicate .color-red{color:#df3e3e!important}.theme-syndicate .color-orange{color:#f37f33!important}.theme-syndicate .color-yellow{color:#fbda21!important}.theme-syndicate .color-olive{color:#cbe41c!important}.theme-syndicate .color-green{color:#25ca4c!important}.theme-syndicate .color-teal{color:#00d6cc!important}.theme-syndicate .color-blue{color:#2e93de!important}.theme-syndicate .color-violet{color:#7349cf!important}.theme-syndicate .color-purple{color:#ad45d0!important}.theme-syndicate .color-pink{color:#e34da1!important}.theme-syndicate .color-brown{color:#b97447!important}.theme-syndicate .color-grey{color:#848484!important}.theme-syndicate .color-good{color:#68c22d!important}.theme-syndicate .color-average{color:#f29a29!important}.theme-syndicate .color-bad{color:#df3e3e!important}.theme-syndicate .color-label{color:#8b9bb0!important}.theme-syndicate .color-gold{color:#f3b22f!important}.theme-syndicate .color-bg-black{background-color:#000!important}.theme-syndicate .color-bg-white{background-color:#d9d9d9!important}.theme-syndicate .color-bg-red{background-color:#bd2020!important}.theme-syndicate .color-bg-orange{background-color:#d95e0c!important}.theme-syndicate .color-bg-yellow{background-color:#d9b804!important}.theme-syndicate .color-bg-olive{background-color:#9aad14!important}.theme-syndicate .color-bg-green{background-color:#1b9638!important}.theme-syndicate .color-bg-teal{background-color:#009a93!important}.theme-syndicate .color-bg-blue{background-color:#1c71b1!important}.theme-syndicate .color-bg-violet{background-color:#552dab!important}.theme-syndicate .color-bg-purple{background-color:#8b2baa!important}.theme-syndicate .color-bg-pink{background-color:#cf2082!important}.theme-syndicate .color-bg-brown{background-color:#8c5836!important}.theme-syndicate .color-bg-grey{background-color:#646464!important}.theme-syndicate .color-bg-good{background-color:#4d9121!important}.theme-syndicate .color-bg-average{background-color:#cd7a0d!important}.theme-syndicate .color-bg-bad{background-color:#bd2020!important}.theme-syndicate .color-bg-label{background-color:#657a94!important}.theme-syndicate .color-bg-gold{background-color:#d6920c!important}.theme-syndicate .color-border-black{border-color:#1a1a1a!important}.theme-syndicate .color-border-white{border-color:#fff!important}.theme-syndicate .color-border-red{border-color:#df3e3e!important}.theme-syndicate .color-border-orange{border-color:#f37f33!important}.theme-syndicate .color-border-yellow{border-color:#fbda21!important}.theme-syndicate .color-border-olive{border-color:#cbe41c!important}.theme-syndicate .color-border-green{border-color:#25ca4c!important}.theme-syndicate .color-border-teal{border-color:#00d6cc!important}.theme-syndicate .color-border-blue{border-color:#2e93de!important}.theme-syndicate .color-border-violet{border-color:#7349cf!important}.theme-syndicate .color-border-purple{border-color:#ad45d0!important}.theme-syndicate .color-border-pink{border-color:#e34da1!important}.theme-syndicate .color-border-brown{border-color:#b97447!important}.theme-syndicate .color-border-grey{border-color:#848484!important}.theme-syndicate .color-border-good{border-color:#68c22d!important}.theme-syndicate .color-border-average{border-color:#f29a29!important}.theme-syndicate .color-border-bad{border-color:#df3e3e!important}.theme-syndicate .color-border-label{border-color:#8b9bb0!important}.theme-syndicate .color-border-gold{border-color:#f3b22f!important}.theme-syndicate .Section{position:relative;margin-bottom:.5em;background-color:#2b0101;box-sizing:border-box}.theme-syndicate .Section:last-child{margin-bottom:0}.theme-syndicate .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #397439}.theme-syndicate .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-syndicate .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-syndicate .Section__rest{position:relative}.theme-syndicate .Section__content{padding:.66em .5em}.theme-syndicate .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-syndicate .Section--fill{display:flex;flex-direction:column;height:100%}.theme-syndicate .Section--fill>.Section__rest{flex-grow:1}.theme-syndicate .Section--fill>.Section__rest>.Section__content{height:100%}.theme-syndicate .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-syndicate .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-syndicate .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-syndicate .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-syndicate .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-syndicate .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-syndicate .Section .Section:first-child{margin-top:-.5em}.theme-syndicate .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-syndicate .Section .Section .Section .Section__titleText{font-size:1em}.theme-syndicate .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-syndicate .Button:last-child{margin-right:0;margin-bottom:0}.theme-syndicate .Button .fa,.theme-syndicate .Button .fas,.theme-syndicate .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-syndicate .Button--hasContent .fa,.theme-syndicate .Button--hasContent .fas,.theme-syndicate .Button--hasContent .far{margin-right:.25em}.theme-syndicate .Button--hasContent.Button--iconRight .fa,.theme-syndicate .Button--hasContent.Button--iconRight .fas,.theme-syndicate .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-syndicate .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-syndicate .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-syndicate .Button--circular{border-radius:50%}.theme-syndicate .Button--compact{padding:0 .25em;line-height:1.333em}.theme-syndicate .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-syndicate .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-syndicate .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--black:hover{background-color:#101010;color:#fff}.theme-syndicate .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-syndicate .Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-syndicate .Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.theme-syndicate .Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-syndicate .Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-syndicate .Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-syndicate .Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.theme-syndicate .Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-syndicate .Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-syndicate .Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-syndicate .Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.theme-syndicate .Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-syndicate .Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.theme-syndicate .Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-syndicate .Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.theme-syndicate .Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-syndicate .Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.theme-syndicate .Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-syndicate .Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.theme-syndicate .Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-syndicate .Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.theme-syndicate .Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-syndicate .Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.theme-syndicate .Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-syndicate .Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.theme-syndicate .Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-syndicate .Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.theme-syndicate .Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-syndicate .Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.theme-syndicate .Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-syndicate .Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.theme-syndicate .Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-syndicate .Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-syndicate .Button--color--label{background-color:#657a94;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--label:hover{background-color:#8a9aae;color:#fff}.theme-syndicate .Button--color--label--translucent{background-color:rgba(101,122,148,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--label--translucent:hover{background-color:rgba(138,154,174,.5);color:#fff}.theme-syndicate .Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-syndicate .Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.theme-syndicate .Button--color--transparent{background-color:rgba(77,2,2,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--transparent:hover{background-color:rgba(103,14,14,.81);color:#fff}.theme-syndicate .Button--color--default{background-color:#397439;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--default:hover{background-color:#509350;color:#fff}.theme-syndicate .Button--color--default--translucent{background-color:rgba(88,8,8,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--default--translucent:hover{background-color:rgba(115,25,25,.5);color:#fff}.theme-syndicate .Button--color--caution{background-color:#be6209;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--caution:hover{background-color:#e67f1a;color:#fff}.theme-syndicate .Button--color--caution--translucent{background-color:rgba(190,98,9,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--caution--translucent:hover{background-color:rgba(230,127,26,.5);color:#fff}.theme-syndicate .Button--color--danger{background-color:#9a9d00;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--color--danger:hover{background-color:#bec110;color:#fff}.theme-syndicate .Button--color--danger--translucent{background-color:rgba(154,157,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-syndicate .Button--color--danger--translucent:hover{background-color:rgba(190,193,16,.5);color:#fff}.theme-syndicate .Button--disabled{background-color:#363636!important;color:rgba(255,255,255,.75)!important}.theme-syndicate .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.theme-syndicate .Button--selected,.theme-syndicate .Button--selected--translucent{background-color:#9d0808;color:#fff;transition:color .2s,background-color .2s}.theme-syndicate .Button--selected:hover,.theme-syndicate .Button--selected--translucent:hover{background-color:#c11919;color:#fff}.theme-syndicate .NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#fff;background-color:#910101;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) .8333333333em,rgba(0,0,0,.1) 1.6666666667em)}.theme-syndicate .NoticeBox--color--black{color:#fff;background-color:#000}.theme-syndicate .NoticeBox--color--white{color:#000;background-color:#b3b3b3}.theme-syndicate .NoticeBox--color--red{color:#fff;background-color:#701f1f}.theme-syndicate .NoticeBox--color--orange{color:#fff;background-color:#854114}.theme-syndicate .NoticeBox--color--yellow{color:#000;background-color:#83710d}.theme-syndicate .NoticeBox--color--olive{color:#000;background-color:#576015}.theme-syndicate .NoticeBox--color--green{color:#fff;background-color:#174e24}.theme-syndicate .NoticeBox--color--teal{color:#fff;background-color:#064845}.theme-syndicate .NoticeBox--color--blue{color:#fff;background-color:#1b4565}.theme-syndicate .NoticeBox--color--violet{color:#fff;background-color:#3b2864}.theme-syndicate .NoticeBox--color--purple{color:#fff;background-color:#542663}.theme-syndicate .NoticeBox--color--pink{color:#fff;background-color:#802257}.theme-syndicate .NoticeBox--color--brown{color:#fff;background-color:#4c3729}.theme-syndicate .NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.theme-syndicate .NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.theme-syndicate .NoticeBox--color--average{color:#fff;background-color:#7b4e13}.theme-syndicate .NoticeBox--color--bad{color:#fff;background-color:#701f1f}.theme-syndicate .NoticeBox--color--label{color:#fff;background-color:#53565a}.theme-syndicate .NoticeBox--color--gold{color:#fff;background-color:#825d13}.theme-syndicate .NoticeBox--type--info{color:#fff;background-color:#235982}.theme-syndicate .NoticeBox--type--success{color:#fff;background-color:#1e662f}.theme-syndicate .NoticeBox--type--warning{color:#fff;background-color:#a95219}.theme-syndicate .NoticeBox--type--danger{color:#fff;background-color:#8f2828}.theme-syndicate .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;color:#87ce87;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-syndicate .NumberInput--fluid{display:block}.theme-syndicate .NumberInput__content{margin-left:.5em}.theme-syndicate .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-syndicate .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #87ce87;background-color:#87ce87}.theme-syndicate .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-syndicate .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;background-color:#0a0a0a;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-syndicate .Input--disabled{color:#777;border-color:#6b6b6b;border-color:rgba(107,107,107,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-syndicate .Input--fluid{display:block;width:auto}.theme-syndicate .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-syndicate .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-syndicate .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-syndicate .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-syndicate .TextArea{position:relative;display:inline-block;border:.0833333333em solid #87ce87;border:.0833333333em solid rgba(135,206,135,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-syndicate .TextArea--fluid{display:block;width:auto;height:auto}.theme-syndicate .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-syndicate .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-syndicate .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-syndicate .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-syndicate .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-syndicate .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-syndicate .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-syndicate .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-syndicate .Knob__popupValue,.theme-syndicate .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-syndicate .Knob__popupValue--right{top:.25rem;right:-50%}.theme-syndicate .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-syndicate .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-syndicate .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-syndicate .Knob__ringFillPivot{transform:rotate(135deg)}.theme-syndicate .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-syndicate .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-syndicate .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-syndicate .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-syndicate .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-syndicate .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-syndicate .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-syndicate .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-syndicate .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-syndicate .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-syndicate .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-syndicate .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-syndicate .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-syndicate .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-syndicate .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-syndicate .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-syndicate .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-syndicate .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-syndicate .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-syndicate .Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.theme-syndicate .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-syndicate .Slider:not(.Slider__disabled){cursor:e-resize}.theme-syndicate .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-syndicate .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-syndicate .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-syndicate .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-syndicate .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,.5);transition:border-color .5s}.theme-syndicate .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-syndicate .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-syndicate .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-syndicate .ProgressBar--color--default{border:.0833333333em solid #306330}.theme-syndicate .ProgressBar--color--default .ProgressBar__fill{background-color:#306330}.theme-syndicate .ProgressBar--color--disabled{border:1px solid #999}.theme-syndicate .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-syndicate .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-syndicate .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-syndicate .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-syndicate .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-syndicate .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-syndicate .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-syndicate .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-syndicate .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-syndicate .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-syndicate .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-syndicate .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-syndicate .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-syndicate .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-syndicate .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-syndicate .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-syndicate .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-syndicate .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-syndicate .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-syndicate .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-syndicate .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-syndicate .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-syndicate .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-syndicate .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-syndicate .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-syndicate .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-syndicate .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-syndicate .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-syndicate .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-syndicate .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-syndicate .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-syndicate .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-syndicate .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-syndicate .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-syndicate .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-syndicate .ProgressBar--color--label{border:.0833333333em solid #657a94!important}.theme-syndicate .ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.theme-syndicate .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-syndicate .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-syndicate .Chat{color:#abc6ec}.theme-syndicate .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-syndicate .Chat__badge:before{content:"x"}.theme-syndicate .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-syndicate .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-syndicate .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-syndicate .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#2b0101}.theme-syndicate .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-syndicate .Chat__highlight{color:#000}.theme-syndicate .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-syndicate .ChatMessage{word-wrap:break-word}.theme-syndicate .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-syndicate .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-syndicate html,.theme-syndicate body{scrollbar-color:#770303 #3a0202}.theme-syndicate .Layout,.theme-syndicate .Layout *{scrollbar-base-color:#3a0202;scrollbar-face-color:#770303;scrollbar-3dlight-color:#4d0202;scrollbar-highlight-color:#4d0202;scrollbar-track-color:#3a0202;scrollbar-arrow-color:#fa2d2d;scrollbar-shadow-color:#770303}.theme-syndicate .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-syndicate .Layout__content--flexRow{display:flex;flex-flow:row}.theme-syndicate .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-syndicate .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-syndicate .Layout__content--noMargin{margin:0}.theme-syndicate .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#4d0202;background-image:linear-gradient(to bottom,#4d0202,#4d0202)}.theme-syndicate .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-syndicate .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-syndicate .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-syndicate .Window__contentPadding:after{height:0}.theme-syndicate .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-syndicate .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(108,22,22,.25);pointer-events:none}.theme-syndicate .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-syndicate .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-syndicate .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-syndicate .TitleBar{background-color:#910101;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-syndicate .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#910101;transition:color .25s,background-color .25s}.theme-syndicate .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-syndicate .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-syndicate .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-syndicate .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-syndicate .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-syndicate .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-syndicate .adminooc{color:#29ccbe}.theme-syndicate .debug{color:#8f39e6}.theme-syndicate .boxed_message{background:rgba(20,20,35,.25);border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.theme-syndicate .boxed_message.left_align_text{text-align:left}.theme-syndicate .boxed_message.red_border{background:rgba(0,0,0,.2);border-color:red}.theme-syndicate .boxed_message.green_border{background:rgba(0,75,0,.25);border-color:#0f0}.theme-syndicate .boxed_message.purple_border{background:rgba(25,0,50,.25);border-color:#8000ff}.theme-syndicate .boxed_message.notice_border{background:rgba(0,0,75,.25);border-color:#6685f5}.theme-syndicate .boxed_message.thick_border{border-width:thick}.theme-paradise .color-black{color:#1a1a1a!important}.theme-paradise .color-white{color:#fff!important}.theme-paradise .color-red{color:#df3e3e!important}.theme-paradise .color-orange{color:#f37f33!important}.theme-paradise .color-yellow{color:#fbda21!important}.theme-paradise .color-olive{color:#cbe41c!important}.theme-paradise .color-green{color:#25ca4c!important}.theme-paradise .color-teal{color:#00d6cc!important}.theme-paradise .color-blue{color:#2e93de!important}.theme-paradise .color-violet{color:#7349cf!important}.theme-paradise .color-purple{color:#ad45d0!important}.theme-paradise .color-pink{color:#e34da1!important}.theme-paradise .color-brown{color:#b97447!important}.theme-paradise .color-grey{color:#848484!important}.theme-paradise .color-good{color:#68c22d!important}.theme-paradise .color-average{color:#f29a29!important}.theme-paradise .color-bad{color:#df3e3e!important}.theme-paradise .color-label{color:#955d4b!important}.theme-paradise .color-gold{color:#f3b22f!important}.theme-paradise .color-bg-black{background-color:#000!important}.theme-paradise .color-bg-white{background-color:#d9d9d9!important}.theme-paradise .color-bg-red{background-color:#bd2020!important}.theme-paradise .color-bg-orange{background-color:#d95e0c!important}.theme-paradise .color-bg-yellow{background-color:#d9b804!important}.theme-paradise .color-bg-olive{background-color:#9aad14!important}.theme-paradise .color-bg-green{background-color:#1b9638!important}.theme-paradise .color-bg-teal{background-color:#009a93!important}.theme-paradise .color-bg-blue{background-color:#1c71b1!important}.theme-paradise .color-bg-violet{background-color:#552dab!important}.theme-paradise .color-bg-purple{background-color:#8b2baa!important}.theme-paradise .color-bg-pink{background-color:#cf2082!important}.theme-paradise .color-bg-brown{background-color:#8c5836!important}.theme-paradise .color-bg-grey{background-color:#646464!important}.theme-paradise .color-bg-good{background-color:#4d9121!important}.theme-paradise .color-bg-average{background-color:#cd7a0d!important}.theme-paradise .color-bg-bad{background-color:#bd2020!important}.theme-paradise .color-bg-label{background-color:#6d4436!important}.theme-paradise .color-bg-gold{background-color:#d6920c!important}.theme-paradise .color-border-black{border-color:#1a1a1a!important}.theme-paradise .color-border-white{border-color:#fff!important}.theme-paradise .color-border-red{border-color:#df3e3e!important}.theme-paradise .color-border-orange{border-color:#f37f33!important}.theme-paradise .color-border-yellow{border-color:#fbda21!important}.theme-paradise .color-border-olive{border-color:#cbe41c!important}.theme-paradise .color-border-green{border-color:#25ca4c!important}.theme-paradise .color-border-teal{border-color:#00d6cc!important}.theme-paradise .color-border-blue{border-color:#2e93de!important}.theme-paradise .color-border-violet{border-color:#7349cf!important}.theme-paradise .color-border-purple{border-color:#ad45d0!important}.theme-paradise .color-border-pink{border-color:#e34da1!important}.theme-paradise .color-border-brown{border-color:#b97447!important}.theme-paradise .color-border-grey{border-color:#848484!important}.theme-paradise .color-border-good{border-color:#68c22d!important}.theme-paradise .color-border-average{border-color:#f29a29!important}.theme-paradise .color-border-bad{border-color:#df3e3e!important}.theme-paradise .color-border-label{border-color:#955d4b!important}.theme-paradise .color-border-gold{border-color:#f3b22f!important}.theme-paradise .Section{position:relative;margin-bottom:.5em;background-color:#40071a;background-color:rgba(0,0,0,.5);box-sizing:border-box}.theme-paradise .Section:last-child{margin-bottom:0}.theme-paradise .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #208080}.theme-paradise .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-paradise .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-paradise .Section__rest{position:relative}.theme-paradise .Section__content{padding:.66em .5em}.theme-paradise .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-paradise .Section--fill{display:flex;flex-direction:column;height:100%}.theme-paradise .Section--fill>.Section__rest{flex-grow:1}.theme-paradise .Section--fill>.Section__rest>.Section__content{height:100%}.theme-paradise .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-paradise .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-paradise .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-paradise .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-paradise .Section--scrollable>.Section__rest>.Section__content{overflow-y:auto;overflow-x:hidden}.theme-paradise .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-paradise .Section .Section:first-child{margin-top:-.5em}.theme-paradise .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-paradise .Section .Section .Section .Section__titleText{font-size:1em}.theme-paradise .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-paradise .Button:last-child{margin-right:0;margin-bottom:0}.theme-paradise .Button .fa,.theme-paradise .Button .fas,.theme-paradise .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-paradise .Button--hasContent .fa,.theme-paradise .Button--hasContent .fas,.theme-paradise .Button--hasContent .far{margin-right:.25em}.theme-paradise .Button--hasContent.Button--iconRight .fa,.theme-paradise .Button--hasContent.Button--iconRight .fas,.theme-paradise .Button--hasContent.Button--iconRight .far{margin-right:0;margin-left:.25em}.theme-paradise .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-paradise .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-paradise .Button--circular{border-radius:50%}.theme-paradise .Button--compact{padding:0 .25em;line-height:1.333em}.theme-paradise .Button--multiLine{white-space:normal;word-wrap:break-word}.theme-paradise .Button--modal{float:right;z-index:1;margin-top:-.5rem}.theme-paradise .Button--color--black{background-color:#000;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--black:hover{background-color:#101010;color:#fff}.theme-paradise .Button--color--black--translucent{background-color:rgba(0,0,0,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--black--translucent:hover{background-color:rgba(16,16,16,.5);color:#fff}.theme-paradise .Button--color--white{background-color:#d9d9d9;color:#000;transition:color .2s,background-color .2s}.theme-paradise .Button--color--white:hover{background-color:#f8f8f8;color:#000}.theme-paradise .Button--color--white--translucent{background-color:rgba(217,217,217,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--white--translucent:hover{background-color:rgba(248,248,248,.5);color:#fff}.theme-paradise .Button--color--red{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--red:hover{background-color:#d93f3f;color:#fff}.theme-paradise .Button--color--red--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--red--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-paradise .Button--color--orange{background-color:#d95e0c;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--orange:hover{background-color:#ef7e33;color:#fff}.theme-paradise .Button--color--orange--translucent{background-color:rgba(217,94,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--orange--translucent:hover{background-color:rgba(239,126,51,.5);color:#fff}.theme-paradise .Button--color--yellow{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-paradise .Button--color--yellow:hover{background-color:#f5d523;color:#000}.theme-paradise .Button--color--yellow--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--yellow--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-paradise .Button--color--olive{background-color:#9aad14;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--olive:hover{background-color:#bdd327;color:#fff}.theme-paradise .Button--color--olive--translucent{background-color:rgba(154,173,20,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--olive--translucent:hover{background-color:rgba(189,211,39,.5);color:#fff}.theme-paradise .Button--color--green{background-color:#1b9638;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--green:hover{background-color:#2fb94f;color:#fff}.theme-paradise .Button--color--green--translucent{background-color:rgba(27,150,56,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--green--translucent:hover{background-color:rgba(47,185,79,.5);color:#fff}.theme-paradise .Button--color--teal{background-color:#009a93;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--teal:hover{background-color:#10bdb6;color:#fff}.theme-paradise .Button--color--teal--translucent{background-color:rgba(0,154,147,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--teal--translucent:hover{background-color:rgba(16,189,182,.5);color:#fff}.theme-paradise .Button--color--blue{background-color:#1c71b1;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--blue:hover{background-color:#308fd6;color:#fff}.theme-paradise .Button--color--blue--translucent{background-color:rgba(28,113,177,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--blue--translucent:hover{background-color:rgba(48,143,214,.5);color:#fff}.theme-paradise .Button--color--violet{background-color:#552dab;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--violet:hover{background-color:#7249ca;color:#fff}.theme-paradise .Button--color--violet--translucent{background-color:rgba(85,45,171,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--violet--translucent:hover{background-color:rgba(114,73,202,.5);color:#fff}.theme-paradise .Button--color--purple{background-color:#8b2baa;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--purple:hover{background-color:#aa46ca;color:#fff}.theme-paradise .Button--color--purple--translucent{background-color:rgba(139,43,170,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--purple--translucent:hover{background-color:rgba(170,70,202,.5);color:#fff}.theme-paradise .Button--color--pink{background-color:#cf2082;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--pink:hover{background-color:#e04ca0;color:#fff}.theme-paradise .Button--color--pink--translucent{background-color:rgba(207,32,130,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--pink--translucent:hover{background-color:rgba(224,76,160,.5);color:#fff}.theme-paradise .Button--color--brown{background-color:#8c5836;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--brown:hover{background-color:#ae724c;color:#fff}.theme-paradise .Button--color--brown--translucent{background-color:rgba(140,88,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--brown--translucent:hover{background-color:rgba(174,114,76,.5);color:#fff}.theme-paradise .Button--color--grey{background-color:#646464;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--grey:hover{background-color:#818181;color:#fff}.theme-paradise .Button--color--grey--translucent{background-color:rgba(100,100,100,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--grey--translucent:hover{background-color:rgba(129,129,129,.5);color:#fff}.theme-paradise .Button--color--good{background-color:#4d9121;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--good:hover{background-color:#67b335;color:#fff}.theme-paradise .Button--color--good--translucent{background-color:rgba(77,145,33,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--good--translucent:hover{background-color:rgba(103,179,53,.5);color:#fff}.theme-paradise .Button--color--average{background-color:#cd7a0d;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--average:hover{background-color:#eb972b;color:#fff}.theme-paradise .Button--color--average--translucent{background-color:rgba(205,122,13,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--average--translucent:hover{background-color:rgba(235,151,43,.5);color:#fff}.theme-paradise .Button--color--bad{background-color:#bd2020;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--bad:hover{background-color:#d93f3f;color:#fff}.theme-paradise .Button--color--bad--translucent{background-color:rgba(189,32,32,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--bad--translucent:hover{background-color:rgba(217,63,63,.5);color:#fff}.theme-paradise .Button--color--label{background-color:#6d4436;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--label:hover{background-color:#8b5d4d;color:#fff}.theme-paradise .Button--color--label--translucent{background-color:rgba(109,68,54,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--label--translucent:hover{background-color:rgba(139,93,77,.5);color:#fff}.theme-paradise .Button--color--gold{background-color:#d6920c;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--gold:hover{background-color:#eeaf30;color:#fff}.theme-paradise .Button--color--gold--translucent{background-color:rgba(214,146,12,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--gold--translucent:hover{background-color:rgba(238,175,48,.5);color:#fff}.theme-paradise .Button--color--transparent{background-color:rgba(128,13,51,0);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--transparent:hover{background-color:rgba(164,27,73,.81);color:#fff}.theme-paradise .Button--color--default{background-color:#208080;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--default:hover{background-color:#34a0a0;color:#fff}.theme-paradise .Button--color--default--translucent{background-color:rgba(141,20,60,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--default--translucent:hover{background-color:rgba(175,39,84,.5);color:#fff}.theme-paradise .Button--color--caution{background-color:#d9b804;color:#000;transition:color .2s,background-color .2s}.theme-paradise .Button--color--caution:hover{background-color:#f5d523;color:#000}.theme-paradise .Button--color--caution--translucent{background-color:rgba(217,184,4,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--caution--translucent:hover{background-color:rgba(245,213,35,.5);color:#fff}.theme-paradise .Button--color--danger{background-color:#8c1eff;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--color--danger:hover{background-color:#ae61ff;color:#fff}.theme-paradise .Button--color--danger--translucent{background-color:rgba(140,30,255,.33);color:rgba(255,255,255,.5);transition:color .2s,background-color .2s}.theme-paradise .Button--color--danger--translucent:hover{background-color:rgba(174,97,255,.5);color:#fff}.theme-paradise .Button--disabled{background-color:#999!important;color:rgba(255,255,255,.75)!important}.theme-paradise .Button--disabled--translucent{background-color:rgba(77,23,23,.5)!important;color:rgba(255,255,255,.5)!important}.theme-paradise .Button--selected,.theme-paradise .Button--selected--translucent{background-color:#bf6030;color:#fff;transition:color .2s,background-color .2s}.theme-paradise .Button--selected:hover,.theme-paradise .Button--selected--translucent:hover{background-color:#d4835a;color:#fff}.theme-paradise .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;color:#e65c2e;background-color:rgba(0,0,0,.25);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-paradise .NumberInput--fluid{display:block}.theme-paradise .NumberInput__content{margin-left:.5em}.theme-paradise .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-paradise .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #e65c2e;background-color:#e65c2e}.theme-paradise .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,.25);color:#fff;text-align:right}.theme-paradise .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;background-color:rgba(0,0,0,.25);color:#fff;background-color:#000;background-color:rgba(0,0,0,.75);padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible;white-space:nowrap}.theme-paradise .Input--disabled{color:#777;border-color:#4a4a4a;border-color:rgba(74,74,74,.75);background-color:#333;background-color:rgba(0,0,0,.25)}.theme-paradise .Input--fluid{display:block;width:auto}.theme-paradise .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-paradise .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-paradise .Input__input::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__textarea{border:0;width:calc(100% + 4px);font-size:1em;line-height:1.4166666667em;margin-left:-.3333333333em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit;resize:both;overflow:auto;white-space:pre-wrap}.theme-paradise .Input__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-paradise .TextArea{position:relative;display:inline-block;border:.0833333333em solid #e65c2e;border:.0833333333em solid rgba(230,92,46,.75);border-radius:.16em;background-color:rgba(0,0,0,.25);margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-paradise .TextArea--fluid{display:block;width:auto;height:auto}.theme-paradise .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-paradise .TextArea__textarea::placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-paradise .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:rgba(125,125,125,.75)}.theme-paradise .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-paradise .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-paradise .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-paradise .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-paradise .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-paradise .Knob__popupValue,.theme-paradise .Knob__popupValue--right{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-paradise .Knob__popupValue--right{top:.25rem;right:-50%}.theme-paradise .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-paradise .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-paradise .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-paradise .Knob__ringFillPivot{transform:rotate(135deg)}.theme-paradise .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-paradise .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-paradise .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-paradise .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-paradise .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-paradise .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-paradise .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-paradise .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-paradise .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-paradise .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-paradise .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-paradise .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-paradise .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-paradise .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-paradise .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-paradise .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-paradise .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-paradise .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-paradise .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-paradise .Knob--color--label .Knob__ringFill{stroke:#955d4b}.theme-paradise .Knob--color--gold .Knob__ringFill{stroke:#f3b22f}.theme-paradise .Slider:not(.Slider__disabled){cursor:e-resize}.theme-paradise .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-paradise .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-paradise .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-paradise .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-paradise .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .5s}.theme-paradise .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-paradise .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-paradise .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-paradise .ProgressBar--color--default{border:.0833333333em solid #1b6d6d}.theme-paradise .ProgressBar--color--default .ProgressBar__fill{background-color:#1b6d6d}.theme-paradise .ProgressBar--color--disabled{border:1px solid #999}.theme-paradise .ProgressBar--color--disabled .ProgressBar__fill{background-color:#999}.theme-paradise .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-paradise .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-paradise .ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.theme-paradise .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-paradise .ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.theme-paradise .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-paradise .ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.theme-paradise .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-paradise .ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.theme-paradise .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-paradise .ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.theme-paradise .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-paradise .ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.theme-paradise .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-paradise .ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.theme-paradise .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-paradise .ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.theme-paradise .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-paradise .ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.theme-paradise .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-paradise .ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.theme-paradise .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-paradise .ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.theme-paradise .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-paradise .ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.theme-paradise .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-paradise .ProgressBar--color--grey{border:.0833333333em solid #646464!important}.theme-paradise .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-paradise .ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.theme-paradise .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-paradise .ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.theme-paradise .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-paradise .ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.theme-paradise .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-paradise .ProgressBar--color--label{border:.0833333333em solid #6d4436!important}.theme-paradise .ProgressBar--color--label .ProgressBar__fill{background-color:#6d4436}.theme-paradise .ProgressBar--color--gold{border:.0833333333em solid #d6920c!important}.theme-paradise .ProgressBar--color--gold .ProgressBar__fill{background-color:#d6920c}.theme-paradise .Chat{color:#abc6ec}.theme-paradise .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-paradise .Chat__badge:before{content:"x"}.theme-paradise .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-paradise .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-paradise .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-paradise .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#fff;background-color:#db2828}.theme-paradise .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-paradise .Chat__highlight{color:#000}.theme-paradise .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-paradise .ChatMessage{word-wrap:break-word}.theme-paradise .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-paradise .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-paradise html,.theme-paradise body{scrollbar-color:#cb1551 #680b29}.theme-paradise .Layout,.theme-paradise .Layout *{scrollbar-base-color:#680b29;scrollbar-face-color:#99103d;scrollbar-3dlight-color:#800d33;scrollbar-highlight-color:#800d33;scrollbar-track-color:#680b29;scrollbar-arrow-color:#ea2e6c;scrollbar-shadow-color:#99103d}.theme-paradise .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.theme-paradise .Layout__content--flexRow{display:flex;flex-flow:row}.theme-paradise .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-paradise .Layout__content--scrollable{overflow-y:auto;margin-bottom:0}.theme-paradise .Layout__content--noMargin{margin:0}.theme-paradise .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#800d33;background-image:linear-gradient(to bottom,#80014b,#80460d)}.theme-paradise .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-paradise .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-paradise .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-paradise .Window__contentPadding:after{height:0}.theme-paradise .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-paradise .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(166,34,78,.25);pointer-events:none}.theme-paradise .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-paradise .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-paradise .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-paradise .TitleBar{background-color:#800d33;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-paradise .TitleBar__clickable{color:rgba(255,0,0,.5);background-color:#800d33;transition:color .25s,background-color .25s}.theme-paradise .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-paradise .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(255,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-paradise .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-paradise .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-paradise .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-paradise .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-paradise .adminooc{color:#29ccbe}.theme-paradise .debug{color:#8f39e6}.theme-paradise .boxed_message{background:rgba(0,0,0,.25);border:1px solid #a3b9d9;margin:.5em;padding:.5em .75em;text-align:center}.theme-paradise .boxed_message.left_align_text{text-align:left}.theme-paradise .boxed_message.red_border{background:rgba(0,0,0,.25);border-color:#a00}.theme-paradise .boxed_message.green_border{background:rgba(0,0,0,.25);border-color:#0f0}.theme-paradise .boxed_message.purple_border{background:rgba(0,0,0,.25);border-color:#8000ff}.theme-paradise .boxed_message.notice_border{background:rgba(0,0,0,.25);border-color:#6685f5}.theme-paradise .boxed_message.thick_border{border-width:thick} diff --git a/tgui/public/tgui-panel.bundle.js b/tgui/public/tgui-panel.bundle.js index 2b8f414df9c9..1c5d6b73905c 100644 --- a/tgui/public/tgui-panel.bundle.js +++ b/tgui/public/tgui-panel.bundle.js @@ -1,8 +1,8 @@ -(function(){(function(){var xn={96376:function(E,e,t){"use strict";e.__esModule=!0,e.createPopper=void 0,e.popperGenerator=g;var n=i(t(74758)),r=i(t(28811)),o=i(t(98309)),a=i(t(44896)),u=i(t(33118)),s=i(t(10579)),c=i(t(56500)),h=i(t(17633));e.detectOverflow=h.default;var f=t(75573);function i(p){return p&&p.__esModule?p:{default:p}}var d={placement:"bottom",modifiers:[],strategy:"absolute"};function l(){for(var p=arguments.length,m=new Array(p),b=0;b0&&(0,r.round)(i.width)/c.offsetWidth||1,l=c.offsetHeight>0&&(0,r.round)(i.height)/c.offsetHeight||1);var g=(0,n.isElement)(c)?(0,o.default)(c):window,v=g.visualViewport,p=!(0,a.default)()&&f,m=(i.left+(p&&v?v.offsetLeft:0))/d,b=(i.top+(p&&v?v.offsetTop:0))/l,I=i.width/d,A=i.height/l;return{width:I,height:A,top:b,right:m+I,bottom:b+A,left:m,x:m,y:b}}},49035:function(E,e,t){"use strict";e.__esModule=!0,e.default=A;var n=t(46206),r=p(t(87991)),o=p(t(79752)),a=p(t(98309)),u=p(t(44896)),s=p(t(40600)),c=p(t(16599)),h=t(75573),f=p(t(37786)),i=p(t(57819)),d=p(t(4206)),l=p(t(12972)),g=p(t(81666)),v=t(63618);function p(C){return C&&C.__esModule?C:{default:C}}function m(C,S){var y=(0,f.default)(C,!1,S==="fixed");return y.top=y.top+C.clientTop,y.left=y.left+C.clientLeft,y.bottom=y.top+C.clientHeight,y.right=y.left+C.clientWidth,y.width=C.clientWidth,y.height=C.clientHeight,y.x=y.left,y.y=y.top,y}function b(C,S,y){return S===n.viewport?(0,g.default)((0,r.default)(C,y)):(0,h.isElement)(S)?m(S,y):(0,g.default)((0,o.default)((0,s.default)(C)))}function I(C){var S=(0,a.default)((0,i.default)(C)),y=["absolute","fixed"].indexOf((0,c.default)(C).position)>=0,T=y&&(0,h.isHTMLElement)(C)?(0,u.default)(C):C;return(0,h.isElement)(T)?S.filter(function(N){return(0,h.isElement)(N)&&(0,d.default)(N,T)&&(0,l.default)(N)!=="body"}):[]}function A(C,S,y,T){var N=S==="clippingParents"?I(C):[].concat(S),M=[].concat(N,[y]),R=M[0],L=M.reduce(function(B,x){var V=b(C,x,T);return B.top=(0,v.max)(V.top,B.top),B.right=(0,v.min)(V.right,B.right),B.bottom=(0,v.min)(V.bottom,B.bottom),B.left=(0,v.max)(V.left,B.left),B},b(C,R,T));return L.width=L.right-L.left,L.height=L.bottom-L.top,L.x=L.left,L.y=L.top,L}},74758:function(E,e,t){"use strict";e.__esModule=!0,e.default=d;var n=f(t(37786)),r=f(t(13390)),o=f(t(12972)),a=t(75573),u=f(t(79697)),s=f(t(40600)),c=f(t(10798)),h=t(63618);function f(l){return l&&l.__esModule?l:{default:l}}function i(l){var g=l.getBoundingClientRect(),v=(0,h.round)(g.width)/l.offsetWidth||1,p=(0,h.round)(g.height)/l.offsetHeight||1;return v!==1||p!==1}function d(l,g,v){v===void 0&&(v=!1);var p=(0,a.isHTMLElement)(g),m=(0,a.isHTMLElement)(g)&&i(g),b=(0,s.default)(g),I=(0,n.default)(l,m,v),A={scrollLeft:0,scrollTop:0},C={x:0,y:0};return(p||!p&&!v)&&(((0,o.default)(g)!=="body"||(0,c.default)(b))&&(A=(0,r.default)(g)),(0,a.isHTMLElement)(g)?(C=(0,n.default)(g,!0),C.x+=g.clientLeft,C.y+=g.clientTop):b&&(C.x=(0,u.default)(b))),{x:I.left+A.scrollLeft-C.x,y:I.top+A.scrollTop-C.y,width:I.width,height:I.height}}},16599:function(E,e,t){"use strict";e.__esModule=!0,e.default=o;var n=r(t(95115));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){return(0,n.default)(a).getComputedStyle(a)}},40600:function(E,e,t){"use strict";e.__esModule=!0,e.default=r;var n=t(75573);function r(o){return(((0,n.isElement)(o)?o.ownerDocument:o.document)||window.document).documentElement}},79752:function(E,e,t){"use strict";e.__esModule=!0,e.default=c;var n=s(t(40600)),r=s(t(16599)),o=s(t(79697)),a=s(t(43750)),u=t(63618);function s(h){return h&&h.__esModule?h:{default:h}}function c(h){var f,i=(0,n.default)(h),d=(0,a.default)(h),l=(f=h.ownerDocument)==null?void 0:f.body,g=(0,u.max)(i.scrollWidth,i.clientWidth,l?l.scrollWidth:0,l?l.clientWidth:0),v=(0,u.max)(i.scrollHeight,i.clientHeight,l?l.scrollHeight:0,l?l.clientHeight:0),p=-d.scrollLeft+(0,o.default)(h),m=-d.scrollTop;return(0,r.default)(l||i).direction==="rtl"&&(p+=(0,u.max)(i.clientWidth,l?l.clientWidth:0)-g),{width:g,height:v,x:p,y:m}}},3073:function(E,e){"use strict";e.__esModule=!0,e.default=t;function t(n){return{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}}},28811:function(E,e,t){"use strict";e.__esModule=!0,e.default=o;var n=r(t(37786));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){var u=(0,n.default)(a),s=a.offsetWidth,c=a.offsetHeight;return Math.abs(u.width-s)<=1&&(s=u.width),Math.abs(u.height-c)<=1&&(c=u.height),{x:a.offsetLeft,y:a.offsetTop,width:s,height:c}}},12972:function(E,e){"use strict";e.__esModule=!0,e.default=t;function t(n){return n?(n.nodeName||"").toLowerCase():null}},13390:function(E,e,t){"use strict";e.__esModule=!0,e.default=s;var n=u(t(43750)),r=u(t(95115)),o=t(75573),a=u(t(3073));function u(c){return c&&c.__esModule?c:{default:c}}function s(c){return c===(0,r.default)(c)||!(0,o.isHTMLElement)(c)?(0,n.default)(c):(0,a.default)(c)}},44896:function(E,e,t){"use strict";e.__esModule=!0,e.default=d;var n=h(t(95115)),r=h(t(12972)),o=h(t(16599)),a=t(75573),u=h(t(87031)),s=h(t(57819)),c=h(t(35366));function h(l){return l&&l.__esModule?l:{default:l}}function f(l){return!(0,a.isHTMLElement)(l)||(0,o.default)(l).position==="fixed"?null:l.offsetParent}function i(l){var g=/firefox/i.test((0,c.default)()),v=/Trident/i.test((0,c.default)());if(v&&(0,a.isHTMLElement)(l)){var p=(0,o.default)(l);if(p.position==="fixed")return null}var m=(0,s.default)(l);for((0,a.isShadowRoot)(m)&&(m=m.host);(0,a.isHTMLElement)(m)&&["html","body"].indexOf((0,r.default)(m))<0;){var b=(0,o.default)(m);if(b.transform!=="none"||b.perspective!=="none"||b.contain==="paint"||["transform","perspective"].indexOf(b.willChange)!==-1||g&&b.willChange==="filter"||g&&b.filter&&b.filter!=="none")return m;m=m.parentNode}return null}function d(l){for(var g=(0,n.default)(l),v=f(l);v&&(0,u.default)(v)&&(0,o.default)(v).position==="static";)v=f(v);return v&&((0,r.default)(v)==="html"||(0,r.default)(v)==="body"&&(0,o.default)(v).position==="static")?g:v||i(l)||g}},57819:function(E,e,t){"use strict";e.__esModule=!0,e.default=u;var n=a(t(12972)),r=a(t(40600)),o=t(75573);function a(s){return s&&s.__esModule?s:{default:s}}function u(s){return(0,n.default)(s)==="html"?s:s.assignedSlot||s.parentNode||((0,o.isShadowRoot)(s)?s.host:null)||(0,r.default)(s)}},24426:function(E,e,t){"use strict";e.__esModule=!0,e.default=s;var n=u(t(57819)),r=u(t(10798)),o=u(t(12972)),a=t(75573);function u(c){return c&&c.__esModule?c:{default:c}}function s(c){return["html","body","#document"].indexOf((0,o.default)(c))>=0?c.ownerDocument.body:(0,a.isHTMLElement)(c)&&(0,r.default)(c)?c:s((0,n.default)(c))}},87991:function(E,e,t){"use strict";e.__esModule=!0,e.default=s;var n=u(t(95115)),r=u(t(40600)),o=u(t(79697)),a=u(t(89331));function u(c){return c&&c.__esModule?c:{default:c}}function s(c,h){var f=(0,n.default)(c),i=(0,r.default)(c),d=f.visualViewport,l=i.clientWidth,g=i.clientHeight,v=0,p=0;if(d){l=d.width,g=d.height;var m=(0,a.default)();(m||!m&&h==="fixed")&&(v=d.offsetLeft,p=d.offsetTop)}return{width:l,height:g,x:v+(0,o.default)(c),y:p}}},95115:function(E,e){"use strict";e.__esModule=!0,e.default=t;function t(n){if(n==null)return window;if(n.toString()!=="[object Window]"){var r=n.ownerDocument;return r&&r.defaultView||window}return n}},43750:function(E,e,t){"use strict";e.__esModule=!0,e.default=o;var n=r(t(95115));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){var u=(0,n.default)(a),s=u.pageXOffset,c=u.pageYOffset;return{scrollLeft:s,scrollTop:c}}},79697:function(E,e,t){"use strict";e.__esModule=!0,e.default=u;var n=a(t(37786)),r=a(t(40600)),o=a(t(43750));function a(s){return s&&s.__esModule?s:{default:s}}function u(s){return(0,n.default)((0,r.default)(s)).left+(0,o.default)(s).scrollLeft}},75573:function(E,e,t){"use strict";e.__esModule=!0,e.isElement=o,e.isHTMLElement=a,e.isShadowRoot=u;var n=r(t(95115));function r(s){return s&&s.__esModule?s:{default:s}}function o(s){var c=(0,n.default)(s).Element;return s instanceof c||s instanceof Element}function a(s){var c=(0,n.default)(s).HTMLElement;return s instanceof c||s instanceof HTMLElement}function u(s){if(typeof ShadowRoot=="undefined")return!1;var c=(0,n.default)(s).ShadowRoot;return s instanceof c||s instanceof ShadowRoot}},89331:function(E,e,t){"use strict";e.__esModule=!0,e.default=o;var n=r(t(35366));function r(a){return a&&a.__esModule?a:{default:a}}function o(){return!/^((?!chrome|android).)*safari/i.test((0,n.default)())}},10798:function(E,e,t){"use strict";e.__esModule=!0,e.default=o;var n=r(t(16599));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){var u=(0,n.default)(a),s=u.overflow,c=u.overflowX,h=u.overflowY;return/auto|scroll|overlay|hidden/.test(s+h+c)}},87031:function(E,e,t){"use strict";e.__esModule=!0,e.default=o;var n=r(t(12972));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){return["table","td","th"].indexOf((0,n.default)(a))>=0}},98309:function(E,e,t){"use strict";e.__esModule=!0,e.default=s;var n=u(t(24426)),r=u(t(57819)),o=u(t(95115)),a=u(t(10798));function u(c){return c&&c.__esModule?c:{default:c}}function s(c,h){var f;h===void 0&&(h=[]);var i=(0,n.default)(c),d=i===((f=c.ownerDocument)==null?void 0:f.body),l=(0,o.default)(i),g=d?[l].concat(l.visualViewport||[],(0,a.default)(i)?i:[]):i,v=h.concat(g);return d?v:v.concat(s((0,r.default)(g)))}},46206:function(E,e){"use strict";e.__esModule=!0,e.write=e.viewport=e.variationPlacements=e.top=e.start=e.right=e.reference=e.read=e.popper=e.placements=e.modifierPhases=e.main=e.left=e.end=e.clippingParents=e.bottom=e.beforeWrite=e.beforeRead=e.beforeMain=e.basePlacements=e.auto=e.afterWrite=e.afterRead=e.afterMain=void 0;var t=e.top="top",n=e.bottom="bottom",r=e.right="right",o=e.left="left",a=e.auto="auto",u=e.basePlacements=[t,n,r,o],s=e.start="start",c=e.end="end",h=e.clippingParents="clippingParents",f=e.viewport="viewport",i=e.popper="popper",d=e.reference="reference",l=e.variationPlacements=u.reduce(function(N,M){return N.concat([M+"-"+s,M+"-"+c])},[]),g=e.placements=[].concat(u,[a]).reduce(function(N,M){return N.concat([M,M+"-"+s,M+"-"+c])},[]),v=e.beforeRead="beforeRead",p=e.read="read",m=e.afterRead="afterRead",b=e.beforeMain="beforeMain",I=e.main="main",A=e.afterMain="afterMain",C=e.beforeWrite="beforeWrite",S=e.write="write",y=e.afterWrite="afterWrite",T=e.modifierPhases=[v,p,m,b,I,A,C,S,y]},95996:function(E,e,t){"use strict";e.__esModule=!0;var n={popperGenerator:!0,detectOverflow:!0,createPopperBase:!0,createPopper:!0,createPopperLite:!0};e.popperGenerator=e.detectOverflow=e.createPopperLite=e.createPopperBase=e.createPopper=void 0;var r=t(46206);Object.keys(r).forEach(function(c){c==="default"||c==="__esModule"||Object.prototype.hasOwnProperty.call(n,c)||c in e&&e[c]===r[c]||(e[c]=r[c])});var o=t(39805);Object.keys(o).forEach(function(c){c==="default"||c==="__esModule"||Object.prototype.hasOwnProperty.call(n,c)||c in e&&e[c]===o[c]||(e[c]=o[c])});var a=t(96376);e.popperGenerator=a.popperGenerator,e.detectOverflow=a.detectOverflow,e.createPopperBase=a.createPopper;var u=t(83312);e.createPopper=u.createPopper;var s=t(2473);e.createPopperLite=s.createPopper},19975:function(E,e,t){"use strict";e.__esModule=!0,e.default=void 0;var n=o(t(12972)),r=t(75573);function o(c){return c&&c.__esModule?c:{default:c}}function a(c){var h=c.state;Object.keys(h.elements).forEach(function(f){var i=h.styles[f]||{},d=h.attributes[f]||{},l=h.elements[f];!(0,r.isHTMLElement)(l)||!(0,n.default)(l)||(Object.assign(l.style,i),Object.keys(d).forEach(function(g){var v=d[g];v===!1?l.removeAttribute(g):l.setAttribute(g,v===!0?"":v)}))})}function u(c){var h=c.state,f={popper:{position:h.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(h.elements.popper.style,f.popper),h.styles=f,h.elements.arrow&&Object.assign(h.elements.arrow.style,f.arrow),function(){Object.keys(h.elements).forEach(function(i){var d=h.elements[i],l=h.attributes[i]||{},g=Object.keys(h.styles.hasOwnProperty(i)?h.styles[i]:f[i]),v=g.reduce(function(p,m){return p[m]="",p},{});!(0,r.isHTMLElement)(d)||!(0,n.default)(d)||(Object.assign(d.style,v),Object.keys(l).forEach(function(p){d.removeAttribute(p)}))})}}var s=e.default={name:"applyStyles",enabled:!0,phase:"write",fn:a,effect:u,requires:["computeStyles"]}},52744:function(E,e,t){"use strict";e.__esModule=!0,e.default=void 0;var n=i(t(83104)),r=i(t(28811)),o=i(t(4206)),a=i(t(44896)),u=i(t(41199)),s=t(28595),c=i(t(43286)),h=i(t(81447)),f=t(46206);function i(p){return p&&p.__esModule?p:{default:p}}var d=function(){function p(m,b){return m=typeof m=="function"?m(Object.assign({},b.rects,{placement:b.placement})):m,(0,c.default)(typeof m!="number"?m:(0,h.default)(m,f.basePlacements))}return p}();function l(p){var m,b=p.state,I=p.name,A=p.options,C=b.elements.arrow,S=b.modifiersData.popperOffsets,y=(0,n.default)(b.placement),T=(0,u.default)(y),N=[f.left,f.right].indexOf(y)>=0,M=N?"height":"width";if(!(!C||!S)){var R=d(A.padding,b),L=(0,r.default)(C),B=T==="y"?f.top:f.left,x=T==="y"?f.bottom:f.right,V=b.rects.reference[M]+b.rects.reference[T]-S[T]-b.rects.popper[M],j=S[T]-b.rects.reference[T],Y=(0,a.default)(C),D=Y?T==="y"?Y.clientHeight||0:Y.clientWidth||0:0,U=V/2-j/2,G=R[B],K=D-L[M]-R[x],$=D/2-L[M]/2+U,W=(0,s.within)(G,$,K),tt=T;b.modifiersData[I]=(m={},m[tt]=W,m.centerOffset=W-$,m)}}function g(p){var m=p.state,b=p.options,I=b.element,A=I===void 0?"[data-popper-arrow]":I;A!=null&&(typeof A=="string"&&(A=m.elements.popper.querySelector(A),!A)||(0,o.default)(m.elements.popper,A)&&(m.elements.arrow=A))}var v=e.default={name:"arrow",enabled:!0,phase:"main",fn:l,effect:g,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]}},59894:function(E,e,t){"use strict";e.__esModule=!0,e.default=void 0,e.mapToStyles=l;var n=t(46206),r=f(t(44896)),o=f(t(95115)),a=f(t(40600)),u=f(t(16599)),s=f(t(83104)),c=f(t(45)),h=t(63618);function f(p){return p&&p.__esModule?p:{default:p}}var i={top:"auto",right:"auto",bottom:"auto",left:"auto"};function d(p,m){var b=p.x,I=p.y,A=m.devicePixelRatio||1;return{x:(0,h.round)(b*A)/A||0,y:(0,h.round)(I*A)/A||0}}function l(p){var m,b=p.popper,I=p.popperRect,A=p.placement,C=p.variation,S=p.offsets,y=p.position,T=p.gpuAcceleration,N=p.adaptive,M=p.roundOffsets,R=p.isFixed,L=S.x,B=L===void 0?0:L,x=S.y,V=x===void 0?0:x,j=typeof M=="function"?M({x:B,y:V}):{x:B,y:V};B=j.x,V=j.y;var Y=S.hasOwnProperty("x"),D=S.hasOwnProperty("y"),U=n.left,G=n.top,K=window;if(N){var $=(0,r.default)(b),W="clientHeight",tt="clientWidth";if($===(0,o.default)(b)&&($=(0,a.default)(b),(0,u.default)($).position!=="static"&&y==="absolute"&&(W="scrollHeight",tt="scrollWidth")),$=$,A===n.top||(A===n.left||A===n.right)&&C===n.end){G=n.bottom;var ut=R&&$===K&&K.visualViewport?K.visualViewport.height:$[W];V-=ut-I.height,V*=T?1:-1}if(A===n.left||(A===n.top||A===n.bottom)&&C===n.end){U=n.right;var ht=R&&$===K&&K.visualViewport?K.visualViewport.width:$[tt];B-=ht-I.width,B*=T?1:-1}}var k=Object.assign({position:y},N&&i),Z=M===!0?d({x:B,y:V},(0,o.default)(b)):{x:B,y:V};if(B=Z.x,V=Z.y,T){var nt;return Object.assign({},k,(nt={},nt[G]=D?"0":"",nt[U]=Y?"0":"",nt.transform=(K.devicePixelRatio||1)<=1?"translate("+B+"px, "+V+"px)":"translate3d("+B+"px, "+V+"px, 0)",nt))}return Object.assign({},k,(m={},m[G]=D?V+"px":"",m[U]=Y?B+"px":"",m.transform="",m))}function g(p){var m=p.state,b=p.options,I=b.gpuAcceleration,A=I===void 0?!0:I,C=b.adaptive,S=C===void 0?!0:C,y=b.roundOffsets,T=y===void 0?!0:y,N={placement:(0,s.default)(m.placement),variation:(0,c.default)(m.placement),popper:m.elements.popper,popperRect:m.rects.popper,gpuAcceleration:A,isFixed:m.options.strategy==="fixed"};m.modifiersData.popperOffsets!=null&&(m.styles.popper=Object.assign({},m.styles.popper,l(Object.assign({},N,{offsets:m.modifiersData.popperOffsets,position:m.options.strategy,adaptive:S,roundOffsets:T})))),m.modifiersData.arrow!=null&&(m.styles.arrow=Object.assign({},m.styles.arrow,l(Object.assign({},N,{offsets:m.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:T})))),m.attributes.popper=Object.assign({},m.attributes.popper,{"data-popper-placement":m.placement})}var v=e.default={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:g,data:{}}},36692:function(E,e,t){"use strict";e.__esModule=!0,e.default=void 0;var n=r(t(95115));function r(s){return s&&s.__esModule?s:{default:s}}var o={passive:!0};function a(s){var c=s.state,h=s.instance,f=s.options,i=f.scroll,d=i===void 0?!0:i,l=f.resize,g=l===void 0?!0:l,v=(0,n.default)(c.elements.popper),p=[].concat(c.scrollParents.reference,c.scrollParents.popper);return d&&p.forEach(function(m){m.addEventListener("scroll",h.update,o)}),g&&v.addEventListener("resize",h.update,o),function(){d&&p.forEach(function(m){m.removeEventListener("scroll",h.update,o)}),g&&v.removeEventListener("resize",h.update,o)}}var u=e.default={name:"eventListeners",enabled:!0,phase:"write",fn:function(){function s(){}return s}(),effect:a,data:{}}},23798:function(E,e,t){"use strict";e.__esModule=!0,e.default=void 0;var n=h(t(71376)),r=h(t(83104)),o=h(t(86459)),a=h(t(17633)),u=h(t(9041)),s=t(46206),c=h(t(45));function h(l){return l&&l.__esModule?l:{default:l}}function f(l){if((0,r.default)(l)===s.auto)return[];var g=(0,n.default)(l);return[(0,o.default)(l),g,(0,o.default)(g)]}function i(l){var g=l.state,v=l.options,p=l.name;if(!g.modifiersData[p]._skip){for(var m=v.mainAxis,b=m===void 0?!0:m,I=v.altAxis,A=I===void 0?!0:I,C=v.fallbackPlacements,S=v.padding,y=v.boundary,T=v.rootBoundary,N=v.altBoundary,M=v.flipVariations,R=M===void 0?!0:M,L=v.allowedAutoPlacements,B=g.options.placement,x=(0,r.default)(B),V=x===B,j=C||(V||!R?[(0,n.default)(B)]:f(B)),Y=[B].concat(j).reduce(function(rt,X){return rt.concat((0,r.default)(X)===s.auto?(0,u.default)(g,{placement:X,boundary:y,rootBoundary:T,padding:S,flipVariations:R,allowedAutoPlacements:L}):X)},[]),D=g.rects.reference,U=g.rects.popper,G=new Map,K=!0,$=Y[0],W=0;W=0,Z=k?"width":"height",nt=(0,a.default)(g,{placement:tt,boundary:y,rootBoundary:T,altBoundary:N,padding:S}),st=k?ht?s.right:s.left:ht?s.bottom:s.top;D[Z]>U[Z]&&(st=(0,n.default)(st));var ot=(0,n.default)(st),pt=[];if(b&&pt.push(nt[ut]<=0),A&&pt.push(nt[st]<=0,nt[ot]<=0),pt.every(function(rt){return rt})){$=tt,K=!1;break}G.set(tt,pt)}if(K)for(var Ot=R?3:1,Nt=function(){function rt(X){var J=Y.find(function(et){var ft=G.get(et);if(ft)return ft.slice(0,X).every(function(mt){return mt})});if(J)return $=J,"break"}return rt}(),Pt=Ot;Pt>0;Pt--){var dt=Nt(Pt);if(dt==="break")break}g.placement!==$&&(g.modifiersData[p]._skip=!0,g.placement=$,g.reset=!0)}}var d=e.default={name:"flip",enabled:!0,phase:"main",fn:i,requiresIfExists:["offset"],data:{_skip:!1}}},83761:function(E,e,t){"use strict";e.__esModule=!0,e.default=void 0;var n=t(46206),r=o(t(17633));function o(h){return h&&h.__esModule?h:{default:h}}function a(h,f,i){return i===void 0&&(i={x:0,y:0}),{top:h.top-f.height-i.y,right:h.right-f.width+i.x,bottom:h.bottom-f.height+i.y,left:h.left-f.width-i.x}}function u(h){return[n.top,n.right,n.bottom,n.left].some(function(f){return h[f]>=0})}function s(h){var f=h.state,i=h.name,d=f.rects.reference,l=f.rects.popper,g=f.modifiersData.preventOverflow,v=(0,r.default)(f,{elementContext:"reference"}),p=(0,r.default)(f,{altBoundary:!0}),m=a(v,d),b=a(p,l,g),I=u(m),A=u(b);f.modifiersData[i]={referenceClippingOffsets:m,popperEscapeOffsets:b,isReferenceHidden:I,hasPopperEscaped:A},f.attributes.popper=Object.assign({},f.attributes.popper,{"data-popper-reference-hidden":I,"data-popper-escaped":A})}var c=e.default={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:s}},39805:function(E,e,t){"use strict";e.__esModule=!0,e.preventOverflow=e.popperOffsets=e.offset=e.hide=e.flip=e.eventListeners=e.computeStyles=e.arrow=e.applyStyles=void 0;var n=i(t(19975));e.applyStyles=n.default;var r=i(t(52744));e.arrow=r.default;var o=i(t(59894));e.computeStyles=o.default;var a=i(t(36692));e.eventListeners=a.default;var u=i(t(23798));e.flip=u.default;var s=i(t(83761));e.hide=s.default;var c=i(t(61410));e.offset=c.default;var h=i(t(40107));e.popperOffsets=h.default;var f=i(t(75137));e.preventOverflow=f.default;function i(d){return d&&d.__esModule?d:{default:d}}},61410:function(E,e,t){"use strict";e.__esModule=!0,e.default=void 0,e.distanceAndSkiddingToXY=a;var n=o(t(83104)),r=t(46206);function o(c){return c&&c.__esModule?c:{default:c}}function a(c,h,f){var i=(0,n.default)(c),d=[r.left,r.top].indexOf(i)>=0?-1:1,l=typeof f=="function"?f(Object.assign({},h,{placement:c})):f,g=l[0],v=l[1];return g=g||0,v=(v||0)*d,[r.left,r.right].indexOf(i)>=0?{x:v,y:g}:{x:g,y:v}}function u(c){var h=c.state,f=c.options,i=c.name,d=f.offset,l=d===void 0?[0,0]:d,g=r.placements.reduce(function(b,I){return b[I]=a(I,h.rects,l),b},{}),v=g[h.placement],p=v.x,m=v.y;h.modifiersData.popperOffsets!=null&&(h.modifiersData.popperOffsets.x+=p,h.modifiersData.popperOffsets.y+=m),h.modifiersData[i]=g}var s=e.default={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:u}},40107:function(E,e,t){"use strict";e.__esModule=!0,e.default=void 0;var n=r(t(89951));function r(u){return u&&u.__esModule?u:{default:u}}function o(u){var s=u.state,c=u.name;s.modifiersData[c]=(0,n.default)({reference:s.rects.reference,element:s.rects.popper,strategy:"absolute",placement:s.placement})}var a=e.default={name:"popperOffsets",enabled:!0,phase:"read",fn:o,data:{}}},75137:function(E,e,t){"use strict";e.__esModule=!0,e.default=void 0;var n=t(46206),r=l(t(83104)),o=l(t(41199)),a=l(t(28066)),u=t(28595),s=l(t(28811)),c=l(t(44896)),h=l(t(17633)),f=l(t(45)),i=l(t(34780)),d=t(63618);function l(p){return p&&p.__esModule?p:{default:p}}function g(p){var m=p.state,b=p.options,I=p.name,A=b.mainAxis,C=A===void 0?!0:A,S=b.altAxis,y=S===void 0?!1:S,T=b.boundary,N=b.rootBoundary,M=b.altBoundary,R=b.padding,L=b.tether,B=L===void 0?!0:L,x=b.tetherOffset,V=x===void 0?0:x,j=(0,h.default)(m,{boundary:T,rootBoundary:N,padding:R,altBoundary:M}),Y=(0,r.default)(m.placement),D=(0,f.default)(m.placement),U=!D,G=(0,o.default)(Y),K=(0,a.default)(G),$=m.modifiersData.popperOffsets,W=m.rects.reference,tt=m.rects.popper,ut=typeof V=="function"?V(Object.assign({},m.rects,{placement:m.placement})):V,ht=typeof ut=="number"?{mainAxis:ut,altAxis:ut}:Object.assign({mainAxis:0,altAxis:0},ut),k=m.modifiersData.offset?m.modifiersData.offset[m.placement]:null,Z={x:0,y:0};if($){if(C){var nt,st=G==="y"?n.top:n.left,ot=G==="y"?n.bottom:n.right,pt=G==="y"?"height":"width",Ot=$[G],Nt=Ot+j[st],Pt=Ot-j[ot],dt=B?-tt[pt]/2:0,rt=D===n.start?W[pt]:tt[pt],X=D===n.start?-tt[pt]:-W[pt],J=m.elements.arrow,et=B&&J?(0,s.default)(J):{width:0,height:0},ft=m.modifiersData["arrow#persistent"]?m.modifiersData["arrow#persistent"].padding:(0,i.default)(),mt=ft[st],at=ft[ot],vt=(0,u.within)(0,W[pt],et[pt]),It=U?W[pt]/2-dt-vt-mt-ht.mainAxis:rt-vt-mt-ht.mainAxis,Q=U?-W[pt]/2+dt+vt+at+ht.mainAxis:X+vt+at+ht.mainAxis,ct=m.elements.arrow&&(0,c.default)(m.elements.arrow),yt=ct?G==="y"?ct.clientTop||0:ct.clientLeft||0:0,Tt=(nt=k==null?void 0:k[G])!=null?nt:0,Dt=Ot+It-Tt-yt,jt=Ot+Q-Tt,Ct=(0,u.within)(B?(0,d.min)(Nt,Dt):Nt,Ot,B?(0,d.max)(Pt,jt):Pt);$[G]=Ct,Z[G]=Ct-Ot}if(y){var lt,gt=G==="x"?n.top:n.left,bt=G==="x"?n.bottom:n.right,St=$[K],At=K==="y"?"height":"width",Ft=St+j[gt],Vt=St-j[bt],Gt=[n.top,n.left].indexOf(Y)!==-1,Ht=(lt=k==null?void 0:k[K])!=null?lt:0,Yt=Gt?Ft:St-W[At]-tt[At]-Ht+ht.altAxis,Wt=Gt?St+W[At]+tt[At]-Ht-ht.altAxis:Vt,Zt=B&&Gt?(0,u.withinMaxClamp)(Yt,St,Wt):(0,u.within)(B?Yt:Ft,St,B?Wt:Vt);$[K]=Zt,Z[K]=Zt-St}m.modifiersData[I]=Z}}var v=e.default={name:"preventOverflow",enabled:!0,phase:"main",fn:g,requiresIfExists:["offset"]}},2473:function(E,e,t){"use strict";e.__esModule=!0,e.defaultModifiers=e.createPopper=void 0;var n=t(96376);e.popperGenerator=n.popperGenerator,e.detectOverflow=n.detectOverflow;var r=s(t(36692)),o=s(t(40107)),a=s(t(59894)),u=s(t(19975));function s(f){return f&&f.__esModule?f:{default:f}}var c=e.defaultModifiers=[r.default,o.default,a.default,u.default],h=e.createPopper=(0,n.popperGenerator)({defaultModifiers:c})},83312:function(E,e,t){"use strict";e.__esModule=!0;var n={createPopper:!0,createPopperLite:!0,defaultModifiers:!0,popperGenerator:!0,detectOverflow:!0};e.defaultModifiers=e.createPopperLite=e.createPopper=void 0;var r=t(96376);e.popperGenerator=r.popperGenerator,e.detectOverflow=r.detectOverflow;var o=v(t(36692)),a=v(t(40107)),u=v(t(59894)),s=v(t(19975)),c=v(t(61410)),h=v(t(23798)),f=v(t(75137)),i=v(t(52744)),d=v(t(83761)),l=t(2473);e.createPopperLite=l.createPopper;var g=t(39805);Object.keys(g).forEach(function(b){b==="default"||b==="__esModule"||Object.prototype.hasOwnProperty.call(n,b)||b in e&&e[b]===g[b]||(e[b]=g[b])});function v(b){return b&&b.__esModule?b:{default:b}}var p=e.defaultModifiers=[o.default,a.default,u.default,s.default,c.default,h.default,f.default,i.default,d.default],m=e.createPopperLite=e.createPopper=(0,r.popperGenerator)({defaultModifiers:p})},9041:function(E,e,t){"use strict";e.__esModule=!0,e.default=s;var n=u(t(45)),r=t(46206),o=u(t(17633)),a=u(t(83104));function u(c){return c&&c.__esModule?c:{default:c}}function s(c,h){h===void 0&&(h={});var f=h,i=f.placement,d=f.boundary,l=f.rootBoundary,g=f.padding,v=f.flipVariations,p=f.allowedAutoPlacements,m=p===void 0?r.placements:p,b=(0,n.default)(i),I=b?v?r.variationPlacements:r.variationPlacements.filter(function(S){return(0,n.default)(S)===b}):r.basePlacements,A=I.filter(function(S){return m.indexOf(S)>=0});A.length===0&&(A=I);var C=A.reduce(function(S,y){return S[y]=(0,o.default)(c,{placement:y,boundary:d,rootBoundary:l,padding:g})[(0,a.default)(y)],S},{});return Object.keys(C).sort(function(S,y){return C[S]-C[y]})}},89951:function(E,e,t){"use strict";e.__esModule=!0,e.default=s;var n=u(t(83104)),r=u(t(45)),o=u(t(41199)),a=t(46206);function u(c){return c&&c.__esModule?c:{default:c}}function s(c){var h=c.reference,f=c.element,i=c.placement,d=i?(0,n.default)(i):null,l=i?(0,r.default)(i):null,g=h.x+h.width/2-f.width/2,v=h.y+h.height/2-f.height/2,p;switch(d){case a.top:p={x:g,y:h.y-f.height};break;case a.bottom:p={x:g,y:h.y+h.height};break;case a.right:p={x:h.x+h.width,y:v};break;case a.left:p={x:h.x-f.width,y:v};break;default:p={x:h.x,y:h.y}}var m=d?(0,o.default)(d):null;if(m!=null){var b=m==="y"?"height":"width";switch(l){case a.start:p[m]=p[m]-(h[b]/2-f[b]/2);break;case a.end:p[m]=p[m]+(h[b]/2-f[b]/2);break;default:}}return p}},10579:function(E,e){"use strict";e.__esModule=!0,e.default=t;function t(n){var r;return function(){return r||(r=new Promise(function(o){Promise.resolve().then(function(){r=void 0,o(n())})})),r}}},17633:function(E,e,t){"use strict";e.__esModule=!0,e.default=d;var n=i(t(49035)),r=i(t(40600)),o=i(t(37786)),a=i(t(89951)),u=i(t(81666)),s=t(46206),c=t(75573),h=i(t(43286)),f=i(t(81447));function i(l){return l&&l.__esModule?l:{default:l}}function d(l,g){g===void 0&&(g={});var v=g,p=v.placement,m=p===void 0?l.placement:p,b=v.strategy,I=b===void 0?l.strategy:b,A=v.boundary,C=A===void 0?s.clippingParents:A,S=v.rootBoundary,y=S===void 0?s.viewport:S,T=v.elementContext,N=T===void 0?s.popper:T,M=v.altBoundary,R=M===void 0?!1:M,L=v.padding,B=L===void 0?0:L,x=(0,h.default)(typeof B!="number"?B:(0,f.default)(B,s.basePlacements)),V=N===s.popper?s.reference:s.popper,j=l.rects.popper,Y=l.elements[R?V:N],D=(0,n.default)((0,c.isElement)(Y)?Y:Y.contextElement||(0,r.default)(l.elements.popper),C,y,I),U=(0,o.default)(l.elements.reference),G=(0,a.default)({reference:U,element:j,strategy:"absolute",placement:m}),K=(0,u.default)(Object.assign({},j,G)),$=N===s.popper?K:U,W={top:D.top-$.top+x.top,bottom:$.bottom-D.bottom+x.bottom,left:D.left-$.left+x.left,right:$.right-D.right+x.right},tt=l.modifiersData.offset;if(N===s.popper&&tt){var ut=tt[m];Object.keys(W).forEach(function(ht){var k=[s.right,s.bottom].indexOf(ht)>=0?1:-1,Z=[s.top,s.bottom].indexOf(ht)>=0?"y":"x";W[ht]+=ut[Z]*k})}return W}},81447:function(E,e){"use strict";e.__esModule=!0,e.default=t;function t(n,r){return r.reduce(function(o,a){return o[a]=n,o},{})}},28066:function(E,e){"use strict";e.__esModule=!0,e.default=t;function t(n){return n==="x"?"y":"x"}},83104:function(E,e,t){"use strict";e.__esModule=!0,e.default=r;var n=t(46206);function r(o){return o.split("-")[0]}},34780:function(E,e){"use strict";e.__esModule=!0,e.default=t;function t(){return{top:0,right:0,bottom:0,left:0}}},41199:function(E,e){"use strict";e.__esModule=!0,e.default=t;function t(n){return["top","bottom"].indexOf(n)>=0?"x":"y"}},71376:function(E,e){"use strict";e.__esModule=!0,e.default=n;var t={left:"right",right:"left",bottom:"top",top:"bottom"};function n(r){return r.replace(/left|right|bottom|top/g,function(o){return t[o]})}},86459:function(E,e){"use strict";e.__esModule=!0,e.default=n;var t={start:"end",end:"start"};function n(r){return r.replace(/start|end/g,function(o){return t[o]})}},45:function(E,e){"use strict";e.__esModule=!0,e.default=t;function t(n){return n.split("-")[1]}},63618:function(E,e){"use strict";e.__esModule=!0,e.round=e.min=e.max=void 0;var t=e.max=Math.max,n=e.min=Math.min,r=e.round=Math.round},56500:function(E,e){"use strict";e.__esModule=!0,e.default=t;function t(n){var r=n.reduce(function(o,a){var u=o[a.name];return o[a.name]=u?Object.assign({},u,a,{options:Object.assign({},u.options,a.options),data:Object.assign({},u.data,a.data)}):a,o},{});return Object.keys(r).map(function(o){return r[o]})}},43286:function(E,e,t){"use strict";e.__esModule=!0,e.default=o;var n=r(t(34780));function r(a){return a&&a.__esModule?a:{default:a}}function o(a){return Object.assign({},(0,n.default)(),a)}},33118:function(E,e,t){"use strict";e.__esModule=!0,e.default=o;var n=t(46206);function r(a){var u=new Map,s=new Set,c=[];a.forEach(function(f){u.set(f.name,f)});function h(f){s.add(f.name);var i=[].concat(f.requires||[],f.requiresIfExists||[]);i.forEach(function(d){if(!s.has(d)){var l=u.get(d);l&&h(l)}}),c.push(f)}return a.forEach(function(f){s.has(f.name)||h(f)}),c}function o(a){var u=r(a);return n.modifierPhases.reduce(function(s,c){return s.concat(u.filter(function(h){return h.phase===c}))},[])}},81666:function(E,e){"use strict";e.__esModule=!0,e.default=t;function t(n){return Object.assign({},n,{left:n.x,top:n.y,right:n.x+n.width,bottom:n.y+n.height})}},35366:function(E,e){"use strict";e.__esModule=!0,e.default=t;function t(){var n=navigator.userAgentData;return n!=null&&n.brands&&Array.isArray(n.brands)?n.brands.map(function(r){return r.brand+"/"+r.version}).join(" "):navigator.userAgent}},28595:function(E,e,t){"use strict";e.__esModule=!0,e.within=r,e.withinMaxClamp=o;var n=t(63618);function r(a,u,s){return(0,n.max)(a,(0,n.min)(u,s))}function o(a,u,s){var c=r(a,u,s);return c>s?s:c}},22734:function(E){"use strict";/*! @license DOMPurify 2.5.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.5.0/LICENSE */(function(e,t){E.exports=t()})(void 0,function(){"use strict";function e(Q){"@babel/helpers - typeof";return e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(ct){return typeof ct}:function(ct){return ct&&typeof Symbol=="function"&&ct.constructor===Symbol&&ct!==Symbol.prototype?"symbol":typeof ct},e(Q)}function t(Q,ct){return t=Object.setPrototypeOf||function(){function yt(Tt,Dt){return Tt.__proto__=Dt,Tt}return yt}(),t(Q,ct)}function n(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(Q){return!1}}function r(Q,ct,yt){return n()?r=Reflect.construct:r=function(){function Tt(Dt,jt,Ct){var lt=[null];lt.push.apply(lt,jt);var gt=Function.bind.apply(Dt,lt),bt=new gt;return Ct&&t(bt,Ct.prototype),bt}return Tt}(),r.apply(null,arguments)}function o(Q){return a(Q)||u(Q)||s(Q)||h()}function a(Q){if(Array.isArray(Q))return c(Q)}function u(Q){if(typeof Symbol!="undefined"&&Q[Symbol.iterator]!=null||Q["@@iterator"]!=null)return Array.from(Q)}function s(Q,ct){if(Q){if(typeof Q=="string")return c(Q,ct);var yt=Object.prototype.toString.call(Q).slice(8,-1);if(yt==="Object"&&Q.constructor&&(yt=Q.constructor.name),yt==="Map"||yt==="Set")return Array.from(Q);if(yt==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(yt))return c(Q,ct)}}function c(Q,ct){(ct==null||ct>Q.length)&&(ct=Q.length);for(var yt=0,Tt=new Array(ct);yt1?yt-1:0),Dt=1;Dt/gm),Nt=p(/\${[\w\W]*}/gm),Pt=p(/^data-[\-\w.\u00B7-\uFFFF]/),dt=p(/^aria-[\-\w]+$/),rt=p(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),X=p(/^(?:\w+script|data):/i),J=p(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),et=p(/^html$/i),ft=p(/^[a-z][.\w]*(-[.\w]+)+$/i),mt=function(){function Q(){return typeof window=="undefined"?null:window}return Q}(),at=function(){function Q(ct,yt){if(e(ct)!=="object"||typeof ct.createPolicy!="function")return null;var Tt=null,Dt="data-tt-policy-suffix";yt.currentScript&&yt.currentScript.hasAttribute(Dt)&&(Tt=yt.currentScript.getAttribute(Dt));var jt="dompurify"+(Tt?"#"+Tt:"");try{return ct.createPolicy(jt,{createHTML:function(){function Ct(lt){return lt}return Ct}(),createScriptURL:function(){function Ct(lt){return lt}return Ct}()})}catch(Ct){return null}}return Q}();function vt(){var Q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:mt(),ct=function(){function O(P){return vt(P)}return O}();if(ct.version="2.5.0",ct.removed=[],!Q||!Q.document||Q.document.nodeType!==9)return ct.isSupported=!1,ct;var yt=Q.document,Tt=Q.document,Dt=Q.DocumentFragment,jt=Q.HTMLTemplateElement,Ct=Q.Node,lt=Q.Element,gt=Q.NodeFilter,bt=Q.NamedNodeMap,St=bt===void 0?Q.NamedNodeMap||Q.MozNamedAttrMap:bt,At=Q.HTMLFormElement,Ft=Q.DOMParser,Vt=Q.trustedTypes,Gt=lt.prototype,Ht=G(Gt,"cloneNode"),Yt=G(Gt,"nextSibling"),Wt=G(Gt,"childNodes"),Zt=G(Gt,"parentNode");if(typeof jt=="function"){var Le=Tt.createElement("template");Le.content&&Le.content.ownerDocument&&(Tt=Le.content.ownerDocument)}var _t=at(Vt,yt),Pe=_t?_t.createHTML(""):"",Ne=Tt,me=Ne.implementation,ye=Ne.createNodeIterator,an=Ne.createDocumentFragment,un=Ne.getElementsByTagName,Tn=yt.importNode,Ke={};try{Ke=U(Tt).documentMode?Tt.documentMode:{}}catch(O){}var re={};ct.isSupported=typeof Zt=="function"&&me&&me.createHTMLDocument!==void 0&&Ke!==9;var $e=pt,We=Ot,Be=Nt,sn=Pt,In=dt,cn=X,ln=J,An=ft,Se=rt,zt=null,te=D({},[].concat(o(K),o($),o(W),o(ut),o(k))),Kt=null,Ee=D({},[].concat(o(Z),o(nt),o(st),o(ot))),kt=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),le=null,Ce=null,He=!0,ze=!0,fn=!1,dn=!0,be=!1,De=!0,fe=!1,Fe=!1,xe=!1,de=!1,Xt=!1,Ve=!1,vn=!0,ke=!1,hn="user-content-",ue=!0,Me=!1,Te={},Ie=null,Xe=D({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Je=null,gn=D({},["audio","video","img","source","image","track"]),je=null,pn=D({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),ee="http://www.w3.org/1998/Math/MathML",Ue="http://www.w3.org/2000/svg",se="http://www.w3.org/1999/xhtml",Ae=se,Qe=!1,Ze=null,On=D({},[ee,Ue,se],N),ce,Pn=["application/xhtml+xml","text/html"],mn="text/html",Jt,Oe=null,Nn=Tt.createElement("form"),yn=function(){function O(P){return P instanceof RegExp||P instanceof Function}return O}(),qe=function(){function O(P){Oe&&Oe===P||((!P||e(P)!=="object")&&(P={}),P=U(P),ce=Pn.indexOf(P.PARSER_MEDIA_TYPE)===-1?ce=mn:ce=P.PARSER_MEDIA_TYPE,Jt=ce==="application/xhtml+xml"?N:T,zt="ALLOWED_TAGS"in P?D({},P.ALLOWED_TAGS,Jt):te,Kt="ALLOWED_ATTR"in P?D({},P.ALLOWED_ATTR,Jt):Ee,Ze="ALLOWED_NAMESPACES"in P?D({},P.ALLOWED_NAMESPACES,N):On,je="ADD_URI_SAFE_ATTR"in P?D(U(pn),P.ADD_URI_SAFE_ATTR,Jt):pn,Je="ADD_DATA_URI_TAGS"in P?D(U(gn),P.ADD_DATA_URI_TAGS,Jt):gn,Ie="FORBID_CONTENTS"in P?D({},P.FORBID_CONTENTS,Jt):Xe,le="FORBID_TAGS"in P?D({},P.FORBID_TAGS,Jt):{},Ce="FORBID_ATTR"in P?D({},P.FORBID_ATTR,Jt):{},Te="USE_PROFILES"in P?P.USE_PROFILES:!1,He=P.ALLOW_ARIA_ATTR!==!1,ze=P.ALLOW_DATA_ATTR!==!1,fn=P.ALLOW_UNKNOWN_PROTOCOLS||!1,dn=P.ALLOW_SELF_CLOSE_IN_ATTR!==!1,be=P.SAFE_FOR_TEMPLATES||!1,De=P.SAFE_FOR_XML!==!1,fe=P.WHOLE_DOCUMENT||!1,de=P.RETURN_DOM||!1,Xt=P.RETURN_DOM_FRAGMENT||!1,Ve=P.RETURN_TRUSTED_TYPE||!1,xe=P.FORCE_BODY||!1,vn=P.SANITIZE_DOM!==!1,ke=P.SANITIZE_NAMED_PROPS||!1,ue=P.KEEP_CONTENT!==!1,Me=P.IN_PLACE||!1,Se=P.ALLOWED_URI_REGEXP||Se,Ae=P.NAMESPACE||se,kt=P.CUSTOM_ELEMENT_HANDLING||{},P.CUSTOM_ELEMENT_HANDLING&&yn(P.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(kt.tagNameCheck=P.CUSTOM_ELEMENT_HANDLING.tagNameCheck),P.CUSTOM_ELEMENT_HANDLING&&yn(P.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(kt.attributeNameCheck=P.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),P.CUSTOM_ELEMENT_HANDLING&&typeof P.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(kt.allowCustomizedBuiltInElements=P.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),be&&(ze=!1),Xt&&(de=!0),Te&&(zt=D({},o(k)),Kt=[],Te.html===!0&&(D(zt,K),D(Kt,Z)),Te.svg===!0&&(D(zt,$),D(Kt,nt),D(Kt,ot)),Te.svgFilters===!0&&(D(zt,W),D(Kt,nt),D(Kt,ot)),Te.mathMl===!0&&(D(zt,ut),D(Kt,st),D(Kt,ot))),P.ADD_TAGS&&(zt===te&&(zt=U(zt)),D(zt,P.ADD_TAGS,Jt)),P.ADD_ATTR&&(Kt===Ee&&(Kt=U(Kt)),D(Kt,P.ADD_ATTR,Jt)),P.ADD_URI_SAFE_ATTR&&D(je,P.ADD_URI_SAFE_ATTR,Jt),P.FORBID_CONTENTS&&(Ie===Xe&&(Ie=U(Ie)),D(Ie,P.FORBID_CONTENTS,Jt)),ue&&(zt["#text"]=!0),fe&&D(zt,["html","head","body"]),zt.table&&(D(zt,["tbody"]),delete le.tbody),v&&v(P),Oe=P)}return O}(),Sn=D({},["mi","mo","mn","ms","mtext"]),oe=D({},["foreignobject","desc","title","annotation-xml"]),Ge=D({},["title","style","font","a","script"]),Re=D({},$);D(Re,W),D(Re,tt);var _e=D({},ut);D(_e,ht);var Mn=function(){function O(P){var w=Zt(P);(!w||!w.tagName)&&(w={namespaceURI:Ae,tagName:"template"});var F=T(P.tagName),H=T(w.tagName);return Ze[P.namespaceURI]?P.namespaceURI===Ue?w.namespaceURI===se?F==="svg":w.namespaceURI===ee?F==="svg"&&(H==="annotation-xml"||Sn[H]):!!Re[F]:P.namespaceURI===ee?w.namespaceURI===se?F==="math":w.namespaceURI===Ue?F==="math"&&oe[H]:!!_e[F]:P.namespaceURI===se?w.namespaceURI===Ue&&!oe[H]||w.namespaceURI===ee&&!Sn[H]?!1:!_e[F]&&(Ge[F]||!Re[F]):!!(ce==="application/xhtml+xml"&&Ze[P.namespaceURI]):!1}return O}(),ne=function(){function O(P){y(ct.removed,{element:P});try{P.parentNode.removeChild(P)}catch(w){try{P.outerHTML=Pe}catch(F){P.remove()}}}return O}(),Ye=function(){function O(P,w){try{y(ct.removed,{attribute:w.getAttributeNode(P),from:w})}catch(F){y(ct.removed,{attribute:null,from:w})}if(w.removeAttribute(P),P==="is"&&!Kt[P])if(de||Xt)try{ne(w)}catch(F){}else try{w.setAttribute(P,"")}catch(F){}}return O}(),En=function(){function O(P){var w,F;if(xe)P=""+P;else{var H=M(P,/^[\r\n\t ]+/);F=H&&H[0]}ce==="application/xhtml+xml"&&Ae===se&&(P=''+P+"");var q=_t?_t.createHTML(P):P;if(Ae===se)try{w=new Ft().parseFromString(q,ce)}catch(it){}if(!w||!w.documentElement){w=me.createDocument(Ae,"template",null);try{w.documentElement.innerHTML=Qe?Pe:q}catch(it){}}var _=w.body||w.documentElement;return P&&F&&_.insertBefore(Tt.createTextNode(F),_.childNodes[0]||null),Ae===se?un.call(w,fe?"html":"body")[0]:fe?w.documentElement:_}return O}(),we=function(){function O(P){return ye.call(P.ownerDocument||P,P,gt.SHOW_ELEMENT|gt.SHOW_COMMENT|gt.SHOW_TEXT|gt.SHOW_PROCESSING_INSTRUCTION|gt.SHOW_CDATA_SECTION,null,!1)}return O}(),Rn=function(){function O(P){return P instanceof At&&(typeof P.nodeName!="string"||typeof P.textContent!="string"||typeof P.removeChild!="function"||!(P.attributes instanceof St)||typeof P.removeAttribute!="function"||typeof P.setAttribute!="function"||typeof P.namespaceURI!="string"||typeof P.insertBefore!="function"||typeof P.hasChildNodes!="function")}return O}(),he=function(){function O(P){return e(Ct)==="object"?P instanceof Ct:P&&e(P)==="object"&&typeof P.nodeType=="number"&&typeof P.nodeName=="string"}return O}(),ae=function(){function O(P,w,F){re[P]&&C(re[P],function(H){H.call(ct,w,F,Oe)})}return O}(),Cn=function(){function O(P){var w;if(ae("beforeSanitizeElements",P,null),Rn(P)||x(/[\u0080-\uFFFF]/,P.nodeName))return ne(P),!0;var F=Jt(P.nodeName);if(ae("uponSanitizeElement",P,{tagName:F,allowedTags:zt}),P.hasChildNodes()&&!he(P.firstElementChild)&&(!he(P.content)||!he(P.content.firstElementChild))&&x(/<[/\w]/g,P.innerHTML)&&x(/<[/\w]/g,P.textContent)||F==="select"&&x(/