From eade7ffc266965aacdfdd3cb165b2391b732232a Mon Sep 17 00:00:00 2001 From: Heroman Date: Fri, 14 Jul 2023 17:38:02 +1000 Subject: [PATCH 01/22] Adds altevian NPCs for event use --- .../objects/items/weapons/storage/boxes_vr.dm | 11 +- code/modules/mob/dead/corpse.dm | 77 +++++++++- code/modules/mob/dead/corpse_vr.dm | 16 +++ .../subtypes/humanoid/mercs/mercs_altevian.dm | 131 ++++++++++++++++++ icons/mob/altevian_mercs_vr.dmi | Bin 0 -> 3564 bytes vorestation.dme | 1 + 6 files changed, 231 insertions(+), 5 deletions(-) create mode 100644 code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs_altevian.dm create mode 100644 icons/mob/altevian_mercs_vr.dmi 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/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/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/icons/mob/altevian_mercs_vr.dmi b/icons/mob/altevian_mercs_vr.dmi new file mode 100644 index 0000000000000000000000000000000000000000..aea4bcb8e918f009816454aecbd20b5413ed1a32 GIT binary patch literal 3564 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 Z@S%vUyumOP{G&i1`%^A9uaT(a{{foQK!N}O literal 0 HcmV?d00001 diff --git a/vorestation.dme b/vorestation.dme index b3db27704f..207424cf1f 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -3142,6 +3142,7 @@ #include "code\modules\mob\living\simple_mob\subtypes\humanoid\pirates.dm" #include "code\modules\mob\living\simple_mob\subtypes\humanoid\russian.dm" #include "code\modules\mob\living\simple_mob\subtypes\humanoid\mercs\mercs.dm" +#include "code\modules\mob\living\simple_mob\subtypes\humanoid\mercs\mercs_altevian.dm" #include "code\modules\mob\living\simple_mob\subtypes\humanoid\mercs\mercs_vr.dm" #include "code\modules\mob\living\simple_mob\subtypes\illusion\illusion.dm" #include "code\modules\mob\living\simple_mob\subtypes\mechanical\corrupt_maint_drone_vr.dm" From 1e15548eb4b98f98e31171b4c7e3ba17a8a9a895 Mon Sep 17 00:00:00 2001 From: Heroman Date: Fri, 14 Jul 2023 22:55:24 +1000 Subject: [PATCH 02/22] Adds Custom Subtle verb --- code/_helpers/game.dm | 29 ++++++- code/modules/mob/say_vr.dm | 144 +++++++++++++++++++++++++++++++--- code/modules/tables/tables.dm | 19 +++++ 3 files changed, 182 insertions(+), 10 deletions(-) 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/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index 6396c6e9e2..a12106922c 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,18 @@ var/muzzled = is_muzzled() if(m_type == 2 && muzzled) return + var/subtle_mode + if(mode_selection) + 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) + return + else + subtle_mode = "Adjacent Turfs (Default)" + + if(subtle_mode == "Current Belly (Prey)" && !isbelly(src.loc)) + return + var/input if(!message) input = sanitize_or_reflect(tgui_input_text(src,"Choose an emote to display."), src) @@ -49,6 +81,8 @@ if(input) log_subtle(message,src) message = "[src] [input]" + if(!(subtle_mode == "Adjacent Turfs (Default)")) + message = "(T) " + message else return @@ -56,9 +90,101 @@ 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),1,2) + vis_mobs = vis["mobs"] + vis_objs = vis["objs"] + var/list/tablelist = 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() + for(var/obj/structure/table/T in tablelist) + for(var/mob/M in vis_mobs) + var/turf/tableturf = get_turf(T) + if(!(tableturf.AdjacentQuick(get_turf(M)))) + vis_mobs -= M + for(var/obj/structure/table/T in tablelist) + for(var/obj/O in vis_objs) + var/turf/tableturf = get_turf(T) + if(!(tableturf.AdjacentQuick(get_turf(O)))) + vis_objs -= O + 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) + vis_mobs = list(target, src) for(var/mob/M as anything in vis_mobs) if(isnewplayer(M)) @@ -76,9 +202,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..fe5cdc64f7 100644 --- a/code/modules/tables/tables.dm +++ b/code/modules/tables/tables.dm @@ -417,6 +417,25 @@ 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(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 From cfd06adbf43a812c973bbd824ce0c179189607c6 Mon Sep 17 00:00:00 2001 From: Heroman Date: Fri, 14 Jul 2023 23:02:12 +1000 Subject: [PATCH 03/22] Calms linter down --- code/modules/tables/tables.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/tables/tables.dm b/code/modules/tables/tables.dm index fe5cdc64f7..2dfdedc537 100644 --- a/code/modules/tables/tables.dm +++ b/code/modules/tables/tables.dm @@ -428,7 +428,7 @@ var/list/table_icon_cache = list() 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) + var/obj/structure/table/nextT = locate(/obj/structure/table) in T 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)) From 97e11a779b0e204169951cb856598c79e4bbbe7b Mon Sep 17 00:00:00 2001 From: Heroman Date: Sat, 15 Jul 2023 06:51:18 +1000 Subject: [PATCH 04/22] Post-testing fixes and adjustments --- code/modules/mob/say_vr.dm | 25 ++++++++++++++----------- code/modules/tables/tables.dm | 2 ++ 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index a12106922c..d334660e9b 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -69,9 +69,6 @@ else subtle_mode = "Adjacent Turfs (Default)" - if(subtle_mode == "Current Belly (Prey)" && !isbelly(src.loc)) - return - var/input if(!message) input = sanitize_or_reflect(tgui_input_text(src,"Choose an emote to display."), src) @@ -104,23 +101,29 @@ vis_mobs = vis["mobs"] vis_objs = vis["objs"] if("My Table") - vis = get_mobs_and_objs_in_view_fast(get_turf(src),1,2) + 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/turf/tableturf = get_turf(T) - if(!(tableturf.AdjacentQuick(get_turf(M)))) - vis_mobs -= M - for(var/obj/structure/table/T in tablelist) + var/dist = get_dist(T, M) + if(dist >= 0 && dist <= 1) + newmoblist |= M for(var/obj/O in vis_objs) - var/turf/tableturf = get_turf(T) - if(!(tableturf.AdjacentQuick(get_turf(O)))) - vis_objs -= O + 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)) diff --git a/code/modules/tables/tables.dm b/code/modules/tables/tables.dm index 2dfdedc537..3e682a518d 100644 --- a/code/modules/tables/tables.dm +++ b/code/modules/tables/tables.dm @@ -429,6 +429,8 @@ var/list/table_icon_cache = list() 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)) From dda97edc82aa8ca82c7de4fb6b50c55c27f57de5 Mon Sep 17 00:00:00 2001 From: Heroman Date: Sat, 15 Jul 2023 08:16:27 +1000 Subject: [PATCH 05/22] Adds some extra message-preserving measures --- code/modules/mob/say_vr.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index d334660e9b..bb1d453a8d 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -65,6 +65,8 @@ 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)" @@ -187,6 +189,9 @@ 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) From b96ceb26eadff3dd6637910643ade9e5b81cf4bb Mon Sep 17 00:00:00 2001 From: Heroman Date: Sat, 15 Jul 2023 15:44:59 +1000 Subject: [PATCH 06/22] Fixes multi-taur saddlebags getting cut off --- code/modules/mob/living/carbon/human/update_icons.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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) From 29b9c530289347a0cc4d0dd26fcf773f61488ce0 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Sat, 15 Jul 2023 15:46:47 -0400 Subject: [PATCH 07/22] Adjust bow! Now if someone picks up dessa's bow it will use the normal sprite instead of dessa's special sprite --- code/modules/vore/fluffstuff/custom_clothes_vr.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index 44bcb9dbf3..d3ae3833a8 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!" From 6496d393a1d3c89c38f976b43002d66e1f266bd0 Mon Sep 17 00:00:00 2001 From: Heroman Date: Sun, 16 Jul 2023 10:10:25 +1000 Subject: [PATCH 08/22] Adds generic 'spacefish migration' event, replaces active fish events with it --- code/modules/events/spacefish_migration.dm | 117 ++++++++++++++++++ maps/groundbase/groundbase_events.dm | 28 +++-- .../stellar_delight/stellar_delight_events.dm | 29 +++-- maps/tether/tether_events.dm | 29 +++-- vorestation.dme | 1 + 5 files changed, 165 insertions(+), 39 deletions(-) create mode 100644 code/modules/events/spacefish_migration.dm 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/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/vorestation.dme b/vorestation.dme index 207424cf1f..23a4103c92 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2280,6 +2280,7 @@ #include "code\modules\events\shipping_error.dm" #include "code\modules\events\solar_storm.dm" #include "code\modules\events\space_ninja.dm" +#include "code\modules\events\spacefish_migration.dm" #include "code\modules\events\spacevine.dm" #include "code\modules\events\spider_infestation.dm" #include "code\modules\events\spontaneous_appendicitis.dm" From 2a11c24bf74be5cd2d6ced4f94bd159610c14093 Mon Sep 17 00:00:00 2001 From: Heroman Date: Mon, 17 Jul 2023 07:17:12 +1000 Subject: [PATCH 09/22] Weekly Map Swap --- vorestation.dme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vorestation.dme b/vorestation.dme index 23a4103c92..924e859a7a 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4229,13 +4229,13 @@ #include "maps\expedition_vr\beach\submaps\mountains.dm" #include "maps\expedition_vr\beach\submaps\mountains_areas.dm" #include "maps\gateway_archive_vr\blackmarketpackers.dm" +#include "maps\groundbase\groundbase.dm" #include "maps\southern_cross\items\clothing\sc_accessory.dm" #include "maps\southern_cross\items\clothing\sc_suit.dm" #include "maps\southern_cross\items\clothing\sc_under.dm" #include "maps\southern_cross\loadout\loadout_suit.dm" #include "maps\southern_cross\loadout\loadout_uniform.dm" #include "maps\southern_cross\loadout\loadout_vr.dm" -#include "maps\stellar_delight\stellar_delight.dm" #include "maps\submaps\_helpers.dm" #include "maps\submaps\_readme.dm" #include "maps\submaps\engine_submaps\engine.dm" From 7acf87e0d1074e617562a506f35bfdd84812b2c7 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Sun, 16 Jul 2023 17:43:55 -0400 Subject: [PATCH 10/22] Autowhisper --- code/modules/emotes/emote_mob.dm | 3 ++ code/modules/mob/autowhisper.dm | 42 ++++++++++++++++++++ code/modules/mob/living/living_defines_vr.dm | 3 +- code/modules/mob/living/say.dm | 2 + code/modules/mob/say.dm | 2 + code/modules/mob/say_vr.dm | 5 ++- vorestation.dme | 1 + 7 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 code/modules/mob/autowhisper.dm 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/mob/autowhisper.dm b/code/modules/mob/autowhisper.dm new file mode 100644 index 0000000000..9a91e97a6d --- /dev/null +++ b/code/modules/mob/autowhisper.dm @@ -0,0 +1,42 @@ +/mob/living/verb/toggle_autowhisper() + set name = "Toggle Autowhisper" + set desc = "Toggle whether you will automatically whisper/subtle" + set category = "IC" + + autowhisper = !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 = "Set Autosubtle 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/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/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 bb1d453a8d..284a584b2a 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -61,7 +61,10 @@ if(m_type == 2 && muzzled) return var/subtle_mode - if(mode_selection) + if(autowhisper && autowhisper_mode) + 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) diff --git a/vorestation.dme b/vorestation.dme index 23a4103c92..f8a24695b0 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2716,6 +2716,7 @@ #include "code\modules\mining\ore_redemption_machine\mine_point_items.dm" #include "code\modules\mining\ore_redemption_machine\survey_vendor.dm" #include "code\modules\mob\animations.dm" +#include "code\modules\mob\autowhisper.dm" #include "code\modules\mob\death.dm" #include "code\modules\mob\emote.dm" #include "code\modules\mob\gender.dm" From e208b555f096966c3f3d6b6eb861c880eede10a3 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Mon, 17 Jul 2023 00:26:27 -0400 Subject: [PATCH 11/22] Finish --- code/_onclick/hud/human.dm | 14 ++++++++++++++ code/_onclick/hud/robot.dm | 17 ++++++++++++++++- code/_onclick/hud/screen_objects.dm | 8 ++++++++ code/modules/mob/autowhisper.dm | 3 +++ .../modules/mob/living/silicon/pai/pai_hud.dm | 15 +++++++++++++++ .../mob/living/simple_mob/simple_hud.dm | 13 +++++++++++++ code/modules/mob/mob_defines.dm | 1 + code/modules/mob/say_vr.dm | 2 +- icons/mob/screen/minimalist.dmi | Bin 20763 -> 21127 bytes 9 files changed, 71 insertions(+), 2 deletions(-) diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 239d5890d1..1b4d2cb92e 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -257,6 +257,20 @@ 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 + //VOREStation Addition begin shadekin_display = new /obj/screen/shadekin() shadekin_display.screen_loc = ui_shadekin_display diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index ab878af67c..123557a466 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,21 @@ 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 = "EAST-1:31,CENTER-3:13" + 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 = "EAST-1:31,CENTER-3:13" + 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..581d8579b4 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -454,6 +454,14 @@ 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("module") if(isrobot(usr)) diff --git a/code/modules/mob/autowhisper.dm b/code/modules/mob/autowhisper.dm index 9a91e97a6d..8239cfe9c1 100644 --- a/code/modules/mob/autowhisper.dm +++ b/code/modules/mob/autowhisper.dm @@ -4,6 +4,9 @@ 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 diff --git a/code/modules/mob/living/silicon/pai/pai_hud.dm b/code/modules/mob/living/silicon/pai/pai_hud.dm index c7109d8aff..db9581a4f3 100644 --- a/code/modules/mob/living/silicon/pai/pai_hud.dm +++ b/code/modules/mob/living/silicon/pai/pai_hud.dm @@ -325,6 +325,21 @@ 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 + + if(client) client.screen = list() client.screen += hud_elements diff --git a/code/modules/mob/living/simple_mob/simple_hud.dm b/code/modules/mob/living/simple_mob/simple_hud.dm index b546774281..1dc784be96 100644 --- a/code/modules/mob/living/simple_mob/simple_hud.dm +++ b/code/modules/mob/living/simple_mob/simple_hud.dm @@ -158,6 +158,19 @@ 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 pain = new /obj/screen( null ) 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/say_vr.dm b/code/modules/mob/say_vr.dm index 284a584b2a..002b017e94 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -62,7 +62,7 @@ var/subtle_mode if(autowhisper && autowhisper_mode) - if(!(autowhisper_mode == "Psay/Pme")) //This isn't actually a custom subtle mode, so we shouldn't use it! + 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")) diff --git a/icons/mob/screen/minimalist.dmi b/icons/mob/screen/minimalist.dmi index cece74b31ea4d0f40a25bd843ba8ed4f95680a8b..4b5d91252fcc064b52bc8d6795c404a68045f94f 100644 GIT binary patch literal 21127 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 literal 20763 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 Date: Mon, 17 Jul 2023 01:18:15 -0400 Subject: [PATCH 12/22] Tweak verb names --- code/modules/mob/autowhisper.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/autowhisper.dm b/code/modules/mob/autowhisper.dm index 8239cfe9c1..88e07df7a4 100644 --- a/code/modules/mob/autowhisper.dm +++ b/code/modules/mob/autowhisper.dm @@ -1,5 +1,5 @@ /mob/living/verb/toggle_autowhisper() - set name = "Toggle Autowhisper" + set name = "Autowhisper Toggle" set desc = "Toggle whether you will automatically whisper/subtle" set category = "IC" @@ -22,7 +22,7 @@ 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 = "Set Autosubtle Mode" + set name = "Autowhisper Mode" set desc = "Set the mode your emotes will default to while using Autowhisper" set category = "IC" From 1bb51071594abf4b2400fa1ece82c558ae9b26d5 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Mon, 17 Jul 2023 01:42:05 -0400 Subject: [PATCH 13/22] Per suggestion --- code/modules/mob/say_vr.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index 002b017e94..2961384299 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -61,7 +61,7 @@ if(m_type == 2 && muzzled) return var/subtle_mode - if(autowhisper && autowhisper_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) From f2670e82a28cbf63752606c2655e920d09de1dc3 Mon Sep 17 00:00:00 2001 From: Runa Dacino Date: Mon, 17 Jul 2023 15:29:39 +0200 Subject: [PATCH 14/22] fix(TGUI): Fixes linebreaks in PDA med/sec records Fixes https://github.com/VOREStation/VOREStation/issues/15149 --- tgui/packages/tgui/interfaces/pda/pda_medical.js | 2 +- tgui/packages/tgui/interfaces/pda/pda_security.js | 6 ++++-- tgui/public/tgui.bundle.js | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) 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..2771e5d268 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"