diff --git a/code/_helpers/game.dm b/code/_helpers/game.dm index c9727a8a98..e1c5d574f7 100644 --- a/code/_helpers/game.dm +++ b/code/_helpers/game.dm @@ -701,4 +701,31 @@ if(isobj(A) || ismob(A)) hear |= recursive_mob_check(A, hear, 3, 1, 0, 1) - return hear \ No newline at end of file + return hear + +/proc/get_belly(var/atom/A) // return a belly we're in, one way or another; and if we aren't (or are too deep to comprehend being in belly), returns null + var/atom/loc_check = A.loc + var/recursion_level = 0 + while(loc_check && !isbelly(loc_check) && !isturf(loc_check)) + if(recursion_level > 7) // abstractly picked number, but basically means we tried going 8 levels up. Something is wrong if youre THAT deep anyway + break + loc_check = loc_check.loc + recursion_level++ + if(isbelly(loc_check)) + return loc_check + return null + +/proc/get_all_prey_recursive(var/mob/living/L, var/client_check = 1) // returns all prey inside the target as well all prey of target's prey, as well as all prey inside target's prey, etc. + var/list/result = list() + + if(!istype(L) || !(L.vore_organs) || !(L.vore_organs.len)) + return result + + for(var/obj/belly/B in L.vore_organs) + for(var/mob/living/P in B.contents) + if(istype(P)) + if(client_check && P.client) + result |= P + result |= get_all_prey_recursive(P, client_check) + + return result \ No newline at end of file diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index f1a7f22248..a3a8d56372 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -114,8 +114,10 @@ #define ui_temp "EAST-1:28,CENTER-2:13" #define ui_health "EAST-1:28,CENTER-1:15" #define ui_internal "EAST-1:28,CENTER:17" +#define ui_under_health "EAST-1:28,CENTER-2:13" //borgs #define ui_borg_health "EAST-1:28,CENTER-2:13" //borgs have the health display where humans have the pressure damage indicator. +#define ui_borg_under_health "EAST-1:31,CENTER-3:13" #define ui_alien_health "EAST-1:28,CENTER-2:13" //aliens have the health display where humans have the pressure damage indicator. #define ui_ling_chemical_display "EAST-1:28,CENTER-3:15" diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 239d5890d1..f6a72abd94 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -160,6 +160,13 @@ using.alpha = HUD.ui_alpha adding += using + using = new /obj/screen/useself() + using.icon = HUD.ui_style + using.screen_loc = ui_swaphand2 + using.color = HUD.ui_color + using.alpha = HUD.ui_alpha + adding |= using + inv_box = new /obj/screen/inventory/hand() inv_box.hud = HUD inv_box.name = "r_hand" @@ -257,6 +264,57 @@ healths.screen_loc = ui_health hud_elements |= healths + autowhisper_display = new /obj/screen() + autowhisper_display.icon = 'icons/mob/screen/minimalist.dmi' + autowhisper_display.icon_state = "autowhisper" + autowhisper_display.name = "autowhisper" + autowhisper_display.screen_loc = ui_under_health + hud_elements |= autowhisper_display + + var/obj/screen/aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "aw-select" + aw.name = "autowhisper mode" + aw.screen_loc = ui_under_health + hud_elements |= aw + + aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "lang" + aw.name = "check known languages" + aw.screen_loc = ui_under_health + hud_elements |= aw + + aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "pose" + aw.name = "set pose" + aw.screen_loc = ui_under_health + hud_elements |= aw + + aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "up" + aw.name = "move upwards" + aw.screen_loc = ui_under_health + hud_elements |= aw + + aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "down" + aw.name = "move downwards" + aw.screen_loc = ui_under_health + hud_elements |= aw + + aw = new /obj/screen() + aw.icon = HUD.ui_style + aw.icon_state = "use" + aw.name = "use held item on self" + aw.screen_loc = ui_swaphand2 + using.color = HUD.ui_color + using.alpha = HUD.ui_alpha + adding |= using + //VOREStation Addition begin shadekin_display = new /obj/screen/shadekin() shadekin_display.screen_loc = ui_shadekin_display @@ -364,3 +422,15 @@ /obj/screen/wizard/energy name = "energy" icon_state = "wiz_energy" + +/obj/screen/useself + name = "use held item on self" + icon_state = "use" + var/next = 0 + +/obj/screen/useself/proc/can_use(var/mob/living/carbon/human/h, var/obj/item/i) //Basically trying to use the item this way skips the cooldown + if(world.time >= next) //And trying to check the cooldown doesn't work because when you click the UI it sets a cooldown + next = h.get_attack_speed(i) //So instead we'll just put a cooldown on the use button and apply the item's cooldown to the player + h.setClickCooldown(next) //Otherwise you can click the button and yourself faster than the normal cooldown. SO WE SET BOTH!!!! + next += world.time + i.attack(h, h) diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index ab878af67c..055b915384 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -11,7 +11,7 @@ var/obj/screen/robot_inventory var/list/adding = list() var/list/other = list() - + HUD.adding = adding HUD.other = other @@ -90,6 +90,48 @@ var/obj/screen/robot_inventory healths.screen_loc = ui_borg_health other += healths + autowhisper_display = new /obj/screen() + autowhisper_display.icon = 'icons/mob/screen/minimalist.dmi' + autowhisper_display.icon_state = "autowhisper" + autowhisper_display.name = "autowhisper" + autowhisper_display.screen_loc = ui_borg_under_health + other |= autowhisper_display + + var/obj/screen/aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "aw-select" + aw.name = "autowhisper mode" + aw.screen_loc = ui_borg_under_health + other |= aw + + aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "lang" + aw.name = "check known languages" + aw.screen_loc = ui_borg_under_health + other |= aw + + aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "pose" + aw.name = "set pose" + aw.screen_loc = ui_borg_under_health + other |= aw + + aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "up" + aw.name = "move upwards" + aw.screen_loc = ui_borg_under_health + other |= aw + + aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "down" + aw.name = "move downwards" + aw.screen_loc = ui_borg_under_health + other |= aw + //Installed Module hands = new /obj/screen() hands.icon = HUD.ui_style diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 72e2219ad8..dde89b98ab 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -454,6 +454,37 @@ if("drop") if(usr.client) usr.client.drop_item() + if("autowhisper") + if(isliving(usr)) + var/mob/living/u = usr + u.toggle_autowhisper() + if("autowhisper mode") + if(isliving(usr)) + var/mob/living/u = usr + u.autowhisper_mode() + if("check known languages") + usr.check_languages() + if("set pose") + if(ishuman(usr)) + var/mob/living/carbon/human/u = usr + u.pose() + else if (issilicon(usr)) + var/mob/living/silicon/u = usr + u.pose() + if("move upwards") + usr.up() + if("move downwards") + usr.down() + + if("use held item on self") + var/obj/screen/useself/s = src + if(ishuman(usr)) + var/mob/living/carbon/human/u = usr + var/obj/item/i = u.get_active_hand() + if(i) + s.can_use(u,i) + else + to_chat(usr, "You're not holding anything to use. You need to have something in your active hand to use it.") if("module") if(isrobot(usr)) diff --git a/code/game/objects/items/devices/communicator/helper.dm b/code/game/objects/items/devices/communicator/helper.dm index 9048adc2db..8d169f62c1 100644 --- a/code/game/objects/items/devices/communicator/helper.dm +++ b/code/game/objects/items/devices/communicator/helper.dm @@ -20,7 +20,7 @@ // Values were extracted from the template itself results = list( list("entry" = "Pressure", "units" = "kPa", "val" = "[round(pressure,0.1)]", "bad_high" = 120, "poor_high" = 110, "poor_low" = 95, "bad_low" = 80), - list("entry" = "Temperature", "units" = "°C", "val" = "[round(environment.temperature-T0C,0.1)]", "bad_high" = 35, "poor_high" = 25, "poor_low" = 15, "bad_low" = 5), + list("entry" = "Temperature", "units" = "\u00B0" + "C", "val" = "[round(environment.temperature-T0C,0.1)]", "bad_high" = 35, "poor_high" = 25, "poor_low" = 15, "bad_low" = 5), list("entry" = "Oxygen", "units" = "kPa", "val" = "[round(o2_level*100,0.1)]", "bad_high" = 140, "poor_high" = 135, "poor_low" = 19, "bad_low" = 17), list("entry" = "Nitrogen", "units" = "kPa", "val" = "[round(n2_level*100,0.1)]", "bad_high" = 105, "poor_high" = 85, "poor_low" = 50, "bad_low" = 40), list("entry" = "Carbon Dioxide", "units" = "kPa", "val" = "[round(co2_level*100,0.1)]", "bad_high" = 10, "poor_high" = 5, "poor_low" = 0, "bad_low" = 0), diff --git a/code/game/objects/items/weapons/storage/boxes_vr.dm b/code/game/objects/items/weapons/storage/boxes_vr.dm index dd5ff003f4..dbb9ab8760 100644 --- a/code/game/objects/items/weapons/storage/boxes_vr.dm +++ b/code/game/objects/items/weapons/storage/boxes_vr.dm @@ -38,4 +38,13 @@ starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/canned/brainzsnax/red = 6) /obj/item/weapon/storage/box/freezer - can_hold = list(/obj/item/organ, /obj/item/weapon/reagent_containers/blood, /obj/item/weapon/reagent_containers/glass, /obj/item/weapon/reagent_containers/food) \ No newline at end of file + can_hold = list(/obj/item/organ, /obj/item/weapon/reagent_containers/blood, /obj/item/weapon/reagent_containers/glass, /obj/item/weapon/reagent_containers/food) + +/obj/item/weapon/storage/box/altevian_ammo + name = "SAM .48 ammo box" + desc = "A box of ratty ammo." + icon_state = "secbox" + starts_with = list(/obj/item/ammo_magazine/sam48 = 3) + max_storage_space = ITEMSIZE_COST_NORMAL * 3 + drop_sound = 'sound/items/drop/ammobox.ogg' + pickup_sound = 'sound/items/pickup/ammobox.ogg' \ No newline at end of file diff --git a/code/game/objects/micro_structures.dm b/code/game/objects/micro_structures.dm index 79516c0c93..37b1d927cc 100644 --- a/code/game/objects/micro_structures.dm +++ b/code/game/objects/micro_structures.dm @@ -55,9 +55,56 @@ if(8) pixel_x = -32 +/obj/structure/micro_tunnel/proc/find_destinations() + var/list/destinations = list() + var/turf/myturf = get_turf(src.loc) + var/datum/planet/planet + for(var/datum/planet/P in SSplanets.planets) + if(myturf.z in P.expected_z_levels) + planet = P + else + for(var/obj/structure/micro_tunnel/t in world) + if(t == src) + continue + if(magic || t.magic) + destinations |= t + continue + if(t.z == z) + destinations |= t + continue + var/turf/targetturf = get_turf(t.loc) + if(planet) + if(targetturf.z in planet.expected_z_levels) + destinations |= t + continue + else + var/above = GetAbove(myturf) + if(above && t.z == z + 1) + destinations |= t + continue + var/below = GetBelow(myturf) + if(below && t.z == z - 1) + destinations |= t + return destinations + /obj/structure/micro_tunnel/attack_hand(mob/living/user) - if(!isliving(user)) + tunnel_interact(user) + return ..() + +/obj/structure/micro_tunnel/attack_generic(mob/user, damage, attack_verb) + tunnel_interact(user) + return ..() + +/obj/structure/micro_tunnel/attack_robot(mob/living/user) + var/turf/hole = get_turf(src) //Borgs can click stuff from far away, let's make sure they're next to the hole + var/turf/borg = get_turf(user) + if(hole.AdjacentQuick(borg)) + tunnel_interact(user) return ..() + +/obj/structure/micro_tunnel/proc/tunnel_interact(mob/living/user) + if(!isliving(user)) + return if(user.loc == src) var/list/our_options = list("Exit", "Move") @@ -83,35 +130,7 @@ to_chat(user, "You can't do that unless you're in \the [src].") return - var/list/destinations = list() - var/turf/myturf = get_turf(src.loc) - var/datum/planet/planet - for(var/datum/planet/P in SSplanets.planets) - if(myturf.z in P.expected_z_levels) - planet = P - else - for(var/obj/structure/micro_tunnel/t in world) - if(t == src) - continue - if(magic || t.magic) - destinations |= t - continue - if(t.z == z) - destinations |= t - continue - var/turf/targetturf = get_turf(t.loc) - if(planet) - if(targetturf.z in planet.expected_z_levels) - destinations |= t - continue - else - var/above = GetAbove(myturf) - if(above && t.z == z + 1) - destinations |= t - continue - var/below = GetBelow(myturf) - if(below && t.z == z - 1) - destinations |= t + var/list/destinations = find_destinations() if(!destinations.len) to_chat(user, "There are no other tunnels connected to this one!") @@ -212,10 +231,6 @@ return FALSE -/obj/structure/micro_tunnel/attack_generic(mob/user, damage, attack_verb) - attack_hand(user) - return ..() - /obj/structure/micro_tunnel/MouseDrop_T(mob/living/M, mob/living/user) . = ..() if(M != user) @@ -301,6 +316,9 @@ to_chat(usr, "You can't do that unless you're in \the [src].") return var/list/destinations = list() + if(istype(src,/obj/structure/micro_tunnel)) //If we're in a tunnel let's also get the tunnel's destinations + var/obj/structure/micro_tunnel/t = src + destinations = t.find_destinations() var/turf/myturf = get_turf(src.loc) for(var/obj/o in range(1,myturf)) if(!istype(o,/obj)) diff --git a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm index 61fdbf5ecb..48004dfdcd 100644 --- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm @@ -521,6 +521,12 @@ ckeywhitelist = list("hunterbirk") character_name = list("Aria Blue") +/datum/gear/fluff/mercury_vopal_ring + path = /obj/item/clothing/gloves/ring/material/void_opal/fluff/mercury + display_name = "Mercury's Mate Ring" + ckeywhitelist = list("haloren") + character_name = list("Mercury") + // I CKEYS /datum/gear/fluff/ruda_badge path = /obj/item/clothing/accessory/badge/holo/detective/ruda @@ -1212,6 +1218,13 @@ ckeywhitelist = list("suicidalpickles") character_name = list("Silent Stripes") +/datum/gear/fluff/parrizjacket + path = /obj/item/clothing/suit/storage/toggle/labcoat/fluff/parrizjacket + display_name = "pink crop bomber" + slot = slot_wear_suit + ckeywhitelist = list("satinisle") + character_name = list("Parriz Tavakdavi") + // T CKEYS /datum/gear/fluff/ascian_medal path = /obj/item/clothing/accessory/medal/silver/unity/tabiranth diff --git a/code/modules/clothing/rings/material.dm b/code/modules/clothing/rings/material.dm index 8fdbda704e..30242fef66 100644 --- a/code/modules/clothing/rings/material.dm +++ b/code/modules/clothing/rings/material.dm @@ -69,3 +69,6 @@ /obj/item/clothing/gloves/ring/material/tin/New(var/newloc) ..(newloc, MAT_TIN) + +/obj/item/clothing/gloves/ring/material/void_opal/New(var/newloc) + ..(newloc, MAT_VOPAL) \ No newline at end of file diff --git a/code/modules/emotes/emote_mob.dm b/code/modules/emotes/emote_mob.dm index d28418c214..14ab4b9eaa 100644 --- a/code/modules/emotes/emote_mob.dm +++ b/code/modules/emotes/emote_mob.dm @@ -31,6 +31,9 @@ if(forced_psay) pme(message) return + if(autowhisper) + return me_verb_subtle(message) + //VOREStation Addition End if(act == "help") diff --git a/code/modules/events/spacefish_migration.dm b/code/modules/events/spacefish_migration.dm new file mode 100644 index 0000000000..710946417e --- /dev/null +++ b/code/modules/events/spacefish_migration.dm @@ -0,0 +1,117 @@ +/datum/event/spacefish_migration + startWhen = 0 // Start immediately + announceWhen = 45 // Adjusted by setup + endWhen = 75 // Adjusted by setup + var/fish_type = /mob/living/simple_mob/animal/space/carp/event + var/fish_base_cap = 2 + var/fish_cap_mult = 3 + var/fish_cap = 10 + var/list/spawned_fish = list() + // Possible fish types. First is the path, second is base cap, third is cap severity multiplier + var/list/possible_fish_types = list( + list(/mob/living/simple_mob/animal/space/carp/event, 2, 3), + list(/mob/living/simple_mob/vore/alienanimals/space_jellyfish, 2, 3), + list(/mob/living/simple_mob/animal/space/gnat, 8, 4), + list(/mob/living/simple_mob/animal/space/ray, 1, 1), + list(/mob/living/simple_mob/animal/space/shark/event, 1, 1) + ) + +/datum/event/spacefish_migration/setup() + announceWhen = rand(30, 60) // 1 to 2 minutes + endWhen += severity * 25 + var/list/fish_config = pick(possible_fish_types) + fish_type = fish_config[1] + fish_base_cap = fish_config[2] + fish_cap_mult = fish_config[3] + fish_cap = fish_base_cap + fish_cap_mult ** severity // No more than this many at once regardless of waves. (5, 11, 29) + +/datum/event/spacefish_migration/start() + affecting_z -= global.using_map.sealed_levels // Space levels only please! + ..() + +/datum/event/spacefish_migration/announce() + var/announcement = "" + if(severity == EVENT_LEVEL_MAJOR) + announcement = "Massive migration of unknown biological entities has been detected near [location_name()], please stand-by." + else + announcement = "Unknown biological [spawned_fish.len == 1 ? "entity has" : "entities have"] been detected near [location_name()], please stand-by." + command_announcement.Announce(announcement, "Lifesign Alert") + +/datum/event/spacefish_migration/tick() + if(activeFor % 5 != 0) + return // Only process every 10 seconds. + if(count_spawned_fish() < fish_cap) + spawn_fish(rand(3, 3 + severity * 2) - 1, 1, severity + 2) + +/datum/event/spacefish_migration/proc/spawn_fish(var/num_groups, var/group_size_min, var/group_size_max, var/dir) + if(isnull(dir)) + dir = (victim && prob(80)) ? victim.fore_dir : pick(GLOB.cardinal) + + // Check if any landmarks exist! + var/list/spawn_locations = list() + for(var/obj/effect/landmark/C in landmarks_list) + if(C.name == "carpspawn" && (C.z in affecting_z)) + spawn_locations.Add(C.loc) + if(spawn_locations.len) // Okay we've got landmarks, lets use those! + shuffle_inplace(spawn_locations) + num_groups = min(num_groups, spawn_locations.len) + for (var/i = 1, i <= num_groups, i++) + var/group_size = rand(group_size_min, group_size_max) + for (var/j = 0, j < group_size, j++) + spawn_one_fish(spawn_locations[i]) + return + + // Okay we did *not* have any landmarks, so lets do our best! + var/i = 1 + while (i <= num_groups) + var/Z = pick(affecting_z) + var/group_size = rand(group_size_min, group_size_max) + var/turf/map_center = locate(round(world.maxx/2), round(world.maxy/2), Z) + var/turf/group_center = pick_random_edge_turf(dir, Z, TRANSITIONEDGE + 2) + var/list/turfs = getcircle(group_center, 2) + for (var/j = 0, j < group_size, j++) + var/mob/living/simple_mob/animal/M = spawn_one_fish(turfs[(i % turfs.len) + 1]) + // Ray trace towards middle of the map to find where they can stop just outside of structure/ship. + var/turf/target + for(var/turf/T in getline(get_turf(M), map_center)) + if(!T.is_space()) + break; + target = T + if(target) + M.ai_holder?.give_destination(target) // Ask fish to swim towards the middle of the map + i++ + +// Spawn a single fish at given location. +/datum/event/spacefish_migration/proc/spawn_one_fish(var/loc) + var/mob/living/simple_mob/animal/M = new fish_type(loc) + GLOB.destroyed_event.register(M, src, PROC_REF(on_fish_destruction)) + spawned_fish.Add(M) + return M + +// Counts living fish spawned by this event. +/datum/event/spacefish_migration/proc/count_spawned_fish() + . = 0 + for(var/mob/living/simple_mob/animal/M as anything in spawned_fish) + if(!QDELETED(M) && M.stat != DEAD) + . += 1 + +// If fish is bomphed, remove it from the list. +/datum/event/spacefish_migration/proc/on_fish_destruction(var/mob/M) + spawned_fish -= M + GLOB.destroyed_event.unregister(M, src, PROC_REF(on_fish_destruction)) + +/datum/event/spacefish_migration/end() + . = ..() + // Clean up fish that died in space for some reason. + spawn(0) + for(var/mob/living/simple_mob/SM in spawned_fish) + if(SM.stat == DEAD) + var/turf/T = get_turf(SM) + if(istype(T, /turf/space)) + if(prob(75)) + qdel(SM) + CHECK_TICK + +// Overmap version +/datum/event/spacefish_migration/overmap/announce() + return diff --git a/code/modules/materials/materials/gems.dm b/code/modules/materials/materials/gems.dm index 387e07aefd..e807f682ae 100644 --- a/code/modules/materials/materials/gems.dm +++ b/code/modules/materials/materials/gems.dm @@ -30,7 +30,7 @@ */ /datum/material/diamond - name = "diamond" + name = MAT_DIAMOND stack_type = /obj/item/stack/material/diamond flags = MATERIAL_UNMELTABLE cut_delay = 60 @@ -46,7 +46,7 @@ supply_conversion_value = 8 /datum/material/quartz - name = "quartz" + name = MAT_QUARTZ display_name = "quartz" use_name = "quartz" icon_colour = "#e6d7df" @@ -57,7 +57,7 @@ supply_conversion_value = 4 /datum/material/painite - name = "painite" + name = MAT_PAINITE display_name = "painite" use_name = "painite" icon_colour = "#6b4947" @@ -70,7 +70,7 @@ supply_conversion_value = 4 /datum/material/void_opal - name = "void opal" + name = MAT_VOPAL display_name = "void opal" use_name = "void opal" icon_colour = "#0f0f0f" diff --git a/code/modules/mob/autowhisper.dm b/code/modules/mob/autowhisper.dm new file mode 100644 index 0000000000..88e07df7a4 --- /dev/null +++ b/code/modules/mob/autowhisper.dm @@ -0,0 +1,45 @@ +/mob/living/verb/toggle_autowhisper() + set name = "Autowhisper Toggle" + set desc = "Toggle whether you will automatically whisper/subtle" + set category = "IC" + + autowhisper = !autowhisper + if(autowhisper_display) + autowhisper_display.icon_state = "[autowhisper ? "autowhisper1" : "autowhisper"]" + + if(autowhisper_mode == "Psay/Pme") + if(isbelly(loc) && absorbed) + var/obj/belly/b = loc + if(b.mode_flags & DM_FLAG_FORCEPSAY) + var/mes = "but you are affected by forced psay right now, so you will automatically use psay/pme instead of any other option." + to_chat(src, "Autowhisper has been [autowhisper ? "enabled, [mes]" : "disabled, [mes]"].") + return + else + forced_psay = autowhisper + to_chat(src, "Autowhisper has been [autowhisper ? "enabled. You will now automatically psay/pme when using say/me. As a note, this option will only work if you are in a situation where you can send psay/pme messages! Otherwise it will work as default whisper/subtle" : "disabled"].") + + else + to_chat(src, "Autowhisper has been [autowhisper ? "enabled. You will now automatically whisper/subtle when using say/me" : "disabled"].") + +/mob/living/verb/autowhisper_mode() + set name = "Autowhisper Mode" + set desc = "Set the mode your emotes will default to while using Autowhisper" + set category = "IC" + + + var/choice = tgui_input_list(src, "Select Custom Subtle Mode", "Custom Subtle Mode", list("Adjacent Turfs (Default)", "My Turf", "My Table", "Current Belly (Prey)", "Specific Belly (Pred)", "Specific Person", "Psay/Pme")) + if(!choice || choice == "Adjacent Turfs (Default)") + autowhisper_mode = null + to_chat(src, "Your subtles have returned to the default setting.") + return + if(choice == "Psay/Pme") + if(autowhisper) + if(isbelly(loc) && absorbed) + var/obj/belly/b = loc + if(b.mode_flags & DM_FLAG_FORCEPSAY) + to_chat(src, "You can't set that mode right now, as you appear to be absorbed in a belly using forced psay!") + return + forced_psay = TRUE + to_chat(src, "As a note, this option will only work if you are in a situation where you can send psay/pme messages! Otherwise it will work as default whisper/subtle.") + autowhisper_mode = choice + to_chat(src, "Your subtles have been set to [autowhisper_mode].") diff --git a/code/modules/mob/dead/corpse.dm b/code/modules/mob/dead/corpse.dm index b02859f451..2b06b23dd2 100644 --- a/code/modules/mob/dead/corpse.dm +++ b/code/modules/mob/dead/corpse.dm @@ -26,6 +26,12 @@ var/corpseidjob = null // Needs to be in quotes, such as "Clown" or "Chef." This just determines what the ID reads as, not their access var/corpseidaccess = null //This is for access. See access.dm for which jobs give what access. Again, put in quotes. Use "Captain" if you want it to be all access. var/corpseidicon = null //For setting it to be a gold, silver, CentCom etc ID + var/species = SPECIES_HUMAN //defaults to generic-ass humans + var/random_species = FALSE //flip to TRUE to randomize species from the list below + var/list/random_species_list = list(SPECIES_HUMAN,SPECIES_TAJ,SPECIES_UNATHI,SPECIES_SKRELL) + var/list/tail_type = null + var/list/ear_type = null + var/list/wing_type = null var/corpsesynthtype = 0 // 0 for organic, 1 for drone, 2 for posibrain var/corpsesynthbrand = "Unbranded" @@ -34,6 +40,69 @@ /obj/effect/landmark/mobcorpse/proc/createCorpse() //Creates a mob and checks for gear in each slot before attempting to equip it. var/mob/living/carbon/human/M = new /mob/living/carbon/human (src.loc) + if(random_species) + var/random_pick = pick(random_species_list) + M.set_species(random_pick) + src.species = random_pick + else + M.set_species(species) + if(tail_type && tail_type.len) + if(tail_type[1] in tail_styles_list) + M.tail_style = tail_styles_list[tail_type[1]] + if(tail_type.len > 1) + var/list/color_rgb_list = hex2rgb(tail_type[2]) + M.r_tail = color_rgb_list[1] + M.g_tail = color_rgb_list[2] + M.b_tail = color_rgb_list[3] + if(tail_type.len > 2) + color_rgb_list = hex2rgb(tail_type[3]) + M.r_tail2 = color_rgb_list[1] + M.g_tail2 = color_rgb_list[2] + M.b_tail2 = color_rgb_list[3] + if(tail_type.len > 3) + color_rgb_list = hex2rgb(tail_type[4]) + M.r_tail3 = color_rgb_list[1] + M.g_tail3 = color_rgb_list[2] + M.b_tail3 = color_rgb_list[3] + M.update_tail_showing() + if(ear_type && ear_type.len) + if(ear_type[1] in ear_styles_list) + M.ear_style = ear_styles_list[ear_type[1]] + if(ear_type.len > 1) + var/list/color_rgb_list = hex2rgb(ear_type[2]) + M.r_ears = color_rgb_list[1] + M.g_ears = color_rgb_list[2] + M.b_ears = color_rgb_list[3] + if(ear_type.len > 2) + color_rgb_list = hex2rgb(ear_type[3]) + M.r_ears2 = color_rgb_list[1] + M.g_ears2 = color_rgb_list[2] + M.b_ears2 = color_rgb_list[3] + if(ear_type.len > 3) + color_rgb_list = hex2rgb(ear_type[4]) + M.r_ears3 = color_rgb_list[1] + M.g_ears3 = color_rgb_list[2] + M.b_ears3 = color_rgb_list[3] + M.update_hair() + if(wing_type && wing_type.len) + if(wing_type[1] in wing_styles_list) + M.wing_style = wing_styles_list[wing_type[1]] + if(wing_type.len > 1) + var/list/color_rgb_list = hex2rgb(wing_type[2]) + M.r_wing = color_rgb_list[1] + M.g_wing = color_rgb_list[2] + M.b_wing = color_rgb_list[3] + if(wing_type.len > 2) + color_rgb_list = hex2rgb(wing_type[3]) + M.r_wing2 = color_rgb_list[1] + M.g_wing2 = color_rgb_list[2] + M.b_wing2 = color_rgb_list[3] + if(wing_type.len > 3) + color_rgb_list = hex2rgb(wing_type[4]) + M.r_wing3 = color_rgb_list[1] + M.g_wing3 = color_rgb_list[2] + M.b_wing3 = color_rgb_list[3] + M.update_wing_showing() M.real_name = generateCorpseName() M.set_stat(DEAD) //Kills the new mob if(corpsesynthtype > 0) @@ -48,8 +117,6 @@ O.robotize(corpsesynthbrand) if(src.corpseuniform) M.equip_to_slot_or_del(new src.corpseuniform(M), slot_w_uniform) - if(src.corpsesuit) - M.equip_to_slot_or_del(new src.corpsesuit(M), slot_wear_suit) if(src.corpseshoes) M.equip_to_slot_or_del(new src.corpseshoes(M), slot_shoes) if(src.corpsegloves) @@ -60,8 +127,6 @@ M.equip_to_slot_or_del(new src.corpseglasses(M), slot_glasses) if(src.corpsemask) M.equip_to_slot_or_del(new src.corpsemask(M), slot_wear_mask) - if(src.corpsehelmet) - M.equip_to_slot_or_del(new src.corpsehelmet(M), slot_head) if(src.corpsebelt) M.equip_to_slot_or_del(new src.corpsebelt(M), slot_belt) if(src.corpsepocket1) @@ -90,6 +155,10 @@ W.assignment = corpseidjob W.registered_name = M.real_name M.equip_to_slot_or_del(W, slot_wear_id) + if(src.corpsehelmet) + M.equip_voidhelm_to_slot_or_del_with_refit(new src.corpsehelmet(M), slot_head, src.species) + if(src.corpsesuit) + M.equip_voidsuit_to_slot_or_del_with_refit(new src.corpsesuit(M), slot_wear_suit, src.species) delete_me = 1 qdel(src) diff --git a/code/modules/mob/dead/corpse_vr.dm b/code/modules/mob/dead/corpse_vr.dm index 487de64d95..ac1496b7d6 100644 --- a/code/modules/mob/dead/corpse_vr.dm +++ b/code/modules/mob/dead/corpse_vr.dm @@ -24,3 +24,19 @@ var/number = rand(0,999) var/purpose = pick(list("Recon","Combat","Kill","Guard","Scout","Murder","Capture","Raid","Attack","Battle")) return "[letter]-[number] [purpose] Droid" + +/obj/effect/landmark/mobcorpse/altevian + name = "Altevian Naval Officer" + corpseuniform = /obj/item/clothing/under/altevian + corpsesuit = /obj/item/clothing/suit/space/void/altevian_heartbreaker + corpseshoes = /obj/item/clothing/shoes/boots/swat + corpsegloves = /obj/item/clothing/gloves/swat + corpseradio = /obj/item/device/radio/headset + corpsemask = /obj/item/clothing/mask/altevian_breath + corpsehelmet = /obj/item/clothing/head/helmet/space/void/altevian_heartbreaker + corpseid = 1 + corpseidjob = "Altevian Navy" + corpseidaccess = "Syndicate" + species = SPECIES_ALTEVIAN + ear_type = list(/datum/sprite_accessory/ears/altevian, "#777777", "#FFCCFF") + tail_type = list(/datum/sprite_accessory/tail/altevian, "#FF9999") \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index dc81ed1a14..1553a16bfa 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -915,9 +915,9 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(!back) return //Why do anything - var/icon/c_mask = tail_style?.clip_mask //TODO: Figure out why the fuck it doesnt work with backpacks. Leaving this in for now, even though for some reason it does nothing. + var/icon/c_mask = tail_style?.clip_mask if(c_mask) - if(istype(back, /obj/item/weapon/storage/backpack/saddlebag)) + if(istype(back, /obj/item/weapon/storage/backpack/saddlebag) || istype(back, /obj/item/weapon/storage/backpack/saddlebag_common)) c_mask = null overlays_standing[BACK_LAYER] = back.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_back_str, default_icon = INV_BACK_DEF_ICON, default_layer = BACK_LAYER, clip_mask = c_mask) diff --git a/code/modules/mob/living/living_defines_vr.dm b/code/modules/mob/living/living_defines_vr.dm index d20b8555fc..670b0050d3 100644 --- a/code/modules/mob/living/living_defines_vr.dm +++ b/code/modules/mob/living/living_defines_vr.dm @@ -1,7 +1,8 @@ /mob var/muffled = FALSE // Used by muffling belly var/forced_psay = FALSE // If true will prevent the user from speaking with normal say/emotes, and instead redirect these to a private speech mode with their predator. - + var/autowhisper = FALSE // Automatically whisper + var/autowhisper_mode = null // Mode to use with autowhisper /mob/living var/ooc_notes = null appearance_flags = TILE_BOUND|PIXEL_SCALE|KEEP_TOGETHER|LONG_GLIDE diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index ce1d3dcdb8..e6f3c5edee 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -162,6 +162,8 @@ var/list/channel_to_radio_key = new if(forced_psay) psay(message) return + if(autowhisper) + whispering = 1 //VOREStation Addition End //Parse the mode var/message_mode = parse_message_mode(message, "headset") diff --git a/code/modules/mob/living/silicon/pai/pai_hud.dm b/code/modules/mob/living/silicon/pai/pai_hud.dm index c7109d8aff..2c53c3d26a 100644 --- a/code/modules/mob/living/silicon/pai/pai_hud.dm +++ b/code/modules/mob/living/silicon/pai/pai_hud.dm @@ -325,6 +325,48 @@ using.alpha = ui_alpha other |= using + autowhisper_display = new /obj/screen() + autowhisper_display.icon = 'icons/mob/screen/minimalist.dmi' + autowhisper_display.icon_state = "autowhisper" + autowhisper_display.name = "autowhisper" + autowhisper_display.screen_loc = "EAST-1:28,CENTER-2:13" + hud_elements |= autowhisper_display + + var/obj/screen/aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "aw-select" + aw.name = "autowhisper mode" + aw.screen_loc = "EAST-1:28,CENTER-2:13" + hud_elements |= aw + + aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "lang" + aw.name = "check known languages" + aw.screen_loc = ui_under_health + hud_elements |= aw + + aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "pose" + aw.name = "set pose" + aw.screen_loc = ui_under_health + hud_elements |= aw + + aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "up" + aw.name = "move upwards" + aw.screen_loc = ui_under_health + hud_elements |= aw + + aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "down" + aw.name = "move downwards" + aw.screen_loc = ui_under_health + hud_elements |= aw + if(client) client.screen = list() client.screen += hud_elements diff --git a/code/modules/mob/living/simple_mob/on_click.dm b/code/modules/mob/living/simple_mob/on_click.dm index ceab778847..d0c1a7b8d7 100644 --- a/code/modules/mob/living/simple_mob/on_click.dm +++ b/code/modules/mob/living/simple_mob/on_click.dm @@ -13,9 +13,13 @@ switch(a_intent) if(I_HELP) - var/mob/living/L = A - if(istype(L) && (!has_hands || !L.attempt_to_scoop(src))) - custom_emote(1,"[pick(friendly)] \the [A]!") + if(isliving(A)) + var/mob/living/L = A + if(istype(L) && (!has_hands || !L.attempt_to_scoop(src))) + custom_emote(1,"[pick(friendly)] \the [A]!") + if(istype(A,/obj/structure/micro_tunnel)) //Allows simplemobs to click on mouse holes, mice should be allowed to go in mouse holes, and other mobs + var/obj/structure/micro_tunnel/t = A //should be allowed to drag the mice out of the mouse holes! + t.tunnel_interact(src) if(I_HURT) if(can_special_attack(A) && special_attack_target(A)) @@ -48,4 +52,4 @@ return if(projectiletype) - shoot_target(A) \ No newline at end of file + shoot_target(A) diff --git a/code/modules/mob/living/simple_mob/simple_hud.dm b/code/modules/mob/living/simple_mob/simple_hud.dm index b546774281..fd1a79c440 100644 --- a/code/modules/mob/living/simple_mob/simple_hud.dm +++ b/code/modules/mob/living/simple_mob/simple_hud.dm @@ -158,7 +158,40 @@ healths.screen_loc = ui_health hud_elements |= healths + autowhisper_display = new /obj/screen() + autowhisper_display.icon = 'icons/mob/screen/minimalist.dmi' + autowhisper_display.icon_state = "autowhisper" + autowhisper_display.name = "autowhisper" + autowhisper_display.screen_loc = "EAST-1:28,CENTER-2:13" + hud_elements |= autowhisper_display + var/obj/screen/aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "aw-select" + aw.name = "autowhisper mode" + aw.screen_loc = "EAST-1:28,CENTER-2:13" + hud_elements |= aw + + aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "lang" + aw.name = "check known languages" + aw.screen_loc = ui_under_health + hud_elements |= aw + + aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "up" + aw.name = "move upwards" + aw.screen_loc = ui_under_health + hud_elements |= aw + + aw = new /obj/screen() + aw.icon = 'icons/mob/screen/minimalist.dmi' + aw.icon_state = "down" + aw.name = "move downwards" + aw.screen_loc = ui_under_health + hud_elements |= aw pain = new /obj/screen( null ) diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs_altevian.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs_altevian.dm new file mode 100644 index 0000000000..b623e850b3 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs_altevian.dm @@ -0,0 +1,131 @@ +/mob/living/simple_mob/humanoid/merc/altevian + name = "altevian naval officer" + desc = "Altevian Naval Slicer, adorned in the top of the line Heartbreaker suit. Armed with a handheld cutter." + tt_desc = "E Rattus sapiens" + icon = 'icons/mob/altevian_mercs_vr.dmi' + icon_state = "merc_melee_cutter" + icon_living = "merc_melee_cutter" + icon_dead = "merc-dead" + icon_gib = "merc_gib" + + faction = "altevian" + movement_cooldown = 1 + + status_flags = 0 + + response_help = "pokes" + response_disarm = "shoves" + response_harm = "hits" + + harm_intent_damage = 5 + melee_damage_lower = 30 + melee_damage_upper = 30 + attack_armor_pen = 50 + attack_sharp = TRUE + attack_edge = 1 + attacktext = list("slashed") + armor = list(melee = 90, bullet = 90, laser = 90, energy = 90, bomb = 90, bio = 100, rad = 100) //matches stats of suit they drop. Basically tank. Rat tank. Ratank. + + corpse = /obj/effect/landmark/mobcorpse/altevian + loot_list = list(/obj/item/weapon/melee/energy/sword/altevian = 100) + + ai_holder_type = /datum/ai_holder/simple_mob/merc + say_list_type = /datum/say_list/merc/altevian + +/datum/say_list/merc/altevian + speak = list("Operations going along as planned.", + "No news to report, Mission Control. All is clear.", + "Salvage operations still underway, no updates yet, Mission Control.") + emote_see = list("squeaks", "flicks their tail", "looks around") + + say_understood = list("Order received.", "Understood, Mission Control.") + say_cannot = list("Unable to fulfill that request.", "Sorry... Running into some issues.") + say_maybe_target = list("Hey... You can't hide after causing us trouble, mate...", "If you're hiding... You better be hiding well...", "Yeah... You better have left after causing us trouble...") + say_got_target = list("Mouse found!", "Hostile being culled!", "Removing unwanted salvage!", "Culling threats!", "Suppressing!") + say_threaten = list("This area is marked for salvage by the Hegemony, please vacate the area until we're done!", "Sorry, but we're conducting operations here and civilians are not permitted around here for the time being!", "Please disperse from the area, or we will have to respond in kind.") + say_stand_down = list("Thank you for listening! Please have a safe day!", "Carry along, and keep safe.", "You're cleared to depart, thank you for not causing problems.") + say_escalate = list("Team, we have mice attempting to steal our salvage!", "We've warned you! Please know this is just us following orders!", "Apologies, but we have to attack due to failing to listen to our order!") + + threaten_sound = 'sound/weapons/TargetOn.ogg' + stand_down_sound = 'sound/weapons/TargetOff.ogg' + +/mob/living/simple_mob/humanoid/merc/altevian/sapper + desc = "Altevian Naval Sapper, adorned in the top of the line Heartbreaker suit. Armed with a giant fokken wrench." + icon_state = "merc_melee_wrench" + icon_living = "merc_melee_wrench" + + melee_damage_lower = 25 + melee_damage_upper = 25 + attack_armor_pen = 0 + attack_sharp = FALSE + attack_edge = 0 + attacktext = list("whacked", "slammed", "bashed", "clonked", "bonked") + attack_sound = 'sound/weapons/smash.ogg' + + loot_list = list(/obj/item/weapon/melee/altevian_wrench = 100) + +/mob/living/simple_mob/humanoid/merc/altevian/ranged + desc = "Altevian Naval Salvage Guard, adorned in the top of the line Heartbreaker suit. Armed with a small energy gun." + icon_state = "merc_gun_smol" + icon_living = "merc_gun_smol" + + + melee_damage_lower = 15 // Let's just pretend they have tacknife + melee_damage_upper = 15 + attack_armor_pen = 20 + base_attack_cooldown = 8 + + loot_list = list(/obj/item/weapon/gun/energy/altevian = 100) + + needs_reload = TRUE + reload_time = 1.5 SECONDS + reload_max = 6 + projectiletype = /obj/item/projectile/beam/meeplaser + projectilesound = 'sound/weapons/Laser.ogg' + + ai_holder_type = /datum/ai_holder/simple_mob/merc/ranged + +/mob/living/simple_mob/humanoid/merc/altevian/ranged/strong + desc = "Altevian Naval Salvage Shield, adorned in the top of the line Heartbreaker suit. Armed with a large energy gun." + icon_state = "merc_gun_big" + icon_living = "merc_gun_big" + + base_attack_cooldown = 8 + + loot_list = list(/obj/item/weapon/gun/energy/altevian/large = 100) + + needs_reload = TRUE + reload_time = 3 SECONDS + reload_max = 12 + projectiletype = /obj/item/projectile/beam/meeplaser/strong + projectilesound = 'sound/weapons/Laser.ogg' + +/mob/living/simple_mob/humanoid/merc/altevian/ranged/ballistic + desc = "Altevian Naval Shipbreaker, adorned in the top of the line Heartbreaker suit. Armed with a bolter gun." + icon_state = "merc_gun_ballistic" + icon_living = "merc_gun_ballistic" + + base_attack_cooldown = 10 + + loot_list = list(/obj/item/weapon/storage/box/altevian_ammo = 100, /obj/item/weapon/gun/projectile/altevian = 100) + + needs_reload = TRUE + reload_time = 5 SECONDS + reload_max = 5 + projectiletype = /obj/item/projectile/bullet/sam48 + projectilesound = 'sound/weapons/Gunshot_heavy.ogg' + +/mob/living/simple_mob/humanoid/merc/altevian/neutral + faction = "neutral" + +/mob/living/simple_mob/humanoid/merc/altevian/sapper/neutral + faction = "neutral" + +/mob/living/simple_mob/humanoid/merc/altevian/ranged/neutral + faction = "neutral" + +/mob/living/simple_mob/humanoid/merc/altevian/ranged/strong/neutral + faction = "neutral" + +/mob/living/simple_mob/humanoid/merc/altevian/ranged/ballistic/neutral + faction = "neutral" \ No newline at end of file diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index f729cb8c7e..e2deb6d7a7 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -31,6 +31,7 @@ var/obj/screen/ling/chems/ling_chem_display = null var/obj/screen/wizard/energy/wiz_energy_display = null var/obj/screen/wizard/instability/wiz_instability_display = null + var/obj/screen/autowhisper_display = null var/datum/plane_holder/plane_holder = null var/list/vis_enabled = null // List of vision planes that should be graphically visible (list of their VIS_ indexes). diff --git a/code/modules/mob/new_player/sprite_accessories_vr.dm b/code/modules/mob/new_player/sprite_accessories_vr.dm index 8a4111c064..d6e61062bf 100644 --- a/code/modules/mob/new_player/sprite_accessories_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_vr.dm @@ -81,6 +81,12 @@ icon_add = 'icons/mob/human_face_vr_add.dmi' icon_state = "hair_twincurl" +/datum/sprite_accessory/hair/twindrillslong + name = "Twin Drills Long" + icon = 'icons/mob/human_face_vr.dmi' + icon_add = 'icons/mob/human_face_vr_add.dmi' + icon_state = "hair_twincurllong" + /datum/sprite_accessory/hair/crescent_moon name = "Crescent-Moon" icon = 'icons/mob/human_face_vr.dmi' diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index a603ee36f0..eec138c412 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -40,6 +40,8 @@ //VOREStation Edit Start if(muffled) return me_verb_subtle(message) + if(autowhisper) + return me_verb_subtle(message) message = sanitize_or_reflect(message,src) //VOREStation Edit - Reflect too-long messages (within reason) //VOREStation Edit End diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index 6396c6e9e2..2961384299 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -10,13 +10,11 @@ if(say_disabled) //This is here to try to identify lag problems to_chat(usr, "Speech is currently admin-disabled.") return - //VOREStation Addition Start if(forced_psay) pme(message) return - //VOREStation Addition End - message = sanitize_or_reflect(message,src) //VOREStation Edit - Reflect too-long messages (within reason) + message = sanitize_or_reflect(message,src) // Reflect too-long messages (within reason) if(!message) return @@ -26,7 +24,29 @@ else usr.emote_vr(message) -/mob/proc/custom_emote_vr(var/m_type=1,var/message = null) //This would normally go in emote.dm +/mob/verb/me_verb_subtle_custom(message as message) // Literally same as above but with mode_selection set to true + set name = "Subtle (Custom)" + set category = "IC" + set desc = "Emote to nearby people, with ability to choose which specific portion of people you wish to target." + + if(say_disabled) //This is here to try to identify lag problems + to_chat(usr, "Speech is currently admin-disabled.") + return + if(forced_psay) + pme(message) + return + + message = sanitize_or_reflect(message,src) // Reflect too-long messages (within reason) + if(!message) + return + + set_typing_indicator(FALSE) + if(use_me) + usr.emote_vr("me",4,message,TRUE) + else + usr.emote_vr(message) + +/mob/proc/custom_emote_vr(var/m_type=1,var/message = null,var/mode_selection = FALSE) //This would normally go in emote.dm if(stat || !use_me && usr == src) to_chat(src, "You are unable to emote.") return @@ -40,6 +60,20 @@ var/muzzled = is_muzzled() if(m_type == 2 && muzzled) return + var/subtle_mode + if(autowhisper && autowhisper_mode && !mode_selection) + if(autowhisper_mode != "Psay/Pme") //This isn't actually a custom subtle mode, so we shouldn't use it! + subtle_mode = autowhisper_mode + if(mode_selection && !subtle_mode) + subtle_mode = tgui_input_list(src, "Select Custom Subtle Mode", "Custom Subtle Mode", list("Adjacent Turfs (Default)", "My Turf", "My Table", "Current Belly (Prey)", "Specific Belly (Pred)", "Specific Person")) + if(!subtle_mode) + if(mode_selection) + if(message) + to_chat(src, "Subtle mode not selected. Your input has not been sent, but preserved: [message]") + return + else + subtle_mode = "Adjacent Turfs (Default)" + var/input if(!message) input = sanitize_or_reflect(tgui_input_text(src,"Choose an emote to display."), src) @@ -49,6 +83,8 @@ if(input) log_subtle(message,src) message = "[src] [input]" + if(!(subtle_mode == "Adjacent Turfs (Default)")) + message = "(T) " + message else return @@ -56,9 +92,110 @@ var/undisplayed_message = "[src] does something too subtle for you to see." message = encode_html_emphasis(message) - var/list/vis = get_mobs_and_objs_in_view_fast(get_turf(src),1,2) //Turf, Range, and type 2 is emote - var/list/vis_mobs = vis["mobs"] - var/list/vis_objs = vis["objs"] + var/list/vis + var/list/vis_mobs + var/list/vis_objs + + switch(subtle_mode) + if("Adjacent Turfs (Default)") + vis = get_mobs_and_objs_in_view_fast(get_turf(src),1,2) + vis_mobs = vis["mobs"] + vis_objs = vis["objs"] + if("My Turf") + vis = get_mobs_and_objs_in_view_fast(get_turf(src),0,2) + vis_mobs = vis["mobs"] + vis_objs = vis["objs"] + if("My Table") + vis = get_mobs_and_objs_in_view_fast(get_turf(src),7,2) + vis_mobs = vis["mobs"] + vis_objs = vis["objs"] + var/list/tablelist = list() + var/list/newmoblist = list() + var/list/newobjlist = list() + for(var/obj/structure/table/T in range(src, 1)) + if(istype(T) && !(T in tablelist) && !istype(T, /obj/structure/table/rack) && !istype(T, /obj/structure/table/bench)) + tablelist |= T.get_all_connected_tables() + if(!(tablelist.len)) + to_chat(src, "No nearby tables detected. Your input has not been sent, but preserved: [input]") + return + for(var/obj/structure/table/T in tablelist) + for(var/mob/M in vis_mobs) + var/dist = get_dist(T, M) + if(dist >= 0 && dist <= 1) + newmoblist |= M + for(var/obj/O in vis_objs) + var/dist = get_dist(T, O) + if(dist >= 0 && dist <= 1) + newobjlist |= O + vis_mobs = newmoblist + vis_objs = newobjlist + if("Current Belly (Prey)") + var/obj/belly/B = get_belly(src) + if(!istype(B)) + to_chat(src, "You are currently not in the belly. Your input has not been sent, but preserved: [input]") + return + vis = get_mobs_and_objs_in_view_fast(get_turf(src),0,2) + vis_mobs = vis["mobs"] + vis_objs = vis["objs"] + for(var/mob/M in vis_mobs) // Clean out everyone NOT in our specific belly + if(M == B.owner) + continue + var/obj/belly/BB = get_belly(M) + if(!(istype(BB)) || !(BB == B)) + vis_mobs -= M + for(var/mob/M in vis_mobs) // Re-add anything in bellies of people in our belly + if(M == B.owner) + continue + vis_mobs |= get_all_prey_recursive(M, TRUE) + for(var/obj/O in vis_objs) // Clean out everyone NOT in our specific belly but for objs. No re-adding will happen there. Just don't be that deep and youre an obj anyway. + var/obj/belly/BB = get_belly(O) + if(!(istype(BB)) || !(BB == B)) + vis_objs -= O + if("Specific Belly (Pred)") + if(!isliving(src)) + to_chat(src, "You do not appear to be a living mob capable of having bellies. Your input has not been sent, but preserved: [input]") + return + var/mob/living/L = src + if(!(L.vore_organs) || !(L.vore_organs.len)) + to_chat(src, "You do not have any bellies. Your input has not been sent, but preserved: [input]") + return + var/obj/belly/B = tgui_input_list(src, "Which belly do you want to sent the subtle to?","Select Belly", L.vore_organs) + if(!B || !istype(B)) + to_chat(src, "You have not selected a valid belly. Your input has not been sent, but preserved: [input]") + return + vis = get_mobs_and_objs_in_view_fast(get_turf(src),0,2) + vis_mobs = vis["mobs"] + vis_objs = vis["objs"] + for(var/mob/M in vis_mobs) // Clean out everyone NOT in our specific belly + if(M == B.owner) + continue + var/obj/belly/BB = get_belly(M) + if(!(istype(BB)) || !(BB == B)) + vis_mobs -= M + for(var/mob/M in vis_mobs) // Re-add anything in bellies of people in our belly + if(M == B.owner) + continue + vis_mobs |= get_all_prey_recursive(M, TRUE) + for(var/obj/O in vis_objs) // Clean out everyone NOT in our specific belly but for objs. No re-adding will happen there. Just don't be that deep and youre an obj anyway. + var/obj/belly/BB = get_belly(O) + if(!(istype(BB)) || !(BB == B)) + vis_objs -= O + if("Specific Person") + vis = get_mobs_and_objs_in_view_fast(get_turf(src),1,2) + vis_mobs = vis["mobs"] + vis_objs = list() + vis_mobs -= src + for(var/mob/M in vis_mobs) // ghosts get ye gone + if(isobserver(M) || (M.stat == DEAD)) + vis_mobs -= M + if(!(vis_mobs.len)) + to_chat(src, "No valid targets found. Your input has not been sent, but preserved: [input]") + return + var/target = tgui_input_list(src, "Who do we send our message to?","Select Target", vis_mobs) + if(!(target)) + to_chat(src, "No target selected. Your input has not been sent, but preserved: [input]") + return + vis_mobs = list(target, src) for(var/mob/M as anything in vis_mobs) if(isnewplayer(M)) @@ -76,9 +213,9 @@ spawn(0) O.see_emote(src, message, 2) -/mob/proc/emote_vr(var/act, var/type, var/message) //This would normally go in say.dm +/mob/proc/emote_vr(var/act, var/type, var/message, var/mode_selection) //This would normally go in say.dm if(act == "me") - return custom_emote_vr(type, message) + return custom_emote_vr(type, message, mode_selection) #define MAX_HUGE_MESSAGE_LEN 8192 #define POST_DELIMITER_STR "\<\>" diff --git a/code/modules/tables/tables.dm b/code/modules/tables/tables.dm index 9a71cbdba7..3e682a518d 100644 --- a/code/modules/tables/tables.dm +++ b/code/modules/tables/tables.dm @@ -417,6 +417,27 @@ var/list/table_icon_cache = list() if(carpeted) add_overlay("carpet_flip[type]") +/obj/structure/table/proc/get_all_connected_tables(var/list/connections) + if(!connections) + connections = list(src) + else + connections |= src + if(istype(src, /obj/structure/table/rack)) + return connections + + for(var/direction in cardinal) + var/turf/T = get_step(src, direction) + if(T) + var/obj/structure/table/nextT = locate(/obj/structure/table) in T + if(!nextT || !istype(nextT)) + continue + if(istype(nextT, /obj/structure/table/rack) || (istype(nextT, /obj/structure/table/bench) && !istype(src, /obj/structure/table/bench)) || (!istype(nextT, /obj/structure/table/bench) && istype(src, /obj/structure/table/bench))) + continue + if(!(nextT in connections)) + connections |= nextT.get_all_connected_tables(connections) + + return connections + #define CORNER_NONE 0 #define CORNER_COUNTERCLOCKWISE 1 diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index 44bcb9dbf3..3775853adb 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -2685,6 +2685,14 @@ Departamental Swimsuits, for general use icon_override = 'icons/vore/custom_clothes_vr.dmi' item_state = "dessabow_mob" +/obj/item/clothing/head/fluff/giantbow/dessa/attack_hand(mob/user) + + if(user.real_name == "Dessa Ton") + item_state = "dessabow_mob" + else + item_state = "giantbow_mob" + ..() + /obj/item/clothing/head/fluff/giantbow //Public version name = "Giant Bow" desc = "It's a huge bow! So pretty!" @@ -2695,3 +2703,16 @@ Departamental Swimsuits, for general use icon_override = 'icons/vore/custom_clothes_vr.dmi' item_state = "giantbow_mob" + +//Halored: Mercury + +/obj/item/clothing/gloves/ring/material/void_opal/fluff/mercury + name = "Mercury's Mate Ring" + desc = "A band of void opal, given to Mercury by Lumen" + +//satinisle: Parriz Tavakdavi + +/obj/item/clothing/suit/storage/toggle/labcoat/fluff/parrizjacket + name = "pink crop bomber" + desc = "A pink crop bomber jacket that is just barely able to zip up at the front. It has a small Virgo Orbital Research Establishment patch on each shoulder." + icon_state = "parriz_jacket" diff --git a/config/alienwhitelist.txt b/config/alienwhitelist.txt index 032b3edc91..69ec593740 100644 --- a/config/alienwhitelist.txt +++ b/config/alienwhitelist.txt @@ -6,6 +6,7 @@ alphaprime1 - Protean amarewolf - Xenochimera amshaegaar - Vox arandomalien - Xenochimera +arminazenith - Protean arokha - Protean aruis - Diona aruis - Protean diff --git a/icons/inventory/suit/item.dmi b/icons/inventory/suit/item.dmi index 6e6a8461e9..f7f986c818 100644 Binary files a/icons/inventory/suit/item.dmi and b/icons/inventory/suit/item.dmi differ diff --git a/icons/inventory/suit/mob.dmi b/icons/inventory/suit/mob.dmi index c8ee40316e..93e8344828 100644 Binary files a/icons/inventory/suit/mob.dmi and b/icons/inventory/suit/mob.dmi differ diff --git a/icons/mob/altevian_mercs_vr.dmi b/icons/mob/altevian_mercs_vr.dmi new file mode 100644 index 0000000000..aea4bcb8e9 Binary files /dev/null and b/icons/mob/altevian_mercs_vr.dmi differ diff --git a/icons/mob/human_face_vr.dmi b/icons/mob/human_face_vr.dmi index 89a7a4612a..ea687def73 100644 Binary files a/icons/mob/human_face_vr.dmi and b/icons/mob/human_face_vr.dmi differ diff --git a/icons/mob/human_face_vr_add.dmi b/icons/mob/human_face_vr_add.dmi index f1f3009e9f..cc22c73adb 100644 Binary files a/icons/mob/human_face_vr_add.dmi and b/icons/mob/human_face_vr_add.dmi differ diff --git a/icons/mob/screen/holo.dmi b/icons/mob/screen/holo.dmi index 5bfc9e5324..5c368b9deb 100644 Binary files a/icons/mob/screen/holo.dmi and b/icons/mob/screen/holo.dmi differ diff --git a/icons/mob/screen/midnight.dmi b/icons/mob/screen/midnight.dmi index 868e1db2c9..a8f7e37cdc 100644 Binary files a/icons/mob/screen/midnight.dmi and b/icons/mob/screen/midnight.dmi differ diff --git a/icons/mob/screen/minimalist.dmi b/icons/mob/screen/minimalist.dmi index cece74b31e..137d114894 100644 Binary files a/icons/mob/screen/minimalist.dmi and b/icons/mob/screen/minimalist.dmi differ diff --git a/icons/mob/screen/old-noborder.dmi b/icons/mob/screen/old-noborder.dmi index 384362d730..fc982a1664 100644 Binary files a/icons/mob/screen/old-noborder.dmi and b/icons/mob/screen/old-noborder.dmi differ diff --git a/icons/mob/screen/old.dmi b/icons/mob/screen/old.dmi index b625199f0f..6009288af2 100644 Binary files a/icons/mob/screen/old.dmi and b/icons/mob/screen/old.dmi differ diff --git a/icons/mob/screen/orange.dmi b/icons/mob/screen/orange.dmi index 3abd4dc7b7..e56e148b12 100644 Binary files a/icons/mob/screen/orange.dmi and b/icons/mob/screen/orange.dmi differ diff --git a/icons/mob/screen/white.dmi b/icons/mob/screen/white.dmi index b2250c7ccf..e075560fb8 100644 Binary files a/icons/mob/screen/white.dmi and b/icons/mob/screen/white.dmi differ diff --git a/maps/groundbase/groundbase_events.dm b/maps/groundbase/groundbase_events.dm index e6d43a25fd..905ce89875 100644 --- a/maps/groundbase/groundbase_events.dm +++ b/maps/groundbase/groundbase_events.dm @@ -48,10 +48,10 @@ new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Aurora Caelus", /datum/event/aurora_caelus, 2, list(), 1), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 2)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lone Spacefish", /datum/event/spacefish_migration, 0, list(ASSIGNMENT_SECURITY = 15), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Ray", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Shark", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Mob", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Cloud", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), )) /datum/event_container/moderate/New() @@ -76,17 +76,18 @@ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 20)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 50, list(ASSIGNMENT_MEDICAL = 50), 1), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 0, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 0, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Solar Storm", /datum/event/solar_storm, 30, list(ASSIGNMENT_ENGINEER = 40, ASSIGNMENT_SECURITY = 30), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravity Failure", /datum/event/gravity, 75, list(ASSIGNMENT_ENGINEER = 60), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 1, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 3)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 0, list(ASSIGNMENT_SECURITY = 20), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Stray Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spacefish Migration", /datum/event/spacefish_migration, 0, list(ASSIGNMENT_SECURITY = 40, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 25, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), )) /datum/event_container/major/New() @@ -94,7 +95,7 @@ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 3600), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Atmos Leak", /datum/event/atmos_leak, 20, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 10, list(ASSIGNMENT_ENGINEER = 3, ASSIGNMENT_GARDENER = 3, ASSIGNMENT_SCIENTIST = 3), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_SCIENTIST = 5), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_SCIENTIST = 5), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Amassing Wildlife", /datum/event/roaming_wildlife, 0, list(ASSIGNMENT_SECURITY = 10, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), ) add_disabled_events(list( @@ -102,11 +103,12 @@ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 10, list(ASSIGNMENT_ENGINEER = 60), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 15), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Spacefish Swarm", /datum/event/spacefish_migration, 10, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Stray Rays", /datum/event/ray_migration, 20, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_MEDICAL = 5), min_jobs = list(ASSIGNMENT_SECURITY = 2)), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 20, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_MEDICAL = 5), min_jobs = list(ASSIGNMENT_SECURITY = 2)), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 20, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_MEDICAL = 5), min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), )) #undef ASSIGNMENT_ANY diff --git a/maps/stellar_delight/stellar_delight_events.dm b/maps/stellar_delight/stellar_delight_events.dm index 2f95fb5d12..9511d67a04 100644 --- a/maps/stellar_delight/stellar_delight_events.dm +++ b/maps/stellar_delight/stellar_delight_events.dm @@ -36,9 +36,7 @@ new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Canister Leak", /datum/event/canister_leak, 10, list(ASSIGNMENT_ENGINEER = 20), min_jobs = list(ASSIGNMENT_ENGINEER = 1)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 2)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Ray", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Cloud", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lone Spacefish", /datum/event/spacefish_migration, 0, list(ASSIGNMENT_SECURITY = 15), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0), @@ -53,6 +51,9 @@ add_disabled_events(list( new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Ian Storm", /datum/event/ianstorm, 1, list(), 1), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Ray", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Cloud", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), )) /datum/event_container/moderate/New() @@ -60,7 +61,7 @@ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Nothing", /datum/event/nothing, 1600), // Leaks gas into an unoccupied room. new /datum/event_meta(EVENT_LEVEL_MODERATE, "Atmos Leak", /datum/event/atmos_leak, 30, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spacefish Migration", /datum/event/spacefish_migration, 0, list(ASSIGNMENT_SECURITY = 40, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), // Just disables comms for a short while. new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(), 1), // Just blows out a few lights @@ -85,10 +86,6 @@ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Drone Pod Drop", /datum/event/drone_pod_drop, 40, list(ASSIGNMENT_SCIENTIST = 40), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_ANY = 5), 0), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 100, list(ASSIGNMENT_ANY = 5), 0), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), ) add_disabled_events(list( new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1), @@ -97,6 +94,11 @@ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 50, list(ASSIGNMENT_MEDICAL = 50), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 0, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 25, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), )) /datum/event_container/major/New() @@ -104,18 +106,19 @@ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 3600), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Atmos Leak", /datum/event/atmos_leak, 20, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 10, list(ASSIGNMENT_ENGINEER = 3, ASSIGNMENT_GARDENER = 3, ASSIGNMENT_SCIENTIST = 3), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Spacefish Swarm", /datum/event/spacefish_migration, 10, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_SCIENTIST = 5), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), ) add_disabled_events(list( new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 10, list(ASSIGNMENT_ENGINEER = 60), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 15), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), )) #undef ASSIGNMENT_ANY diff --git a/maps/tether/tether_events.dm b/maps/tether/tether_events.dm index 32971312b1..5ed863881a 100644 --- a/maps/tether/tether_events.dm +++ b/maps/tether/tether_events.dm @@ -36,9 +36,7 @@ new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Canister Leak", /datum/event/canister_leak, 10, list(ASSIGNMENT_ENGINEER = 20), min_jobs = list(ASSIGNMENT_ENGINEER = 1)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 2)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Ray", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Cloud", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lone Spacefish", /datum/event/spacefish_migration, 0, list(ASSIGNMENT_SECURITY = 15), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0), @@ -53,6 +51,9 @@ add_disabled_events(list( new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Ian Storm", /datum/event/ianstorm, 1, list(), 1), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Ray", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Cloud", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), )) /datum/event_container/moderate/New() @@ -60,7 +61,7 @@ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Nothing", /datum/event/nothing, 1600), // Leaks gas into an unoccupied room. new /datum/event_meta(EVENT_LEVEL_MODERATE, "Atmos Leak", /datum/event/atmos_leak, 30, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spacefish Migration", /datum/event/spacefish_migration, 0, list(ASSIGNMENT_SECURITY = 40, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), // Just disables comms for a short while. new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(), 1), // Just blows out a few lights @@ -85,10 +86,6 @@ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Drone Pod Drop", /datum/event/drone_pod_drop, 40, list(ASSIGNMENT_SCIENTIST = 40), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_ANY = 5), 0), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 100, list(ASSIGNMENT_ANY = 5), 0), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), ) add_disabled_events(list( new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1), @@ -97,6 +94,11 @@ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 50, list(ASSIGNMENT_MEDICAL = 50), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 0, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 25, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), )) /datum/event_container/major/New() @@ -104,18 +106,19 @@ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 3600), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Atmos Leak", /datum/event/atmos_leak, 20, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 10, list(ASSIGNMENT_ENGINEER = 3, ASSIGNMENT_GARDENER = 3, ASSIGNMENT_SCIENTIST = 3), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Spacefish Swarm", /datum/event/spacefish_migration, 10, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_SCIENTIST = 5), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1), ) add_disabled_events(list( new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 10, list(ASSIGNMENT_ENGINEER = 60), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 15), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), )) #undef ASSIGNMENT_ANY diff --git a/tgui/packages/tgui/interfaces/Communicator.tsx b/tgui/packages/tgui/interfaces/Communicator.tsx index 6a6580fc47..6f60487678 100644 --- a/tgui/packages/tgui/interfaces/Communicator.tsx +++ b/tgui/packages/tgui/interfaces/Communicator.tsx @@ -1158,6 +1158,8 @@ const WeatherTab = (props, context) => { const { aircontents, weather } = data; + let deg = '\u00B0'; + return (
@@ -1195,8 +1197,8 @@ const WeatherTab = (props, context) => { {toTitleCase(wr.Weather)} - Current: {wr.Temperature.toFixed()}°C | High:{' '} - {wr.High.toFixed()}°C | Low: {wr.Low.toFixed()}°C + Current: {wr.Temperature.toFixed()} {deg}C | High:{' '} + {wr.High.toFixed()} {deg}C | Low: {wr.Low.toFixed()} {deg}C {wr.WindDir} diff --git a/tgui/packages/tgui/interfaces/pda/pda_medical.js b/tgui/packages/tgui/interfaces/pda/pda_medical.js index 949c8d2dcc..9cc01139de 100644 --- a/tgui/packages/tgui/interfaces/pda/pda_medical.js +++ b/tgui/packages/tgui/interfaces/pda/pda_medical.js @@ -64,7 +64,7 @@ export const pda_medical = (props, context) => { {medical.cdi_d} - {medical.notes} + {medical.notes} )) || Medical record lost!} diff --git a/tgui/packages/tgui/interfaces/pda/pda_security.js b/tgui/packages/tgui/interfaces/pda/pda_security.js index bdd090a065..8e3d18bb78 100644 --- a/tgui/packages/tgui/interfaces/pda/pda_security.js +++ b/tgui/packages/tgui/interfaces/pda/pda_security.js @@ -51,8 +51,10 @@ export const pda_security = (props, context) => { {security.ma_crim_d} - - {security.notes || 'No data found.'} + + + {security.notes || 'No data found.'} + )) || Security record lost!} diff --git a/tgui/public/tgui.bundle.js b/tgui/public/tgui.bundle.js index 5089ff3b2e..9474da337b 100644 --- a/tgui/public/tgui.bundle.js +++ b/tgui/public/tgui.bundle.js @@ -1 +1 @@ -!function(){var e={21926:function(e,t,n){"use strict";t.__esModule=!0,t.createPopper=void 0,t.popperGenerator=f;var o=m(n(48764)),r=m(n(68349)),a=m(n(3671)),i=m(n(55490)),c=(m(n(40755)),m(n(69282))),l=m(n(27672)),d=(m(n(30752)),m(n(12459)),m(n(27629)),m(n(54220))),s=m(n(75949));t.detectOverflow=s["default"];var u=n(79388);n(15954);function m(e){return e&&e.__esModule?e:{"default":e}}var p={placement:"bottom",modifiers:[],strategy:"absolute"};function h(){for(var e=arguments.length,t=new Array(e),n=0;n0&&(a=(0,r.round)(n.width)/l||1),c>0&&(i=(0,r.round)(n.height)/c||1)}return{width:n.width/a,height:n.height/i,top:n.top/i,right:n.right/a,bottom:n.bottom/i,left:n.left/a,x:n.left/a,y:n.top/i}};var o=n(79388),r=n(36291)},65647:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t,n){var o="clippingParents"===t?function(e){var t=(0,i["default"])((0,m["default"])(e)),n=["absolute","fixed"].indexOf((0,d["default"])(e).position)>=0&&(0,s.isHTMLElement)(e)?(0,c["default"])(e):e;if(!(0,s.isElement)(n))return[];return t.filter((function(e){return(0,s.isElement)(e)&&(0,p["default"])(e,n)&&"body"!==(0,h["default"])(e)}))}(e):[].concat(t),r=[].concat(o,[n]),a=r[0],l=r.reduce((function(t,n){var o=N(e,n);return t.top=(0,C.max)(o.top,t.top),t.right=(0,C.min)(o.right,t.right),t.bottom=(0,C.min)(o.bottom,t.bottom),t.left=(0,C.max)(o.left,t.left),t}),N(e,a));return l.width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l};var o=n(15954),r=b(n(8204)),a=b(n(40015)),i=b(n(3671)),c=b(n(55490)),l=b(n(25890)),d=b(n(40755)),s=n(79388),u=b(n(11100)),m=b(n(95136)),p=b(n(62215)),h=b(n(38569)),f=b(n(73060)),C=n(36291);function b(e){return e&&e.__esModule?e:{"default":e}}function N(e,t){return t===o.viewport?(0,f["default"])((0,r["default"])(e)):(0,s.isElement)(t)?function(e){var t=(0,u["default"])(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(t):(0,f["default"])((0,a["default"])((0,l["default"])(e)))}},48764:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t,n){void 0===n&&(n=!1);var u=(0,i.isHTMLElement)(t),m=(0,i.isHTMLElement)(t)&&function(e){var t=e.getBoundingClientRect(),n=(0,s.round)(t.width)/e.offsetWidth||1,o=(0,s.round)(t.height)/e.offsetHeight||1;return 1!==n||1!==o}(t),p=(0,l["default"])(t),h=(0,o["default"])(e,m),f={scrollLeft:0,scrollTop:0},C={x:0,y:0};(u||!u&&!n)&&(("body"!==(0,a["default"])(t)||(0,d["default"])(p))&&(f=(0,r["default"])(t)),(0,i.isHTMLElement)(t)?((C=(0,o["default"])(t,!0)).x+=t.clientLeft,C.y+=t.clientTop):p&&(C.x=(0,c["default"])(p)));return{x:h.left+f.scrollLeft-C.x,y:h.top+f.scrollTop-C.y,width:h.width,height:h.height}};var o=u(n(11100)),r=u(n(3514)),a=u(n(38569)),i=n(79388),c=u(n(36056)),l=u(n(25890)),d=u(n(57360)),s=n(36291);function u(e){return e&&e.__esModule?e:{"default":e}}},40755:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(0,r["default"])(e).getComputedStyle(e)};var o,r=(o=n(96904))&&o.__esModule?o:{"default":o}},25890:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(((0,o.isElement)(e)?e.ownerDocument:e.document)||window.document).documentElement};var o=n(79388)},40015:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n=(0,o["default"])(e),l=(0,i["default"])(e),d=null==(t=e.ownerDocument)?void 0:t.body,s=(0,c.max)(n.scrollWidth,n.clientWidth,d?d.scrollWidth:0,d?d.clientWidth:0),u=(0,c.max)(n.scrollHeight,n.clientHeight,d?d.scrollHeight:0,d?d.clientHeight:0),m=-l.scrollLeft+(0,a["default"])(e),p=-l.scrollTop;"rtl"===(0,r["default"])(d||n).direction&&(m+=(0,c.max)(n.clientWidth,d?d.clientWidth:0)-s);return{width:s,height:u,x:m,y:p}};var o=l(n(25890)),r=l(n(40755)),a=l(n(36056)),i=l(n(69211)),c=n(36291);function l(e){return e&&e.__esModule?e:{"default":e}}},41829:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}},68349:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,r["default"])(e),n=e.offsetWidth,o=e.offsetHeight;Math.abs(t.width-n)<=1&&(n=t.width);Math.abs(t.height-o)<=1&&(o=t.height);return{x:e.offsetLeft,y:e.offsetTop,width:n,height:o}};var o,r=(o=n(11100))&&o.__esModule?o:{"default":o}},38569:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e?(e.nodeName||"").toLowerCase():null}},3514:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return e!==(0,r["default"])(e)&&(0,a.isHTMLElement)(e)?(0,i["default"])(e):(0,o["default"])(e)};var o=c(n(69211)),r=c(n(96904)),a=n(79388),i=c(n(41829));function c(e){return e&&e.__esModule?e:{"default":e}}},55490:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=s(e);for(;n&&(0,c["default"])(n)&&"static"===(0,a["default"])(n).position;)n=s(n);if(n&&("html"===(0,r["default"])(n)||"body"===(0,r["default"])(n)&&"static"===(0,a["default"])(n).position))return t;return n||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&(0,i.isHTMLElement)(e)){if("fixed"===(0,a["default"])(e).position)return null}var n=(0,l["default"])(e);(0,i.isShadowRoot)(n)&&(n=n.host);for(;(0,i.isHTMLElement)(n)&&["html","body"].indexOf((0,r["default"])(n))<0;){var o=(0,a["default"])(n);if("none"!==o.transform||"none"!==o.perspective||"paint"===o.contain||-1!==["transform","perspective"].indexOf(o.willChange)||t&&"filter"===o.willChange||t&&o.filter&&"none"!==o.filter)return n;n=n.parentNode}return null}(e)||t};var o=d(n(96904)),r=d(n(38569)),a=d(n(40755)),i=n(79388),c=d(n(94437)),l=d(n(95136));function d(e){return e&&e.__esModule?e:{"default":e}}function s(e){return(0,i.isHTMLElement)(e)&&"fixed"!==(0,a["default"])(e).position?e.offsetParent:null}},95136:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){if("html"===(0,o["default"])(e))return e;return e.assignedSlot||e.parentNode||((0,a.isShadowRoot)(e)?e.host:null)||(0,r["default"])(e)};var o=i(n(38569)),r=i(n(25890)),a=n(79388);function i(e){return e&&e.__esModule?e:{"default":e}}},43367:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function l(e){if(["html","body","#document"].indexOf((0,a["default"])(e))>=0)return e.ownerDocument.body;if((0,i.isHTMLElement)(e)&&(0,r["default"])(e))return e;return l((0,o["default"])(e))};var o=c(n(95136)),r=c(n(57360)),a=c(n(38569)),i=n(79388);function c(e){return e&&e.__esModule?e:{"default":e}}},8204:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=(0,r["default"])(e),i=t.visualViewport,c=n.clientWidth,l=n.clientHeight,d=0,s=0;i&&(c=i.width,l=i.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(d=i.offsetLeft,s=i.offsetTop));return{width:c,height:l,x:d+(0,a["default"])(e),y:s}};var o=i(n(96904)),r=i(n(25890)),a=i(n(36056));function i(e){return e&&e.__esModule?e:{"default":e}}},96904:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}},69211:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,r["default"])(e),n=t.pageXOffset,o=t.pageYOffset;return{scrollLeft:n,scrollTop:o}};var o,r=(o=n(96904))&&o.__esModule?o:{"default":o}},36056:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(0,o["default"])((0,r["default"])(e)).left+(0,a["default"])(e).scrollLeft};var o=i(n(11100)),r=i(n(25890)),a=i(n(69211));function i(e){return e&&e.__esModule?e:{"default":e}}},79388:function(e,t,n){"use strict";t.__esModule=!0,t.isElement=function(e){var t=(0,r["default"])(e).Element;return e instanceof t||e instanceof Element},t.isHTMLElement=function(e){var t=(0,r["default"])(e).HTMLElement;return e instanceof t||e instanceof HTMLElement},t.isShadowRoot=function(e){if("undefined"==typeof ShadowRoot)return!1;var t=(0,r["default"])(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot};var o,r=(o=n(96904))&&o.__esModule?o:{"default":o}},57360:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,r["default"])(e),n=t.overflow,o=t.overflowX,a=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+a+o)};var o,r=(o=n(40755))&&o.__esModule?o:{"default":o}},94437:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return["table","td","th"].indexOf((0,r["default"])(e))>=0};var o,r=(o=n(38569))&&o.__esModule?o:{"default":o}},3671:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function l(e,t){var n;void 0===t&&(t=[]);var c=(0,o["default"])(e),d=c===(null==(n=e.ownerDocument)?void 0:n.body),s=(0,a["default"])(c),u=d?[s].concat(s.visualViewport||[],(0,i["default"])(c)?c:[]):c,m=t.concat(u);return d?m:m.concat(l((0,r["default"])(u)))};var o=c(n(43367)),r=c(n(95136)),a=c(n(96904)),i=c(n(57360));function c(e){return e&&e.__esModule?e:{"default":e}}},15954:function(e,t){"use strict";t.__esModule=!0,t.write=t.viewport=t.variationPlacements=t.top=t.start=t.right=t.reference=t.read=t.popper=t.placements=t.modifierPhases=t.main=t.left=t.end=t.clippingParents=t.bottom=t.beforeWrite=t.beforeRead=t.beforeMain=t.basePlacements=t.auto=t.afterWrite=t.afterRead=t.afterMain=void 0;t.top="top";var n="bottom";t.bottom=n;var o="right";t.right=o;var r="left";t.left=r;var a="auto";t.auto=a;var i=["top",n,o,r];t.basePlacements=i;var c="start";t.start=c;var l="end";t.end=l;t.clippingParents="clippingParents";t.viewport="viewport";t.popper="popper";t.reference="reference";var d=i.reduce((function(e,t){return e.concat([t+"-"+c,t+"-"+l])}),[]);t.variationPlacements=d;var s=[].concat(i,[a]).reduce((function(e,t){return e.concat([t,t+"-"+c,t+"-"+l])}),[]);t.placements=s;var u="beforeRead";t.beforeRead=u;var m="read";t.read=m;var p="afterRead";t.afterRead=p;var h="beforeMain";t.beforeMain=h;var f="main";t.main=f;var C="afterMain";t.afterMain=C;var b="beforeWrite";t.beforeWrite=b;var N="write";t.write=N;var g="afterWrite";t.afterWrite=g;var V=[u,m,p,h,f,C,b,N,g];t.modifierPhases=V},37809:function(e,t,n){"use strict";t.__esModule=!0;var o={popperGenerator:!0,detectOverflow:!0,createPopperBase:!0,createPopper:!0,createPopperLite:!0};t.popperGenerator=t.detectOverflow=t.createPopperLite=t.createPopperBase=t.createPopper=void 0;var r=n(15954);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(o,e)||e in t&&t[e]===r[e]||(t[e]=r[e]))}));var a=n(4207);Object.keys(a).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(o,e)||e in t&&t[e]===a[e]||(t[e]=a[e]))}));var i=n(21926);t.popperGenerator=i.popperGenerator,t.detectOverflow=i.detectOverflow,t.createPopperBase=i.createPopper;var c=n(17827);t.createPopper=c.createPopper;var l=n(47952);t.createPopperLite=l.createPopper},89290:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o,r=(o=n(38569))&&o.__esModule?o:{"default":o},a=n(79388);var i={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},o=t.attributes[e]||{},i=t.elements[e];(0,a.isHTMLElement)(i)&&(0,r["default"])(i)&&(Object.assign(i.style,n),Object.keys(o).forEach((function(e){var t=o[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var o=t.elements[e],i=t.attributes[e]||{},c=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});(0,a.isHTMLElement)(o)&&(0,r["default"])(o)&&(Object.assign(o.style,c),Object.keys(i).forEach((function(e){o.removeAttribute(e)})))}))}},requires:["computeStyles"]};t["default"]=i},71313:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o=m(n(27629)),r=m(n(68349)),a=m(n(62215)),i=m(n(55490)),c=m(n(78772)),l=n(54444),d=m(n(11277)),s=m(n(45674)),u=n(15954);n(79388);function m(e){return e&&e.__esModule?e:{"default":e}}var p=function(e,t){return e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e,(0,d["default"])("number"!=typeof e?e:(0,s["default"])(e,u.basePlacements))};var h={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,a=e.name,d=e.options,s=n.elements.arrow,m=n.modifiersData.popperOffsets,h=(0,o["default"])(n.placement),f=(0,c["default"])(h),C=[u.left,u.right].indexOf(h)>=0?"height":"width";if(s&&m){var b=p(d.padding,n),N=(0,r["default"])(s),g="y"===f?u.top:u.left,V="y"===f?u.bottom:u.right,v=n.rects.reference[C]+n.rects.reference[f]-m[f]-n.rects.popper[C],_=m[f]-n.rects.reference[f],y=(0,i["default"])(s),k=y?"y"===f?y.clientHeight||0:y.clientWidth||0:0,x=v/2-_/2,w=b[g],B=k-N[C]-b[V],L=k/2-N[C]/2+x,S=(0,l.within)(w,L,B),I=f;n.modifiersData[a]=((t={})[I]=S,t.centerOffset=S-L,t)}},effect:function(e){var t=e.state,n=e.options.element,o=void 0===n?"[data-popper-arrow]":n;null!=o&&("string"!=typeof o||(o=t.elements.popper.querySelector(o)))&&(0,a["default"])(t.elements.popper,o)&&(t.elements.arrow=o)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};t["default"]=h},54680:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0,t.mapToStyles=p;var o=n(15954),r=u(n(55490)),a=u(n(96904)),i=u(n(25890)),c=u(n(40755)),l=u(n(27629)),d=u(n(31686)),s=n(36291);function u(e){return e&&e.__esModule?e:{"default":e}}var m={top:"auto",right:"auto",bottom:"auto",left:"auto"};function p(e){var t,n=e.popper,l=e.popperRect,d=e.placement,u=e.variation,p=e.offsets,h=e.position,f=e.gpuAcceleration,C=e.adaptive,b=e.roundOffsets,N=e.isFixed,g=p.x,V=void 0===g?0:g,v=p.y,_=void 0===v?0:v,y="function"==typeof b?b({x:V,y:_}):{x:V,y:_};V=y.x,_=y.y;var k=p.hasOwnProperty("x"),x=p.hasOwnProperty("y"),w=o.left,B=o.top,L=window;if(C){var S=(0,r["default"])(n),I="clientHeight",T="clientWidth";if(S===(0,a["default"])(n)&&(S=(0,i["default"])(n),"static"!==(0,c["default"])(S).position&&"absolute"===h&&(I="scrollHeight",T="scrollWidth")),d===o.top||(d===o.left||d===o.right)&&u===o.end)B=o.bottom,_-=(N&&S===L&&L.visualViewport?L.visualViewport.height:S[I])-l.height,_*=f?1:-1;if(d===o.left||(d===o.top||d===o.bottom)&&u===o.end)w=o.right,V-=(N&&S===L&&L.visualViewport?L.visualViewport.width:S[T])-l.width,V*=f?1:-1}var M,A=Object.assign({position:h},C&&m),E=!0===b?function(e){var t=e.x,n=e.y,o=window.devicePixelRatio||1;return{x:(0,s.round)(t*o)/o||0,y:(0,s.round)(n*o)/o||0}}({x:V,y:_}):{x:V,y:_};return V=E.x,_=E.y,f?Object.assign({},A,((M={})[B]=x?"0":"",M[w]=k?"0":"",M.transform=(L.devicePixelRatio||1)<=1?"translate("+V+"px, "+_+"px)":"translate3d("+V+"px, "+_+"px, 0)",M)):Object.assign({},A,((t={})[B]=x?_+"px":"",t[w]=k?V+"px":"",t.transform="",t))}var h={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,o=n.gpuAcceleration,r=void 0===o||o,a=n.adaptive,i=void 0===a||a,c=n.roundOffsets,s=void 0===c||c,u={placement:(0,l["default"])(t.placement),variation:(0,d["default"])(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,p(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:i,roundOffsets:s})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,p(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:s})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};t["default"]=h},53887:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o,r=(o=n(96904))&&o.__esModule?o:{"default":o};var a={passive:!0};var i={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,o=e.options,i=o.scroll,c=void 0===i||i,l=o.resize,d=void 0===l||l,s=(0,r["default"])(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return c&&u.forEach((function(e){e.addEventListener("scroll",n.update,a)})),d&&s.addEventListener("resize",n.update,a),function(){c&&u.forEach((function(e){e.removeEventListener("scroll",n.update,a)})),d&&s.removeEventListener("resize",n.update,a)}},data:{}};t["default"]=i},82566:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o=s(n(31477)),r=s(n(27629)),a=s(n(44214)),i=s(n(75949)),c=s(n(2894)),l=n(15954),d=s(n(31686));function s(e){return e&&e.__esModule?e:{"default":e}}var u={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,s=e.name;if(!t.modifiersData[s]._skip){for(var u=n.mainAxis,m=void 0===u||u,p=n.altAxis,h=void 0===p||p,f=n.fallbackPlacements,C=n.padding,b=n.boundary,N=n.rootBoundary,g=n.altBoundary,V=n.flipVariations,v=void 0===V||V,_=n.allowedAutoPlacements,y=t.options.placement,k=(0,r["default"])(y),x=f||(k===y||!v?[(0,o["default"])(y)]:function(e){if((0,r["default"])(e)===l.auto)return[];var t=(0,o["default"])(e);return[(0,a["default"])(e),t,(0,a["default"])(t)]}(y)),w=[y].concat(x).reduce((function(e,n){return e.concat((0,r["default"])(n)===l.auto?(0,c["default"])(t,{placement:n,boundary:b,rootBoundary:N,padding:C,flipVariations:v,allowedAutoPlacements:_}):n)}),[]),B=t.rects.reference,L=t.rects.popper,S=new Map,I=!0,T=w[0],M=0;M=0,F=O?"width":"height",D=(0,i["default"])(t,{placement:A,boundary:b,rootBoundary:N,altBoundary:g,padding:C}),R=O?P?l.right:l.left:P?l.bottom:l.top;B[F]>L[F]&&(R=(0,o["default"])(R));var j=(0,o["default"])(R),W=[];if(m&&W.push(D[E]<=0),h&&W.push(D[R]<=0,D[j]<=0),W.every((function(e){return e}))){T=A,I=!1;break}S.set(A,W)}if(I)for(var z=function(e){var t=w.find((function(t){var n=S.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return T=t,"break"},U=v?3:1;U>0;U--){if("break"===z(U))break}t.placement!==T&&(t.modifiersData[s]._skip=!0,t.placement=T,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};t["default"]=u},27353:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o,r=n(15954),a=(o=n(75949))&&o.__esModule?o:{"default":o};function i(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function c(e){return[r.top,r.right,r.bottom,r.left].some((function(t){return e[t]>=0}))}var l={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,o=t.rects.reference,r=t.rects.popper,l=t.modifiersData.preventOverflow,d=(0,a["default"])(t,{elementContext:"reference"}),s=(0,a["default"])(t,{altBoundary:!0}),u=i(d,o),m=i(s,r,l),p=c(u),h=c(m);t.modifiersData[n]={referenceClippingOffsets:u,popperEscapeOffsets:m,isReferenceHidden:p,hasPopperEscaped:h},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":h})}};t["default"]=l},4207:function(e,t,n){"use strict";t.__esModule=!0,t.preventOverflow=t.popperOffsets=t.offset=t.hide=t.flip=t.eventListeners=t.computeStyles=t.arrow=t.applyStyles=void 0;var o=m(n(89290));t.applyStyles=o["default"];var r=m(n(71313));t.arrow=r["default"];var a=m(n(54680));t.computeStyles=a["default"];var i=m(n(53887));t.eventListeners=i["default"];var c=m(n(82566));t.flip=c["default"];var l=m(n(27353));t.hide=l["default"];var d=m(n(99873));t.offset=d["default"];var s=m(n(83662));t.popperOffsets=s["default"];var u=m(n(21031));function m(e){return e&&e.__esModule?e:{"default":e}}t.preventOverflow=u["default"]},99873:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0,t.distanceAndSkiddingToXY=i;var o,r=(o=n(27629))&&o.__esModule?o:{"default":o},a=n(15954);function i(e,t,n){var o=(0,r["default"])(e),i=[a.left,a.top].indexOf(o)>=0?-1:1,c="function"==typeof n?n(Object.assign({},t,{placement:e})):n,l=c[0],d=c[1];return l=l||0,d=(d||0)*i,[a.left,a.right].indexOf(o)>=0?{x:d,y:l}:{x:l,y:d}}var c={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,o=e.name,r=n.offset,c=void 0===r?[0,0]:r,l=a.placements.reduce((function(e,n){return e[n]=i(n,t.rects,c),e}),{}),d=l[t.placement],s=d.x,u=d.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=s,t.modifiersData.popperOffsets.y+=u),t.modifiersData[o]=l}};t["default"]=c},83662:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o,r=(o=n(2002))&&o.__esModule?o:{"default":o};var a={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=(0,r["default"])({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};t["default"]=a},21031:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var o=n(15954),r=h(n(27629)),a=h(n(78772)),i=h(n(16696)),c=n(54444),l=h(n(68349)),d=h(n(55490)),s=h(n(75949)),u=h(n(31686)),m=h(n(22710)),p=n(36291);function h(e){return e&&e.__esModule?e:{"default":e}}var f={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,h=e.name,f=n.mainAxis,C=void 0===f||f,b=n.altAxis,N=void 0!==b&&b,g=n.boundary,V=n.rootBoundary,v=n.altBoundary,_=n.padding,y=n.tether,k=void 0===y||y,x=n.tetherOffset,w=void 0===x?0:x,B=(0,s["default"])(t,{boundary:g,rootBoundary:V,padding:_,altBoundary:v}),L=(0,r["default"])(t.placement),S=(0,u["default"])(t.placement),I=!S,T=(0,a["default"])(L),M=(0,i["default"])(T),A=t.modifiersData.popperOffsets,E=t.rects.reference,P=t.rects.popper,O="function"==typeof w?w(Object.assign({},t.rects,{placement:t.placement})):w,F="number"==typeof O?{mainAxis:O,altAxis:O}:Object.assign({mainAxis:0,altAxis:0},O),D=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,R={x:0,y:0};if(A){if(C){var j,W="y"===T?o.top:o.left,z="y"===T?o.bottom:o.right,U="y"===T?"height":"width",H=A[T],G=H+B[W],K=H-B[z],Y=k?-P[U]/2:0,q=S===o.start?E[U]:P[U],$=S===o.start?-P[U]:-E[U],X=t.elements.arrow,Q=k&&X?(0,l["default"])(X):{width:0,height:0},J=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:(0,m["default"])(),Z=J[W],ee=J[z],te=(0,c.within)(0,E[U],Q[U]),ne=I?E[U]/2-Y-te-Z-F.mainAxis:q-te-Z-F.mainAxis,oe=I?-E[U]/2+Y+te+ee+F.mainAxis:$+te+ee+F.mainAxis,re=t.elements.arrow&&(0,d["default"])(t.elements.arrow),ae=re?"y"===T?re.clientTop||0:re.clientLeft||0:0,ie=null!=(j=null==D?void 0:D[T])?j:0,ce=H+ne-ie-ae,le=H+oe-ie,de=(0,c.within)(k?(0,p.min)(G,ce):G,H,k?(0,p.max)(K,le):K);A[T]=de,R[T]=de-H}if(N){var se,ue="x"===T?o.top:o.left,me="x"===T?o.bottom:o.right,pe=A[M],he="y"===M?"height":"width",fe=pe+B[ue],Ce=pe-B[me],be=-1!==[o.top,o.left].indexOf(L),Ne=null!=(se=null==D?void 0:D[M])?se:0,ge=be?fe:pe-E[he]-P[he]-Ne+F.altAxis,Ve=be?pe+E[he]+P[he]-Ne-F.altAxis:Ce,ve=k&&be?(0,c.withinMaxClamp)(ge,pe,Ve):(0,c.within)(k?ge:fe,pe,k?Ve:Ce);A[M]=ve,R[M]=ve-pe}t.modifiersData[h]=R}},requiresIfExists:["offset"]};t["default"]=f},47952:function(e,t,n){"use strict";t.__esModule=!0,t.defaultModifiers=t.createPopper=void 0;var o=n(21926);t.popperGenerator=o.popperGenerator,t.detectOverflow=o.detectOverflow;var r=l(n(53887)),a=l(n(83662)),i=l(n(54680)),c=l(n(89290));function l(e){return e&&e.__esModule?e:{"default":e}}var d=[r["default"],a["default"],i["default"],c["default"]];t.defaultModifiers=d;var s=(0,o.popperGenerator)({defaultModifiers:d});t.createPopper=s},17827:function(e,t,n){"use strict";t.__esModule=!0;var o={createPopper:!0,createPopperLite:!0,defaultModifiers:!0,popperGenerator:!0,detectOverflow:!0};t.defaultModifiers=t.createPopperLite=t.createPopper=void 0;var r=n(21926);t.popperGenerator=r.popperGenerator,t.detectOverflow=r.detectOverflow;var a=C(n(53887)),i=C(n(83662)),c=C(n(54680)),l=C(n(89290)),d=C(n(99873)),s=C(n(82566)),u=C(n(21031)),m=C(n(71313)),p=C(n(27353)),h=n(47952);t.createPopperLite=h.createPopper;var f=n(4207);function C(e){return e&&e.__esModule?e:{"default":e}}Object.keys(f).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(o,e)||e in t&&t[e]===f[e]||(t[e]=f[e]))}));var b=[a["default"],i["default"],c["default"],l["default"],d["default"],s["default"],u["default"],m["default"],p["default"]];t.defaultModifiers=b;var N=(0,r.popperGenerator)({defaultModifiers:b});t.createPopperLite=t.createPopper=N},2894:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){void 0===t&&(t={});var n=t,c=n.placement,l=n.boundary,d=n.rootBoundary,s=n.padding,u=n.flipVariations,m=n.allowedAutoPlacements,p=void 0===m?r.placements:m,h=(0,o["default"])(c),f=h?u?r.variationPlacements:r.variationPlacements.filter((function(e){return(0,o["default"])(e)===h})):r.basePlacements,C=f.filter((function(e){return p.indexOf(e)>=0}));0===C.length&&(C=f);var b=C.reduce((function(t,n){return t[n]=(0,a["default"])(e,{placement:n,boundary:l,rootBoundary:d,padding:s})[(0,i["default"])(n)],t}),{});return Object.keys(b).sort((function(e,t){return b[e]-b[t]}))};var o=c(n(31686)),r=n(15954),a=c(n(75949)),i=c(n(27629));function c(e){return e&&e.__esModule?e:{"default":e}}},2002:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n=e.reference,c=e.element,l=e.placement,d=l?(0,o["default"])(l):null,s=l?(0,r["default"])(l):null,u=n.x+n.width/2-c.width/2,m=n.y+n.height/2-c.height/2;switch(d){case i.top:t={x:u,y:n.y-c.height};break;case i.bottom:t={x:u,y:n.y+n.height};break;case i.right:t={x:n.x+n.width,y:m};break;case i.left:t={x:n.x-c.width,y:m};break;default:t={x:n.x,y:n.y}}var p=d?(0,a["default"])(d):null;if(null!=p){var h="y"===p?"height":"width";switch(s){case i.start:t[p]=t[p]-(n[h]/2-c[h]/2);break;case i.end:t[p]=t[p]+(n[h]/2-c[h]/2)}}return t};var o=c(n(27629)),r=c(n(31686)),a=c(n(78772)),i=n(15954);function c(e){return e&&e.__esModule?e:{"default":e}}},27672:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){var t;return function(){return t||(t=new Promise((function(n){Promise.resolve().then((function(){t=undefined,n(e())}))}))),t}}},75949:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){void 0===t&&(t={});var n=t,m=n.placement,p=void 0===m?e.placement:m,h=n.boundary,f=void 0===h?l.clippingParents:h,C=n.rootBoundary,b=void 0===C?l.viewport:C,N=n.elementContext,g=void 0===N?l.popper:N,V=n.altBoundary,v=void 0!==V&&V,_=n.padding,y=void 0===_?0:_,k=(0,s["default"])("number"!=typeof y?y:(0,u["default"])(y,l.basePlacements)),x=g===l.popper?l.reference:l.popper,w=e.rects.popper,B=e.elements[v?x:g],L=(0,o["default"])((0,d.isElement)(B)?B:B.contextElement||(0,r["default"])(e.elements.popper),f,b),S=(0,a["default"])(e.elements.reference),I=(0,i["default"])({reference:S,element:w,strategy:"absolute",placement:p}),T=(0,c["default"])(Object.assign({},w,I)),M=g===l.popper?T:S,A={top:L.top-M.top+k.top,bottom:M.bottom-L.bottom+k.bottom,left:L.left-M.left+k.left,right:M.right-L.right+k.right},E=e.modifiersData.offset;if(g===l.popper&&E){var P=E[p];Object.keys(A).forEach((function(e){var t=[l.right,l.bottom].indexOf(e)>=0?1:-1,n=[l.top,l.bottom].indexOf(e)>=0?"y":"x";A[e]+=P[n]*t}))}return A};var o=m(n(65647)),r=m(n(25890)),a=m(n(11100)),i=m(n(2002)),c=m(n(73060)),l=n(15954),d=n(79388),s=m(n(11277)),u=m(n(45674));function m(e){return e&&e.__esModule?e:{"default":e}}},45674:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}},80885:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o=0?"x":"y"}},31477:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.replace(/left|right|bottom|top/g,(function(e){return n[e]}))};var n={left:"right",right:"left",bottom:"top",top:"bottom"}},44214:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.replace(/start|end/g,(function(e){return n[e]}))};var n={start:"end",end:"start"}},31686:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.split("-")[1]}},36291:function(e,t){"use strict";t.__esModule=!0,t.round=t.min=t.max=void 0;var n=Math.max;t.max=n;var o=Math.min;t.min=o;var r=Math.round;t.round=r},54220:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){var t=e.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{});return Object.keys(t).map((function(e){return t[e]}))}},11277:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return Object.assign({},(0,r["default"])(),e)};var o,r=(o=n(22710))&&o.__esModule?o:{"default":o}},69282:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=function(e){var t=new Map,n=new Set,o=[];function r(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var o=t.get(e);o&&r(o)}})),o.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||r(e)})),o}(e);return o.modifierPhases.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])};var o=n(15954)},73060:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}},12459:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){var n=new Set;return e.filter((function(e){var o=t(e);if(!n.has(o))return n.add(o),!0}))}},30752:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){e.forEach((function(t){[].concat(Object.keys(t),a).filter((function(e,t,n){return n.indexOf(e)===t})).forEach((function(n){switch(n){case"name":t.name;break;case"enabled":t.enabled;break;case"phase":r.modifierPhases.indexOf(t.phase);break;case"fn":t.fn;break;case"effect":null!=t.effect&&t.effect;break;case"requires":null!=t.requires&&Array.isArray(t.requires);break;case"requiresIfExists":Array.isArray(t.requiresIfExists)}t.requires&&t.requires.forEach((function(t){e.find((function(e){return e.name===t}))}))}))}))};(o=n(80885))&&o.__esModule;var o,r=n(15954);var a=["name","enabled","phase","fn","effect","requires","options"]},54444:function(e,t,n){"use strict";t.__esModule=!0,t.within=r,t.withinMaxClamp=function(e,t,n){var o=r(e,t,n);return o>n?n:o};var o=n(36291);function r(e,t,n){return(0,o.max)(e,(0,o.min)(t,n))}},7696:function(e,t,n){"use strict";var o=n(45744),r=n(56279),a=TypeError;e.exports=function(e){if(o(e))return e;throw a(r(e)+" is not a function")}},99079:function(e,t,n){"use strict";var o=n(49332),r=n(56279),a=TypeError;e.exports=function(e){if(o(e))return e;throw a(r(e)+" is not a constructor")}},3760:function(e,t,n){"use strict";var o=n(45744),r=String,a=TypeError;e.exports=function(e){if("object"==typeof e||o(e))return e;throw a("Can't set "+r(e)+" as a prototype")}},48144:function(e,t,n){"use strict";var o=n(43741),r=n(48525),a=n(92723).f,i=o("unscopables"),c=Array.prototype;c[i]==undefined&&a(c,i,{configurable:!0,value:r(null)}),e.exports=function(e){c[i][e]=!0}},21679:function(e,t,n){"use strict";var o=n(59529).charAt;e.exports=function(e,t,n){return t+(n?o(e,t).length:1)}},41706:function(e,t,n){"use strict";var o=n(76469),r=TypeError;e.exports=function(e,t){if(o(t,e))return e;throw r("Incorrect invocation")}},65522:function(e,t,n){"use strict";var o=n(5484),r=String,a=TypeError;e.exports=function(e){if(o(e))return e;throw a(r(e)+" is not an object")}},65167:function(e){"use strict";e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},26974:function(e,t,n){"use strict";var o=n(39125);e.exports=o((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))},92574:function(e,t,n){"use strict";var o,r,a,i=n(65167),c=n(77849),l=n(61770),d=n(45744),s=n(5484),u=n(77807),m=n(10374),p=n(56279),h=n(87229),f=n(73e3),C=n(92723).f,b=n(76469),N=n(56997),g=n(44958),V=n(43741),v=n(8220),_=n(48797),y=_.enforce,k=_.get,x=l.Int8Array,w=x&&x.prototype,B=l.Uint8ClampedArray,L=B&&B.prototype,S=x&&N(x),I=w&&N(w),T=Object.prototype,M=l.TypeError,A=V("toStringTag"),E=v("TYPED_ARRAY_TAG"),P="TypedArrayConstructor",O=i&&!!g&&"Opera"!==m(l.opera),F=!1,D={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},R={BigInt64Array:8,BigUint64Array:8},j=function(e){if(!s(e))return!1;var t=m(e);return"DataView"===t||u(D,t)||u(R,t)},W=function(e){if(!s(e))return!1;var t=m(e);return u(D,t)||u(R,t)};for(o in D)(a=(r=l[o])&&r.prototype)?y(a).TypedArrayConstructor=r:O=!1;for(o in R)(a=(r=l[o])&&r.prototype)&&(y(a).TypedArrayConstructor=r);if((!O||!d(S)||S===Function.prototype)&&(S=function(){throw M("Incorrect invocation")},O))for(o in D)l[o]&&g(l[o],S);if((!O||!I||I===T)&&(I=S.prototype,O))for(o in D)l[o]&&g(l[o].prototype,I);if(O&&N(L)!==I&&g(L,I),c&&!u(I,A))for(o in F=!0,C(I,A,{get:function(){return s(this)?this[E]:undefined}}),D)l[o]&&h(l[o],E,o);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:O,TYPED_ARRAY_TAG:F&&E,aTypedArray:function(e){if(W(e))return e;throw M("Target is not a typed array")},aTypedArrayConstructor:function(e){if(d(e)&&(!g||b(S,e)))return e;throw M(p(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n,o){if(c){if(n)for(var r in D){var a=l[r];if(a&&u(a.prototype,e))try{delete a.prototype[e]}catch(i){try{a.prototype[e]=t}catch(d){}}}I[e]&&!n||f(I,e,n?t:O&&w[e]||t,o)}},exportTypedArrayStaticMethod:function(e,t,n){var o,r;if(c){if(g){if(n)for(o in D)if((r=l[o])&&u(r,e))try{delete r[e]}catch(a){}if(S[e]&&!n)return;try{return f(S,e,n?t:O&&S[e]||t)}catch(a){}}for(o in D)!(r=l[o])||r[e]&&!n||f(r,e,t)}},getTypedArrayConstructor:function z(e){var t=N(e);if(s(t)){var n=k(t);return n&&u(n,P)?n.TypedArrayConstructor:z(t)}},isView:j,isTypedArray:W,TypedArray:S,TypedArrayPrototype:I}},10377:function(e,t,n){"use strict";var o=n(61770),r=n(90655),a=n(77849),i=n(65167),c=n(82429),l=n(87229),d=n(60495),s=n(39125),u=n(41706),m=n(94868),p=n(87543),h=n(76124),f=n(29209),C=n(56997),b=n(44958),N=n(94600).f,g=n(92723).f,V=n(8093),v=n(74337),_=n(93182),y=n(48797),k=c.PROPER,x=c.CONFIGURABLE,w=y.get,B=y.set,L="ArrayBuffer",S="DataView",I="Wrong index",T=o.ArrayBuffer,M=T,A=M&&M.prototype,E=o.DataView,P=E&&E.prototype,O=Object.prototype,F=o.Array,D=o.RangeError,R=r(V),j=r([].reverse),W=f.pack,z=f.unpack,U=function(e){return[255&e]},H=function(e){return[255&e,e>>8&255]},G=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},K=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},Y=function(e){return W(e,23,4)},q=function(e){return W(e,52,8)},$=function(e,t){g(e.prototype,t,{get:function(){return w(this)[t]}})},X=function(e,t,n,o){var r=h(n),a=w(e);if(r+t>a.byteLength)throw D(I);var i=w(a.buffer).bytes,c=r+a.byteOffset,l=v(i,c,c+t);return o?l:j(l)},Q=function(e,t,n,o,r,a){var i=h(n),c=w(e);if(i+t>c.byteLength)throw D(I);for(var l=w(c.buffer).bytes,d=i+c.byteOffset,s=o(+r),u=0;ute;)(Z=ee[te++])in M||l(M,Z,T[Z]);A.constructor=M}b&&C(P)!==O&&b(P,O);var ne=new E(new M(2)),oe=r(P.setInt8);ne.setInt8(0,2147483648),ne.setInt8(1,2147483649),!ne.getInt8(0)&&ne.getInt8(1)||d(P,{setInt8:function(e,t){oe(this,e,t<<24>>24)},setUint8:function(e,t){oe(this,e,t<<24>>24)}},{unsafe:!0})}else A=(M=function(e){u(this,A);var t=h(e);B(this,{bytes:R(F(t),0),byteLength:t}),a||(this.byteLength=t)}).prototype,P=(E=function(e,t,n){u(this,P),u(e,A);var o=w(e).byteLength,r=m(t);if(r<0||r>o)throw D("Wrong offset");if(r+(n=n===undefined?o-r:p(n))>o)throw D("Wrong length");B(this,{buffer:e,byteLength:n,byteOffset:r}),a||(this.buffer=e,this.byteLength=n,this.byteOffset=r)}).prototype,a&&($(M,"byteLength"),$(E,"buffer"),$(E,"byteLength"),$(E,"byteOffset")),d(P,{getInt8:function(e){return X(this,1,e)[0]<<24>>24},getUint8:function(e){return X(this,1,e)[0]},getInt16:function(e){var t=X(this,2,e,arguments.length>1?arguments[1]:undefined);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=X(this,2,e,arguments.length>1?arguments[1]:undefined);return t[1]<<8|t[0]},getInt32:function(e){return K(X(this,4,e,arguments.length>1?arguments[1]:undefined))},getUint32:function(e){return K(X(this,4,e,arguments.length>1?arguments[1]:undefined))>>>0},getFloat32:function(e){return z(X(this,4,e,arguments.length>1?arguments[1]:undefined),23)},getFloat64:function(e){return z(X(this,8,e,arguments.length>1?arguments[1]:undefined),52)},setInt8:function(e,t){Q(this,1,e,U,t)},setUint8:function(e,t){Q(this,1,e,U,t)},setInt16:function(e,t){Q(this,2,e,H,t,arguments.length>2?arguments[2]:undefined)},setUint16:function(e,t){Q(this,2,e,H,t,arguments.length>2?arguments[2]:undefined)},setInt32:function(e,t){Q(this,4,e,G,t,arguments.length>2?arguments[2]:undefined)},setUint32:function(e,t){Q(this,4,e,G,t,arguments.length>2?arguments[2]:undefined)},setFloat32:function(e,t){Q(this,4,e,Y,t,arguments.length>2?arguments[2]:undefined)},setFloat64:function(e,t){Q(this,8,e,q,t,arguments.length>2?arguments[2]:undefined)}});_(M,L),_(E,S),e.exports={ArrayBuffer:M,DataView:E}},21497:function(e,t,n){"use strict";var o=n(73502),r=n(312),a=n(10950),i=n(33099),c=Math.min;e.exports=[].copyWithin||function(e,t){var n=o(this),l=a(n),d=r(e,l),s=r(t,l),u=arguments.length>2?arguments[2]:undefined,m=c((u===undefined?l:r(u,l))-s,l-d),p=1;for(s0;)s in n?n[d]=n[s]:i(n,d),d+=p,s+=p;return n}},8093:function(e,t,n){"use strict";var o=n(73502),r=n(312),a=n(10950);e.exports=function(e){for(var t=o(this),n=a(t),i=arguments.length,c=r(i>1?arguments[1]:undefined,n),l=i>2?arguments[2]:undefined,d=l===undefined?n:r(l,n);d>c;)t[c++]=e;return t}},29074:function(e,t,n){"use strict";var o=n(36249).forEach,r=n(74640)("forEach");e.exports=r?[].forEach:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}},15993:function(e,t,n){"use strict";var o=n(10950);e.exports=function(e,t){for(var n=0,r=o(t),a=new e(r);r>n;)a[n]=t[n++];return a}},49981:function(e,t,n){"use strict";var o=n(9341),r=n(76348),a=n(73502),i=n(63635),c=n(94535),l=n(49332),d=n(10950),s=n(61154),u=n(93247),m=n(52522),p=Array;e.exports=function(e){var t=a(e),n=l(this),h=arguments.length,f=h>1?arguments[1]:undefined,C=f!==undefined;C&&(f=o(f,h>2?arguments[2]:undefined));var b,N,g,V,v,_,y=m(t),k=0;if(!y||this===p&&c(y))for(b=d(t),N=n?new this(b):p(b);b>k;k++)_=C?f(t[k],k):t[k],s(N,k,_);else for(v=(V=u(t,y)).next,N=n?new this:[];!(g=r(v,V)).done;k++)_=C?i(V,f,[g.value,k],!0):g.value,s(N,k,_);return N.length=k,N}},89344:function(e,t,n){"use strict";var o=n(4254),r=n(312),a=n(10950),i=function(e){return function(t,n,i){var c,l=o(t),d=a(l),s=r(i,d);if(e&&n!=n){for(;d>s;)if((c=l[s++])!=c)return!0}else for(;d>s;s++)if((e||s in l)&&l[s]===n)return e||s||0;return!e&&-1}};e.exports={includes:i(!0),indexOf:i(!1)}},36249:function(e,t,n){"use strict";var o=n(9341),r=n(90655),a=n(83609),i=n(73502),c=n(10950),l=n(64711),d=r([].push),s=function(e){var t=1==e,n=2==e,r=3==e,s=4==e,u=6==e,m=7==e,p=5==e||u;return function(h,f,C,b){for(var N,g,V=i(h),v=a(V),_=o(f,C),y=c(v),k=0,x=b||l,w=t?x(h,y):n||m?x(h,0):undefined;y>k;k++)if((p||k in v)&&(g=_(N=v[k],k,V),e))if(t)w[k]=g;else if(g)switch(e){case 3:return!0;case 5:return N;case 6:return k;case 2:d(w,N)}else switch(e){case 4:return!1;case 7:d(w,N)}return u?-1:r||s?s:w}};e.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterReject:s(7)}},93881:function(e,t,n){"use strict";var o=n(10261),r=n(4254),a=n(94868),i=n(10950),c=n(74640),l=Math.min,d=[].lastIndexOf,s=!!d&&1/[1].lastIndexOf(1,-0)<0,u=c("lastIndexOf"),m=s||!u;e.exports=m?function(e){if(s)return o(d,this,arguments)||0;var t=r(this),n=i(t),c=n-1;for(arguments.length>1&&(c=l(c,a(arguments[1]))),c<0&&(c=n+c);c>=0;c--)if(c in t&&t[c]===e)return c||0;return-1}:d},10112:function(e,t,n){"use strict";var o=n(39125),r=n(43741),a=n(64279),i=r("species");e.exports=function(e){return a>=51||!o((function(){var t=[];return(t.constructor={})[i]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},74640:function(e,t,n){"use strict";var o=n(39125);e.exports=function(e,t){var n=[][e];return!!n&&o((function(){n.call(null,t||function(){return 1},1)}))}},21038:function(e,t,n){"use strict";var o=n(7696),r=n(73502),a=n(83609),i=n(10950),c=TypeError,l=function(e){return function(t,n,l,d){o(n);var s=r(t),u=a(s),m=i(s),p=e?m-1:0,h=e?-1:1;if(l<2)for(;;){if(p in u){d=u[p],p+=h;break}if(p+=h,e?p<0:m<=p)throw c("Reduce of empty array with no initial value")}for(;e?p>=0:m>p;p+=h)p in u&&(d=n(d,u[p],p,s));return d}};e.exports={left:l(!1),right:l(!0)}},74337:function(e,t,n){"use strict";var o=n(312),r=n(10950),a=n(61154),i=Array,c=Math.max;e.exports=function(e,t,n){for(var l=r(e),d=o(t,l),s=o(n===undefined?l:n,l),u=i(c(s-d,0)),m=0;d0;)e[o]=e[--o];o!==a++&&(e[o]=n)}return e},i=function(e,t,n,o){for(var r=t.length,a=n.length,i=0,c=0;i1?arguments[1]:undefined);t=t?t.next:n.first;)for(o(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!N(this,e)}}),a(p,n?{get:function(e){var t=N(this,e);return t&&t.value},set:function(e,t){return b(this,0===e?0:e,t)}}:{add:function(e){return b(this,e=0===e?0:e,e)}}),u&&o(p,"size",{get:function(){return C(this).size}}),s},setStrong:function(e,t,n){var o=t+" Iterator",r=f(t),a=f(o);d(e,t,(function(e,t){h(this,{type:o,target:e,state:r(e),kind:t,last:undefined})}),(function(){for(var e=a(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=undefined,{value:undefined,done:!0})}),n?"entries":"values",!n,!0),s(t)}}},81995:function(e,t,n){"use strict";var o=n(90655),r=n(60495),a=n(49632).getWeakData,i=n(65522),c=n(5484),l=n(41706),d=n(47916),s=n(36249),u=n(77807),m=n(48797),p=m.set,h=m.getterFor,f=s.find,C=s.findIndex,b=o([].splice),N=0,g=function(e){return e.frozen||(e.frozen=new V)},V=function(){this.entries=[]},v=function(e,t){return f(e.entries,(function(e){return e[0]===t}))};V.prototype={get:function(e){var t=v(this,e);if(t)return t[1]},has:function(e){return!!v(this,e)},set:function(e,t){var n=v(this,e);n?n[1]=t:this.entries.push([e,t])},"delete":function(e){var t=C(this.entries,(function(t){return t[0]===e}));return~t&&b(this.entries,t,1),!!~t}},e.exports={getConstructor:function(e,t,n,o){var s=e((function(e,r){l(e,m),p(e,{type:t,id:N++,frozen:undefined}),r!=undefined&&d(r,e[o],{that:e,AS_ENTRIES:n})})),m=s.prototype,f=h(t),C=function(e,t,n){var o=f(e),r=a(i(t),!0);return!0===r?g(o).set(t,n):r[o.id]=n,e};return r(m,{"delete":function(e){var t=f(this);if(!c(e))return!1;var n=a(e);return!0===n?g(t)["delete"](e):n&&u(n,t.id)&&delete n[t.id]},has:function(e){var t=f(this);if(!c(e))return!1;var n=a(e);return!0===n?g(t).has(e):n&&u(n,t.id)}}),r(m,n?{get:function(e){var t=f(this);if(c(e)){var n=a(e);return!0===n?g(t).get(e):n?n[t.id]:undefined}},set:function(e,t){return C(this,e,t)}}:{add:function(e){return C(this,e,!0)}}),s}}},18291:function(e,t,n){"use strict";var o=n(59450),r=n(61770),a=n(90655),i=n(16851),c=n(73e3),l=n(49632),d=n(47916),s=n(41706),u=n(45744),m=n(5484),p=n(39125),h=n(98994),f=n(93182),C=n(75121);e.exports=function(e,t,n){var b=-1!==e.indexOf("Map"),N=-1!==e.indexOf("Weak"),g=b?"set":"add",V=r[e],v=V&&V.prototype,_=V,y={},k=function(e){var t=a(v[e]);c(v,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(N&&!m(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return N&&!m(e)?undefined:t(this,0===e?0:e)}:"has"==e?function(e){return!(N&&!m(e))&&t(this,0===e?0:e)}:function(e,n){return t(this,0===e?0:e,n),this})};if(i(e,!u(V)||!(N||v.forEach&&!p((function(){(new V).entries().next()})))))_=n.getConstructor(t,e,b,g),l.enable();else if(i(e,!0)){var x=new _,w=x[g](N?{}:-0,1)!=x,B=p((function(){x.has(1)})),L=h((function(e){new V(e)})),S=!N&&p((function(){for(var e=new V,t=5;t--;)e[g](t,t);return!e.has(-0)}));L||((_=t((function(e,t){s(e,v);var n=C(new V,e,_);return t!=undefined&&d(t,n[g],{that:n,AS_ENTRIES:b}),n}))).prototype=v,v.constructor=_),(B||S)&&(k("delete"),k("has"),b&&k("get")),(S||w)&&k(g),N&&v.clear&&delete v.clear}return y[e]=_,o({global:!0,constructor:!0,forced:_!=V},y),f(_,e),N||n.setStrong(_,e,b),_}},35155:function(e,t,n){"use strict";var o=n(77807),r=n(75379),a=n(12488),i=n(92723);e.exports=function(e,t,n){for(var c=r(t),l=i.f,d=a.f,s=0;s"+l+""}},92413:function(e,t,n){"use strict";var o=n(80936).IteratorPrototype,r=n(48525),a=n(20471),i=n(93182),c=n(53481),l=function(){return this};e.exports=function(e,t,n,d){var s=t+" Iterator";return e.prototype=r(o,{next:a(+!d,n)}),i(e,s,!1,!0),c[s]=l,e}},87229:function(e,t,n){"use strict";var o=n(77849),r=n(92723),a=n(20471);e.exports=o?function(e,t,n){return r.f(e,t,a(1,n))}:function(e,t,n){return e[t]=n,e}},20471:function(e){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},61154:function(e,t,n){"use strict";var o=n(23986),r=n(92723),a=n(20471);e.exports=function(e,t,n){var i=o(t);i in e?r.f(e,i,a(0,n)):e[i]=n}},36849:function(e,t,n){"use strict";var o=n(90655),r=n(39125),a=n(79408).start,i=RangeError,c=Math.abs,l=Date.prototype,d=l.toISOString,s=o(l.getTime),u=o(l.getUTCDate),m=o(l.getUTCFullYear),p=o(l.getUTCHours),h=o(l.getUTCMilliseconds),f=o(l.getUTCMinutes),C=o(l.getUTCMonth),b=o(l.getUTCSeconds);e.exports=r((function(){return"0385-07-25T07:06:39.999Z"!=d.call(new Date(-50000000000001))}))||!r((function(){d.call(new Date(NaN))}))?function(){if(!isFinite(s(this)))throw i("Invalid time value");var e=this,t=m(e),n=h(e),o=t<0?"-":t>9999?"+":"";return o+a(c(t),o?6:4,0)+"-"+a(C(e)+1,2,0)+"-"+a(u(e),2,0)+"T"+a(p(e),2,0)+":"+a(f(e),2,0)+":"+a(b(e),2,0)+"."+a(n,3,0)+"Z"}:d},81990:function(e,t,n){"use strict";var o=n(65522),r=n(2118),a=TypeError;e.exports=function(e){if(o(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw a("Incorrect hint");return r(this,e)}},66384:function(e,t,n){"use strict";var o=n(28859),r=n(92723);e.exports=function(e,t,n){return n.get&&o(n.get,t,{getter:!0}),n.set&&o(n.set,t,{setter:!0}),r.f(e,t,n)}},73e3:function(e,t,n){"use strict";var o=n(45744),r=n(92723),a=n(28859),i=n(58962);e.exports=function(e,t,n,c){c||(c={});var l=c.enumerable,d=c.name!==undefined?c.name:t;return o(n)&&a(n,d,c),c.global?l?e[t]=n:i(t,n):(c.unsafe?e[t]&&(l=!0):delete e[t],l?e[t]=n:r.f(e,t,{value:n,enumerable:!1,configurable:!c.nonConfigurable,writable:!c.nonWritable})),e}},60495:function(e,t,n){"use strict";var o=n(73e3);e.exports=function(e,t,n){for(var r in t)o(e,r,t[r],n);return e}},58962:function(e,t,n){"use strict";var o=n(61770),r=Object.defineProperty;e.exports=function(e,t){try{r(o,e,{value:t,configurable:!0,writable:!0})}catch(n){o[e]=t}return t}},11335:function(e,t,n){"use strict";var o=n(59450),r=n(76348),a=n(37249),i=n(82429),c=n(45744),l=n(92413),d=n(56997),s=n(44958),u=n(93182),m=n(87229),p=n(73e3),h=n(43741),f=n(53481),C=n(80936),b=i.PROPER,N=i.CONFIGURABLE,g=C.IteratorPrototype,V=C.BUGGY_SAFARI_ITERATORS,v=h("iterator"),_="keys",y="values",k="entries",x=function(){return this};e.exports=function(e,t,n,i,h,C,w){l(n,t,i);var B,L,S,I=function(e){if(e===h&&P)return P;if(!V&&e in A)return A[e];switch(e){case _:case y:case k:return function(){return new n(this,e)}}return function(){return new n(this)}},T=t+" Iterator",M=!1,A=e.prototype,E=A[v]||A["@@iterator"]||h&&A[h],P=!V&&E||I(h),O="Array"==t&&A.entries||E;if(O&&(B=d(O.call(new e)))!==Object.prototype&&B.next&&(a||d(B)===g||(s?s(B,g):c(B[v])||p(B,v,x)),u(B,T,!0,!0),a&&(f[T]=x)),b&&h==y&&E&&E.name!==y&&(!a&&N?m(A,"name",y):(M=!0,P=function(){return r(E,this)})),h)if(L={values:I(y),keys:C?P:I(_),entries:I(k)},w)for(S in L)(V||M||!(S in A))&&p(A,S,L[S]);else o({target:t,proto:!0,forced:V||M},L);return a&&!w||A[v]===P||p(A,v,P,{name:h}),f[t]=P,L}},89604:function(e,t,n){"use strict";var o=n(62660),r=n(77807),a=n(68438),i=n(92723).f;e.exports=function(e){var t=o.Symbol||(o.Symbol={});r(t,e)||i(t,e,{value:a.f(e)})}},33099:function(e,t,n){"use strict";var o=n(56279),r=TypeError;e.exports=function(e,t){if(!delete e[t])throw r("Cannot delete property "+o(t)+" of "+o(e))}},77849:function(e,t,n){"use strict";var o=n(39125);e.exports=!o((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},50842:function(e,t,n){"use strict";var o=n(61770),r=n(5484),a=o.document,i=r(a)&&r(a.createElement);e.exports=function(e){return i?a.createElement(e):{}}},97989:function(e){"use strict";var t=TypeError;e.exports=function(e){if(e>9007199254740991)throw t("Maximum allowed index exceeded");return e}},13811:function(e,t,n){"use strict";var o=n(42630).match(/firefox\/(\d+)/i);e.exports=!!o&&+o[1]},15904:function(e){"use strict";e.exports="object"==typeof window&&"object"!=typeof Deno},86936:function(e,t,n){"use strict";var o=n(42630);e.exports=/MSIE|Trident/.test(o)},48715:function(e,t,n){"use strict";var o=n(42630),r=n(61770);e.exports=/ipad|iphone|ipod/i.test(o)&&r.Pebble!==undefined},25515:function(e,t,n){"use strict";var o=n(42630);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(o)},67745:function(e,t,n){"use strict";var o=n(61496),r=n(61770);e.exports="process"==o(r.process)},35016:function(e,t,n){"use strict";var o=n(42630);e.exports=/web0s(?!.*chrome)/i.test(o)},42630:function(e,t,n){"use strict";var o=n(54965);e.exports=o("navigator","userAgent")||""},64279:function(e,t,n){"use strict";var o,r,a=n(61770),i=n(42630),c=a.process,l=a.Deno,d=c&&c.versions||l&&l.version,s=d&&d.v8;s&&(r=(o=s.split("."))[0]>0&&o[0]<4?1:+(o[0]+o[1])),!r&&i&&(!(o=i.match(/Edge\/(\d+)/))||o[1]>=74)&&(o=i.match(/Chrome\/(\d+)/))&&(r=+o[1]),e.exports=r},86778:function(e,t,n){"use strict";var o=n(42630).match(/AppleWebKit\/(\d+)\./);e.exports=!!o&&+o[1]},59096:function(e){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},59450:function(e,t,n){"use strict";var o=n(61770),r=n(12488).f,a=n(87229),i=n(73e3),c=n(58962),l=n(35155),d=n(16851);e.exports=function(e,t){var n,s,u,m,p,h=e.target,f=e.global,C=e.stat;if(n=f?o:C?o[h]||c(h,{}):(o[h]||{}).prototype)for(s in t){if(m=t[s],u=e.dontCallGetSet?(p=r(n,s))&&p.value:n[s],!d(f?s:h+(C?".":"#")+s,e.forced)&&u!==undefined){if(typeof m==typeof u)continue;l(m,u)}(e.sham||u&&u.sham)&&a(m,"sham",!0),i(n,s,m,e)}}},39125:function(e){"use strict";e.exports=function(e){try{return!!e()}catch(t){return!0}}},6531:function(e,t,n){"use strict";n(50044);var o=n(90655),r=n(73e3),a=n(50174),i=n(39125),c=n(43741),l=n(87229),d=c("species"),s=RegExp.prototype;e.exports=function(e,t,n,u){var m=c(e),p=!i((function(){var t={};return t[m]=function(){return 7},7!=""[e](t)})),h=p&&!i((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[d]=function(){return n},n.flags="",n[m]=/./[m]),n.exec=function(){return t=!0,null},n[m](""),!t}));if(!p||!h||n){var f=o(/./[m]),C=t(m,""[e],(function(e,t,n,r,i){var c=o(e),l=t.exec;return l===a||l===s.exec?p&&!i?{done:!0,value:f(t,n,r)}:{done:!0,value:c(n,t,r)}:{done:!1}}));r(String.prototype,e,C[0]),r(s,m,C[1])}u&&l(s[m],"sham",!0)}},23507:function(e,t,n){"use strict";var o=n(98037),r=n(10950),a=n(97989),i=n(9341);e.exports=function c(e,t,n,l,d,s,u,m){for(var p,h=d,f=0,C=!!u&&i(u,m);f0&&o(p)?h=c(e,t,p,r(p),h,s-1)-1:(a(h+1),e[h]=p),h++),f++;return h}},57724:function(e,t,n){"use strict";var o=n(39125);e.exports=!o((function(){return Object.isExtensible(Object.preventExtensions({}))}))},10261:function(e,t,n){"use strict";var o=n(14687),r=Function.prototype,a=r.apply,i=r.call;e.exports="object"==typeof Reflect&&Reflect.apply||(o?i.bind(a):function(){return i.apply(a,arguments)})},9341:function(e,t,n){"use strict";var o=n(90655),r=n(7696),a=n(14687),i=o(o.bind);e.exports=function(e,t){return r(e),t===undefined?e:a?i(e,t):function(){return e.apply(t,arguments)}}},14687:function(e,t,n){"use strict";var o=n(39125);e.exports=!o((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},38349:function(e,t,n){"use strict";var o=n(90655),r=n(7696),a=n(5484),i=n(77807),c=n(53898),l=n(14687),d=Function,s=o([].concat),u=o([].join),m={},p=function(e,t,n){if(!i(m,t)){for(var o=[],r=0;r]*>)/g,s=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,t,n,o,u,m){var p=n+e.length,h=o.length,f=s;return u!==undefined&&(u=r(u),f=d),c(m,f,(function(r,c){var d;switch(i(c,0)){case"$":return"$";case"&":return e;case"`":return l(t,0,n);case"'":return l(t,p);case"<":d=u[l(c,1,-1)];break;default:var s=+c;if(0===s)return r;if(s>h){var m=a(s/10);return 0===m?r:m<=h?o[m-1]===undefined?i(c,1):o[m-1]+i(c,1):r}d=o[s-1]}return d===undefined?"":d}))}},61770:function(e,t,n){"use strict";var o=function(e){return e&&e.Math==Math&&e};e.exports=o("object"==typeof globalThis&&globalThis)||o("object"==typeof window&&window)||o("object"==typeof self&&self)||o("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},77807:function(e,t,n){"use strict";var o=n(90655),r=n(73502),a=o({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return a(r(e),t)}},31645:function(e){"use strict";e.exports={}},66791:function(e,t,n){"use strict";var o=n(61770);e.exports=function(e,t){var n=o.console;n&&n.error&&(1==arguments.length?n.error(e):n.error(e,t))}},29093:function(e,t,n){"use strict";var o=n(54965);e.exports=o("document","documentElement")},17041:function(e,t,n){"use strict";var o=n(77849),r=n(39125),a=n(50842);e.exports=!o&&!r((function(){return 7!=Object.defineProperty(a("div"),"a",{get:function(){return 7}}).a}))},29209:function(e){"use strict";var t=Array,n=Math.abs,o=Math.pow,r=Math.floor,a=Math.log,i=Math.LN2;e.exports={pack:function(e,c,l){var d,s,u,m=t(l),p=8*l-c-1,h=(1<>1,C=23===c?o(2,-24)-o(2,-77):0,b=e<0||0===e&&1/e<0?1:0,N=0;for((e=n(e))!=e||e===Infinity?(s=e!=e?1:0,d=h):(d=r(a(e)/i),e*(u=o(2,-d))<1&&(d--,u*=2),(e+=d+f>=1?C/u:C*o(2,1-f))*u>=2&&(d++,u/=2),d+f>=h?(s=0,d=h):d+f>=1?(s=(e*u-1)*o(2,c),d+=f):(s=e*o(2,f-1)*o(2,c),d=0));c>=8;)m[N++]=255&s,s/=256,c-=8;for(d=d<0;)m[N++]=255&d,d/=256,p-=8;return m[--N]|=128*b,m},unpack:function(e,t){var n,r=e.length,a=8*r-t-1,i=(1<>1,l=a-7,d=r-1,s=e[d--],u=127&s;for(s>>=7;l>0;)u=256*u+e[d--],l-=8;for(n=u&(1<<-l)-1,u>>=-l,l+=t;l>0;)n=256*n+e[d--],l-=8;if(0===u)u=1-c;else{if(u===i)return n?NaN:s?-Infinity:Infinity;n+=o(2,t),u-=c}return(s?-1:1)*n*o(2,u-t)}}},83609:function(e,t,n){"use strict";var o=n(90655),r=n(39125),a=n(61496),i=Object,c=o("".split);e.exports=r((function(){return!i("z").propertyIsEnumerable(0)}))?function(e){return"String"==a(e)?c(e,""):i(e)}:i},75121:function(e,t,n){"use strict";var o=n(45744),r=n(5484),a=n(44958);e.exports=function(e,t,n){var i,c;return a&&o(i=t.constructor)&&i!==n&&r(c=i.prototype)&&c!==n.prototype&&a(e,c),e}},44790:function(e,t,n){"use strict";var o=n(90655),r=n(45744),a=n(42878),i=o(Function.toString);r(a.inspectSource)||(a.inspectSource=function(e){return i(e)}),e.exports=a.inspectSource},49632:function(e,t,n){"use strict";var o=n(59450),r=n(90655),a=n(31645),i=n(5484),c=n(77807),l=n(92723).f,d=n(94600),s=n(25586),u=n(65067),m=n(8220),p=n(57724),h=!1,f=m("meta"),C=0,b=function(e){l(e,f,{value:{objectID:"O"+C++,weakData:{}}})},N=e.exports={enable:function(){N.enable=function(){},h=!0;var e=d.f,t=r([].splice),n={};n[f]=1,e(n).length&&(d.f=function(n){for(var o=e(n),r=0,a=o.length;rN;N++)if((V=S(e[N]))&&d(f,V))return V;return new h(!1)}C=s(e,b)}for(v=C.next;!(_=r(v,C)).done;){try{V=S(_.value)}catch(I){m(C,"throw",I)}if("object"==typeof V&&V&&d(f,V))return V}return new h(!1)}},80261:function(e,t,n){"use strict";var o=n(76348),r=n(65522),a=n(36750);e.exports=function(e,t,n){var i,c;r(e);try{if(!(i=a(e,"return"))){if("throw"===t)throw n;return n}i=o(i,e)}catch(l){c=!0,i=l}if("throw"===t)throw n;if(c)throw i;return r(i),n}},80936:function(e,t,n){"use strict";var o,r,a,i=n(39125),c=n(45744),l=n(48525),d=n(56997),s=n(73e3),u=n(43741),m=n(37249),p=u("iterator"),h=!1;[].keys&&("next"in(a=[].keys())?(r=d(d(a)))!==Object.prototype&&(o=r):h=!0),o==undefined||i((function(){var e={};return o[p].call(e)!==e}))?o={}:m&&(o=l(o)),c(o[p])||s(o,p,(function(){return this})),e.exports={IteratorPrototype:o,BUGGY_SAFARI_ITERATORS:h}},53481:function(e){"use strict";e.exports={}},10950:function(e,t,n){"use strict";var o=n(87543);e.exports=function(e){return o(e.length)}},28859:function(e,t,n){"use strict";var o=n(39125),r=n(45744),a=n(77807),i=n(77849),c=n(82429).CONFIGURABLE,l=n(44790),d=n(48797),s=d.enforce,u=d.get,m=Object.defineProperty,p=i&&!o((function(){return 8!==m((function(){}),"length",{value:8}).length})),h=String(String).split("String"),f=e.exports=function(e,t,n){"Symbol("===String(t).slice(0,7)&&(t="["+String(t).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!a(e,"name")||c&&e.name!==t)&&m(e,"name",{value:t,configurable:!0}),p&&n&&a(n,"arity")&&e.length!==n.arity&&m(e,"length",{value:n.arity});try{n&&a(n,"constructor")&&n.constructor?i&&m(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=undefined)}catch(r){}var o=s(e);return a(o,"source")||(o.source=h.join("string"==typeof t?t:"")),e};Function.prototype.toString=f((function(){return r(this)&&u(this).source||l(this)}),"toString")},73346:function(e){"use strict";var t=Math.expm1,n=Math.exp;e.exports=!t||t(10)>22025.465794806718||t(10)<22025.465794806718||-2e-17!=t(-2e-17)?function(e){var t=+e;return 0==t?t:t>-1e-6&&t<1e-6?t+t*t/2:n(t)-1}:t},92647:function(e,t,n){"use strict";var o=n(61303),r=Math.abs,a=Math.pow,i=a(2,-52),c=a(2,-23),l=a(2,127)*(2-c),d=a(2,-126);e.exports=Math.fround||function(e){var t,n,a=+e,s=r(a),u=o(a);return sl||n!=n?u*Infinity:u*n}},12153:function(e){"use strict";var t=Math.log,n=Math.LOG10E;e.exports=Math.log10||function(e){return t(e)*n}},28010:function(e){"use strict";var t=Math.log;e.exports=Math.log1p||function(e){var n=+e;return n>-1e-8&&n<1e-8?n-n*n/2:t(1+n)}},61303:function(e){"use strict";e.exports=Math.sign||function(e){var t=+e;return 0==t||t!=t?t:t<0?-1:1}},9275:function(e){"use strict";var t=Math.ceil,n=Math.floor;e.exports=Math.trunc||function(e){var o=+e;return(o>0?n:t)(o)}},34063:function(e,t,n){"use strict";var o,r,a,i,c,l,d,s,u=n(61770),m=n(9341),p=n(12488).f,h=n(61777).set,f=n(25515),C=n(48715),b=n(35016),N=n(67745),g=u.MutationObserver||u.WebKitMutationObserver,V=u.document,v=u.process,_=u.Promise,y=p(u,"queueMicrotask"),k=y&&y.value;k||(o=function(){var e,t;for(N&&(e=v.domain)&&e.exit();r;){t=r.fn,r=r.next;try{t()}catch(n){throw r?i():a=undefined,n}}a=undefined,e&&e.enter()},f||N||b||!g||!V?!C&&_&&_.resolve?((d=_.resolve(undefined)).constructor=_,s=m(d.then,d),i=function(){s(o)}):N?i=function(){v.nextTick(o)}:(h=m(h,u),i=function(){h(o)}):(c=!0,l=V.createTextNode(""),new g(o).observe(l,{characterData:!0}),i=function(){l.data=c=!c})),e.exports=k||function(e){var t={fn:e,next:undefined};a&&(a.next=t),r||(r=t,i()),a=t}},58822:function(e,t,n){"use strict";var o=n(67581);e.exports=o&&!!Symbol["for"]&&!!Symbol.keyFor},67581:function(e,t,n){"use strict";var o=n(64279),r=n(39125);e.exports=!!Object.getOwnPropertySymbols&&!r((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&o&&o<41}))},37494:function(e,t,n){"use strict";var o=n(61770),r=n(45744),a=n(44790),i=o.WeakMap;e.exports=r(i)&&/native code/.test(a(i))},16002:function(e,t,n){"use strict";var o=n(7696),r=function(e){var t,n;this.promise=new e((function(e,o){if(t!==undefined||n!==undefined)throw TypeError("Bad Promise constructor");t=e,n=o})),this.resolve=o(t),this.reject=o(n)};e.exports.f=function(e){return new r(e)}},96794:function(e,t,n){"use strict";var o=n(71857),r=TypeError;e.exports=function(e){if(o(e))throw r("The method doesn't accept regular expressions");return e}},46329:function(e,t,n){"use strict";var o=n(61770).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&o(e)}},90119:function(e,t,n){"use strict";var o=n(61770),r=n(39125),a=n(90655),i=n(95372),c=n(56404).trim,l=n(93966),d=a("".charAt),s=o.parseFloat,u=o.Symbol,m=u&&u.iterator,p=1/s(l+"-0")!=-Infinity||m&&!r((function(){s(Object(m))}));e.exports=p?function(e){var t=c(i(e)),n=s(t);return 0===n&&"-"==d(t,0)?-0:n}:s},80280:function(e,t,n){"use strict";var o=n(61770),r=n(39125),a=n(90655),i=n(95372),c=n(56404).trim,l=n(93966),d=o.parseInt,s=o.Symbol,u=s&&s.iterator,m=/^[+-]?0x/i,p=a(m.exec),h=8!==d(l+"08")||22!==d(l+"0x16")||u&&!r((function(){d(Object(u))}));e.exports=h?function(e,t){var n=c(i(e));return d(n,t>>>0||(p(m,n)?16:10))}:d},35350:function(e,t,n){"use strict";var o=n(77849),r=n(90655),a=n(76348),i=n(39125),c=n(21417),l=n(41543),d=n(89328),s=n(73502),u=n(83609),m=Object.assign,p=Object.defineProperty,h=r([].concat);e.exports=!m||i((function(){if(o&&1!==m({b:1},m(p({},"a",{enumerable:!0,get:function(){p(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach((function(e){t[e]=e})),7!=m({},e)[n]||c(m({},t)).join("")!=r}))?function(e,t){for(var n=s(e),r=arguments.length,i=1,m=l.f,p=d.f;r>i;)for(var f,C=u(arguments[i++]),b=m?h(c(C),m(C)):c(C),N=b.length,g=0;N>g;)f=b[g++],o&&!a(p,C,f)||(n[f]=C[f]);return n}:m},48525:function(e,t,n){"use strict";var o,r=n(65522),a=n(86328),i=n(59096),c=n(31645),l=n(29093),d=n(50842),s=n(95541),u=s("IE_PROTO"),m=function(){},p=function(e){return"