From b99556c70fbaa6f0646ad77e8e8b70844e201c74 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 23 Aug 2018 01:08:43 -0700 Subject: [PATCH 1/6] Nanites port from /tg/station, original coder XDTM --- code/__DEFINES/atom_hud.dm | 34 +- code/__DEFINES/components.dm | 66 +- code/__DEFINES/logging.dm | 1 + code/__DEFINES/machines.dm | 1 + code/__DEFINES/nanites.dm | 11 + code/__DEFINES/traits.dm | 1 + .../subsystem/processing/nanites.dm | 21 + code/datums/components/nanites.dm | 314 ++ code/datums/components/storage/storage.dm | 2 +- .../diseases/advance/symptoms/nanites.dm | 63 + code/game/area/Space_Station_13_areas.dm | 13 + code/game/atoms_movable.dm | 3 +- code/game/data_huds.dm | 38 +- code/game/gamemodes/clock_cult/clock_cult.dm | 6 +- code/game/gamemodes/cult/cult.dm | 2 +- code/game/machinery/computer/crew.dm | 15 +- code/game/machinery/constructable_frame.dm | 5 +- code/game/machinery/doors/passworddoor.dm | 1 + code/game/machinery/hologram.dm | 1 + .../machinery/porta_turret/portable_turret.dm | 2 +- code/game/mecha/mecha.dm | 1 + .../circuitboards/computer_circuitboards.dm | 8 + .../circuitboards/machine_circuitboards.dm | 41 + code/game/objects/items/defib.dm | 2 + .../objects/items/devices/radio/intercom.dm | 2 +- .../game/objects/items/devices/radio/radio.dm | 1 + code/game/objects/items/devices/scanners.dm | 27 + .../objects/items/devices/taperecorder.dm | 1 + code/game/objects/items/eightball.dm | 1 + .../items/implants/implant_mindshield.dm | 12 +- .../objects/items/implants/implantchair.dm | 2 +- code/game/objects/items/religion.dm | 2 +- code/game/objects/items/storage/boxes.dm | 8 + code/game/objects/items/stunbaton.dm | 1 + code/game/objects/items/teleprod.dm | 3 + code/game/say.dm | 2 +- code/modules/admin/admin_investigate.dm | 2 +- code/modules/admin/antag_panel.dm | 20 +- .../abductor/equipment/abduction_gear.dm | 1 + .../clockcult/clock_mobs/_eminence.dm | 5 +- .../antagonists/revolution/revolution.dm | 2 +- code/modules/assembly/voice.dm | 1 + code/modules/flufftext/Hallucination.dm | 31 +- .../integrated_electronics/subtypes/input.dm | 1 + code/modules/jobs/access.dm | 5 +- code/modules/mob/dead/observer/say.dm | 1 + code/modules/mob/death.dm | 2 +- .../mob/living/carbon/carbon_defines.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 2 +- .../mob/living/carbon/human/human_defines.dm | 2 +- .../mob/living/carbon/human/species.dm | 2 + .../carbon/human/species_types/dullahan.dm | 2 +- .../carbon/human/species_types/jellypeople.dm | 2 +- .../mob/living/carbon/monkey/monkey.dm | 2 +- code/modules/mob/living/carbon/say.dm | 1 + code/modules/mob/living/death.dm | 2 +- code/modules/mob/living/living.dm | 3 +- code/modules/mob/living/living_defense.dm | 1 + code/modules/mob/living/living_defines.dm | 2 +- code/modules/mob/living/say.dm | 1 + .../mob/living/silicon/ai/freelook/eye.dm | 1 + .../hostile/megafauna/colossus.dm | 2 +- .../mob/living/simple_animal/parrot.dm | 2 +- .../mob/living/simple_animal/slime/say.dm | 2 +- code/modules/mob/mob_helpers.dm | 7 - .../projectiles/projectile/energy/stun.dm | 1 + .../chemistry/reagents/medicine_reagents.dm | 22 +- .../chemistry/reagents/other_reagents.dm | 4 +- .../reagents/reagent_containers/hypospray.dm | 6 +- .../research/designs/comp_board_designs.dm | 16 + .../research/designs/electronics_designs.dm | 33 + .../research/designs/machine_designs.dm | 34 +- .../research/designs/nanite_designs.dm | 477 ++ .../research/nanites/nanite_chamber.dm | 227 + .../nanites/nanite_chamber_computer.dm | 158 + .../nanites/nanite_cloud_controller.dm | 196 + .../research/nanites/nanite_hijacker.dm | 151 + .../research/nanites/nanite_misc_items.dm | 9 + .../research/nanites/nanite_program_hub.dm | 118 + .../research/nanites/nanite_programmer.dm | 140 + .../research/nanites/nanite_programs.dm | 254 + .../nanites/nanite_programs/buffing.dm | 130 + .../nanites/nanite_programs/healing.dm | 250 + .../research/nanites/nanite_programs/rogue.dm | 119 + .../nanites/nanite_programs/sensor.dm | 392 ++ .../nanites/nanite_programs/suppression.dm | 311 ++ .../nanites/nanite_programs/utility.dm | 265 + .../nanites/nanite_programs/weapon.dm | 200 + .../modules/research/nanites/nanite_remote.dm | 172 + .../modules/research/nanites/program_disks.dm | 133 + .../research/nanites/public_chamber.dm | 174 + code/modules/research/techweb/all_nodes.dm | 85 + code/modules/surgery/advanced/brainwashing.dm | 2 +- icons/mob/hud.dmi | Bin 14404 -> 14784 bytes icons/obj/computer.dmi | Bin 111737 -> 114704 bytes icons/obj/device.dmi | Bin 41095 -> 42939 bytes icons/obj/machines/nanite_chamber.dmi | Bin 0 -> 14572 bytes icons/obj/machines/research.dmi | Bin 22627 -> 28393 bytes tgstation.dme | 22 + tgui/assets/tgui.css | 2 +- tgui/assets/tgui.js | 40 +- tgui/package-lock.json | 4279 +++-------------- .../interfaces/nanite_chamber_control.ract | 109 + tgui/src/interfaces/nanite_cloud_control.ract | 104 + tgui/src/interfaces/nanite_program_hub.ract | 49 + tgui/src/interfaces/nanite_programmer.ract | 54 + tgui/src/interfaces/nanite_remote.ract | 36 + 107 files changed, 5805 insertions(+), 3792 deletions(-) create mode 100644 code/__DEFINES/nanites.dm create mode 100644 code/controllers/subsystem/processing/nanites.dm create mode 100644 code/datums/components/nanites.dm create mode 100644 code/datums/diseases/advance/symptoms/nanites.dm create mode 100644 code/modules/research/designs/nanite_designs.dm create mode 100644 code/modules/research/nanites/nanite_chamber.dm create mode 100644 code/modules/research/nanites/nanite_chamber_computer.dm create mode 100644 code/modules/research/nanites/nanite_cloud_controller.dm create mode 100644 code/modules/research/nanites/nanite_hijacker.dm create mode 100644 code/modules/research/nanites/nanite_misc_items.dm create mode 100644 code/modules/research/nanites/nanite_program_hub.dm create mode 100644 code/modules/research/nanites/nanite_programmer.dm create mode 100644 code/modules/research/nanites/nanite_programs.dm create mode 100644 code/modules/research/nanites/nanite_programs/buffing.dm create mode 100644 code/modules/research/nanites/nanite_programs/healing.dm create mode 100644 code/modules/research/nanites/nanite_programs/rogue.dm create mode 100644 code/modules/research/nanites/nanite_programs/sensor.dm create mode 100644 code/modules/research/nanites/nanite_programs/suppression.dm create mode 100644 code/modules/research/nanites/nanite_programs/utility.dm create mode 100644 code/modules/research/nanites/nanite_programs/weapon.dm create mode 100644 code/modules/research/nanites/nanite_remote.dm create mode 100644 code/modules/research/nanites/program_disks.dm create mode 100644 code/modules/research/nanites/public_chamber.dm create mode 100644 icons/obj/machines/nanite_chamber.dmi create mode 100644 tgui/src/interfaces/nanite_chamber_control.ract create mode 100644 tgui/src/interfaces/nanite_cloud_control.ract create mode 100644 tgui/src/interfaces/nanite_program_hub.ract create mode 100644 tgui/src/interfaces/nanite_programmer.ract create mode 100644 tgui/src/interfaces/nanite_remote.ract diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm index 393ffce4fd..4fd1669771 100644 --- a/code/__DEFINES/atom_hud.dm +++ b/code/__DEFINES/atom_hud.dm @@ -20,8 +20,11 @@ #define DIAG_PATH_HUD "16"//Bot path indicators #define GLAND_HUD "17"//Gland indicators for abductors #define SENTIENT_DISEASE_HUD "18" +#define AI_DETECT_HUD "19" +#define NANITE_HUD "20" +#define DIAG_NANITE_FULL_HUD "21" //for antag huds. these are used at the /mob level -#define ANTAG_HUD "19" +#define ANTAG_HUD "22" //by default everything in the hud_list of an atom is an image //a value in hud_list with one of these will change that behavior @@ -37,22 +40,23 @@ #define DATA_HUD_DIAGNOSTIC_ADVANCED 6 #define DATA_HUD_ABDUCTOR 7 #define DATA_HUD_SENTIENT_DISEASE 8 +#define DATA_HUD_AI_DETECT 9 //antag HUD defines -#define ANTAG_HUD_CULT 9 -#define ANTAG_HUD_REV 10 -#define ANTAG_HUD_OPS 11 -#define ANTAG_HUD_WIZ 12 -#define ANTAG_HUD_SHADOW 13 -#define ANTAG_HUD_TRAITOR 14 -#define ANTAG_HUD_NINJA 15 -#define ANTAG_HUD_CHANGELING 16 -#define ANTAG_HUD_ABDUCTOR 17 -#define ANTAG_HUD_DEVIL 18 -#define ANTAG_HUD_SINTOUCHED 19 -#define ANTAG_HUD_SOULLESS 20 -#define ANTAG_HUD_CLOCKWORK 21 -#define ANTAG_HUD_BROTHER 22 +#define ANTAG_HUD_CULT 10 +#define ANTAG_HUD_REV 11 +#define ANTAG_HUD_OPS 12 +#define ANTAG_HUD_WIZ 13 +#define ANTAG_HUD_SHADOW 14 +#define ANTAG_HUD_TRAITOR 15 +#define ANTAG_HUD_NINJA 16 +#define ANTAG_HUD_CHANGELING 17 +#define ANTAG_HUD_ABDUCTOR 18 +#define ANTAG_HUD_DEVIL 19 +#define ANTAG_HUD_SINTOUCHED 20 +#define ANTAG_HUD_SOULLESS 21 +#define ANTAG_HUD_CLOCKWORK 22 +#define ANTAG_HUD_BROTHER 23 // Notification action types #define NOTIFY_JUMP "jump" diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 635f3d891b..ff51e2312e 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -29,7 +29,7 @@ // /datum signals #define COMSIG_COMPONENT_ADDED "component_added" //when a component is added to a datum: (/datum/component) #define COMSIG_COMPONENT_REMOVING "component_removing" //before a component is removed from a datum because of RemoveComponent: (/datum/component) -#define COMSIG_PARENT_PREQDELETED "parent_preqdeleted" //before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation +#define COMSIG_PARENT_PREQDELETED "parent_preqdeleted" //before a datum's Destroy() is called: (force), returning a nonzero value will cancel the qdel operation #define COMSIG_PARENT_QDELETED "parent_qdeleted" //after a datum's Destroy() is called: (force, qdel_hint), at this point none of the other components chose to interrupt qdel and Destroy has been called // /atom signals @@ -62,6 +62,14 @@ #define COMSIG_ATOM_SET_LIGHT "atom_set_light" //from base of atom/set_light(): (l_range, l_power, l_color) #define COMSIG_ATOM_DIR_CHANGE "atom_dir_change" //from base of atom/setDir(): (old_dir, new_dir) #define COMSIG_ATOM_CONTENTS_DEL "atom_contents_del" //from base of atom/handle_atom_del(): (atom/deleted) +#define COMSIG_ATOM_HAS_GRAVITY "atom_has_gravity" //from base of atom/has_gravity(): (turf/location, list/forced_gravities) +#define COMSIG_ATOM_RAD_PROBE "atom_rad_probe" //from proc/get_rad_contents(): () + #define COMPONENT_BLOCK_RADIATION 1 +#define COMSIG_ATOM_RAD_CONTAMINATING "atom_rad_contam" //from base of datum/radiation_wave/radiate(): (strength) + #define COMPONENT_BLOCK_CONTAMINATION 1 +#define COMSIG_ATOM_RAD_WAVE_PASSING "atom_rad_wave_pass" //from base of datum/radiation_wave/check_obstructions(): (datum/radiation_wave, width) +#define COMSIG_ATOM_CANREACH "atom_can_reach" //from internal loop in atom/movable/proc/CanReach(): (list/next) + #define COMPONENT_BLOCK_REACH 1 ///////////////// #define COMSIG_ATOM_ATTACK_GHOST "atom_attack_ghost" //from base of atom/attack_ghost(): (mob/dead/observer/ghost) #define COMSIG_ATOM_ATTACK_HAND "atom_attack_hand" //from base of atom/attack_hand(): (mob/user) @@ -72,7 +80,7 @@ #define COMSIG_ENTER_AREA "enter_area" //from base of area/Entered(): (/area) #define COMSIG_EXIT_AREA "exit_area" //from base of area/Exited(): (/area) -#define COMSIG_CLICK "atom_click" //from base of atom/Click(): (location, control, params) +#define COMSIG_CLICK "atom_click" //from base of atom/Click(): (location, control, params, mob/user) #define COMSIG_CLICK_SHIFT "shift_click" //from base of atom/ShiftClick(): (/mob) #define COMSIG_CLICK_CTRL "ctrl_click" //from base of atom/CtrlClickOn(): (/mob) #define COMSIG_CLICK_ALT "alt_click" //from base of atom/AltClick(): (/mob) @@ -87,29 +95,40 @@ // /turf signals #define COMSIG_TURF_CHANGE "turf_change" //from base of turf/ChangeTurf(): (path, list/new_baseturfs, flags, list/transferring_comps) +#define COMSIG_TURF_HAS_GRAVITY "turf_has_gravity" //from base of atom/has_gravity(): (atom/asker, list/forced_gravities) // /atom/movable signals #define COMSIG_MOVABLE_MOVED "movable_moved" //from base of atom/movable/Moved(): (/atom, dir) +#define COMSIG_MOVABLE_CROSS "movable_cross" //from base of atom/movable/Cross(): (/atom/movable) #define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (/atom/movable) #define COMSIG_MOVABLE_UNCROSS "movable_uncross" //from base of atom/movable/Uncross(): (/atom/movable) #define COMPONENT_MOVABLE_BLOCK_UNCROSS 1 #define COMSIG_MOVABLE_UNCROSSED "movable_uncrossed" //from base of atom/movable/Uncrossed(): (/atom/movable) -#define COMSIG_MOVABLE_COLLIDE "movable_collide" //from base of atom/movable/Collide(): (/atom) +#define COMSIG_MOVABLE_COLLIDE "movable_bump" //from base of atom/movable/Bump(): (/atom) //CIT EDITED BACK TO COLLIDE PENDING SYNC #define COMSIG_MOVABLE_IMPACT "movable_impact" //from base of atom/movable/throw_impact(): (/atom/hit_atom, /datum/thrownthing/throwingdatum) -#define COMSIG_MOVABLE_IMPACT_ZONE "item_impact_zone" //from base of mob/living/hitby(): (mob/living/target, hit_zone) -#define COMSIG_MOVABLE_BUCKLE "buckle" //from base of atom/movable/buckle_mob(): (mob, force) -#define COMSIG_MOVABLE_UNBUCKLE "unbuckle" //from base of atom/movable/unbuckle_mob(): (mob, force) -#define COMSIG_MOVABLE_THROW "movable_throw" //from base of atom/movable/throw_at(): (datum/thrownthing, spin) -#define COMSIG_MOVABLE_Z_CHANGED "movable_ztransit" //from base of atom/movable/onTransitZ(): (old_z, new_z) +#define COMSIG_MOVABLE_IMPACT_ZONE "item_impact_zone" //from base of mob/living/hitby(): (mob/living/target, hit_zone) +#define COMSIG_MOVABLE_BUCKLE "buckle" //from base of atom/movable/buckle_mob(): (mob, force) +#define COMSIG_MOVABLE_UNBUCKLE "unbuckle" //from base of atom/movable/unbuckle_mob(): (mob, force) +#define COMSIG_MOVABLE_PRE_THROW "movable_pre_throw" //from base of atom/movable/throw_at(): (list/args) + #define COMPONENT_CANCEL_THROW 1 +#define COMSIG_MOVABLE_POST_THROW "movable_post_throw" //from base of atom/movable/throw_at(): (datum/thrownthing, spin) +#define COMSIG_MOVABLE_Z_CHANGED "movable_ztransit" //from base of atom/movable/onTransitZ(): (old_z, new_z) +#define COMSIG_MOVABLE_HEAR "movable_hear" //from base of atom/movable/Hear(): (message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) +#define COMSIG_MOVABLE_DISPOSING "movable_disposing" //called when the movable is added to a disposal holder object for disposal movement: (obj/structure/disposalholder/holder, obj/machinery/disposal/source) -// /mob Signals +// /mob signals +#define COMSIG_MOB_DEATH "mob_death" //from base of mob/death(): (gibbed) +#define COMSIG_MOB_ALLOWED "mob_allowed" //from base of obj/allowed(mob/M): (/obj) returns bool, if TRUE the mob has id access to the obj #define COMSIG_MOB_RECEIVE_MAGIC "mob_receive_magic" //from base of mob/anti_magic_check(): (magic, holy, protection_sources) #define COMPONENT_BLOCK_MAGIC 1 +#define COMSIG_MOB_HUD_CREATED "mob_hud_created" //from base of mob/create_mob_hud(): () // /mob/living signals #define COMSIG_LIVING_RESIST "living_resist" //from base of mob/living/resist() (/mob/living) #define COMSIG_LIVING_IGNITED "living_ignite" //from base of mob/living/IgniteMob() (/mob/living) #define COMSIG_LIVING_EXTINGUISHED "living_extinguished" //from base of mob/living/ExtinguishMob() (/mob/living) +#define COMSIG_LIVING_ELECTROCUTE_ACT "living_electrocute_act" //from base of mob/living/electrocute_act(): (shock_damage) +#define COMSIG_LIVING_MINOR_SHOCK "living_minor_shock" //sent by stuff like stunbatons and tasers: () // /mob/living/carbon signals #define COMSIG_CARBON_SOUNDBANG "carbon_soundbang" //from base of mob/living/carbon/soundbang_act(): (list(intensity)) @@ -126,11 +145,13 @@ #define COMPONENT_NO_ATTACK_OBJ 1 #define COMSIG_ITEM_PRE_ATTACK "item_pre_attack" //from base of obj/item/pre_attack(): (atom/target, mob/user, params) #define COMPONENT_NO_ATTACK 1 +#define COMSIG_ITEM_AFTERATTACK "item_afterattack" //from base of obj/item/afterattack(): (atom/target, mob/user, params) #define COMSIG_ITEM_EQUIPPED "item_equip" //from base of obj/item/equipped(): (/mob/equipper, slot) #define COMSIG_ITEM_DROPPED "item_drop" //from base of obj/item/dropped(): (mob/user) #define COMSIG_ITEM_PICKUP "item_pickup" //from base of obj/item/pickup(): (/mob/taker) #define COMSIG_ITEM_ATTACK_ZONE "item_attack_zone" //from base of mob/living/carbon/attacked_by(): (mob/living/carbon/target, mob/living/user, hit_zone) -#define COMSIG_ITEM_IMBUE_SOUL "item_imbue_soul" //return a truthy value to prevent ensouling, checked in /obj/effect/proc_holder/spell/targeted/lichdom/cast(): (mob/user) +#define COMSIG_ITEM_IMBUE_SOUL "item_imbue_soul" //return a truthy value to prevent ensouling, checked in /obj/effect/proc_holder/spell/targeted/lichdom/cast(): (mob/user) +#define COMSIG_ITEM_HIT_REACT "item_hit_react" //from base of obj/item/hit_reaction(): (list/args) // /obj/item/clothing signals #define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): () @@ -162,6 +183,10 @@ #define COMSIG_HUMAN_MELEE_UNARMED_ATTACKBY "human_melee_unarmed_attackby" //from mob/living/carbon/human/UnarmedAttack(): (mob/living/carbon/human/attacker) #define COMSIG_HUMAN_DISARM_HIT "human_disarm_hit" //Hit by successful disarm attack (mob/living/carbon/human/attacker,zone_targeted) +// /datum/species signals +#define COMSIG_SPECIES_GAIN "species_gain" //from datum/species/on_species_gain(): (datum/species/new_species, datum/species/old_species) +#define COMSIG_SPECIES_LOSS "species_loss" //from datum/species/on_species_loss(): (datum/species/lost_species) + /*******Component Specific Signals*******/ //Janitor #define COMSIG_TURF_IS_WET "check_turf_wet" //(): Returns bitflags of wet values. @@ -178,6 +203,23 @@ //NTnet #define COMSIG_COMPONENT_NTNET_RECEIVE "ntnet_receive" //called on an object by its NTNET connection component on receive. (sending_id(number), sending_netname(text), data(datum/netdata)) +//Nanites +#define COMSIG_HAS_NANITES "has_nanites" //() returns TRUE if nanites are found +#define COMSIG_NANITE_GET_PROGRAMS "nanite_get_programs" //(list/nanite_programs) - makes the input list a copy the nanites' program list +#define COMSIG_NANITE_SET_VOLUME "nanite_set_volume" //(amount) Sets current nanite volume to the given amount +#define COMSIG_NANITE_ADJUST_VOLUME "nanite_adjust" //(amount) Adjusts nanite volume by the given amount +#define COMSIG_NANITE_SET_MAX_VOLUME "nanite_set_max_volume" //(amount) Sets maximum nanite volume to the given amount +#define COMSIG_NANITE_SET_CLOUD "nanite_set_cloud" //(amount(0-100)) Sets cloud ID to the given amount +#define COMSIG_NANITE_SET_SAFETY "nanite_set_safety" //(amount) Sets safety threshold to the given amount +#define COMSIG_NANITE_SET_REGEN "nanite_set_regen" //(amount) Sets regeneration rate to the given amount +#define COMSIG_NANITE_SIGNAL "nanite_signal" //(code(1-9999)) Called when sending a nanite signal to a mob. +#define COMSIG_NANITE_SCAN "nanite_scan" //(mob/user, full_scan) - sends to chat a scan of the nanites to the user, returns TRUE if nanites are detected +#define COMSIG_NANITE_UI_DATA "nanite_ui_data" //(list/data, scan_level) - adds nanite data to the given data list - made for ui_data procs +#define COMSIG_NANITE_ADD_PROGRAM "nanite_add_program" //(datum/nanite_program/new_program, datum/nanite_program/source_program) Called when adding a program to a nanite component + #define COMPONENT_PROGRAM_INSTALLED 1 //Installation successful + #define COMPONENT_PROGRAM_NOT_INSTALLED 2 //Installation failed, but there are still nanites +#define COMSIG_NANITE_SYNC "nanite_sync" //(datum/component/nanites, full_overwrite, copy_activation) Called to sync the target's nanites to a given nanite component + // /datum/component/storage signals #define COMSIG_CONTAINS_STORAGE "is_storage" //() - returns bool. #define COMSIG_TRY_STORAGE_INSERT "storage_try_insert" //(obj/item/inserting, mob/user, silent, force) - returns bool @@ -193,6 +235,10 @@ #define COMSIG_TRY_STORAGE_RETURN_INVENTORY "storage_return_inventory" //(list/list_to_inject_results_into, recursively_search_inside_storages = TRUE) #define COMSIG_TRY_STORAGE_CAN_INSERT "storage_can_equip" //(obj/item/insertion_candidate, mob/user, silent) - returns bool +// /datum/action signals +#define COMSIG_ACTION_TRIGGER "action_trigger" //from base of datum/action/proc/Trigger(): (datum/action) + #define COMPONENT_ACTION_BLOCK_TRIGGER 1 + /*******Non-Signal Component Related Defines*******/ //Redirection component init flags diff --git a/code/__DEFINES/logging.dm b/code/__DEFINES/logging.dm index 485cfa65c1..f4e5c6eb55 100644 --- a/code/__DEFINES/logging.dm +++ b/code/__DEFINES/logging.dm @@ -15,6 +15,7 @@ #define INVESTIGATE_RADIATION "radiation" #define INVESTIGATE_EXONET "exonet" #define INVESTIGATE_CIRCUIT "circuit" +#define INVESTIGATE_NANITES "nanites" //Individual logging defines #define INDIVIDUAL_ATTACK_LOG "Attack log" diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm index 77f6ff7756..d0d6269c1e 100644 --- a/code/__DEFINES/machines.dm +++ b/code/__DEFINES/machines.dm @@ -30,6 +30,7 @@ #define LIMBGROWER (1<<6) //Uses synthetic flesh #define SMELTER (1<<7) //uses various minerals #define AUTOYLATHE (1<<8) // CITADEL ADD +#define NANITE_COMPILER (1<<9) //Prints nanite disks //Note: More then one of these can be added to a design but imprinter and lathe designs are incompatable. //Modular computer/NTNet defines diff --git a/code/__DEFINES/nanites.dm b/code/__DEFINES/nanites.dm new file mode 100644 index 0000000000..45455a81c2 --- /dev/null +++ b/code/__DEFINES/nanites.dm @@ -0,0 +1,11 @@ +#define NANITE_TIMER_DEACTIVATE 1 +#define NANITE_TIMER_SELFDELETE 2 +#define NANITE_TIMER_TRIGGER 3 +#define NANITE_TIMER_RESET 4 + +#define NANITE_SYNC_DELAY 300 + +#define NANITE_SHOCK_IMMUNE 1 +#define NANITE_EMP_IMMUNE 2 + +#define NANITE_PROGRAM_LIMIT 20 \ No newline at end of file diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 378d30ba52..c645420162 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -48,6 +48,7 @@ #define TRAIT_NODEATH "nodeath" #define TRAIT_NOHARDCRIT "nohardcrit" #define TRAIT_NOSOFTCRIT "nosoftcrit" +#define TRAIT_MINDSHIELD "mindshield" #define TRAIT_ALCOHOL_TOLERANCE "alcohol_tolerance" diff --git a/code/controllers/subsystem/processing/nanites.dm b/code/controllers/subsystem/processing/nanites.dm new file mode 100644 index 0000000000..69bd5781de --- /dev/null +++ b/code/controllers/subsystem/processing/nanites.dm @@ -0,0 +1,21 @@ +PROCESSING_SUBSYSTEM_DEF(nanites) + name = "Nanites" + flags = SS_BACKGROUND|SS_POST_FIRE_TIMING|SS_NO_INIT + wait = 10 + + var/list/datum/nanite_cloud_backup/cloud_backups = list() + var/list/mob/living/nanite_monitored_mobs = list() + var/list/datum/nanite_program/relay/nanite_relays = list() + +/datum/controller/subsystem/processing/nanites/proc/check_hardware(datum/nanite_cloud_backup/backup) + if(QDELETED(backup.storage) || (backup.storage.stat & (NOPOWER|BROKEN))) + return FALSE + return TRUE + +/datum/controller/subsystem/processing/nanites/proc/get_cloud_backup(cloud_id, force = FALSE) + for(var/I in cloud_backups) + var/datum/nanite_cloud_backup/backup = I + if(!force && !check_hardware(backup)) + return + if(backup.cloud_id == cloud_id) + return backup \ No newline at end of file diff --git a/code/datums/components/nanites.dm b/code/datums/components/nanites.dm new file mode 100644 index 0000000000..bbc2b1df31 --- /dev/null +++ b/code/datums/components/nanites.dm @@ -0,0 +1,314 @@ +/datum/component/nanites + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + + var/mob/living/host_mob + var/nanite_volume = 100 //amount of nanites in the system, used as fuel for nanite programs + var/max_nanites = 500 //maximum amount of nanites in the system + var/regen_rate = 0.5 //nanites generated per second + var/safety_threshold = 50 //how low nanites will get before they stop processing/triggering + var/cloud_id = 0 //0 if not connected to the cloud, 1-100 to set a determined cloud backup to draw from + var/next_sync = 0 + var/list/datum/nanite_program/programs = list() + var/max_programs = NANITE_PROGRAM_LIMIT + + var/stealth = FALSE //if TRUE, does not appear on HUDs and health scans, and does not display the program list on nanite scans + +/datum/component/nanites/Initialize(amount = 100, cloud = 0) + if(!isliving(parent) && !istype(parent, /datum/nanite_cloud_backup)) + return COMPONENT_INCOMPATIBLE + + nanite_volume = amount + cloud_id = cloud + + //Nanites without hosts are non-interactive through normal means + if(isliving(parent)) + host_mob = parent + + if(!(MOB_ORGANIC in host_mob.mob_biotypes) && !(MOB_UNDEAD in host_mob.mob_biotypes)) //Shouldn't happen, but this avoids HUD runtimes in case a silicon gets them somehow. + return COMPONENT_INCOMPATIBLE + + host_mob.hud_set_nanite_indicator() + START_PROCESSING(SSnanites, src) + + if(cloud_id) + cloud_sync() + +/datum/component/nanites/RegisterWithParent() + RegisterSignal(parent, COMSIG_HAS_NANITES, .proc/confirm_nanites) + RegisterSignal(parent, COMSIG_NANITE_UI_DATA, .proc/nanite_ui_data) + RegisterSignal(parent, COMSIG_NANITE_GET_PROGRAMS, .proc/get_programs) + RegisterSignal(parent, COMSIG_NANITE_SET_VOLUME, .proc/set_volume) + RegisterSignal(parent, COMSIG_NANITE_ADJUST_VOLUME, .proc/adjust_nanites) + RegisterSignal(parent, COMSIG_NANITE_SET_MAX_VOLUME, .proc/set_max_volume) + RegisterSignal(parent, COMSIG_NANITE_SET_CLOUD, .proc/set_cloud) + RegisterSignal(parent, COMSIG_NANITE_SET_SAFETY, .proc/set_safety) + RegisterSignal(parent, COMSIG_NANITE_SET_REGEN, .proc/set_regen) + RegisterSignal(parent, COMSIG_NANITE_ADD_PROGRAM, .proc/add_program) + RegisterSignal(parent, COMSIG_NANITE_SCAN, .proc/nanite_scan) + RegisterSignal(parent, COMSIG_NANITE_SYNC, .proc/sync) + + if(isliving(parent)) + RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, .proc/on_emp) + RegisterSignal(parent, COMSIG_MOB_DEATH, .proc/on_death) + RegisterSignal(parent, COMSIG_MOB_ALLOWED, .proc/check_access) + RegisterSignal(parent, COMSIG_LIVING_ELECTROCUTE_ACT, .proc/on_shock) + RegisterSignal(parent, COMSIG_LIVING_MINOR_SHOCK, .proc/on_minor_shock) + RegisterSignal(parent, COMSIG_MOVABLE_HEAR, .proc/on_hear) + RegisterSignal(parent, COMSIG_SPECIES_GAIN, .proc/check_viable_biotype) + RegisterSignal(parent, COMSIG_NANITE_SIGNAL, .proc/receive_signal) + +/datum/component/nanites/UnregisterFromParent() + UnregisterSignal(parent, list(COMSIG_HAS_NANITES, + COMSIG_NANITE_UI_DATA, + COMSIG_NANITE_GET_PROGRAMS, + COMSIG_NANITE_SET_VOLUME, + COMSIG_NANITE_ADJUST_VOLUME, + COMSIG_NANITE_SET_MAX_VOLUME, + COMSIG_NANITE_SET_CLOUD, + COMSIG_NANITE_SET_SAFETY, + COMSIG_NANITE_SET_REGEN, + COMSIG_NANITE_ADD_PROGRAM, + COMSIG_NANITE_SCAN, + COMSIG_NANITE_SYNC, + COMSIG_ATOM_EMP_ACT, + COMSIG_MOB_DEATH, + COMSIG_MOB_ALLOWED, + COMSIG_LIVING_ELECTROCUTE_ACT, + COMSIG_LIVING_MINOR_SHOCK, + COMSIG_MOVABLE_HEAR, + COMSIG_SPECIES_GAIN, + COMSIG_NANITE_SIGNAL)) + +/datum/component/nanites/Destroy() + STOP_PROCESSING(SSnanites, src) + set_nanite_bar(TRUE) + QDEL_LIST(programs) + if(host_mob) + host_mob.hud_set_nanite_indicator() + host_mob = null + return ..() + +/datum/component/nanites/InheritComponent(datum/component/nanites/new_nanites, i_am_original, list/arguments) + if(new_nanites) + adjust_nanites(new_nanites.nanite_volume) + else + adjust_nanites(arguments[1]) //just add to the nanite volume + +/datum/component/nanites/process() + adjust_nanites(regen_rate) + for(var/X in programs) + var/datum/nanite_program/NP = X + NP.on_process() + set_nanite_bar() + if(cloud_id && world.time > next_sync) + cloud_sync() + next_sync = world.time + NANITE_SYNC_DELAY + +//Syncs the nanite component to another, making it so programs are the same with the same programming (except activation status) +/datum/component/nanites/proc/sync(datum/component/nanites/source, full_overwrite = TRUE, copy_activation = FALSE) + var/list/programs_to_remove = programs.Copy() + var/list/programs_to_add = source.programs.Copy() + for(var/X in programs) + var/datum/nanite_program/NP = X + for(var/Y in programs_to_add) + var/datum/nanite_program/SNP = Y + if(NP.type == SNP.type) + programs_to_remove -= NP + programs_to_add -= SNP + SNP.copy_programming(NP, copy_activation) + break + if(full_overwrite) + for(var/X in programs_to_remove) + qdel(X) + for(var/X in programs_to_add) + var/datum/nanite_program/SNP = X + add_program(SNP.copy()) + +/datum/component/nanites/proc/cloud_sync() + if(!cloud_id) + return + var/datum/nanite_cloud_backup/backup = SSnanites.get_cloud_backup(cloud_id) + if(backup) + var/datum/component/nanites/cloud_copy = backup.nanites + if(cloud_copy) + sync(cloud_copy) + +/datum/component/nanites/proc/add_program(datum/nanite_program/new_program, datum/nanite_program/source_program) + for(var/X in programs) + var/datum/nanite_program/NP = X + if(NP.unique && NP.type == new_program.type) + qdel(NP) + if(programs.len >= max_programs) + return COMPONENT_PROGRAM_NOT_INSTALLED + if(source_program) + source_program.copy_programming(new_program) + programs += new_program + new_program.on_add(src) + return COMPONENT_PROGRAM_INSTALLED + +/datum/component/nanites/proc/consume_nanites(amount, force = FALSE) + if(!force && safety_threshold && (nanite_volume - amount < safety_threshold)) + return FALSE + adjust_nanites(-amount) + return (nanite_volume > 0) + +/datum/component/nanites/proc/adjust_nanites(amount) + nanite_volume = CLAMP(nanite_volume + amount, 0, max_nanites) + if(nanite_volume <= 0) //oops we ran out + qdel(src) + +/datum/component/nanites/proc/set_nanite_bar(remove = FALSE) + var/image/holder = host_mob.hud_list[DIAG_NANITE_FULL_HUD] + var/icon/I = icon(host_mob.icon, host_mob.icon_state, host_mob.dir) + holder.pixel_y = I.Height() - world.icon_size + holder.icon_state = null + if(remove || stealth) + return //bye icon + var/nanite_percent = (nanite_volume / max_nanites) * 100 + nanite_percent = CLAMP(CEILING(nanite_percent, 10), 10, 100) + holder.icon_state = "nanites[nanite_percent]" + +/datum/component/nanites/proc/on_emp(severity) + nanite_volume *= (rand(0.60, 0.90)) //Lose 10-40% of nanites + adjust_nanites(-(rand(5, 50))) //Lose 5-50 flat nanite volume + if(prob(40/severity)) + cloud_id = 0 + for(var/X in programs) + var/datum/nanite_program/NP = X + NP.on_emp(severity) + +/datum/component/nanites/proc/on_shock(shock_damage) + nanite_volume *= (rand(0.45, 0.80)) //Lose 20-55% of nanites + adjust_nanites(-(rand(5, 50))) //Lose 5-50 flat nanite volume + for(var/X in programs) + var/datum/nanite_program/NP = X + NP.on_shock(shock_damage) + +/datum/component/nanites/proc/on_minor_shock() + adjust_nanites(-(rand(5, 15))) //Lose 5-15 flat nanite volume + for(var/X in programs) + var/datum/nanite_program/NP = X + NP.on_minor_shock() + +/datum/component/nanites/proc/on_death(gibbed) + for(var/X in programs) + var/datum/nanite_program/NP = X + NP.on_death(gibbed) + +/datum/component/nanites/proc/on_hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) + for(var/X in programs) + var/datum/nanite_program/NP = X + NP.on_hear(message, speaker, message_language, raw_message, radio_freq, spans, message_mode) + +/datum/component/nanites/proc/receive_signal(code, source = "an unidentified source") + for(var/X in programs) + var/datum/nanite_program/NP = X + NP.receive_signal(code, source) + +/datum/component/nanites/proc/check_viable_biotype() + if(!(MOB_ORGANIC in host_mob.mob_biotypes) && !(MOB_UNDEAD in host_mob.mob_biotypes)) + qdel(src) //bodytype no longer sustains nanites + +/datum/component/nanites/proc/check_access(obj/O) + for(var/datum/nanite_program/triggered/access/access_program in programs) + if(access_program.activated) + return O.check_access_list(access_program.access) + else + return FALSE + return FALSE + +/datum/component/nanites/proc/set_volume(amount) + nanite_volume = CLAMP(amount, 0, max_nanites) + +/datum/component/nanites/proc/set_max_volume(amount) + max_nanites = max(1, max_nanites) + +/datum/component/nanites/proc/set_cloud(amount) + cloud_id = CLAMP(amount, 0, 100) + +/datum/component/nanites/proc/set_safety(amount) + safety_threshold = CLAMP(amount, 0, max_nanites) + +/datum/component/nanites/proc/set_regen(amount) + regen_rate = amount + +/datum/component/nanites/proc/confirm_nanites() + return TRUE //yup i exist + +/datum/component/nanites/proc/get_data(list/nanite_data) + nanite_data["nanite_volume"] = nanite_volume + nanite_data["max_nanites"] = max_nanites + nanite_data["cloud_id"] = cloud_id + nanite_data["regen_rate"] = regen_rate + nanite_data["safety_threshold"] = safety_threshold + nanite_data["stealth"] = stealth + +/datum/component/nanites/proc/get_programs(list/nanite_programs) + nanite_programs |= programs + +/datum/component/nanites/proc/nanite_scan(mob/user, full_scan) + if(!full_scan) + if(!stealth) + to_chat(user, "Nanites Detected") + to_chat(user, "Saturation: [nanite_volume]/[max_nanites]") + return TRUE + else + to_chat(user, "NANITES DETECTED") + to_chat(user, "================") + to_chat(user, "Saturation: [nanite_volume]/[max_nanites]") + to_chat(user, "Safety Threshold: [safety_threshold]") + to_chat(user, "Cloud ID: [cloud_id ? cloud_id : "Disabled"]") + to_chat(user, "================") + to_chat(user, "Program List:") + if(stealth) + to_chat(user, "%#$ENCRYPTED&^@") + else + for(var/X in programs) + var/datum/nanite_program/NP = X + to_chat(user, "[NP.name] | [NP.activated ? "Active" : "Inactive"]") + return TRUE + +/datum/component/nanites/proc/nanite_ui_data(list/data, scan_level) + data["has_nanites"] = TRUE + data["nanite_volume"] = nanite_volume + data["regen_rate"] = regen_rate + data["safety_threshold"] = safety_threshold + data["cloud_id"] = cloud_id + var/list/mob_programs = list() + var/id = 1 + for(var/X in programs) + var/datum/nanite_program/P = X + var/list/mob_program = list() + mob_program["name"] = P.name + mob_program["desc"] = P.desc + mob_program["id"] = id + + if(scan_level >= 2) + mob_program["activated"] = P.activated + mob_program["use_rate"] = P.use_rate + mob_program["can_trigger"] = P.can_trigger + mob_program["trigger_cost"] = P.trigger_cost + mob_program["trigger_cooldown"] = P.trigger_cooldown / 10 + + if(scan_level >= 3) + mob_program["activation_delay"] = P.activation_delay + mob_program["timer"] = P.timer + mob_program["timer_type"] = P.get_timer_type_text() + var/list/extra_settings = list() + for(var/Y in P.extra_settings) + var/list/setting = list() + setting["name"] = Y + setting["value"] = P.get_extra_setting(Y) + extra_settings += list(setting) + mob_program["extra_settings"] = extra_settings + if(LAZYLEN(extra_settings)) + mob_program["has_extra_settings"] = TRUE + + if(scan_level >= 4) + mob_program["activation_code"] = P.activation_code + mob_program["deactivation_code"] = P.deactivation_code + mob_program["kill_code"] = P.kill_code + mob_program["trigger_code"] = P.trigger_code + id++ + mob_programs += list(mob_program) + data["mob_programs"] = mob_programs \ No newline at end of file diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm index 2913adf9b9..22c418007d 100644 --- a/code/datums/components/storage/storage.dm +++ b/code/datums/components/storage/storage.dm @@ -94,7 +94,7 @@ RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/attack_self) RegisterSignal(parent, COMSIG_ITEM_PICKUP, .proc/signal_on_pickup) - RegisterSignal(parent, COMSIG_MOVABLE_THROW, .proc/close_all) + RegisterSignal(parent, COMSIG_MOVABLE_PRE_THROW, .proc/close_all) RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/on_alt_click) RegisterSignal(parent, COMSIG_MOUSEDROP_ONTO, .proc/mousedrop_onto) diff --git a/code/datums/diseases/advance/symptoms/nanites.dm b/code/datums/diseases/advance/symptoms/nanites.dm new file mode 100644 index 0000000000..99665aafc0 --- /dev/null +++ b/code/datums/diseases/advance/symptoms/nanites.dm @@ -0,0 +1,63 @@ +/datum/symptom/nano_boost + name = "Nano-symbiosis" + desc = "The virus reacts to nanites in the host's bloodstream by enhancing their replication cycle." + stealth = 0 + resistance = 2 + stage_speed = 2 + transmittable = -1 + level = 7 + severity = 0 + symptom_delay_min = 1 + symptom_delay_max = 1 + var/reverse_boost = FALSE + threshold_desc = "Transmission 5: Increases the virus' growth rate while nanites are present.
\ + Stage Speed 7: Increases the replication boost." + +/datum/symptom/nano_boost/Start(datum/disease/advance/A) + if(!..()) + return + if(A.properties["transmittable"] >= 5) //reverse boost + reverse_boost = TRUE + if(A.properties["stage_rate"] >= 7) //more nanites + power = 2 + +/datum/symptom/nano_boost/Activate(datum/disease/advance/A) + if(!..()) + return + var/mob/living/carbon/M = A.affected_mob + SEND_SIGNAL(M, COMSIG_NANITE_ADJUST_VOLUME, 0.5 * power) + if(reverse_boost && SEND_SIGNAL(M, COMSIG_HAS_NANITES)) + if(prob(A.stage_prob)) + A.stage = min(A.stage + 1,A.max_stages) + +/datum/symptom/nano_destroy + name = "Silicolysis" + desc = "The virus reacts to nanites in the host's bloodstream by attacking and consuming them." + stealth = 0 + resistance = 4 + stage_speed = -1 + transmittable = 1 + level = 7 + severity = 0 + symptom_delay_min = 1 + symptom_delay_max = 1 + var/reverse_boost = FALSE + threshold_desc = "Stage Speed 5: Increases the virus' growth rate while nanites are present.
\ + Resistance 7: Severely increases the rate at which the nanites are destroyed." + +/datum/symptom/nano_destroy/Start(datum/disease/advance/A) + if(!..()) + return + if(A.properties["stage_rate"] >= 5) //reverse boost + reverse_boost = TRUE + if(A.properties["resistance"] >= 7) //more nanites + power = 3 + +/datum/symptom/nano_destroy/Activate(datum/disease/advance/A) + if(!..()) + return + var/mob/living/carbon/M = A.affected_mob + SEND_SIGNAL(M, COMSIG_NANITE_ADJUST_VOLUME, -0.4 * power) + if(reverse_boost && SEND_SIGNAL(M, COMSIG_HAS_NANITES)) + if(prob(A.stage_prob)) + A.stage = min(A.stage + 1,A.max_stages) \ No newline at end of file diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index 558c197858..1bd30a77f5 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -589,6 +589,10 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Engineering Storage" icon_state = "engi_storage" +/area/engine/storage_shared + name = "Shared Engineering Storage" + icon_state = "engi_storage" + /area/engine/transit_tube name = "Transit Tube" icon_state = "transit_tube" @@ -1035,6 +1039,11 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Toxins Mixing Lab" icon_state = "toxmix" +/area/science/mixing/chamber + name = "Toxins Mixing Chamber" + icon_state = "toxmix" + valid_territory = FALSE + /area/science/misc_lab name = "Testing Lab" icon_state = "toxmisc" @@ -1087,6 +1096,10 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Abandoned Research Lab" icon_state = "medresearch" +/area/science/nanite + name = "Nanite Lab" + icon_state = "toxmisc" + //Storage /area/storage/tools diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 211bb35263..366e1ad539 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -482,11 +482,12 @@ if(spin) SpinAnimation(5, 1) - SEND_SIGNAL(src, COMSIG_MOVABLE_THROW, TT, spin) + SEND_SIGNAL(src, COMSIG_MOVABLE_PRE_THROW, TT, spin) //CITADEL - THIS IS BORKED. PENDING SYNC. SSthrowing.processing[src] = TT if (SSthrowing.state == SS_PAUSED && length(SSthrowing.currentrun)) SSthrowing.currentrun[src] = TT TT.tick() + SEND_SIGNAL(src, COMSIG_MOVABLE_POST_THROW, TT, spin) /atom/movable/proc/handle_buckled_mob_movement(newloc,direct) for(var/m in buckled_mobs) diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 9a60fdef31..d372986569 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -18,7 +18,7 @@ /datum/atom_hud/data /datum/atom_hud/data/human/medical - hud_icons = list(STATUS_HUD, HEALTH_HUD) + hud_icons = list(STATUS_HUD, HEALTH_HUD, NANITE_HUD) /datum/atom_hud/data/human/medical/basic @@ -47,15 +47,15 @@ hud_icons = list(ID_HUD) /datum/atom_hud/data/human/security/advanced - hud_icons = list(ID_HUD, IMPTRACK_HUD, IMPLOYAL_HUD, IMPCHEM_HUD, WANTED_HUD) + hud_icons = list(ID_HUD, IMPTRACK_HUD, IMPLOYAL_HUD, IMPCHEM_HUD, WANTED_HUD, NANITE_HUD) /datum/atom_hud/data/diagnostic /datum/atom_hud/data/diagnostic/basic - hud_icons = list (DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_CIRCUIT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD) + hud_icons = list(DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_CIRCUIT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD, DIAG_NANITE_FULL_HUD) /datum/atom_hud/data/diagnostic/advanced - hud_icons = list (DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_CIRCUIT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD, DIAG_PATH_HUD) + hud_icons = list(DIAG_HUD, DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_BOT_HUD, DIAG_CIRCUIT_HUD, DIAG_TRACK_HUD, DIAG_AIRLOCK_HUD, DIAG_NANITE_FULL_HUD, DIAG_PATH_HUD) /datum/atom_hud/data/bot_path hud_icons = list(DIAG_PATH_HUD) @@ -65,6 +65,16 @@ /datum/atom_hud/sentient_disease hud_icons = list(SENTIENT_DISEASE_HUD) +/* +/datum/atom_hud/ai_detector + hud_icons = list(AI_DETECT_HUD) + +/datum/atom_hud/ai_detector/add_hud_to(mob/M) + ..() + if(M && (hudusers.len == 1)) + for(var/V in GLOB.aiEyes) + var/mob/camera/aiEye/E = V + E.update_ai_detect_hud()*/ /* MED/SEC/DIAG HUD HOOKS */ @@ -216,7 +226,7 @@ holder.icon_state = "hud[ckey(wear_id.GetJobName())]" sec_hud_set_security_status() -/mob/living/carbon/human/proc/sec_hud_set_implants() +/mob/living/proc/sec_hud_set_implants() var/image/holder for(var/i in list(IMPTRACK_HUD, IMPLOYAL_HUD, IMPCHEM_HUD)) holder = hud_list[i] @@ -227,16 +237,16 @@ var/icon/IC = icon(icon, icon_state, dir) holder.pixel_y = IC.Height() - world.icon_size holder.icon_state = "hud_imp_tracking" - else if(istype(I, /obj/item/implant/mindshield)) - holder = hud_list[IMPLOYAL_HUD] - var/icon/IC = icon(icon, icon_state, dir) - holder.pixel_y = IC.Height() - world.icon_size - holder.icon_state = "hud_imp_loyal" else if(istype(I, /obj/item/implant/chem)) holder = hud_list[IMPCHEM_HUD] var/icon/IC = icon(icon, icon_state, dir) holder.pixel_y = IC.Height() - world.icon_size holder.icon_state = "hud_imp_chem" + if(has_trait(TRAIT_MINDSHIELD)) + holder = hud_list[IMPLOYAL_HUD] + var/icon/IC = icon(icon, icon_state, dir) + holder.pixel_y = IC.Height() - world.icon_size + holder.icon_state = "hud_imp_loyal" /mob/living/carbon/human/proc/sec_hud_set_security_status() var/image/holder = hud_list[WANTED_HUD] @@ -265,6 +275,14 @@ Diagnostic HUDs! ************************************************/ +/mob/living/proc/hud_set_nanite_indicator() + var/image/holder = hud_list[NANITE_HUD] + var/icon/I = icon(icon, icon_state, dir) + holder.pixel_y = I.Height() - world.icon_size + holder.icon_state = null + if(src in SSnanites.nanite_monitored_mobs) + holder.icon_state = "nanite_ping" + //For Diag health and cell bars! /proc/RoundDiagBar(value) switch(value * 100) diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index 499d441a57..1403990c65 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -59,8 +59,12 @@ Credit where due: return FALSE else return FALSE - if(iscultist(M) || isconstruct(M) || M.isloyal() || ispAI(M)) + if(iscultist(M) || isconstruct(M) || ispAI(M)) return FALSE + if(isliving(M)) + var/mob/living/L = M + if(L.has_trait(TRAIT_MINDSHIELD)) + return FALSE if(ishuman(M) || isbrain(M) || isguardian(M) || issilicon(M) || isclockmob(M) || istype(M, /mob/living/simple_animal/drone/cogscarab) || istype(M, /mob/camera/eminence)) return TRUE return FALSE diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 4e9a9cc6e7..9d828fb662 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -26,7 +26,7 @@ return FALSE else return FALSE - if(M.isloyal() || issilicon(M) || isbot(M) || isdrone(M) || is_servant_of_ratvar(M) || !M.client) + if(M.has_trait(TRAIT_MINDSHIELD) || issilicon(M) || isbot(M) || isdrone(M) || is_servant_of_ratvar(M) || !M.client) return FALSE //can't convert machines, shielded, braindead, or ratvar's dogs return TRUE diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index edbf181927..09cbb68083 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -120,14 +120,17 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new) var/life_status for(var/mob/living/carbon/human/H in GLOB.carbon_list) + var/nanite_sensors = FALSE + if(H in SSnanites.nanite_monitored_mobs) + nanite_sensors = TRUE // Check if their z-level is correct and if they are wearing a uniform. // Accept H.z==0 as well in case the mob is inside an object. - if ((H.z == 0 || H.z == z) && istype(H.w_uniform, /obj/item/clothing/under)) + if ((H.z == 0 || H.z == z) && istype(H.w_uniform, /obj/item/clothing/under) || nanite_sensors) U = H.w_uniform // Are the suit sensors on? - if ((U.has_sensor > 0) && U.sensor_mode) - pos = H.z == 0 || U.sensor_mode == SENSOR_COORDS ? get_turf(H) : null + if (nanite_sensors || ((U.has_sensor > 0) && U.sensor_mode)) + pos = H.z == 0 || (nanite_sensors || U.sensor_mode == SENSOR_COORDS) ? get_turf(H) : null // Special case: If the mob is inside an object confirm the z-level on turf level. if (H.z == 0 && (!pos || pos.z != z)) @@ -144,12 +147,12 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new) assignment = "" ijob = 80 - if (U.sensor_mode >= SENSOR_LIVING) + if (nanite_sensors || U.sensor_mode >= SENSOR_LIVING) life_status = (!H.stat ? TRUE : FALSE) else life_status = null - if (U.sensor_mode >= SENSOR_VITALS) + if (nanite_sensors || U.sensor_mode >= SENSOR_VITALS) oxydam = round(H.getOxyLoss(),1) toxdam = round(H.getToxLoss(),1) burndam = round(H.getFireLoss(),1) @@ -160,7 +163,7 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new) burndam = null brutedam = null - if (U.sensor_mode >= SENSOR_COORDS) + if (nanite_sensors || U.sensor_mode >= SENSOR_COORDS) if (!pos) pos = get_turf(H) area = get_area_name(H, TRUE) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index fd1e2f5426..de5022d751 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -180,7 +180,7 @@ break if(component_check) P.play_tool_sound(src) - var/obj/machinery/new_machine = new circuit.build_path(loc, 1) + var/obj/machinery/new_machine = new circuit.build_path(loc) new_machine.setAnchored(anchored) new_machine.on_construction() for(var/obj/O in new_machine.component_parts) @@ -189,6 +189,9 @@ for(var/obj/O in src) O.moveToNullspace() new_machine.component_parts += O + if(new_machine.circuit) + QDEL_NULL(new_machine.circuit) + new_machine.circuit = circuit circuit.moveToNullspace() new_machine.RefreshParts() qdel(src) diff --git a/code/game/machinery/doors/passworddoor.dm b/code/game/machinery/doors/passworddoor.dm index 6a6c145079..06c53c4e1f 100644 --- a/code/game/machinery/doors/passworddoor.dm +++ b/code/game/machinery/doors/passworddoor.dm @@ -23,6 +23,7 @@ flags_1 |= HEAR_1 /obj/machinery/door/password/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) + . = ..() if(!density || !voice_activated || radio_freq) return if(findtext(raw_message,password)) diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 0999e14f53..893f36acb3 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -408,6 +408,7 @@ Possible to do for anyone motivated enough: /*This is the proc for special two-way communication between AI and holopad/people talking near holopad. For the other part of the code, check silicon say.dm. Particularly robot talk.*/ /obj/machinery/holopad/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode) + . = ..() if(speaker && LAZYLEN(masters) && !radio_freq)//Master is mostly a safety in case lag hits or something. Radio_freq so AIs dont hear holopad stuff through radios. for(var/mob/living/silicon/ai/master in masters) if(masters[master] && speaker != master) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 7488f1e17c..d663609410 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -485,7 +485,7 @@ threatcount += 4 if(shoot_unloyal) - if (!perp.isloyal()) + if (!perp.has_trait(TRAIT_MINDSHIELD)) threatcount += 4 return threatcount diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index ddad0067b5..43fc52144c 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -402,6 +402,7 @@ return /obj/mecha/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) + . = ..() if(speaker == occupant) if(radio.broadcasting) radio.talk_into(speaker, text, , spans, message_language) diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index bf31c9e6b4..420de65797 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -342,3 +342,11 @@ /obj/item/circuitboard/computer/sat_control name = "Satellite Network Control (Computer Board)" build_path = /obj/machinery/computer/sat_control + +/obj/item/circuitboard/computer/nanite_chamber_control + name = "Nanite Chamber Control (Computer Board)" + build_path = /obj/machinery/computer/nanite_chamber_control + +/obj/item/circuitboard/computer/nanite_cloud_controller + name = "Nanite Cloud Control (Computer Board)" + build_path = /obj/machinery/computer/nanite_cloud_controller diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 8d91b3855a..cf3869c03a 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -741,6 +741,47 @@ /obj/item/stock_parts/manipulator = 2, /obj/item/stock_parts/micro_laser = 2) +/obj/item/circuitboard/machine/nanite_chamber + name = "Nanite Chamber (Machine Board)" + build_path = /obj/machinery/nanite_chamber + req_components = list( + /obj/item/stock_parts/scanning_module = 2, + /obj/item/stock_parts/micro_laser = 2, + /obj/item/stock_parts/manipulator = 1) + +/obj/item/circuitboard/machine/public_nanite_chamber + name = "Public Nanite Chamber (Machine Board)" + build_path = /obj/machinery/public_nanite_chamber + var/cloud_id = 1 + req_components = list( + /obj/item/stock_parts/micro_laser = 2, + /obj/item/stock_parts/manipulator = 1) + +/obj/item/circuitboard/machine/public_nanite_chamber/multitool_act(mob/living/user) + var/new_cloud = input("Set the public nanite chamber's Cloud ID (1-100).", "Cloud ID", cloud_id) as num|null + if(new_cloud == null) + return + cloud_id = CLAMP(round(new_cloud, 1), 1, 100) + +/obj/item/circuitboard/machine/public_nanite_chamber/examine(mob/user) + . = ..() + to_chat(user, "Cloud ID is currently set to [cloud_id].") + +/obj/item/circuitboard/machine/nanite_program_hub + name = "Nanite Program Hub (Machine Board)" + build_path = /obj/machinery/nanite_program_hub + req_components = list( + /obj/item/stock_parts/matter_bin = 1, + /obj/item/stock_parts/manipulator = 1) + +/obj/item/circuitboard/machine/nanite_programmer + name = "Nanite Programmer (Machine Board)" + build_path = /obj/machinery/nanite_programmer + req_components = list( + /obj/item/stock_parts/manipulator = 2, + /obj/item/stock_parts/micro_laser = 2, + /obj/item/stock_parts/scanning_module = 1) + /obj/item/circuitboard/machine/protolathe name = "Protolathe (Machine Board)" build_path = /obj/machinery/rnd/production/protolathe diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 3d069f1cff..d872144eb9 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -514,6 +514,7 @@ add_logs(user, H, "overloaded the heart of", defib) H.Knockdown(100) H.Jitter(100) + SEND_SIGNAL(H, COMSIG_LIVING_MINOR_SHOCK) if(req_defib) defib.deductcharge(revivecost) cooldown = TRUE @@ -596,6 +597,7 @@ H.set_heartattack(FALSE) H.revive() H.emote("gasp") + SEND_SIGNAL(H, COMSIG_LIVING_MINOR_SHOCK) H.Jitter(100) if(tplus > tloss) H.adjustBrainLoss( max(0, min(99, ((tlimit - tplus) / tlimit * 100))), 150) diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 02f549956a..695f64f0b6 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -114,11 +114,11 @@ /obj/item/radio/intercom/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans, message_mode) + . = ..() if (message_mode == MODE_INTERCOM) return // Avoid hearing the same thing twice if(!anyai && !(speaker in ai)) return - ..() /obj/item/radio/intercom/process() if(((world.timeofday - last_tick) > 30) || ((world.timeofday - last_tick) < 0)) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 6a6d34340e..719fe6ddd8 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -276,6 +276,7 @@ signal.broadcast() /obj/item/radio/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) + . = ..() if(radio_freq || !broadcasting || get_dist(src, speaker) > canhear_range) return diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 6acff297c9..a4329d3711 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -328,6 +328,7 @@ SLIME SCANNER if(cyberimp_detect) to_chat(user, "Detected cybernetic modifications:") to_chat(user, "[cyberimp_detect]") + SEND_SIGNAL(M, COMSIG_NANITE_SCAN, user, FALSE) /proc/chemscan(mob/living/user, mob/living/M) if(istype(M)) @@ -603,3 +604,29 @@ SLIME SCANNER to_chat(user, "Core mutation in progress: [T.effectmod]") to_chat(user, "Progress in core mutation: [T.applied] / [SLIME_EXTRACT_CROSSING_REQUIRED]") to_chat(user, "========================") + +/obj/item/nanite_scanner + name = "nanite scanner" + icon = 'icons/obj/device.dmi' + icon_state = "nanite_scanner" + item_state = "nanite_remote" + lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' + desc = "A hand-held body scanner able to detect nanites and their programming." + flags_1 = CONDUCT_1 + item_flags = NOBLUDGEON + slot_flags = ITEM_SLOT_BELT + throwforce = 3 + w_class = WEIGHT_CLASS_TINY + throw_speed = 3 + throw_range = 7 + materials = list(MAT_METAL=200) + +/obj/item/nanite_scanner/attack(mob/living/M, mob/living/carbon/human/user) + user.visible_message("[user] has analyzed [M]'s nanites.") + + add_fingerprint(user) + + var/response = SEND_SIGNAL(M, COMSIG_NANITE_SCAN, user, TRUE) + if(!response) + to_chat(user, "No nanites detected in the subject.") \ No newline at end of file diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 50cdbe9c48..2324fd30b4 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -95,6 +95,7 @@ /obj/item/taperecorder/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans, message_mode) + . = ..() if(mytape && recording) mytape.timestamp += mytape.used_capacity mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] [message]" diff --git a/code/game/objects/items/eightball.dm b/code/game/objects/items/eightball.dm index ba1bd698e8..bdaa716075 100644 --- a/code/game/objects/items/eightball.dm +++ b/code/game/objects/items/eightball.dm @@ -123,6 +123,7 @@ return ..() /obj/item/toy/eightball/haunted/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans, message_mode) + . = ..() last_message = raw_message /obj/item/toy/eightball/haunted/start_shaking(mob/user) diff --git a/code/game/objects/items/implants/implant_mindshield.dm b/code/game/objects/items/implants/implant_mindshield.dm index 773d784fbd..fe893ccd7d 100644 --- a/code/game/objects/items/implants/implant_mindshield.dm +++ b/code/game/objects/items/implants/implant_mindshield.dm @@ -19,6 +19,8 @@ /obj/item/implant/mindshield/implant(mob/living/target, mob/user, silent = FALSE) if(..()) if(!target.mind) + target.add_trait(TRAIT_MINDSHIELD, "implant") + target.sec_hud_set_implants() return TRUE if(target.mind.has_antag_datum(/datum/antagonist/brainwashed)) @@ -39,6 +41,8 @@ to_chat(target, "You feel something interfering with your mental conditioning, but you resist it!") else to_chat(target, "You feel a sense of peace and security. You are now protected from brainwashing.") + target.add_trait(TRAIT_MINDSHIELD, "implant") + target.sec_hud_set_implants() return TRUE return FALSE @@ -46,8 +50,12 @@ if(..()) if(target.stat != DEAD && !silent) to_chat(target, "Your mind suddenly feels terribly vulnerable. You are no longer safe from brainwashing.") - return 1 - return 0 + if(isliving(target)) + var/mob/living/L = target + L.remove_trait(TRAIT_MINDSHIELD, "implant") + L.sec_hud_set_implants() + return TRUE + return FALSE /obj/item/implanter/mindshield name = "implanter (mindshield)" diff --git a/code/game/objects/items/implants/implantchair.dm b/code/game/objects/items/implants/implantchair.dm index a135cc3af4..36c79bd454 100644 --- a/code/game/objects/items/implants/implantchair.dm +++ b/code/game/objects/items/implants/implantchair.dm @@ -185,7 +185,7 @@ objective = stripped_input(usr,"What order do you want to imprint on [C]?","Enter the order","",120) message_admins("[ADMIN_LOOKUPFLW(user)] set brainwash machine objective to '[objective]'.") log_game("[key_name(user)] set brainwash machine objective to '[objective]'.") - if(C.isloyal()) + if(C.has_trait(TRAIT_MINDSHIELD)) return FALSE brainwash(C, objective) message_admins("[ADMIN_LOOKUPFLW(user)] brainwashed [key_name_admin(C)] with objective '[objective]'.") diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index 696168d69d..1159adf767 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -187,7 +187,7 @@ inspiration_available = FALSE /obj/item/banner/command/check_inspiration(mob/living/carbon/human/H) - return H.isloyal() //Command is stalwart but rewards their allies. + return H.has_trait(TRAIT_MINDSHIELD) //Command is stalwart but rewards their allies. /datum/crafting_recipe/command_banner name = "Command Banner" diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 9ac08aab5d..be4eae5ada 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -1008,3 +1008,11 @@ new /obj/item/stock_parts/matter_bin/bluespace(src) new /obj/item/stock_parts/matter_bin/bluespace(src) new /obj/item/stock_parts/matter_bin/bluespace(src) + +/obj/item/storage/box/disks_nanite + name = "nanite program disks box" + illustration = "disk_kit" + +/obj/item/storage/box/disks_nanite/PopulateContents() + for(var/i in 1 to 7) + new /obj/item/disk/nanite_program(src) \ No newline at end of file diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index 527c7ea78e..0801d282fd 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -165,6 +165,7 @@ L.Knockdown(stunforce) L.adjustStaminaLoss(stunforce*0.1)//CIT CHANGE - makes stunbatons deal extra staminaloss. Todo: make this also deal pain when pain gets implemented. L.apply_effect(EFFECT_STUTTER, stunforce) + SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK) if(user) L.lastattacker = user.real_name L.lastattackerckey = user.ckey diff --git a/code/game/objects/items/teleprod.dm b/code/game/objects/items/teleprod.dm index 85355f1c0f..fd9972f427 100644 --- a/code/game/objects/items/teleprod.dm +++ b/code/game/objects/items/teleprod.dm @@ -12,9 +12,11 @@ user.visible_message("[user] accidentally hits [user.p_them()]self with [src]!", \ "You accidentally hit yourself with [src]!") if(do_teleport(user, get_turf(user), 50))//honk honk + SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK) user.Knockdown(stunforce*3) deductcharge(hitcost) else + SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK) user.Knockdown(stunforce*3) deductcharge(hitcost/4) return @@ -23,6 +25,7 @@ if(!istype(M) && M.anchored) return . else + SEND_SIGNAL(M, COMSIG_LIVING_MINOR_SHOCK) do_teleport(M, get_turf(M), 15) /obj/item/melee/baton/cattleprod/attackby(obj/item/I, mob/user, params)//handles sticking a crystal onto a stunprod to make a teleprod diff --git a/code/game/say.dm b/code/game/say.dm index 6eefc397f5..10359aab85 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -29,7 +29,7 @@ GLOBAL_LIST_INIT(freqtospan, list( send_speech(message, 7, src, , spans, message_language=language) /atom/movable/proc/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) - return + SEND_SIGNAL(src, COMSIG_MOVABLE_HEAR, message, speaker, message_language, raw_message, radio_freq, spans, message_mode) /atom/movable/proc/can_speak() return 1 diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index 94efce6059..ebbef58cbb 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -4,7 +4,7 @@ var/F = file("[GLOB.log_directory]/[subject].html") WRITE_FILE(F, "[time_stamp()] [REF(src)] ([x],[y],[z]) || [src] [message]
") -/client/proc/investigate_show(subject in list("notes, memos, watchlist", INVESTIGATE_RESEARCH, INVESTIGATE_EXONET, INVESTIGATE_PORTAL, INVESTIGATE_SINGULO, INVESTIGATE_WIRES, INVESTIGATE_TELESCI, INVESTIGATE_GRAVITY, INVESTIGATE_RECORDS, INVESTIGATE_CARGO, INVESTIGATE_SUPERMATTER, INVESTIGATE_ATMOS, INVESTIGATE_EXPERIMENTOR, INVESTIGATE_BOTANY, INVESTIGATE_HALLUCINATIONS, INVESTIGATE_RADIATION, INVESTIGATE_CIRCUIT) ) +/client/proc/investigate_show(subject in list("notes, memos, watchlist", INVESTIGATE_RESEARCH, INVESTIGATE_EXONET, INVESTIGATE_PORTAL, INVESTIGATE_SINGULO, INVESTIGATE_WIRES, INVESTIGATE_TELESCI, INVESTIGATE_GRAVITY, INVESTIGATE_RECORDS, INVESTIGATE_CARGO, INVESTIGATE_SUPERMATTER, INVESTIGATE_ATMOS, INVESTIGATE_EXPERIMENTOR, INVESTIGATE_BOTANY, INVESTIGATE_HALLUCINATIONS, INVESTIGATE_RADIATION, INVESTIGATE_CIRCUIT, INVESTIGATE_NANITES) ) set name = "Investigate" set category = "Admin" if(!holder) diff --git a/code/modules/admin/antag_panel.dm b/code/modules/admin/antag_panel.dm index 7546fa8542..1e207909bd 100644 --- a/code/modules/admin/antag_panel.dm +++ b/code/modules/admin/antag_panel.dm @@ -35,9 +35,9 @@ GLOBAL_VAR(antag_prototypes) var/data_part = antag_panel_data() var/objective_part = antag_panel_objectives() var/memory_part = antag_panel_memory() - + var/list/parts = listtrim(list(command_part,data_part,objective_part,memory_part)) - + return parts.Join("
") /datum/antagonist/proc/antag_panel_objectives() @@ -80,7 +80,7 @@ GLOBAL_VAR(antag_prototypes) var/list/result = list() if(!current) result += "No body!" - if(current && current.isloyal()) + if(current && current.has_trait(TRAIT_MINDSHIELD)) result += "Mindshielded" //Move these to mob if(iscyborg(current)) @@ -155,8 +155,8 @@ GLOBAL_VAR(antag_prototypes) priority_sections |= antag_category antag_header_parts += "[current_antag.name]" antag_header_parts += "Remove" - - + + //We aren't antag of this category, grab first prototype to check the prefs (This is pretty vague but really not sure how else to do this) var/datum/antagonist/pref_source = current_antag if(!pref_source) @@ -167,7 +167,7 @@ GLOBAL_VAR(antag_prototypes) break if(pref_source.job_rank) antag_header_parts += pref_source.enabled_in_preferences(src) ? "Enabled in Prefs" : "Disabled in Prefs" - + //Traitor : None | Traitor | IAA // Command1 | Command2 | Command3 // Secret Word : Banana @@ -180,12 +180,12 @@ GLOBAL_VAR(antag_prototypes) if(current_antag) cat_section += current_antag.antag_panel() sections[antag_category] = cat_section - + for(var/s in priority_sections) out += sections[s] for(var/s in sections - priority_sections) out += sections[s] - + out += "
" //Uplink @@ -201,7 +201,7 @@ GLOBAL_VAR(antag_prototypes) else uplink_info += "give" uplink_info += "." //hiel grammar - + out += uplink_info + "
" //Common Memory var/common_memory = "Common Memory:" @@ -210,7 +210,7 @@ GLOBAL_VAR(antag_prototypes) out += common_memory + "
" //Other stuff out += get_common_admin_commands() - + var/datum/browser/panel = new(usr, "traitorpanel", "", 600, 600) panel.set_content(out) panel.open() diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index f19521e821..c985ee2236 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -502,6 +502,7 @@ Congratulations! You are now trained for invasive xenobiology research!"} L.Knockdown(140) L.apply_effect(EFFECT_STUTTER, 7) + SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK) L.visible_message("[user] has stunned [L] with [src]!", \ "[user] has stunned you with [src]!") diff --git a/code/modules/antagonists/clockcult/clock_mobs/_eminence.dm b/code/modules/antagonists/clockcult/clock_mobs/_eminence.dm index 262910346e..0127b8bf69 100644 --- a/code/modules/antagonists/clockcult/clock_mobs/_eminence.dm +++ b/code/modules/antagonists/clockcult/clock_mobs/_eminence.dm @@ -33,12 +33,12 @@ T.visible_message("[T] suddenly emits a ringing sound!", null, null, null, src) playsound(T, 'sound/machines/clockcult/ark_damage.ogg', 75, FALSE) last_failed_turf = T - if((world.time - lastWarning) >= 30) + if((world.time - lastWarning) >= 30) lastWarning = world.time to_chat(src, "This turf is consecrated and can't be crossed!") return if(istype(get_area(T), /area/chapel)) - if((world.time - lastWarning) >= 30) + if((world.time - lastWarning) >= 30) lastWarning = world.time to_chat(src, "The Chapel is hallowed ground under a heretical deity, and can't be accessed!") return @@ -99,6 +99,7 @@ to_chat(M, message) /mob/camera/eminence/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode) + . = ..() if(is_reebe(z) || is_servant_of_ratvar(speaker) || GLOB.ratvar_approaches || GLOB.ratvar_awakens) //Away from Reebe, the Eminence can't hear anything to_chat(src, message) return diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm index ce39748ec9..ad72682773 100644 --- a/code/modules/antagonists/revolution/revolution.dm +++ b/code/modules/antagonists/revolution/revolution.dm @@ -17,7 +17,7 @@ return FALSE if(new_owner.unconvertable) return FALSE - if(new_owner.current && new_owner.current.isloyal()) + if(new_owner.current && new_owner.current.has_trait(TRAIT_MINDSHIELD)) return FALSE /datum/antagonist/rev/apply_innate_effects(mob/living/mob_override) diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index ca97752d90..32148abc21 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -26,6 +26,7 @@ to_chat(user, "Use a multitool to swap between \"inclusive\", \"exclusive\", \"recognizer\", and \"voice sensor\" mode.") /obj/item/assembly/voice/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) + . = ..() if(speaker == src) return diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index a21747837b..2899a190c3 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -625,7 +625,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( qdel(src) /obj/effect/hallucination/fake_door_lock - layer = CLOSED_DOOR_LAYER + 1 //for Collide priority + layer = CLOSED_DOOR_LAYER + 1 //for Bump priority var/image/bolt_light var/obj/machinery/door/airlock/airlock @@ -771,13 +771,13 @@ GLOBAL_LIST_INIT(hallucination_list, list( ..() var/turf/source = random_far_turf() if(!sound_type) - sound_type = pick("airlock","airlock_pry","console","explosion","far_explosion","mech","glass","alarm","beepsky","mech","wall_decon","door_hack","tesla") + sound_type = pick("airlock","airlock pry","console","explosion","far explosion","mech","glass","alarm","beepsky","mech","wall decon","door hack") feedback_details += "Type: [sound_type]" //Strange audio switch(sound_type) if("airlock") target.playsound_local(source,'sound/machines/airlock.ogg', 30, 1) - if("airlock_pry") + if("airlock pry") target.playsound_local(source,'sound/machines/airlock_alien_prying.ogg', 100, 1) sleep(50) target.playsound_local(source, 'sound/machines/airlockforced.ogg', 30, 1) @@ -788,7 +788,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( target.playsound_local(source,'sound/effects/explosion1.ogg', 50, 1) else target.playsound_local(source, 'sound/effects/explosion2.ogg', 50, 1) - if("far_explosion") + if("far explosion") target.playsound_local(source, 'sound/effects/explosionfar.ogg', 50, 1) if("glass") target.playsound_local(source, pick('sound/effects/glassbr1.ogg','sound/effects/glassbr2.ogg','sound/effects/glassbr3.ogg'), 50, 1) @@ -807,14 +807,14 @@ GLOBAL_LIST_INIT(hallucination_list, list( mech_dir = pick(GLOB.cardinals) sleep(10) //Deconstructing a wall - if("wall_decon") + if("wall decon") target.playsound_local(source, 'sound/items/welder.ogg', 50, 1) sleep(105) target.playsound_local(source, 'sound/items/welder2.ogg', 50, 1) sleep(15) target.playsound_local(source, 'sound/items/ratchet.ogg', 50, 1) //Hacking a door - if("door_hack") + if("door hack") target.playsound_local(source, 'sound/items/screwdriver.ogg', 50, 1) sleep(rand(40,80)) target.playsound_local(source, 'sound/machines/airlockforced.ogg', 30, 1) @@ -827,7 +827,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( ..() var/turf/source = random_far_turf() if(!sound_type) - sound_type = pick("phone","hallelujah","highlander","hyperspace","game_over","creepy","tesla") + sound_type = pick("phone","hallelujah","highlander","laughter","hyperspace","game over","creepy","tesla") feedback_details += "Type: [sound_type]" //Strange audio switch(sound_type) @@ -845,7 +845,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( target.playsound_local(source, 'sound/effects/pray_chaplain.ogg', 50) if("highlander") target.playsound_local(null, 'sound/misc/highlander.ogg', 50) - if("game_over") + if("game over") target.playsound_local(source, 'sound/misc/compiler-failure.ogg', 50) if("laughter") if(prob(50)) @@ -870,10 +870,10 @@ GLOBAL_LIST_INIT(hallucination_list, list( set waitfor = FALSE ..() if(!message) - message = pick("ratvar","shuttle_dock","blob_alert","malf_ai","meteors","supermatter") + message = pick("ratvar","shuttle dock","blob alert","malf ai","meteors","supermatter") feedback_details += "Type: [message]" switch(message) - if("blob_alert") + if("blob alert") to_chat(target, "

Biohazard Alert

") to_chat(target, "

Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.

") SEND_SOUND(target, 'sound/ai/outbreak5.ogg') @@ -882,11 +882,11 @@ GLOBAL_LIST_INIT(hallucination_list, list( target.playsound_local(target, 'sound/effects/clockcult_gateway_disrupted.ogg', 50, FALSE, pressure_affected = FALSE) sleep(27) target.playsound_local(target, 'sound/effects/explosion_distant.ogg', 50, FALSE, pressure_affected = FALSE) - if("shuttle_dock") + if("shuttle dock") to_chat(target, "

Priority Announcement

") to_chat(target, "

The Emergency Shuttle has docked with the station. You have 3 minutes to board the Emergency Shuttle.

") SEND_SOUND(target, 'sound/ai/shuttledock.ogg') - if("malf_ai") //AI is doomsdaying! + if("malf ai") //AI is doomsdaying! to_chat(target, "

Anomaly Alert

") to_chat(target, "

Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.

") SEND_SOUND(target, 'sound/ai/aimalf.ogg') @@ -900,11 +900,14 @@ GLOBAL_LIST_INIT(hallucination_list, list( /datum/hallucination/hudscrew -/datum/hallucination/hudscrew/New(mob/living/carbon/C, forced = TRUE) +/datum/hallucination/hudscrew/New(mob/living/carbon/C, forced = TRUE, screwyhud_type) set waitfor = FALSE ..() //Screwy HUD - target.set_screwyhud(pick(SCREWYHUD_CRIT,SCREWYHUD_DEAD,SCREWYHUD_HEALTHY)) + var/chosen_screwyhud = screwyhud_type + if(!chosen_screwyhud) + chosen_screwyhud = pick(SCREWYHUD_CRIT,SCREWYHUD_DEAD,SCREWYHUD_HEALTHY) + target.set_screwyhud(chosen_screwyhud) feedback_details += "Type: [target.hal_screwyhud]" sleep(rand(100,250)) target.set_screwyhud(SCREWYHUD_NONE) diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index 96ca6a3055..a32be12b6d 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -865,6 +865,7 @@ power_draw_per_use = 5 /obj/item/integrated_circuit/input/microphone/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans, message_mode) + . = ..() var/translated = FALSE if(speaker && message) if(raw_message) diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index ced08bbc6a..63e6962a74 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -11,6 +11,8 @@ if(IsAdminGhost(M)) //Access can't stop the abuse return TRUE + else if(SEND_SIGNAL(M, COMSIG_MOB_ALLOWED, src)) + return TRUE else if(ishuman(M)) var/mob/living/carbon/human/H = M //if they are holding or wearing a card that has access, that works @@ -59,7 +61,6 @@ /obj/proc/check_access(obj/item/I) return check_access_list(I ? I.GetAccess() : null) - /obj/proc/check_access_list(list/access_list) gen_access() @@ -166,7 +167,7 @@ if(6) //supply return list(ACCESS_MAILSORTING, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_CARGO, ACCESS_QM, ACCESS_VAULT) if(7) //command - return list(ACCESS_HEADS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_TELEPORTER, ACCESS_EVA, ACCESS_GATEWAY, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_HOP, ACCESS_CAPTAIN) + return list(ACCESS_HEADS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_TELEPORTER, ACCESS_EVA, ACCESS_GATEWAY, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_HOP, ACCESS_CAPTAIN, ACCESS_VAULT) /proc/get_region_accesses_name(code) switch(code) diff --git a/code/modules/mob/dead/observer/say.dm b/code/modules/mob/dead/observer/say.dm index 7e8a493f7a..ec803f0899 100644 --- a/code/modules/mob/dead/observer/say.dm +++ b/code/modules/mob/dead/observer/say.dm @@ -23,6 +23,7 @@ . = say_dead(message) /mob/dead/observer/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) + . = ..() var/atom/movable/to_follow = speaker if(radio_freq) var/atom/movable/virtualspeaker/V = speaker diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index c6d5180cfb..235a215eff 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -10,4 +10,4 @@ return /mob/proc/death(gibbed) - return \ No newline at end of file + SEND_SIGNAL(src, COMSIG_MOB_DEATH, gibbed) diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 6b0dcb51eb..cc01a83a15 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -2,7 +2,7 @@ gender = MALE pressure_resistance = 15 possible_a_intents = list(INTENT_HELP, INTENT_HARM) - hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD,GLAND_HUD) + hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD,GLAND_HUD,NANITE_HUD,DIAG_NANITE_FULL_HUD) has_limbs = 1 held_items = list(null, null) var/list/stomach_contents = list() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 51a606792c..1fb2e9ed2c 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -602,7 +602,7 @@ threatcount += 1 //mindshield implants imply trustworthyness - if(isloyal()) + if(has_trait(TRAIT_MINDSHIELD)) threatcount -= 1 //Agent cards lower threatlevel. diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index c371465ffa..ff0dab75a8 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -1,5 +1,5 @@ /mob/living/carbon/human - hud_possible = list(HEALTH_HUD,STATUS_HUD,ID_HUD,WANTED_HUD,IMPLOYAL_HUD,IMPCHEM_HUD,IMPTRACK_HUD,ANTAG_HUD,GLAND_HUD,SENTIENT_DISEASE_HUD) + hud_possible = list(HEALTH_HUD,STATUS_HUD,ID_HUD,WANTED_HUD, NANITE_HUD, DIAG_NANITE_FULL_HUD,IMPLOYAL_HUD,IMPCHEM_HUD,IMPTRACK_HUD,ANTAG_HUD,GLAND_HUD,SENTIENT_DISEASE_HUD) possible_a_intents = list(INTENT_HELP, INTENT_DISARM, INTENT_GRAB, INTENT_HARM) pressure_resistance = 25 can_buckle = TRUE diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 5bd972a8c4..54f6e3e952 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -289,6 +289,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(TRAIT_VIRUSIMMUNE in inherent_traits) for(var/datum/disease/A in C.diseases) A.cure(FALSE) + SEND_SIGNAL(C, COMSIG_SPECIES_GAIN, src, old_species) //CITADEL EDIT if(NOAROUSAL in species_traits) @@ -305,6 +306,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) C.Digitigrade_Leg_Swap(TRUE) for(var/X in inherent_traits) C.remove_trait(X, SPECIES_TRAIT) + SEND_SIGNAL(C, COMSIG_SPECIES_LOSS, src) /datum/species/proc/handle_hair(mob/living/carbon/human/H, forced_colour) H.remove_overlay(HAIR_LAYER) diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm index 16cfc027f0..d6857e1c93 100644 --- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm +++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm @@ -122,13 +122,13 @@ qdel(src) /obj/item/dullahan_relay/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) + . = ..() if(!QDELETED(owner)) message = compose_message(speaker, message_language, raw_message, radio_freq, spans, message_mode) to_chat(owner,message) else qdel(src) - /obj/item/dullahan_relay/Destroy() if(!QDELETED(owner)) var/mob/living/carbon/human/H = owner diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 7f5726cf95..cbbfe2b4d7 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -594,7 +594,7 @@ /datum/species/jelly/stargazer/proc/link_mob(mob/living/M) if(QDELETED(M) || M.stat == DEAD) return FALSE - if(M.isloyal()) //mindshield implant, no dice + if(M.has_trait(TRAIT_MINDSHIELD)) //mindshield implant, no dice return FALSE if(M in linked_mobs) return FALSE diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index d1d9c4370e..19592f7b63 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -142,7 +142,7 @@ threatcount += 4 //trigger look_for_perp() since they're nonhuman and very likely hostile //mindshield implants imply trustworthyness - if(isloyal()) + if(has_trait(TRAIT_MINDSHIELD)) threatcount -= 1 return threatcount diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index 8a8c99bf32..e9eab9d2a8 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -40,6 +40,7 @@ . = initial(dt.flags) & TONGUELESS_SPEECH /mob/living/carbon/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode) + . = ..() if(!client) return for(var/T in get_traumas()) diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 35c2abac9c..bb16aeb7bf 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -76,7 +76,7 @@ med_hud_set_status() addtimer(CALLBACK(src, .proc/med_hud_set_status), (DEFIB_TIME_LIMIT * 10) + 1) stop_pulling() - + SEND_SIGNAL(src, COMSIG_MOB_DEATH, gibbed) if (client) client.move_delay = initial(client.move_delay) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 24627f7eec..ad45724bd5 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -5,10 +5,11 @@ real_name = name var/datum/atom_hud/data/human/medical/advanced/medhud = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED] medhud.add_to_hud(src) + for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) + diag_hud.add_to_hud(src) faction += "[REF(src)]" GLOB.mob_living_list += src - /mob/living/prepare_huds() ..() prepare_data_huds() diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 0ce42af01b..3b010ed8ec 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -302,6 +302,7 @@ return 1 /mob/living/proc/electrocute_act(shock_damage, obj/source, siemens_coeff = 1, safety = 0, tesla_shock = 0, illusion = 0, stun = TRUE) + SEND_SIGNAL(src, COMSIG_LIVING_ELECTROCUTE_ACT, shock_damage) if(tesla_shock && (flags_1 & TESLA_IGNORE_1)) return FALSE if(has_trait(TRAIT_SHOCKIMMUNE)) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 1016387cb5..5ee9b8f921 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -2,7 +2,7 @@ see_invisible = SEE_INVISIBLE_LIVING sight = 0 see_in_dark = 2 - hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD) + hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD,NANITE_HUD,DIAG_NANITE_FULL_HUD) pressure_resistance = 10 var/resize = 1 //Badminnery resize diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index e25a5e4a85..a7398493b0 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -217,6 +217,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( return 1 /mob/living/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode) + . = ..() if(!client) return var/deaf_message diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index c2c395cabb..e78c008362 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -129,5 +129,6 @@ to_chat(usr, "Camera acceleration has been toggled [acceleration ? "on" : "off"].") /mob/camera/aiEye/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode) + . = ..() if(relay_speech && speaker && ai && !radio_freq && speaker != ai && near_camera(speaker)) ai.relay_speech(message, speaker, message_language, raw_message, radio_freq, spans, message_mode) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index a6dce0e8e3..19e2fda91d 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -379,7 +379,7 @@ Difficulty: Very Hard to_chat(user, "It is activated by [activation_method].") /obj/machinery/anomalous_crystal/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans, message_mode) - ..() + . = ..() if(isliving(speaker)) ActivationReaction(speaker, ACTIVATE_SPEECH) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 2affa548c5..7d9a4eefe6 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -144,6 +144,7 @@ stat("Mode",a_intent) /mob/living/simple_animal/parrot/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans, message_mode) + . = ..() if(speaker != src && prob(50)) //Dont imitate ourselves if(!radio_freq || prob(10)) if(speech_buffer.len >= 500) @@ -151,7 +152,6 @@ speech_buffer |= html_decode(raw_message) if(speaker == src && !client) //If a parrot squawks in the woods and no one is around to hear it, does it make a sound? This code says yes! return message - ..() /mob/living/simple_animal/parrot/radio(message, message_mode, list/spans, language) //literally copied from human/radio(), but there's no other way to do this. at least it's better than it used to be. . = ..() diff --git a/code/modules/mob/living/simple_animal/slime/say.dm b/code/modules/mob/living/simple_animal/slime/say.dm index 60a25f90b7..a2618b711e 100644 --- a/code/modules/mob/living/simple_animal/slime/say.dm +++ b/code/modules/mob/living/simple_animal/slime/say.dm @@ -1,7 +1,7 @@ /mob/living/simple_animal/slime/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans, message_mode) + . = ..() if(speaker != src && !radio_freq && !stat) if (speaker in Friends) speech_buffer = list() speech_buffer += speaker speech_buffer += lowertext(html_decode(message)) - ..() diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 2accb65e36..0e37666f02 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -1,13 +1,6 @@ // see _DEFINES/is_helpers.dm for mob type checks -/mob/proc/isloyal() //Checks to see if the person contains a mindshield implant, then checks that the implant is actually inside of them - return 0 - -/mob/living/carbon/isloyal() - for(var/obj/item/implant/mindshield/L in implants) - return TRUE - /mob/proc/lowest_buckled_mob() . = src if(buckled && ismob(buckled)) diff --git a/code/modules/projectiles/projectile/energy/stun.dm b/code/modules/projectiles/projectile/energy/stun.dm index de9016a4c4..b5b45a84ec 100644 --- a/code/modules/projectiles/projectile/energy/stun.dm +++ b/code/modules/projectiles/projectile/energy/stun.dm @@ -19,6 +19,7 @@ else if(iscarbon(target)) var/mob/living/carbon/C = target SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "tased", /datum/mood_event/tased) + SEND_SIGNAL(C, COMSIG_LIVING_MINOR_SHOCK) if(C.dna && C.dna.check_mutation(HULK)) C.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) else if((C.status_flags & CANKNOCKDOWN) && !C.has_trait(TRAIT_STUNIMMUNE)) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 474e24f5a5..881e694780 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -68,11 +68,11 @@ ..() . = 1 -/datum/reagent/medicine/adminordrazine/nanites - name = "Nanites" - id = "nanites" - description = "Tiny nanomachines capable of rapid cellular regeneration." - taste_description = "sludge" +/datum/reagent/medicine/adminordrazine/quantum_heal + name = "Quantum Medicine" + id = "quantum_heal" + description = "Rare and experimental particles, that apparently swap the user's body with one from an alternate dimension where it's completely healthy." + taste_description = "science" /datum/reagent/medicine/synaptizine name = "Synaptizine" @@ -1104,20 +1104,20 @@ ..() return TRUE -/datum/reagent/medicine/miningnanites - name = "Nanites" - id = "miningnanites" - description = "It's mining magic. We don't have to explain it." +/datum/reagent/medicine/lavaland_extract + name = "Lavaland Extract" + id = "lavaland_extract" + description = "An extract of lavaland atmospheric and mineral elements. Heals the user in small doses, but is extremely toxic otherwise." color = "#C8A5DC" // rgb: 200, 165, 220 overdose_threshold = 3 //To prevent people stacking massive amounts of a very strong healing reagent can_synth = FALSE -/datum/reagent/medicine/miningnanites/on_mob_life(mob/living/carbon/M) +/datum/reagent/medicine/lavaland_extract/on_mob_life(mob/living/carbon/M) M.heal_bodypart_damage(5,5) ..() return TRUE -/datum/reagent/medicine/miningnanites/overdose_process(mob/living/M) +/datum/reagent/medicine/lavaland_extract/overdose_process(mob/living/M) M.adjustBruteLoss(3*REM, 0) M.adjustFireLoss(3*REM, 0) M.adjustToxLoss(3*REM, 0) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 20f8afb2df..c3d36b6b6a 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1091,7 +1091,7 @@ M.emote("drool") ..() -/datum/reagent/nanites +/datum/reagent/nanomachines name = "Nanomachines" id = "nanomachines" description = "Microscopic construction robots." @@ -1099,7 +1099,7 @@ can_synth = FALSE taste_description = "sludge" -/datum/reagent/nanites/reaction_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0) +/datum/reagent/nanomachines/reaction_mob(mob/living/L, method=TOUCH, reac_volume, show_message = 1, touch_protection = 0) if(method==PATCH || method==INGEST || method==INJECT || (method == VAPOR && prob(min(reac_volume,100)*(1 - touch_protection)))) L.ForceContractDisease(new /datum/disease/transformation/robot(), FALSE, TRUE) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 8d4e2d88f9..b03dcedd1a 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -64,9 +64,9 @@ list_reagents = list("epinephrine" = 30, "omnizine" = 30, "leporazine" = 15, "atropine" = 15) /obj/item/reagent_containers/hypospray/combat/nanites - desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with expensive medical nanites for rapid healing." + desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with experimental medical compounds for rapid healing." volume = 100 - list_reagents = list("nanites" = 80, "synaptizine" = 20) + list_reagents = list("quantum_heal" = 80, "synaptizine" = 20) /obj/item/reagent_containers/hypospray/magillitis name = "experimental autoinjector" @@ -158,7 +158,7 @@ icon_state = "stimpen" volume = 57 amount_per_transfer_from_this = 57 - list_reagents = list("salbutamol" = 10, "leporazine" = 15, "tricordrazine" = 15, "epinephrine" = 10, "miningnanites" = 2, "omnizine" = 5) + list_reagents = list("salbutamol" = 10, "leporazine" = 15, "tricordrazine" = 15, "epinephrine" = 10, "lavaland_extract" = 2, "omnizine" = 5) /obj/item/reagent_containers/hypospray/medipen/species_mutator name = "species mutator medipen" diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm index 0522166f72..bbea1ce267 100644 --- a/code/modules/research/designs/comp_board_designs.dm +++ b/code/modules/research/designs/comp_board_designs.dm @@ -285,3 +285,19 @@ build_path = /obj/item/circuitboard/computer/apc_control category = list("Computer Boards") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/board/nanite_chamber_control + name = "Computer Design (Nanite Chamber Control)" + desc = "Allows for the construction of circuit boards used to build a new nanite chamber control console." + id = "nanite_chamber_control" + build_path = /obj/item/circuitboard/computer/nanite_chamber_control + category = list("Computer Boards") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/board/nanite_cloud_control + name = "Computer Design (Nanite Cloud Control)" + desc = "Allows for the construction of circuit boards used to build a new nanite cloud control console." + id = "nanite_cloud_control" + build_path = /obj/item/circuitboard/computer/nanite_cloud_controller + category = list("Computer Boards") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE diff --git a/code/modules/research/designs/electronics_designs.dm b/code/modules/research/designs/electronics_designs.dm index 29ed3505d8..e9db641811 100644 --- a/code/modules/research/designs/electronics_designs.dm +++ b/code/modules/research/designs/electronics_designs.dm @@ -23,6 +23,29 @@ category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_ALL +/////////////////////////////////// +//////////Nanite Devices/////////// +/////////////////////////////////// +/datum/design/nanite_remote + name = "Nanite Remote" + desc = "Allows for the construction of a nanite remote." + id = "nanite_remote" + build_type = PROTOLATHE + materials = list(MAT_GLASS = 500, MAT_METAL = 500) + build_path = /obj/item/nanite_remote + category = list("Electronics") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/nanite_scanner + name = "Nanite Scanner" + desc = "Allows for the construction of a nanite scanner." + id = "nanite_scanner" + build_type = PROTOLATHE + materials = list(MAT_GLASS = 500, MAT_METAL = 500) + build_path = /obj/item/nanite_scanner + category = list("Electronics") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE + //////////////////////////////////////// //////////Disk Construction Disks/////// //////////////////////////////////////// @@ -56,6 +79,16 @@ category = list("Electronics") departmental_flags = DEPARTMENTAL_FLAG_SCIENCE +/datum/design/nanite_disk + name = "Nanite Program Disk" + desc = "Stores nanite programs." + id = "nanite_disk" + build_type = PROTOLATHE + materials = list(MAT_METAL = 300, MAT_GLASS = 100) + build_path = /obj/item/disk/nanite_program + category = list("Electronics") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE + /datum/design/integrated_printer name = "Integrated circuit printer" desc = "This machine provides all necessary things for circuitry." diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 89f1eb85b9..1ebadd2e34 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -521,4 +521,36 @@ id = "stack_machine" build_path = /obj/item/circuitboard/machine/stacking_machine category = list ("Misc. Machinery") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING \ No newline at end of file + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING + +/datum/design/board/nanite_chamber + name = "Machine Design (Nanite Chamber Board)" + desc = "The circuit board for a Nanite Chamber." + id = "nanite_chamber" + build_path = /obj/item/circuitboard/machine/nanite_chamber + category = list("Research Machinery") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/board/public_nanite_chamber + name = "Machine Design (Public Nanite Chamber Board)" + desc = "The circuit board for a Public Nanite Chamber." + id = "public_nanite_chamber" + build_path = /obj/item/circuitboard/machine/public_nanite_chamber + category = list("Research Machinery") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/board/nanite_programmer + name = "Machine Design (Nanite Programmer Board)" + desc = "The circuit board for a Nanite Programmer." + id = "nanite_programmer" + build_path = /obj/item/circuitboard/machine/nanite_programmer + category = list("Research Machinery") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/board/nanite_program_hub + name = "Machine Design (Nanite Program Hub Board)" + desc = "The circuit board for a Nanite Program Hub." + id = "nanite_program_hub" + build_path = /obj/item/circuitboard/machine/nanite_program_hub + category = list("Research Machinery") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE diff --git a/code/modules/research/designs/nanite_designs.dm b/code/modules/research/designs/nanite_designs.dm new file mode 100644 index 0000000000..02f543af1e --- /dev/null +++ b/code/modules/research/designs/nanite_designs.dm @@ -0,0 +1,477 @@ +/datum/design/nanites + name = "None" + desc = "Warn a coder if you see this." + id = "default_nanites" + build_type = NANITE_COMPILER + construction_time = 50 + category = list() + //research_icon = 'icons/obj/device.dmi' + //research_icon_state = "nanite_program" + var/program_type = /datum/nanite_program + +////////////////////UTILITY NANITES////////////////////////////////////// + +/datum/design/nanites/metabolic_synthesis + name = "Metabolic Synthesis" + desc = "The nanites use the metabolic cycle of the host to speed up their replication rate, using their extra nutrition as fuel." + id = "metabolic_nanites" + program_type = /datum/nanite_program/metabolic_synthesis + category = list("Utility Nanites") + +/datum/design/nanites/viral + name = "Viral Replica" + desc = "The nanites constantly send encrypted signals attempting to forcefully copy their own programming into other nanite clusters." + id = "viral_nanites" + program_type = /datum/nanite_program/viral + category = list("Utility Nanites") + +/datum/design/nanites/monitoring + name = "Monitoring" + desc = "The nanites monitor the host's vitals and location, sending them to the suit sensor network." + id = "monitoring_nanites" + program_type = /datum/nanite_program/monitoring + category = list("Utility Nanites") + +/datum/design/nanites/self_scan + name = "Host Scan" + desc = "The nanites display a detailed readout of a body scan to the host." + id = "selfscan_nanites" + program_type = /datum/nanite_program/triggered/self_scan + category = list("Utility Nanites") + +/datum/design/nanites/stealth + name = "Stealth" + desc = "The nanites hide their activity and programming from superficial scans." + id = "stealth_nanites" + program_type = /datum/nanite_program/stealth + category = list("Utility Nanites") + +/datum/design/nanites/access + name = "Subdermal ID" + desc = "The nanites store the host's ID access rights in a subdermal magnetic strip. Updates when triggered, copying the host's current access." + id = "access_nanites" + program_type = /datum/nanite_program/triggered/access + category = list("Utility Nanites") + +/datum/design/nanites/relay + name = "Relay" + desc = "The nanites receive and relay long-range nanite signals." + id = "relay_nanites" + program_type = /datum/nanite_program/relay + category = list("Utility Nanites") + +/datum/design/nanites/repeater + name = "Signal Repeater" + desc = "When triggered, sends another signal to the nanites, optionally with a delay." + id = "repeater_nanites" + program_type = /datum/nanite_program/sensor/repeat + category = list("Utility Nanites") + +/datum/design/nanites/relay_repeater + name = "Relay Signal Repeater" + desc = "When triggered, sends another signal to a relay channel, optionally with a delay." + id = "relay_repeater_nanites" + program_type = /datum/nanite_program/sensor/relay_repeat + category = list("Utility Nanites") + +/datum/design/nanites/emp + name = "Electromagnetic Resonance" + desc = "The nanites cause an elctromagnetic pulse around the host when triggered. Will corrupt other nanite programs!" + id = "emp_nanites" + program_type = /datum/nanite_program/triggered/emp + category = list("Utility Nanites") + +/datum/design/nanites/spreading + name = "Infective Exo-Locomotion" + desc = "The nanites gain the ability to survive for brief periods outside of the human body, as well as the ability to start new colonies without an integration process; \ + resulting in an extremely infective strain of nanites." + id = "spreading_nanites" + program_type = /datum/nanite_program/spreading + category = list("Utility Nanites") + +/datum/design/nanites/mitosis + name = "Mitosis" + desc = "The nanites gain the ability to self-replicate, using bluespace to power the process, instead of drawing from a template. This rapidly speeds up the replication rate,\ + but it causes occasional software errors due to faulty copies. Not compatible with cloud sync." + id = "mitosis_nanites" + program_type = /datum/nanite_program/mitosis + category = list("Utility Nanites") + +////////////////////MEDICAL NANITES////////////////////////////////////// +/datum/design/nanites/regenerative + name = "Accelerated Regeneration" + desc = "The nanites boost the host's natural regeneration, increasing their healing speed." + id = "regenerative_nanites" + program_type = /datum/nanite_program/regenerative + category = list("Medical Nanites") + +/datum/design/nanites/regenerative_advanced + name = "Bio-Reconstruction" + desc = "The nanites manually repair and replace organic cells, acting much faster than normal regeneration. \ + However, this program cannot detect the difference between harmed and unharmed, causing it to consume nanites even if it has no effect." + id = "regenerative_plus_nanites" + program_type = /datum/nanite_program/regenerative_advanced + category = list("Medical Nanites") + +/datum/design/nanites/temperature + name = "Temperature Adjustment" + desc = "The nanites adjust the host's internal temperature to an ideal level." + id = "temperature_nanites" + program_type = /datum/nanite_program/temperature + category = list("Medical Nanites") + +/datum/design/nanites/purging + name = "Blood Purification" + desc = "The nanites purge toxins and chemicals from the host's bloodstream." + id = "purging_nanites" + program_type = /datum/nanite_program/purging + category = list("Medical Nanites") + +/datum/design/nanites/purging_advanced + name = "Selective Blood Purification" + desc = "The nanites purge toxins and dangerous chemicals from the host's bloodstream, while ignoring beneficial chemicals. \ + The added processing power required to analyze the chemicals severely increases the nanite consumption rate." + id = "purging_plus_nanites" + program_type = /datum/nanite_program/purging_advanced + category = list("Medical Nanites") + +/datum/design/nanites/brain_heal + name = "Neural Regeneration" + desc = "The nanites fix neural connections in the host's brain, reversing brain damage and minor traumas." + id = "brainheal_nanites" + program_type = /datum/nanite_program/brain_heal + category = list("Medical Nanites") + +/datum/design/nanites/brain_heal_advanced + name = "Neural Reimaging" + desc = "The nanites are able to backup and restore the host's neural connections, potentially replacing entire chunks of missing or damaged brain matter." + id = "brainheal_plus_nanites" + program_type = /datum/nanite_program/brain_heal_advanced + category = list("Medical Nanites") + +/datum/design/nanites/blood_restoring + name = "Blood Regeneration" + desc = "The nanites stimulate and boost blood cell production in the host." + id = "bloodheal_nanites" + program_type = /datum/nanite_program/blood_restoring + category = list("Medical Nanites") + +/datum/design/nanites/repairing + name = "Mechanical Repair" + desc = "The nanites fix damage in the host's mechanical limbs." + id = "repairing_nanites" + program_type = /datum/nanite_program/repairing + category = list("Medical Nanites") + +/datum/design/nanites/defib + name = "Defibrillation" + desc = "The nanites, when triggered, send a defibrillating shock to the host's heart." + id = "defib_nanites" + program_type = /datum/nanite_program/triggered/defib + category = list("Medical Nanites") + + +////////////////////AUGMENTATION NANITES////////////////////////////////////// + +/datum/design/nanites/nervous + name = "Nerve Support" + desc = "The nanites act as a secondary nervous system, reducing the amount of time the host is stunned." + id = "nervous_nanites" + program_type = /datum/nanite_program/nervous + category = list("Augmentation Nanites") + +/datum/design/nanites/hardening + name = "Dermal Hardening" + desc = "The nanites form a mesh under the host's skin, protecting them from melee and bullet impacts." + id = "hardening_nanites" + program_type = /datum/nanite_program/hardening + category = list("Augmentation Nanites") + +/datum/design/nanites/refractive + name = "Dermal Refractive Surface" + desc = "The nanites form a membrane above the host's skin, reducing the effect of laser and energy impacts." + id = "refractive_nanites" + program_type = /datum/nanite_program/refractive + category = list("Augmentation Nanites") + +/datum/design/nanites/coagulating + name = "Rapid Coagulation" + desc = "The nanites induce rapid coagulation when the host is wounded, dramatically reducing bleeding rate." + id = "coagulating_nanites" + program_type = /datum/nanite_program/coagulating + category = list("Augmentation Nanites") + +/datum/design/nanites/conductive + name = "Electric Conduction" + desc = "The nanites act as a grounding rod for electric shocks, protecting the host. Shocks can still damage the nanites themselves." + id = "conductive_nanites" + program_type = /datum/nanite_program/conductive + category = list("Augmentation Nanites") + +/datum/design/nanites/adrenaline + name = "Adrenaline Burst" + desc = "The nanites cause a burst of adrenaline when triggered, waking the host from stuns and temporarily increasing their speed." + id = "adrenaline_nanites" + program_type = /datum/nanite_program/triggered/adrenaline + category = list("Augmentation Nanites") + +/datum/design/nanites/mindshield + name = "Mental Barrier" + desc = "The nanites form a protective membrane around the host's brain, shielding them from abnormal influences while they're active." + id = "mindshield_nanites" + program_type = /datum/nanite_program/mindshield + category = list("Augmentation Nanites") + +////////////////////DEFECTIVE NANITES////////////////////////////////////// + +/datum/design/nanites/glitch + name = "Glitch" + desc = "A heavy software corruption that causes nanites to gradually break down." + id = "glitch_nanites" + program_type = /datum/nanite_program/glitch + category = list("Defective Nanites") + +/datum/design/nanites/necrotic + name = "Necrosis" + desc = "The nanites attack internal tissues indiscriminately, causing widespread damage." + id = "necrotic_nanites" + program_type = /datum/nanite_program/necrotic + category = list("Defective Nanites") + +/datum/design/nanites/toxic + name = "Toxin Buildup" + desc = "The nanites cause a slow but constant toxin buildup inside the host." + id = "toxic_nanites" + program_type = /datum/nanite_program/toxic + category = list("Defective Nanites") + +/datum/design/nanites/suffocating + name = "Hypoxemia" + desc = "The nanites prevent the host's blood from absorbing oxygen efficiently." + id = "suffocating_nanites" + program_type = /datum/nanite_program/suffocating + category = list("Defective Nanites") + +/datum/design/nanites/brain_misfire + name = "Brain Misfire" + desc = "The nanites interfere with neural pathways, causing minor psychological disturbances." + id = "brainmisfire_nanites" + program_type = /datum/nanite_program/brain_misfire + category = list("Defective Nanites") + +/datum/design/nanites/skin_decay + name = "Dermalysis" + desc = "The nanites attack skin cells, causing irritation, rashes, and minor damage." + id = "skindecay_nanites" + program_type = /datum/nanite_program/skin_decay + category = list("Defective Nanites") + +/datum/design/nanites/nerve_decay + name = "Nerve Decay" + desc = "The nanites attack the host's nerves, causing lack of coordination and short bursts of paralysis." + id = "nervedecay_nanites" + program_type = /datum/nanite_program/nerve_decay + category = list("Defective Nanites") + +/datum/design/nanites/brain_decay + name = "Brain-Eating Nanites" + desc = "Damages brain cells, gradually decreasing the host's cognitive functions." + id = "braindecay_nanites" + program_type = /datum/nanite_program/brain_decay + category = list("Defective Nanites") + +////////////////////WEAPONIZED NANITES///////////////////////////////////// + +/datum/design/nanites/flesh_eating + name = "Cellular Breakdown" + desc = "The nanites destroy cellular structures in the host's body, causing brute damage." + id = "flesheating_nanites" + program_type = /datum/nanite_program/flesh_eating + category = list("Weaponized Nanites") + +/datum/design/nanites/poison + name = "Poisoning" + desc = "The nanites deliver poisonous chemicals to the host's internal organs, causing toxin damage and vomiting." + id = "poison_nanites" + program_type = /datum/nanite_program/poison + category = list("Weaponized Nanites") + +/datum/design/nanites/memory_leak + name = "Memory Leak" + desc = "This program invades the memory space used by other programs, causing frequent corruptions and errors." + id = "memleak_nanites" + program_type = /datum/nanite_program/memory_leak + category = list("Weaponized Nanites") + +/datum/design/nanites/aggressive_replication + name = "Aggressive Replication" + desc = "Nanites will consume organic matter to improve their replication rate, damaging the host." + id = "aggressive_nanites" + program_type = /datum/nanite_program/aggressive_replication + category = list("Weaponized Nanites") + +/datum/design/nanites/meltdown + name = "Meltdown" + desc = "Causes an internal meltdown inside the nanites, causing internal burns inside the host as well as rapidly destroying the nanite population.\ + Sets the nanites' safety threshold to 0 when activated." + id = "meltdown_nanites" + program_type = /datum/nanite_program/meltdown + category = list("Weaponized Nanites") + +/datum/design/nanites/cryo + name = "Cryogenic Treatment" + desc = "The nanites rapidly skin heat through the host's skin, lowering their temperature." + id = "cryo_nanites" + program_type = /datum/nanite_program/cryo + category = list("Weaponized Nanites") + +/datum/design/nanites/pyro + name = "Sub-Dermal Combustion" + desc = "The nanites cause buildup of flammable fluids under the host's skin, then ignites them." + id = "pyro_nanites" + program_type = /datum/nanite_program/pyro + category = list("Weaponized Nanites") + +/datum/design/nanites/heart_stop + name = "Heart-Stopper" + desc = "Stops the host's heart when triggered; restarts it if triggered again." + id = "heartstop_nanites" + program_type = /datum/nanite_program/triggered/heart_stop + category = list("Weaponized Nanites") + +/datum/design/nanites/explosive + name = "Chain Detonation" + desc = "Blows up all the nanites inside the host in a chain reaction when triggered." + id = "explosive_nanites" + program_type = /datum/nanite_program/triggered/explosive + category = list("Weaponized Nanites") + +/datum/design/nanites/mind_control + name = "Mind Control" + desc = "The nanites imprint an absolute directive onto the host's brain while they're active." + id = "mindcontrol_nanites" + program_type = /datum/nanite_program/mind_control + category = list("Weaponized Nanites") + +////////////////////SUPPRESSION NANITES////////////////////////////////////// + +/datum/design/nanites/shock + name = "Electric Shock" + desc = "The nanites shock the host when triggered. Destroys a large amount of nanites!" + id = "shock_nanites" + program_type = /datum/nanite_program/triggered/shocking + category = list("Suppression Nanites") + +/datum/design/nanites/stun + name = "Neural Shock" + desc = "The nanites pulse the host's nerves when triggered, inapacitating them for a short period." + id = "stun_nanites" + program_type = /datum/nanite_program/triggered/stun + category = list("Suppression Nanites") + +/datum/design/nanites/sleepy + name = "Sleep Induction" + desc = "The nanites cause rapid narcolepsy when triggered." + id = "sleep_nanites" + program_type = /datum/nanite_program/triggered/sleepy + category = list("Suppression Nanites") + +/datum/design/nanites/paralyzing + name = "Paralysis" + desc = "The nanites actively suppress nervous pulses, effectively paralyzing the host." + id = "paralyzing_nanites" + program_type = /datum/nanite_program/paralyzing + category = list("Suppression Nanites") + +/datum/design/nanites/fake_death + name = "Death Simulation" + desc = "The nanites induce a death-like coma into the host, able to fool most medical scans." + id = "fakedeath_nanites" + program_type = /datum/nanite_program/fake_death + category = list("Suppression Nanites") + +/datum/design/nanites/pacifying + name = "Pacification" + desc = "The nanites suppress the aggression center of the brain, preventing the host from causing direct harm to others." + id = "pacifying_nanites" + program_type = /datum/nanite_program/pacifying + category = list("Suppression Nanites") + +/datum/design/nanites/blinding + name = "Blindness" + desc = "The nanites suppress the host's ocular nerves, blinding them while they're active." + id = "blinding_nanites" + program_type = /datum/nanite_program/blinding + category = list("Suppression Nanites") + +/datum/design/nanites/mute + name = "Mute" + desc = "The nanites suppress the host's speech, making them mute while they're active." + id = "mute_nanites" + program_type = /datum/nanite_program/mute + category = list("Suppression Nanites") + +/datum/design/nanites/voice + name = "Skull Echo" + desc = "The nanites echo a synthesized message inside the host's skull." + id = "voice_nanites" + program_type = /datum/nanite_program/triggered/voice + category = list("Suppression Nanites") + +/datum/design/nanites/speech + name = "Forced Speech" + desc = "The nanites force the host to say a pre-programmed sentence when triggered." + id = "speech_nanites" + program_type = /datum/nanite_program/triggered/speech + category = list("Suppression Nanites") + +/datum/design/nanites/hallucination + name = "Hallucination" + desc = "The nanites make the host see and hear things that aren't real." + id = "hallucination_nanites" + program_type = /datum/nanite_program/triggered/hallucination + category = list("Suppression Nanites") + +////////////////////SENSOR NANITES////////////////////////////////////// + +/datum/design/nanites/sensor_health + name = "Health Sensor" + desc = "The nanites receive a signal when the host's health is above/below a certain percentage." + id = "sensor_health_nanites" + program_type = /datum/nanite_program/sensor/health + category = list("Sensor Nanites") + +/datum/design/nanites/sensor_damage + name = "Damage Sensor" + desc = "The nanites receive a signal when a host's specific damage type is above/below a target value." + id = "sensor_damage_nanites" + program_type = /datum/nanite_program/sensor/damage + category = list("Sensor Nanites") + +/datum/design/nanites/sensor_crit + name = "Critical Health Sensor" + desc = "The nanites receive a signal when the host first reaches critical health." + id = "sensor_crit_nanites" + program_type = /datum/nanite_program/sensor/crit + category = list("Sensor Nanites") + +/datum/design/nanites/sensor_death + name = "Death Sensor" + desc = "The nanites receive a signal when they detect the host is dead." + id = "sensor_death_nanites" + program_type = /datum/nanite_program/sensor/death + category = list("Sensor Nanites") + +/datum/design/nanites/sensor_voice + name = "Voice Sensor" + desc = "Sends a signal when the nanites hear a determined word or sentence." + id = "sensor_voice_nanites" + program_type = /datum/nanite_program/sensor/voice + category = list("Sensor Nanites") + +/datum/design/nanites/sensor__nanite_volume + name = "Nanite Volume Sensor" + desc = "The nanites receive a signal when the nanite supply is above/below a certain percentage." + id = "sensor_nanite_volume" + program_type = /datum/nanite_program/sensor/nanite_volume + category = list("Sensor Nanites") \ No newline at end of file diff --git a/code/modules/research/nanites/nanite_chamber.dm b/code/modules/research/nanites/nanite_chamber.dm new file mode 100644 index 0000000000..6f58cb2ad9 --- /dev/null +++ b/code/modules/research/nanites/nanite_chamber.dm @@ -0,0 +1,227 @@ +/obj/machinery/nanite_chamber + name = "nanite chamber" + desc = "A device that can scan, reprogram, and inject nanites." + circuit = /obj/item/circuitboard/machine/nanite_chamber + icon = 'icons/obj/machines/nanite_chamber.dmi' + icon_state = "nanite_chamber" + use_power = IDLE_POWER_USE + anchored = TRUE + density = TRUE + idle_power_usage = 50 + active_power_usage = 300 + occupant_typecache = list(/mob/living) + + var/obj/machinery/computer/nanite_chamber_control/console + var/locked = FALSE + var/breakout_time = 1200 + var/scan_level + var/busy = FALSE + var/busy_icon_state + var/busy_message + var/message_cooldown = 0 + +/obj/machinery/nanite_chamber/RefreshParts() + scan_level = 0 + for(var/obj/item/stock_parts/scanning_module/P in component_parts) + scan_level += P.rating + +/obj/machinery/nanite_chamber/proc/set_busy(status, message, working_icon) + busy = status + busy_message = message + busy_icon_state = working_icon + update_icon() + +/obj/machinery/nanite_chamber/proc/set_safety(threshold) + if(!occupant) + return + SEND_SIGNAL(occupant, COMSIG_NANITE_SET_SAFETY, threshold) + +/obj/machinery/nanite_chamber/proc/set_cloud(cloud_id) + if(!occupant) + return + SEND_SIGNAL(occupant, COMSIG_NANITE_SET_CLOUD, cloud_id) + +/obj/machinery/nanite_chamber/proc/inject_nanites() + if(stat & (NOPOWER|BROKEN)) + return + if((stat & MAINT) || panel_open) + return + if(!occupant || busy) + return + + var/locked_state = locked + locked = TRUE + + //TODO OMINOUS MACHINE SOUNDS + set_busy(TRUE, "Initializing injection protocol...", "[initial(icon_state)]_raising") + addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Analyzing host bio-structure...", "[initial(icon_state)]_active"),20) + addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Priming nanites...", "[initial(icon_state)]_active"),40) + addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Injecting...", "[initial(icon_state)]_active"),70) + addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Activating nanites...", "[initial(icon_state)]_falling"),110) + addtimer(CALLBACK(src, .proc/complete_injection, locked_state),130) + +/obj/machinery/nanite_chamber/proc/complete_injection(locked_state) + //TODO MACHINE DING + locked = locked_state + set_busy(FALSE) + if(!occupant) + return + occupant.AddComponent(/datum/component/nanites, 100) + +/obj/machinery/nanite_chamber/proc/install_program(datum/nanite_program/NP) + if(stat & (NOPOWER|BROKEN)) + return + if((stat & MAINT) || panel_open) + return + if(!occupant || busy) + return + + var/locked_state = locked + locked = TRUE + + //TODO COMPUTERY MACHINE SOUNDS + set_busy(TRUE, "Initializing installation protocol...", "[initial(icon_state)]_raising") + addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Connecting to nanite framework...", "[initial(icon_state)]_active"),20) + addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Installing program...", "[initial(icon_state)]_falling"),35) + addtimer(CALLBACK(src, .proc/complete_installation, locked_state, NP),55) + +/obj/machinery/nanite_chamber/proc/complete_installation(locked_state, datum/nanite_program/NP) + //TODO MACHINE DING + locked = locked_state + set_busy(FALSE) + if(!occupant) + return + + SEND_SIGNAL(occupant, COMSIG_NANITE_ADD_PROGRAM, NP.copy()) + +/obj/machinery/nanite_chamber/proc/uninstall_program(datum/nanite_program/NP) + if(stat & (NOPOWER|BROKEN)) + return + if((stat & MAINT) || panel_open) + return + if(!occupant || busy) + return + + var/locked_state = locked + locked = TRUE + + //TODO COMPUTERY MACHINE SOUNDS + set_busy(TRUE, "Initializing uninstallation protocol...", "[initial(icon_state)]_raising") + addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Connecting to nanite framework...", "[initial(icon_state)]_active"),20) + addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Uninstalling program...", "[initial(icon_state)]_falling"),35) + addtimer(CALLBACK(src, .proc/complete_uninstallation, locked_state, NP),55) + +/obj/machinery/nanite_chamber/proc/complete_uninstallation(locked_state, datum/nanite_program/NP) + //TODO MACHINE DING + locked = locked_state + set_busy(FALSE) + if(!occupant) + return + qdel(NP) + +/obj/machinery/nanite_chamber/update_icon() + cut_overlays() + + if((stat & MAINT) || panel_open) + add_overlay("maint") + + else if(!(stat & (NOPOWER|BROKEN))) + if(busy || locked) + add_overlay("red") + if(locked) + add_overlay("bolted") + else + add_overlay("green") + + //running and someone in there + if(occupant) + if(busy) + icon_state = busy_icon_state + else + icon_state = initial(icon_state)+ "_occupied" + return + + //running + icon_state = initial(icon_state)+ (state_open ? "_open" : "") + +/obj/machinery/nanite_chamber/power_change() + ..() + update_icon() + +/obj/machinery/nanite_chamber/proc/toggle_open(mob/user) + if(panel_open) + to_chat(user, "Close the maintenance panel first.") + return + + if(state_open) + close_machine() + return + + else if(locked) + to_chat(user, "The bolts are locked down, securing the door shut.") + return + + open_machine() + +/obj/machinery/nanite_chamber/container_resist(mob/living/user) + if(!locked) + open_machine() + return + if(busy) + return + user.changeNext_move(CLICK_CD_BREAKOUT) + user.last_special = world.time + CLICK_CD_BREAKOUT + user.visible_message("You see [user] kicking against the door of [src]!", \ + "You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)", \ + "You hear a metallic creaking from [src].") + if(do_after(user,(breakout_time), target = src)) + if(!user || user.stat != CONSCIOUS || user.loc != src || state_open || !locked || busy) + return + locked = FALSE + user.visible_message("[user] successfully broke out of [src]!", \ + "You successfully break out of [src]!") + open_machine() + +/obj/machinery/nanite_chamber/close_machine(mob/living/carbon/user) + if(!state_open) + return FALSE + + ..(user) + return TRUE + +/obj/machinery/nanite_chamber/open_machine() + if(state_open) + return FALSE + + ..() + + return TRUE + +/obj/machinery/nanite_chamber/relaymove(mob/user as mob) + if(user.stat || locked) + if(message_cooldown <= world.time) + message_cooldown = world.time + 50 + to_chat(user, "[src]'s door won't budge!") + return + open_machine() + +/obj/machinery/nanite_chamber/attackby(obj/item/I, mob/user, params) + if(!occupant && default_deconstruction_screwdriver(user, icon_state, icon_state, I))//sent icon_state is irrelevant... + update_icon()//..since we're updating the icon here, since the scanner can be unpowered when opened/closed + return + + if(default_pry_open(I)) + return + + if(default_deconstruction_crowbar(I)) + return + + return ..() + +/obj/machinery/nanite_chamber/interact(mob/user) + toggle_open(user) + +/obj/machinery/nanite_chamber/MouseDrop_T(mob/target, mob/user) + if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser()) + return + close_machine(target) \ No newline at end of file diff --git a/code/modules/research/nanites/nanite_chamber_computer.dm b/code/modules/research/nanites/nanite_chamber_computer.dm new file mode 100644 index 0000000000..f9d931b3de --- /dev/null +++ b/code/modules/research/nanites/nanite_chamber_computer.dm @@ -0,0 +1,158 @@ +/obj/machinery/computer/nanite_chamber_control + name = "nanite chamber control console" + desc = "Controls a connected nanite chamber. Can inoculate nanites, load programs, and analyze existing nanite swarms." + var/obj/machinery/nanite_chamber/chamber + var/obj/item/disk/nanite_program/disk + circuit = /obj/item/circuitboard/computer/nanite_chamber_control + icon_screen = "nanite_chamber_control" + +/obj/machinery/computer/nanite_chamber_control/Initialize() + . = ..() + find_chamber() + +/obj/machinery/computer/nanite_chamber_control/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/disk/nanite_program)) + var/obj/item/disk/nanite_program/N = I + if(disk) + eject(user) + if(user.transferItemToLoc(N, src)) + to_chat(user, "You insert [N] into [src]") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) + disk = N + else + ..() + +/obj/machinery/computer/nanite_chamber_control/proc/eject(mob/living/user) + if(!disk) + return + if(!istype(user) || !Adjacent(user) || !user.put_in_active_hand(disk)) + disk.forceMove(drop_location()) + disk = null + +/obj/machinery/computer/nanite_chamber_control/proc/find_chamber() + for(var/direction in GLOB.cardinals) + var/C = locate(/obj/machinery/nanite_chamber, get_step(src, direction)) + if(C) + var/obj/machinery/nanite_chamber/NC = C + chamber = NC + NC.console = src + +/obj/machinery/computer/nanite_chamber_control/interact() + if(!chamber) + find_chamber() + ..() + +/obj/machinery/computer/nanite_chamber_control/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) + SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "nanite_chamber_control", name, 550, 800, master_ui, state) + ui.open() + +/obj/machinery/computer/nanite_chamber_control/ui_data() + var/list/data = list() + if(disk) + data["has_disk"] = TRUE + var/list/disk_data = list() + var/datum/nanite_program/P = disk.program + if(P) + data["has_program"] = TRUE + disk_data["name"] = P.name + disk_data["desc"] = P.desc + + disk_data["activated"] = P.activated + disk_data["activation_delay"] = P.activation_delay + disk_data["timer"] = P.timer + disk_data["activation_code"] = P.activation_code + disk_data["deactivation_code"] = P.deactivation_code + disk_data["kill_code"] = P.kill_code + disk_data["trigger_code"] = P.trigger_code + disk_data["timer_type"] = P.get_timer_type_text() + + var/list/extra_settings = list() + for(var/X in P.extra_settings) + var/list/setting = list() + setting["name"] = X + setting["value"] = P.get_extra_setting(X) + extra_settings += list(setting) + disk_data["extra_settings"] = extra_settings + if(LAZYLEN(extra_settings)) + disk_data["has_extra_settings"] = TRUE + data["disk"] = disk_data + + if(!chamber) + data["status_msg"] = "No chamber detected." + return data + + if(!chamber.occupant) + data["status_msg"] = "No occupant detected." + return data + + var/mob/living/L = chamber.occupant + + if(!(MOB_ORGANIC in L.mob_biotypes) && !(MOB_UNDEAD in L.mob_biotypes)) + data["status_msg"] = "Occupant not compatible with nanites." + return data + + if(chamber.busy) + data["status_msg"] = chamber.busy_message + return data + + data["scan_level"] = chamber.scan_level + data["locked"] = chamber.locked + data["occupant_name"] = chamber.occupant.name + + SEND_SIGNAL(L, COMSIG_NANITE_UI_DATA, data, chamber.scan_level) + + return data + +/obj/machinery/computer/nanite_chamber_control/ui_act(action, params) + if(..()) + return + switch(action) + if("toggle_lock") + chamber.locked = !chamber.locked + chamber.update_icon() + . = TRUE + if("eject") + eject(usr) + . = TRUE + if("set_safety") + var/threshold = input("Set safety threshold (0-500):", name, null) as null|num + if(!isnull(threshold)) + chamber.set_safety(CLAMP(round(threshold, 1),0,500)) + playsound(src, "terminal_type", 25, 0) + investigate_log("[key_name(chamber.occupant)]'s nanites' safety threshold was set to [threshold] by [key_name(usr)].", INVESTIGATE_NANITES) + . = TRUE + if("set_cloud") + var/cloud_id = input("Set cloud ID (1-100, 0 to disable):", name, null) as null|num + if(!isnull(cloud_id)) + chamber.set_cloud(CLAMP(round(cloud_id, 1),0,100)) + playsound(src, "terminal_type", 25, 0) + investigate_log("[key_name(chamber.occupant)]'s nanites' cloud id was set to [cloud_id] by [key_name(usr)].", INVESTIGATE_NANITES) + . = TRUE + if("connect_chamber") + find_chamber() + . = TRUE + if("nanite_injection") + playsound(src, 'sound/machines/terminal_prompt.ogg', 25, 0) + chamber.inject_nanites() + investigate_log("[key_name(chamber.occupant)] was injected with nanites by [key_name(usr)] using a nanite chamber.", INVESTIGATE_NANITES) + . = TRUE + if("add_program") + if(!disk || !chamber || !chamber.occupant) + return + playsound(src, 'sound/machines/terminal_prompt.ogg', 25, 0) + chamber.install_program(disk.program) + investigate_log("Program of type [disk.program.type] was installed into [key_name(chamber.occupant)]'s nanites with a nanite chamber by [key_name(usr)].", INVESTIGATE_NANITES) + . = TRUE + if("remove_program") + if(!chamber || !chamber.occupant) + return + playsound(src, 'sound/machines/terminal_prompt.ogg', 25, 0) + var/list/nanite_programs = list() + SEND_SIGNAL(chamber.occupant, COMSIG_NANITE_GET_PROGRAMS, nanite_programs) + if(LAZYLEN(nanite_programs)) + var/datum/nanite_program/P = nanite_programs[text2num(params["program_id"])] + chamber.uninstall_program(P) + investigate_log("Program of type [P.type] was uninstalled from [key_name(chamber.occupant)]'s nanites with a nanite chamber by [key_name(usr)].", INVESTIGATE_NANITES) + . = TRUE \ No newline at end of file diff --git a/code/modules/research/nanites/nanite_cloud_controller.dm b/code/modules/research/nanites/nanite_cloud_controller.dm new file mode 100644 index 0000000000..8218f250bb --- /dev/null +++ b/code/modules/research/nanites/nanite_cloud_controller.dm @@ -0,0 +1,196 @@ +/obj/machinery/computer/nanite_cloud_controller + name = "nanite cloud controller" + desc = "Stores and controls nanite cloud backups." + circuit = /obj/item/circuitboard/computer/nanite_cloud_controller + icon = 'icons/obj/machines/research.dmi' + icon_state = "nanite_cloud_controller" + var/obj/item/disk/nanite_program/disk + var/list/datum/nanite_cloud_backup/cloud_backups = list() + var/current_view = 0 //0 is the main menu, any other number is the page of the backup with that ID + +/obj/machinery/computer/nanite_cloud_controller/Destroy() + QDEL_LIST(cloud_backups) //rip backups + eject() + return ..() + +/obj/machinery/computer/nanite_cloud_controller/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/disk/nanite_program)) + var/obj/item/disk/nanite_program/N = I + if(disk) + eject(user) + if(user.transferItemToLoc(N, src)) + to_chat(user, "You insert [N] into [src]") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) + disk = N + else + ..() + +/obj/machinery/computer/nanite_cloud_controller/proc/eject(mob/living/user) + if(!disk) + return + if(!istype(user) || !Adjacent(user) ||!user.put_in_active_hand(disk)) + disk.forceMove(drop_location()) + disk = null + +/obj/machinery/computer/nanite_cloud_controller/proc/get_backup(cloud_id) + for(var/I in cloud_backups) + var/datum/nanite_cloud_backup/backup = I + if(backup.cloud_id == cloud_id) + return backup + +/obj/machinery/computer/nanite_cloud_controller/proc/generate_backup(cloud_id, mob/user) + if(SSnanites.get_cloud_backup(cloud_id, TRUE)) + to_chat(user, "Cloud ID already registered.") + return + + var/datum/nanite_cloud_backup/backup = new(src) + var/datum/component/nanites/cloud_copy = new(backup) + backup.cloud_id = cloud_id + backup.nanites = cloud_copy + investigate_log("[key_name(user)] created a new nanite cloud backup with id #[cloud_id]", INVESTIGATE_NANITES) + +/obj/machinery/computer/nanite_cloud_controller/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) + SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "nanite_cloud_control", name, 600, 800, master_ui, state) + ui.open() + +/obj/machinery/computer/nanite_cloud_controller/ui_data() + var/list/data = list() + if(disk) + data["has_disk"] = TRUE + var/list/disk_data = list() + var/datum/nanite_program/P = disk.program + if(P) + data["has_program"] = TRUE + disk_data["name"] = P.name + disk_data["desc"] = P.desc + disk_data["use_rate"] = P.use_rate + disk_data["can_trigger"] = P.can_trigger + disk_data["trigger_cost"] = P.trigger_cost + disk_data["trigger_cooldown"] = P.trigger_cooldown / 10 + + disk_data["activated"] = P.activated + disk_data["activation_delay"] = P.activation_delay + disk_data["timer"] = P.timer + disk_data["activation_code"] = P.activation_code + disk_data["deactivation_code"] = P.deactivation_code + disk_data["kill_code"] = P.kill_code + disk_data["trigger_code"] = P.trigger_code + disk_data["timer_type"] = P.get_timer_type_text() + + var/list/extra_settings = list() + for(var/X in P.extra_settings) + var/list/setting = list() + setting["name"] = X + setting["value"] = P.get_extra_setting(X) + extra_settings += list(setting) + disk_data["extra_settings"] = extra_settings + if(LAZYLEN(extra_settings)) + disk_data["has_extra_settings"] = TRUE + data["disk"] = disk_data + + data["current_view"] = current_view + if(current_view) + var/datum/nanite_cloud_backup/backup = get_backup(current_view) + if(backup) + var/datum/component/nanites/nanites = backup.nanites + data["cloud_backup"] = TRUE + var/list/cloud_programs = list() + var/id = 1 + for(var/datum/nanite_program/P in nanites.programs) + var/list/cloud_program = list() + cloud_program["name"] = P.name + cloud_program["desc"] = P.desc + cloud_program["id"] = id + cloud_program["use_rate"] = P.use_rate + cloud_program["can_trigger"] = P.can_trigger + cloud_program["trigger_cost"] = P.trigger_cost + cloud_program["trigger_cooldown"] = P.trigger_cooldown / 10 + cloud_program["activated"] = P.activated + cloud_program["activation_delay"] = P.activation_delay + cloud_program["timer"] = P.timer + cloud_program["timer_type"] = P.get_timer_type_text() + cloud_program["activation_code"] = P.activation_code + cloud_program["deactivation_code"] = P.deactivation_code + cloud_program["kill_code"] = P.kill_code + cloud_program["trigger_code"] = P.trigger_code + var/list/extra_settings = list() + for(var/X in P.extra_settings) + var/list/setting = list() + setting["name"] = X + setting["value"] = P.get_extra_setting(X) + extra_settings += list(setting) + cloud_program["extra_settings"] = extra_settings + if(LAZYLEN(extra_settings)) + cloud_program["has_extra_settings"] = TRUE + id++ + cloud_programs += list(cloud_program) + data["cloud_programs"] = cloud_programs + else + var/list/backup_list = list() + for(var/X in cloud_backups) + var/datum/nanite_cloud_backup/backup = X + var/list/cloud_backup = list() + cloud_backup["cloud_id"] = backup.cloud_id + backup_list += list(cloud_backup) + data["cloud_backups"] = backup_list + return data + +/obj/machinery/computer/nanite_cloud_controller/ui_act(action, params) + if(..()) + return + switch(action) + if("eject") + eject(usr) + . = TRUE + if("set_view") + current_view = text2num(params["view"]) + . = TRUE + if("create_backup") + var/cloud_id = input("Choose a cloud ID (1-100):", name, null) as null|num + if(!isnull(cloud_id)) + playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) + cloud_id = CLAMP(round(cloud_id, 1),1,100) + generate_backup(cloud_id, usr) + . = TRUE + if("delete_backup") + var/datum/nanite_cloud_backup/backup = get_backup(current_view) + if(backup) + playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) + qdel(backup) + investigate_log("[key_name(usr)] deleted the nanite cloud backup #[current_view]", INVESTIGATE_NANITES) + . = TRUE + if("upload_program") + if(disk && disk.program) + var/datum/nanite_cloud_backup/backup = get_backup(current_view) + if(backup) + playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) + var/datum/component/nanites/nanites = backup.nanites + nanites.add_program(disk.program.copy()) + investigate_log("[key_name(usr)] uploaded program [disk.program.name] to cloud #[current_view]", INVESTIGATE_NANITES) + . = TRUE + if("remove_program") + var/datum/nanite_cloud_backup/backup = get_backup(current_view) + if(backup) + playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0) + var/datum/component/nanites/nanites = backup.nanites + var/datum/nanite_program/P = nanites.programs[text2num(params["program_id"])] + investigate_log("[key_name(usr)] deleted program [P.name] from cloud #[current_view]", INVESTIGATE_NANITES) + qdel(P) + . = TRUE + +/datum/nanite_cloud_backup + var/cloud_id = 0 + var/datum/component/nanites/nanites + var/obj/machinery/computer/nanite_cloud_controller/storage + +/datum/nanite_cloud_backup/New(obj/machinery/computer/nanite_cloud_controller/_storage) + storage = _storage + storage.cloud_backups += src + SSnanites.cloud_backups += src + +/datum/nanite_cloud_backup/Destroy() + storage.cloud_backups -= src + SSnanites.cloud_backups -= src + return ..() \ No newline at end of file diff --git a/code/modules/research/nanites/nanite_hijacker.dm b/code/modules/research/nanites/nanite_hijacker.dm new file mode 100644 index 0000000000..8c5ac0a84b --- /dev/null +++ b/code/modules/research/nanites/nanite_hijacker.dm @@ -0,0 +1,151 @@ +/obj/item/nanite_hijacker + name = "nanite remote control" //fake name + desc = "A device that can load nanite programming disks, edit them at will, and imprint them to nanites remotely." + w_class = WEIGHT_CLASS_SMALL + icon = 'icons/obj/device.dmi' + icon_state = "nanite_remote" + item_flags = NOBLUDGEON + var/obj/item/disk/nanite_program/disk + var/datum/nanite_program/program + +/obj/item/nanite_hijacker/AltClick(mob/user) + . = ..() + if(!user.canUseTopic(src, BE_CLOSE)) + return + if(disk) + eject() + +/obj/item/nanite_hijacker/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/disk/nanite_program)) + var/obj/item/disk/nanite_program/N = I + if(disk) + eject() + if(user.transferItemToLoc(N, src)) + to_chat(user, "You insert [N] into [src]") + disk = N + program = N.program + else + ..() + +/obj/item/nanite_hijacker/proc/eject(mob/living/user) + if(!disk) + return + if(!istype(user) || !Adjacent(user) || !user.put_in_hand(disk)) + disk.forceMove(drop_location()) + disk = null + program = null + +/obj/item/nanite_hijacker/afterattack(atom/target, mob/user, etc) + if(!disk || !disk.program) + return + if(isliving(target)) + var/success = SEND_SIGNAL(target, COMSIG_NANITE_ADD_PROGRAM, program.copy()) + switch(success) + if(NONE) + to_chat(user, "You don't detect any nanites in [target].") + if(COMPONENT_PROGRAM_INSTALLED) + to_chat(user, "You insert the currently loaded program into [target]'s nanites.") + if(COMPONENT_PROGRAM_NOT_INSTALLED) + to_chat(user, "You try to insert the currently loaded program into [target]'s nanites, but the installation fails.") + +//Same UI as the nanite programmer, as it pretty much does the same +/obj/item/nanite_hijacker/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state) + SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "nanite_programmer", "Internal Nanite Programmer", 420, 800, master_ui, state) + ui.open() + +/obj/item/nanite_hijacker/ui_data() + var/list/data = list() + data["has_disk"] = istype(disk) + data["has_program"] = istype(program) + if(program) + data["name"] = program.name + data["desc"] = program.desc + data["use_rate"] = program.use_rate + data["can_trigger"] = program.can_trigger + data["trigger_cost"] = program.trigger_cost + data["trigger_cooldown"] = program.trigger_cooldown / 10 + + data["activated"] = program.activated + data["activation_delay"] = program.activation_delay + data["timer"] = program.timer + data["activation_code"] = program.activation_code + data["deactivation_code"] = program.deactivation_code + data["kill_code"] = program.kill_code + data["trigger_code"] = program.trigger_code + data["timer_type"] = program.get_timer_type_text() + + var/list/extra_settings = list() + for(var/X in program.extra_settings) + var/list/setting = list() + setting["name"] = X + setting["value"] = program.get_extra_setting(X) + extra_settings += list(setting) + data["extra_settings"] = extra_settings + if(LAZYLEN(extra_settings)) + data["has_extra_settings"] = TRUE + + return data + +/obj/item/nanite_hijacker/ui_act(action, params) + if(..()) + return + switch(action) + if("eject") + eject(usr) + . = TRUE + if("toggle_active") + program.activated = !program.activated //we don't use the activation procs since we aren't in a mob + if(program.activated) + program.activation_delay = 0 + . = TRUE + if("set_code") + var/new_code = input("Set code (0000-9999):", name, null) as null|num + if(!isnull(new_code)) + new_code = CLAMP(round(new_code, 1),0,9999) + else + return + + var/target_code = params["target_code"] + switch(target_code) + if("activation") + program.activation_code = CLAMP(round(new_code, 1),0,9999) + if("deactivation") + program.deactivation_code = CLAMP(round(new_code, 1),0,9999) + if("kill") + program.kill_code = CLAMP(round(new_code, 1),0,9999) + if("trigger") + program.trigger_code = CLAMP(round(new_code, 1),0,9999) + . = TRUE + if("set_extra_setting") + program.set_extra_setting(usr, params["target_setting"]) + . = TRUE + if("set_activation_delay") + var/delay = input("Set activation delay in seconds (0-1800):", name, program.activation_delay) as null|num + if(!isnull(delay)) + delay = CLAMP(round(delay, 1),0,1800) + program.activation_delay = delay + if(delay) + program.activated = FALSE + . = TRUE + if("set_timer") + var/timer = input("Set timer in seconds (10-3600):", name, program.timer) as null|num + if(!isnull(timer)) + if(!timer == 0) + timer = CLAMP(round(timer, 1),10,3600) + program.timer = timer + . = TRUE + if("set_timer_type") + var/new_type = input("Choose the timer effect","Timer Effect") as null|anything in list("Deactivate","Self-Delete","Trigger","Reset Activation Timer") + if(new_type) + switch(new_type) + if("Deactivate") + program.timer_type = NANITE_TIMER_DEACTIVATE + if("Self-Delete") + program.timer_type = NANITE_TIMER_SELFDELETE + if("Trigger") + program.timer_type = NANITE_TIMER_TRIGGER + if("Reset Activation Timer") + program.timer_type = NANITE_TIMER_RESET + . = TRUE \ No newline at end of file diff --git a/code/modules/research/nanites/nanite_misc_items.dm b/code/modules/research/nanites/nanite_misc_items.dm new file mode 100644 index 0000000000..cbcdfb0f9f --- /dev/null +++ b/code/modules/research/nanites/nanite_misc_items.dm @@ -0,0 +1,9 @@ +/obj/item/nanite_injector + name = "nanite injector (FOR TESTING)" + desc = "Injects nanites into the user." + w_class = WEIGHT_CLASS_SMALL + icon = 'icons/obj/device.dmi' + icon_state = "nanite_remote" + +/obj/item/nanite_injector/attack_self(mob/user) + user.AddComponent(/datum/component/nanites, 150) \ No newline at end of file diff --git a/code/modules/research/nanites/nanite_program_hub.dm b/code/modules/research/nanites/nanite_program_hub.dm new file mode 100644 index 0000000000..81c5a44527 --- /dev/null +++ b/code/modules/research/nanites/nanite_program_hub.dm @@ -0,0 +1,118 @@ +/obj/machinery/nanite_program_hub + name = "nanite program hub" + desc = "Compiles nanite programs from the techweb servers and downloads them into disks." + icon = 'icons/obj/machines/research.dmi' + icon_state = "nanite_program_hub" + circuit = /obj/item/circuitboard/machine/nanite_program_hub + use_power = IDLE_POWER_USE + anchored = TRUE + density = TRUE + + var/obj/item/disk/nanite_program/disk + var/datum/techweb/linked_techweb + var/current_category = "Main" + var/detail_view = FALSE + var/categories = list( + list(name = "Utility Nanites"), + list(name = "Medical Nanites"), + list(name = "Sensor Nanites"), + list(name = "Augmentation Nanites"), + list(name = "Suppression Nanites"), + list(name = "Weaponized Nanites") + ) + +/obj/machinery/nanite_program_hub/Initialize() + . = ..() + linked_techweb = SSresearch.science_tech + +/obj/machinery/nanite_program_hub/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/disk/nanite_program)) + var/obj/item/disk/nanite_program/N = I + if(disk) + eject(user) + if(user.transferItemToLoc(N, src)) + to_chat(user, "You insert [N] into [src]") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) + disk = N + else + ..() + +/obj/machinery/nanite_program_hub/proc/eject(mob/living/user) + if(!disk) + return + if(!istype(user) || !Adjacent(user) || !user.put_in_active_hand(disk)) + disk.forceMove(drop_location()) + disk = null + +/obj/machinery/nanite_program_hub/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) + SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "nanite_program_hub", name, 500, 700, master_ui, state) + ui.set_autoupdate(FALSE) //to avoid making the whole program list every second + ui.open() + +/obj/machinery/nanite_program_hub/ui_data() + var/list/data = list() + if(disk) + data["has_disk"] = TRUE + var/list/disk_data = list() + var/datum/nanite_program/P = disk.program + if(P) + data["has_program"] = TRUE + disk_data["name"] = P.name + disk_data["desc"] = P.desc + data["disk"] = disk_data + + data["detail_view"] = detail_view + data["category"] = current_category + + if(current_category != "Main") + var/list/program_list = list() + for(var/i in linked_techweb.researched_designs) + var/datum/design/nanites/D = linked_techweb.researched_designs[i] + if(!istype(D)) + continue + if(current_category in D.category) + var/list/program_design = list() + program_design["id"] = D.id + program_design["name"] = D.name + program_design["desc"] = D.desc + program_list += list(program_design) + data["program_list"] = program_list + else + data["categories"] = categories + + return data + +/obj/machinery/nanite_program_hub/ui_act(action, params) + if(..()) + return + switch(action) + if("eject") + eject(usr) + . = TRUE + if("download") + if(!disk) + return + var/datum/design/nanites/downloaded = linked_techweb.isDesignResearchedID(params["program_id"]) //check if it's a valid design + if(!istype(downloaded)) + return + if(disk.program) + qdel(disk.program) + disk.program = new downloaded.program_type + disk.name = "[initial(disk.name)] \[[disk.program.name]\]" + playsound(src, 'sound/machines/terminal_prompt.ogg', 25, 0) + . = TRUE + if("set_category") + var/new_category = params["category"] + current_category = new_category + . = TRUE + if("toggle_details") + detail_view = !detail_view + . = TRUE + if("clear") + if(disk && disk.program) + qdel(disk.program) + disk.program = null + disk.name = initial(disk.name) + . = TRUE \ No newline at end of file diff --git a/code/modules/research/nanites/nanite_programmer.dm b/code/modules/research/nanites/nanite_programmer.dm new file mode 100644 index 0000000000..fd22fbf4b1 --- /dev/null +++ b/code/modules/research/nanites/nanite_programmer.dm @@ -0,0 +1,140 @@ +/obj/machinery/nanite_programmer + name = "nanite programmer" + desc = "A device that can edit nanite program disks to adjust their functionality." + var/obj/item/disk/nanite_program/disk + var/datum/nanite_program/program + circuit = /obj/item/circuitboard/machine/nanite_programmer + icon = 'icons/obj/machines/research.dmi' + icon_state = "nanite_programmer" + use_power = IDLE_POWER_USE + anchored = TRUE + density = TRUE + +/obj/machinery/nanite_programmer/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/disk/nanite_program)) + var/obj/item/disk/nanite_program/N = I + if(disk) + eject(user) + if(user.transferItemToLoc(N, src)) + to_chat(user, "You insert [N] into [src]") + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) + disk = N + program = N.program + else + ..() + +/obj/machinery/nanite_programmer/proc/eject(mob/living/user) + if(!disk) + return + if(!istype(user) || !Adjacent(user) || !user.put_in_active_hand(disk)) + disk.forceMove(drop_location()) + disk = null + program = null + +/obj/machinery/nanite_programmer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) + SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "nanite_programmer", name, 600, 800, master_ui, state) + ui.open() + +/obj/machinery/nanite_programmer/ui_data() + var/list/data = list() + data["has_disk"] = istype(disk) + data["has_program"] = istype(program) + if(program) + data["name"] = program.name + data["desc"] = program.desc + data["use_rate"] = program.use_rate + data["can_trigger"] = program.can_trigger + data["trigger_cost"] = program.trigger_cost + data["trigger_cooldown"] = program.trigger_cooldown / 10 + + data["activated"] = program.activated + data["activation_delay"] = program.activation_delay + data["timer"] = program.timer + data["activation_code"] = program.activation_code + data["deactivation_code"] = program.deactivation_code + data["kill_code"] = program.kill_code + data["trigger_code"] = program.trigger_code + data["timer_type"] = program.get_timer_type_text() + + var/list/extra_settings = list() + for(var/X in program.extra_settings) + var/list/setting = list() + setting["name"] = X + setting["value"] = program.get_extra_setting(X) + extra_settings += list(setting) + data["extra_settings"] = extra_settings + if(LAZYLEN(extra_settings)) + data["has_extra_settings"] = TRUE + + return data + +/obj/machinery/nanite_programmer/ui_act(action, params) + if(..()) + return + switch(action) + if("eject") + eject(usr) + . = TRUE + if("toggle_active") + playsound(src, "terminal_type", 25, 0) + program.activated = !program.activated //we don't use the activation procs since we aren't in a mob + if(program.activated) + program.activation_delay = 0 + . = TRUE + if("set_code") + var/new_code = input("Set code (0000-9999):", name, null) as null|num + if(!isnull(new_code)) + playsound(src, "terminal_type", 25, 0) + new_code = CLAMP(round(new_code, 1),0,9999) + else + return + + playsound(src, "terminal_type", 25, 0) + var/target_code = params["target_code"] + switch(target_code) + if("activation") + program.activation_code = CLAMP(round(new_code, 1),0,9999) + if("deactivation") + program.deactivation_code = CLAMP(round(new_code, 1),0,9999) + if("kill") + program.kill_code = CLAMP(round(new_code, 1),0,9999) + if("trigger") + program.trigger_code = CLAMP(round(new_code, 1),0,9999) + . = TRUE + if("set_extra_setting") + program.set_extra_setting(usr, params["target_setting"]) + playsound(src, "terminal_type", 25, 0) + . = TRUE + if("set_activation_delay") + var/delay = input("Set activation delay in seconds (0-1800):", name, program.activation_delay) as null|num + if(!isnull(delay)) + playsound(src, "terminal_type", 25, 0) + delay = CLAMP(round(delay, 1),0,1800) + program.activation_delay = delay + if(delay) + program.activated = FALSE + . = TRUE + if("set_timer") + var/timer = input("Set timer in seconds (10-3600):", name, program.timer) as null|num + if(!isnull(timer)) + playsound(src, "terminal_type", 25, 0) + if(!timer == 0) + timer = CLAMP(round(timer, 1),10,3600) + program.timer = timer + . = TRUE + if("set_timer_type") + var/new_type = input("Choose the timer effect","Timer Effect") as null|anything in list("Deactivate","Self-Delete","Trigger","Reset Activation Timer") + if(new_type) + playsound(src, "terminal_type", 25, 0) + switch(new_type) + if("Deactivate") + program.timer_type = NANITE_TIMER_DEACTIVATE + if("Self-Delete") + program.timer_type = NANITE_TIMER_SELFDELETE + if("Trigger") + program.timer_type = NANITE_TIMER_TRIGGER + if("Reset Activation Timer") + program.timer_type = NANITE_TIMER_RESET + . = TRUE \ No newline at end of file diff --git a/code/modules/research/nanites/nanite_programs.dm b/code/modules/research/nanites/nanite_programs.dm new file mode 100644 index 0000000000..00581154d9 --- /dev/null +++ b/code/modules/research/nanites/nanite_programs.dm @@ -0,0 +1,254 @@ +/datum/nanite_program + var/name = "Generic Nanite Program" + var/desc = "Warn a coder if you can read this." + + var/datum/component/nanites/nanites + var/mob/living/host_mob + + var/use_rate = 0 //Amount of nanites used while active + var/unique = TRUE //If there can be more than one copy in the same nanites + var/can_trigger = FALSE //If the nanites have a trigger function (used for the programming UI) + var/trigger_cost = 0 //Amount of nanites required to trigger + var/trigger_cooldown = 50 //Deciseconds required between each trigger activation + var/next_trigger = 0 //World time required for the next trigger activation + var/timer_counter = 0 //Counts up while active. Used for the timer and the activation delay. + var/program_flags = NONE + var/passive_enabled = FALSE //If the nanites have an on/off-style effect, it's tracked by this var + + var/list/rogue_types = list(/datum/nanite_program/glitch) //What this can turn into if it glitches. + //As a rule of thumb, these should be: + //A: simpler + //B: negative + //C: affecting the same parts of the body, roughly + //B is mostly a consequence of A: it's always going to be simpler to cause damage than to repair it, so a software bug will not randomly make the flesh eating + //nanites learn how to repair cells. + //Given enough glitch-swapping you'll end up with stuff like necrotic or toxic nanites, which are very simple as they just try to eat what's in front of them + //or just lie around polluting the blood + + + //The following vars are customizable + var/activated = TRUE //If FALSE, the program won't process, disables passive effects, can't trigger and doesn't consume nanites + var/activation_delay = 0 //Seconds before the program self-activates. + var/timer = 0 //Seconds before the timer effect activates. Starts counting AFTER the activation delay + var/timer_type = NANITE_TIMER_DEACTIVATE //What happens when the timer runs out + + //Signal codes, these handle remote input to the nanites. If set to 0 they'll ignore signals. + var/activation_code = 0 //Code that activates the program [1-9999] + var/deactivation_code = 0 //Code that deactivates the program [1-9999] + var/kill_code = 0 //Code that permanently removes the program [1-9999] + var/trigger_code = 0 //Code that triggers the program (if available) [1-9999] + + //Extra settings + //Must be listed in text form, with the same title they'll be displayed in the programmer UI + //Changing these values is handled by set_extra_setting() + //Viewing these values is handled by get_extra_setting() + //Copying these values is handled by copy_extra_settings_to() + var/list/extra_settings = list() + +/datum/nanite_program/triggered + use_rate = 0 + trigger_cost = 5 + trigger_cooldown = 50 + can_trigger = TRUE + +/datum/nanite_program/Destroy() + if(host_mob) + if(activated) + deactivate() + if(passive_enabled) + disable_passive_effect() + if(nanites) + nanites.programs -= src + return ..() + +/datum/nanite_program/proc/copy() + var/datum/nanite_program/new_program = new type() + + new_program.activated = activated + new_program.activation_delay = activation_delay + new_program.timer = timer + new_program.timer_type = timer_type + new_program.activation_code = activation_code + new_program.deactivation_code = deactivation_code + new_program.kill_code = kill_code + new_program.trigger_code = trigger_code + copy_extra_settings_to(new_program) + + return new_program + +/datum/nanite_program/proc/copy_programming(datum/nanite_program/target, copy_activated = TRUE) + if(copy_activated) + target.activated = activated + target.activation_delay = activation_delay + target.timer = timer + target.timer_type = timer_type + target.activation_code = activation_code + target.deactivation_code = deactivation_code + target.kill_code = kill_code + target.trigger_code = trigger_code + copy_extra_settings_to(target) + +/datum/nanite_program/proc/set_extra_setting(user, setting) + return + +/datum/nanite_program/proc/get_extra_setting(setting) + return + +/datum/nanite_program/proc/copy_extra_settings_to(datum/nanite_program/target) + return + +/datum/nanite_program/proc/on_add(datum/component/nanites/_nanites) + nanites = _nanites + if(nanites.host_mob) + on_mob_add() + +/datum/nanite_program/proc/on_mob_add() + host_mob = nanites.host_mob + if(activated) //apply activation effects if it starts active + activate() + +/datum/nanite_program/proc/toggle() + if(!activated) + activate() + else + deactivate() + +/datum/nanite_program/proc/activate() + activated = TRUE + +/datum/nanite_program/proc/deactivate() + if(passive_enabled) + disable_passive_effect() + activated = FALSE + +/datum/nanite_program/proc/on_process() + timer_counter++ + + if(activation_delay) + if(activated && timer_counter < activation_delay) + deactivate() + else if(!activated && timer_counter >= activation_delay) + activate() + if(!activated) + return + + if(timer && timer_counter > timer) + if(timer_type == NANITE_TIMER_DEACTIVATE) + deactivate() + else if(timer_type == NANITE_TIMER_SELFDELETE) + qdel(src) + else if(can_trigger && timer_type == NANITE_TIMER_TRIGGER) + trigger() + timer_counter = activation_delay + else if(timer_type == NANITE_TIMER_RESET) + timer_counter = 0 + if(check_conditions() && consume_nanites(use_rate)) + if(!passive_enabled) + enable_passive_effect() + active_effect() + else + if(passive_enabled) + disable_passive_effect() + +//If false, disables active and passive effects, but doesn't consume nanites +//Can be used to avoid consuming nanites for nothing +/datum/nanite_program/proc/check_conditions() + return TRUE + +//Constantly procs as long as the program is active +/datum/nanite_program/proc/active_effect() + return + +//Procs once when the program activates +/datum/nanite_program/proc/enable_passive_effect() + passive_enabled = TRUE + +//Procs once when the program deactivates +/datum/nanite_program/proc/disable_passive_effect() + passive_enabled = FALSE + +/datum/nanite_program/proc/trigger() + if(!activated) + return FALSE + if(world.time < next_trigger) + return FALSE + if(!consume_nanites(trigger_cost)) + return FALSE + next_trigger = world.time + trigger_cooldown + return TRUE + +/datum/nanite_program/proc/consume_nanites(amount, force = FALSE) + return nanites.consume_nanites(amount, force) + +/datum/nanite_program/proc/on_emp(severity) + if(program_flags & NANITE_EMP_IMMUNE) + return + if(prob(80 / severity)) + software_error() + +/datum/nanite_program/proc/on_shock(shock_damage) + if(!program_flags & NANITE_SHOCK_IMMUNE) + if(prob(10)) + software_error() + else if(prob(33)) + qdel(src) + +/datum/nanite_program/proc/on_minor_shock() + if(!program_flags & NANITE_SHOCK_IMMUNE) + if(prob(10)) + software_error() + +/datum/nanite_program/proc/on_death() + return + +/datum/nanite_program/proc/on_hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) + return + +/datum/nanite_program/proc/software_error(type) + if(!type) + type = rand(1,5) + switch(type) + if(1) + qdel(src) //kill switch + return + if(2) //deprogram codes + activation_code = 0 + deactivation_code = 0 + kill_code = 0 + trigger_code = 0 + if(3) + toggle() //enable/disable + if(4) + if(can_trigger) + trigger() + if(5) //Program is scrambled and does something different + var/rogue_type = pick(rogue_types) + var/datum/nanite_program/rogue = new rogue_type + nanites.add_program(rogue, src) + qdel(src) + +/datum/nanite_program/proc/receive_signal(code, source) + if(activation_code && code == activation_code && !activated) + activate() + host_mob.investigate_log("[host_mob]'s [name] nanite program was activated by [source] with code [code].", INVESTIGATE_NANITES) + else if(deactivation_code && code == deactivation_code && activated) + deactivate() + host_mob.investigate_log("[host_mob]'s [name] nanite program was deactivated by [source] with code [code].", INVESTIGATE_NANITES) + if(can_trigger && trigger_code && code == trigger_code) + trigger() + host_mob.investigate_log("[host_mob]'s [name] nanite program was triggered by [source] with code [code].", INVESTIGATE_NANITES) + if(kill_code && code == kill_code) + host_mob.investigate_log("[host_mob]'s [name] nanite program was deleted by [source] with code [code].", INVESTIGATE_NANITES) + qdel(src) + +/datum/nanite_program/proc/get_timer_type_text() + switch(timer_type) + if(NANITE_TIMER_DEACTIVATE) + return "Deactivate" + if(NANITE_TIMER_SELFDELETE) + return "Self-Delete" + if(NANITE_TIMER_TRIGGER) + return "Trigger" + if(NANITE_TIMER_RESET) + return "Reset Activation Timer" + diff --git a/code/modules/research/nanites/nanite_programs/buffing.dm b/code/modules/research/nanites/nanite_programs/buffing.dm new file mode 100644 index 0000000000..a26cb7bd68 --- /dev/null +++ b/code/modules/research/nanites/nanite_programs/buffing.dm @@ -0,0 +1,130 @@ +//Programs that buff the host in generally passive ways. + +/datum/nanite_program/nervous + name = "Nerve Support" + desc = "The nanites act as a secondary nervous system, reducing the amount of time the host is stunned." + use_rate = 1.5 + rogue_types = list(/datum/nanite_program/nerve_decay) + +/datum/nanite_program/nervous/enable_passive_effect() + . = ..() + if(ishuman(host_mob)) + var/mob/living/carbon/human/H = host_mob + H.physiology.stun_mod *= 0.5 + +/datum/nanite_program/nervous/disable_passive_effect() + . = ..() + if(ishuman(host_mob)) + var/mob/living/carbon/human/H = host_mob + H.physiology.stun_mod *= 2 + +/datum/nanite_program/triggered/adrenaline + name = "Adrenaline Burst" + desc = "The nanites cause a burst of adrenaline when triggered, waking the host from stuns and temporarily increasing their speed." + trigger_cost = 25 + trigger_cooldown = 1200 + rogue_types = list(/datum/nanite_program/toxic, /datum/nanite_program/nerve_decay) + +/datum/nanite_program/triggered/adrenaline/trigger() + if(!..()) + return + to_chat(host_mob, "You feel a sudden surge of energy!") + host_mob.SetStun(0) + host_mob.SetKnockdown(0) + host_mob.SetUnconscious(0) + host_mob.adjustStaminaLoss(-75) + host_mob.lying = 0 + host_mob.update_canmove() + host_mob.reagents.add_reagent("stimulants", 1.5) + +/datum/nanite_program/hardening + name = "Dermal Hardening" + desc = "The nanites form a mesh under the host's skin, protecting them from melee and bullet impacts." + use_rate = 0.5 + rogue_types = list(/datum/nanite_program/skin_decay) + +//TODO on_hit effect that turns skin grey for a moment + +/datum/nanite_program/hardening/enable_passive_effect() + . = ..() + if(ishuman(host_mob)) + var/mob/living/carbon/human/H = host_mob + H.physiology.armor.melee += 50 + H.physiology.armor.bullet += 35 + +/datum/nanite_program/hardening/disable_passive_effect() + . = ..() + if(ishuman(host_mob)) + var/mob/living/carbon/human/H = host_mob + H.physiology.armor.melee -= 50 + H.physiology.armor.bullet -= 35 + +/datum/nanite_program/refractive + name = "Dermal Refractive Surface" + desc = "The nanites form a membrane above the host's skin, reducing the effect of laser and energy impacts." + use_rate = 0.50 + rogue_types = list(/datum/nanite_program/skin_decay) + +/datum/nanite_program/refractive/enable_passive_effect() + . = ..() + if(ishuman(host_mob)) + var/mob/living/carbon/human/H = host_mob + H.physiology.armor.laser += 50 + H.physiology.armor.energy += 35 + +/datum/nanite_program/refractive/disable_passive_effect() + . = ..() + if(ishuman(host_mob)) + var/mob/living/carbon/human/H = host_mob + H.physiology.armor.laser -= 50 + H.physiology.armor.energy -= 35 + +/datum/nanite_program/coagulating + name = "Rapid Coagulation" + desc = "The nanites induce rapid coagulation when the host is wounded, dramatically reducing bleeding rate." + use_rate = 0.10 + rogue_types = list(/datum/nanite_program/suffocating) + +/datum/nanite_program/coagulating/enable_passive_effect() + . = ..() + if(ishuman(host_mob)) + var/mob/living/carbon/human/H = host_mob + H.physiology.bleed_mod *= 0.1 + +/datum/nanite_program/coagulating/disable_passive_effect() + . = ..() + if(ishuman(host_mob)) + var/mob/living/carbon/human/H = host_mob + H.physiology.bleed_mod *= 10 + +/datum/nanite_program/conductive + name = "Electric Conduction" + desc = "The nanites act as a grounding rod for electric shocks, protecting the host. Shocks can still damage the nanites themselves." + use_rate = 0.20 + program_flags = NANITE_SHOCK_IMMUNE + rogue_types = list(/datum/nanite_program/nerve_decay) + +/datum/nanite_program/conductive/enable_passive_effect() + . = ..() + host_mob.add_trait(TRAIT_SHOCKIMMUNE, "nanites") + +/datum/nanite_program/conductive/disable_passive_effect() + . = ..() + host_mob.remove_trait(TRAIT_SHOCKIMMUNE, "nanites") + +/datum/nanite_program/mindshield + name = "Mental Barrier" + desc = "The nanites form a protective membrane around the host's brain, shielding them from abnormal influences while they're active." + use_rate = 0.40 + rogue_types = list(/datum/nanite_program/brain_decay, /datum/nanite_program/brain_misfire) + +/datum/nanite_program/mindshield/enable_passive_effect() + . = ..() + if(!host_mob.mind.has_antag_datum(/datum/antagonist/rev)) //won't work if on a rev, to avoid having implanted revs + host_mob.add_trait(TRAIT_MINDSHIELD, "nanites") + host_mob.sec_hud_set_implants() + +/datum/nanite_program/mindshield/disable_passive_effect() + . = ..() + host_mob.remove_trait(TRAIT_MINDSHIELD, "nanites") + host_mob.sec_hud_set_implants() \ No newline at end of file diff --git a/code/modules/research/nanites/nanite_programs/healing.dm b/code/modules/research/nanites/nanite_programs/healing.dm new file mode 100644 index 0000000000..00a1f15e31 --- /dev/null +++ b/code/modules/research/nanites/nanite_programs/healing.dm @@ -0,0 +1,250 @@ +//Programs that heal the host in some way. + +/datum/nanite_program/regenerative + name = "Accelerated Regeneration" + desc = "The nanites boost the host's natural regeneration, increasing their healing speed. Does not consume nanites if the host is unharmed." + use_rate = 2.5 + rogue_types = list(/datum/nanite_program/necrotic) + +/datum/nanite_program/regenerative/check_conditions() + if(!host_mob.getBruteLoss() && !host_mob.getFireLoss()) + return FALSE + if(iscarbon(host_mob)) + var/mob/living/carbon/C = host_mob + var/list/parts = C.get_damaged_bodyparts(TRUE,TRUE, status = BODYPART_ORGANIC) + if(!parts.len) + return FALSE + return ..() + +/datum/nanite_program/regenerative/active_effect() + if(iscarbon(host_mob)) + var/mob/living/carbon/C = host_mob + var/list/parts = C.get_damaged_bodyparts(TRUE,TRUE, status = BODYPART_ORGANIC) + if(!parts.len) + return + for(var/obj/item/bodypart/L in parts) + if(L.heal_damage(1/parts.len, 1/parts.len)) + host_mob.update_damage_overlays() + else + host_mob.adjustBruteLoss(-1, TRUE) + host_mob.adjustFireLoss(-1, TRUE) + +/datum/nanite_program/temperature + name = "Temperature Adjustment" + desc = "The nanites adjust the host's internal temperature to an ideal level." + use_rate = 3.5 + rogue_types = list(/datum/nanite_program/skin_decay) + +/datum/nanite_program/temperature/check_conditions() + if(host_mob.bodytemperature > (BODYTEMP_NORMAL - 30) && host_mob.bodytemperature < (BODYTEMP_NORMAL + 30)) + return FALSE + return ..() + +/datum/nanite_program/temperature/active_effect() + if(host_mob.bodytemperature > BODYTEMP_NORMAL) + host_mob.adjust_bodytemperature(-40 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) + else if(host_mob.bodytemperature < (BODYTEMP_NORMAL + 1)) + host_mob.adjust_bodytemperature(40 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) + +/datum/nanite_program/purging + name = "Blood Purification" + desc = "The nanites purge toxins and chemicals from the host's bloodstream." + use_rate = 1 + rogue_types = list(/datum/nanite_program/suffocating, /datum/nanite_program/necrotic) + +/datum/nanite_program/purging/check_conditions() + var/foreign_reagent = LAZYLEN(host_mob.reagents.reagent_list) + if(!host_mob.getToxLoss() && !foreign_reagent) + return FALSE + return ..() + +/datum/nanite_program/purging/active_effect() + host_mob.adjustToxLoss(-1) + for(var/datum/reagent/R in host_mob.reagents.reagent_list) + host_mob.reagents.remove_reagent(R.id,1) + +/datum/nanite_program/brain_heal + name = "Neural Regeneration" + desc = "The nanites fix neural connections in the host's brain, reversing brain damage and minor traumas." + use_rate = 1.5 + rogue_types = list(/datum/nanite_program/brain_decay) + +/datum/nanite_program/brain_heal/check_conditions() + if(!host_mob.getBrainLoss()) + return FALSE + return ..() + +/datum/nanite_program/brain_heal/active_effect() + host_mob.adjustBrainLoss(-1, TRUE) + if(iscarbon(host_mob) && prob(10)) + var/mob/living/carbon/C = host_mob + C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC) + +/datum/nanite_program/blood_restoring + name = "Blood Regeneration" + desc = "The nanites stimulate and boost blood cell production in the host." + use_rate = 1 + rogue_types = list(/datum/nanite_program/suffocating) + +/datum/nanite_program/blood_restoring/check_conditions() + if(iscarbon(host_mob)) + var/mob/living/carbon/C = host_mob + if(C.blood_volume >= BLOOD_VOLUME_SAFE) + return FALSE + else + return FALSE + return ..() + +/datum/nanite_program/blood_restoring/active_effect() + if(iscarbon(host_mob)) + var/mob/living/carbon/C = host_mob + C.blood_volume += 2 + +/datum/nanite_program/repairing + name = "Mechanical Repair" + desc = "The nanites fix damage in the host's mechanical limbs." + use_rate = 0.5 //much more efficient than organic healing + rogue_types = list(/datum/nanite_program/necrotic) + +/datum/nanite_program/repairing/check_conditions() + if(!host_mob.getBruteLoss() && !host_mob.getFireLoss()) + return FALSE + + if(iscarbon(host_mob)) + var/mob/living/carbon/C = host_mob + var/list/parts = C.get_damaged_bodyparts(TRUE, TRUE, status = BODYPART_ROBOTIC) + if(!parts.len) + return FALSE + else + if(!(MOB_ROBOTIC in host_mob.mob_biotypes)) + return FALSE + return ..() + +/datum/nanite_program/repairing/active_effect(mob/living/M) + if(iscarbon(host_mob)) + var/mob/living/carbon/C = host_mob + var/list/parts = C.get_damaged_bodyparts(TRUE, TRUE, status = BODYPART_ROBOTIC) + if(!parts.len) + return + var/update = FALSE + for(var/obj/item/bodypart/L in parts) + if(L.heal_damage(1/parts.len, 1/parts.len)) + update = TRUE + if(update) + host_mob.update_damage_overlays() + else + host_mob.adjustBruteLoss(-1, TRUE) + host_mob.adjustFireLoss(-1, TRUE) + +/datum/nanite_program/purging_advanced + name = "Selective Blood Purification" + desc = "The nanites purge toxins and dangerous chemicals from the host's bloodstream, while ignoring beneficial chemicals. \ + The added processing power required to analyze the chemicals severely increases the nanite consumption rate." + use_rate = 2 + rogue_types = list(/datum/nanite_program/suffocating, /datum/nanite_program/necrotic) + +/datum/nanite_program/purging_advanced/check_conditions() + var/foreign_reagent = FALSE + for(var/datum/reagent/toxin/R in host_mob.reagents.reagent_list) + foreign_reagent = TRUE + break + if(!host_mob.getToxLoss() && !foreign_reagent) + return FALSE + return ..() + +/datum/nanite_program/purging_advanced/active_effect() + host_mob.adjustToxLoss(-1) + for(var/datum/reagent/toxin/R in host_mob.reagents.reagent_list) + host_mob.reagents.remove_reagent(R.id,1) + +/datum/nanite_program/regenerative_advanced + name = "Bio-Reconstruction" + desc = "The nanites manually repair and replace organic cells, acting much faster than normal regeneration. \ + However, this program cannot detect the difference between harmed and unharmed, causing it to consume nanites even if it has no effect." + use_rate = 5.5 + rogue_types = list(/datum/nanite_program/suffocating, /datum/nanite_program/necrotic) + +/datum/nanite_program/regenerative_advanced/active_effect() + if(iscarbon(host_mob)) + var/mob/living/carbon/C = host_mob + var/list/parts = C.get_damaged_bodyparts(TRUE,TRUE, status = BODYPART_ORGANIC) + if(!parts.len) + return + var/update = FALSE + for(var/obj/item/bodypart/L in parts) + if(L.heal_damage(3/parts.len, 3/parts.len)) + update = TRUE + if(update) + host_mob.update_damage_overlays() + else + host_mob.adjustBruteLoss(-3, TRUE) + host_mob.adjustFireLoss(-3, TRUE) + +/datum/nanite_program/brain_heal_advanced + name = "Neural Reimaging" + desc = "The nanites are able to backup and restore the host's neural connections, potentially replacing entire chunks of missing or damaged brain matter." + use_rate = 3 + rogue_types = list(/datum/nanite_program/brain_decay, /datum/nanite_program/brain_misfire) + +/datum/nanite_program/brain_heal_advanced/check_conditions() + if(!host_mob.getBrainLoss()) + return FALSE + return ..() + +/datum/nanite_program/brain_heal_advanced/active_effect() + host_mob.adjustBrainLoss(-2, TRUE) + if(iscarbon(host_mob) && prob(10)) + var/mob/living/carbon/C = host_mob + C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_LOBOTOMY) + +/datum/nanite_program/triggered/defib + name = "Defibrillation" + desc = "The nanites shock the host's heart when triggered, bringing them back to life if the body can sustain it." + trigger_cost = 25 + trigger_cooldown = 120 + rogue_types = list(/datum/nanite_program/triggered/shocking) + +/datum/nanite_program/triggered/defib/trigger() + if(!..()) + return + + playsound(host_mob, 'sound/machines/defib_zap.ogg', 75, 1, -1) + if(check_revivable()) + host_mob.notify_ghost_cloning("Your heart is being defibrillated. Re-enter your corpse if you want to be revived!", source = src) + addtimer(CALLBACK(src, .proc/zap), 30) + +/datum/nanite_program/triggered/defib/proc/check_revivable() + if(!iscarbon(host_mob)) //nonstandard biology + return FALSE + var/mob/living/carbon/C = host_mob + if(C.suiciding || C.has_trait(TRAIT_NOCLONE) || C.hellbound) //can't revive + return FALSE + if((world.time - C.timeofdeath) < 1800) //too late + return FALSE + if((C.getBruteLoss() > 180) || (C.getFireLoss() > 180)) //too damaged + return FALSE + if(!C.getorgan(/obj/item/organ/heart)) //what are we even shocking + return FALSE + var/obj/item/organ/brain/BR = C.getorgan(/obj/item/organ/brain) + if(QDELETED(BR) || BR.damaged_brain) + return FALSE + if(!C.get_ghost()) + return FALSE + return TRUE + +/datum/nanite_program/triggered/defib/proc/zap() + if(check_revivable()) + var/mob/living/carbon/C = host_mob + playsound(C, 'sound/machines/defib_success.ogg', 50, 0) + C.set_heartattack(FALSE) + C.revive() + C.emote("gasp") + C.Jitter(100) + SEND_SIGNAL(C, COMSIG_LIVING_MINOR_SHOCK) + var/tplus = world.time - C.timeofdeath + if(tplus > 600) + C.adjustBrainLoss( max(0, ((1800 - tplus) / 1800 * 150)), 150) + log_game("[C] has been successfully defibrillated by nanites.") + else + playsound(src, 'sound/machines/defib_failed.ogg', 50, 0) + diff --git a/code/modules/research/nanites/nanite_programs/rogue.dm b/code/modules/research/nanites/nanite_programs/rogue.dm new file mode 100644 index 0000000000..f64c7e8781 --- /dev/null +++ b/code/modules/research/nanites/nanite_programs/rogue.dm @@ -0,0 +1,119 @@ +//Programs generated through degradation of other complex programs. +//They generally cause minor damage or annoyance. + +//Last stop of the error train +/datum/nanite_program/glitch + name = "Glitch" + desc = "A heavy software corruption that causes nanites to gradually break down." + use_rate = 1.5 + unique = FALSE + rogue_types = list() + +//Generic body-affecting programs will decay into this +/datum/nanite_program/necrotic + name = "Necrosis" + desc = "The nanites attack internal tissues indiscriminately, causing widespread damage." + use_rate = 0.75 + unique = FALSE + rogue_types = list(/datum/nanite_program/glitch) + +/datum/nanite_program/necrotic/active_effect() + host_mob.adjustBruteLoss(0.75, TRUE) + if(prob(1)) + to_chat(host_mob, "You feel a mild ache from somewhere inside you.") + +//Programs that don't directly interact with the body will decay into this +/datum/nanite_program/toxic + name = "Toxin Buildup" + desc = "The nanites cause a slow but constant toxin buildup inside the host." + use_rate = 0.25 + unique = FALSE + rogue_types = list(/datum/nanite_program/glitch) + +/datum/nanite_program/toxic/active_effect() + host_mob.adjustToxLoss(0.5) + if(prob(1)) + to_chat(host_mob, "You feel a bit sick.") + +//Generic blood-affecting programs will decay into this +/datum/nanite_program/suffocating + name = "Hypoxemia" + desc = "The nanites prevent the host's blood from absorbing oxygen efficiently." + use_rate = 0.75 + unique = FALSE + rogue_types = list(/datum/nanite_program/glitch) + +/datum/nanite_program/suffocating/active_effect() + host_mob.adjustOxyLoss(3, 0) + if(prob(1)) + to_chat(host_mob, "You feel short of breath.") + +//Generic brain-affecting programs will decay into this +/datum/nanite_program/brain_decay + name = "Neuro-Necrosis" + desc = "The nanites seek and attack brain cells, causing extensive neural damage to the host." + use_rate = 0.75 + unique = FALSE + rogue_types = list(/datum/nanite_program/necrotic) + +/datum/nanite_program/brain_decay/active_effect() + if(prob(4)) + host_mob.hallucination = min(15, host_mob.hallucination) + host_mob.adjustBrainLoss(1) + +//Generic brain-affecting programs can also decay into this +/datum/nanite_program/brain_misfire + name = "Brain Misfire" + desc = "The nanites interfere with neural pathways, causing minor psychological disturbances." + use_rate = 0.50 + unique = FALSE + rogue_types = list(/datum/nanite_program/brain_decay) + +/datum/nanite_program/brain_misfire/active_effect() + if(prob(10)) + switch(rand(1,4)) + if(1) + host_mob.hallucination += 15 + if(2) + host_mob.confused += 10 + if(3) + host_mob.drowsyness += 10 + if(4) + host_mob.slurring += 10 + +//Generic skin-affecting programs will decay into this +/datum/nanite_program/skin_decay + name = "Dermalysis" + desc = "The nanites attack skin cells, causing irritation, rashes, and minor damage." + use_rate = 0.25 + unique = FALSE + rogue_types = list(/datum/nanite_program/necrotic) + +/datum/nanite_program/skin_decay/active_effect() + host_mob.adjustBruteLoss(0.25) + if(prob(5)) //itching + var/picked_bodypart = pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG) + var/obj/item/bodypart/bodypart = host_mob.get_bodypart(picked_bodypart) + var/can_scratch = !host_mob.incapacitated() && get_location_accessible(host_mob, picked_bodypart) + + host_mob.visible_message("[can_scratch ? "[host_mob] scratches [host_mob.p_their()] [bodypart.name]." : ""]",\ + "Your [bodypart.name] itches. [can_scratch ? " You scratch it." : ""]") + +//Generic nerve-affecting programs will decay into this +/datum/nanite_program/nerve_decay + name = "Nerve Decay" + desc = "The nanites attack the host's nerves, causing lack of coordination and short bursts of paralysis." + use_rate = 1 + unique = FALSE + rogue_types = list(/datum/nanite_program/necrotic) + +/datum/nanite_program/nerve_decay/active_effect() + if(prob(5)) + to_chat(host_mob, "You feel unbalanced!") + host_mob.confused += 10 + else if(prob(4)) + to_chat(host_mob, "You can't feel your hands!") + host_mob.drop_all_held_items() + else if(prob(4)) + to_chat(host_mob, "You can't feel your legs!") + host_mob.Knockdown(30) diff --git a/code/modules/research/nanites/nanite_programs/sensor.dm b/code/modules/research/nanites/nanite_programs/sensor.dm new file mode 100644 index 0000000000..d494ec8cdf --- /dev/null +++ b/code/modules/research/nanites/nanite_programs/sensor.dm @@ -0,0 +1,392 @@ +/datum/nanite_program/sensor + name = "Sensor Nanites" + desc = "These nanites send a signal code when a certain condition is met." + unique = FALSE + extra_settings = list("Sent Code") + + var/sent_code = 0 + +/datum/nanite_program/sensor/set_extra_setting(user, setting) + if(setting == "Sent Code") + var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num + if(isnull(new_code)) + return + sent_code = CLAMP(round(new_code, 1), 1, 9999) + +/datum/nanite_program/sensor/get_extra_setting(setting) + if(setting == "Sent Code") + return sent_code + +/datum/nanite_program/sensor/copy_extra_settings_to(datum/nanite_program/sensor/target) + target.sent_code = sent_code + +/datum/nanite_program/sensor/proc/check_event() + return FALSE + +/datum/nanite_program/sensor/proc/send_code() + if(activated) + SEND_SIGNAL(host_mob, COMSIG_NANITE_SIGNAL, sent_code, "a [name] program") + +/datum/nanite_program/sensor/active_effect() + if(sent_code && check_event()) + send_code() + +/datum/nanite_program/sensor/repeat + name = "Signal Repeater" + desc = "When triggered, sends another signal to the nanites, optionally with a delay." + can_trigger = TRUE + trigger_cost = 0 + trigger_cooldown = 10 + extra_settings = list("Sent Code","Delay") + var/spent = FALSE + var/delay = 0 + +/datum/nanite_program/sensor/repeat/set_extra_setting(user, setting) + if(setting == "Sent Code") + var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num + if(isnull(new_code)) + return + sent_code = CLAMP(round(new_code, 1), 1, 9999) + if(setting == "Delay") + var/new_delay = input(user, "Set the delay in seconds:", name, null) as null|num + if(isnull(new_delay)) + return + delay = (CLAMP(round(new_delay, 1), 0, 3600)) * 10 //max 1 hour + +/datum/nanite_program/sensor/repeat/get_extra_setting(setting) + if(setting == "Sent Code") + return sent_code + if(setting == "Delay") + return "[delay/10] seconds" + +/datum/nanite_program/sensor/repeat/copy_extra_settings_to(datum/nanite_program/sensor/repeat/target) + target.sent_code = sent_code + target.delay = delay + +/datum/nanite_program/sensor/repeat/trigger() + if(!..()) + return + addtimer(CALLBACK(src, .proc/send_code), delay) + +/datum/nanite_program/sensor/relay_repeat + name = "Relay Signal Repeater" + desc = "When triggered, sends another signal to a relay channel, optionally with a delay." + can_trigger = TRUE + trigger_cost = 0 + trigger_cooldown = 10 + extra_settings = list("Sent Code","Relay Channel","Delay") + var/spent = FALSE + var/delay = 0 + var/relay_channel = 0 + +/datum/nanite_program/sensor/relay_repeat/set_extra_setting(user, setting) + if(setting == "Sent Code") + var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num + if(isnull(new_code)) + return + sent_code = CLAMP(round(new_code, 1), 1, 9999) + if(setting == "Relay Channel") + var/new_channel = input(user, "Set the relay channel (1-9999):", name, null) as null|num + if(isnull(new_channel)) + return + relay_channel = CLAMP(round(new_channel, 1), 1, 9999) + if(setting == "Delay") + var/new_delay = input(user, "Set the delay in seconds:", name, null) as null|num + if(isnull(new_delay)) + return + delay = (CLAMP(round(new_delay, 1), 0, 3600)) * 10 //max 1 hour + +/datum/nanite_program/sensor/relay_repeat/get_extra_setting(setting) + if(setting == "Sent Code") + return sent_code + if(setting == "Relay Channel") + return relay_channel + if(setting == "Delay") + return "[delay/10] seconds" + +/datum/nanite_program/sensor/relay_repeat/copy_extra_settings_to(datum/nanite_program/sensor/relay_repeat/target) + target.sent_code = sent_code + target.delay = delay + target.relay_channel = relay_channel + +/datum/nanite_program/sensor/relay_repeat/trigger() + if(!..()) + return + addtimer(CALLBACK(src, .proc/send_code), delay) + +/datum/nanite_program/sensor/relay_repeat/send_code() + if(activated && relay_channel) + for(var/X in SSnanites.nanite_relays) + var/datum/nanite_program/relay/N = X + N.relay_signal(sent_code, relay_channel, "a [name] program") + +/datum/nanite_program/sensor/health + name = "Health Sensor" + desc = "The nanites receive a signal when the host's health is above/below a target percentage." + extra_settings = list("Sent Code","Health Percent","Direction") + var/spent = FALSE + var/percent = 50 + var/direction = "Above" + +/datum/nanite_program/sensor/health/set_extra_setting(user, setting) + if(setting == "Sent Code") + var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num + if(isnull(new_code)) + return + sent_code = CLAMP(round(new_code, 1), 1, 9999) + if(setting == "Health Percent") + var/new_percent = input(user, "Set the health percentage:", name, null) as null|num + if(isnull(new_percent)) + return + percent = CLAMP(round(new_percent, 1), -99, 100) + if(setting == "Direction") + if(direction == "Above") + direction = "Below" + else + direction = "Above" + +/datum/nanite_program/sensor/health/get_extra_setting(setting) + if(setting == "Sent Code") + return sent_code + if(setting == "Health Percent") + return "[percent]%" + if(setting == "Direction") + return direction + +/datum/nanite_program/sensor/health/copy_extra_settings_to(datum/nanite_program/sensor/health/target) + target.sent_code = sent_code + target.percent = percent + target.direction = direction + +/datum/nanite_program/sensor/health/check_event() + var/health_percent = host_mob.health / host_mob.maxHealth * 100 + var/detected = FALSE + if(direction == "Above") + if(health_percent >= percent) + detected = TRUE + else + if(health_percent < percent) + detected = TRUE + + if(detected) + if(!spent) + spent = TRUE + return TRUE + return FALSE + else + spent = FALSE + return FALSE + +/datum/nanite_program/sensor/crit + name = "Critical Health Sensor" + desc = "The nanites receive a signal when the host first reaches critical health." + var/spent = FALSE + +/datum/nanite_program/sensor/crit/check_event() + if(host_mob.InCritical()) + if(!spent) + spent = TRUE + return TRUE + return FALSE + else + spent = FALSE + return FALSE + +/datum/nanite_program/sensor/death + name = "Death Sensor" + desc = "The nanites receive a signal when they detect the host is dead." + var/spent = FALSE + +/datum/nanite_program/sensor/death/on_death() + send_code() + +/datum/nanite_program/sensor/nanite_volume + name = "Nanite Volume Sensor" + desc = "The nanites receive a signal when the nanite supply is above/below a certain percentage." + extra_settings = list("Sent Code","Nanite Percent","Direction") + var/spent = FALSE + var/percent = 50 + var/direction = "Above" + +/datum/nanite_program/sensor/nanite_volume/set_extra_setting(user, setting) + if(setting == "Sent Code") + var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num + if(isnull(new_code)) + return + sent_code = CLAMP(round(new_code, 1), 1, 9999) + if(setting == "Nanite Percent") + var/new_percent = input(user, "Set the nanite percentage:", name, null) as null|num + if(isnull(new_percent)) + return + percent = CLAMP(round(new_percent, 1), 1, 100) + if(setting == "Direction") + if(direction == "Above") + direction = "Below" + else + direction = "Above" + +/datum/nanite_program/sensor/nanite_volume/get_extra_setting(setting) + if(setting == "Sent Code") + return sent_code + if(setting == "Nanite Percent") + return "[percent]%" + if(setting == "Direction") + return direction + +/datum/nanite_program/sensor/nanite_volume/copy_extra_settings_to(datum/nanite_program/sensor/nanite_volume/target) + target.sent_code = sent_code + target.percent = percent + target.direction = direction + +/datum/nanite_program/sensor/nanite_volume/check_event() + var/nanite_percent = (nanites.nanite_volume - nanites.safety_threshold)/(nanites.max_nanites - nanites.safety_threshold)*100 + var/detected = FALSE + + if(direction == "Above") + if(nanite_percent >= percent) + detected = TRUE + else + if(nanite_percent < percent) + detected = TRUE + + if(detected) + if(!spent) + spent = TRUE + return TRUE + return FALSE + else + spent = FALSE + return FALSE + +/datum/nanite_program/sensor/damage + name = "Damage Sensor" + desc = "The nanites receive a signal when a host's specific damage type is above/below a target value." + extra_settings = list("Sent Code","Damage Type","Damage","Direction") + var/spent = FALSE + var/damage_type = "Brute" + var/damage = 50 + var/direction = "Above" + +/datum/nanite_program/sensor/damage/set_extra_setting(user, setting) + if(setting == "Sent Code") + var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num + if(isnull(new_code)) + return + sent_code = CLAMP(round(new_code, 1), 1, 9999) + if(setting == "Damage") + var/new_damage = input(user, "Set the damage threshold:", name, null) as null|num + if(isnull(new_damage)) + return + damage = CLAMP(round(new_damage, 1), 0, 500) + if(setting == "Damage Type") + var/list/damage_types = list("Brute","Burn","Toxin","Oxygen","Cellular") + var/new_damage_type = input("Choose the damage type", name) as null|anything in damage_types + if(!new_damage_type) + return + damage_type = new_damage_type + if(setting == "Direction") + if(direction == "Above") + direction = "Below" + else + direction = "Above" + +/datum/nanite_program/sensor/damage/get_extra_setting(setting) + if(setting == "Sent Code") + return sent_code + if(setting == "Damage") + return damage + if(setting == "Damage Type") + return damage_type + if(setting == "Direction") + return direction + +/datum/nanite_program/sensor/damage/copy_extra_settings_to(datum/nanite_program/sensor/damage/target) + target.sent_code = sent_code + target.damage = damage + target.damage_type = damage_type + target.direction = direction + +/datum/nanite_program/sensor/damage/check_event() + var/reached_threshold = FALSE + var/check_above = (direction == "Above") + var/damage_amt = 0 + switch(damage_type) + if("Brute") + damage_amt = host_mob.getBruteLoss() + if("Burn") + damage_amt = host_mob.getFireLoss() + if("Toxin") + damage_amt = host_mob.getToxLoss() + if("Oxygen") + damage_amt = host_mob.getOxyLoss() + if("Cellular") + damage_amt = host_mob.getCloneLoss() + + if(damage_amt >= damage) + if(check_above) + reached_threshold = TRUE + else if(!check_above) + reached_threshold = TRUE + + if(reached_threshold) + if(!spent) + spent = TRUE + return TRUE + return FALSE + else + spent = FALSE + return FALSE + +/datum/nanite_program/sensor/voice + name = "Voice Sensor" + desc = "Sends a signal when the nanites hear a determined word or sentence." + extra_settings = list("Sent Code","Sentence","Inclusive Mode") + var/spent = FALSE + var/sentence = "" + var/inclusive = TRUE + +/datum/nanite_program/sensor/voice/set_extra_setting(user, setting) + if(setting == "Sent Code") + var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num + if(isnull(new_code)) + return + sent_code = CLAMP(round(new_code, 1), 1, 9999) + if(setting == "Sentence") + var/new_sentence = stripped_input(user, "Choose the sentence that triggers the sensor.", "Sentence", sentence, MAX_MESSAGE_LEN) + if(!new_sentence) + return + sentence = new_sentence + if(setting == "Inclusive Mode") + var/new_inclusive = input("Should the sensor detect the sentence if contained within another sentence?", name) as null|anything in list("Inclusive","Exclusive") + if(!new_inclusive) + return + inclusive = (new_inclusive == "Inclusive") + +/datum/nanite_program/sensor/voice/get_extra_setting(setting) + if(setting == "Sent Code") + return sent_code + if(setting == "Sentence") + return sentence + if(setting == "Inclusive Mode") + if(inclusive) + return "Inclusive" + else + return "Exclusive" + +/datum/nanite_program/sensor/voice/copy_extra_settings_to(datum/nanite_program/sensor/voice/target) + target.sent_code = sent_code + target.sentence = sentence + target.inclusive = inclusive + +/datum/nanite_program/sensor/voice/on_hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) + if(!sentence) + return + //To make it not case sensitive + var/low_message = lowertext(raw_message) + var/low_sentence = lowertext(sentence) + if(inclusive) + if(findtext(low_message, low_sentence)) + send_code() + else + if(low_message == low_sentence) + send_code() \ No newline at end of file diff --git a/code/modules/research/nanites/nanite_programs/suppression.dm b/code/modules/research/nanites/nanite_programs/suppression.dm new file mode 100644 index 0000000000..9d501e626a --- /dev/null +++ b/code/modules/research/nanites/nanite_programs/suppression.dm @@ -0,0 +1,311 @@ +//Programs that are generally useful for population control and non-harmful suppression. + +/datum/nanite_program/triggered/sleepy + name = "Sleep Induction" + desc = "The nanites cause rapid narcolepsy when triggered." + trigger_cost = 15 + trigger_cooldown = 1200 + rogue_types = list(/datum/nanite_program/brain_misfire, /datum/nanite_program/brain_decay) + +/datum/nanite_program/triggered/sleepy/trigger() + if(!..()) + return + to_chat(host_mob, "You start to feel very sleepy...") + host_mob.drowsyness += 20 + addtimer(CALLBACK(host_mob, /mob/living.proc/Sleeping, 200), rand(60,200)) + +/datum/nanite_program/paralyzing + name = "Paralysis" + desc = "The nanites force muscle contraction, effectively paralyzing the host." + use_rate = 3 + rogue_types = list(/datum/nanite_program/nerve_decay) + +/datum/nanite_program/paralyzing/active_effect() + host_mob.Stun(40) + +/datum/nanite_program/paralyzing/enable_passive_effect() + . = ..() + to_chat(host_mob, "Your muscles seize! You can't move!") + +/datum/nanite_program/paralyzing/disable_passive_effect() + . = ..() + to_chat(host_mob, "Your muscles relax, and you can move again.") + +/datum/nanite_program/triggered/shocking + name = "Electric Shock" + desc = "The nanites shock the host when triggered. Destroys a large amount of nanites!" + trigger_cost = 10 + trigger_cooldown = 300 + program_flags = NANITE_SHOCK_IMMUNE + rogue_types = list(/datum/nanite_program/toxic) + +/datum/nanite_program/triggered/shocking/trigger() + if(!..()) + return + host_mob.electrocute_act(rand(5,10), "shock nanites", TRUE, TRUE) + +/datum/nanite_program/triggered/stun + name = "Neural Shock" + desc = "The nanites pulse the host's nerves when triggered, inapacitating them for a short period." + trigger_cost = 4 + trigger_cooldown = 300 + rogue_types = list(/datum/nanite_program/triggered/shocking, /datum/nanite_program/nerve_decay) + +/datum/nanite_program/triggered/stun/trigger() + if(!..()) + return + playsound(host_mob, "sparks", 75, 1, -1) + host_mob.Knockdown(80) + +/datum/nanite_program/pacifying + name = "Pacification" + desc = "The nanites suppress the aggression center of the brain, preventing the host from causing direct harm to others." + use_rate = 1 + rogue_types = list(/datum/nanite_program/brain_misfire, /datum/nanite_program/brain_decay) + +/datum/nanite_program/pacifying/enable_passive_effect() + . = ..() + host_mob.add_trait(TRAIT_PACIFISM, "nanites") + +/datum/nanite_program/pacifying/disable_passive_effect() + . = ..() + host_mob.remove_trait(TRAIT_PACIFISM, "nanites") + +/datum/nanite_program/blinding + name = "Blindness" + desc = "The nanites suppress the host's ocular nerves, blinding them while they're active." + use_rate = 1.5 + rogue_types = list(/datum/nanite_program/nerve_decay) + +/datum/nanite_program/blinding/enable_passive_effect() + . = ..() + host_mob.become_blind("nanites") + +/datum/nanite_program/blinding/disable_passive_effect() + . = ..() + host_mob.cure_blind("nanites") + +/datum/nanite_program/mute + name = "Mute" + desc = "The nanites suppress the host's speech, making them mute while they're active." + use_rate = 0.75 + rogue_types = list(/datum/nanite_program/brain_decay, /datum/nanite_program/brain_misfire) + +/datum/nanite_program/mute/enable_passive_effect() + . = ..() + host_mob.add_trait(TRAIT_MUTE, "nanites") + +/datum/nanite_program/mute/disable_passive_effect() + . = ..() + host_mob.remove_trait(TRAIT_MUTE, "nanites") + +/datum/nanite_program/fake_death + name = "Death Simulation" + desc = "The nanites induce a death-like coma into the host, able to fool most medical scans." + use_rate = 3.5 + rogue_types = list(/datum/nanite_program/nerve_decay, /datum/nanite_program/necrotic, /datum/nanite_program/brain_decay) + +/datum/nanite_program/fake_death/enable_passive_effect() + . = ..() + host_mob.emote("deathgasp") + host_mob.fakedeath("nanites") + +/datum/nanite_program/fake_death/disable_passive_effect() + . = ..() + host_mob.cure_fakedeath("nanites") + +/datum/nanite_program/triggered/speech + name = "Forced Speech" + desc = "The nanites force the host to say a pre-programmed sentence when triggered." + unique = FALSE + trigger_cost = 3 + trigger_cooldown = 20 + rogue_types = list(/datum/nanite_program/brain_misfire, /datum/nanite_program/brain_decay) + + extra_settings = list("Sentence") + var/sentence = "" + +/datum/nanite_program/triggered/speech/set_extra_setting(user, setting) + if(setting == "Sentence") + var/new_sentence = stripped_input(user, "Choose the sentence that the host will be forced to say.", "Sentence", sentence, MAX_MESSAGE_LEN) + if(!new_sentence) + return + if(copytext(new_sentence, 1, 2) == "*") //emotes are abusable, like surrender + return + sentence = new_sentence + +/datum/nanite_program/triggered/speech/get_extra_setting(setting) + if(setting == "Sentence") + return sentence + +/datum/nanite_program/triggered/speech/copy_extra_settings_to(datum/nanite_program/triggered/speech/target) + target.sentence = sentence + +/datum/nanite_program/triggered/speech/trigger() + if(!..()) + return + if(host_mob.stat == DEAD) + return + to_chat(host_mob, "You feel compelled to speak...") + host_mob.say(sentence) + +/datum/nanite_program/triggered/voice + name = "Skull Echo" + desc = "The nanites echo a synthesized message inside the host's skull." + unique = FALSE + trigger_cost = 1 + trigger_cooldown = 20 + rogue_types = list(/datum/nanite_program/brain_misfire, /datum/nanite_program/brain_decay) + + extra_settings = list("Message") + var/message = "" + +/datum/nanite_program/triggered/voice/set_extra_setting(user, setting) + if(setting == "Message") + var/new_message = stripped_input(user, "Choose the message sent to the host.", "Message", message, MAX_MESSAGE_LEN) + if(!new_message) + return + message = new_message + +/datum/nanite_program/triggered/voice/get_extra_setting(setting) + if(setting == "Message") + return message + +/datum/nanite_program/triggered/voice/copy_extra_settings_to(datum/nanite_program/triggered/voice/target) + target.message = message + +/datum/nanite_program/triggered/voice/trigger() + if(!..()) + return + if(host_mob.stat == DEAD) + return + to_chat(host_mob, "You hear a strange, robotic voice in your head... \"[message]\"") + +/datum/nanite_program/triggered/hallucination + name = "Hallucination" + desc = "The nanites make the host hallucinate something when triggered." + trigger_cost = 4 + trigger_cooldown = 80 + unique = FALSE + rogue_types = list(/datum/nanite_program/brain_misfire) + extra_settings = list("Hallucination Type") + var/hal_type + var/hal_details + +/datum/nanite_program/triggered/hallucination/trigger() + if(!..()) + return + if(!iscarbon(host_mob)) + return + var/mob/living/carbon/C = host_mob + if(!hal_type) + C.hallucination += 15 + else + switch(hal_type) + if("Message") + new /datum/hallucination/chat(C, TRUE, null, hal_details) + if("Battle") + new /datum/hallucination/battle(C, TRUE, hal_details) + if("Sound") + new /datum/hallucination/sounds(C, TRUE, hal_details) + if("Weird Sound") + new /datum/hallucination/weird_sounds(C, TRUE, hal_details) + if("Station Message") + new /datum/hallucination/stationmessage(C, TRUE, hal_details) + if("Health") + new /datum/hallucination/hudscrew(C, TRUE, hal_details) + if("Alert") + new /datum/hallucination/fake_alert(C, TRUE, hal_details) + if("Fire") + new /datum/hallucination/fire(C, TRUE) + if("Shock") + new /datum/hallucination/shock(C, TRUE) + if("Plasma Flood") + new /datum/hallucination/fake_flood(C, TRUE) + +/datum/nanite_program/triggered/hallucination/set_extra_setting(user, setting) + if(setting == "Hallucination Type") + var/list/possible_hallucinations = list("Random","Message","Battle","Sound","Weird Sound","Station Message","Health","Alert","Fire","Shock","Plasma Flood") + var/hal_type_choice = input("Choose the hallucination type", name) as null|anything in possible_hallucinations + if(!hal_type_choice) + return + switch(hal_type_choice) + if("Random") + hal_type = null + hal_details = null + if("Message") + hal_type = "Message" + var/hal_chat = stripped_input(user, "Choose the message the host will hear, or leave empty for random messages.", "Message", hal_details, MAX_MESSAGE_LEN) + if(hal_chat) + hal_details = hal_chat + if("Battle") + hal_type = "Battle" + var/sound_list = list("random","laser","disabler","esword","gun","stunprod","harmbaton","bomb") + var/hal_choice = input("Choose the hallucination battle type", name) as null|anything in sound_list + if(!hal_choice || hal_choice == "random") + hal_details = null + else + hal_details = hal_choice + if("Sound") + hal_type = "Sound" + var/sound_list = list("random","airlock","airlock pry","console","explosion","far explosion","mech","glass","alarm","beepsky","mech","wall decon","door hack") + var/hal_choice = input("Choose the hallucination sound", name) as null|anything in sound_list + if(!hal_choice || hal_choice == "random") + hal_details = null + else + hal_details = hal_choice + if("Weird Sound") + hal_type = "Weird Sound" + var/sound_list = list("random","phone","hallelujah","highlander","laughter","hyperspace","game over","creepy","tesla") + var/hal_choice = input("Choose the hallucination sound", name) as null|anything in sound_list + if(!hal_choice || hal_choice == "random") + hal_details = null + else + hal_details = hal_choice + if("Station Message") + hal_type = "Station Message" + var/msg_list = list("random","ratvar","shuttle dock","blob alert","malf ai","meteors","supermatter") + var/hal_choice = input("Choose the hallucination station message", name) as null|anything in msg_list + if(!hal_choice || hal_choice == "random") + hal_details = null + else + hal_details = hal_choice + if("Health") + hal_type = "Health" + var/health_list = list("random","critical","dead","healthy") + var/hal_choice = input("Choose the health status", name) as null|anything in health_list + if(!hal_choice || hal_choice == "random") + hal_details = null + else + switch(hal_choice) + if("critical") + hal_details = SCREWYHUD_CRIT + if("dead") + hal_details = SCREWYHUD_DEAD + if("healthy") + hal_details = SCREWYHUD_HEALTHY + if("Alert") + hal_type = "Alert" + var/alert_list = list("random","not_enough_oxy","not_enough_tox","not_enough_co2","too_much_oxy","too_much_co2","too_much_tox","newlaw","nutrition","charge","gravity","fire","locked","hacked","temphot","tempcold","pressure") + var/hal_choice = input("Choose the alert", name) as null|anything in alert_list + if(!hal_choice || hal_choice == "random") + hal_details = null + else + hal_details = hal_choice + if("Fire") + hal_type = "Fire" + if("Shock") + hal_type = "Shock" + if("Plasma Flood") + hal_type = "Plasma Flood" + +/datum/nanite_program/triggered/hallucination/get_extra_setting(setting) + if(setting == "Hallucination Type") + if(!hal_type) + return "Random" + else + return hal_type + +/datum/nanite_program/triggered/hallucination/copy_extra_settings_to(datum/nanite_program/triggered/hallucination/target) + target.hal_type = hal_type + target.hal_details = hal_details \ No newline at end of file diff --git a/code/modules/research/nanites/nanite_programs/utility.dm b/code/modules/research/nanites/nanite_programs/utility.dm new file mode 100644 index 0000000000..9f88f4a23f --- /dev/null +++ b/code/modules/research/nanites/nanite_programs/utility.dm @@ -0,0 +1,265 @@ +//Programs that interact with other programs or nanites directly, or have other special purposes. +/datum/nanite_program/viral + name = "Viral Replica" + desc = "The nanites constantly send encrypted signals attempting to forcefully copy their own programming into other nanite clusters." + use_rate = 0.5 + rogue_types = list(/datum/nanite_program/toxic) + extra_settings = list("Program Overwrite","Cloud Overwrite") + + var/sync_programs = TRUE + var/sync_overwrite = FALSE + var/overwrite_cloud = FALSE + var/set_cloud = 0 + +/datum/nanite_program/viral/set_extra_setting(user, setting) + if(setting == "Program Overwrite") + var/overwrite_type = input("Choose what to do with the target's programs", name) as null|anything in list("Overwrite","Add To","Ignore") + if(!overwrite_type) + return + switch(overwrite_type) + if("Ignore") //Do not affect programs (if you only want to set the cloud ID) + sync_programs = FALSE + sync_overwrite = FALSE + if("Add To") //Add to existing programs (so the target does not notice theirs are missing) + sync_programs = TRUE + sync_overwrite = FALSE + if("Overwrite") //Replace target's programs with the source + sync_programs = TRUE + sync_overwrite = TRUE + if(setting == "Cloud Overwrite") + var/overwrite_type = input("Choose what to do with the target's Cloud ID", name) as null|anything in list("Overwrite","Disable","Keep") + if(!overwrite_type) + return + switch(overwrite_type) + if("Keep") //Don't change the cloud ID + overwrite_cloud = FALSE + set_cloud = 0 + if("Disable") //Set the cloud ID to disabled + overwrite_cloud = TRUE + set_cloud = 0 + if("Overwrite") //Set the cloud ID to what we choose + var/new_cloud = input(user, "Choose the Cloud ID to set on infected nanites (1-100)", name, null) as null|num + if(isnull(new_cloud)) + return + overwrite_cloud = TRUE + set_cloud = CLAMP(round(new_cloud, 1), 1, 100) + +/datum/nanite_program/viral/get_extra_setting(setting) + if(setting == "Program Overwrite") + if(!sync_programs) + return "Ignore" + else if(sync_overwrite) + return "Overwrite" + else + return "Add To" + if(setting == "Cloud Overwrite") + if(!overwrite_cloud) + return "None" + else if(set_cloud == 0) + return "Disable" + else + return set_cloud + +/datum/nanite_program/viral/copy_extra_settings_to(datum/nanite_program/viral/target) + target.overwrite_cloud = overwrite_cloud + target.set_cloud = set_cloud + target.sync_programs = sync_programs + target.sync_overwrite = sync_overwrite + +/datum/nanite_program/viral/active_effect() + for(var/mob/M in orange(host_mob, 5)) + if(prob(5)) + if(sync_programs) + SEND_SIGNAL(M, COMSIG_NANITE_SYNC, nanites, sync_overwrite) + if(overwrite_cloud) + SEND_SIGNAL(M, COMSIG_NANITE_SET_CLOUD, set_cloud) + +/datum/nanite_program/monitoring + name = "Monitoring" + desc = "The nanites monitor the host's vitals and location, sending them to the suit sensor network." + rogue_types = list(/datum/nanite_program/toxic) + +/datum/nanite_program/monitoring/enable_passive_effect() + . = ..() + SSnanites.nanite_monitored_mobs |= host_mob + host_mob.hud_set_nanite_indicator() + +/datum/nanite_program/monitoring/disable_passive_effect() + . = ..() + SSnanites.nanite_monitored_mobs -= host_mob + host_mob.hud_set_nanite_indicator() + +/datum/nanite_program/triggered/self_scan + name = "Host Scan" + desc = "The nanites display a detailed readout of a body scan to the host." + unique = FALSE + trigger_cost = 3 + trigger_cooldown = 50 + rogue_types = list(/datum/nanite_program/toxic) + + extra_settings = list("Scan Type") + var/scan_type = "Medical" + +/datum/nanite_program/triggered/self_scan/set_extra_setting(user, setting) + if(setting == "Scan Type") + var/list/scan_types = list("Medical","Chemical","Nanite") + var/new_scan_type = input("Choose the scan type", name) as null|anything in scan_types + if(!new_scan_type) + return + scan_type = new_scan_type + +/datum/nanite_program/triggered/self_scan/get_extra_setting(setting) + if(setting == "Scan Type") + return scan_type + +/datum/nanite_program/triggered/self_scan/copy_extra_settings_to(datum/nanite_program/triggered/self_scan/target) + target.scan_type = scan_type + +/datum/nanite_program/triggered/self_scan/trigger() + if(!..()) + return + if(host_mob.stat == DEAD) + return + switch(scan_type) + if("Medical") + healthscan(host_mob, host_mob) + if("Chemical") + chemscan(host_mob, host_mob) + if("Nanite") + SEND_SIGNAL(host_mob, COMSIG_NANITE_SCAN, host_mob, TRUE) + +/datum/nanite_program/stealth + name = "Stealth" + desc = "The nanites hide their activity and programming from superficial scans." + rogue_types = list(/datum/nanite_program/toxic) + use_rate = 0.2 + +/datum/nanite_program/stealth/enable_passive_effect() + . = ..() + nanites.stealth = TRUE + +/datum/nanite_program/stealth/disable_passive_effect() + . = ..() + nanites.stealth = FALSE + +/datum/nanite_program/relay + name = "Relay" + desc = "The nanites receive and relay long-range nanite signals." + rogue_types = list(/datum/nanite_program/toxic) + + extra_settings = list("Relay Channel") + var/relay_channel = 1 + +/datum/nanite_program/relay/set_extra_setting(user, setting) + if(setting == "Relay Channel") + var/new_channel = input(user, "Set the relay channel (1-9999):", name, null) as null|num + if(isnull(new_channel)) + return + relay_channel = CLAMP(round(new_channel, 1), 1, 9999) + +/datum/nanite_program/relay/get_extra_setting(setting) + if(setting == "Relay Channel") + return relay_channel + +/datum/nanite_program/relay/copy_extra_settings_to(datum/nanite_program/relay/target) + target.relay_channel = relay_channel + +/datum/nanite_program/relay/enable_passive_effect() + . = ..() + SSnanites.nanite_relays |= src + +/datum/nanite_program/relay/disable_passive_effect() + . = ..() + SSnanites.nanite_relays -= src + +/datum/nanite_program/relay/proc/relay_signal(code, relay_code, source) + if(!activated) + return + if(!host_mob) + return + if(relay_code != relay_channel) + return + SEND_SIGNAL(host_mob, COMSIG_NANITE_SIGNAL, code, source) + +/datum/nanite_program/metabolic_synthesis + name = "Metabolic Synthesis" + desc = "The nanites use the metabolic cycle of the host to speed up their replication rate, using their extra nutrition as fuel." + use_rate = -0.5 //generates nanites + rogue_types = list(/datum/nanite_program/toxic) + +/datum/nanite_program/metabolic_synthesis/check_conditions() + if(!iscarbon(host_mob)) + return FALSE + var/mob/living/carbon/C = host_mob + if(C.nutrition <= NUTRITION_LEVEL_WELL_FED) + return FALSE + return ..() + +/datum/nanite_program/metabolic_synthesis/active_effect() + host_mob.nutrition -= 0.5 + +/datum/nanite_program/triggered/access + name = "Subdermal ID" + desc = "The nanites store the host's ID access rights in a subdermal magnetic strip. Updates when triggered, copying the host's current access." + rogue_types = list(/datum/nanite_program/skin_decay) + var/access = list() + +//Syncs the nanites with the cumulative current mob's access level. Can potentially wipe existing access. +/datum/nanite_program/triggered/access/trigger() + var/list/new_access = list() + var/obj/item/current_item + current_item = host_mob.get_active_held_item() + if(current_item) + new_access += current_item.GetAccess() + current_item = host_mob.get_inactive_held_item() + if(current_item) + new_access += current_item.GetAccess() + if(ishuman(host_mob)) + var/mob/living/carbon/human/H = host_mob + current_item = H.wear_id + if(current_item) + new_access += current_item.GetAccess() + else if(isanimal(host_mob)) + var/mob/living/simple_animal/A = host_mob + current_item = A.access_card + if(current_item) + new_access += current_item.GetAccess() + access = new_access + +/datum/nanite_program/spreading + name = "Infective Exo-Locomotion" + desc = "The nanites gain the ability to survive for brief periods outside of the human body, as well as the ability to start new colonies without an integration process; \ + resulting in an extremely infective strain of nanites." + use_rate = 1.50 + rogue_types = list(/datum/nanite_program/aggressive_replication, /datum/nanite_program/necrotic) + +/datum/nanite_program/spreading/active_effect() + if(prob(10)) + var/list/mob/living/target_hosts = list() + for(var/mob/living/L in oview(5, host_mob)) + target_hosts += L + var/mob/living/infectee = pick(target_hosts) + if(prob(100 - (infectee.get_permeability_protection() * 100))) + //this will potentially take over existing nanites! + infectee.AddComponent(/datum/component/nanites, 10) + SEND_SIGNAL(infectee, COMSIG_NANITE_SYNC, nanites) + infectee.investigate_log("[key_name(infectee)] was infected by spreading nanites by [key_name(host_mob)]", INVESTIGATE_NANITES) + +/datum/nanite_program/mitosis + name = "Mitosis" + desc = "The nanites gain the ability to self-replicate, using bluespace to power the process, instead of drawing from a template. This rapidly speeds up the replication rate,\ + but it causes occasional software errors due to faulty copies. Not compatible with cloud sync." + use_rate = 0 + rogue_types = list(/datum/nanite_program/toxic) + +/datum/nanite_program/mitosis/active_effect() + if(nanites.cloud_id) + return + var/rep_rate = round(nanites.nanite_volume / 50, 1) //0.5 per 50 nanite volume + rep_rate *= 0.5 + nanites.adjust_nanites(rep_rate) + if(prob(rep_rate)) + var/datum/nanite_program/fault = pick(nanites.programs) + if(fault == src) + return + fault.software_error() \ No newline at end of file diff --git a/code/modules/research/nanites/nanite_programs/weapon.dm b/code/modules/research/nanites/nanite_programs/weapon.dm new file mode 100644 index 0000000000..f4914d4af0 --- /dev/null +++ b/code/modules/research/nanites/nanite_programs/weapon.dm @@ -0,0 +1,200 @@ +//Programs specifically engineered to cause harm to either the user or its surroundings (as opposed to ones that only do it due to broken programming) +//Very dangerous! + +/datum/nanite_program/flesh_eating + name = "Cellular Breakdown" + desc = "The nanites destroy cellular structures in the host's body, causing brute damage." + use_rate = 1.5 + rogue_types = list(/datum/nanite_program/necrotic) + +/datum/nanite_program/flesh_eating/active_effect() + if(iscarbon(host_mob)) + var/mob/living/carbon/C = host_mob + C.take_bodypart_damage(1, 0, 0) + else + host_mob.adjustBruteLoss(1, TRUE) + if(prob(3)) + to_chat(host_mob, "You feel a stab of pain from somewhere inside you.") + +/datum/nanite_program/poison + name = "Poisoning" + desc = "The nanites deliver poisonous chemicals to the host's internal organs, causing toxin damage and vomiting." + use_rate = 1.5 + rogue_types = list(/datum/nanite_program/toxic) + +/datum/nanite_program/poison/active_effect() + host_mob.adjustToxLoss(1) + if(prob(2)) + to_chat(host_mob, "You feel nauseous.") + if(iscarbon(host_mob)) + var/mob/living/carbon/C = host_mob + C.vomit(20) + +/datum/nanite_program/memory_leak + name = "Memory Leak" + desc = "This program invades the memory space used by other programs, causing frequent corruptions and errors." + use_rate = 0 + rogue_types = list(/datum/nanite_program/toxic) + +/datum/nanite_program/memory_leak/active_effect() + if(prob(6)) + var/datum/nanite_program/target = pick(nanites.programs) + if(target == src) + return + target.software_error() + +/datum/nanite_program/aggressive_replication + name = "Aggressive Replication" + desc = "Nanites will consume organic matter to improve their replication rate, damaging the host. The efficiency increases with the volume of nanites, requiring 200 to break even." + use_rate = 1 + rogue_types = list(/datum/nanite_program/necrotic) + +/datum/nanite_program/aggressive_replication/active_effect() + var/extra_regen = round(nanites.nanite_volume / 200, 0.1) + nanites.adjust_nanites(extra_regen) + host_mob.adjustBruteLoss(extra_regen / 2, TRUE) + +/datum/nanite_program/meltdown + name = "Meltdown" + desc = "Causes an internal meltdown inside the nanites, causing internal burns inside the host as well as rapidly destroying the nanite population.\ + Sets the nanites' safety threshold to 0 when activated." + use_rate = 10 + rogue_types = list(/datum/nanite_program/glitch) + +/datum/nanite_program/meltdown/active_effect() + host_mob.adjustFireLoss(3.5) + +/datum/nanite_program/meltdown/enable_passive_effect() + . = ..() + to_chat(host_mob, "Your blood is burning!") + nanites.safety_threshold = 0 + +/datum/nanite_program/meltdown/disable_passive_effect() + . = ..() + to_chat(host_mob, "Your blood cools down, and the pain gradually fades.") + +/datum/nanite_program/triggered/explosive + name = "Chain Detonation" + desc = "Detonates all the nanites inside the host in a chain reaction when triggered." + trigger_cost = 25 //plus every idle nanite left afterwards + trigger_cooldown = 100 //Just to avoid double-triggering + rogue_types = list(/datum/nanite_program/toxic) + +/datum/nanite_program/triggered/explosive/trigger() + if(!..()) + return + host_mob.visible_message("[host_mob] starts emitting a high-pitched buzzing, and [host_mob.p_their()] skin begins to glow...",\ + "You start emitting a high-pitched buzzing, and your skin begins to glow...") + addtimer(CALLBACK(src, .proc/boom), CLAMP((nanites.nanite_volume * 0.35), 25, 150)) + +/datum/nanite_program/triggered/explosive/proc/boom() + var/nanite_amount = nanites.nanite_volume + var/dev_range = FLOOR(nanite_amount/200, 1) - 1 + var/heavy_range = FLOOR(nanite_amount/100, 1) - 1 + var/light_range = FLOOR(nanite_amount/50, 1) - 1 + explosion(host_mob, dev_range, heavy_range, light_range) + qdel(nanites) + +//TODO make it defuse if triggered again + +/datum/nanite_program/triggered/heart_stop + name = "Heart-Stopper" + desc = "Stops the host's heart when triggered; restarts it if triggered again." + trigger_cost = 12 + trigger_cooldown = 10 + rogue_types = list(/datum/nanite_program/nerve_decay) + +/datum/nanite_program/triggered/heart_stop/trigger() + if(!..()) + return + if(iscarbon(host_mob)) + var/mob/living/carbon/C = host_mob + var/obj/item/organ/heart/heart = C.getorganslot(ORGAN_SLOT_HEART) + if(heart) + if(heart.beating) + heart.Stop() + else + heart.Restart() + +/datum/nanite_program/triggered/emp + name = "Electromagnetic Resonance" + desc = "The nanites cause an elctromagnetic pulse around the host when triggered. Will corrupt other nanite programs!" + trigger_cost = 10 + program_flags = NANITE_EMP_IMMUNE + rogue_types = list(/datum/nanite_program/toxic) + +/datum/nanite_program/triggered/emp/trigger() + if(!..()) + return + empulse(host_mob, 1, 2) + +/datum/nanite_program/pyro/active_effect() + host_mob.fire_stacks += 1 + host_mob.IgniteMob() + +/datum/nanite_program/pyro + name = "Sub-Dermal Combustion" + desc = "The nanites cause buildup of flammable fluids under the host's skin, then ignites them." + use_rate = 4 + rogue_types = list(/datum/nanite_program/skin_decay, /datum/nanite_program/cryo) + +/datum/nanite_program/pyro/check_conditions() + if(host_mob.fire_stacks >= 10 && host_mob.on_fire) + return FALSE + return ..() + +/datum/nanite_program/pyro/active_effect() + host_mob.fire_stacks += 1 + host_mob.IgniteMob() + +/datum/nanite_program/cryo + name = "Cryogenic Treatment" + desc = "The nanites rapidly skin heat through the host's skin, lowering their temperature." + use_rate = 1 + rogue_types = list(/datum/nanite_program/skin_decay, /datum/nanite_program/pyro) + +/datum/nanite_program/cryo/check_conditions() + if(host_mob.bodytemperature <= 70) + return FALSE + return ..() + +/datum/nanite_program/cryo/active_effect() + host_mob.adjust_bodytemperature(-rand(15,25), 50) + +/datum/nanite_program/mind_control + name = "Mind Control" + desc = "The nanites imprint an absolute directive onto the host's brain while they're active." + use_rate = 3 + rogue_types = list(/datum/nanite_program/brain_decay, /datum/nanite_program/brain_misfire) + + extra_settings = list("Directive") + var/cooldown = 0 //avoids spam when nanites are running low + var/directive = "..." + +/datum/nanite_program/mind_control/set_extra_setting(user, setting) + if(setting == "Directive") + var/new_directive = stripped_input(user, "Choose the directive to imprint with mind control.", "Directive", directive, MAX_MESSAGE_LEN) + if(!new_directive) + return + directive = new_directive + +/datum/nanite_program/mind_control/get_extra_setting(setting) + if(setting == "Directive") + return directive + +/datum/nanite_program/mind_control/copy_extra_settings_to(datum/nanite_program/mind_control/target) + target.directive = directive + +/datum/nanite_program/mind_control/enable_passive_effect() + if(world.time < cooldown) + return + . = ..() + brainwash(host_mob, directive) + log_game("A mind control nanite program brainwashed [key_name(host_mob)] with the objective '[directive]'.") + +/datum/nanite_program/mind_control/disable_passive_effect() + . = ..() + if(host_mob.mind && host_mob.mind.has_antag_datum(/datum/antagonist/brainwashed)) + host_mob.mind.remove_antag_datum(/datum/antagonist/brainwashed) + log_game("[key_name(host_mob)] is no longer brainwashed by nanites.") + cooldown = world.time + 450 \ No newline at end of file diff --git a/code/modules/research/nanites/nanite_remote.dm b/code/modules/research/nanites/nanite_remote.dm new file mode 100644 index 0000000000..60dd78cf94 --- /dev/null +++ b/code/modules/research/nanites/nanite_remote.dm @@ -0,0 +1,172 @@ +#define REMOTE_MODE_OFF "Off" +#define REMOTE_MODE_SELF "Local" +#define REMOTE_MODE_TARGET "Targeted" +#define REMOTE_MODE_AOE "Area" +#define REMOTE_MODE_RELAY "Relay" + +/obj/item/nanite_remote + name = "nanite remote control" + desc = "A device that can remotely control active nanites through wireless signals." + w_class = WEIGHT_CLASS_SMALL + req_access = list(ACCESS_ROBOTICS) + icon = 'icons/obj/device.dmi' + icon_state = "nanite_remote" + item_flags = NOBLUDGEON + var/locked = FALSE //Can be locked, so it can be given to users with a set code and mode + var/mode = REMOTE_MODE_OFF + var/list/saved_settings = list() + var/last_id = 0 + var/code = 0 + var/relay_code = 0 + +/obj/item/nanite_remote/examine(mob/user) + . = ..() + if(locked) + to_chat(user, "Alt-click to unlock.") + +/obj/item/nanite_remote/AltClick(mob/user) + . = ..() + if(!user.canUseTopic(src, BE_CLOSE)) + return + if(locked) + if(allowed(user)) + to_chat(user, "You unlock [src].") + locked = FALSE + update_icon() + else + to_chat(user, "Access denied.") + +/obj/item/nanite_remote/emag_act(mob/user) + if(obj_flags & EMAGGED) + return + to_chat(user, "You override [src]'s ID lock.") + obj_flags |= EMAGGED + if(locked) + locked = FALSE + update_icon() + +/obj/item/nanite_remote/update_icon() + . = ..() + cut_overlays() + if(obj_flags & EMAGGED) + add_overlay("nanite_remote_emagged") + if(locked) + add_overlay("nanite_remote_locked") + +/obj/item/nanite_remote/afterattack(atom/target, mob/user, etc) + switch(mode) + if(REMOTE_MODE_OFF) + return + if(REMOTE_MODE_SELF) + to_chat(user, "You activate [src], signaling the nanites in your bloodstream.") + signal_mob(user, code, key_name(user)) + if(REMOTE_MODE_TARGET) + if(isliving(target) && (get_dist(target, get_turf(src)) <= 7)) + to_chat(user, "You activate [src], signaling the nanites inside [target].") + signal_mob(target, code, key_name(user)) + if(REMOTE_MODE_AOE) + to_chat(user, "You activate [src], signaling the nanites inside every host around you.") + for(var/mob/living/L in view(user, 7)) + signal_mob(L, code, key_name(user)) + if(REMOTE_MODE_RELAY) + to_chat(user, "You activate [src], signaling all connected relay nanites.") + signal_relay(code, relay_code, key_name(user)) + +/obj/item/nanite_remote/proc/signal_mob(mob/living/M, code, source) + SEND_SIGNAL(M, COMSIG_NANITE_SIGNAL, code, source) + +/obj/item/nanite_remote/proc/signal_relay(code, relay_code, source) + for(var/X in SSnanites.nanite_relays) + var/datum/nanite_program/relay/N = X + N.relay_signal(code, relay_code, source) + +/obj/item/nanite_remote/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state) + SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "nanite_remote", name, 420, 800, master_ui, state) + ui.open() + +/obj/item/nanite_remote/ui_data() + var/list/data = list() + data["code"] = code + data["relay_code"] = relay_code + data["mode"] = mode + data["locked"] = locked + data["saved_settings"] = saved_settings + + return data + +/obj/item/nanite_remote/ui_act(action, params) + if(..()) + return + switch(action) + if("set_code") + if(locked) + return + var/new_code = input("Set code (0000-9999):", name, code) as null|num + if(!isnull(new_code)) + new_code = CLAMP(round(new_code, 1),0,9999) + code = new_code + . = TRUE + if("set_relay_code") + if(locked) + return + var/new_code = input("Set relay code (0000-9999):", name, code) as null|num + if(!isnull(new_code)) + new_code = CLAMP(round(new_code, 1),0,9999) + relay_code = new_code + . = TRUE + if("save") + if(locked) + return + var/code_name = stripped_input(usr, "Set the setting name", "Set Name", null , 15) + if(!code_name) + return + var/new_save = list() + new_save["id"] = last_id + 1 + last_id++ + new_save["name"] = code_name + new_save["code"] = code + new_save["mode"] = mode + new_save["relay_code"] = relay_code + + saved_settings += list(new_save) + . = TRUE + if("load") + var/code_id = params["save_id"] + var/list/setting + for(var/list/X in saved_settings) + if(X["id"] == text2num(code_id)) + setting = X + break + if(setting) + code = setting["code"] + mode = setting["mode"] + relay_code = setting["relay_code"] + . = TRUE + if("remove_save") + if(locked) + return + var/code_id = params["save_id"] + for(var/list/setting in saved_settings) + if(setting["id"] == text2num(code_id)) + saved_settings -= list(setting) + break + . = TRUE + if("select_mode") + if(locked) + return + mode = params["mode"] + . = TRUE + if("lock") + if(!(obj_flags & EMAGGED)) + locked = TRUE + update_icon() + . = TRUE + + +#undef REMOTE_MODE_OFF +#undef REMOTE_MODE_SELF +#undef REMOTE_MODE_TARGET +#undef REMOTE_MODE_AOE +#undef REMOTE_MODE_RELAY \ No newline at end of file diff --git a/code/modules/research/nanites/program_disks.dm b/code/modules/research/nanites/program_disks.dm new file mode 100644 index 0000000000..86b7803fc9 --- /dev/null +++ b/code/modules/research/nanites/program_disks.dm @@ -0,0 +1,133 @@ +//Names are intentionally all the same - track your nanites, or use a hand labeler +//This also means that you can give flesh melting nanites to your victims if you feel like it + +/obj/item/disk/nanite_program + name = "nanite program disk" + desc = "A disk capable of storing nanite programs. Can be customized using a Nanite Programming Console." + var/program_type + var/datum/nanite_program/program + +/obj/item/disk/nanite_program/Initialize() + . = ..() + if(program_type) + program = new program_type + +/obj/item/disk/nanite_program/aggressive_replication + program_type = /datum/nanite_program/aggressive_replication + +/obj/item/disk/nanite_program/metabolic_synthesis + program_type = /datum/nanite_program/metabolic_synthesis + +/obj/item/disk/nanite_program/viral + program_type = /datum/nanite_program/viral + +/obj/item/disk/nanite_program/meltdown + program_type = /datum/nanite_program/meltdown + +/obj/item/disk/nanite_program/monitoring + program_type = /datum/nanite_program/monitoring + +/obj/item/disk/nanite_program/relay + program_type = /datum/nanite_program/relay + +/obj/item/disk/nanite_program/emp + program_type = /datum/nanite_program/triggered/emp + +/obj/item/disk/nanite_program/spreading + program_type = /datum/nanite_program/spreading + +/obj/item/disk/nanite_program/regenerative + program_type = /datum/nanite_program/regenerative + +/obj/item/disk/nanite_program/regenerative_advanced + program_type = /datum/nanite_program/regenerative_advanced + +/obj/item/disk/nanite_program/temperature + program_type = /datum/nanite_program/temperature + +/obj/item/disk/nanite_program/purging + program_type = /datum/nanite_program/purging + +/obj/item/disk/nanite_program/purging_advanced + program_type = /datum/nanite_program/purging_advanced + +/obj/item/disk/nanite_program/brain_heal + program_type = /datum/nanite_program/brain_heal + +/obj/item/disk/nanite_program/brain_heal_advanced + program_type = /datum/nanite_program/brain_heal_advanced + +/obj/item/disk/nanite_program/blood_restoring + program_type = /datum/nanite_program/blood_restoring + +/obj/item/disk/nanite_program/repairing + program_type = /datum/nanite_program/repairing + +/obj/item/disk/nanite_program/nervous + program_type = /datum/nanite_program/nervous + +/obj/item/disk/nanite_program/hardening + program_type = /datum/nanite_program/hardening + +/obj/item/disk/nanite_program/coagulating + program_type = /datum/nanite_program/coagulating + +/obj/item/disk/nanite_program/necrotic + program_type = /datum/nanite_program/necrotic + +/obj/item/disk/nanite_program/brain_decay + program_type = /datum/nanite_program/brain_decay + +/obj/item/disk/nanite_program/pyro + program_type = /datum/nanite_program/pyro + +/obj/item/disk/nanite_program/cryo + program_type = /datum/nanite_program/cryo + +/obj/item/disk/nanite_program/toxic + program_type = /datum/nanite_program/toxic + +/obj/item/disk/nanite_program/suffocating + program_type = /datum/nanite_program/suffocating + +/obj/item/disk/nanite_program/heart_stop + program_type = /datum/nanite_program/triggered/heart_stop + +/obj/item/disk/nanite_program/explosive + program_type = /datum/nanite_program/triggered/explosive + +/obj/item/disk/nanite_program/shock + program_type = /datum/nanite_program/triggered/shocking + +/obj/item/disk/nanite_program/sleepy + program_type = /datum/nanite_program/triggered/sleepy + +/obj/item/disk/nanite_program/paralyzing + program_type = /datum/nanite_program/paralyzing + +/obj/item/disk/nanite_program/fake_death + program_type = /datum/nanite_program/fake_death + +/obj/item/disk/nanite_program/pacifying + program_type = /datum/nanite_program/pacifying + +/obj/item/disk/nanite_program/glitch + program_type = /datum/nanite_program/glitch + +/obj/item/disk/nanite_program/brain_misfire + program_type = /datum/nanite_program/pacifying + +/obj/item/disk/nanite_program/skin_decay + program_type = /datum/nanite_program/pacifying + +/obj/item/disk/nanite_program/nerve_decay + program_type = /datum/nanite_program/pacifying + +/obj/item/disk/nanite_program/refractive + program_type = /datum/nanite_program/refractive + +/obj/item/disk/nanite_program/conductive + program_type = /datum/nanite_program/pacifying + +/obj/item/disk/nanite_program/stun + program_type = /datum/nanite_program/triggered/stun \ No newline at end of file diff --git a/code/modules/research/nanites/public_chamber.dm b/code/modules/research/nanites/public_chamber.dm new file mode 100644 index 0000000000..9630e6d1c8 --- /dev/null +++ b/code/modules/research/nanites/public_chamber.dm @@ -0,0 +1,174 @@ +/obj/machinery/public_nanite_chamber + name = "public nanite chamber" + desc = "A device that can rapidly implant cloud-synced nanites without an external operator." + circuit = /obj/item/circuitboard/machine/public_nanite_chamber + icon = 'icons/obj/machines/nanite_chamber.dmi' + icon_state = "nanite_chamber" + use_power = IDLE_POWER_USE + anchored = TRUE + density = TRUE + idle_power_usage = 50 + active_power_usage = 300 + occupant_typecache = list(/mob/living) + + var/cloud_id = 1 + var/locked = FALSE + var/breakout_time = 1200 + var/busy = FALSE + var/busy_icon_state + var/message_cooldown = 0 + +/obj/machinery/public_nanite_chamber/RefreshParts() + var/obj/item/circuitboard/machine/public_nanite_chamber/board = circuit + if(board) + cloud_id = board.cloud_id + +/obj/machinery/public_nanite_chamber/proc/set_busy(status, working_icon) + busy = status + busy_icon_state = working_icon + update_icon() + +/obj/machinery/public_nanite_chamber/proc/inject_nanites() + if(stat & (NOPOWER|BROKEN)) + return + if((stat & MAINT) || panel_open) + return + if(!occupant || busy) + return + + var/locked_state = locked + locked = TRUE + + //TODO OMINOUS MACHINE SOUNDS + set_busy(TRUE, "[initial(icon_state)]_raising") + addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_active"),20) + addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_falling"),60) + addtimer(CALLBACK(src, .proc/complete_injection, locked_state),80) + +/obj/machinery/public_nanite_chamber/proc/complete_injection(locked_state) + //TODO MACHINE DING + locked = locked_state + set_busy(FALSE) + if(!occupant) + return + occupant.AddComponent(/datum/component/nanites, 75, cloud_id) + +/obj/machinery/public_nanite_chamber/update_icon() + cut_overlays() + + if((stat & MAINT) || panel_open) + add_overlay("maint") + + else if(!(stat & (NOPOWER|BROKEN))) + if(busy || locked) + add_overlay("red") + if(locked) + add_overlay("bolted") + else + add_overlay("green") + + + + //running and someone in there + if(occupant) + if(busy) + icon_state = busy_icon_state + else + icon_state = initial(icon_state)+ "_occupied" + return + + //running + icon_state = initial(icon_state)+ (state_open ? "_open" : "") + +/obj/machinery/public_nanite_chamber/power_change() + . = ..() + update_icon() + +/obj/machinery/public_nanite_chamber/proc/toggle_open(mob/user) + if(panel_open) + to_chat(user, "Close the maintenance panel first.") + return + + if(state_open) + close_machine() + return + + else if(locked) + to_chat(user, "The bolts are locked down, securing the door shut.") + return + + open_machine() + +/obj/machinery/public_nanite_chamber/container_resist(mob/living/user) + if(!locked) + open_machine() + return + if(busy) + return + user.changeNext_move(CLICK_CD_BREAKOUT) + user.last_special = world.time + CLICK_CD_BREAKOUT + user.visible_message("You see [user] kicking against the door of [src]!", \ + "You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)", \ + "You hear a metallic creaking from [src].") + if(do_after(user,(breakout_time), target = src)) + if(!user || user.stat != CONSCIOUS || user.loc != src || state_open || !locked || busy) + return + locked = FALSE + user.visible_message("[user] successfully broke out of [src]!", \ + "You successfully break out of [src]!") + open_machine() + +/obj/machinery/public_nanite_chamber/close_machine(mob/living/carbon/user) + if(!state_open) + return FALSE + + ..() + + . = TRUE + + addtimer(CALLBACK(src, .proc/try_inject_nanites), 30) //If someone is shoved in give them a chance to get out before the injection starts + +/obj/machinery/public_nanite_chamber/proc/try_inject_nanites() + if(occupant) + var/mob/living/L = occupant + if(SEND_SIGNAL(L, COMSIG_HAS_NANITES)) + return + if((MOB_ORGANIC in L.mob_biotypes) || (MOB_UNDEAD in L.mob_biotypes)) + inject_nanites() + +/obj/machinery/public_nanite_chamber/open_machine() + if(state_open) + return FALSE + + ..() + + return TRUE + +/obj/machinery/public_nanite_chamber/relaymove(mob/user as mob) + if(user.stat || locked) + if(message_cooldown <= world.time) + message_cooldown = world.time + 50 + to_chat(user, "[src]'s door won't budge!") + return + open_machine() + +/obj/machinery/public_nanite_chamber/attackby(obj/item/I, mob/user, params) + if(!occupant && default_deconstruction_screwdriver(user, icon_state, icon_state, I))//sent icon_state is irrelevant... + update_icon()//..since we're updating the icon here, since the scanner can be unpowered when opened/closed + return + + if(default_pry_open(I)) + return + + if(default_deconstruction_crowbar(I)) + return + + return ..() + +/obj/machinery/public_nanite_chamber/interact(mob/user) + toggle_open(user) + +/obj/machinery/public_nanite_chamber/MouseDrop_T(mob/target, mob/user) + if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser()) + return + close_machine(target) \ No newline at end of file diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 2866ea553a..e5c29b366b 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -832,6 +832,91 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 +/////////////////////////Nanites///////////////////////// +/datum/techweb_node/nanite_base + id = "nanite_base" + display_name = "Basic Nanite Programming" + description = "The basics of nanite construction and programming." + prereq_ids = list("datatheory","robotics") + design_ids = list("nanite_disk","nanite_remote","nanite_scanner",\ + "nanite_chamber","public_nanite_chamber","nanite_chamber_control","nanite_programmer","nanite_program_hub","nanite_cloud_control",\ + "relay_nanites", "monitoring_nanites", "access_nanites", "repairing_nanites","sensor_nanite_volume", "repeater_nanites", "relay_repeater_nanites") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) + export_price = 5000 + +/datum/techweb_node/nanite_smart + id = "nanite_smart" + display_name = "Smart Nanite Programming" + description = "Nanite programs that require nanites to perform complex actions, act independently, roam or seek targets." + prereq_ids = list("nanite_base","adv_robotics") + design_ids = list("purging_nanites", "metabolic_nanites", "stealth_nanites", "memleak_nanites","sensor_voice_nanites", "voice_nanites") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) + export_price = 4000 + +/datum/techweb_node/nanite_mesh + id = "nanite_mesh" + display_name = "Mesh Nanite Programming" + description = "Nanite programs that require static structures and membranes." + prereq_ids = list("nanite_base","engineering") + design_ids = list("hardening_nanites", "refractive_nanites", "cryo_nanites", "conductive_nanites", "shock_nanites", "emp_nanites", "temperature_nanites") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) + export_price = 5000 + +/datum/techweb_node/nanite_bio + id = "nanite_bio" + display_name = "Biological Nanite Programming" + description = "Nanite programs that require complex biological interaction." + prereq_ids = list("nanite_base","biotech") + design_ids = list("regenerative_nanites", "bloodheal_nanites", "coagulating_nanites","poison_nanites","flesheating_nanites",\ + "sensor_crit_nanites","sensor_death_nanites", "sensor_health_nanites", "sensor_damage_nanites") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) + export_price = 5000 + +/datum/techweb_node/nanite_neural + id = "nanite_neural" + display_name = "Neural Nanite Programming" + description = "Nanite programs affecting nerves and brain matter." + prereq_ids = list("nanite_bio") + design_ids = list("nervous_nanites", "brainheal_nanites", "paralyzing_nanites", "stun_nanites", "selfscan_nanites") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) + export_price = 5000 + +/datum/techweb_node/nanite_synaptic + id = "nanite_synaptic" + display_name = "Synaptic Nanite Programming" + description = "Nanite programs affecting mind and thoughts." + prereq_ids = list("nanite_neural","neural_programming") + design_ids = list("mindshield_nanites", "pacifying_nanites", "blinding_nanites", "sleep_nanites", "mute_nanites", "speech_nanites","hallucination_nanites") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) + export_price = 5000 + +/datum/techweb_node/nanite_harmonic + id = "nanite_harmonic" + display_name = "Harmonic Nanite Programming" + description = "Nanite programs that require seamless integration between nanites and biology." + prereq_ids = list("nanite_bio","nanite_smart","nanite_mesh") + design_ids = list("fakedeath_nanites","aggressive_nanites","defib_nanites","regenerative_plus_nanites","brainheal_plus_nanites","purging_plus_nanites","adrenaline_nanites") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 4000) + export_price = 8000 + +/datum/techweb_node/nanite_combat + id = "nanite_military" + display_name = "Military Nanite Programming" + description = "Nanite programs that perform military-grade functions." + prereq_ids = list("nanite_harmonic", "syndicate_basic") + design_ids = list("explosive_nanites","pyro_nanites","meltdown_nanites","viral_nanites") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 7500) + export_price = 12500 + +/datum/techweb_node/nanite_hazard + id = "nanite_hazard" + display_name = "Hazard Nanite Programs" + description = "Extremely advanced Nanite programs with the potential of being extremely dangerous." + prereq_ids = list("nanite_harmonic", "alientech") + design_ids = list("spreading_nanites","mindcontrol_nanites","mitosis_nanites") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000) + export_price = 15000 + ////////////////////////Alien technology//////////////////////// /datum/techweb_node/alientech //AYYYYYYYYLMAOO tech id = "alientech" diff --git a/code/modules/surgery/advanced/brainwashing.dm b/code/modules/surgery/advanced/brainwashing.dm index 03215aa6d6..eb40298a48 100644 --- a/code/modules/surgery/advanced/brainwashing.dm +++ b/code/modules/surgery/advanced/brainwashing.dm @@ -40,7 +40,7 @@ if(!target.mind) user.visible_message("[target] doesn't respond to the brainwashing, as if [target.p_they()] lacked a mind...") return FALSE - if(target.isloyal()) + if(target.has_trait(TRAIT_MINDSHIELD)) user.visible_message("You hear a faint buzzing from a device inside [target]'s brain, and the brainwashing is erased.") return FALSE user.visible_message("[user] successfully brainwashes [target]!", "You succeed in brainwashing [target].") diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 1c51682406c71b84affea945868272cb56e76007..1eedb6d2425417d486377439f144c213cc995846 100644 GIT binary patch literal 14784 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 tXw<3H1aP?Rjs?yU?7Snhe*)Nv#Ek#| literal 111737 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℞DmW)@poa4TgFm|e!$*z4~| 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 a9*x0Zm!&wR^D*o8gwk`>XXSFHA^#6E;{nD1 diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 4f43eae72fd27cc4cc86af6ab0239a79ebb979a4..5a37b6921966ab3cdf6ea00a626921b0a12c715f 100644 GIT binary patch delta 23095 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⪚fNjLW$9DWXkQCTl9S(!CX(qiKzk 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 F{}(x+=llQw literal 0 HcmV?d00001 diff --git a/icons/obj/machines/research.dmi b/icons/obj/machines/research.dmi index a150880d39531501461e19116b601aad7b4a1730..b756c77e20ff2746bad7ea74b5535f31ae64eabb 100644 GIT binary patch literal 28393 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≥Bdlc3=MxrF(@!#ct~DUT9+;b>%t6 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 r=this.tryEntries[a],i=r.completion;if("root"===r.tryLoc)return e("end");if(r.tryLoc<=this.prev){var o=b.call(r,"catchLoc"),s=b.call(r,"finallyLoc");if(o&&s){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&b.call(a,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),f(n),O}},"catch":function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var a=n.completion;if("throw"===a.type){var r=a.arg;f(n)}return r}}throw Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:h(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=g),O}}}("object"==typeof t?t:"object"==typeof window?window:"object"==typeof self?self:this)}).call(this,void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],3:[function(t,e,n){t(129),e.exports=t(24).RegExp.escape},{129:129,24:24}],4:[function(t,e,n){e.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},{}],5:[function(t,e,n){var a=t(19);e.exports=function(t,e){if("number"!=typeof t&&"Number"!=a(t))throw TypeError(e);return+t}},{19:19}],6:[function(t,e,n){var a=t(127)("unscopables"),r=Array.prototype;void 0==r[a]&&t(43)(r,a,{}),e.exports=function(t){r[a][t]=!0}},{127:127,43:43}],7:[function(t,e,n){e.exports=function(t,e,n,a){if(!(t instanceof e)||void 0!==a&&a in t)throw TypeError(n+": incorrect invocation!");return t}},{}],8:[function(t,e,n){var a=t(52);e.exports=function(t){if(!a(t))throw TypeError(t+" is not an object!");return t}},{52:52}],9:[function(t,e,n){"use strict";var a=t(117),r=t(112),i=t(116);e.exports=[].copyWithin||function(t,e){var n=a(this),o=i(n.length),s=r(t,o),p=r(e,o),u=arguments.length>2?arguments[2]:void 0,c=Math.min((void 0===u?o:r(u,o))-p,o-s),l=1;for(s>p&&p+c>s&&(l=-1,p+=c-1,s+=c-1);c-- >0;)p in n?n[s]=n[p]:delete n[s],s+=l,p+=l;return n}},{112:112,116:116,117:117}],10:[function(t,e,n){"use strict";var a=t(117),r=t(112),i=t(116);e.exports=function(t){for(var e=a(this),n=i(e.length),o=arguments.length,s=r(o>1?arguments[1]:void 0,n),p=o>2?arguments[2]:void 0,u=void 0===p?n:r(p,n);u>s;)e[s++]=t;return e}},{112:112,116:116,117:117}],11:[function(t,e,n){var a=t(40);e.exports=function(t,e){var n=[];return a(t,!1,n.push,n,e),n}},{40:40}],12:[function(t,e,n){var a=t(115),r=t(116),i=t(112);e.exports=function(t){return function(e,n,o){var s,p=a(e),u=r(p.length),c=i(o,u);if(t&&n!=n){for(;u>c;)if(s=p[c++],s!=s)return!0}else for(;u>c;c++)if((t||c in p)&&p[c]===n)return t||c||0;return!t&&-1}}},{112:112,115:115,116:116}],13:[function(t,e,n){var a=t(26),r=t(48),i=t(117),o=t(116),s=t(16);e.exports=function(t,e){var n=1==t,p=2==t,u=3==t,c=4==t,l=6==t,f=5==t||l,d=e||s;return function(e,s,h){for(var m,g,v=i(e),b=r(v),y=a(s,h,3),x=o(b.length),_=0,w=n?d(e,x):p?d(e,0):void 0;x>_;_++)if((f||_ in b)&&(m=b[_],g=y(m,_,v),t))if(n)w[_]=g;else if(g)switch(t){case 3:return!0;case 5:return m;case 6:return _;case 2:w.push(m)}else if(c)return!1;return l?-1:u||c?c:w}}},{116:116,117:117,16:16,26:26,48:48}],14:[function(t,e,n){var a=t(4),r=t(117),i=t(48),o=t(116);e.exports=function(t,e,n,s,p){a(e);var u=r(t),c=i(u),l=o(u.length),f=p?l-1:0,d=p?-1:1;if(2>n)for(;;){if(f in c){s=c[f],f+=d;break}if(f+=d,p?0>f:f>=l)throw TypeError("Reduce of empty array with no initial value")}for(;p?f>=0:l>f;f+=d)f in c&&(s=e(s,c[f],f,u));return s}},{116:116,117:117,4:4,48:48}],15:[function(t,e,n){var a=t(52),r=t(50),i=t(127)("species");e.exports=function(t){var e;return r(t)&&(e=t.constructor,"function"!=typeof e||e!==Array&&!r(e.prototype)||(e=void 0),a(e)&&(e=e[i],null===e&&(e=void 0))),void 0===e?Array:e}},{127:127,50:50,52:52}],16:[function(t,e,n){var a=t(15);e.exports=function(t,e){return new(a(t))(e)}},{15:15}],17:[function(t,e,n){"use strict";var a=t(4),r=t(52),i=t(47),o=[].slice,s={},p=function(t,e,n){if(!(e in s)){for(var a=[],r=0;e>r;r++)a[r]="a["+r+"]";s[e]=Function("F,a","return new F("+a.join(",")+")")}return s[e](t,n)};e.exports=Function.bind||function(t){var e=a(this),n=o.call(arguments,1),s=function(){var a=n.concat(o.call(arguments));return this instanceof s?p(e,a.length,a):i(e,a,t)};return r(e.prototype)&&(s.prototype=e.prototype),s}},{4:4,47:47,52:52}],18:[function(t,e,n){var a=t(19),r=t(127)("toStringTag"),i="Arguments"==a(function(){return arguments}()),o=function(t,e){try{return t[e]}catch(n){}};e.exports=function(t){var e,n,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=o(e=Object(t),r))?n:i?a(e):"Object"==(s=a(e))&&"function"==typeof e.callee?"Arguments":s}},{127:127,19:19}],19:[function(t,e,n){var a={}.toString;e.exports=function(t){return a.call(t).slice(8,-1)}},{}],20:[function(t,e,n){"use strict";var a=t(72).f,r=t(71),i=t(91),o=t(26),s=t(7),p=t(40),u=t(56),c=t(58),l=t(98),f=t(30),d=t(66).fastKey,h=t(124),m=f?"_s":"size",g=function(t,e){var n,a=d(e);if("F"!==a)return t._i[a];for(n=t._f;n;n=n.n)if(n.k==e)return n};e.exports={getConstructor:function(t,e,n,u){var c=t(function(t,a){s(t,c,e,"_i"),t._t=e,t._i=r(null),t._f=void 0,t._l=void 0,t[m]=0,void 0!=a&&p(a,n,t[u],t)});return i(c.prototype,{clear:function(){for(var t=h(this,e),n=t._i,a=t._f;a;a=a.n)a.r=!0,a.p&&(a.p=a.p.n=void 0),delete n[a.i];t._f=t._l=void 0,t[m]=0},"delete":function(t){var n=h(this,e),a=g(n,t);if(a){var r=a.n,i=a.p;delete n._i[a.i],a.r=!0,i&&(i.n=r),r&&(r.p=i),n._f==a&&(n._f=r),n._l==a&&(n._l=i),n[m]--}return!!a},forEach:function(t){h(this,e);for(var n,a=o(t,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(a(n.v,n.k,this);n&&n.r;)n=n.p},has:function(t){return!!g(h(this,e),t)}}),f&&a(c.prototype,"size",{get:function(){return h(this,e)[m]}}),c},def:function(t,e,n){var a,r,i=g(t,e);return i?i.v=n:(t._l=i={i:r=d(e,!0),k:e,v:n,p:a=t._l,n:void 0,r:!1},t._f||(t._f=i),a&&(a.n=i),t[m]++,"F"!==r&&(t._i[r]=i)),t},getEntry:g,setStrong:function(t,e,n){u(t,e,function(t,n){this._t=h(t,e),this._k=n,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?"keys"==e?c(0,n.k):"values"==e?c(0,n.v):c(0,[n.k,n.v]):(t._t=void 0,c(1))},n?"entries":"values",!n,!0),l(e)}}},{124:124,26:26,30:30,40:40,56:56,58:58,66:66,7:7,71:71,72:72,91:91,98:98}],21:[function(t,e,n){var a=t(18),r=t(11);e.exports=function(t){return function(){if(a(this)!=t)throw TypeError(t+"#toJSON isn't generic");return r(this)}}},{11:11,18:18}],22:[function(t,e,n){"use strict";var a=t(91),r=t(66).getWeak,i=t(8),o=t(52),s=t(7),p=t(40),u=t(13),c=t(42),l=t(124),f=u(5),d=u(6),h=0,m=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},v=function(t,e){return f(t.a,function(t){return t[0]===e})};g.prototype={get:function(t){var e=v(this,t);return e?e[1]:void 0},has:function(t){return!!v(this,t)},set:function(t,e){var n=v(this,t);n?n[1]=e:this.a.push([t,e])},"delete":function(t){var e=d(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},e.exports={getConstructor:function(t,e,n,i){var u=t(function(t,a){s(t,u,e,"_i"),t._t=e,t._i=h++,t._l=void 0,void 0!=a&&p(a,n,t[i],t)});return a(u.prototype,{"delete":function(t){if(!o(t))return!1;var n=r(t);return n===!0?m(l(this,e))["delete"](t):n&&c(n,this._i)&&delete n[this._i]},has:function(t){if(!o(t))return!1;var n=r(t);return n===!0?m(l(this,e)).has(t):n&&c(n,this._i)}}),u},def:function(t,e,n){var a=r(i(e),!0);return a===!0?m(t).set(e,n):a[t._i]=n,t},ufstore:m}},{124:124,13:13,40:40,42:42,52:52,66:66,7:7,8:8,91:91}],23:[function(t,e,n){"use strict";var a=t(41),r=t(34),i=t(92),o=t(91),s=t(66),p=t(40),u=t(7),c=t(52),l=t(36),f=t(57),d=t(99),h=t(46);e.exports=function(t,e,n,m,g,v){var b=a[t],y=b,x=g?"set":"add",_=y&&y.prototype,w={},k=function(t){var e=_[t];i(_,t,"delete"==t?function(t){return v&&!c(t)?!1:e.call(this,0===t?0:t)}:"has"==t?function(t){return v&&!c(t)?!1:e.call(this,0===t?0:t)}:"get"==t?function(t){return v&&!c(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof y&&(v||_.forEach&&!l(function(){(new y).entries().next()}))){var S=new y,E=S[x](v?{}:-0,1)!=S,C=l(function(){S.has(1)}),P=f(function(t){new y(t)}),A=!v&&l(function(){for(var t=new y,e=5;e--;)t[x](e,e);return!t.has(-0)});P||(y=e(function(e,n){u(e,y,t);var a=h(new b,e,y);return void 0!=n&&p(n,g,a[x],a),a}),y.prototype=_,_.constructor=y),(C||A)&&(k("delete"),k("has"),g&&k("get")),(A||E)&&k(x),v&&_.clear&&delete _.clear}else y=m.getConstructor(e,t,g,x),o(y.prototype,n),s.NEED=!0;return d(y,t),w[t]=y,r(r.G+r.W+r.F*(y!=b),w),v||m.setStrong(y,t,g),y}},{34:34,36:36,40:40,41:41,46:46,52:52,57:57,66:66,7:7,91:91,92:92,99:99}],24:[function(t,e,n){var a=e.exports={version:"2.5.6"};"number"==typeof __e&&(__e=a)},{}],25:[function(t,e,n){"use strict";var a=t(72),r=t(90);e.exports=function(t,e,n){e in t?a.f(t,e,r(0,n)):t[e]=n}},{72:72,90:90}],26:[function(t,e,n){var a=t(4);e.exports=function(t,e,n){if(a(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,a){return t.call(e,n,a)};case 3:return function(n,a,r){return t.call(e,n,a,r)}}return function(){return t.apply(e,arguments)}}},{4:4}],27:[function(t,e,n){"use strict";var a=t(36),r=Date.prototype.getTime,i=Date.prototype.toISOString,o=function(t){return t>9?t:"0"+t};e.exports=a(function(){return"0385-07-25T07:06:39.999Z"!=i.call(new Date(-5e13-1))})||!a(function(){i.call(new Date(NaN))})?function(){if(!isFinite(r.call(this)))throw RangeError("Invalid time value");var t=this,e=t.getUTCFullYear(),n=t.getUTCMilliseconds(),a=0>e?"-":e>9999?"+":"";return a+("00000"+Math.abs(e)).slice(a?-6:-4)+"-"+o(t.getUTCMonth()+1)+"-"+o(t.getUTCDate())+"T"+o(t.getUTCHours())+":"+o(t.getUTCMinutes())+":"+o(t.getUTCSeconds())+"."+(n>99?n:"0"+o(n))+"Z"}:i},{36:36}],28:[function(t,e,n){"use strict";var a=t(8),r=t(118),i="number";e.exports=function(t){if("string"!==t&&t!==i&&"default"!==t)throw TypeError("Incorrect hint");return r(a(this),t!=i)}},{118:118,8:8}],29:[function(t,e,n){e.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],30:[function(t,e,n){e.exports=!t(36)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{36:36}],31:[function(t,e,n){var a=t(52),r=t(41).document,i=a(r)&&a(r.createElement);e.exports=function(t){return i?r.createElement(t):{}}},{41:41,52:52}],32:[function(t,e,n){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],33:[function(t,e,n){var a=t(81),r=t(78),i=t(82);e.exports=function(t){var e=a(t),n=r.f;if(n)for(var o,s=n(t),p=i.f,u=0;s.length>u;)p.call(t,o=s[u++])&&e.push(o);return e}},{78:78,81:81,82:82}],34:[function(t,e,n){var a=t(41),r=t(24),i=t(43),o=t(92),s=t(26),p="prototype",u=function(t,e,n){var c,l,f,d,h=t&u.F,m=t&u.G,g=t&u.S,v=t&u.P,b=t&u.B,y=m?a:g?a[e]||(a[e]={}):(a[e]||{})[p],x=m?r:r[e]||(r[e]={}),_=x[p]||(x[p]={});m&&(n=e);for(c in n)l=!h&&y&&void 0!==y[c],f=(l?y:n)[c],d=b&&l?s(f,a):v&&"function"==typeof f?s(Function.call,f):f,y&&o(y,c,f,t&u.U),x[c]!=f&&i(x,c,d),v&&_[c]!=f&&(_[c]=f)};a.core=r,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,e.exports=u},{24:24,26:26,41:41,43:43,92:92}],35:[function(t,e,n){var a=t(127)("match");e.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[a]=!1,!"/./"[t](e)}catch(r){}}return!0}},{127:127}],36:[function(t,e,n){e.exports=function(t){try{return!!t()}catch(e){return!0}}},{}],37:[function(t,e,n){"use strict";var a=t(43),r=t(92),i=t(36),o=t(29),s=t(127);e.exports=function(t,e,n){var p=s(t),u=n(o,p,""[t]),c=u[0],l=u[1];i(function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})&&(r(String.prototype,t,c),a(RegExp.prototype,p,2==e?function(t,e){return l.call(t,this,e)}:function(t){return l.call(t,this)}))}},{127:127,29:29,36:36,43:43,92:92}],38:[function(t,e,n){"use strict";var a=t(8);e.exports=function(){var t=a(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},{8:8}],39:[function(t,e,n){"use strict";function a(t,e,n,u,c,l,f,d){for(var h,m,g=c,v=0,b=f?s(f,d,3):!1;u>v;){if(v in n){if(h=b?b(n[v],v,e):n[v],m=!1,i(h)&&(m=h[p],m=void 0!==m?!!m:r(h)),m&&l>0)g=a(t,e,h,o(h.length),g,l-1)-1;else{if(g>=9007199254740991)throw TypeError();t[g]=h}g++}v++}return g}var r=t(50),i=t(52),o=t(116),s=t(26),p=t(127)("isConcatSpreadable");e.exports=a},{116:116,127:127,26:26,50:50,52:52}],40:[function(t,e,n){var a=t(26),r=t(54),i=t(49),o=t(8),s=t(116),p=t(128),u={},c={},n=e.exports=function(t,e,n,l,f){var d,h,m,g,v=f?function(){return t}:p(t),b=a(n,l,e?2:1),y=0;if("function"!=typeof v)throw TypeError(t+" is not iterable!");if(i(v)){for(d=s(t.length);d>y;y++)if(g=e?b(o(h=t[y])[0],h[1]):b(t[y]),g===u||g===c)return g}else for(m=v.call(t);!(h=m.next()).done;)if(g=r(m,b,h.value,e),g===u||g===c)return g};n.BREAK=u,n.RETURN=c},{116:116,128:128,26:26,49:49,54:54,8:8}],41:[function(t,e,n){var a=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=a)},{}],42:[function(t,e,n){var a={}.hasOwnProperty;e.exports=function(t,e){return a.call(t,e)}},{}],43:[function(t,e,n){var a=t(72),r=t(90);e.exports=t(30)?function(t,e,n){return a.f(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},{30:30,72:72,90:90}],44:[function(t,e,n){var a=t(41).document;e.exports=a&&a.documentElement},{41:41}],45:[function(t,e,n){e.exports=!t(30)&&!t(36)(function(){return 7!=Object.defineProperty(t(31)("div"),"a",{get:function(){return 7}}).a})},{30:30,31:31,36:36}],46:[function(t,e,n){var a=t(52),r=t(97).set;e.exports=function(t,e,n){var i,o=e.constructor;return o!==n&&"function"==typeof o&&(i=o.prototype)!==n.prototype&&a(i)&&r&&r(t,i),t}},{52:52,97:97}],47:[function(t,e,n){e.exports=function(t,e,n){var a=void 0===n;switch(e.length){case 0:return a?t():t.call(n);case 1:return a?t(e[0]):t.call(n,e[0]);case 2:return a?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return a?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return a?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},{}],48:[function(t,e,n){var a=t(19);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==a(t)?t.split(""):Object(t)}},{19:19}],49:[function(t,e,n){var a=t(59),r=t(127)("iterator"),i=Array.prototype;e.exports=function(t){return void 0!==t&&(a.Array===t||i[r]===t)}},{127:127,59:59}],50:[function(t,e,n){var a=t(19);e.exports=Array.isArray||function(t){return"Array"==a(t)}},{19:19}],51:[function(t,e,n){var a=t(52),r=Math.floor;e.exports=function(t){return!a(t)&&isFinite(t)&&r(t)===t}},{52:52}],52:[function(t,e,n){e.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],53:[function(t,e,n){var a=t(52),r=t(19),i=t(127)("match");e.exports=function(t){var e;return a(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==r(t))}},{127:127,19:19,52:52}],54:[function(t,e,n){var a=t(8);e.exports=function(t,e,n,r){try{return r?e(a(n)[0],n[1]):e(n)}catch(i){var o=t["return"];throw void 0!==o&&a(o.call(t)),i}}},{8:8}],55:[function(t,e,n){"use strict";var a=t(71),r=t(90),i=t(99),o={};t(43)(o,t(127)("iterator"),function(){return this}),e.exports=function(t,e,n){t.prototype=a(o,{next:r(1,n)}),i(t,e+" Iterator")}},{127:127,43:43,71:71,90:90,99:99}],56:[function(t,e,n){"use strict";var a=t(60),r=t(34),i=t(92),o=t(43),s=t(59),p=t(55),u=t(99),c=t(79),l=t(127)("iterator"),f=!([].keys&&"next"in[].keys()),d="@@iterator",h="keys",m="values",g=function(){return this};e.exports=function(t,e,n,v,b,y,x){p(n,e,v);var _,w,k,S=function(t){if(!f&&t in A)return A[t];switch(t){case h:return function(){return new n(this,t)};case m:return function(){return new n(this,t)}}return function(){return new n(this,t)}},E=e+" Iterator",C=b==m,P=!1,A=t.prototype,O=A[l]||A[d]||b&&A[b],T=O||S(b),R=b?C?S("entries"):T:void 0,M="Array"==e?A.entries||O:O;if(M&&(k=c(M.call(new t)),k!==Object.prototype&&k.next&&(u(k,E,!0),a||"function"==typeof k[l]||o(k,l,g))),C&&O&&O.name!==m&&(P=!0,T=function(){return O.call(this)}),a&&!x||!f&&!P&&A[l]||o(A,l,T),s[e]=T,s[E]=g,b)if(_={values:C?T:S(m),keys:y?T:S(h),entries:R},x)for(w in _)w in A||i(A,w,_[w]);else r(r.P+r.F*(f||P),e,_);return _}},{127:127,34:34,43:43,55:55,59:59,60:60,79:79,92:92,99:99}],57:[function(t,e,n){var a=t(127)("iterator"),r=!1;try{var i=[7][a]();i["return"]=function(){r=!0},Array.from(i,function(){throw 2})}catch(o){}e.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i=[7],o=i[a]();o.next=function(){return{done:n=!0}},i[a]=function(){return o},t(i)}catch(s){}return n}},{127:127}],58:[function(t,e,n){e.exports=function(t,e){return{value:e,done:!!t}}},{}],59:[function(t,e,n){e.exports={}},{}],60:[function(t,e,n){e.exports=!1},{}],61:[function(t,e,n){var a=Math.expm1;e.exports=!a||a(10)>22025.465794806718||a(10)<22025.465794806718||-2e-17!=a(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&1e-6>t?t+t*t/2:Math.exp(t)-1}:a},{}],62:[function(t,e,n){var a=t(65),r=Math.pow,i=r(2,-52),o=r(2,-23),s=r(2,127)*(2-o),p=r(2,-126),u=function(t){return t+1/i-1/i};e.exports=Math.fround||function(t){var e,n,r=Math.abs(t),c=a(t);return p>r?c*u(r/p/o)*p*o:(e=(1+o/i)*r,n=e-(e-r),n>s||n!=n?c*(1/0):c*n)}},{65:65}],63:[function(t,e,n){e.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&1e-8>t?t-t*t/2:Math.log(1+t)}},{}],64:[function(t,e,n){e.exports=Math.scale||function(t,e,n,a,r){return 0===arguments.length||t!=t||e!=e||n!=n||a!=a||r!=r?NaN:t===1/0||t===-(1/0)?t:(t-e)*(r-a)/(n-e)+a}},{}],65:[function(t,e,n){e.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:0>t?-1:1}},{}],66:[function(t,e,n){var a=t(122)("meta"),r=t(52),i=t(42),o=t(72).f,s=0,p=Object.isExtensible||function(){return!0},u=!t(36)(function(){return p(Object.preventExtensions({}))}),c=function(t){o(t,a,{value:{i:"O"+ ++s,w:{}}})},l=function(t,e){if(!r(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,a)){if(!p(t))return"F";if(!e)return"E";c(t)}return t[a].i},f=function(t,e){if(!i(t,a)){if(!p(t))return!0;if(!e)return!1;c(t)}return t[a].w},d=function(t){return u&&h.NEED&&p(t)&&!i(t,a)&&c(t),t},h=e.exports={KEY:a,NEED:!1,fastKey:l,getWeak:f,onFreeze:d}},{122:122,36:36,42:42,52:52,72:72}],67:[function(t,e,n){var a=t(159),r=t(34),i=t(101)("metadata"),o=i.store||(i.store=new(t(265))),s=function(t,e,n){var r=o.get(t);if(!r){if(!n)return;o.set(t,r=new a)}var i=r.get(e);if(!i){if(!n)return;r.set(e,i=new a)}return i},p=function(t,e,n){var a=s(e,n,!1);return void 0===a?!1:a.has(t)},u=function(t,e,n){var a=s(e,n,!1);return void 0===a?void 0:a.get(t)},c=function(t,e,n,a){s(n,a,!0).set(t,e)},l=function(t,e){var n=s(t,e,!1),a=[];return n&&n.forEach(function(t,e){a.push(e)}),a},f=function(t){return void 0===t||"symbol"==typeof t?t:t+""},d=function(t){r(r.S,"Reflect",t)};e.exports={store:o,map:s,has:p,get:u,set:c,keys:l,key:f,exp:d}},{101:101,159:159,265:265,34:34}],68:[function(t,e,n){var a=t(41),r=t(111).set,i=a.MutationObserver||a.WebKitMutationObserver,o=a.process,s=a.Promise,p="process"==t(19)(o);e.exports=function(){var t,e,n,u=function(){var a,r;for(p&&(a=o.domain)&&a.exit();t;){r=t.fn,t=t.next;try{r()}catch(i){throw t?n():e=void 0,i}}e=void 0,a&&a.enter()};if(p)n=function(){o.nextTick(u)};else if(!i||a.navigator&&a.navigator.standalone)if(s&&s.resolve){var c=s.resolve(void 0);n=function(){c.then(u)}}else n=function(){r.call(a,u)};else{var l=!0,f=document.createTextNode("");new i(u).observe(f,{characterData:!0}),n=function(){f.data=l=!l}}return function(a){var r={fn:a,next:void 0};e&&(e.next=r),t||(t=r,n()),e=r}}},{111:111,19:19,41:41}],69:[function(t,e,n){"use strict";function a(t){var e,n;this.promise=new t(function(t,a){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=a}),this.resolve=r(e),this.reject=r(n)}var r=t(4);e.exports.f=function(t){return new a(t)}},{4:4}],70:[function(t,e,n){"use strict";var a=t(81),r=t(78),i=t(82),o=t(117),s=t(48),p=Object.assign;e.exports=!p||t(36)(function(){var t={},e={},n=Symbol(),a="abcdefghijklmnopqrst";return t[n]=7,a.split("").forEach(function(t){e[t]=t}),7!=p({},t)[n]||Object.keys(p({},e)).join("")!=a})?function(t,e){for(var n=o(t),p=arguments.length,u=1,c=r.f,l=i.f;p>u;)for(var f,d=s(arguments[u++]),h=c?a(d).concat(c(d)):a(d),m=h.length,g=0;m>g;)l.call(d,f=h[g++])&&(n[f]=d[f]);return n}:p},{117:117,36:36,48:48,78:78,81:81,82:82}],71:[function(t,e,n){var a=t(8),r=t(73),i=t(32),o=t(100)("IE_PROTO"),s=function(){},p="prototype",u=function(){var e,n=t(31)("iframe"),a=i.length,r="<",o=">";for(n.style.display="none",t(44).appendChild(n),n.src="javascript:",e=n.contentWindow.document,e.open(),e.write(r+"script"+o+"document.F=Object"+r+"/script"+o),e.close(),u=e.F;a--;)delete u[p][i[a]];return u()};e.exports=Object.create||function(t,e){var n;return null!==t?(s[p]=a(t),n=new s,s[p]=null,n[o]=t):n=u(),void 0===e?n:r(n,e)}},{100:100,31:31,32:32,44:44,73:73,8:8}],72:[function(t,e,n){var a=t(8),r=t(45),i=t(118),o=Object.defineProperty;n.f=t(30)?Object.defineProperty:function(t,e,n){if(a(t),e=i(e,!0),a(n),r)try{return o(t,e,n)}catch(s){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},{118:118,30:30,45:45,8:8}],73:[function(t,e,n){var a=t(72),r=t(8),i=t(81);e.exports=t(30)?Object.defineProperties:function(t,e){r(t);for(var n,o=i(e),s=o.length,p=0;s>p;)a.f(t,n=o[p++],e[n]);return t}},{30:30,72:72,8:8,81:81}],74:[function(t,e,n){"use strict";e.exports=t(60)||!t(36)(function(){var e=Math.random();__defineSetter__.call(null,e,function(){}),delete t(41)[e]})},{36:36,41:41,60:60}],75:[function(t,e,n){var a=t(82),r=t(90),i=t(115),o=t(118),s=t(42),p=t(45),u=Object.getOwnPropertyDescriptor;n.f=t(30)?u:function(t,e){if(t=i(t),e=o(e,!0),p)try{return u(t,e)}catch(n){}return s(t,e)?r(!a.f.call(t,e),t[e]):void 0}},{115:115,118:118,30:30,42:42,45:45,82:82,90:90}],76:[function(t,e,n){var a=t(115),r=t(77).f,i={}.toString,o="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return r(t)}catch(e){return o.slice()}};e.exports.f=function(t){return o&&"[object Window]"==i.call(t)?s(t):r(a(t))}},{115:115,77:77}],77:[function(t,e,n){var a=t(80),r=t(32).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return a(t,r)}},{32:32,80:80}],78:[function(t,e,n){n.f=Object.getOwnPropertySymbols},{}],79:[function(t,e,n){var a=t(42),r=t(117),i=t(100)("IE_PROTO"),o=Object.prototype;e.exports=Object.getPrototypeOf||function(t){return t=r(t),a(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?o:null}},{100:100,117:117,42:42}],80:[function(t,e,n){var a=t(42),r=t(115),i=t(12)(!1),o=t(100)("IE_PROTO");e.exports=function(t,e){var n,s=r(t),p=0,u=[];for(n in s)n!=o&&a(s,n)&&u.push(n);for(;e.length>p;)a(s,n=e[p++])&&(~i(u,n)||u.push(n));return u}},{100:100,115:115,12:12,42:42}],81:[function(t,e,n){var a=t(80),r=t(32);e.exports=Object.keys||function(t){return a(t,r)}},{32:32,80:80}],82:[function(t,e,n){n.f={}.propertyIsEnumerable},{}],83:[function(t,e,n){var a=t(34),r=t(24),i=t(36);e.exports=function(t,e){var n=(r.Object||{})[t]||Object[t],o={};o[t]=e(n),a(a.S+a.F*i(function(){n(1)}),"Object",o)}},{24:24,34:34,36:36}],84:[function(t,e,n){var a=t(81),r=t(115),i=t(82).f;e.exports=function(t){return function(e){for(var n,o=r(e),s=a(o),p=s.length,u=0,c=[];p>u;)i.call(o,n=s[u++])&&c.push(t?[n,o[n]]:o[n]);return c}}},{115:115,81:81,82:82}],85:[function(t,e,n){var a=t(77),r=t(78),i=t(8),o=t(41).Reflect;e.exports=o&&o.ownKeys||function(t){var e=a.f(i(t)),n=r.f;return n?e.concat(n(t)):e}},{41:41,77:77,78:78,8:8}],86:[function(t,e,n){var a=t(41).parseFloat,r=t(109).trim;e.exports=1/a(t(110)+"-0")!==-(1/0)?function(t){var e=r(t+"",3),n=a(e);return 0===n&&"-"==e.charAt(0)?-0:n}:a},{109:109,110:110,41:41}],87:[function(t,e,n){var a=t(41).parseInt,r=t(109).trim,i=t(110),o=/^[-+]?0[xX]/;e.exports=8!==a(i+"08")||22!==a(i+"0x16")?function(t,e){var n=r(t+"",3);return a(n,e>>>0||(o.test(n)?16:10))}:a},{109:109,110:110,41:41}],88:[function(t,e,n){e.exports=function(t){try{return{e:!1,v:t()}}catch(e){return{e:!0,v:e}}}},{}],89:[function(t,e,n){var a=t(8),r=t(52),i=t(69);e.exports=function(t,e){if(a(t),r(e)&&e.constructor===t)return e;var n=i.f(t),o=n.resolve;return o(e),n.promise}},{52:52,69:69,8:8}],90:[function(t,e,n){e.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},{}],91:[function(t,e,n){var a=t(92);e.exports=function(t,e,n){for(var r in e)a(t,r,e[r],n);return t}},{92:92}],92:[function(t,e,n){var a=t(41),r=t(43),i=t(42),o=t(122)("src"),s="toString",p=Function[s],u=(""+p).split(s);t(24).inspectSource=function(t){return p.call(t)},(e.exports=function(t,e,n,s){var p="function"==typeof n;p&&(i(n,"name")||r(n,"name",e)),t[e]!==n&&(p&&(i(n,o)||r(n,o,t[e]?""+t[e]:u.join(e+""))),t===a?t[e]=n:s?t[e]?t[e]=n:r(t,e,n):(delete t[e],r(t,e,n)))})(Function.prototype,s,function(){ -return"function"==typeof this&&this[o]||p.call(this)})},{122:122,24:24,41:41,42:42,43:43}],93:[function(t,e,n){e.exports=function(t,e){var n=e===Object(e)?function(t){return e[t]}:e;return function(e){return(e+"").replace(t,n)}}},{}],94:[function(t,e,n){e.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},{}],95:[function(t,e,n){"use strict";var a=t(34),r=t(4),i=t(26),o=t(40);e.exports=function(t){a(a.S,t,{from:function(t){var e,n,a,s,p=arguments[1];return r(this),e=void 0!==p,e&&r(p),void 0==t?new this:(n=[],e?(a=0,s=i(p,arguments[2],2),o(t,!1,function(t){n.push(s(t,a++))})):o(t,!1,n.push,n),new this(n))}})}},{26:26,34:34,4:4,40:40}],96:[function(t,e,n){"use strict";var a=t(34);e.exports=function(t){a(a.S,t,{of:function(){for(var t=arguments.length,e=Array(t);t--;)e[t]=arguments[t];return new this(e)}})}},{34:34}],97:[function(t,e,n){var a=t(52),r=t(8),i=function(t,e){if(r(t),!a(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,n,a){try{a=t(26)(Function.call,t(75).f(Object.prototype,"__proto__").set,2),a(e,[]),n=!(e instanceof Array)}catch(r){n=!0}return function(t,e){return i(t,e),n?t.__proto__=e:a(t,e),t}}({},!1):void 0),check:i}},{26:26,52:52,75:75,8:8}],98:[function(t,e,n){"use strict";var a=t(41),r=t(72),i=t(30),o=t(127)("species");e.exports=function(t){var e=a[t];i&&e&&!e[o]&&r.f(e,o,{configurable:!0,get:function(){return this}})}},{127:127,30:30,41:41,72:72}],99:[function(t,e,n){var a=t(72).f,r=t(42),i=t(127)("toStringTag");e.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,i)&&a(t,i,{configurable:!0,value:e})}},{127:127,42:42,72:72}],100:[function(t,e,n){var a=t(101)("keys"),r=t(122);e.exports=function(t){return a[t]||(a[t]=r(t))}},{101:101,122:122}],101:[function(t,e,n){var a=t(24),r=t(41),i="__core-js_shared__",o=r[i]||(r[i]={});(e.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:a.version,mode:t(60)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},{24:24,41:41,60:60}],102:[function(t,e,n){var a=t(8),r=t(4),i=t(127)("species");e.exports=function(t,e){var n,o=a(t).constructor;return void 0===o||void 0==(n=a(o)[i])?e:r(n)}},{127:127,4:4,8:8}],103:[function(t,e,n){"use strict";var a=t(36);e.exports=function(t,e){return!!t&&a(function(){e?t.call(null,function(){},1):t.call(null)})}},{36:36}],104:[function(t,e,n){var a=t(114),r=t(29);e.exports=function(t){return function(e,n){var i,o,s=r(e)+"",p=a(n),u=s.length;return 0>p||p>=u?t?"":void 0:(i=s.charCodeAt(p),55296>i||i>56319||p+1===u||(o=s.charCodeAt(p+1))<56320||o>57343?t?s.charAt(p):i:t?s.slice(p,p+2):(i-55296<<10)+(o-56320)+65536)}}},{114:114,29:29}],105:[function(t,e,n){var a=t(53),r=t(29);e.exports=function(t,e,n){if(a(e))throw TypeError("String#"+n+" doesn't accept regex!");return r(t)+""}},{29:29,53:53}],106:[function(t,e,n){var a=t(34),r=t(36),i=t(29),o=/"/g,s=function(t,e,n,a){var r=i(t)+"",s="<"+e;return""!==n&&(s+=" "+n+'="'+(a+"").replace(o,""")+'"'),s+">"+r+""};e.exports=function(t,e){var n={};n[t]=e(s),a(a.P+a.F*r(function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}),"String",n)}},{29:29,34:34,36:36}],107:[function(t,e,n){var a=t(116),r=t(108),i=t(29);e.exports=function(t,e,n,o){var s=i(t)+"",p=s.length,u=void 0===n?" ":n+"",c=a(e);if(p>=c||""==u)return s;var l=c-p,f=r.call(u,Math.ceil(l/u.length));return f.length>l&&(f=f.slice(0,l)),o?f+s:s+f}},{108:108,116:116,29:29}],108:[function(t,e,n){"use strict";var a=t(114),r=t(29);e.exports=function(t){var e=r(this)+"",n="",i=a(t);if(0>i||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},{114:114,29:29}],109:[function(t,e,n){var a=t(34),r=t(29),i=t(36),o=t(110),s="["+o+"]",p="​…",u=RegExp("^"+s+s+"*"),c=RegExp(s+s+"*$"),l=function(t,e,n){var r={},s=i(function(){return!!o[t]()||p[t]()!=p}),u=r[t]=s?e(f):o[t];n&&(r[n]=u),a(a.P+a.F*s,"String",r)},f=l.trim=function(t,e){return t=r(t)+"",1&e&&(t=t.replace(u,"")),2&e&&(t=t.replace(c,"")),t};e.exports=l},{110:110,29:29,34:34,36:36}],110:[function(t,e,n){e.exports=" \n\x0B\f\r   ᠎              \u2028\u2029\ufeff"},{}],111:[function(t,e,n){var a,r,i,o=t(26),s=t(47),p=t(44),u=t(31),c=t(41),l=c.process,f=c.setImmediate,d=c.clearImmediate,h=c.MessageChannel,m=c.Dispatch,g=0,v={},b="onreadystatechange",y=function(){var t=+this;if(v.hasOwnProperty(t)){var e=v[t];delete v[t],e()}},x=function(t){y.call(t.data)};f&&d||(f=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return v[++g]=function(){s("function"==typeof t?t:Function(t),e)},a(g),g},d=function(t){delete v[t]},"process"==t(19)(l)?a=function(t){l.nextTick(o(y,t,1))}:m&&m.now?a=function(t){m.now(o(y,t,1))}:h?(r=new h,i=r.port2,r.port1.onmessage=x,a=o(i.postMessage,i,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts?(a=function(t){c.postMessage(t+"","*")},c.addEventListener("message",x,!1)):a=b in u("script")?function(t){p.appendChild(u("script"))[b]=function(){p.removeChild(this),y.call(t)}}:function(t){setTimeout(o(y,t,1),0)}),e.exports={set:f,clear:d}},{19:19,26:26,31:31,41:41,44:44,47:47}],112:[function(t,e,n){var a=t(114),r=Math.max,i=Math.min;e.exports=function(t,e){return t=a(t),0>t?r(t+e,0):i(t,e)}},{114:114}],113:[function(t,e,n){var a=t(114),r=t(116);e.exports=function(t){if(void 0===t)return 0;var e=a(t),n=r(e);if(e!==n)throw RangeError("Wrong length!");return n}},{114:114,116:116}],114:[function(t,e,n){var a=Math.ceil,r=Math.floor;e.exports=function(t){return isNaN(t=+t)?0:(t>0?r:a)(t)}},{}],115:[function(t,e,n){var a=t(48),r=t(29);e.exports=function(t){return a(r(t))}},{29:29,48:48}],116:[function(t,e,n){var a=t(114),r=Math.min;e.exports=function(t){return t>0?r(a(t),9007199254740991):0}},{114:114}],117:[function(t,e,n){var a=t(29);e.exports=function(t){return Object(a(t))}},{29:29}],118:[function(t,e,n){var a=t(52);e.exports=function(t,e){if(!a(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!a(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},{52:52}],119:[function(t,e,n){"use strict";if(t(30)){var a=t(60),r=t(41),i=t(36),o=t(34),s=t(121),p=t(120),u=t(26),c=t(7),l=t(90),f=t(43),d=t(91),h=t(114),m=t(116),g=t(113),v=t(112),b=t(118),y=t(42),x=t(18),_=t(52),w=t(117),k=t(49),S=t(71),E=t(79),C=t(77).f,P=t(128),A=t(122),O=t(127),T=t(13),R=t(12),M=t(102),L=t(140),j=t(59),D=t(57),N=t(98),F=t(10),I=t(9),B=t(72),U=t(75),q=B.f,V=U.f,G=r.RangeError,z=r.TypeError,W=r.Uint8Array,H="ArrayBuffer",Q="Shared"+H,K="BYTES_PER_ELEMENT",Y="prototype",$=Array[Y],J=p.ArrayBuffer,X=p.DataView,Z=T(0),tt=T(2),et=T(3),nt=T(4),at=T(5),rt=T(6),it=R(!0),ot=R(!1),st=L.values,pt=L.keys,ut=L.entries,ct=$.lastIndexOf,lt=$.reduce,ft=$.reduceRight,dt=$.join,ht=$.sort,mt=$.slice,gt=$.toString,vt=$.toLocaleString,bt=O("iterator"),yt=O("toStringTag"),xt=A("typed_constructor"),_t=A("def_constructor"),wt=s.CONSTR,kt=s.TYPED,St=s.VIEW,Et="Wrong length!",Ct=T(1,function(t,e){return Rt(M(t,t[_t]),e)}),Pt=i(function(){return 1===new W(new Uint16Array([1]).buffer)[0]}),At=!!W&&!!W[Y].set&&i(function(){new W(1).set({})}),Ot=function(t,e){var n=h(t);if(0>n||n%e)throw G("Wrong offset!");return n},Tt=function(t){if(_(t)&&kt in t)return t;throw z(t+" is not a typed array!")},Rt=function(t,e){if(!(_(t)&&xt in t))throw z("It is not a typed array constructor!");return new t(e)},Mt=function(t,e){return Lt(M(t,t[_t]),e)},Lt=function(t,e){for(var n=0,a=e.length,r=Rt(t,a);a>n;)r[n]=e[n++];return r},jt=function(t,e,n){q(t,e,{get:function(){return this._d[n]}})},Dt=function(t){var e,n,a,r,i,o,s=w(t),p=arguments.length,c=p>1?arguments[1]:void 0,l=void 0!==c,f=P(s);if(void 0!=f&&!k(f)){for(o=f.call(s),a=[],e=0;!(i=o.next()).done;e++)a.push(i.value);s=a}for(l&&p>2&&(c=u(c,arguments[2],2)),e=0,n=m(s.length),r=Rt(this,n);n>e;e++)r[e]=l?c(s[e],e):s[e];return r},Nt=function(){for(var t=0,e=arguments.length,n=Rt(this,e);e>t;)n[t]=arguments[t++];return n},Ft=!!W&&i(function(){vt.call(new W(1))}),It=function(){return vt.apply(Ft?mt.call(Tt(this)):Tt(this),arguments)},Bt={copyWithin:function(t,e){return I.call(Tt(this),t,e,arguments.length>2?arguments[2]:void 0)},every:function(t){return nt(Tt(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return F.apply(Tt(this),arguments)},filter:function(t){return Mt(this,tt(Tt(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return at(Tt(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return rt(Tt(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){Z(Tt(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return ot(Tt(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return it(Tt(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return dt.apply(Tt(this),arguments)},lastIndexOf:function(t){return ct.apply(Tt(this),arguments)},map:function(t){return Ct(Tt(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return lt.apply(Tt(this),arguments)},reduceRight:function(t){return ft.apply(Tt(this),arguments)},reverse:function(){for(var t,e=this,n=Tt(e).length,a=Math.floor(n/2),r=0;a>r;)t=e[r],e[r++]=e[--n],e[n]=t;return e},some:function(t){return et(Tt(this),t,arguments.length>1?arguments[1]:void 0)},sort:function(t){return ht.call(Tt(this),t)},subarray:function(t,e){var n=Tt(this),a=n.length,r=v(t,a);return new(M(n,n[_t]))(n.buffer,n.byteOffset+r*n.BYTES_PER_ELEMENT,m((void 0===e?a:v(e,a))-r))}},Ut=function(t,e){return Mt(this,mt.call(Tt(this),t,e))},qt=function(t){Tt(this);var e=Ot(arguments[1],1),n=this.length,a=w(t),r=m(a.length),i=0;if(r+e>n)throw G(Et);for(;r>i;)this[e+i]=a[i++]},Vt={entries:function(){return ut.call(Tt(this))},keys:function(){return pt.call(Tt(this))},values:function(){return st.call(Tt(this))}},Gt=function(t,e){return _(t)&&t[kt]&&"symbol"!=typeof e&&e in t&&+e+""==e+""},zt=function(t,e){return Gt(t,e=b(e,!0))?l(2,t[e]):V(t,e)},Wt=function(t,e,n){return!(Gt(t,e=b(e,!0))&&_(n)&&y(n,"value"))||y(n,"get")||y(n,"set")||n.configurable||y(n,"writable")&&!n.writable||y(n,"enumerable")&&!n.enumerable?q(t,e,n):(t[e]=n.value,t)};wt||(U.f=zt,B.f=Wt),o(o.S+o.F*!wt,"Object",{getOwnPropertyDescriptor:zt,defineProperty:Wt}),i(function(){gt.call({})})&&(gt=vt=function(){return dt.call(this)});var Ht=d({},Bt);d(Ht,Vt),f(Ht,bt,Vt.values),d(Ht,{slice:Ut,set:qt,constructor:function(){},toString:gt,toLocaleString:It}),jt(Ht,"buffer","b"),jt(Ht,"byteOffset","o"),jt(Ht,"byteLength","l"),jt(Ht,"length","e"),q(Ht,yt,{get:function(){return this[kt]}}),e.exports=function(t,e,n,p){p=!!p;var u=t+(p?"Clamped":"")+"Array",l="get"+t,d="set"+t,h=r[u],v=h||{},b=h&&E(h),y=!h||!s.ABV,w={},k=h&&h[Y],P=function(t,n){var a=t._d;return a.v[l](n*e+a.o,Pt)},A=function(t,n,a){var r=t._d;p&&(a=(a=Math.round(a))<0?0:a>255?255:255&a),r.v[d](n*e+r.o,a,Pt)},O=function(t,e){q(t,e,{get:function(){return P(this,e)},set:function(t){return A(this,e,t)},enumerable:!0})};y?(h=n(function(t,n,a,r){c(t,h,u,"_d");var i,o,s,p,l=0,d=0;if(_(n)){if(!(n instanceof J||(p=x(n))==H||p==Q))return kt in n?Lt(h,n):Dt.call(h,n);i=n,d=Ot(a,e);var v=n.byteLength;if(void 0===r){if(v%e)throw G(Et);if(o=v-d,0>o)throw G(Et)}else if(o=m(r)*e,o+d>v)throw G(Et);s=o/e}else s=g(n),o=s*e,i=new J(o);for(f(t,"_d",{b:i,o:d,l:o,e:s,v:new X(i)});s>l;)O(t,l++)}),k=h[Y]=S(Ht),f(k,"constructor",h)):i(function(){h(1)})&&i(function(){new h(-1)})&&D(function(t){new h,new h(null),new h(1.5),new h(t)},!0)||(h=n(function(t,n,a,r){c(t,h,u);var i;return _(n)?n instanceof J||(i=x(n))==H||i==Q?void 0!==r?new v(n,Ot(a,e),r):void 0!==a?new v(n,Ot(a,e)):new v(n):kt in n?Lt(h,n):Dt.call(h,n):new v(g(n))}),Z(b!==Function.prototype?C(v).concat(C(b)):C(v),function(t){t in h||f(h,t,v[t])}),h[Y]=k,a||(k.constructor=h));var T=k[bt],R=!!T&&("values"==T.name||void 0==T.name),M=Vt.values;f(h,xt,!0),f(k,kt,u),f(k,St,!0),f(k,_t,h),(p?new h(1)[yt]==u:yt in k)||q(k,yt,{get:function(){return u}}),w[u]=h,o(o.G+o.W+o.F*(h!=v),w),o(o.S,u,{BYTES_PER_ELEMENT:e}),o(o.S+o.F*i(function(){v.of.call(h,1)}),u,{from:Dt,of:Nt}),K in k||f(k,K,e),o(o.P,u,Bt),N(u),o(o.P+o.F*At,u,{set:qt}),o(o.P+o.F*!R,u,Vt),a||k.toString==gt||(k.toString=gt),o(o.P+o.F*i(function(){new h(1).slice()}),u,{slice:Ut}),o(o.P+o.F*(i(function(){return[1,2].toLocaleString()!=new h([1,2]).toLocaleString()})||!i(function(){k.toLocaleString.call([1,2])})),u,{toLocaleString:It}),j[u]=R?T:M,a||R||f(k,bt,M)}}else e.exports=function(){}},{10:10,102:102,112:112,113:113,114:114,116:116,117:117,118:118,12:12,120:120,121:121,122:122,127:127,128:128,13:13,140:140,18:18,26:26,30:30,34:34,36:36,41:41,42:42,43:43,49:49,52:52,57:57,59:59,60:60,7:7,71:71,72:72,75:75,77:77,79:79,9:9,90:90,91:91,98:98}],120:[function(t,e,n){"use strict";function a(t,e,n){var a,r,i,o=Array(n),s=8*n-e-1,p=(1<>1,c=23===e?q(2,-24)-q(2,-77):0,l=0,f=0>t||0===t&&0>1/t?1:0;for(t=U(t),t!=t||t===I?(r=t!=t?1:0,a=p):(a=V(G(t)/z),t*(i=q(2,-a))<1&&(a--,i*=2),t+=a+u>=1?c/i:c*q(2,1-u),t*i>=2&&(a++,i/=2),a+u>=p?(r=0,a=p):a+u>=1?(r=(t*i-1)*q(2,e),a+=u):(r=t*q(2,u-1)*q(2,e),a=0));e>=8;o[l++]=255&r,r/=256,e-=8);for(a=a<0;o[l++]=255&a,a/=256,s-=8);return o[--l]|=128*f,o}function r(t,e,n){var a,r=8*n-e-1,i=(1<>1,s=r-7,p=n-1,u=t[p--],c=127&u;for(u>>=7;s>0;c=256*c+t[p],p--,s-=8);for(a=c&(1<<-s)-1,c>>=-s,s+=e;s>0;a=256*a+t[p],p--,s-=8);if(0===c)c=1-o;else{if(c===i)return a?NaN:u?-I:I;a+=q(2,e),c-=o}return(u?-1:1)*a*q(2,c-e)}function i(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]}function o(t){return[255&t]}function s(t){return[255&t,t>>8&255]}function p(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]}function u(t){return a(t,52,8)}function c(t){return a(t,23,4)}function l(t,e,n){C(t[R],e,{get:function(){return this[n]}})}function f(t,e,n,a){var r=+n,i=S(r);if(i+e>t[Y])throw F(L);var o=t[K]._b,s=i+t[$],p=o.slice(s,s+e);return a?p:p.reverse()}function d(t,e,n,a,r,i){var o=+n,s=S(o);if(s+e>t[Y])throw F(L);for(var p=t[K]._b,u=s+t[$],c=a(+r),l=0;e>l;l++)p[u+l]=c[i?l:e-l-1]}var h=t(41),m=t(30),g=t(60),v=t(121),b=t(43),y=t(91),x=t(36),_=t(7),w=t(114),k=t(116),S=t(113),E=t(77).f,C=t(72).f,P=t(10),A=t(99),O="ArrayBuffer",T="DataView",R="prototype",M="Wrong length!",L="Wrong index!",j=h[O],D=h[T],N=h.Math,F=h.RangeError,I=h.Infinity,B=j,U=N.abs,q=N.pow,V=N.floor,G=N.log,z=N.LN2,W="buffer",H="byteLength",Q="byteOffset",K=m?"_b":W,Y=m?"_l":H,$=m?"_o":Q;if(v.ABV){if(!x(function(){j(1)})||!x(function(){new j(-1)})||x(function(){return new j,new j(1.5),new j(NaN),j.name!=O})){j=function(t){return _(this,j),new B(S(t))};for(var J,X=j[R]=B[R],Z=E(B),tt=0;Z.length>tt;)(J=Z[tt++])in j||b(j,J,B[J]);g||(X.constructor=j)}var et=new D(new j(2)),nt=D[R].setInt8;et.setInt8(0,2147483648),et.setInt8(1,2147483649),(et.getInt8(0)||!et.getInt8(1))&&y(D[R],{setInt8:function(t,e){nt.call(this,t,e<<24>>24)},setUint8:function(t,e){nt.call(this,t,e<<24>>24)}},!0)}else j=function(t){_(this,j,O);var e=S(t);this._b=P.call(Array(e),0),this[Y]=e},D=function(t,e,n){_(this,D,T),_(t,j,T);var a=t[Y],r=w(e);if(0>r||r>a)throw F("Wrong offset!");if(n=void 0===n?a-r:k(n),r+n>a)throw F(M);this[K]=t,this[$]=r,this[Y]=n},m&&(l(j,H,"_l"),l(D,W,"_b"),l(D,H,"_l"),l(D,Q,"_o")),y(D[R],{getInt8:function(t){return f(this,1,t)[0]<<24>>24},getUint8:function(t){return f(this,1,t)[0]},getInt16:function(t){var e=f(this,2,t,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=f(this,2,t,arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return i(f(this,4,t,arguments[1]))},getUint32:function(t){return i(f(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return r(f(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return r(f(this,8,t,arguments[1]),52,8)},setInt8:function(t,e){d(this,1,t,o,e)},setUint8:function(t,e){d(this,1,t,o,e)},setInt16:function(t,e){d(this,2,t,s,e,arguments[2])},setUint16:function(t,e){d(this,2,t,s,e,arguments[2])},setInt32:function(t,e){d(this,4,t,p,e,arguments[2])},setUint32:function(t,e){d(this,4,t,p,e,arguments[2])},setFloat32:function(t,e){d(this,4,t,c,e,arguments[2])},setFloat64:function(t,e){d(this,8,t,u,e,arguments[2])}});A(j,O),A(D,T),b(D[R],v.VIEW,!0),n[O]=j,n[T]=D},{10:10,113:113,114:114,116:116,121:121,30:30,36:36,41:41,43:43,60:60,7:7,72:72,77:77,91:91,99:99}],121:[function(t,e,n){for(var a,r=t(41),i=t(43),o=t(122),s=o("typed_array"),p=o("view"),u=!(!r.ArrayBuffer||!r.DataView),c=u,l=0,f=9,d="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");f>l;)(a=r[d[l++]])?(i(a.prototype,s,!0),i(a.prototype,p,!0)):c=!1;e.exports={ABV:u,CONSTR:c,TYPED:s,VIEW:p}},{122:122,41:41,43:43}],122:[function(t,e,n){var a=0,r=Math.random();e.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++a+r).toString(36))}},{}],123:[function(t,e,n){var a=t(41),r=a.navigator;e.exports=r&&r.userAgent||""},{41:41}],124:[function(t,e,n){var a=t(52);e.exports=function(t,e){if(!a(t)||t._t!==e)throw TypeError("Incompatible receiver, "+e+" required!");return t}},{52:52}],125:[function(t,e,n){var a=t(41),r=t(24),i=t(60),o=t(126),s=t(72).f;e.exports=function(t){var e=r.Symbol||(r.Symbol=i?{}:a.Symbol||{});"_"==t.charAt(0)||t in e||s(e,t,{value:o.f(t)})}},{126:126,24:24,41:41,60:60,72:72}],126:[function(t,e,n){n.f=t(127)},{127:127}],127:[function(t,e,n){var a=t(101)("wks"),r=t(122),i=t(41).Symbol,o="function"==typeof i,s=e.exports=function(t){return a[t]||(a[t]=o&&i[t]||(o?i:r)("Symbol."+t))};s.store=a},{101:101,122:122,41:41}],128:[function(t,e,n){var a=t(18),r=t(127)("iterator"),i=t(59);e.exports=t(24).getIteratorMethod=function(t){return void 0!=t?t[r]||t["@@iterator"]||i[a(t)]:void 0}},{127:127,18:18,24:24,59:59}],129:[function(t,e,n){var a=t(34),r=t(93)(/[\\^$*+?.()|[\]{}]/g,"\\$&");a(a.S,"RegExp",{escape:function(t){return r(t)}})},{34:34,93:93}],130:[function(t,e,n){var a=t(34);a(a.P,"Array",{copyWithin:t(9)}),t(6)("copyWithin")},{34:34,6:6,9:9}],131:[function(t,e,n){"use strict";var a=t(34),r=t(13)(4);a(a.P+a.F*!t(103)([].every,!0),"Array",{every:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],132:[function(t,e,n){var a=t(34);a(a.P,"Array",{fill:t(10)}),t(6)("fill")},{10:10,34:34,6:6}],133:[function(t,e,n){"use strict";var a=t(34),r=t(13)(2);a(a.P+a.F*!t(103)([].filter,!0),"Array",{filter:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],134:[function(t,e,n){"use strict";var a=t(34),r=t(13)(6),i="findIndex",o=!0;i in[]&&Array(1)[i](function(){o=!1}),a(a.P+a.F*o,"Array",{findIndex:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),t(6)(i)},{13:13,34:34,6:6}],135:[function(t,e,n){"use strict";var a=t(34),r=t(13)(5),i="find",o=!0;i in[]&&Array(1)[i](function(){o=!1}),a(a.P+a.F*o,"Array",{find:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),t(6)(i)},{13:13,34:34,6:6}],136:[function(t,e,n){"use strict";var a=t(34),r=t(13)(0),i=t(103)([].forEach,!0);a(a.P+a.F*!i,"Array",{forEach:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],137:[function(t,e,n){"use strict";var a=t(26),r=t(34),i=t(117),o=t(54),s=t(49),p=t(116),u=t(25),c=t(128);r(r.S+r.F*!t(57)(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,r,l,f=i(t),d="function"==typeof this?this:Array,h=arguments.length,m=h>1?arguments[1]:void 0,g=void 0!==m,v=0,b=c(f);if(g&&(m=a(m,h>2?arguments[2]:void 0,2)),void 0==b||d==Array&&s(b))for(e=p(f.length),n=new d(e);e>v;v++)u(n,v,g?m(f[v],v):f[v]);else for(l=b.call(f),n=new d;!(r=l.next()).done;v++)u(n,v,g?o(l,m,[r.value,v],!0):r.value);return n.length=v,n}})},{116:116,117:117,128:128,25:25,26:26,34:34,49:49,54:54,57:57}],138:[function(t,e,n){"use strict";var a=t(34),r=t(12)(!1),i=[].indexOf,o=!!i&&1/[1].indexOf(1,-0)<0;a(a.P+a.F*(o||!t(103)(i)),"Array",{indexOf:function(t){return o?i.apply(this,arguments)||0:r(this,t,arguments[1])}})},{103:103,12:12,34:34}],139:[function(t,e,n){var a=t(34);a(a.S,"Array",{isArray:t(50)})},{34:34,50:50}],140:[function(t,e,n){"use strict";var a=t(6),r=t(58),i=t(59),o=t(115);e.exports=t(56)(Array,"Array",function(t,e){this._t=o(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,r(1)):"keys"==e?r(0,n):"values"==e?r(0,t[n]):r(0,[n,t[n]])},"values"),i.Arguments=i.Array,a("keys"),a("values"),a("entries")},{115:115,56:56,58:58,59:59,6:6}],141:[function(t,e,n){"use strict";var a=t(34),r=t(115),i=[].join;a(a.P+a.F*(t(48)!=Object||!t(103)(i)),"Array",{join:function(t){return i.call(r(this),void 0===t?",":t)}})},{103:103,115:115,34:34,48:48}],142:[function(t,e,n){"use strict";var a=t(34),r=t(115),i=t(114),o=t(116),s=[].lastIndexOf,p=!!s&&1/[1].lastIndexOf(1,-0)<0;a(a.P+a.F*(p||!t(103)(s)),"Array",{lastIndexOf:function(t){if(p)return s.apply(this,arguments)||0;var e=r(this),n=o(e.length),a=n-1;for(arguments.length>1&&(a=Math.min(a,i(arguments[1]))),0>a&&(a=n+a);a>=0;a--)if(a in e&&e[a]===t)return a||0;return-1}})},{103:103,114:114,115:115,116:116,34:34}],143:[function(t,e,n){"use strict";var a=t(34),r=t(13)(1);a(a.P+a.F*!t(103)([].map,!0),"Array",{map:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],144:[function(t,e,n){"use strict";var a=t(34),r=t(25);a(a.S+a.F*t(36)(function(){function t(){}return!(Array.of.call(t)instanceof t)}),"Array",{of:function(){for(var t=0,e=arguments.length,n=new("function"==typeof this?this:Array)(e);e>t;)r(n,t,arguments[t++]);return n.length=e,n}})},{25:25,34:34,36:36}],145:[function(t,e,n){"use strict";var a=t(34),r=t(14);a(a.P+a.F*!t(103)([].reduceRight,!0),"Array",{reduceRight:function(t){return r(this,t,arguments.length,arguments[1],!0)}})},{103:103,14:14,34:34}],146:[function(t,e,n){"use strict";var a=t(34),r=t(14);a(a.P+a.F*!t(103)([].reduce,!0),"Array",{reduce:function(t){return r(this,t,arguments.length,arguments[1],!1)}})},{103:103,14:14,34:34}],147:[function(t,e,n){"use strict";var a=t(34),r=t(44),i=t(19),o=t(112),s=t(116),p=[].slice;a(a.P+a.F*t(36)(function(){r&&p.call(r)}),"Array",{slice:function(t,e){var n=s(this.length),a=i(this);if(e=void 0===e?n:e,"Array"==a)return p.call(this,t,e);for(var r=o(t,n),u=o(e,n),c=s(u-r),l=Array(c),f=0;c>f;f++)l[f]="String"==a?this.charAt(r+f):this[r+f];return l}})},{112:112,116:116,19:19,34:34,36:36,44:44}],148:[function(t,e,n){"use strict";var a=t(34),r=t(13)(3);a(a.P+a.F*!t(103)([].some,!0),"Array",{some:function(t){return r(this,t,arguments[1])}})},{103:103,13:13,34:34}],149:[function(t,e,n){"use strict";var a=t(34),r=t(4),i=t(117),o=t(36),s=[].sort,p=[1,2,3];a(a.P+a.F*(o(function(){p.sort(void 0)})||!o(function(){p.sort(null)})||!t(103)(s)),"Array",{sort:function(t){return void 0===t?s.call(i(this)):s.call(i(this),r(t))}})},{103:103,117:117,34:34,36:36,4:4}],150:[function(t,e,n){t(98)("Array")},{98:98}],151:[function(t,e,n){var a=t(34);a(a.S,"Date",{now:function(){return(new Date).getTime()}})},{34:34}],152:[function(t,e,n){var a=t(34),r=t(27);a(a.P+a.F*(Date.prototype.toISOString!==r),"Date",{toISOString:r})},{27:27,34:34}],153:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(118);a(a.P+a.F*t(36)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function(t){var e=r(this),n=i(e);return"number"!=typeof n||isFinite(n)?e.toISOString():null}})},{117:117,118:118,34:34,36:36}],154:[function(t,e,n){var a=t(127)("toPrimitive"),r=Date.prototype;a in r||t(43)(r,a,t(28))},{127:127,28:28,43:43}],155:[function(t,e,n){var a=Date.prototype,r="Invalid Date",i="toString",o=a[i],s=a.getTime;new Date(NaN)+""!=r&&t(92)(a,i,function(){var t=s.call(this);return t===t?o.call(this):r})},{92:92}],156:[function(t,e,n){var a=t(34);a(a.P,"Function",{bind:t(17)})},{17:17,34:34}],157:[function(t,e,n){"use strict";var a=t(52),r=t(79),i=t(127)("hasInstance"),o=Function.prototype;i in o||t(72).f(o,i,{value:function(t){if("function"!=typeof this||!a(t))return!1;if(!a(this.prototype))return t instanceof this;for(;t=r(t);)if(this.prototype===t)return!0;return!1}})},{127:127,52:52,72:72,79:79}],158:[function(t,e,n){var a=t(72).f,r=Function.prototype,i=/^\s*function ([^ (]*)/,o="name";o in r||t(30)&&a(r,o,{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(t){return""}}})},{30:30,72:72}],159:[function(t,e,n){"use strict";var a=t(20),r=t(124),i="Map";e.exports=t(23)(i,function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=a.getEntry(r(this,i),t);return e&&e.v},set:function(t,e){return a.def(r(this,i),0===t?0:t,e)}},a,!0)},{124:124,20:20,23:23}],160:[function(t,e,n){var a=t(34),r=t(63),i=Math.sqrt,o=Math.acosh;a(a.S+a.F*!(o&&710==Math.floor(o(Number.MAX_VALUE))&&o(1/0)==1/0),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:r(t-1+i(t-1)*i(t+1))}})},{34:34,63:63}],161:[function(t,e,n){function a(t){return isFinite(t=+t)&&0!=t?0>t?-a(-t):Math.log(t+Math.sqrt(t*t+1)):t}var r=t(34),i=Math.asinh;r(r.S+r.F*!(i&&1/i(0)>0),"Math",{asinh:a})},{34:34}],162:[function(t,e,n){var a=t(34),r=Math.atanh;a(a.S+a.F*!(r&&1/r(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},{34:34}],163:[function(t,e,n){var a=t(34),r=t(65);a(a.S,"Math",{cbrt:function(t){return r(t=+t)*Math.pow(Math.abs(t),1/3)}})},{34:34,65:65}],164:[function(t,e,n){var a=t(34);a(a.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},{34:34}],165:[function(t,e,n){var a=t(34),r=Math.exp;a(a.S,"Math",{cosh:function(t){return(r(t=+t)+r(-t))/2}})},{34:34}],166:[function(t,e,n){var a=t(34),r=t(61);a(a.S+a.F*(r!=Math.expm1),"Math",{expm1:r})},{34:34,61:61}],167:[function(t,e,n){var a=t(34);a(a.S,"Math",{fround:t(62)})},{34:34,62:62}],168:[function(t,e,n){var a=t(34),r=Math.abs;a(a.S,"Math",{hypot:function(t,e){for(var n,a,i=0,o=0,s=arguments.length,p=0;s>o;)n=r(arguments[o++]),n>p?(a=p/n,i=i*a*a+1,p=n):n>0?(a=n/p,i+=a*a):i+=n;return p===1/0?1/0:p*Math.sqrt(i)}})},{34:34}],169:[function(t,e,n){var a=t(34),r=Math.imul;a(a.S+a.F*t(36)(function(){return-5!=r(4294967295,5)||2!=r.length}),"Math",{imul:function(t,e){var n=65535,a=+t,r=+e,i=n&a,o=n&r;return 0|i*o+((n&a>>>16)*o+i*(n&r>>>16)<<16>>>0)}})},{34:34,36:36}],170:[function(t,e,n){var a=t(34);a(a.S,"Math",{log10:function(t){return Math.log(t)*Math.LOG10E}})},{34:34}],171:[function(t,e,n){var a=t(34);a(a.S,"Math",{log1p:t(63)})},{34:34,63:63}],172:[function(t,e,n){var a=t(34);a(a.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},{34:34}],173:[function(t,e,n){var a=t(34);a(a.S,"Math",{sign:t(65)})},{34:34,65:65}],174:[function(t,e,n){var a=t(34),r=t(61),i=Math.exp;a(a.S+a.F*t(36)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(r(t)-r(-t))/2:(i(t-1)-i(-t-1))*(Math.E/2)}})},{34:34,36:36,61:61}],175:[function(t,e,n){var a=t(34),r=t(61),i=Math.exp;a(a.S,"Math",{tanh:function(t){var e=r(t=+t),n=r(-t);return e==1/0?1:n==1/0?-1:(e-n)/(i(t)+i(-t))}})},{34:34,61:61}],176:[function(t,e,n){var a=t(34);a(a.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},{34:34}],177:[function(t,e,n){"use strict";var a=t(41),r=t(42),i=t(19),o=t(46),s=t(118),p=t(36),u=t(77).f,c=t(75).f,l=t(72).f,f=t(109).trim,d="Number",h=a[d],m=h,g=h.prototype,v=i(t(71)(g))==d,b="trim"in String.prototype,y=function(t){var e=s(t,!1);if("string"==typeof e&&e.length>2){e=b?e.trim():f(e,3);var n,a,r,i=e.charCodeAt(0);if(43===i||45===i){if(n=e.charCodeAt(2),88===n||120===n)return NaN}else if(48===i){switch(e.charCodeAt(1)){case 66:case 98:a=2,r=49;break;case 79:case 111:a=8,r=55;break;default:return+e}for(var o,p=e.slice(2),u=0,c=p.length;c>u;u++)if(o=p.charCodeAt(u),48>o||o>r)return NaN;return parseInt(p,a)}}return+e};if(!h(" 0o1")||!h("0b1")||h("+0x1")){h=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof h&&(v?p(function(){g.valueOf.call(n)}):i(n)!=d)?o(new m(y(e)),n,h):y(e)};for(var x,_=t(30)?u(m):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),w=0;_.length>w;w++)r(m,x=_[w])&&!r(h,x)&&l(h,x,c(m,x));h.prototype=g,g.constructor=h,t(92)(a,d,h)}},{109:109,118:118,19:19,30:30,36:36,41:41,42:42,46:46,71:71,72:72,75:75,77:77,92:92}],178:[function(t,e,n){var a=t(34);a(a.S,"Number",{EPSILON:Math.pow(2,-52)})},{34:34}],179:[function(t,e,n){var a=t(34),r=t(41).isFinite;a(a.S,"Number",{isFinite:function(t){return"number"==typeof t&&r(t)}})},{34:34,41:41}],180:[function(t,e,n){var a=t(34);a(a.S,"Number",{isInteger:t(51)})},{34:34,51:51}],181:[function(t,e,n){var a=t(34);a(a.S,"Number",{isNaN:function(t){return t!=t}})},{34:34}],182:[function(t,e,n){var a=t(34),r=t(51),i=Math.abs;a(a.S,"Number",{isSafeInteger:function(t){return r(t)&&i(t)<=9007199254740991}})},{34:34,51:51}],183:[function(t,e,n){var a=t(34);a(a.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},{34:34}],184:[function(t,e,n){var a=t(34);a(a.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},{34:34}],185:[function(t,e,n){var a=t(34),r=t(86);a(a.S+a.F*(Number.parseFloat!=r),"Number",{parseFloat:r})},{34:34,86:86}],186:[function(t,e,n){var a=t(34),r=t(87);a(a.S+a.F*(Number.parseInt!=r),"Number",{parseInt:r})},{34:34,87:87}],187:[function(t,e,n){"use strict";var a=t(34),r=t(114),i=t(5),o=t(108),s=1..toFixed,p=Math.floor,u=[0,0,0,0,0,0],c="Number.toFixed: incorrect invocation!",l="0",f=function(t,e){for(var n=-1,a=e;++n<6;)a+=t*u[n],u[n]=a%1e7,a=p(a/1e7)},d=function(t){for(var e=6,n=0;--e>=0;)n+=u[e],u[e]=p(n/t),n=n%t*1e7},h=function(){for(var t=6,e="";--t>=0;)if(""!==e||0===t||0!==u[t]){var n=u[t]+"";e=""===e?n:e+o.call(l,7-n.length)+n}return e},m=function(t,e,n){return 0===e?n:e%2===1?m(t,e-1,n*t):m(t*t,e/2,n)},g=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e};a(a.P+a.F*(!!s&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==0xde0b6b3a7640080.toFixed(0))||!t(36)(function(){s.call({})})),"Number",{toFixed:function(t){var e,n,a,s,p=i(this,c),u=r(t),v="",b=l;if(0>u||u>20)throw RangeError(c);if(p!=p)return"NaN";if(-1e21>=p||p>=1e21)return p+"";if(0>p&&(v="-",p=-p),p>1e-21)if(e=g(p*m(2,69,1))-69,n=0>e?p*m(2,-e,1):p/m(2,e,1),n*=4503599627370496,e=52-e,e>0){for(f(0,n),a=u;a>=7;)f(1e7,0),a-=7;for(f(m(10,a,1),0),a=e-1;a>=23;)d(1<<23),a-=23;d(1<0?(s=b.length,b=v+(u>=s?"0."+o.call(l,u-s)+b:b.slice(0,s-u)+"."+b.slice(s-u))):b=v+b,b}})},{108:108,114:114,34:34,36:36,5:5}],188:[function(t,e,n){"use strict";var a=t(34),r=t(36),i=t(5),o=1..toPrecision;a(a.P+a.F*(r(function(){return"1"!==o.call(1,void 0)})||!r(function(){o.call({})})),"Number",{toPrecision:function(t){var e=i(this,"Number#toPrecision: incorrect invocation!");return void 0===t?o.call(e):o.call(e,t)}})},{34:34,36:36,5:5}],189:[function(t,e,n){var a=t(34);a(a.S+a.F,"Object",{assign:t(70)})},{34:34,70:70}],190:[function(t,e,n){var a=t(34);a(a.S,"Object",{create:t(71)})},{34:34,71:71}],191:[function(t,e,n){var a=t(34);a(a.S+a.F*!t(30),"Object",{defineProperties:t(73)})},{30:30,34:34,73:73}],192:[function(t,e,n){var a=t(34);a(a.S+a.F*!t(30),"Object",{defineProperty:t(72).f})},{30:30,34:34,72:72}],193:[function(t,e,n){var a=t(52),r=t(66).onFreeze;t(83)("freeze",function(t){return function(e){return t&&a(e)?t(r(e)):e}})},{52:52,66:66,83:83}],194:[function(t,e,n){var a=t(115),r=t(75).f;t(83)("getOwnPropertyDescriptor",function(){return function(t,e){return r(a(t),e)}})},{115:115,75:75,83:83}],195:[function(t,e,n){t(83)("getOwnPropertyNames",function(){return t(76).f})},{76:76,83:83}],196:[function(t,e,n){var a=t(117),r=t(79);t(83)("getPrototypeOf",function(){return function(t){return r(a(t))}})},{117:117,79:79,83:83}],197:[function(t,e,n){var a=t(52);t(83)("isExtensible",function(t){return function(e){return a(e)?t?t(e):!0:!1}}); -},{52:52,83:83}],198:[function(t,e,n){var a=t(52);t(83)("isFrozen",function(t){return function(e){return a(e)?t?t(e):!1:!0}})},{52:52,83:83}],199:[function(t,e,n){var a=t(52);t(83)("isSealed",function(t){return function(e){return a(e)?t?t(e):!1:!0}})},{52:52,83:83}],200:[function(t,e,n){var a=t(34);a(a.S,"Object",{is:t(94)})},{34:34,94:94}],201:[function(t,e,n){var a=t(117),r=t(81);t(83)("keys",function(){return function(t){return r(a(t))}})},{117:117,81:81,83:83}],202:[function(t,e,n){var a=t(52),r=t(66).onFreeze;t(83)("preventExtensions",function(t){return function(e){return t&&a(e)?t(r(e)):e}})},{52:52,66:66,83:83}],203:[function(t,e,n){var a=t(52),r=t(66).onFreeze;t(83)("seal",function(t){return function(e){return t&&a(e)?t(r(e)):e}})},{52:52,66:66,83:83}],204:[function(t,e,n){var a=t(34);a(a.S,"Object",{setPrototypeOf:t(97).set})},{34:34,97:97}],205:[function(t,e,n){"use strict";var a=t(18),r={};r[t(127)("toStringTag")]="z",r+""!="[object z]"&&t(92)(Object.prototype,"toString",function(){return"[object "+a(this)+"]"},!0)},{127:127,18:18,92:92}],206:[function(t,e,n){var a=t(34),r=t(86);a(a.G+a.F*(parseFloat!=r),{parseFloat:r})},{34:34,86:86}],207:[function(t,e,n){var a=t(34),r=t(87);a(a.G+a.F*(parseInt!=r),{parseInt:r})},{34:34,87:87}],208:[function(t,e,n){"use strict";var a,r,i,o,s=t(60),p=t(41),u=t(26),c=t(18),l=t(34),f=t(52),d=t(4),h=t(7),m=t(40),g=t(102),v=t(111).set,b=t(68)(),y=t(69),x=t(88),_=t(123),w=t(89),k="Promise",S=p.TypeError,E=p.process,C=E&&E.versions,P=C&&C.v8||"",A=p[k],O="process"==c(E),T=function(){},R=r=y.f,M=!!function(){try{var e=A.resolve(1),n=(e.constructor={})[t(127)("species")]=function(t){t(T,T)};return(O||"function"==typeof PromiseRejectionEvent)&&e.then(T)instanceof n&&0!==P.indexOf("6.6")&&-1===_.indexOf("Chrome/66")}catch(a){}}(),L=function(t){var e;return f(t)&&"function"==typeof(e=t.then)?e:!1},j=function(t,e){if(!t._n){t._n=!0;var n=t._c;b(function(){for(var a=t._v,r=1==t._s,i=0,o=function(e){var n,i,o,s=r?e.ok:e.fail,p=e.resolve,u=e.reject,c=e.domain;try{s?(r||(2==t._h&&F(t),t._h=1),s===!0?n=a:(c&&c.enter(),n=s(a),c&&(c.exit(),o=!0)),n===e.promise?u(S("Promise-chain cycle")):(i=L(n))?i.call(n,p,u):p(n)):u(a)}catch(l){c&&!o&&c.exit(),u(l)}};n.length>i;)o(n[i++]);t._c=[],t._n=!1,e&&!t._h&&D(t)})}},D=function(t){v.call(p,function(){var e,n,a,r=t._v,i=N(t);if(i&&(e=x(function(){O?E.emit("unhandledRejection",r,t):(n=p.onunhandledrejection)?n({promise:t,reason:r}):(a=p.console)&&a.error&&a.error("Unhandled promise rejection",r)}),t._h=O||N(t)?2:1),t._a=void 0,i&&e.e)throw e.v})},N=function(t){return 1!==t._h&&0===(t._a||t._c).length},F=function(t){v.call(p,function(){var e;O?E.emit("rejectionHandled",t):(e=p.onrejectionhandled)&&e({promise:t,reason:t._v})})},I=function(t){var e=this;e._d||(e._d=!0,e=e._w||e,e._v=t,e._s=2,e._a||(e._a=e._c.slice()),j(e,!0))},B=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw S("Promise can't be resolved itself");(e=L(t))?b(function(){var a={_w:n,_d:!1};try{e.call(t,u(B,a,1),u(I,a,1))}catch(r){I.call(a,r)}}):(n._v=t,n._s=1,j(n,!1))}catch(a){I.call({_w:n,_d:!1},a)}}};M||(A=function(t){h(this,A,k,"_h"),d(t),a.call(this);try{t(u(B,this,1),u(I,this,1))}catch(e){I.call(this,e)}},a=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},a.prototype=t(91)(A.prototype,{then:function(t,e){var n=R(g(this,A));return n.ok="function"==typeof t?t:!0,n.fail="function"==typeof e&&e,n.domain=O?E.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&j(this,!1),n.promise},"catch":function(t){return this.then(void 0,t)}}),i=function(){var t=new a;this.promise=t,this.resolve=u(B,t,1),this.reject=u(I,t,1)},y.f=R=function(t){return t===A||t===o?new i(t):r(t)}),l(l.G+l.W+l.F*!M,{Promise:A}),t(99)(A,k),t(98)(k),o=t(24)[k],l(l.S+l.F*!M,k,{reject:function(t){var e=R(this),n=e.reject;return n(t),e.promise}}),l(l.S+l.F*(s||!M),k,{resolve:function(t){return w(s&&this===o?A:this,t)}}),l(l.S+l.F*!(M&&t(57)(function(t){A.all(t)["catch"](T)})),k,{all:function(t){var e=this,n=R(e),a=n.resolve,r=n.reject,i=x(function(){var n=[],i=0,o=1;m(t,!1,function(t){var s=i++,p=!1;n.push(void 0),o++,e.resolve(t).then(function(t){p||(p=!0,n[s]=t,--o||a(n))},r)}),--o||a(n)});return i.e&&r(i.v),n.promise},race:function(t){var e=this,n=R(e),a=n.reject,r=x(function(){m(t,!1,function(t){e.resolve(t).then(n.resolve,a)})});return r.e&&a(r.v),n.promise}})},{102:102,111:111,123:123,127:127,18:18,24:24,26:26,34:34,4:4,40:40,41:41,52:52,57:57,60:60,68:68,69:69,7:7,88:88,89:89,91:91,98:98,99:99}],209:[function(t,e,n){var a=t(34),r=t(4),i=t(8),o=(t(41).Reflect||{}).apply,s=Function.apply;a(a.S+a.F*!t(36)(function(){o(function(){})}),"Reflect",{apply:function(t,e,n){var a=r(t),p=i(n);return o?o(a,e,p):s.call(a,e,p)}})},{34:34,36:36,4:4,41:41,8:8}],210:[function(t,e,n){var a=t(34),r=t(71),i=t(4),o=t(8),s=t(52),p=t(36),u=t(17),c=(t(41).Reflect||{}).construct,l=p(function(){function t(){}return!(c(function(){},[],t)instanceof t)}),f=!p(function(){c(function(){})});a(a.S+a.F*(l||f),"Reflect",{construct:function(t,e){i(t),o(e);var n=arguments.length<3?t:i(arguments[2]);if(f&&!l)return c(t,e,n);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var a=[null];return a.push.apply(a,e),new(u.apply(t,a))}var p=n.prototype,d=r(s(p)?p:Object.prototype),h=Function.apply.call(t,d,e);return s(h)?h:d}})},{17:17,34:34,36:36,4:4,41:41,52:52,71:71,8:8}],211:[function(t,e,n){var a=t(72),r=t(34),i=t(8),o=t(118);r(r.S+r.F*t(36)(function(){Reflect.defineProperty(a.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(t,e,n){i(t),e=o(e,!0),i(n);try{return a.f(t,e,n),!0}catch(r){return!1}}})},{118:118,34:34,36:36,72:72,8:8}],212:[function(t,e,n){var a=t(34),r=t(75).f,i=t(8);a(a.S,"Reflect",{deleteProperty:function(t,e){var n=r(i(t),e);return n&&!n.configurable?!1:delete t[e]}})},{34:34,75:75,8:8}],213:[function(t,e,n){"use strict";var a=t(34),r=t(8),i=function(t){this._t=r(t),this._i=0;var e,n=this._k=[];for(e in t)n.push(e)};t(55)(i,"Object",function(){var t,e=this,n=e._k;do if(e._i>=n.length)return{value:void 0,done:!0};while(!((t=n[e._i++])in e._t));return{value:t,done:!1}}),a(a.S,"Reflect",{enumerate:function(t){return new i(t)}})},{34:34,55:55,8:8}],214:[function(t,e,n){var a=t(75),r=t(34),i=t(8);r(r.S,"Reflect",{getOwnPropertyDescriptor:function(t,e){return a.f(i(t),e)}})},{34:34,75:75,8:8}],215:[function(t,e,n){var a=t(34),r=t(79),i=t(8);a(a.S,"Reflect",{getPrototypeOf:function(t){return r(i(t))}})},{34:34,79:79,8:8}],216:[function(t,e,n){function a(t,e){var n,s,c=arguments.length<3?t:arguments[2];return u(t)===c?t[e]:(n=r.f(t,e))?o(n,"value")?n.value:void 0!==n.get?n.get.call(c):void 0:p(s=i(t))?a(s,e,c):void 0}var r=t(75),i=t(79),o=t(42),s=t(34),p=t(52),u=t(8);s(s.S,"Reflect",{get:a})},{34:34,42:42,52:52,75:75,79:79,8:8}],217:[function(t,e,n){var a=t(34);a(a.S,"Reflect",{has:function(t,e){return e in t}})},{34:34}],218:[function(t,e,n){var a=t(34),r=t(8),i=Object.isExtensible;a(a.S,"Reflect",{isExtensible:function(t){return r(t),i?i(t):!0}})},{34:34,8:8}],219:[function(t,e,n){var a=t(34);a(a.S,"Reflect",{ownKeys:t(85)})},{34:34,85:85}],220:[function(t,e,n){var a=t(34),r=t(8),i=Object.preventExtensions;a(a.S,"Reflect",{preventExtensions:function(t){r(t);try{return i&&i(t),!0}catch(e){return!1}}})},{34:34,8:8}],221:[function(t,e,n){var a=t(34),r=t(97);r&&a(a.S,"Reflect",{setPrototypeOf:function(t,e){r.check(t,e);try{return r.set(t,e),!0}catch(n){return!1}}})},{34:34,97:97}],222:[function(t,e,n){function a(t,e,n){var p,f,d=arguments.length<4?t:arguments[3],h=i.f(c(t),e);if(!h){if(l(f=o(t)))return a(f,e,n,d);h=u(0)}if(s(h,"value")){if(h.writable===!1||!l(d))return!1;if(p=i.f(d,e)){if(p.get||p.set||p.writable===!1)return!1;p.value=n,r.f(d,e,p)}else r.f(d,e,u(0,n));return!0}return void 0===h.set?!1:(h.set.call(d,n),!0)}var r=t(72),i=t(75),o=t(79),s=t(42),p=t(34),u=t(90),c=t(8),l=t(52);p(p.S,"Reflect",{set:a})},{34:34,42:42,52:52,72:72,75:75,79:79,8:8,90:90}],223:[function(t,e,n){var a=t(41),r=t(46),i=t(72).f,o=t(77).f,s=t(53),p=t(38),u=a.RegExp,c=u,l=u.prototype,f=/a/g,d=/a/g,h=new u(f)!==f;if(t(30)&&(!h||t(36)(function(){return d[t(127)("match")]=!1,u(f)!=f||u(d)==d||"/a/i"!=u(f,"i")}))){u=function(t,e){var n=this instanceof u,a=s(t),i=void 0===e;return!n&&a&&t.constructor===u&&i?t:r(h?new c(a&&!i?t.source:t,e):c((a=t instanceof u)?t.source:t,a&&i?p.call(t):e),n?this:l,u)};for(var m=(function(t){t in u||i(u,t,{configurable:!0,get:function(){return c[t]},set:function(e){c[t]=e}})}),g=o(c),v=0;g.length>v;)m(g[v++]);l.constructor=u,u.prototype=l,t(92)(a,"RegExp",u)}t(98)("RegExp")},{127:127,30:30,36:36,38:38,41:41,46:46,53:53,72:72,77:77,92:92,98:98}],224:[function(t,e,n){t(30)&&"g"!=/./g.flags&&t(72).f(RegExp.prototype,"flags",{configurable:!0,get:t(38)})},{30:30,38:38,72:72}],225:[function(t,e,n){t(37)("match",1,function(t,e,n){return[function(n){"use strict";var a=t(this),r=void 0==n?void 0:n[e];return void 0!==r?r.call(n,a):RegExp(n)[e](a+"")},n]})},{37:37}],226:[function(t,e,n){t(37)("replace",2,function(t,e,n){return[function(a,r){"use strict";var i=t(this),o=void 0==a?void 0:a[e];return void 0!==o?o.call(a,i,r):n.call(i+"",a,r)},n]})},{37:37}],227:[function(t,e,n){t(37)("search",1,function(t,e,n){return[function(n){"use strict";var a=t(this),r=void 0==n?void 0:n[e];return void 0!==r?r.call(n,a):RegExp(n)[e](a+"")},n]})},{37:37}],228:[function(t,e,n){t(37)("split",2,function(e,n,a){"use strict";var r=t(53),i=a,o=[].push,s="split",p="length",u="lastIndex";if("c"=="abbc"[s](/(b)*/)[1]||4!="test"[s](/(?:)/,-1)[p]||2!="ab"[s](/(?:ab)*/)[p]||4!="."[s](/(.?)(.?)/)[p]||"."[s](/()()/)[p]>1||""[s](/.?/)[p]){var c=void 0===/()??/.exec("")[1];a=function(t,e){var n=this+"";if(void 0===t&&0===e)return[];if(!r(t))return i.call(n,t,e);var a,s,l,f,d,h=[],m=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),g=0,v=void 0===e?4294967295:e>>>0,b=RegExp(t.source,m+"g");for(c||(a=RegExp("^"+b.source+"$(?!\\s)",m));(s=b.exec(n))&&(l=s.index+s[0][p],!(l>g&&(h.push(n.slice(g,s.index)),!c&&s[p]>1&&s[0].replace(a,function(){for(d=1;d1&&s.index=v)));)b[u]===s.index&&b[u]++;return g===n[p]?(f||!b.test(""))&&h.push(""):h.push(n.slice(g)),h[p]>v?h.slice(0,v):h}}else"0"[s](void 0,0)[p]&&(a=function(t,e){return void 0===t&&0===e?[]:i.call(this,t,e)});return[function(t,r){var i=e(this),o=void 0==t?void 0:t[n];return void 0!==o?o.call(t,i,r):a.call(i+"",t,r)},a]})},{37:37,53:53}],229:[function(t,e,n){"use strict";t(224);var a=t(8),r=t(38),i=t(30),o="toString",s=/./[o],p=function(e){t(92)(RegExp.prototype,o,e,!0)};t(36)(function(){return"/a/b"!=s.call({source:"a",flags:"b"})})?p(function(){var t=a(this);return"/".concat(t.source,"/","flags"in t?t.flags:!i&&t instanceof RegExp?r.call(t):void 0)}):s.name!=o&&p(function(){return s.call(this)})},{224:224,30:30,36:36,38:38,8:8,92:92}],230:[function(t,e,n){"use strict";var a=t(20),r=t(124),i="Set";e.exports=t(23)(i,function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return a.def(r(this,i),t=0===t?0:t,t)}},a)},{124:124,20:20,23:23}],231:[function(t,e,n){"use strict";t(106)("anchor",function(t){return function(e){return t(this,"a","name",e)}})},{106:106}],232:[function(t,e,n){"use strict";t(106)("big",function(t){return function(){return t(this,"big","","")}})},{106:106}],233:[function(t,e,n){"use strict";t(106)("blink",function(t){return function(){return t(this,"blink","","")}})},{106:106}],234:[function(t,e,n){"use strict";t(106)("bold",function(t){return function(){return t(this,"b","","")}})},{106:106}],235:[function(t,e,n){"use strict";var a=t(34),r=t(104)(!1);a(a.P,"String",{codePointAt:function(t){return r(this,t)}})},{104:104,34:34}],236:[function(t,e,n){"use strict";var a=t(34),r=t(116),i=t(105),o="endsWith",s=""[o];a(a.P+a.F*t(35)(o),"String",{endsWith:function(t){var e=i(this,t,o),n=arguments.length>1?arguments[1]:void 0,a=r(e.length),p=void 0===n?a:Math.min(r(n),a),u=t+"";return s?s.call(e,u,p):e.slice(p-u.length,p)===u}})},{105:105,116:116,34:34,35:35}],237:[function(t,e,n){"use strict";t(106)("fixed",function(t){return function(){return t(this,"tt","","")}})},{106:106}],238:[function(t,e,n){"use strict";t(106)("fontcolor",function(t){return function(e){return t(this,"font","color",e)}})},{106:106}],239:[function(t,e,n){"use strict";t(106)("fontsize",function(t){return function(e){return t(this,"font","size",e)}})},{106:106}],240:[function(t,e,n){var a=t(34),r=t(112),i=String.fromCharCode,o=String.fromCodePoint;a(a.S+a.F*(!!o&&1!=o.length),"String",{fromCodePoint:function(t){for(var e,n=[],a=arguments.length,o=0;a>o;){if(e=+arguments[o++],r(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(65536>e?i(e):i(((e-=65536)>>10)+55296,e%1024+56320))}return n.join("")}})},{112:112,34:34}],241:[function(t,e,n){"use strict";var a=t(34),r=t(105),i="includes";a(a.P+a.F*t(35)(i),"String",{includes:function(t){return!!~r(this,t,i).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},{105:105,34:34,35:35}],242:[function(t,e,n){"use strict";t(106)("italics",function(t){return function(){return t(this,"i","","")}})},{106:106}],243:[function(t,e,n){"use strict";var a=t(104)(!0);t(56)(String,"String",function(t){this._t=t+"",this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=a(e,n),this._i+=t.length,{value:t,done:!1})})},{104:104,56:56}],244:[function(t,e,n){"use strict";t(106)("link",function(t){return function(e){return t(this,"a","href",e)}})},{106:106}],245:[function(t,e,n){var a=t(34),r=t(115),i=t(116);a(a.S,"String",{raw:function(t){for(var e=r(t.raw),n=i(e.length),a=arguments.length,o=[],s=0;n>s;)o.push(e[s++]+""),a>s&&o.push(arguments[s]+"");return o.join("")}})},{115:115,116:116,34:34}],246:[function(t,e,n){var a=t(34);a(a.P,"String",{repeat:t(108)})},{108:108,34:34}],247:[function(t,e,n){"use strict";t(106)("small",function(t){return function(){return t(this,"small","","")}})},{106:106}],248:[function(t,e,n){"use strict";var a=t(34),r=t(116),i=t(105),o="startsWith",s=""[o];a(a.P+a.F*t(35)(o),"String",{startsWith:function(t){var e=i(this,t,o),n=r(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),a=t+"";return s?s.call(e,a,n):e.slice(n,n+a.length)===a}})},{105:105,116:116,34:34,35:35}],249:[function(t,e,n){"use strict";t(106)("strike",function(t){return function(){return t(this,"strike","","")}})},{106:106}],250:[function(t,e,n){"use strict";t(106)("sub",function(t){return function(){return t(this,"sub","","")}})},{106:106}],251:[function(t,e,n){"use strict";t(106)("sup",function(t){return function(){return t(this,"sup","","")}})},{106:106}],252:[function(t,e,n){"use strict";t(109)("trim",function(t){return function(){return t(this,3)}})},{109:109}],253:[function(t,e,n){"use strict";var a=t(41),r=t(42),i=t(30),o=t(34),s=t(92),p=t(66).KEY,u=t(36),c=t(101),l=t(99),f=t(122),d=t(127),h=t(126),m=t(125),g=t(33),v=t(50),b=t(8),y=t(52),x=t(115),_=t(118),w=t(90),k=t(71),S=t(76),E=t(75),C=t(72),P=t(81),A=E.f,O=C.f,T=S.f,R=a.Symbol,M=a.JSON,L=M&&M.stringify,j="prototype",D=d("_hidden"),N=d("toPrimitive"),F={}.propertyIsEnumerable,I=c("symbol-registry"),B=c("symbols"),U=c("op-symbols"),q=Object[j],V="function"==typeof R,G=a.QObject,z=!G||!G[j]||!G[j].findChild,W=i&&u(function(){return 7!=k(O({},"a",{get:function(){return O(this,"a",{value:7}).a}})).a})?function(t,e,n){var a=A(q,e);a&&delete q[e],O(t,e,n),a&&t!==q&&O(q,e,a)}:O,H=function(t){var e=B[t]=k(R[j]);return e._k=t,e},Q=V&&"symbol"==typeof R.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof R},K=function(t,e,n){return t===q&&K(U,e,n),b(t),e=_(e,!0),b(n),r(B,e)?(n.enumerable?(r(t,D)&&t[D][e]&&(t[D][e]=!1),n=k(n,{enumerable:w(0,!1)})):(r(t,D)||O(t,D,w(1,{})),t[D][e]=!0),W(t,e,n)):O(t,e,n)},Y=function(t,e){b(t);for(var n,a=g(e=x(e)),r=0,i=a.length;i>r;)K(t,n=a[r++],e[n]);return t},$=function(t,e){return void 0===e?k(t):Y(k(t),e)},J=function(t){var e=F.call(this,t=_(t,!0));return this===q&&r(B,t)&&!r(U,t)?!1:e||!r(this,t)||!r(B,t)||r(this,D)&&this[D][t]?e:!0},X=function(t,e){if(t=x(t),e=_(e,!0),t!==q||!r(B,e)||r(U,e)){var n=A(t,e);return!n||!r(B,e)||r(t,D)&&t[D][e]||(n.enumerable=!0),n}},Z=function(t){for(var e,n=T(x(t)),a=[],i=0;n.length>i;)r(B,e=n[i++])||e==D||e==p||a.push(e);return a},tt=function(t){for(var e,n=t===q,a=T(n?U:x(t)),i=[],o=0;a.length>o;)r(B,e=a[o++])&&(n?r(q,e):!0)&&i.push(B[e]);return i};V||(R=function(){if(this instanceof R)throw TypeError("Symbol is not a constructor!");var t=f(arguments.length>0?arguments[0]:void 0),e=function(n){this===q&&e.call(U,n),r(this,D)&&r(this[D],t)&&(this[D][t]=!1),W(this,t,w(1,n))};return i&&z&&W(q,t,{configurable:!0,set:e}),H(t)},s(R[j],"toString",function(){return this._k}),E.f=X,C.f=K,t(77).f=S.f=Z,t(82).f=J,t(78).f=tt,i&&!t(60)&&s(q,"propertyIsEnumerable",J,!0),h.f=function(t){return H(d(t))}),o(o.G+o.W+o.F*!V,{Symbol:R});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nt=0;et.length>nt;)d(et[nt++]);for(var at=P(d.store),rt=0;at.length>rt;)m(at[rt++]);o(o.S+o.F*!V,"Symbol",{"for":function(t){return r(I,t+="")?I[t]:I[t]=R(t)},keyFor:function(t){if(!Q(t))throw TypeError(t+" is not a symbol!");for(var e in I)if(I[e]===t)return e},useSetter:function(){z=!0},useSimple:function(){z=!1}}),o(o.S+o.F*!V,"Object",{create:$,defineProperty:K,defineProperties:Y,getOwnPropertyDescriptor:X,getOwnPropertyNames:Z,getOwnPropertySymbols:tt}),M&&o(o.S+o.F*(!V||u(function(){var t=R();return"[null]"!=L([t])||"{}"!=L({a:t})||"{}"!=L(Object(t))})),"JSON",{stringify:function(t){for(var e,n,a=[t],r=1;arguments.length>r;)a.push(arguments[r++]);return n=e=a[1],!y(e)&&void 0===t||Q(t)?void 0:(v(e)||(e=function(t,e){return"function"==typeof n&&(e=n.call(this,t,e)),Q(e)?void 0:e}),a[1]=e,L.apply(M,a))}}),R[j][N]||t(43)(R[j],N,R[j].valueOf),l(R,"Symbol"),l(Math,"Math",!0),l(a.JSON,"JSON",!0)},{101:101,115:115,118:118,122:122,125:125,126:126,127:127,30:30,33:33,34:34,36:36,41:41,42:42,43:43,50:50,52:52,60:60,66:66,71:71,72:72,75:75,76:76,77:77,78:78,8:8,81:81,82:82,90:90,92:92,99:99}],254:[function(t,e,n){"use strict";var a=t(34),r=t(121),i=t(120),o=t(8),s=t(112),p=t(116),u=t(52),c=t(41).ArrayBuffer,l=t(102),f=i.ArrayBuffer,d=i.DataView,h=r.ABV&&c.isView,m=f.prototype.slice,g=r.VIEW,v="ArrayBuffer";a(a.G+a.W+a.F*(c!==f),{ArrayBuffer:f}),a(a.S+a.F*!r.CONSTR,v,{isView:function(t){return h&&h(t)||u(t)&&g in t}}),a(a.P+a.U+a.F*t(36)(function(){return!new f(2).slice(1,void 0).byteLength}),v,{slice:function(t,e){if(void 0!==m&&void 0===e)return m.call(o(this),t);for(var n=o(this).byteLength,a=s(t,n),r=s(void 0===e?n:e,n),i=new(l(this,f))(p(r-a)),u=new d(this),c=new d(i),h=0;r>a;)c.setUint8(h++,u.getUint8(a++));return i}}),t(98)(v)},{102:102,112:112,116:116,120:120,121:121,34:34,36:36,41:41,52:52,8:8,98:98}],255:[function(t,e,n){var a=t(34);a(a.G+a.W+a.F*!t(121).ABV,{DataView:t(120).DataView})},{120:120,121:121,34:34}],256:[function(t,e,n){t(119)("Float32",4,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],257:[function(t,e,n){t(119)("Float64",8,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],258:[function(t,e,n){t(119)("Int16",2,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],259:[function(t,e,n){t(119)("Int32",4,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],260:[function(t,e,n){t(119)("Int8",1,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],261:[function(t,e,n){t(119)("Uint16",2,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],262:[function(t,e,n){t(119)("Uint32",4,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],263:[function(t,e,n){t(119)("Uint8",1,function(t){return function(e,n,a){return t(this,e,n,a)}})},{119:119}],264:[function(t,e,n){t(119)("Uint8",1,function(t){return function(e,n,a){return t(this,e,n,a)}},!0)},{119:119}],265:[function(t,e,n){"use strict";var a,r=t(13)(0),i=t(92),o=t(66),s=t(70),p=t(22),u=t(52),c=t(36),l=t(124),f="WeakMap",d=o.getWeak,h=Object.isExtensible,m=p.ufstore,g={},v=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},b={get:function(t){if(u(t)){var e=d(t);return e===!0?m(l(this,f)).get(t):e?e[this._i]:void 0}},set:function(t,e){return p.def(l(this,f),t,e)}},y=e.exports=t(23)(f,v,b,p,!0,!0);c(function(){return 7!=(new y).set((Object.freeze||Object)(g),7).get(g)})&&(a=p.getConstructor(v,f),s(a.prototype,b),o.NEED=!0,r(["delete","has","get","set"],function(t){var e=y.prototype,n=e[t];i(e,t,function(e,r){if(u(e)&&!h(e)){this._f||(this._f=new a);var i=this._f[t](e,r);return"set"==t?this:i}return n.call(this,e,r)})}))},{124:124,13:13,22:22,23:23,36:36,52:52,66:66,70:70,92:92}],266:[function(t,e,n){"use strict";var a=t(22),r=t(124),i="WeakSet";t(23)(i,function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return a.def(r(this,i),t,!0)}},a,!1,!0)},{124:124,22:22,23:23}],267:[function(t,e,n){"use strict";var a=t(34),r=t(39),i=t(117),o=t(116),s=t(4),p=t(16);a(a.P,"Array",{flatMap:function(t){var e,n,a=i(this);return s(t),e=o(a.length),n=p(a,0),r(n,a,a,e,0,1,t,arguments[1]),n}}),t(6)("flatMap")},{116:116,117:117,16:16,34:34,39:39,4:4,6:6}],268:[function(t,e,n){"use strict";var a=t(34),r=t(39),i=t(117),o=t(116),s=t(114),p=t(16);a(a.P,"Array",{flatten:function(){var t=arguments[0],e=i(this),n=o(e.length),a=p(e,0);return r(a,e,e,n,0,void 0===t?1:s(t)),a}}),t(6)("flatten")},{114:114,116:116,117:117,16:16,34:34,39:39,6:6}],269:[function(t,e,n){"use strict";var a=t(34),r=t(12)(!0);a(a.P,"Array",{includes:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),t(6)("includes")},{12:12,34:34,6:6}],270:[function(t,e,n){var a=t(34),r=t(68)(),i=t(41).process,o="process"==t(19)(i);a(a.G,{asap:function(t){var e=o&&i.domain;r(e?e.bind(t):t)}})},{19:19,34:34,41:41,68:68}],271:[function(t,e,n){var a=t(34),r=t(19);a(a.S,"Error",{isError:function(t){return"Error"===r(t)}})},{19:19,34:34}],272:[function(t,e,n){var a=t(34);a(a.G,{global:t(41)})},{34:34,41:41}],273:[function(t,e,n){t(95)("Map")},{95:95}],274:[function(t,e,n){t(96)("Map")},{96:96}],275:[function(t,e,n){var a=t(34);a(a.P+a.R,"Map",{toJSON:t(21)("Map")})},{21:21,34:34}],276:[function(t,e,n){var a=t(34);a(a.S,"Math",{clamp:function(t,e,n){return Math.min(n,Math.max(e,t))}})},{34:34}],277:[function(t,e,n){var a=t(34);a(a.S,"Math",{DEG_PER_RAD:Math.PI/180})},{34:34}],278:[function(t,e,n){var a=t(34),r=180/Math.PI;a(a.S,"Math",{degrees:function(t){return t*r}})},{34:34}],279:[function(t,e,n){var a=t(34),r=t(64),i=t(62);a(a.S,"Math",{fscale:function(t,e,n,a,o){return i(r(t,e,n,a,o))}})},{34:34,62:62,64:64}],280:[function(t,e,n){var a=t(34);a(a.S,"Math",{iaddh:function(t,e,n,a){var r=t>>>0,i=e>>>0,o=n>>>0;return i+(a>>>0)+((r&o|(r|o)&~(r+o>>>0))>>>31)|0}})},{34:34}],281:[function(t,e,n){var a=t(34);a(a.S,"Math",{imulh:function(t,e){var n=65535,a=+t,r=+e,i=a&n,o=r&n,s=a>>16,p=r>>16,u=(s*o>>>0)+(i*o>>>16);return s*p+(u>>16)+((i*p>>>0)+(u&n)>>16)}})},{34:34}],282:[function(t,e,n){var a=t(34);a(a.S,"Math",{isubh:function(t,e,n,a){var r=t>>>0,i=e>>>0,o=n>>>0;return i-(a>>>0)-((~r&o|~(r^o)&r-o>>>0)>>>31)|0}})},{34:34}],283:[function(t,e,n){var a=t(34);a(a.S,"Math",{RAD_PER_DEG:180/Math.PI})},{34:34}],284:[function(t,e,n){var a=t(34),r=Math.PI/180;a(a.S,"Math",{radians:function(t){return t*r}})},{34:34}],285:[function(t,e,n){var a=t(34);a(a.S,"Math",{scale:t(64)})},{34:34,64:64}],286:[function(t,e,n){var a=t(34);a(a.S,"Math",{signbit:function(t){return(t=+t)!=t?t:0==t?1/t==1/0:t>0}})},{34:34}],287:[function(t,e,n){var a=t(34);a(a.S,"Math",{umulh:function(t,e){var n=65535,a=+t,r=+e,i=a&n,o=r&n,s=a>>>16,p=r>>>16,u=(s*o>>>0)+(i*o>>>16);return s*p+(u>>>16)+((i*p>>>0)+(u&n)>>>16)}})},{34:34}],288:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(4),o=t(72);t(30)&&a(a.P+t(74),"Object",{__defineGetter__:function(t,e){o.f(r(this),t,{get:i(e),enumerable:!0,configurable:!0})}})},{117:117,30:30,34:34,4:4,72:72,74:74}],289:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(4),o=t(72);t(30)&&a(a.P+t(74),"Object",{__defineSetter__:function(t,e){o.f(r(this),t,{set:i(e),enumerable:!0,configurable:!0})}})},{117:117,30:30,34:34,4:4,72:72,74:74}],290:[function(t,e,n){var a=t(34),r=t(84)(!0);a(a.S,"Object",{entries:function(t){return r(t)}})},{34:34,84:84}],291:[function(t,e,n){var a=t(34),r=t(85),i=t(115),o=t(75),s=t(25);a(a.S,"Object",{getOwnPropertyDescriptors:function(t){for(var e,n,a=i(t),p=o.f,u=r(a),c={},l=0;u.length>l;)n=p(a,e=u[l++]),void 0!==n&&s(c,e,n);return c}})},{115:115,25:25,34:34,75:75,85:85}],292:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(118),o=t(79),s=t(75).f;t(30)&&a(a.P+t(74),"Object",{__lookupGetter__:function(t){var e,n=r(this),a=i(t,!0);do if(e=s(n,a))return e.get;while(n=o(n))}})},{117:117,118:118,30:30,34:34,74:74,75:75,79:79}],293:[function(t,e,n){"use strict";var a=t(34),r=t(117),i=t(118),o=t(79),s=t(75).f;t(30)&&a(a.P+t(74),"Object",{__lookupSetter__:function(t){var e,n=r(this),a=i(t,!0);do if(e=s(n,a))return e.set;while(n=o(n))}})},{117:117,118:118,30:30,34:34,74:74,75:75,79:79}],294:[function(t,e,n){var a=t(34),r=t(84)(!1);a(a.S,"Object",{values:function(t){return r(t)}})},{34:34,84:84}],295:[function(t,e,n){"use strict";var a=t(34),r=t(41),i=t(24),o=t(68)(),s=t(127)("observable"),p=t(4),u=t(8),c=t(7),l=t(91),f=t(43),d=t(40),h=d.RETURN,m=function(t){return null==t?void 0:p(t)},g=function(t){var e=t._c;e&&(t._c=void 0,e())},v=function(t){return void 0===t._o},b=function(t){v(t)||(t._o=void 0,g(t))},y=function(t,e){u(t),this._c=void 0,this._o=t,t=new x(this);try{var n=e(t),a=n;null!=n&&("function"==typeof n.unsubscribe?n=function(){a.unsubscribe()}:p(n),this._c=n)}catch(r){return void t.error(r)}v(this)&&g(this)};y.prototype=l({},{unsubscribe:function(){b(this)}});var x=function(t){this._s=t};x.prototype=l({},{next:function(t){var e=this._s;if(!v(e)){var n=e._o;try{var a=m(n.next);if(a)return a.call(n,t)}catch(r){try{b(e)}finally{throw r}}}},error:function(t){var e=this._s;if(v(e))throw t;var n=e._o;e._o=void 0;try{var a=m(n.error);if(!a)throw t;t=a.call(n,t)}catch(r){try{g(e)}finally{throw r}}return g(e),t},complete:function(t){var e=this._s;if(!v(e)){var n=e._o;e._o=void 0;try{var a=m(n.complete);t=a?a.call(n,t):void 0}catch(r){try{g(e)}finally{throw r}}return g(e),t}}});var _=function(t){c(this,_,"Observable","_f")._f=p(t)};l(_.prototype,{subscribe:function(t){return new y(t,this._f)},forEach:function(t){var e=this;return new(i.Promise||r.Promise)(function(n,a){p(t);var r=e.subscribe({next:function(e){try{return t(e)}catch(n){a(n),r.unsubscribe()}},error:a,complete:n})})}}),l(_,{from:function(t){var e="function"==typeof this?this:_,n=m(u(t)[s]);if(n){var a=u(n.call(t));return a.constructor===e?a:new e(function(t){return a.subscribe(t)})}return new e(function(e){var n=!1;return o(function(){if(!n){try{if(d(t,!1,function(t){return e.next(t),n?h:void 0})===h)return}catch(a){if(n)throw a;return void e.error(a)}e.complete()}}),function(){n=!0}})},of:function(){for(var t=0,e=arguments.length,n=Array(e);e>t;)n[t]=arguments[t++];return new("function"==typeof this?this:_)(function(t){var e=!1;return o(function(){if(!e){for(var a=0;a1?arguments[1]:void 0,!1)}})},{107:107,123:123,34:34}],313:[function(t,e,n){"use strict";var a=t(34),r=t(107),i=t(123);a(a.P+a.F*/Version\/10\.\d+(\.\d+)? Safari\//.test(i),"String",{padStart:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},{107:107,123:123,34:34}],314:[function(t,e,n){"use strict";t(109)("trimLeft",function(t){return function(){return t(this,1)}},"trimStart")},{109:109}],315:[function(t,e,n){"use strict";t(109)("trimRight",function(t){return function(){return t(this,2)}},"trimEnd")},{109:109}],316:[function(t,e,n){t(125)("asyncIterator")},{125:125}],317:[function(t,e,n){t(125)("observable")},{125:125}],318:[function(t,e,n){var a=t(34);a(a.S,"System",{global:t(41) -})},{34:34,41:41}],319:[function(t,e,n){t(95)("WeakMap")},{95:95}],320:[function(t,e,n){t(96)("WeakMap")},{96:96}],321:[function(t,e,n){t(95)("WeakSet")},{95:95}],322:[function(t,e,n){t(96)("WeakSet")},{96:96}],323:[function(t,e,n){for(var a=t(140),r=t(81),i=t(92),o=t(41),s=t(43),p=t(59),u=t(127),c=u("iterator"),l=u("toStringTag"),f=p.Array,d={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},h=r(d),m=0;m2,r=a?o.call(arguments,2):!1;return t(a?function(){("function"==typeof e?e:Function(e)).apply(this,r)}:e,n)}};r(r.G+r.B+r.F*s,{setTimeout:p(a.setTimeout),setInterval:p(a.setInterval)})},{123:123,34:34,41:41}],326:[function(t,e,n){t(253),t(190),t(192),t(191),t(194),t(196),t(201),t(195),t(193),t(203),t(202),t(198),t(199),t(197),t(189),t(200),t(204),t(205),t(156),t(158),t(157),t(207),t(206),t(177),t(187),t(188),t(178),t(179),t(180),t(181),t(182),t(183),t(184),t(185),t(186),t(160),t(161),t(162),t(163),t(164),t(165),t(166),t(167),t(168),t(169),t(170),t(171),t(172),t(173),t(174),t(175),t(176),t(240),t(245),t(252),t(243),t(235),t(236),t(241),t(246),t(248),t(231),t(232),t(233),t(234),t(237),t(238),t(239),t(242),t(244),t(247),t(249),t(250),t(251),t(151),t(153),t(152),t(155),t(154),t(139),t(137),t(144),t(141),t(147),t(149),t(136),t(143),t(133),t(148),t(131),t(146),t(145),t(138),t(142),t(130),t(132),t(135),t(134),t(150),t(140),t(223),t(229),t(224),t(225),t(226),t(227),t(228),t(208),t(159),t(230),t(265),t(266),t(254),t(255),t(260),t(263),t(264),t(258),t(261),t(259),t(262),t(256),t(257),t(209),t(210),t(211),t(212),t(213),t(216),t(214),t(215),t(217),t(218),t(219),t(220),t(222),t(221),t(269),t(267),t(268),t(310),t(313),t(312),t(314),t(315),t(311),t(316),t(317),t(291),t(294),t(290),t(288),t(289),t(292),t(293),t(275),t(309),t(274),t(308),t(320),t(322),t(273),t(307),t(319),t(321),t(272),t(318),t(271),t(276),t(277),t(278),t(279),t(280),t(282),t(281),t(283),t(284),t(285),t(287),t(286),t(296),t(297),t(298),t(299),t(301),t(300),t(303),t(302),t(304),t(305),t(306),t(270),t(295),t(325),t(324),t(323),e.exports=t(24)},{130:130,131:131,132:132,133:133,134:134,135:135,136:136,137:137,138:138,139:139,140:140,141:141,142:142,143:143,144:144,145:145,146:146,147:147,148:148,149:149,150:150,151:151,152:152,153:153,154:154,155:155,156:156,157:157,158:158,159:159,160:160,161:161,162:162,163:163,164:164,165:165,166:166,167:167,168:168,169:169,170:170,171:171,172:172,173:173,174:174,175:175,176:176,177:177,178:178,179:179,180:180,181:181,182:182,183:183,184:184,185:185,186:186,187:187,188:188,189:189,190:190,191:191,192:192,193:193,194:194,195:195,196:196,197:197,198:198,199:199,200:200,201:201,202:202,203:203,204:204,205:205,206:206,207:207,208:208,209:209,210:210,211:211,212:212,213:213,214:214,215:215,216:216,217:217,218:218,219:219,220:220,221:221,222:222,223:223,224:224,225:225,226:226,227:227,228:228,229:229,230:230,231:231,232:232,233:233,234:234,235:235,236:236,237:237,238:238,239:239,24:24,240:240,241:241,242:242,243:243,244:244,245:245,246:246,247:247,248:248,249:249,250:250,251:251,252:252,253:253,254:254,255:255,256:256,257:257,258:258,259:259,260:260,261:261,262:262,263:263,264:264,265:265,266:266,267:267,268:268,269:269,270:270,271:271,272:272,273:273,274:274,275:275,276:276,277:277,278:278,279:279,280:280,281:281,282:282,283:283,284:284,285:285,286:286,287:287,288:288,289:289,290:290,291:291,292:292,293:293,294:294,295:295,296:296,297:297,298:298,299:299,300:300,301:301,302:302,303:303,304:304,305:305,306:306,307:307,308:308,309:309,310:310,311:311,312:312,313:313,314:314,315:315,316:316,317:317,318:318,319:319,320:320,321:321,322:322,323:323,324:324,325:325}],327:[function(t,e,n){!function(t){"use strict";function e(){return c.createDocumentFragment()}function n(t){return c.createElement(t)}function a(t){if(1===t.length)return r(t[0]);for(var n=e(),a=B.call(t),i=0;i-1}}([].indexOf||function(t){for(U=this.length;U--&&this[U]!==t;);return U}),item:function(t){return this[t]||null},remove:function(){for(var t,e=0;e=p?e(i):document.fonts.load(u(i,i.family),s).then(function(e){1<=e.length?t(i):setTimeout(f,25)},function(){e(i)})};f()}else n(function(){function n(){var e;(e=-1!=g&&-1!=v||-1!=g&&-1!=b||-1!=v&&-1!=b)&&((e=g!=v&&g!=b&&v!=b)||(null===l&&(e=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent),l=!!e&&(536>parseInt(e[1],10)||536===parseInt(e[1],10)&&11>=parseInt(e[2],10))),e=l&&(g==y&&v==y&&b==y||g==x&&v==x&&b==x||g==_&&v==_&&b==_)),e=!e),e&&(null!==w.parentNode&&w.parentNode.removeChild(w),clearTimeout(k),t(i))}function f(){if((new Date).getTime()-c>=p)null!==w.parentNode&&w.parentNode.removeChild(w),e(i);else{var t=document.hidden;(!0===t||void 0===t)&&(g=d.a.offsetWidth,v=h.a.offsetWidth,b=m.a.offsetWidth,n()),k=setTimeout(f,50)}}var d=new a(s),h=new a(s),m=new a(s),g=-1,v=-1,b=-1,y=-1,x=-1,_=-1,w=document.createElement("div"),k=0;w.dir="ltr",r(d,u(i,"sans-serif")),r(h,u(i,"serif")),r(m,u(i,"monospace")),w.appendChild(d.a),w.appendChild(h.a),w.appendChild(m.a),document.body.appendChild(w),y=d.a.offsetWidth,x=h.a.offsetWidth,_=m.a.offsetWidth,f(),o(d,function(t){g=t,n()}),r(d,u(i,'"'+i.family+'",sans-serif')),o(h,function(t){v=t,n()}),r(h,u(i,'"'+i.family+'",serif')),o(m,function(t){b=t,n()}),r(m,u(i,'"'+i.family+'",monospace'))})})},window.FontFaceObserver=s,window.FontFaceObserver.prototype.check=s.prototype.a,void 0!==e&&(e.exports=window.FontFaceObserver)}()},{}],330:[function(t,e,n){!function(t,n){function a(t,e){var n=t.createElement("p"),a=t.getElementsByTagName("head")[0]||t.documentElement;return n.innerHTML="x",a.insertBefore(n.lastChild,a.firstChild)}function r(){var t=x.elements;return"string"==typeof t?t.split(" "):t}function i(t,e){var n=x.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof t&&(t=t.join(" ")),x.elements=n+" "+t,c(e)}function o(t){var e=y[t[v]];return e||(e={},b++,t[v]=b,y[b]=e),e}function s(t,e,a){if(e||(e=n),f)return e.createElement(t);a||(a=o(e));var r;return r=a.cache[t]?a.cache[t].cloneNode():g.test(t)?(a.cache[t]=a.createElem(t)).cloneNode():a.createElem(t),!r.canHaveChildren||m.test(t)||r.tagUrn?r:a.frag.appendChild(r)}function p(t,e){if(t||(t=n),f)return t.createDocumentFragment();e=e||o(t);for(var a=e.frag.cloneNode(),i=0,s=r(),p=s.length;p>i;i++)a.createElement(s[i]);return a}function u(t,e){e.cache||(e.cache={},e.createElem=t.createElement,e.createFrag=t.createDocumentFragment,e.frag=e.createFrag()),t.createElement=function(n){return x.shivMethods?s(n,t,e):e.createElem(n)},t.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+r().join().replace(/[\w\-:]+/g,function(t){return e.createElem(t),e.frag.createElement(t),'c("'+t+'")'})+");return n}")(x,e.frag)}function c(t){t||(t=n);var e=o(t);return!x.shivCSS||l||e.hasCSS||(e.hasCSS=!!a(t,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),f||u(t,e),t}var l,f,d="3.7.3-pre",h=t.html5||{},m=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,g=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",b=0,y={};!function(){try{var t=n.createElement("a");t.innerHTML="",l="hidden"in t,f=1==t.childNodes.length||function(){n.createElement("a");var t=n.createDocumentFragment();return void 0===t.cloneNode||void 0===t.createDocumentFragment||void 0===t.createElement}()}catch(e){l=!0,f=!0}}();var x={elements:h.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:d,shivCSS:h.shivCSS!==!1,supportsUnknownElements:f,shivMethods:h.shivMethods!==!1,type:"default",shivDocument:c,createElement:s,createDocumentFragment:p,addElements:i};t.html5=x,c(n),"object"==typeof e&&e.exports&&(e.exports=x)}("undefined"!=typeof window?window:this,document)},{}],331:[function(t,e,n){(function(t){(function(t){!function(t){function e(t,e,n,a){for(var i,o,s=n.slice(),p=r(e,t),u=0,c=s.length;c>u&&(i=s[u],"object"==typeof i?"function"==typeof i.handleEvent&&i.handleEvent(p):i.call(t,p),!p.stoppedImmediatePropagation);u++);return o=!p.stoppedPropagation,a&&o&&t.parentNode?t.parentNode.dispatchEvent(p):!p.defaultPrevented}function n(t,e){return{configurable:!0,get:t,set:e}}function a(t,e,a){var r=y(e||t,a);v(t,"textContent",n(function(){return r.get.call(this)},function(t){r.set.call(this,t)}))}function r(t,e){return t.currentTarget=e,t.eventPhase=t.target===t.currentTarget?2:3,t}function i(t,e){for(var n=t.length;n--&&t[n]!==e;);return n}function o(){if("BR"===this.tagName)return"\n";for(var t=this.firstChild,e=[];t;)8!==t.nodeType&&7!==t.nodeType&&e.push(t.textContent),t=t.nextSibling;return e.join("")}function s(t){var e=document.createEvent("Event");e.initEvent("input",!0,!0),(t.srcElement||t.fromElement||document).dispatchEvent(e)}function p(t){!d&&S.test(document.readyState)&&(d=!d,document.detachEvent(h,p),t=document.createEvent("Event"),t.initEvent(m,!0,!0),document.dispatchEvent(t))}function u(t){return function(){return P[t]||document.body&&document.body[t]||0}}function c(t){for(var e;e=this.lastChild;)this.removeChild(e);null!=t&&this.appendChild(document.createTextNode(t))}function l(e,n){return n||(n=t.event),n.target||(n.target=n.srcElement||n.fromElement||document),n.timeStamp||(n.timeStamp=(new Date).getTime()),n}if(!document.createEvent){var f=!0,d=!1,h="onreadystatechange",m="DOMContentLoaded",g="__IE8__"+Math.random(),v=Object.defineProperty||function(t,e,n){t[e]=n.value},b=Object.defineProperties||function(e,n){for(var a in n)if(x.call(n,a))try{v(e,a,n[a])}catch(r){t.console&&console.log(a+" failed on object:",e,r.message)}},y=Object.getOwnPropertyDescriptor,x=Object.prototype.hasOwnProperty,_=t.Element.prototype,w=t.Text.prototype,k=/^[a-z]+$/,S=/loaded|complete/,E={},C=document.createElement("div"),P=document.documentElement,A=P.removeAttribute,O=P.setAttribute,T=function(t){return{enumerable:!0,writable:!0,configurable:!0,value:t}};a(t.HTMLCommentElement.prototype,_,"nodeValue"),a(t.HTMLScriptElement.prototype,null,"text"),a(w,null,"nodeValue"),a(t.HTMLTitleElement.prototype,null,"text"),v(t.HTMLStyleElement.prototype,"textContent",function(t){return n(function(){return t.get.call(this.styleSheet)},function(e){t.set.call(this.styleSheet,e)})}(y(t.CSSStyleSheet.prototype,"cssText")));var R=/\b\s*alpha\s*\(\s*opacity\s*=\s*(\d+)\s*\)/;v(t.CSSStyleDeclaration.prototype,"opacity",{get:function(){var t=this.filter.match(R);return t?""+t[1]/100:""},set:function(t){this.zoom=1;var e=!1;t=1>t?" alpha(opacity="+Math.round(100*t)+")":"",this.filter=this.filter.replace(R,function(){return e=!0,t}),!e&&t&&(this.filter+=t)}}),b(_,{textContent:{get:o,set:c},firstElementChild:{get:function(){for(var t=this.childNodes||[],e=0,n=t.length;n>e;e++)if(1==t[e].nodeType)return t[e]}},lastElementChild:{get:function(){for(var t=this.childNodes||[],e=t.length;e--;)if(1==t[e].nodeType)return t[e]}},oninput:{get:function(){return this._oninput||null},set:function(t){this._oninput&&(this.removeEventListener("input",this._oninput),this._oninput=t,t&&this.addEventListener("input",t))}},previousElementSibling:{get:function(){for(var t=this.previousSibling;t&&1!=t.nodeType;)t=t.previousSibling;return t}},nextElementSibling:{get:function(){for(var t=this.nextSibling;t&&1!=t.nodeType;)t=t.nextSibling;return t}},childElementCount:{get:function(){for(var t=0,e=this.childNodes||[],n=e.length;n--;t+=1==e[n].nodeType);return t}},addEventListener:T(function(t,n,a){if("function"==typeof n||"object"==typeof n){var r,o,p=this,u="on"+t,c=p[g]||v(p,g,{value:{}})[g],f=c[u]||(c[u]={}),d=f.h||(f.h=[]);if(!x.call(f,"w")){if(f.w=function(t){return t[g]||e(p,l(p,t),d,!1)},!x.call(E,u))if(k.test(t)){try{r=document.createEventObject(),r[g]=!0,9!=p.nodeType&&(null==p.parentNode&&C.appendChild(p),(o=p.getAttribute(u))&&A.call(p,u)),p.fireEvent(u,r),E[u]=!0}catch(h){for(E[u]=!1;C.hasChildNodes();)C.removeChild(C.firstChild)}null!=o&&O.call(p,u,o)}else E[u]=!1;(f.n=E[u])&&p.attachEvent(u,f.w)}i(d,n)<0&&d[a?"unshift":"push"](n),"input"===t&&p.attachEvent("onkeyup",s)}}),dispatchEvent:T(function(t){var n,a=this,r="on"+t.type,i=a[g],o=i&&i[r],s=!!o;return t.target||(t.target=a),s?o.n?a.fireEvent(r,t):e(a,t,o.h,!0):(n=a.parentNode)?n.dispatchEvent(t):!0,!t.defaultPrevented}),removeEventListener:T(function(t,e,n){if("function"==typeof e||"object"==typeof e){var a=this,r="on"+t,o=a[g],s=o&&o[r],p=s&&s.h,u=p?i(p,e):-1;u>-1&&p.splice(u,1)}})}),b(w,{addEventListener:T(_.addEventListener),dispatchEvent:T(_.dispatchEvent),removeEventListener:T(_.removeEventListener)}),b(t.XMLHttpRequest.prototype,{addEventListener:T(function(t,e,n){var a=this,r="on"+t,o=a[g]||v(a,g,{value:{}})[g],s=o[r]||(o[r]={}),p=s.h||(s.h=[]);i(p,e)<0&&(a[r]||(a[r]=function(){var e=document.createEvent("Event");e.initEvent(t,!0,!0),a.dispatchEvent(e)}),p[n?"unshift":"push"](e))}),dispatchEvent:T(function(t){var n=this,a="on"+t.type,r=n[g],i=r&&r[a],o=!!i;return o&&(i.n?n.fireEvent(a,t):e(n,t,i.h,!0))}),removeEventListener:T(_.removeEventListener)});var M=y(Event.prototype,"button").get;b(t.Event.prototype,{bubbles:T(!0),cancelable:T(!0),preventDefault:T(function(){this.cancelable&&(this.returnValue=!1)}),stopPropagation:T(function(){this.stoppedPropagation=!0,this.cancelBubble=!0}),stopImmediatePropagation:T(function(){this.stoppedImmediatePropagation=!0,this.stopPropagation()}),initEvent:T(function(t,e,n){this.type=t,this.bubbles=!!e,this.cancelable=!!n,this.bubbles||this.stopPropagation()}),pageX:{get:function(){return this._pageX||(this._pageX=this.clientX+t.scrollX-(P.clientLeft||0))}},pageY:{get:function(){return this._pageY||(this._pageY=this.clientY+t.scrollY-(P.clientTop||0))}},which:{get:function(){return this.keyCode?this.keyCode:isNaN(this.button)?void 0:this.button+1}},charCode:{get:function(){return this.keyCode&&"keypress"==this.type?this.keyCode:0}},buttons:{get:function(){return M.call(this)}},button:{get:function(){var t=this.buttons;return 1&t?0:2&t?2:4&t?1:void 0}},defaultPrevented:{get:function(){var t,e=this.returnValue;return!(e===t||e)}},relatedTarget:{get:function(){var t=this.type;return"mouseover"===t?this.fromElement:"mouseout"===t?this.toElement:null}}}),b(t.HTMLDocument.prototype,{defaultView:{get:function(){return this.parentWindow}},textContent:{get:function(){return 11===this.nodeType?o.call(this):null},set:function(t){11===this.nodeType&&c.call(this,t)}},addEventListener:T(function(e,n,a){var r=this;_.addEventListener.call(r,e,n,a),f&&e===m&&!S.test(r.readyState)&&(f=!1,r.attachEvent(h,p),t==top&&!function i(t){try{r.documentElement.doScroll("left"),p()}catch(e){setTimeout(i,50)}}())}),dispatchEvent:T(_.dispatchEvent),removeEventListener:T(_.removeEventListener),createEvent:T(function(t){var e;if("Event"!==t)throw Error("unsupported "+t);return e=document.createEventObject(),e.timeStamp=(new Date).getTime(),e})}),b(t.Window.prototype,{getComputedStyle:T(function(){function t(t){this._=t}function e(){}var n=/^(?:[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|))(?!px)[a-z%]+$/,a=/^(top|right|bottom|left)$/,r=/\-([a-z])/g,i=function(t,e){return e.toUpperCase()};return t.prototype.getPropertyValue=function(t){var e,o,s,p=this._,u=p.style,c=p.currentStyle,l=p.runtimeStyle;return"opacity"==t?u.opacity||"1":(t=("float"===t?"style-float":t).replace(r,i),e=c?c[t]:u[t],n.test(e)&&!a.test(t)&&(o=u.left,s=l&&l.left,s&&(l.left=c.left),u.left="fontSize"===t?"1em":e,e=u.pixelLeft+"px",u.left=o,s&&(l.left=s)),null==e?e:e+""||"auto")},e.prototype.getPropertyValue=function(){return null},function(n,a){return a?new e(n):new t(n)}}()),addEventListener:T(function(n,a,r){var o,s=t,p="on"+n;s[p]||(s[p]=function(t){return e(s,l(s,t),o,!1)&&void 0}),o=s[p][g]||(s[p][g]=[]),i(o,a)<0&&o[r?"unshift":"push"](a)}),dispatchEvent:T(function(e){var n=t["on"+e.type];return n?n.call(t,e)!==!1&&!e.defaultPrevented:!0}),removeEventListener:T(function(e,n,a){var r="on"+e,o=(t[r]||Object)[g],s=o?i(o,n):-1;s>-1&&o.splice(s,1)}),pageXOffset:{get:u("scrollLeft")},pageYOffset:{get:u("scrollTop")},scrollX:{get:u("scrollLeft")},scrollY:{get:u("scrollTop")},innerWidth:{get:u("clientWidth")},innerHeight:{get:u("clientHeight")}}),t.HTMLElement=t.Element,function(t,e,n){for(n=0;na;a++)e.appendChild(n[a].cloneNode(!0));return e},n.cloneRange=function(){var t=new e;return t._start=this._start,t._end=this._end,t},n.deleteContents=function(){for(var e=this._start.parentNode,n=t(this._start,this._end),a=0,r=n.length;r>a;a++)e.removeChild(n[a])},n.extractContents=function(){for(var e=this._start.ownerDocument.createDocumentFragment(),n=t(this._start,this._end),a=0,r=n.length;r>a;a++)e.appendChild(n[a]);return e},n.setEndAfter=function(t){this._end=t},n.setEndBefore=function(t){this._end=t.previousSibling},n.setStartAfter=function(t){this._start=t.nextSibling},n.setStartBefore=function(t){this._start=t}}}()}}(this.window||t)}).call(this,void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],332:[function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{"default":t}}function r(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e=s)return(0,p["default"])({points:n});for(var l=1;s-1>=l;l++)i.push((0,u.times)(a,(0,u.minus)(n[l],n[l-1])));for(var f=[(0,u.plus)(n[0],c(i[0],i[1]))],l=1;s-2>=l;l++)f.push((0,u.minus)(n[l],(0,u.average)([i[l],i[l-1]])));f.push((0,u.minus)(n[s-1],c(i[s-2],i[s-3])));var d=f[0],h=f[1],m=n[0],g=n[1],v=(e=(0,o["default"])()).moveto.apply(e,r(m)).curveto(d[0],d[1],h[0],h[1],g[0],g[1]);return{path:(0,u.range)(2,s).reduce(function(t,e){var a=f[e],r=n[e];return t.smoothcurveto(a[0],a[1],r[0],r[1])},v),centroid:(0,u.average)(n)}},e.exports=n["default"]},{335:335,336:336,337:337}],333:[function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),i=t(334),o=a(i),s=t(335),p=1e-5,u=function(t,e){var n=t.map(e),a=n.sort(function(t,e){var n=r(t,2),a=n[0],i=(n[1],r(e,2)),o=i[0];i[1];return a-o}),i=a.length,o=a[0][0],u=a[i-1][0],c=(0,s.minBy)(a,function(t){return t[1]}),l=(0,s.maxBy)(a,function(t){return t[1]});return o==u&&(u+=p),c==l&&(l+=p),{points:a,xmin:o,xmax:u,ymin:c,ymax:l}};n["default"]=function(t){var e=t.data,n=t.xaccessor,a=t.yaccessor,i=t.width,p=t.height,c=t.closed,l=t.min,f=t.max;n||(n=function(t){var e=r(t,2),n=e[0];e[1];return n}),a||(a=function(t){var e=r(t,2),n=(e[0],e[1]);return n});var d=function(t){return[n(t),a(t)]},h=e.map(function(t){return u(t,d)}),m=(0,s.minBy)(h,function(t){return t.xmin}),g=(0,s.maxBy)(h,function(t){return t.xmax}),v=null==l?(0,s.minBy)(h,function(t){return t.ymin}):l,b=null==f?(0,s.maxBy)(h,function(t){return t.ymax}):f;c&&(v=Math.min(v,0),b=Math.max(b,0));var y=c?0:v,x=(0,o["default"])([m,g],[0,i]),_=(0,o["default"])([v,b],[p,0]),w=function(t){var e=r(t,2),n=e[0],a=e[1];return[x(n),_(a)]};return{arranged:h,scale:w,xscale:x,yscale:_,base:y}},e.exports=n["default"]},{334:334,335:335}],334:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function i(t,e){var n=a(t,2),r=n[0],o=n[1],s=a(e,2),p=s[0],u=s[1],c=function(t){return p+(u-p)*(t-r)/(o-r)};return c.inverse=function(){return i([p,u],[r,o])},c};n["default"]=r,e.exports=n["default"]},{}],335:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function(t){return t.reduce(function(t,e){return t+e},0)},i=function(t){return t.reduce(function(t,e){return Math.min(t,e)})},o=function(t){return t.reduce(function(t,e){return Math.max(t,e)})},s=function(t,e){return t.reduce(function(t,n){return t+e(n)},0)},p=function(t,e){return t.reduce(function(t,n){return Math.min(t,e(n))},1/0)},u=function(t,e){return t.reduce(function(t,n){return Math.max(t,e(n))},-(1/0))},c=function(t,e){var n=a(t,2),r=n[0],i=n[1],o=a(e,2),s=o[0],p=o[1];return[r+s,i+p]},l=function(t,e){var n=a(t,2),r=n[0],i=n[1],o=a(e,2),s=o[0],p=o[1];return[r-s,i-p]},f=function(t,e){var n=a(e,2),r=n[0],i=n[1];return[t*r,t*i]},d=function(t){var e=a(t,2),n=e[0],r=e[1];return Math.sqrt(n*n+r*r)},h=function(t){return t.reduce(c,[0,0])},m=function(t){return f(1/t.length,t.reduce(c))},g=function(t,e){return f(t,[Math.sin(e),-Math.cos(e)])},v=function(t,e){var n=t||{};for(var a in n){var r=n[a];e[a]=r(e.index,e.item,e.group)}return e},b=function(t,e,n){for(var a=[],r=t;e>r;r++)a.push(r);return n&&a.push(e),a},y=function(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=Object.keys(t)[Symbol.iterator]();!(a=(o=s.next()).done);a=!0){var p=o.value,u=t[p];n.push(e(p,u))}}catch(c){r=!0,i=c}finally{ -try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n},x=function(t){return y(t,function(t,e){return[t,e]})},_=function(t){return t};n.sum=r,n.min=i,n.max=o,n.sumBy=s,n.minBy=p,n.maxBy=u,n.plus=c,n.minus=l,n.times=f,n.id=_,n.length=d,n.sumVectors=h,n.average=m,n.onCircle=g,n.enhance=v,n.range=b,n.mapObject=y,n.pairs=x,n["default"]={sum:r,min:i,max:o,sumBy:s,minBy:p,maxBy:u,plus:c,minus:l,times:f,id:_,length:d,sumVectors:h,average:m,onCircle:g,enhance:v,range:b,mapObject:y,pairs:x}},{}],336:[function(t,e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=function i(t){var e=t||[],n=function(t,e){var n=t.slice(0,t.length);return n.push(e),n},r=function(t,e){var n=a(t,2),r=n[0],i=n[1],o=a(e,2),s=o[0],p=o[1];return r===s&&i===p},o=function(t,e){for(var n=t.length;"0"===t.charAt(n-1);)n-=1;return"."===t.charAt(n-1)&&(n-=1),t.substr(0,n)},s=function(t,e){var n=t.toFixed(e);return o(n)},p=function(t){var e=t.command,n=t.params,a=n.map(function(t){return s(t,6)});return e+" "+a.join(" ")},u=function(t,e){var n=t.command,r=t.params,i=a(e,2),o=i[0],s=i[1];switch(n){case"M":return[r[0],r[1]];case"L":return[r[0],r[1]];case"H":return[r[0],s];case"V":return[o,r[0]];case"Z":return null;case"C":return[r[4],r[5]];case"S":return[r[2],r[3]];case"Q":return[r[2],r[3]];case"T":return[r[0],r[1]];case"A":return[r[5],r[6]]}},c=function(t,e){return function(n){var a="object"==typeof n?t.map(function(t){return n[t]}):arguments;return e.apply(null,a)}},l=function(t){return i(n(e,t))};return{moveto:c(["x","y"],function(t,e){return l({command:"M",params:[t,e]})}),lineto:c(["x","y"],function(t,e){return l({command:"L",params:[t,e]})}),hlineto:c(["x"],function(t){return l({command:"H",params:[t]})}),vlineto:c(["y"],function(t){return l({command:"V",params:[t]})}),closepath:function(){return l({command:"Z",params:[]})},curveto:c(["x1","y1","x2","y2","x","y"],function(t,e,n,a,r,i){return l({command:"C",params:[t,e,n,a,r,i]})}),smoothcurveto:c(["x2","y2","x","y"],function(t,e,n,a){return l({command:"S",params:[t,e,n,a]})}),qcurveto:c(["x1","y1","x","y"],function(t,e,n,a){return l({command:"Q",params:[t,e,n,a]})}),smoothqcurveto:c(["x","y"],function(t,e){return l({command:"T",params:[t,e]})}),arc:c(["rx","ry","xrot","largeArcFlag","sweepFlag","x","y"],function(t,e,n,a,r,i,o){return l({command:"A",params:[t,e,n,a,r,i,o]})}),print:function(){return e.map(p).join(" ")},points:function(){var t=[],n=[0,0],a=!0,r=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(a=(o=s.next()).done);a=!0){var p=o.value,c=u(p,n);n=c,c&&t.push(c)}}catch(l){r=!0,i=l}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return t},instructions:function(){return e.slice(0,e.length)},connect:function(t){var e=this.points(),n=e[e.length-1],a=t.points()[0],o=t.instructions().slice(1);return r(n,a)||o.unshift({command:"L",params:a}),i(this.instructions().concat(o))}}};n["default"]=function(){return r()},e.exports=n["default"]},{}],337:[function(t,e,n){"use strict";function a(t){return t&&t.__esModule?t:{"default":t}}function r(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];for(var r,i;i=n.shift();)for(r in i)Mo.call(i,r)&&(t[r]=i[r]);return t}function r(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];return n.forEach(function(e){for(var n in e)!e.hasOwnProperty(n)||n in t||(t[n]=e[n])}),t}function i(t){return"[object Array]"===Lo.call(t)}function o(t){return jo.test(Lo.call(t))}function s(t,e){return null===t&&null===e?!0:"object"==typeof t||"object"==typeof e?!1:t===e}function p(t){return!isNaN(parseFloat(t))&&isFinite(t)}function u(t){return t&&"[object Object]"===Lo.call(t)}function c(t,e){return t.replace(/%s/g,function(){return e.shift()})}function l(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];throw t=c(t,n),Error(t)}function f(){Mg.DEBUG&&Oo.apply(null,arguments)}function d(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];t=c(t,n),To(t,n)}function h(t){for(var e=arguments.length,n=Array(e>1?e-1:0),a=1;e>a;a++)n[a-1]=arguments[a];t=c(t,n),Do[t]||(Do[t]=!0,To(t,n))}function m(){Mg.DEBUG&&d.apply(null,arguments)}function g(){Mg.DEBUG&&h.apply(null,arguments)}function v(t,e,n){var a=b(t,e,n);return a?a[t][n]:null}function b(t,e,n){for(;e;){if(n in e[t])return e;if(e.isolated)return null;e=e.parent}}function y(t){return function(){return t}}function x(t){var e,n,a,r,i,o;for(e=t.split("."),(n=zo[e.length])||(n=_(e.length)),i=[],a=function(t,n){return t?"*":e[n]},r=n.length;r--;)o=n[r].map(a).join("."),i.hasOwnProperty(o)||(i.push(o),i[o]=!0);return i}function _(t){var e,n,a,r,i,o,s,p,u="";if(!zo[t]){for(a=[];u.length=i;i+=1){for(n=i.toString(2);n.lengtho;o++)p.push(r(n[o]));a[i]=p}zo[t]=a}return zo[t]}function w(t,e,n,a){var r=t[e];if(!r||!r.equalsOrStartsWith(a)&&r.equalsOrStartsWith(n))return t[e]=r?r.replace(n,a):a,!0}function k(t){var e=t.slice(2);return"i"===t[1]&&p(e)?+e:e}function S(t){return null==t?t:(Qo.hasOwnProperty(t)||(Qo[t]=new Ko(t)),Qo[t])}function E(t,e){function n(e,n){var a,r,o;return n.isRoot?o=[].concat(Object.keys(t.viewmodel.data),Object.keys(t.viewmodel.mappings),Object.keys(t.viewmodel.computations)):(a=t.viewmodel.wrapped[n.str],r=a?a.get():t.viewmodel.get(n),o=r?Object.keys(r):null),o&&o.forEach(function(t){"_ractive"===t&&i(r)||e.push(n.join(t))}),e}var a,r,o;for(a=e.str.split("."),o=[$o];r=a.shift();)"*"===r?o=o.reduce(n,[]):o[0]===$o?o[0]=S(r):o=o.map(C(r));return o}function C(t){return function(e){return e.join(t)}}function P(t){return t?t.replace(Wo,".$1"):""}function A(t,e,n){if("string"!=typeof e||!p(n))throw Error("Bad arguments");var a=void 0,r=void 0;if(/\*/.test(e))return r={},E(t,S(P(e))).forEach(function(e){var a=t.viewmodel.get(e);if(!p(a))throw Error(Xo);r[e.str]=a+n}),t.set(r);if(a=t.get(e),!p(a))throw Error(Xo);return t.set(e,+a+n)}function O(t,e){return Jo(this,t,void 0===e?1:+e)}function T(t){this.event=t,this.method="on"+t,this.deprecate=as[t]}function R(t,e){var n=t.indexOf(e);-1===n&&t.push(e)}function M(t,e){for(var n=0,a=t.length;a>n;n++)if(t[n]==e)return!0;return!1}function L(t,e){var n;if(!i(t)||!i(e))return!1;if(t.length!==e.length)return!1;for(n=t.length;n--;)if(t[n]!==e[n])return!1;return!0}function j(t){return"string"==typeof t?[t]:void 0===t?[]:t}function D(t){return t[t.length-1]}function N(t,e){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}function F(t){for(var e=[],n=t.length;n--;)e[n]=t[n];return e}function I(t){setTimeout(t,0)}function B(t,e){return function(){for(var n;n=t.shift();)n(e)}}function U(t,e,n,a){var r;if(e===t)throw new TypeError("A promise's fulfillment handler cannot return the same promise");if(e instanceof rs)e.then(n,a);else if(!e||"object"!=typeof e&&"function"!=typeof e)n(e);else{try{r=e.then}catch(i){return void a(i)}if("function"==typeof r){var o,s,p;s=function(e){o||(o=!0,U(t,e,n,a))},p=function(t){o||(o=!0,a(t))};try{r.call(e,s,p)}catch(i){if(!o)return a(i),void(o=!0)}}else n(e)}}function q(t,e,n){var a;return e=P(e),"~/"===e.substr(0,2)?(a=S(e.substring(2)),z(t,a.firstKey,n)):"."===e[0]?(a=V(cs(n),e),a&&z(t,a.firstKey,n)):a=G(t,S(e),n),a}function V(t,e){var n;if(void 0!=t&&"string"!=typeof t&&(t=t.str),"."===e)return S(t);if(n=t?t.split("."):[],"../"===e.substr(0,3)){for(;"../"===e.substr(0,3);){if(!n.length)throw Error('Could not resolve reference - too many "../" prefixes');n.pop(),e=e.substring(3)}return n.push(e),S(n.join("."))}return S(t?t+e.replace(/^\.\//,"."):e.replace(/^\.\/?/,""))}function G(t,e,n,a){var r,i,o,s,p;if(e.isRoot)return e;for(i=e.firstKey;n;)if(r=n.context,n=n.parent,r&&(s=!0,o=t.viewmodel.get(r),o&&("object"==typeof o||"function"==typeof o)&&i in o))return r.join(e.str);return W(t.viewmodel,i)?e:t.parent&&!t.isolated&&(s=!0,n=t.component.parentFragment,i=S(i),p=G(t.parent,i,n,!0))?(t.viewmodel.map(i,{origin:t.parent.viewmodel,keypath:p}),e):a||s?void 0:(t.viewmodel.set(e,void 0),e)}function z(t,e){var n;!t.parent||t.isolated||W(t.viewmodel,e)||(e=S(e),(n=G(t.parent,e,t.component.parentFragment,!0))&&t.viewmodel.map(e,{origin:t.parent.viewmodel,keypath:n}))}function W(t,e){return""===e||e in t.data||e in t.computations||e in t.mappings}function H(t){t.teardown()}function Q(t){t.unbind()}function K(t){t.unrender()}function Y(t){t.cancel()}function $(t){t.detach()}function J(t){t.detachNodes()}function X(t){!t.ready||t.outros.length||t.outroChildren||(t.outrosComplete||(t.parent?t.parent.decrementOutros(t):t.detachNodes(),t.outrosComplete=!0),t.intros.length||t.totalChildren||("function"==typeof t.callback&&t.callback(),t.parent&&t.parent.decrementTotal()))}function Z(){for(var t,e,n;ds.ractives.length;)e=ds.ractives.pop(),n=e.viewmodel.applyChanges(),n&&vs.fire(e,n);for(tt(),t=0;t=0;i--)r=t._subs[e[i]],r&&(s=vt(t,r,n,a)&&s);if(Gs.dequeue(t),t.parent&&s){if(o&&t.component){var p=t.component.name+"."+e[e.length-1];e=S(p).wildcardMatches(),n&&(n.component=t)}gt(t.parent,e,n,a)}}function vt(t,e,n,a){var r=null,i=!1;n&&!n._noArg&&(a=[n].concat(a)),e=e.slice();for(var o=0,s=e.length;s>o;o+=1)e[o].apply(t,a)===!1&&(i=!0);return n&&!n._noArg&&i&&(r=n.original)&&(r.preventDefault&&r.preventDefault(),r.stopPropagation&&r.stopPropagation()),!i}function bt(t){var e={args:Array.prototype.slice.call(arguments,1)};zs(this,t,e)}function yt(t){var e;return t=S(P(t)),e=this.viewmodel.get(t,Qs),void 0===e&&this.parent&&!this.isolated&&ls(this,t.str,this.component.parentFragment)&&(e=this.viewmodel.get(t)),e}function xt(e,n){if(!this.fragment.rendered)throw Error("The API has changed - you must call `ractive.render(target[, anchor])` to render your Ractive instance. Once rendered you can use `ractive.insert()`.");if(e=t(e),n=t(n)||null,!e)throw Error("You must specify a valid target to insert into");e.insertBefore(this.detach(),n),this.el=e,(e.__ractive_instances__||(e.__ractive_instances__=[])).push(this),this.detached=null,_t(this)}function _t(t){Ys.fire(t),t.findAllComponents("*").forEach(function(t){_t(t.instance)})}function wt(t,e,n){var a,r;return t=S(P(t)),a=this.viewmodel.get(t),i(a)&&i(e)?(r=bs.start(this,!0),this.viewmodel.merge(t,a,e,n),bs.end(),r):this.set(t,e,n&&n.complete)}function kt(t,e){var n,a;return n=E(t,e),a={},n.forEach(function(e){a[e.str]=t.get(e.str)}),a}function St(t,e,n,a){var r,i,o;e=S(P(e)),a=a||cp,e.isPattern?(r=new pp(t,e,n,a),t.viewmodel.patternObservers.push(r),i=!0):r=new Zs(t,e,n,a),r.init(a.init),t.viewmodel.register(e,r,i?"patternObservers":"observers"),r.ready=!0;var s={cancel:function(){var n;o||(i?(n=t.viewmodel.patternObservers.indexOf(r),t.viewmodel.patternObservers.splice(n,1),t.viewmodel.unregister(e,r,"patternObservers")):t.viewmodel.unregister(e,r,"observers"),o=!0)}};return t._observers.push(s),s}function Et(t,e,n){var a,r,i,o;if(u(t)){n=e,r=t,a=[];for(t in r)r.hasOwnProperty(t)&&(e=r[t],a.push(this.observe(t,e,n)));return{cancel:function(){for(;a.length;)a.pop().cancel()}}}if("function"==typeof t)return n=e,e=t,t="",up(this,t,e,n);if(i=t.split(" "),1===i.length)return up(this,t,e,n);for(a=[],o=i.length;o--;)t=i[o],t&&a.push(up(this,t,e,n));return{cancel:function(){for(;a.length;)a.pop().cancel()}}}function Ct(t,e,n){var a=this.observe(t,function(){e.apply(this,arguments),a.cancel()},{init:!1,defer:n&&n.defer});return a}function Pt(t,e){var n,a=this;if(t)n=t.split(" ").map(dp).filter(hp),n.forEach(function(t){var n,r;(n=a._subs[t])&&(e?(r=n.indexOf(e),-1!==r&&n.splice(r,1)):a._subs[t]=[])});else for(t in this._subs)delete this._subs[t];return this}function At(t,e){var n,a,r,i=this;if("object"==typeof t){n=[];for(a in t)t.hasOwnProperty(a)&&n.push(this.on(a,t[a]));return{cancel:function(){for(var t;t=n.pop();)t.cancel()}}}return r=t.split(" ").map(dp).filter(hp),r.forEach(function(t){(i._subs[t]||(i._subs[t]=[])).push(e)}),{cancel:function(){return i.off(t,e)}}}function Ot(t,e){var n=this.on(t,function(){e.apply(this,arguments),n.cancel()});return n}function Tt(t,e,n){var a,r,i,o,s,p,u=[];if(a=Rt(t,e,n),!a)return null;for(r=t.length,s=a.length-2-a[1],i=Math.min(r,a[0]),o=i+a[1],p=0;i>p;p+=1)u.push(p);for(;o>p;p+=1)u.push(-1);for(;r>p;p+=1)u.push(p+s);return 0!==s?u.touchedFrom=a[0]:u.touchedFrom=t.length,u}function Rt(t,e,n){switch(e){case"splice":for(void 0!==n[0]&&n[0]<0&&(n[0]=t.length+Math.max(n[0],-t.length));n.length<2;)n.push(0);return n[1]=Math.min(n[1],t.length-n[0]),n;case"sort":case"reverse":return null;case"pop":return t.length?[t.length-1,1]:[0,0];case"push":return[t.length,0].concat(n);case"shift":return[0,t.length?1:0];case"unshift":return[0,0].concat(n)}}function Mt(e,n){var a,r,i,o=this;if(i=this.transitionsEnabled,this.noIntro&&(this.transitionsEnabled=!1),a=bs.start(this,!0),bs.scheduleTask(function(){return Rp.fire(o)},!0),this.fragment.rendered)throw Error("You cannot call ractive.render() on an already rendered instance! Call ractive.unrender() first");if(e=t(e)||this.el,n=t(n)||this.anchor,this.el=e,this.anchor=n,!this.append&&e){var s=e.__ractive_instances__;s&&s.length&&Lt(s),e.innerHTML=""}return this.cssId&&Op.apply(),e&&((r=e.__ractive_instances__)?r.push(this):e.__ractive_instances__=[this],n?e.insertBefore(this.fragment.render(),n):e.appendChild(this.fragment.render())),bs.end(),this.transitionsEnabled=i,a.then(function(){return Mp.fire(o)})}function Lt(t){t.splice(0,t.length).forEach(H)}function jt(t,e){for(var n=t.slice(),a=e.length;a--;)~n.indexOf(e[a])||n.push(e[a]);return n}function Dt(t,e){var n,a,r;return a='[data-ractive-css~="{'+e+'}"]',r=function(t){var e,n,r,i,o,s,p,u=[];for(e=[];n=Ip.exec(t);)e.push({str:n[0],base:n[1],modifiers:n[2]});for(i=e.map(Ft),p=e.length;p--;)s=i.slice(),r=e[p],s[p]=r.base+a+r.modifiers||"",o=i.slice(),o[p]=a+" "+o[p],u.push(s.join(" "),o.join(" "));return u.join(", ")},n=Up.test(t)?t.replace(Up,a):t.replace(Fp,"").replace(Np,function(t,e){var n,a;return Bp.test(e)?t:(n=e.split(",").map(Nt),a=n.map(r).join(", ")+" ",t.replace(e,a))})}function Nt(t){return t.trim?t.trim():t.replace(/^\s+/,"").replace(/\s+$/,"")}function Ft(t){return t.str}function It(t){t&&t.constructor!==Object&&("function"==typeof t||("object"!=typeof t?l("data option must be an object or a function, `"+t+"` is not valid"):m("If supplied, options.data should be a plain JavaScript object - using a non-POJO as the root object may work, but is discouraged")))}function Bt(t,e){It(e);var n="function"==typeof t,a="function"==typeof e;return e||n||(e={}),n||a?function(){var r=a?Ut(e,this):e,i=n?Ut(t,this):t;return qt(r,i)}:qt(e,t)}function Ut(t,e){var n=t.call(e);if(n)return"object"!=typeof n&&l("Data function must return an object"),n.constructor!==Object&&g("Data function returned something other than a plain JavaScript object. This might work, but is strongly discouraged"),n}function qt(t,e){if(t&&e){for(var n in e)n in t||(t[n]=e[n]);return t}return t||e}function Vt(t){var e=So(Kp);return e.parse=function(e,n){return Gt(e,n||t)},e}function Gt(t,e){if(!Hp)throw Error("Missing Ractive.parse - cannot parse template. Either preparse or use the version that includes the parser");return Hp(t,e||this.options)}function zt(t,e){var n;if(!Xi){if(e&&e.noThrow)return;throw Error("Cannot retrieve template #"+t+" as Ractive is not running in a browser.")}if(Wt(t)&&(t=t.substring(1)),!(n=document.getElementById(t))){if(e&&e.noThrow)return;throw Error("Could not find template element with id #"+t)}if("SCRIPT"!==n.tagName.toUpperCase()){if(e&&e.noThrow)return;throw Error("Template element with id #"+t+", must be a