From f7eca50a199d000b7e1d3675cfcf3da7b3472201 Mon Sep 17 00:00:00 2001 From: InterroLouis Date: Fri, 26 Aug 2022 21:23:54 -0400 Subject: [PATCH 01/37] Drill Cells Now the drills get cells. --- maps/expedition_vr/aerostat/aerostat_science_outpost.dmm | 8 ++++---- maps/groundbase/gb-z1.dmm | 2 +- maps/stellar_delight/stellar_delight1.dmm | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/maps/expedition_vr/aerostat/aerostat_science_outpost.dmm b/maps/expedition_vr/aerostat/aerostat_science_outpost.dmm index eefdfb4aef..14ab3e1fcd 100644 --- a/maps/expedition_vr/aerostat/aerostat_science_outpost.dmm +++ b/maps/expedition_vr/aerostat/aerostat_science_outpost.dmm @@ -5721,7 +5721,7 @@ /obj/machinery/camera/network/research_outpost{ dir = 4 }, -/obj/machinery/mining/drill, +/obj/machinery/mining/drill/loaded, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/offmap/aerostat/inside/drillstorage) @@ -5751,7 +5751,7 @@ /area/offmap/aerostat/inside/drillstorage) "uK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/mining/drill, +/obj/machinery/mining/drill/loaded, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/offmap/aerostat/inside/drillstorage) @@ -8737,7 +8737,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/mining/drill, +/obj/machinery/mining/drill/loaded, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/offmap/aerostat/inside/drillstorage) @@ -9228,7 +9228,7 @@ dir = 8; pixel_x = -22 }, -/obj/machinery/mining/drill, +/obj/machinery/mining/drill/loaded, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/offmap/aerostat/inside/drillstorage) diff --git a/maps/groundbase/gb-z1.dmm b/maps/groundbase/gb-z1.dmm index 869d267d54..fddbee0af3 100644 --- a/maps/groundbase/gb-z1.dmm +++ b/maps/groundbase/gb-z1.dmm @@ -7432,7 +7432,7 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/machinery/mining/drill, +/obj/machinery/mining/drill/loaded, /turf/simulated/floor/tiled, /area/groundbase/cargo/mining) "qV" = ( diff --git a/maps/stellar_delight/stellar_delight1.dmm b/maps/stellar_delight/stellar_delight1.dmm index 2a1622a32f..a28f469a73 100644 --- a/maps/stellar_delight/stellar_delight1.dmm +++ b/maps/stellar_delight/stellar_delight1.dmm @@ -23668,7 +23668,7 @@ dir = 4 }, /obj/machinery/camera/network/mining, -/obj/machinery/mining/drill, +/obj/machinery/mining/drill/loaded, /turf/simulated/floor/tiled/eris/steel/cargo, /area/stellardelight/deck1/shuttlebay) "XX" = ( From c061eb7ed0fa547fc6d3004e9f7859f55bed008b Mon Sep 17 00:00:00 2001 From: Runa Dacino Date: Sat, 27 Aug 2022 22:55:16 +0200 Subject: [PATCH 02/37] Makes neural hypersensitivity affect pain.dm Makes it so custom species with neural hypersensitivity not only enter crit faster, but get spammed with more severe pain messages too, alongside higher chance of dropping items due to pain. Only affects brute and burn. --- code/modules/organs/pain.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/organs/pain.dm b/code/modules/organs/pain.dm index 1d374ab7f0..373b30fe48 100644 --- a/code/modules/organs/pain.dm +++ b/code/modules/organs/pain.dm @@ -40,6 +40,9 @@ if(dam > maxdam && (maxdam == 0 || prob(70)) ) damaged_organ = E maxdam = dam + if(istype(src, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = src + maxdam *= H.species.trauma_mod if(damaged_organ && chem_effects[CE_PAINKILLER] < maxdam) if(maxdam > 10 && paralysis) AdjustParalysis(-round(maxdam/10)) From d0e57328c728d8df6918c30e0968a96f3c3ec821 Mon Sep 17 00:00:00 2001 From: Runa Dacino Date: Sat, 27 Aug 2022 23:13:11 +0200 Subject: [PATCH 03/37] Makes neural hypersensitvity affect slowdown For pain slowdown to begin, you need at least a difference of 40 between max health and current health before painkillers are considered. With neural hypersensitivity, this is reduced to 20. Furthermore, slowdown calculation is changed from (maxhealth - health - painkiller) / 25 to ((maxhealth - health) * 2 - painkiller) / 25 --- code/modules/mob/living/carbon/human/human_movement.dm | 5 ++++- code/modules/organs/pain.dm | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index e52f051de8..573085cd1c 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -20,7 +20,10 @@ . += M.slowdown var/health_deficiency = (getMaxHealth() - health) - if(health_deficiency >= 40) //VOREStation Edit Start + if(istype(src, /mob/living/carbon/human)) //VOREStation Edit Start + var/mob/living/carbon/human/H = src + health_deficiency *= H.species.trauma_mod //Species pain sensitivity does not apply to painkillers, so we apply it before + if(health_deficiency >= 40) if(chem_effects[CE_PAINKILLER]) //On painkillers? Reduce pain! On anti-painkillers? Increase pain! health_deficiency = max(0, health_deficiency - src.chem_effects[CE_PAINKILLER]) if(health_deficiency >= 40) //Still in enough pain for it to be significant? diff --git a/code/modules/organs/pain.dm b/code/modules/organs/pain.dm index 373b30fe48..6cf236bc19 100644 --- a/code/modules/organs/pain.dm +++ b/code/modules/organs/pain.dm @@ -40,9 +40,9 @@ if(dam > maxdam && (maxdam == 0 || prob(70)) ) damaged_organ = E maxdam = dam - if(istype(src, /mob/living/carbon/human)) + if(istype(src, /mob/living/carbon/human)) //VOREStation Edit Start var/mob/living/carbon/human/H = src - maxdam *= H.species.trauma_mod + maxdam *= H.species.trauma_mod //VOREStation edit end if(damaged_organ && chem_effects[CE_PAINKILLER] < maxdam) if(maxdam > 10 && paralysis) AdjustParalysis(-round(maxdam/10)) From fd47077214360b45f5c9db3d152f0411f42b9a1d Mon Sep 17 00:00:00 2001 From: Runa Dacino Date: Sat, 27 Aug 2022 23:40:31 +0200 Subject: [PATCH 04/37] Changes neural hypersensitivty description Most succint way I could summarize the https://github.com/VOREStation/VOREStation/pull/13597 PR --- .../living/carbon/human/species/station/traits_vr/negative.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm index 07c7d5c49e..0594032c8a 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm @@ -124,7 +124,7 @@ /datum/trait/negative/neural_hypersensitivity name = "Neural Hypersensitivity" - desc = "Your nerves are particularly sensitive to physical changes, leading to experiencing twice the intensity of pain and pleasure alike. Doubles traumatic shock." + desc = "Your nerves are particularly sensitive to physical changes, leading to experiencing twice the intensity of pain and pleasure alike. Makes all pain effects twice as strong, and occur at half as much damage." cost = -1 var_changes = list("trauma_mod" = 2) can_take = ORGANICS From 0c770fd48765f90a51bef50c2a78c0e09789ac2f Mon Sep 17 00:00:00 2001 From: Heroman Date: Sun, 28 Aug 2022 12:21:06 +1000 Subject: [PATCH 05/37] Adds megamoth wings, ability for wings to exist on different layer, ability for large wings to exist --- code/modules/mob/living/carbon/human/emote.dm | 2 +- .../mob/living/carbon/human/update_icons.dm | 76 ++++++++++-------- .../sprite_accessories_wing_large_vr.dm | 14 ++++ .../new_player/sprite_accessories_wing_vr.dm | 2 + .../mob/human_races/subspecies/r_vatgrown.dmi | Bin 2294 -> 2647 bytes icons/mob/vore/wings96_vr.dmi | Bin 0 -> 18929 bytes vorestation.dme | 1 + 7 files changed, 62 insertions(+), 33 deletions(-) create mode 100644 code/modules/mob/new_player/sprite_accessories_wing_large_vr.dm create mode 100644 icons/mob/vore/wings96_vr.dmi diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index d4e85113cd..1f021551d5 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -382,6 +382,6 @@ var/list/_simple_mob_default_emotes = list( var/new_flapping = isnull(setting) ? !flapping : setting if(new_flapping != flapping) - flapping = setting + flapping = new_flapping update_wing_showing() return 1 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 1b96fbad8a..c7350d3935 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -67,35 +67,36 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() #define SURGERY_LAYER 5 //Overlays for open surgical sites #define UNDERWEAR_LAYER 6 //Underwear/bras/etc #define TAIL_LOWER_LAYER 7 //Tail as viewed from the south -#define SHOES_LAYER_ALT 8 //Shoe-slot item (when set to be under uniform via verb) -#define UNIFORM_LAYER 9 //Uniform-slot item -#define ID_LAYER 10 //ID-slot item -#define SHOES_LAYER 11 //Shoe-slot item -#define GLOVES_LAYER 12 //Glove-slot item -#define BELT_LAYER 13 //Belt-slot item -#define SUIT_LAYER 14 //Suit-slot item -#define TAIL_UPPER_LAYER 15 //Some species have tails to render (As viewed from the N, E, or W) -#define GLASSES_LAYER 16 //Eye-slot item -#define BELT_LAYER_ALT 17 //Belt-slot item (when set to be above suit via verb) -#define SUIT_STORE_LAYER 18 //Suit storage-slot item -#define BACK_LAYER 19 //Back-slot item -#define HAIR_LAYER 20 //The human's hair -#define HAIR_ACCESSORY_LAYER 21 //VOREStation edit. Simply move this up a number if things are added. -#define EARS_LAYER 22 //Both ear-slot items (combined image) -#define EYES_LAYER 23 //Mob's eyes (used for glowing eyes) -#define FACEMASK_LAYER 24 //Mask-slot item -#define HEAD_LAYER 25 //Head-slot item -#define HANDCUFF_LAYER 26 //Handcuffs, if the human is handcuffed, in a secret inv slot -#define LEGCUFF_LAYER 27 //Same as handcuffs, for legcuffs -#define L_HAND_LAYER 28 //Left-hand item -#define R_HAND_LAYER 29 //Right-hand item -#define WING_LAYER 30 //Wings or protrusions over the suit. -#define TAIL_UPPER_LAYER_ALT 31 //Modified tail-sprite layer. Tend to be larger. -#define MODIFIER_EFFECTS_LAYER 32 //Effects drawn by modifiers -#define FIRE_LAYER 33 //'Mob on fire' overlay layer -#define MOB_WATER_LAYER 34 //'Mob submerged' overlay layer -#define TARGETED_LAYER 35 //'Aimed at' overlay layer -#define TOTAL_LAYERS 35 //VOREStation edit. <---- KEEP THIS UPDATED, should always equal the highest number here, used to initialize a list. +#define WING_LOWER_LAYER 8 //Wings as viewed from the south +#define SHOES_LAYER_ALT 9 //Shoe-slot item (when set to be under uniform via verb) +#define UNIFORM_LAYER 10 //Uniform-slot item +#define ID_LAYER 11 //ID-slot item +#define SHOES_LAYER 12 //Shoe-slot item +#define GLOVES_LAYER 13 //Glove-slot item +#define BELT_LAYER 14 //Belt-slot item +#define SUIT_LAYER 15 //Suit-slot item +#define TAIL_UPPER_LAYER 16 //Some species have tails to render (As viewed from the N, E, or W) +#define GLASSES_LAYER 17 //Eye-slot item +#define BELT_LAYER_ALT 18 //Belt-slot item (when set to be above suit via verb) +#define SUIT_STORE_LAYER 19 //Suit storage-slot item +#define BACK_LAYER 20 //Back-slot item +#define HAIR_LAYER 21 //The human's hair +#define HAIR_ACCESSORY_LAYER 22 //VOREStation edit. Simply move this up a number if things are added. +#define EARS_LAYER 23 //Both ear-slot items (combined image) +#define EYES_LAYER 24 //Mob's eyes (used for glowing eyes) +#define FACEMASK_LAYER 25 //Mask-slot item +#define HEAD_LAYER 26 //Head-slot item +#define HANDCUFF_LAYER 27 //Handcuffs, if the human is handcuffed, in a secret inv slot +#define LEGCUFF_LAYER 28 //Same as handcuffs, for legcuffs +#define L_HAND_LAYER 29 //Left-hand item +#define R_HAND_LAYER 30 //Right-hand item +#define WING_LAYER 31 //Wings or protrusions over the suit. +#define TAIL_UPPER_LAYER_ALT 32 //Modified tail-sprite layer. Tend to be larger. +#define MODIFIER_EFFECTS_LAYER 33 //Effects drawn by modifiers +#define FIRE_LAYER 34 //'Mob on fire' overlay layer +#define MOB_WATER_LAYER 35 //'Mob submerged' overlay layer +#define TARGETED_LAYER 36 //'Aimed at' overlay layer +#define TOTAL_LAYERS 36 //VOREStation edit. <---- KEEP THIS UPDATED, should always equal the highest number here, used to initialize a list. ////////////////////////////////// /mob/living/carbon/human @@ -1099,13 +1100,20 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() return remove_layer(WING_LAYER) + remove_layer(WING_LOWER_LAYER) - var/image/wing_image = get_wing_image() + var/image/wing_image = get_wing_image(FALSE) if(wing_image) wing_image.layer = BODY_LAYER+WING_LAYER overlays_standing[WING_LAYER] = wing_image + if(wing_style && wing_style.multi_dir) + wing_image = get_wing_image(TRUE) + if(wing_image) + wing_image.layer = BODY_LAYER+WING_LOWER_LAYER + overlays_standing[WING_LOWER_LAYER] = wing_image apply_layer(WING_LAYER) + apply_layer(WING_LOWER_LAYER) /mob/living/carbon/human/update_modifier_visuals() if(QDESTROYING(src)) @@ -1172,7 +1180,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() overlays_standing[SURGERY_LAYER] = total apply_layer(SURGERY_LAYER) -/mob/living/carbon/human/proc/get_wing_image() +/mob/living/carbon/human/proc/get_wing_image(var/under_layer) if(QDESTROYING(src)) return @@ -1186,7 +1194,10 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() //If you have custom wings selected if(wing_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL) && !wings_hidden) //VOREStation Edit - var/icon/wing_s = new/icon("icon" = wing_style.icon, "icon_state" = flapping && wing_style.ani_state ? wing_style.ani_state : wing_style.icon_state) + var/wing_state = (flapping && wing_style.ani_state) ? wing_style.ani_state : wing_style.icon_state + if(wing_style.multi_dir) + wing_state += "_[under_layer ? "back" : "front"]" + var/icon/wing_s = new/icon("icon" = wing_style.icon, "icon_state" = wing_state) if(wing_style.do_colouration) wing_s.Blend(rgb(src.r_wing, src.g_wing, src.b_wing), wing_style.color_blend_mode) if(wing_style.extra_overlay) @@ -1208,6 +1219,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() var/image/working = image(wing_s) if(wing_style.em_block) working.overlays += em_block_image_generic(working) // Leaving this as overlays += + working.pixel_x -= wing_style.wing_offset return working /mob/living/carbon/human/proc/get_ears_overlay() diff --git a/code/modules/mob/new_player/sprite_accessories_wing_large_vr.dm b/code/modules/mob/new_player/sprite_accessories_wing_large_vr.dm new file mode 100644 index 0000000000..0bfca21140 --- /dev/null +++ b/code/modules/mob/new_player/sprite_accessories_wing_large_vr.dm @@ -0,0 +1,14 @@ +// beeg wing + + +/datum/sprite_accessory/wing/large + name = "You should not see this..." + icon = 'icons/mob/vore/wings96_vr.dmi' + wing_offset = 32 + + +/datum/sprite_accessory/wing/large/megamoth + name = "megamoth wings" + icon_state = "megamoth" + ani_state = "megamoth_open" + multi_dir = TRUE \ No newline at end of file diff --git a/code/modules/mob/new_player/sprite_accessories_wing_vr.dm b/code/modules/mob/new_player/sprite_accessories_wing_vr.dm index bb39bc8ce3..fc04d43a42 100644 --- a/code/modules/mob/new_player/sprite_accessories_wing_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_wing_vr.dm @@ -11,6 +11,8 @@ do_colouration = 0 //Set to 1 to enable coloration using the tail color. species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use color_blend_mode = ICON_ADD // Only appliciable if do_coloration = 1 + var/wing_offset = 0 + var/multi_dir = FALSE // Does it use different sprites at different layers? _front will be added for sprites on low layer, _back to high layer /datum/sprite_accessory/wing/shock //Unable to split the tail from the wings in the sprite, so let's just classify it as wings. name = "pharoah hound tail (Shock Diamond)" diff --git a/icons/mob/human_races/subspecies/r_vatgrown.dmi b/icons/mob/human_races/subspecies/r_vatgrown.dmi index c1562d2b67db6248094d617b433f19bf9f54d9c8..25680167e362969f7191e4db375e47f87e0037b3 100644 GIT binary patch delta 2602 zcmYjR2{@E%8y;K6LpDr@Acg8ecji4KkxE942eO6@&kKYb1~Qf7z6?l zv$ViELLhvKya|B{@EE1F%dx!RpRQ~PERX-igRAwm%b)5d+DZl!{xi~E>7W9+d-tx3 zi^~}#q^YUt18quwmb!2e;qQB{3y$|x zC`8@vnmV-{J|{PG3NbIEsnzQ0iiNdXybT_83zIsOMZ0BIf&++587pkHF3U^xAgQz*suyb&QOxndV_xQ-KcKl z#X1nQJE2IWBDJ+Gpbhm*YBef+k9JT@T5Ngm1n)L}4xK`na%p-wB@`!iy(&p}o=kq; zQGpNPpofmSjAe&*uJ~bRpVXL^J+&fXIryPc=fI;d;N&D+I}fvQaL-G!hJLBDk)tH|JKpCSx?z0|5lH(GKlHK4#vPtb88|47>RbD5#;RezMMqVdlwYzF=-Gxi((x_+dM@N_(;>tn!FPStM^F0FhaiMR5 zCM{L?`TxlR_y<5Bq+?#zt39iyYaLLtuuK-={DwSVK(nf(#XVQwskRlR1TzHN0P1W=E7%da_DO%$c3_4SiT}U>-0)W9@dORUC2FFX@?& z|4vOU)oJo6jua|@i#Hgwbg9C+4;*)2FsPe2?td6xHci`qg!L_Z2Cws=h8-Zaa*m!m zF)zc)-H}DHty~G3$r106GHTS*SAGG9>dXH~L(XV&!yc9fDAHS*j0D+Th2mat-Oi88 zAL8Rz0L(wSDLbjInZIn3XHvokk15AL*Dsy&Kv}(sY;E8mQ&JxX!8LCNM+HGCsUmC* z`i$rBaj!*OkM~59ZleJEvuMF2l%-^CV&i<@2EIA*c$8J9xy}A=wk9_|JUa}guJG+{ z^xmCk-WWC*^2_NwJLnE+88`y zWFSjEcyvQw5!!#ebxXtOuQgWX7A0znN@;}MEXYq4o)YSDZ2v~UjjUYi|Cma;lNLdr zq_Kpn-#1k--bu6UDvT&E#M7OC=WA6u9*$S)H(?z&U-y_yD!KpW!K5LKbX1N&OCk`Y zNvGT)Ztf_(oGb5hxM-}Uc!xmdc=;QYzhez(K51vrfY&T|y~Q{K(kq%hly_UZHij(Hq6*UU{_ z>cIHce96AI_Lvtn4nM1x0QB`{LU zAj!`I7zX-x35|`qv_H0)aA~&QemYvXao>f)x7^}j&}K<2u|{a6lUrQN(MvFm>|&z& zSQLYGeS1$LCm}K0lcoA~)^y!FZ)O3whPZCioh&pmykj`pRTqH8#gX2Gs&;5D4omdV zRfXcW_sTMBxRBR=$_02qX@nvW-mnOo0jfk%caGgB^7ku>k{r9~db1CIQYS@KRon{P z8DQaXYH{m!8<=@t_>yt+Ag#rEo?_Ika?e~N)?|aM-?0QwTzd_w>a>oXvsWO-%L^_U z;d>LP&#cReTop48!M_8?idL$0B|7-GoHk1i$%q#wVLHqfiRIj*;T8q6(WWLq6VAU` zDc%Ph24j|{D3mN)oRS4%w!WkuF_WK!VT7WzjD3(5+|rMmOO9}rE2^CyWR>y7&&C`u zgU%Nw({@^W@?#yf0zJowkNI>D#!pp*H(2F=c#k2ELD$)53f!6BBe)$Ofw*b-38eid z{ZE9?ZzTIu?e`g(BZPj;CVyrc(w%e5E=Rp`6; z0bW1%>mLJrnOyXZfCOH#gr`39DP(X@xADHs%LdT)4e00H&k4hgfxeOdi?^?@P_$!s zJm3Y|MS?cBK?l{dG#X2QfjWRx%bB`WD8$yg#{C6eu@NEeDCX7zpr>hq97LyxGwpBq zB*RiCNCHew1LWbLtXnI9o}%qB?i4z)dBCq*P>%^+FoMdMG* zqL6I%*8KVdOB5MKJoiSz)W#_i>jVL+q7w~pqLG|n5A=q&I6wSJFlQ=I9Z4)9tnfrs zb{&vXrXlo0zd;}tZwkE-T2$uAAVe?QzJry#O+QiiZ2OoLnN`~Tow_DVt)8FSidF!h Wf!UOc7SR4t)0Ss#vE`;$qyGzrAqHOn delta 2247 zcmZWrc{J3E7yr&MjrGU8tUb%fTEtjlM8-0RWJ^(zEuyh+8R0vmgbYQg$WGanB3Z^7 z9!k7Sy|E0V>{}Rv8T0fzzjJ=){eJ)4dq4M_yL`?)_nu1@q9f#!Y^}}td5-V^0Kji? z25S!hkOLC}aB&RGZg%`?vhLTJ zteLRP4wE1Qe+w&x_TNN``T6e%Y1=xd6wmeY)qY6KTey_`MyJS2%TwK4%xqj;@_Lh$ zgr_d?=(vo6nWo6uGYIjl09CLI?%Ak<5zfk57`(FQ7=3L$!;J^U4lOCCEbP6ICJuDT zZGPO%2LL$U0&4_1MCL3%pNhyv3*He=$4+ZUWcxSxKOF7bBVChsAIo|BgNO?1)!wGm zVV)s0i*VwcB1NS#34+F4GBYi*%5R#9ui0OU>c5<$gs48pEyh^UF*2B?=5Uw!RSlV) z`bxvutl#pfpk?gc&>Ak(lrmKd@>smI#5wZ`8Lh@6$OiR|2q89lB-@8DcE-=nkI#>` z39-MArlb<$*}gmOlS27QhI5K&?ilswLy3zIU$gq{tKZ5gZh;{iea;NmO7_27`G=S| znen)HEK^iPTv;v|myx{BDq+)04KPAyE=eQUE79SEE5|B?VTRTbZ}(fkrZu&yu~Dgi zap2DZI$n>y!u_9$NtkWPwz)7ww}T51)PAUzhHq;6@VhHFQf=Lzj(Ok`$}#W*{{JY- zB?HP&QxbN6CykkUQYOkGW{20KGwJ@cobTP6BGI3~73DPG90q=X?O*1j&`eJ$^wvk^jzdG#~b9@$O=foBMi`K}^ z#k*Msn?8kd!!@TKJZu#}$D*dQr3G&wr<=E<2JIevs={Gv6xx}L$Ar{`tL%i0@$``u z)1Q_bdp=Bf<@K8ohnFexv4J}s23ZxG4qMlB&5WF~hs%(Y!xIbS|~ zuLct#Zt3|cDa~4Da0gW3n8+FM#A1@Lt86pTg{iX8IR?{#m&@&o2&UWBjxeR1|8xVF zSTETeH)ae!2?bamq0u89V73~8L$tuJr-rC-r|rUk2(sH8I#8+Vst#3&yC_UmrI1x> z1QadLy%(OF@{69ZQjsP~oFNK~B=%7F2-gklA!g947^d_(X0ty7fy6|z z3n(C((Tk%oI&E-k1+;C>sLEW;p{Vq{q#i~&JF!QMwGR2}89AOyQXA#77l^^7vw$BWp#tsJ&ZJgWt+i$%}YkislHSCeds^g!FU8-PSY z0skL?{aX+V!aa5H(2wRiLQG(*0g~4(VhFqK=F_ybo6yBv(V1%zIUnawR+Jk(k?z(~ zyFqf5M%j>H3vj;{1HjdUPrF7M1#W&?VV^nH-M$ZVKBkxG+AJ|Spt71QzVFP=+=cPi z>)gIO>R@p$AaWJ0=(I4^7hCg9)@3Qr1%o{9Fd-6_gaA=Raa|)DP8dT=C|Z{+U|U~x zA9~LPW2goBz&V&ibSJI&SdeF5#S)wYT62~?S%mo0pSusgWbH=lk94HE4;mZPaoVTO zo3J;2ZhjZ+rH8Tz!-6}SP(DZ|V#u*LFTkr~ag=>BTh*JFdYrRui=!48O#*mPInbIT zNAdT-G^h{>suNNzjnw(Rh_y$C+lf!ROo-{xNocIKFYCyDLBzD^99C1R!d2nOvbV+X zO;D)Kbrg}5x3kH z9tvg_B65V=CV@`A-;4kF3~iX0FyE7!P@|c9;|&_uJ$%vPVe#8ilLyY#7z6Mu;l0Jg zz%k7zIUjDqa_S|D#HdJ5-#J|9`1)Bc>Zx~o%<4`XXH*5b&e?<0CxZ~@asd|eNIqBW z<0*KhiedP6H5uZ#DWUgLAEB`{I4=RvMbT}cZ3(lwkqXh0FIfDQEZA|nj;%1djRmt` uNzp&tI^0)AC%q*ZcJCiD6eslG202QSv_$H@4XGcz7J!ARHMZK=E&gv7KqXWF diff --git a/icons/mob/vore/wings96_vr.dmi b/icons/mob/vore/wings96_vr.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f7dc2e61f80a088ac1346b9f84fcfe2ca0f4c486 GIT binary patch literal 18929 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 Date: Sun, 28 Aug 2022 17:35:51 -0400 Subject: [PATCH 06/37] Back to GB --- vorestation.dme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vorestation.dme b/vorestation.dme index 26eb83cb36..c31d0bcea4 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4147,6 +4147,7 @@ #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\offmap_vr\om_ships\abductor.dm" #include "maps\southern_cross\items\clothing\sc_accessory.dm" #include "maps\southern_cross\items\clothing\sc_suit.dm" @@ -4154,7 +4155,6 @@ #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 1cf6e03fbdd069441e895aad47817fa872ae619c Mon Sep 17 00:00:00 2001 From: VerySoft Date: Sun, 28 Aug 2022 21:35:20 -0400 Subject: [PATCH 07/37] Wow mouse hole it's not lewd it's an actual hole --- code/game/objects/micro_structures.dm | 195 ++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 code/game/objects/micro_structures.dm diff --git a/code/game/objects/micro_structures.dm b/code/game/objects/micro_structures.dm new file mode 100644 index 0000000000..72ed290bba --- /dev/null +++ b/code/game/objects/micro_structures.dm @@ -0,0 +1,195 @@ +/obj/structure/micro_structure/tunnel + name = "mouse hole" + desc = "A tiny little hole... where does it go?" + icon_state = "trash_hole" + + anchored = TRUE + density = TRUE + + var/max_accepted_scale = 0.3 + var/magic = FALSE //For events and stuff, if true, this tunnel will show up in the list regardless of whether it's in valid range, of if you're in a tunnel with this var, all tunnels of the same faction will show up redardless of range + +/obj/structure/micro_structure/tunnel/Initialize() + . = ..() + if(name == "mouse hole") + var/area/our_area = get_area(src) + name = "[our_area.name] hole" + + if(pixel_x || pixel_y) + return + + switch(dir) + if(1) + pixel_y = 32 + if(2) + pixel_y = -32 + if(4) + pixel_x = 32 + if(8) + pixel_x = -32 + +/obj/structure/micro_structure/tunnel/Destroy() + visible_message("\The [src] collapses!") + for(var/mob/thing in src.contents) + visible_message("\The [thing] tumbles out!") + thing.forceMove(get_turf(src.loc)) + + return ..() + +/obj/structure/micro_structure/tunnel/update_icon() + . = ..() + +/obj/structure/micro_structure/tunnel/attack_hand(mob/user) + if(!isliving(user)) + return + if(user.loc == src) + var/choice = tgui_alert(user,"It's dark and gloomy in here. What would you like to do?","Tunnel",list("Exit", "Move")) + switch(choice) + if("Exit") + user.forceMove(get_turf(src.loc)) + user.visible_message("\The [user] climbs out of \the [src]!") + return + if("Move") + var/list/destinations = list() + var/turf/myturf = get_turf(src.loc) + var/datum/planet/planet + for(var/datum/planet/P in SSplanets.planets) + if(myturf.z in P.expected_z_levels) + planet = P + else + for(var/obj/structure/micro_structure/tunnel/t in world) + if(t == src) + continue + if(magic || t.magic) + destinations |= t + continue + if(t.z == z) + destinations |= t + continue + var/turf/targetturf = get_turf(t.loc) + if(planet) + if(targetturf.z in planet.expected_z_levels) + destinations |= t + continue + else + var/above = GetAbove(myturf) + if(above && t.z == z + 1) + destinations |= t + continue + var/below = GetBelow(myturf) + if(below && t.z == z - 1) + destinations |= t + + if(!destinations.len) + to_chat(user, "There are no other tunnels connected to this one!") + return + choice = tgui_input_list(user, "Where would you like to go?", "Pick a tunnel", destinations) + to_chat(user,"You begin moving...") + if(!choice) + return + if(!do_after(user, 10 SECONDS, exclusive = TRUE)) + return + user.forceMove(choice) + tunnel_notify(user) + return + + if(user.a_intent != I_HELP) + return ..() + if(!can_enter(user)) + user.visible_message("\The [user] reaches into \the [src]. . .","You reach into \the [src]. . .") + if(!do_after(user, 3 SECONDS, exclusive = TRUE)) + user.visible_message("\The [user] pulls their hand out of \the [src].","You pull your hand out of \the [src]") + return + if(!src.contents.len) + to_chat(user, "There was nothing inside.") + user.visible_message("\The [user] pulls their hand out of \the [src].","You pull your hand out of \the [src]") + return + var/grabbed = pick(src.contents) + if(!grabbed) + to_chat(user, "There was nothing inside.") + user.visible_message("\The [user] pulls their hand out of \the [src].","You pull your hand out of \the [src]") + return + + if(ishuman(user)) + var/mob/living/carbon/human/h = user + var/mob/living/l = grabbed + if(isliving(grabbed)) + l.attempt_to_scoop(h) + else + var/atom/movable/whatever = grabbed + whatever.forceMove(get_turf(src.loc)) + + user.visible_message("\The [user] pulls \the [grabbed] out of \the [src]! ! !") + return + + else if(isanimal(user)) + var/mob/living/simple_mob/a = user + var/mob/living/l = grabbed + if(!a.has_hands || isliving(grabbed)) + l.attempt_to_scoop(user) + else + var/atom/movable/whatever = grabbed + whatever.forceMove(get_turf(src.loc)) + user.visible_message("\The [user] pulls \the [grabbed] out of \the [src]! ! !") + return + + if(tgui_alert(user,"Do you want to go into the tunnel?","Enter Tunnel",list("Yes", "No")) != "Yes") + return + user.visible_message("\The [user] begins climbing into \the [src]!") + if(!do_after(user, 10 SECONDS, exclusive = TRUE)) + to_chat(user, "You didn't go into \the [src]!") + return + + enter_tunnel(user) + +/obj/structure/micro_structure/tunnel/proc/can_enter(var/mob/living/user) + if(user.mob_size < MOB_TINY || user.size_multiplier <= max_accepted_scale) + return TRUE + + return FALSE + +/obj/structure/micro_structure/tunnel/attack_generic(mob/user, damage, attack_verb) + . = ..() + if(user.a_intent == I_HURT) + return ..() + attack_hand(user) + +/obj/structure/micro_structure/tunnel/MouseDrop_T(mob/living/M, mob/living/user) + . = ..() + if(M != user) + return + + if(!can_enter(user)) + return + + var/mob/living/k = M + + k.visible_message("\The [k] begins climbing into \the [src]!") + if(!do_after(k, 3 SECONDS, exclusive = TRUE)) + to_chat(k, "You didn't go into \the [src]!") + return + + enter_tunnel(k) + +/obj/structure/micro_structure/tunnel/proc/enter_tunnel(mob/living/k) + k.visible_message("\The [k] climbs into \the [src]!") + k.forceMove(src) + to_chat(k,"You are inside of \the [src]. It's dark and gloomy inside of here. You can click upon the tunnel to exit, or travel to another tunnel if there are other tunnels linked to it.") + tunnel_notify(k) + +/obj/structure/micro_structure/tunnel/proc/tunnel_notify(var/mob/living/user) + var/our_message = "You can see " + var/found_stuff = FALSE + for(var/thing in src.contents) + found_stuff = TRUE + our_message = "[our_message] [thing], " + if(isliving(thing)) + var/mob/living/t = thing + to_chat(t, "\The [user] enters \the [src]!") + if(found_stuff) + to_chat(user, "[our_message]inside of \the [src]!") + if(prob(25)) + visible_message("Something moves inside of \the [src]. . .") + +/obj/structure/micro_structure/tunnel/magic + magic = TRUE From 3bdbf43455e6a72caef2b38a1e412eea73c2bec1 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Sun, 28 Aug 2022 23:49:50 -0400 Subject: [PATCH 08/37] Mouse hole... --- code/game/objects/micro_structures.dm | 74 ++++++++++++---------- icons/obj/structures/micro_structures.dmi | Bin 0 -> 563 bytes 2 files changed, 40 insertions(+), 34 deletions(-) create mode 100644 icons/obj/structures/micro_structures.dmi diff --git a/code/game/objects/micro_structures.dm b/code/game/objects/micro_structures.dm index 72ed290bba..b72f05001a 100644 --- a/code/game/objects/micro_structures.dm +++ b/code/game/objects/micro_structures.dm @@ -1,22 +1,40 @@ -/obj/structure/micro_structure/tunnel +/obj/structure/micro_tunnel name = "mouse hole" desc = "A tiny little hole... where does it go?" - icon_state = "trash_hole" + icon = 'icons/obj/structures/micro_structures.dmi' + icon_state = "mouse_hole" anchored = TRUE - density = TRUE + density = FALSE var/max_accepted_scale = 0.3 var/magic = FALSE //For events and stuff, if true, this tunnel will show up in the list regardless of whether it's in valid range, of if you're in a tunnel with this var, all tunnels of the same faction will show up redardless of range -/obj/structure/micro_structure/tunnel/Initialize() +/obj/structure/micro_tunnel/Initialize() . = ..() if(name == "mouse hole") var/area/our_area = get_area(src) - name = "[our_area.name] hole" - + name = "[our_area.name] mouse hole" if(pixel_x || pixel_y) return + offset_tunnel() + +/obj/structure/micro_tunnel/Destroy() + visible_message("\The [src] collapses!") + for(var/mob/thing in src.contents) + visible_message("\The [thing] tumbles out!") + thing.forceMove(get_turf(src.loc)) + + return ..() + +/obj/structure/micro_tunnel/set_dir(new_dir) + . = ..() + offset_tunnel() + +/obj/structure/micro_tunnel/proc/offset_tunnel() + + pixel_x = 0 + pixel_y = 0 switch(dir) if(1) @@ -28,20 +46,9 @@ if(8) pixel_x = -32 -/obj/structure/micro_structure/tunnel/Destroy() - visible_message("\The [src] collapses!") - for(var/mob/thing in src.contents) - visible_message("\The [thing] tumbles out!") - thing.forceMove(get_turf(src.loc)) - - return ..() - -/obj/structure/micro_structure/tunnel/update_icon() - . = ..() - -/obj/structure/micro_structure/tunnel/attack_hand(mob/user) +/obj/structure/micro_tunnel/attack_hand(mob/user) if(!isliving(user)) - return + return ..() if(user.loc == src) var/choice = tgui_alert(user,"It's dark and gloomy in here. What would you like to do?","Tunnel",list("Exit", "Move")) switch(choice) @@ -57,7 +64,7 @@ if(myturf.z in P.expected_z_levels) planet = P else - for(var/obj/structure/micro_structure/tunnel/t in world) + for(var/obj/structure/micro_tunnel/t in world) if(t == src) continue if(magic || t.magic) @@ -84,17 +91,16 @@ to_chat(user, "There are no other tunnels connected to this one!") return choice = tgui_input_list(user, "Where would you like to go?", "Pick a tunnel", destinations) - to_chat(user,"You begin moving...") if(!choice) return + to_chat(user,"You begin moving...") if(!do_after(user, 10 SECONDS, exclusive = TRUE)) return user.forceMove(choice) - tunnel_notify(user) + var/obj/structure/micro_tunnel/da_oddawun = choice + da_oddawun.tunnel_notify(user) return - if(user.a_intent != I_HELP) - return ..() if(!can_enter(user)) user.visible_message("\The [user] reaches into \the [src]. . .","You reach into \the [src]. . .") if(!do_after(user, 3 SECONDS, exclusive = TRUE)) @@ -142,19 +148,17 @@ enter_tunnel(user) -/obj/structure/micro_structure/tunnel/proc/can_enter(var/mob/living/user) - if(user.mob_size < MOB_TINY || user.size_multiplier <= max_accepted_scale) +/obj/structure/micro_tunnel/proc/can_enter(var/mob/living/user) + if(user.mob_size <= MOB_TINY || user.size_multiplier <= max_accepted_scale) return TRUE return FALSE -/obj/structure/micro_structure/tunnel/attack_generic(mob/user, damage, attack_verb) - . = ..() - if(user.a_intent == I_HURT) - return ..() +/obj/structure/micro_tunnel/attack_generic(mob/user, damage, attack_verb) attack_hand(user) + return ..() -/obj/structure/micro_structure/tunnel/MouseDrop_T(mob/living/M, mob/living/user) +/obj/structure/micro_tunnel/MouseDrop_T(mob/living/M, mob/living/user) . = ..() if(M != user) return @@ -171,16 +175,18 @@ enter_tunnel(k) -/obj/structure/micro_structure/tunnel/proc/enter_tunnel(mob/living/k) +/obj/structure/micro_tunnel/proc/enter_tunnel(mob/living/k) k.visible_message("\The [k] climbs into \the [src]!") k.forceMove(src) to_chat(k,"You are inside of \the [src]. It's dark and gloomy inside of here. You can click upon the tunnel to exit, or travel to another tunnel if there are other tunnels linked to it.") tunnel_notify(k) -/obj/structure/micro_structure/tunnel/proc/tunnel_notify(var/mob/living/user) +/obj/structure/micro_tunnel/proc/tunnel_notify(var/mob/living/user) var/our_message = "You can see " var/found_stuff = FALSE for(var/thing in src.contents) + if(thing == user) + continue found_stuff = TRUE our_message = "[our_message] [thing], " if(isliving(thing)) @@ -191,5 +197,5 @@ if(prob(25)) visible_message("Something moves inside of \the [src]. . .") -/obj/structure/micro_structure/tunnel/magic +/obj/structure/micro_tunnel/magic magic = TRUE diff --git a/icons/obj/structures/micro_structures.dmi b/icons/obj/structures/micro_structures.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f3096a12239ebf19d08818794aea62350c9e7722 GIT binary patch literal 563 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=B~>92B`&GO$wiq3C7Jno3=9=> zRF4~SwHOGnUa%_e>i@QA^;;96i6T|3f-=4iyeW&S|LT4#UGHMwlh-y^X741EBho$V zR-LRlJk3_(ZF|r3f**hSpP6z?92J$Hdh~cOmr=9_mz#T<|7%q)H)qwhn}_`R>K?|* z*!5e9cr!3CR(ZNOhE&XXJ1eoT$w0tOezxt6J7+44o~Qjvez`1>d5ggJ;um{bBy`o} z`yEeRIeGWy;WK#+XQR3KcI>_{{eAk!rF;w2Shu_}nZD`#?RW23H0w`rWr$yhVD($D znSZY6h6xY83NZ4^J=p!7`(2&+W_$VR8$VC{H+^NQ+=gQ|_8gTDT7#L^IoxBt!gyr~ zLn(u)rh}}5FIND2z+@&Qp$9x^W!n8u++XH()G%Fjy!}Vc;@Wf$^#xH&8jm{l&Mfuj zDCN`%Td_t?EBd{vpqs2Tf6g~P{eQNmVe0w057PH<2xqkvR9b$h*`6mgx~3qg o!Kz`F$O2Gstzcdu8FzsD@~a77p13qv08;^jr>mdKI;Vst0JG!m@&Et; literal 0 HcmV?d00001 From 5f4879dae5a8ac4c572254e62691b21ceb8e4609 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Mon, 29 Aug 2022 00:37:32 -0400 Subject: [PATCH 09/37] Increase max allowed size to 50%! --- code/game/objects/micro_structures.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/micro_structures.dm b/code/game/objects/micro_structures.dm index b72f05001a..98bc005a04 100644 --- a/code/game/objects/micro_structures.dm +++ b/code/game/objects/micro_structures.dm @@ -7,7 +7,7 @@ anchored = TRUE density = FALSE - var/max_accepted_scale = 0.3 + var/max_accepted_scale = 0.5 var/magic = FALSE //For events and stuff, if true, this tunnel will show up in the list regardless of whether it's in valid range, of if you're in a tunnel with this var, all tunnels of the same faction will show up redardless of range /obj/structure/micro_tunnel/Initialize() @@ -149,7 +149,7 @@ enter_tunnel(user) /obj/structure/micro_tunnel/proc/can_enter(var/mob/living/user) - if(user.mob_size <= MOB_TINY || user.size_multiplier <= max_accepted_scale) + if(user.mob_size <= MOB_TINY || user.get_effective_size(TRUE) <= max_accepted_scale) return TRUE return FALSE From 89f80012a0e0727a889acf09674267c541ed2ccb Mon Sep 17 00:00:00 2001 From: VerySoft Date: Mon, 29 Aug 2022 01:23:18 -0400 Subject: [PATCH 10/37] wawo --- code/game/objects/micro_structures.dm | 4 ++-- vorestation.dme | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/game/objects/micro_structures.dm b/code/game/objects/micro_structures.dm index 98bc005a04..d3011c1961 100644 --- a/code/game/objects/micro_structures.dm +++ b/code/game/objects/micro_structures.dm @@ -12,9 +12,9 @@ /obj/structure/micro_tunnel/Initialize() . = ..() - if(name == "mouse hole") + if(name == initial(name)) var/area/our_area = get_area(src) - name = "[our_area.name] mouse hole" + name = "[our_area.name] [name]" if(pixel_x || pixel_y) return offset_tunnel() diff --git a/vorestation.dme b/vorestation.dme index f46c57c8b2..280003c21e 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1080,6 +1080,7 @@ #include "code\game\objects\explosion_recursive.dm" #include "code\game\objects\items.dm" #include "code\game\objects\items_vr.dm" +#include "code\game\objects\micro_structures.dm" #include "code\game\objects\mob_spawner_vr.dm" #include "code\game\objects\objs.dm" #include "code\game\objects\structures.dm" From 5fd9cc3168d5149fac998bd2cf3d91ec1c1f5399 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Mon, 29 Aug 2022 21:40:25 -0400 Subject: [PATCH 11/37] Micro hiding! Adds a var and a proc to all objects in the game! If an object starts with the 'micro_target' var enabled, then it will obtain the 'micro interact' proc as a verb on initialize. The 'micro interact' proc, allows micros and other small mobs such as mice, to hide inside of whatever the object is. Additionally, those inside one object can use the verb to move to an adjacent object that has the 'micro_target' var. Non micros/small mobs can also use the 'micro interact' verb to attempt to extract anyone who might be within the given object. --- code/game/objects/micro_structures.dm | 161 +++++++++++++++++++++++++- 1 file changed, 157 insertions(+), 4 deletions(-) diff --git a/code/game/objects/micro_structures.dm b/code/game/objects/micro_structures.dm index d3011c1961..203f12137c 100644 --- a/code/game/objects/micro_structures.dm +++ b/code/game/objects/micro_structures.dm @@ -7,8 +7,8 @@ anchored = TRUE density = FALSE - var/max_accepted_scale = 0.5 var/magic = FALSE //For events and stuff, if true, this tunnel will show up in the list regardless of whether it's in valid range, of if you're in a tunnel with this var, all tunnels of the same faction will show up redardless of range + micro_target = TRUE /obj/structure/micro_tunnel/Initialize() . = ..() @@ -50,7 +50,7 @@ if(!isliving(user)) return ..() if(user.loc == src) - var/choice = tgui_alert(user,"It's dark and gloomy in here. What would you like to do?","Tunnel",list("Exit", "Move")) + var/choice = tgui_alert(user,"It's dark and gloomy in here. What would you like to do?","Tunnel",list("Exit", "Move", "Cancel")) switch(choice) if("Exit") user.forceMove(get_turf(src.loc)) @@ -90,7 +90,10 @@ if(!destinations.len) to_chat(user, "There are no other tunnels connected to this one!") return - choice = tgui_input_list(user, "Where would you like to go?", "Pick a tunnel", destinations) + else if(destinations.len == 1) + choice = pick(destinations) + else + choice = tgui_input_list(user, "Where would you like to go?", "Pick a tunnel", destinations) if(!choice) return to_chat(user,"You begin moving...") @@ -100,6 +103,8 @@ var/obj/structure/micro_tunnel/da_oddawun = choice da_oddawun.tunnel_notify(user) return + if("Cancel") + return if(!can_enter(user)) user.visible_message("\The [user] reaches into \the [src]. . .","You reach into \the [src]. . .") @@ -149,7 +154,7 @@ enter_tunnel(user) /obj/structure/micro_tunnel/proc/can_enter(var/mob/living/user) - if(user.mob_size <= MOB_TINY || user.get_effective_size(TRUE) <= max_accepted_scale) + if(user.mob_size <= MOB_TINY || user.get_effective_size(TRUE) <= micro_accepted_scale) return TRUE return FALSE @@ -199,3 +204,151 @@ /obj/structure/micro_tunnel/magic magic = TRUE + +/obj + var/micro_accepted_scale = 0.5 + var/micro_target = FALSE + +/obj/Initialize(mapload) + . = ..() + if(micro_target) + verbs += /obj/proc/micro_interact + +/obj/proc/micro_interact() + set name = "Micro Interact" + set desc = "Micros can enter, or move between objects with this! Non-micros can reach into objects to search for micros!" + set category = "Object" + set src in oview(1) + + if(!isliving(usr)) + return + + var/list/contained_mobs = list() + for(var/mob/living/issamob in src.contents) + if(isliving(issamob)) + contained_mobs |= issamob + + if(usr.loc == src) + var/choice = tgui_alert(usr,"What would you like to do?","[src]",list("Exit", "Move", "Cancel")) + switch(choice) + if("Exit") + usr.forceMove(get_turf(src.loc)) + usr.visible_message("\The [usr] climbs out of \the [src]!") + return + + if("Move") + var/list/destinations = list() + var/turf/myturf = get_turf(src.loc) + for(var/obj/o in range(1,myturf)) + if(!istype(o,/obj)) + continue + if(o == src) + continue + if(o.micro_target) + destinations |= o + + if(!destinations.len) + to_chat(usr, "There is nowhere to move to!") + return + else if(destinations.len == 1) + choice = pick(destinations) + else + choice = tgui_input_list(usr, "Where would you like to go?", "Pick a destination", destinations) + if(!choice) + return + to_chat(usr,"You begin moving...") + if(!do_after(usr, 10 SECONDS, exclusive = TRUE)) + return + var/obj/our_choice = choice + + var/list/new_contained_mobs = list() + for(var/mob/living/issamob in src.contents) + if(isliving(issamob)) + contained_mobs |= issamob + + usr.forceMove(our_choice) + + to_chat(usr,"You are inside of \the [our_choice]. You can click upon the thing you are in to exit, or travel to a nearby thing if there are other tunnels linked to it.") + + var/our_message = "You can see " + var/found_stuff = FALSE + for(var/thing in new_contained_mobs) + if(thing == usr) + continue + found_stuff = TRUE + our_message = "[our_message] [thing], " + if(isliving(thing)) + var/mob/living/t = thing + to_chat(t, "\The [usr] enters \the [src]!") + if(found_stuff) + to_chat(usr, "[our_message]inside of \the [src]!") + if(prob(25)) + our_choice.visible_message("Something moves inside of \the [src]. . .") + return + if("Cancel") + return + + if(!(usr.mob_size <= MOB_TINY || usr.get_effective_size(TRUE) <= micro_accepted_scale)) + usr.visible_message("\The [usr] reaches into \the [src]. . .","You reach into \the [src]. . .") + if(!do_after(usr, 3 SECONDS, exclusive = TRUE)) + usr.visible_message("\The [usr] pulls their hand out of \the [src].","You pull your hand out of \the [src]") + return + + if(!contained_mobs.len) + to_chat(usr, "There was nothing inside.") + usr.visible_message("\The [usr] pulls their hand out of \the [src].","You pull your hand out of \the [src]") + return + var/grabbed = pick(contained_mobs) + if(!grabbed) + to_chat(usr, "There was nothing inside.") + usr.visible_message("\The [usr] pulls their hand out of \the [src].","You pull your hand out of \the [src]") + return + + if(ishuman(usr)) + var/mob/living/carbon/human/h = usr + var/mob/living/l = grabbed + if(isliving(grabbed)) + l.attempt_to_scoop(h) + else + var/atom/movable/whatever = grabbed + whatever.forceMove(get_turf(src.loc)) + + usr.visible_message("\The [usr] pulls \the [grabbed] out of \the [src]! ! !") + return + + else if(isanimal(usr)) + var/mob/living/simple_mob/a = usr + var/mob/living/l = grabbed + if(!a.has_hands || isliving(grabbed)) + l.attempt_to_scoop(usr) + else + var/atom/movable/whatever = grabbed + whatever.forceMove(get_turf(src.loc)) + usr.visible_message("\The [usr] pulls \the [grabbed] out of \the [src]! ! !") + return + + if(tgui_alert(usr,"Do you want to go into \the [src]?","Enter [src]",list("Yes", "No")) != "Yes") + return + usr.visible_message("\The [usr] begins climbing into \the [src]!") + if(!do_after(usr, 10 SECONDS, exclusive = TRUE)) + to_chat(usr, "You didn't go into \the [src]!") + return + + usr.visible_message("\The [usr] climbs into \the [src]!") + usr.forceMove(src) + to_chat(usr,"You are inside of \the [src]. You can click upon the tunnel to exit, or travel to another tunnel if there are other tunnels linked to it.") + + var/our_message = "You can see " + var/found_stuff = FALSE + for(var/thing in contained_mobs) + if(thing == usr) + continue + found_stuff = TRUE + our_message = "[our_message] [thing], " + if(isliving(thing)) + var/mob/living/t = thing + to_chat(t, "\The [usr] enters \the [src]!") + if(found_stuff) + to_chat(usr, "[our_message]inside of \the [src]!") + if(prob(25)) + visible_message("Something moves inside of \the [src]. . .") From 6877c539d32f9576f14fc281070adee9da4f8936 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 30 Aug 2022 02:32:18 -0400 Subject: [PATCH 12/37] Adds mouse hole spawners to the maps, and fixes a couple issues --- code/game/objects/micro_structures.dm | 27 +++- maps/groundbase/gb-z1.dmm | 67 +++++++-- maps/groundbase/gb-z2.dmm | 90 ++++++++++-- maps/groundbase/gb-z3.dmm | 24 ++- maps/stellar_delight/stellar_delight1.dmm | 115 ++++++++++++++- maps/stellar_delight/stellar_delight2.dmm | 67 ++++++++- maps/stellar_delight/stellar_delight3.dmm | 40 ++++- maps/tether/tether-01-surface1.dmm | 171 ++++++++++++++++++++-- maps/tether/tether-02-surface2.dmm | 134 +++++++++++++++-- maps/tether/tether-03-surface3.dmm | 138 +++++++++++++++-- maps/tether/tether-04-transit.dmm | 25 +++- maps/tether/tether-05-station1.dmm | 57 +++++++- 12 files changed, 870 insertions(+), 85 deletions(-) diff --git a/code/game/objects/micro_structures.dm b/code/game/objects/micro_structures.dm index 203f12137c..400c5210e6 100644 --- a/code/game/objects/micro_structures.dm +++ b/code/game/objects/micro_structures.dm @@ -24,6 +24,7 @@ for(var/mob/thing in src.contents) visible_message("\The [thing] tumbles out!") thing.forceMove(get_turf(src.loc)) + thing.cancel_camera() return ..() @@ -54,6 +55,7 @@ switch(choice) if("Exit") user.forceMove(get_turf(src.loc)) + user.cancel_camera() user.visible_message("\The [user] climbs out of \the [src]!") return if("Move") @@ -100,6 +102,7 @@ if(!do_after(user, 10 SECONDS, exclusive = TRUE)) return user.forceMove(choice) + user.cancel_camera() var/obj/structure/micro_tunnel/da_oddawun = choice da_oddawun.tunnel_notify(user) return @@ -183,10 +186,12 @@ /obj/structure/micro_tunnel/proc/enter_tunnel(mob/living/k) k.visible_message("\The [k] climbs into \the [src]!") k.forceMove(src) + k.cancel_camera() to_chat(k,"You are inside of \the [src]. It's dark and gloomy inside of here. You can click upon the tunnel to exit, or travel to another tunnel if there are other tunnels linked to it.") tunnel_notify(k) /obj/structure/micro_tunnel/proc/tunnel_notify(var/mob/living/user) + to_chat(user, "You arrive inside \the [src].") var/our_message = "You can see " var/found_stuff = FALSE for(var/thing in src.contents) @@ -233,6 +238,7 @@ switch(choice) if("Exit") usr.forceMove(get_turf(src.loc)) + usr.cancel_camera() usr.visible_message("\The [usr] climbs out of \the [src]!") return @@ -267,6 +273,7 @@ contained_mobs |= issamob usr.forceMove(our_choice) + usr.cancel_camera() to_chat(usr,"You are inside of \the [our_choice]. You can click upon the thing you are in to exit, or travel to a nearby thing if there are other tunnels linked to it.") @@ -283,7 +290,7 @@ if(found_stuff) to_chat(usr, "[our_message]inside of \the [src]!") if(prob(25)) - our_choice.visible_message("Something moves inside of \the [src]. . .") + our_choice.visible_message("Something moves inside of \the [our_choice]. . .") return if("Cancel") return @@ -336,6 +343,7 @@ usr.visible_message("\The [usr] climbs into \the [src]!") usr.forceMove(src) + usr.cancel_camera() to_chat(usr,"You are inside of \the [src]. You can click upon the tunnel to exit, or travel to another tunnel if there are other tunnels linked to it.") var/our_message = "You can see " @@ -352,3 +360,20 @@ to_chat(usr, "[our_message]inside of \the [src]!") if(prob(25)) visible_message("Something moves inside of \the [src]. . .") + +/obj/effect/mouse_hole_spawner + name = "mouse hole spawner" + icon = 'icons/obj/landmark_vr.dmi' + icon_state = "blue-x" + invisibility = 101 + + var/chance_to_spawn = 25 + +/obj/effect/mouse_hole_spawner/Initialize() + . = ..() + + if(prob(chance_to_spawn)) + var/obj/structure/micro_tunnel/tunnel = new (get_turf(src.loc)) + tunnel.set_dir(dir) + + qdel(src) diff --git a/maps/groundbase/gb-z1.dmm b/maps/groundbase/gb-z1.dmm index aa57161208..5e6641117c 100644 --- a/maps/groundbase/gb-z1.dmm +++ b/maps/groundbase/gb-z1.dmm @@ -5677,7 +5677,6 @@ id = "engine_public_access"; name = "Public Access Shutters"; pixel_x = -25; - pixel_y = 0; req_access = list(10) }, /turf/simulated/floor/tiled, @@ -5851,6 +5850,12 @@ outdoors = 0 }, /area/maintenance/groundbase/level1/nwtunnel) +"mQ" = ( +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level1/southeastspur) "mR" = ( /obj/structure/bed/chair/comfy/orange{ dir = 4 @@ -10069,6 +10074,12 @@ }, /turf/simulated/floor/tiled, /area/groundbase/civilian/foodplace) +"xk" = ( +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level1/southwestspur) "xm" = ( /obj/effect/floor_decal/industrial/danger, /obj/machinery/atmospherics/pipe/simple/hidden/black, @@ -10305,6 +10316,12 @@ }, /turf/simulated/floor, /area/prison/cell_block/gb) +"xL" = ( +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level1/eastspur) "xM" = ( /obj/machinery/firealarm, /turf/simulated/floor/tiled/dark, @@ -14284,6 +14301,12 @@ }, /turf/simulated/floor/outdoors/sidewalk/slab/virgo3c, /area/groundbase/level1/westspur) +"HQ" = ( +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level1/centsquare) "HR" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -16583,6 +16606,12 @@ }, /turf/simulated/floor/tiled, /area/groundbase/engineering/atmos) +"Nu" = ( +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level1/westspur) "Nv" = ( /turf/simulated/floor/outdoors/grass/forest/virgo3c, /area/groundbase/level1/centsquare) @@ -16730,6 +16759,10 @@ }, /turf/simulated/floor/outdoors/sidewalk/side/virgo3c, /area/groundbase/level1/northspur) +"NM" = ( +/obj/effect/mouse_hole_spawner, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level1/westspur) "NN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -16993,6 +17026,12 @@ /obj/machinery/recharge_station, /turf/simulated/floor/tiled/techfloor/grid, /area/groundbase/command/ai/robot) +"Ov" = ( +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level1/southeastspur) "Ow" = ( /obj/structure/railing/grey{ dir = 1 @@ -19652,6 +19691,14 @@ }, /turf/simulated/floor/carpet/sblucarpet, /area/groundbase/security/hos) +"Vp" = ( +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor/outdoors/newdirt_nograss/virgo3c{ + outdoors = 0 + }, +/area/maintenance/groundbase/level1/nwtunnel) "Vq" = ( /turf/simulated/floor/outdoors/newdirt/virgo3c, /area/groundbase/level1/southwestspur) @@ -26619,7 +26666,7 @@ cB cB cB cB -cB +Nu AZ cv px @@ -28492,7 +28539,7 @@ EZ mh Iw Tf -vM +xk Wm vM vM @@ -28563,7 +28610,7 @@ MO MO MO MO -FF +Vp FF MO FF @@ -29172,7 +29219,7 @@ mk cB cB cB -cB +NM gv Az Kh @@ -30008,7 +30055,7 @@ Eb Eb Eb Eb -Eb +HQ Eb Eb Eb @@ -33544,7 +33591,7 @@ qE qE qE Eb -Eb +HQ Eb Eb Eb @@ -35162,7 +35209,7 @@ Uf Uf Uf Uf -ck +Ov ck TW ck @@ -36231,7 +36278,7 @@ Ah Ah Ah MK -MK +xL sF MK MK @@ -36582,7 +36629,7 @@ Uf Uf Uf Uf -ck +mQ ck Ac ck diff --git a/maps/groundbase/gb-z2.dmm b/maps/groundbase/gb-z2.dmm index e8a8f8356f..7b7da1e69e 100644 --- a/maps/groundbase/gb-z2.dmm +++ b/maps/groundbase/gb-z2.dmm @@ -3244,6 +3244,10 @@ /obj/structure/bed/double/padded, /turf/simulated/floor/wood, /area/groundbase/dorms/room8) +"jd" = ( +/obj/effect/mouse_hole_spawner, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level2/se) "je" = ( /turf/unsimulated/wall/planetary/virgo3c, /area/groundbase/level2/se) @@ -7808,6 +7812,12 @@ }, /turf/simulated/floor/tiled/dark, /area/groundbase/civilian/chapel) +"wD" = ( +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level2/nw) "wE" = ( /obj/structure/table/woodentable, /obj/machinery/camera/network/civilian, @@ -9743,6 +9753,12 @@ /obj/effect/landmark/start/chaplain, /turf/simulated/floor/lino, /area/groundbase/civilian/chapel/office) +"Co" = ( +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level2/se) "Cq" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -10657,6 +10673,12 @@ /obj/machinery/alarm, /turf/simulated/floor/wood, /area/groundbase/dorms/room4) +"EP" = ( +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level2/ne) "EQ" = ( /obj/structure/filingcabinet, /obj/machinery/atmospherics/unary/vent_pump/on, @@ -11409,6 +11431,12 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/tiled/white, /area/groundbase/medical/triage) +"GY" = ( +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level2/nw) "GZ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -12469,6 +12497,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/dark, /area/groundbase/dorms) +"JS" = ( +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level2/ne) "JT" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -13592,6 +13626,14 @@ edge_blending_priority = -1 }, /area/groundbase/level2/ne) +"MU" = ( +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/tiled/virgo3c{ + edge_blending_priority = -1 + }, +/area/groundbase/level2/se) "MV" = ( /obj/machinery/alarm{ dir = 8 @@ -14253,6 +14295,10 @@ }, /turf/simulated/floor/tiled, /area/groundbase/science/xenobot) +"OM" = ( +/obj/effect/mouse_hole_spawner, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level2/ne) "ON" = ( /turf/unsimulated/wall/planetary/virgo3c, /area/groundbase/level2/sw) @@ -15015,6 +15061,12 @@ outdoors = 0 }, /area/groundbase/level2/nw) +"QS" = ( +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level2/nw) "QV" = ( /obj/structure/bed/chair/office/dark{ dir = 1 @@ -17007,6 +17059,10 @@ }, /turf/simulated/floor/tiled, /area/groundbase/science/rnd) +"WC" = ( +/obj/effect/mouse_hole_spawner, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level2/sw) "WD" = ( /obj/machinery/light/small, /turf/simulated/floor/outdoors/grass/virgo3c, @@ -17784,6 +17840,12 @@ /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /turf/simulated/floor/tiled/white, /area/medical/virology) +"Zf" = ( +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level2/se) "Zg" = ( /obj/machinery/light/bigfloorlamp, /turf/simulated/floor/outdoors/grass/virgo3c, @@ -20982,7 +21044,7 @@ qr Vb zb Do -bY +GY bY bY sN @@ -21693,7 +21755,7 @@ bY bY bY bY -bY +wD bY Hn Ja @@ -23584,7 +23646,7 @@ jG jG RL jG -jG +WC Rh mZ kZ @@ -23939,7 +24001,7 @@ Ip IQ gR rP -bY +GY fI bY FF @@ -24247,7 +24309,7 @@ bY sZ bY bY -bY +QS bY pw pw @@ -24826,7 +24888,7 @@ lM bY Oa lM -bY +wD Aq bY bY @@ -29319,7 +29381,7 @@ ks to to to -to +OM Cz EQ ZD @@ -30046,7 +30108,7 @@ Eq xP HJ Wj -to +JS to to to @@ -30479,7 +30541,7 @@ to NC to to -to +OM sW sW sW @@ -30815,7 +30877,7 @@ sx rK CK kU -kU +MU kU kU Bo @@ -32055,7 +32117,7 @@ Nw KA Nw to -to +EP to to to @@ -32503,7 +32565,7 @@ UE Bo cV Bo -Bo +jd ia Hc TX @@ -33227,7 +33289,7 @@ SE gE hA an -Bo +Zf Bo Bo fk @@ -35330,7 +35392,7 @@ Bo Bo Bo Bo -Bo +Co Bo Bo fk diff --git a/maps/groundbase/gb-z3.dmm b/maps/groundbase/gb-z3.dmm index 508002d17d..43ec24f24c 100644 --- a/maps/groundbase/gb-z3.dmm +++ b/maps/groundbase/gb-z3.dmm @@ -443,6 +443,12 @@ }, /turf/simulated/floor/wood, /area/groundbase/medical/cmo) +"hb" = ( +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level3/nw) "hl" = ( /turf/simulated/wall, /area/groundbase/level3/escapepad) @@ -855,6 +861,10 @@ /obj/effect/landmark/start/explorer, /turf/simulated/floor/tiled, /area/groundbase/exploration/equipment) +"nR" = ( +/obj/effect/mouse_hole_spawner, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level3/nw) "nU" = ( /obj/effect/floor_decal/industrial/warning{ dir = 10 @@ -1115,6 +1125,12 @@ outdoors = 0 }, /area/groundbase/level3/escapepad) +"rh" = ( +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor/outdoors/grass/virgo3c, +/area/groundbase/level3/nw) "ro" = ( /obj/structure/bed/padded, /obj/item/weapon/bedsheet/medical, @@ -5898,7 +5914,7 @@ Xv Xv Xv qO -qO +nR fz dI dR @@ -5906,7 +5922,7 @@ xO Nf TH fz -qO +rh qO qO qO @@ -6474,7 +6490,7 @@ MF qO Qa Qa -qO +nR hl Rk ow @@ -6606,7 +6622,7 @@ qO qO qO qO -qO +hb qO qO qO diff --git a/maps/stellar_delight/stellar_delight1.dmm b/maps/stellar_delight/stellar_delight1.dmm index a28f469a73..35162cf239 100644 --- a/maps/stellar_delight/stellar_delight1.dmm +++ b/maps/stellar_delight/stellar_delight1.dmm @@ -892,6 +892,18 @@ }, /turf/simulated/floor/tiled/eris, /area/stellardelight/deck1/researchhall) +"bO" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/stellardelight/deck1/port) "bP" = ( /obj/machinery/light{ dir = 4 @@ -1812,6 +1824,9 @@ dir = 1; icon_state = "pipe-c" }, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/aft) "dQ" = ( @@ -3384,6 +3399,12 @@ "hg" = ( /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/aft) +"hh" = ( +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor, +/area/maintenance/stellardelight/deck1/portcent) "hi" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 @@ -4612,6 +4633,9 @@ /obj/structure/cable/pink{ icon_state = "1-2" }, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, /turf/simulated/floor, /area/maintenance/stellardelight/deck1/starboardfore) "jx" = ( @@ -6066,6 +6090,9 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/aft) "mE" = ( @@ -6786,6 +6813,12 @@ /obj/structure/flora/pottedplant/stoutbush, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/port) +"og" = ( +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor, +/area/maintenance/security_port) "oh" = ( /obj/structure/cable/white{ icon_state = "4-8" @@ -11829,6 +11862,16 @@ }, /turf/simulated/floor/lino, /area/chapel/office) +"yW" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/milspec/color/emerald/half{ + dir = 4 + }, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/stellardelight/deck1/aft) "yX" = ( /obj/effect/shuttle_landmark/premade/sd/deck1/aft, /turf/space, @@ -12440,6 +12483,9 @@ color = "#42038a"; icon_state = "1-8" }, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, /turf/simulated/floor, /area/maintenance/stellardelight/deck1/exploration) "Ah" = ( @@ -13974,6 +14020,18 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/port) +"Dr" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/stellardelight/deck1/portaft) "Ds" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/angled_bay/standard/color{ @@ -15730,6 +15788,9 @@ /obj/structure/cable/green{ icon_state = "1-2" }, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/fore) "Hy" = ( @@ -16346,6 +16407,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, /turf/simulated/floor, /area/maintenance/stellardelight/deck1/starboardcent) "IH" = ( @@ -18083,6 +18147,18 @@ }, /turf/simulated/floor/tiled/techmaint, /area/stellardelight/deck1/fore) +"Mn" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/stellardelight/deck1/exploration) "Mq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -18159,6 +18235,12 @@ }, /turf/simulated/floor/tiled/dark, /area/security/security_cell_hallway) +"MC" = ( +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/stellardelight/deck1/starboard) "MD" = ( /obj/structure/cable/green{ icon_state = "2-4" @@ -21928,6 +22010,23 @@ }, /turf/simulated/floor, /area/maintenance/stellardelight/deck1/starboardcent) +"Uv" = ( +/obj/structure/cable/green{ + color = "#42038a"; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + color = "#42038a"; + icon_state = "1-4" + }, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor, +/area/maintenance/stellardelight/deck1/starboardaft) "Uw" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -31458,7 +31557,7 @@ pP qq UQ Tb -qq +Mn PL DQ XM @@ -31861,7 +31960,7 @@ RL Ib To bQ -To +Dr aO Ib To @@ -32554,7 +32653,7 @@ fc eC eE gY -gY +hh km QB zi @@ -32677,7 +32776,7 @@ Ii ks Te vx -wf +og Bf Yv yV @@ -33125,7 +33224,7 @@ Vw ug ob nS -Ov +bO zM GX Fv @@ -36111,7 +36210,7 @@ LE xx id yx -ei +MC ou Yt ei @@ -36136,7 +36235,7 @@ kv jg XJ DK -XJ +yW XJ Hp RA @@ -37254,7 +37353,7 @@ Dv Dv Dv Dv -Qz +Uv Dv lT Dv diff --git a/maps/stellar_delight/stellar_delight2.dmm b/maps/stellar_delight/stellar_delight2.dmm index 6b6601dda9..962811c351 100644 --- a/maps/stellar_delight/stellar_delight2.dmm +++ b/maps/stellar_delight/stellar_delight2.dmm @@ -7899,6 +7899,9 @@ /area/stellardelight/deck2/central) "rl" = ( /obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/starboardfore) "rm" = ( @@ -8988,6 +8991,9 @@ /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 4 }, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/port) "tQ" = ( @@ -14184,6 +14190,18 @@ /obj/structure/medical_stand, /turf/simulated/floor/tiled/eris/white/bluecorner, /area/stellardelight/deck2/triage) +"FI" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/stellardelight/deck2/portaft) "FJ" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ @@ -15985,6 +16003,15 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/eris/steel/cargo, /area/quartermaster/storage) +"Jw" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor, +/area/maintenance/stellardelight/deck2/starboardsolars) "Jx" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'RADIOACTIVE AREA'"; @@ -21439,6 +21466,16 @@ }, /turf/simulated/floor/lino, /area/crew_quarters/bar) +"VD" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor, +/area/maintenance/stellardelight/deck2/portfore) "VE" = ( /obj/structure/cable/blue{ icon_state = "4-8" @@ -22019,6 +22056,15 @@ }, /turf/simulated/floor/tiled/steel_ridged, /area/stellardelight/deck2/fuelstorage) +"WV" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 8 + }, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/stellardelight/deck2/port) "WW" = ( /obj/machinery/power/apc/angled{ dir = 8 @@ -22292,6 +22338,15 @@ }, /turf/simulated/floor/tiled, /area/storage/art) +"XE" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 4 + }, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/stellardelight/deck2/starboard) "XF" = ( /obj/structure/table/reinforced, /obj/item/weapon/storage/firstaid/adv{ @@ -30418,7 +30473,7 @@ Gv Gv Gv Uv -Gv +VD yz KL WP @@ -30573,7 +30628,7 @@ Yh Yh Yh AP -Yh +FI Yh Yh uL @@ -30865,7 +30920,7 @@ zp eL fr vU -MD +WV MD fR IC @@ -35687,7 +35742,7 @@ aL zS Wy xh -Mk +XE Mk fs Tk @@ -35699,7 +35754,7 @@ LH Mk pm Mk -Mk +XE lv Aj LI @@ -35980,7 +36035,7 @@ Ie HS am Cc -aM +Jw aM FT pj diff --git a/maps/stellar_delight/stellar_delight3.dmm b/maps/stellar_delight/stellar_delight3.dmm index bef6e689e0..f642b23693 100644 --- a/maps/stellar_delight/stellar_delight3.dmm +++ b/maps/stellar_delight/stellar_delight3.dmm @@ -1580,6 +1580,9 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, /turf/simulated/open, /area/crew_quarters/bar) "gh" = ( @@ -2437,6 +2440,13 @@ }, /turf/simulated/floor/tiled/steel_ridged, /area/crew_quarters/heads/chief) +"jo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor, +/area/maintenance/stellardelight/deck3/starboardaft) "jp" = ( /obj/structure/closet, /obj/random/contraband, @@ -4853,6 +4863,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/open, /area/stellardelight/deck2/port) +"rW" = ( +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/stellardelight/deck3/portfore) "rX" = ( /obj/machinery/light{ dir = 1 @@ -5174,6 +5190,9 @@ /obj/structure/cable/blue{ icon_state = "1-4" }, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, /turf/simulated/floor, /area/maintenance/stellardelight/deck3/starboardfore) "tg" = ( @@ -10286,6 +10305,12 @@ }, /turf/simulated/floor, /area/maintenance/stellardelight/deck3/starboardfore) +"Lo" = ( +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor, +/area/maintenance/stellardelight/deck3/portaft) "Lr" = ( /obj/effect/shuttle_landmark/premade/sd/deck3/starboardairlock, /turf/space, @@ -11380,6 +11405,9 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, /turf/simulated/floor, /area/maintenance/stellardelight/deck3/starboardcent) "OI" = ( @@ -12212,6 +12240,9 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, /turf/simulated/floor, /area/maintenance/stellardelight/deck3/portcent) "RN" = ( @@ -13680,6 +13711,9 @@ icon_state = "1-2" }, /obj/effect/landmark/vermin, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, /turf/simulated/open, /area/crew_quarters/bar) "Xd" = ( @@ -21615,7 +21649,7 @@ pf Ns Ns Ns -Ns +rW Ns eF IP @@ -21654,7 +21688,7 @@ IN xi dE dE -dE +Lo dE Sw dE @@ -27049,7 +27083,7 @@ if if Ne iS -iS +jo Kz Dk qY diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm index 6d8e8206b1..4bc23b1cf7 100644 --- a/maps/tether/tether-01-surface1.dmm +++ b/maps/tether/tether-01-surface1.dmm @@ -3157,6 +3157,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/mouse_hole_spawner, /turf/simulated/floor/tiled, /area/tether/surfacebase/north_stairs_one) "afb" = ( @@ -7106,6 +7107,9 @@ /obj/machinery/camera/network/civilian{ dir = 1 }, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, /turf/simulated/floor/tiled, /area/tether/surfacebase/public_garden_one) "alN" = ( @@ -13057,6 +13061,9 @@ d2 = 4; icon_state = "1-4" }, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, /turf/simulated/floor/plating, /area/maintenance/lower/solars) "avL" = ( @@ -28493,6 +28500,9 @@ d2 = 2; icon_state = "1-2" }, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_lodging) "aWm" = ( @@ -31820,6 +31830,12 @@ }, /turf/simulated/floor/plating, /area/tether/surfacebase/funny/hideyhole) +"bXC" = ( +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/xenoflora) "bZC" = ( /turf/simulated/floor/looking_glass, /area/looking_glass/lg_1) @@ -32507,6 +32523,18 @@ /obj/item/weapon/soap/nanotrasen, /turf/simulated/floor/tiled/freezer, /area/tether/surfacebase/security/brig/bathroom) +"elf" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/brown/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/mouse_hole_spawner, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/lowernorthhall) "emK" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -32586,6 +32614,13 @@ }, /turf/simulated/floor, /area/tether/surfacebase/security/gasstorage) +"eyq" = ( +/obj/structure/catwalk, +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/xenoflora) "ezn" = ( /obj/machinery/power/apc{ dir = 1; @@ -33335,6 +33370,25 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/carpet/gaycarpet, /area/tether/surfacebase/funny/clownoffice) +"gHx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/rust, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/visible/supply{ + dir = 4 + }, +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "gIa" = ( /obj/structure/railing{ dir = 8 @@ -34102,6 +34156,11 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/security/lowerhall) +"izF" = ( +/obj/structure/flora/pottedplant/stoutbush, +/obj/effect/mouse_hole_spawner, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/tram) "iEk" = ( /obj/machinery/button/remote/blast_door{ dir = 8; @@ -34388,6 +34447,9 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) "jDI" = ( @@ -35062,6 +35124,14 @@ }, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/brig) +"lma" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/research) "loc" = ( /obj/structure/catwalk, /obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{ @@ -36528,6 +36598,13 @@ }, /turf/simulated/floor/tiled/freezer, /area/tether/surfacebase/security/brig/bathroom) +"oDt" = ( +/obj/structure/flora/pottedplant/stoutbush, +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/tram) "oId" = ( /obj/structure/closet{ desc = "Dents and old flaky paint blanket this old storage unit."; @@ -36769,6 +36846,22 @@ "pCj" = ( /turf/simulated/wall/r_wall, /area/tether/surfacebase/security/brig) +"pDY" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) "pFF" = ( /obj/structure/catwalk, /obj/structure/cable/green{ @@ -38392,6 +38485,24 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/crew_quarters/visitor_laundry) +"uku" = ( +/obj/effect/floor_decal/corner/lightgrey{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lightgrey{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor/shifted{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lightgrey/border/shifted{ + dir = 1 + }, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/surface_one_hall) "ulr" = ( /obj/effect/map_helper/airlock/door/int_door, /obj/machinery/access_button/airlock_interior{ @@ -39096,6 +39207,24 @@ }, /turf/simulated/floor/plating, /area/maintenance/lower/mining_eva) +"wDf" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/surface_one_hall) "wOK" = ( /obj/effect/floor_decal/rust, /obj/machinery/light/small{ @@ -39436,6 +39565,26 @@ /obj/machinery/light/small, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/brig/storage) +"xJs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor/tiled/steel_dirty, +/area/maintenance/lower/atmos) "xOH" = ( /obj/effect/floor_decal/spline/plain{ dir = 8 @@ -47215,7 +47364,7 @@ aah aah aah ahl -ahL +pDY anP adu ahl @@ -47962,7 +48111,7 @@ awn awn aBP aCw -aLv +lma aCY aCZ aLv @@ -49073,7 +49222,7 @@ aru aoH bcd apu -aqb +eyq ate apu bcd @@ -49797,7 +49946,7 @@ ayH azN agM agM -aAw +gHx aBO aah aah @@ -50782,7 +50931,7 @@ apu ahc agM bcp -atL +bXC atL atL atj @@ -52030,7 +52179,7 @@ adP aao cPX afO -aBB +elf aCr dYd aEh @@ -52959,7 +53108,7 @@ aUW aWf aWE aUb -aXr +xJs aXJ aYe aYe @@ -53326,7 +53475,7 @@ anZ aol aoT apE -aqh +wDf aqL doa aqL @@ -53355,7 +53504,7 @@ aCJ aCJ agM yaA -vrS +uku ayG qBb aJR @@ -55465,7 +55614,7 @@ aah aah aah atx -atW +oDt auA auS avA @@ -56197,7 +56346,7 @@ lsh wek pvL hOH -atW +izF atx aad aad diff --git a/maps/tether/tether-02-surface2.dmm b/maps/tether/tether-02-surface2.dmm index d5e6270bc0..ba2ee59cda 100644 --- a/maps/tether/tether-02-surface2.dmm +++ b/maps/tether/tether-02-surface2.dmm @@ -16387,6 +16387,9 @@ dir = 1 }, /obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_two_hall) "aBJ" = ( @@ -23644,6 +23647,9 @@ dir = 4 }, /obj/effect/floor_decal/rust, +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, /turf/simulated/floor/plating, /area/maintenance/lower/public_garden_maintenence/upper) "aPw" = ( @@ -33136,6 +33142,15 @@ }, /turf/simulated/floor/plating, /area/tether/surfacebase/funny/hideyhole) +"ftF" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/surface_two_hall) "fxr" = ( /obj/machinery/light{ dir = 8 @@ -33172,6 +33187,19 @@ }, /turf/simulated/floor/plating, /area/tether/surfacebase/fish_farm) +"fYb" = ( +/obj/structure/catwalk, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/mining) "gaR" = ( /obj/item/device/radio/intercom/locked/ai_private{ dir = 4; @@ -33391,6 +33419,12 @@ }, /turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload) +"idw" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/yellow/border, +/obj/effect/mouse_hole_spawner, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/surface_two_hall) "ilH" = ( /obj/structure/table/standard, /obj/item/weapon/aiModule/reset, @@ -34032,6 +34066,12 @@ /obj/effect/floor_decal/techfloor, /turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload) +"nOG" = ( +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/fish_farm) "nPO" = ( /obj/effect/floor_decal/corner/paleblue/diagonal, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -34194,6 +34234,15 @@ }, /turf/simulated/floor/bluegrid, /area/ai_upload) +"pXo" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/surface_two_hall) "pYH" = ( /obj/effect/floor_decal/techfloor/corner, /turf/simulated/floor/tiled/techfloor/grid, @@ -34202,6 +34251,12 @@ /obj/machinery/porta_turret, /turf/simulated/floor/tiled/techfloor/grid, /area/ai_upload) +"qbq" = ( +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/asmaint2) "qia" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -34545,6 +34600,20 @@ }, /turf/simulated/floor/water/indoors, /area/tether/surfacebase/fish_farm) +"sLA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor/grid, +/area/maintenance/readingrooms) "sLP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -34660,6 +34729,18 @@ /obj/effect/floor_decal/corner_techfloor_grid, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) +"tuZ" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/floor_decal/corner_techfloor_grid{ + dir = 6 + }, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/south) "tyG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -34708,6 +34789,21 @@ }, /turf/simulated/floor/tiled/techfloor, /area/ai_upload) +"tMW" = ( +/obj/structure/catwalk, +/obj/machinery/atmospherics/pipe/simple/visible/scrubbers, +/obj/machinery/atmospherics/pipe/simple/visible/supply, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) "tPB" = ( /turf/simulated/floor/grass, /area/chapel/main) @@ -34924,6 +35020,13 @@ }, /turf/simulated/floor/tiled/dark, /area/chapel/main) +"vok" = ( +/obj/structure/catwalk, +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/south) "voE" = ( /obj/effect/floor_decal/corner_techfloor_grid, /obj/effect/floor_decal/corner_techfloor_grid{ @@ -35118,6 +35221,13 @@ }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/breakroom) +"xem" = ( +/obj/structure/catwalk, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/atmos) "xfa" = ( /obj/structure/cable/cyan{ d1 = 4; @@ -41110,7 +41220,7 @@ aBB aCm aDj aDV -aCm +nOG aBB aOM aJf @@ -43978,7 +44088,7 @@ aTA aUo aPJ aQw -aQw +qbq aXv aYd aYD @@ -44711,7 +44821,7 @@ baA baW bbf aJX -baW +xem aIn aJZ baX @@ -45986,7 +46096,7 @@ baW baW baW baW -baW +xem baW beT baz @@ -46225,7 +46335,7 @@ ayF aEK ayF aFZ -ayF +ftF aAh aHp aHK @@ -47798,7 +47908,7 @@ aAG aKw aLj aLO -aMv +idw aNj aNR aOH @@ -49335,7 +49445,7 @@ avI awk avD axG -ayl +pXo ayO azh azR @@ -49389,7 +49499,7 @@ aLY aLY aLY aLY -aLX +vok bdQ bdb aIo @@ -49756,7 +49866,7 @@ aiK aiK aiK aiK -auX +fYb asV atY anW @@ -50093,7 +50203,7 @@ aSo aSo bdu aSo -aSo +tMW aSo aSo bbR @@ -50246,7 +50356,7 @@ bIG bde bdE csF -cMd +sLA jWK cMd gus @@ -50790,7 +50900,7 @@ aRc aRH aSp aTp -aSp +tuZ aSp aSp aWy diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm index a9270e4a07..64188595cf 100644 --- a/maps/tether/tether-03-surface3.dmm +++ b/maps/tether/tether-03-surface3.dmm @@ -29491,6 +29491,9 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, /turf/simulated/floor/tiled/techfloor, /area/vacant/vacant_shop) "aYf" = ( @@ -37522,6 +37525,9 @@ /obj/effect/floor_decal/techfloor/corner{ dir = 4 }, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, /turf/simulated/floor/tiled/techfloor/grid, /area/maintenance/lower/medsec_maintenance) "boe" = ( @@ -37842,6 +37848,24 @@ "bzK" = ( /turf/simulated/floor/tiled, /area/tether/surfacebase/security/processing) +"bCV" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/surface_three_hall) "bEd" = ( /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -38461,6 +38485,22 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/shuttle_pad) +"dDI" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/surface_three_hall) "dDQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -38632,6 +38672,12 @@ }, /turf/simulated/floor/tiled/dark, /area/tether/surfacebase/security/iaa/officeb) +"eiR" = ( +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/southhall) "ely" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -40369,6 +40415,22 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/third_south) +"knW" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/surface_three_hall) "kqo" = ( /turf/simulated/wall, /area/tether/surfacebase/security/iaa/officea) @@ -40974,6 +41036,21 @@ }, /turf/simulated/floor/carpet/blue, /area/tether/surfacebase/security/breakroom) +"mmk" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mouse_hole_spawner, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/surface_three_hall) "mwz" = ( /obj/effect/floor_decal/corner/red{ dir = 9 @@ -42279,6 +42356,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/grass, /area/hydroponics) +"qGC" = ( +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/surfacebase/shuttle_pad) "qGK" = ( /obj/structure/table/reinforced, /obj/item/device/radio{ @@ -42330,6 +42413,16 @@ /obj/machinery/portable_atmospherics/hydroponics, /turf/simulated/floor/grass, /area/hydroponics) +"qQF" = ( +/obj/machinery/alarm{ + pixel_y = 28 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/southhall) "qQZ" = ( /obj/effect/floor_decal/techfloor, /obj/machinery/firealarm{ @@ -42943,6 +43036,12 @@ }, /turf/simulated/floor/tiled/white, /area/crew_quarters/barrestroom) +"sUZ" = ( +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/barbackmaintenance) "sVC" = ( /obj/machinery/door/firedoor/glass/hidden/shuttle, /obj/machinery/door/blast/shuttle/open{ @@ -44193,6 +44292,27 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) +"xna" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ + dir = 1 + }, +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/surface_three_hall) "xog" = ( /obj/structure/bed/chair/office/dark, /obj/effect/landmark/start{ @@ -50842,7 +50962,7 @@ eCg agw agw agw -air +knW aWF akn akS @@ -54266,7 +54386,7 @@ aoX aqJ aoX aoX -aix +dDI avG apX alP @@ -55262,7 +55382,7 @@ agw arF aix ajR -apX +mmk agw ats atH @@ -55818,7 +55938,7 @@ aWV ali ali ali -ali +bCV ali uiW ali @@ -57289,7 +57409,7 @@ aKg aKg aKe aOc -aKe +qGC aKg aKg aLA @@ -57303,7 +57423,7 @@ bhm fsd qbo ome -beU +eiR gRG laB beU @@ -58932,7 +59052,7 @@ asA aNy aNI aSb -agp +xna keg ycf ail @@ -59265,7 +59385,7 @@ beh ayM aya bcd -bcd +sUZ ayE bfP aAl @@ -59860,7 +59980,7 @@ aac aac aac aPs -bhv +qQF bhA bhC pSu diff --git a/maps/tether/tether-04-transit.dmm b/maps/tether/tether-04-transit.dmm index 02b5d5e84d..c4de68c11e 100644 --- a/maps/tether/tether-04-transit.dmm +++ b/maps/tether/tether-04-transit.dmm @@ -97,6 +97,15 @@ /obj/machinery/camera/network/civilian, /turf/simulated/floor/midpoint_glass/reinf, /area/tether/midpoint) +"hW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/tether/midpoint) "it" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/firedoor/glass/hidden{ @@ -151,6 +160,10 @@ "kz" = ( /turf/space/v3b_midpoint, /area/tether/transit) +"lG" = ( +/obj/effect/mouse_hole_spawner, +/turf/simulated/floor/wood, +/area/tether/midpoint) "lL" = ( /obj/effect/blocker, /turf/space/v3b_midpoint, @@ -253,6 +266,12 @@ /obj/machinery/media/jukebox, /turf/simulated/floor/tiled/monotile, /area/tether/midpoint) +"rW" = ( +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/tether/midpoint) "sw" = ( /obj/effect/floor_decal/corner/lightgrey{ dir = 10 @@ -9076,7 +9095,7 @@ pK pK Pz Wc -pK +rW pK Wc Pz @@ -9923,7 +9942,7 @@ mT mT pK pK -pK +lG Dz Qv Hs @@ -10502,7 +10521,7 @@ Hs Hs Dz PF -Or +hW pK pK mT diff --git a/maps/tether/tether-05-station1.dmm b/maps/tether/tether-05-station1.dmm index 2396932f10..c590dc0265 100644 --- a/maps/tether/tether-05-station1.dmm +++ b/maps/tether/tether-05-station1.dmm @@ -16579,6 +16579,12 @@ }, /turf/simulated/floor/plating, /area/quartermaster/delivery) +"cCM" = ( +/obj/effect/mouse_hole_spawner{ + dir = 8 + }, +/turf/simulated/floor, +/area/maintenance/station/exploration) "cDf" = ( /obj/machinery/atmospherics/portables_connector/aux{ dir = 1 @@ -17358,6 +17364,9 @@ dir = 10 }, /obj/structure/disposalpipe/segment, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/tether/station/dock_one) "doi" = ( @@ -21645,6 +21654,18 @@ }, /turf/simulated/floor/tiled/steel, /area/shuttle/excursion/general) +"hFL" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/mouse_hole_spawner, +/turf/simulated/floor/tiled, +/area/tether/station/dock_two) "hFV" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 10 @@ -25530,6 +25551,25 @@ }, /turf/simulated/floor/tiled, /area/tether/exploration/crew) +"lcy" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 9 + }, +/obj/effect/mouse_hole_spawner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/station/atrium) "lfI" = ( /obj/machinery/access_button{ command = "cycle_interior"; @@ -26902,6 +26942,12 @@ fancy_shuttle_tag = "explo" }, /area/shuttle/excursion/cockpit) +"mmt" = ( +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, +/turf/simulated/floor, +/area/maintenance/station/exploration) "mmJ" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -27431,6 +27477,9 @@ "mKL" = ( /obj/structure/bed/chair/bar_stool, /obj/random/plushie, +/obj/effect/mouse_hole_spawner{ + dir = 1 + }, /turf/simulated/floor, /area/maintenance/station/eng_lower) "mKM" = ( @@ -47659,7 +47708,7 @@ jOH acn mnT vYJ -vYJ +lcy wRJ tRn lSs @@ -50075,7 +50124,7 @@ lIB lIB lIB xdE -pMf +mmt gGC etY aac @@ -50350,7 +50399,7 @@ etY hrw pMf pMf -pMf +cCM biX lUV xdE @@ -53498,7 +53547,7 @@ aaa fLT wMe kOK -klo +hFL fLT aaa aaa From 2b94ff7e1b4a28f270c5104f526893405f559a0a Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 30 Aug 2022 04:34:10 -0400 Subject: [PATCH 13/37] further fixes --- code/game/objects/micro_structures.dm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/code/game/objects/micro_structures.dm b/code/game/objects/micro_structures.dm index 400c5210e6..486f12f641 100644 --- a/code/game/objects/micro_structures.dm +++ b/code/game/objects/micro_structures.dm @@ -128,7 +128,8 @@ var/mob/living/carbon/human/h = user var/mob/living/l = grabbed if(isliving(grabbed)) - l.attempt_to_scoop(h) + if(!l.attempt_to_scoop(h)) + l.forceMove(get_turf(src.loc)) else var/atom/movable/whatever = grabbed whatever.forceMove(get_turf(src.loc)) @@ -140,7 +141,8 @@ var/mob/living/simple_mob/a = user var/mob/living/l = grabbed if(!a.has_hands || isliving(grabbed)) - l.attempt_to_scoop(user) + if(!l.attempt_to_scoop(a)) + l.forceMove(get_turf(src.loc)) else var/atom/movable/whatever = grabbed whatever.forceMove(get_turf(src.loc)) @@ -316,6 +318,8 @@ var/mob/living/l = grabbed if(isliving(grabbed)) l.attempt_to_scoop(h) + if(!l.attempt_to_scoop(h)) + l.forceMove(get_turf(src.loc)) else var/atom/movable/whatever = grabbed whatever.forceMove(get_turf(src.loc)) @@ -327,7 +331,8 @@ var/mob/living/simple_mob/a = usr var/mob/living/l = grabbed if(!a.has_hands || isliving(grabbed)) - l.attempt_to_scoop(usr) + if(!l.attempt_to_scoop(a)) + l.forceMove(get_turf(src.loc)) else var/atom/movable/whatever = grabbed whatever.forceMove(get_turf(src.loc)) From 2ba39f6d2f4be648dc75e64e25570f16cf03d1c0 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 30 Aug 2022 04:44:33 -0400 Subject: [PATCH 14/37] further poke --- code/game/objects/micro_structures.dm | 2 -- code/modules/vore/smoleworld/smoleworld_vr.dm | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/micro_structures.dm b/code/game/objects/micro_structures.dm index 486f12f641..eaedc45645 100644 --- a/code/game/objects/micro_structures.dm +++ b/code/game/objects/micro_structures.dm @@ -339,8 +339,6 @@ usr.visible_message("\The [usr] pulls \the [grabbed] out of \the [src]! ! !") return - if(tgui_alert(usr,"Do you want to go into \the [src]?","Enter [src]",list("Yes", "No")) != "Yes") - return usr.visible_message("\The [usr] begins climbing into \the [src]!") if(!do_after(usr, 10 SECONDS, exclusive = TRUE)) to_chat(usr, "You didn't go into \the [src]!") diff --git a/code/modules/vore/smoleworld/smoleworld_vr.dm b/code/modules/vore/smoleworld/smoleworld_vr.dm index ae44a9ab2b..0ea518d99a 100644 --- a/code/modules/vore/smoleworld/smoleworld_vr.dm +++ b/code/modules/vore/smoleworld/smoleworld_vr.dm @@ -194,8 +194,10 @@ density = TRUE anchored = TRUE color = "#ffffff" + micro_target = TRUE //Now micros can enter and navigate these things!!! var/health = 75 var/damage + //makes it so buildings can be dismaintaled or GodZilla style attacked /obj/structure/smolebuilding/attack_hand(mob/user) if(user.a_intent == I_DISARM) From a00163a241d59e2f9393908dc1c3cbbe7e302c3f Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 30 Aug 2022 06:26:52 -0400 Subject: [PATCH 15/37] /objs with people in them spit out the people before they Destroy() --- code/game/objects/objs.dm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index b9e462190a..cb90f1c642 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -23,6 +23,20 @@ /obj/Destroy() STOP_PROCESSING(SSobj, src) + + //VOREStation Add Start - I really am an idiot why did I make it this way + if(micro_target) + for(var/thing in src.contents) + if(!ismob(thing)) + continue + var/mob/m = thing + if(isbelly(src.loc)) + m.forceMove(src.loc) + else + m.forceMove(get_turf(src.loc)) + m.visible_message("span class = 'notice'>\The [m] tumbles out of \the [src]!") + //VOREStation Add End + return ..() /obj/Topic(href, href_list, var/datum/tgui_state/state = GLOB.tgui_default_state) From 1a0aadbde62c3111a51d35a146d3922fa81888bb Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 30 Aug 2022 06:32:01 -0400 Subject: [PATCH 16/37] I'm going to bed once this is done I promise --- code/game/objects/objs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index cb90f1c642..b9a0f53c7d 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -34,7 +34,7 @@ m.forceMove(src.loc) else m.forceMove(get_turf(src.loc)) - m.visible_message("span class = 'notice'>\The [m] tumbles out of \the [src]!") + m.visible_message("\The [m] tumbles out of \the [src]!") //VOREStation Add End return ..() From 6f8fc9ef7ec3370b62db361f9c0a20ddefcde9e1 Mon Sep 17 00:00:00 2001 From: ItsSelis Date: Tue, 30 Aug 2022 13:27:43 +0200 Subject: [PATCH 17/37] HTML Belly Export --- code/modules/vore/eating/exportpanel_vr.dm | 204 ++++++ code/modules/vore/eating/living_vr.dm | 110 +-- code/modules/vore/eating/vorepanel_vr.dm | 17 + tgui/packages/tgui/interfaces/VorePanel.js | 69 +- .../tgui/interfaces/VorePanelExport.tsx | 636 ++++++++++++++++++ tgui/public/tgui.bundle.js | 2 +- vorestation.dme | 1 + 7 files changed, 928 insertions(+), 111 deletions(-) create mode 100644 code/modules/vore/eating/exportpanel_vr.dm create mode 100644 tgui/packages/tgui/interfaces/VorePanelExport.tsx diff --git a/code/modules/vore/eating/exportpanel_vr.dm b/code/modules/vore/eating/exportpanel_vr.dm new file mode 100644 index 0000000000..a006573b46 --- /dev/null +++ b/code/modules/vore/eating/exportpanel_vr.dm @@ -0,0 +1,204 @@ +// +// Belly Export Panel +// + +/datum/vore_look/export_panel/proc/open_export_panel(mob/user) + tgui_interact(user) + +/datum/vore_look/export_panel/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "VorePanelExport", "Vore Export Panel") + ui.open() + ui.set_autoupdate(FALSE) + +/datum/vore_look/export_panel/tgui_fallback(payload) + if(..()) + return TRUE + + //var/mob/living/host = usr + //host.vorebelly_printout(TRUE) + +/datum/vore_look/export_panel/tgui_act(action, params) + if(..()) + return TRUE + +/datum/vore_look/export_panel/tgui_data(mob/user) + var/list/data = list() + var/mob/living/host = user + + data["db_version"] = "0.1" + data["db_repo"] = "chompstation" + data["mob_name"] = host.real_name + + for(var/belly in host.vore_organs) + if(isbelly(belly)) + var/obj/belly/B = belly + var/belly_data = list() + + // General Information + belly_data["name"] = B.name + belly_data["desc"] = B.desc + belly_data["absorbed_desc"] = B.absorbed_desc + belly_data["vore_verb"] = B.vore_verb + belly_data["release_verb"] = B.release_verb + + // Controls + belly_data["mode"] = B.digest_mode + var/list/addons = list() + for(var/flag_name in B.mode_flag_list) + if(B.mode_flags & B.mode_flag_list[flag_name]) + addons.Add(flag_name) + belly_data["addons"] = addons + belly_data["item_mode"] = B.item_digest_mode + + // Messages + belly_data["struggle_messages_outside"] = list() + for(var/msg in B.struggle_messages_outside) + belly_data["struggle_messages_outside"] += msg + + belly_data["struggle_messages_inside"] = list() + for(var/msg in B.struggle_messages_inside) + belly_data["struggle_messages_inside"] += msg + + belly_data["absorbed_struggle_messages_outside"] = list() + for(var/msg in B.absorbed_struggle_messages_outside) + belly_data["absorbed_struggle_messages_outside"] += msg + + belly_data["absorbed_struggle_messages_inside"] = list() + for(var/msg in B.absorbed_struggle_messages_inside) + belly_data["absorbed_struggle_messages_inside"] += msg + + belly_data["digest_messages_owner"] = list() + for(var/msg in B.digest_messages_owner) + belly_data["digest_messages_owner"] += msg + + belly_data["digest_messages_prey"] = list() + for(var/msg in B.digest_messages_prey) + belly_data["digest_messages_prey"] += msg + + belly_data["absorb_messages_owner"] = list() + for(var/msg in B.absorb_messages_owner) + belly_data["absorb_messages_owner"] += msg + + belly_data["absorb_messages_prey"] = list() + for(var/msg in B.absorb_messages_prey) + belly_data["absorb_messages_prey"] += msg + + belly_data["unabsorb_messages_owner"] = list() + for(var/msg in B.unabsorb_messages_owner) + belly_data["unabsorb_messages_owner"] += msg + + belly_data["unabsorb_messages_prey"] = list() + for(var/msg in B.unabsorb_messages_prey) + belly_data["unabsorb_messages_prey"] += msg + + belly_data["examine_messages"] = list() + for(var/msg in B.examine_messages) + belly_data["examine_messages"] += msg + + belly_data["examine_messages_absorbed"] = list() + for(var/msg in B.examine_messages_absorbed) + belly_data["examine_messages_absorbed"] += msg + + //belly_data["emote_list"] = list() + //for(var/EL in B.emote_lists) + // for(var/msg in B.emote_lists[EL]) + // msg_list += msg + // + // belly_data["emote_lists"] += list(EL, msg_list) + + // I will use this first before the code above gets fixed + belly_data["emotes_digest"] = list() + for(var/msg in B.emote_lists[DM_DIGEST]) + belly_data["emotes_digest"] += msg + + belly_data["emotes_hold"] = list() + for(var/msg in B.emote_lists[DM_HOLD]) + belly_data["emotes_hold"] += msg + + belly_data["emotes_holdabsorbed"] = list() + for(var/msg in B.emote_lists[DM_HOLD_ABSORBED]) + belly_data["emotes_holdabsorbed"] += msg + + belly_data["emotes_absorb"] = list() + for(var/msg in B.emote_lists[DM_ABSORB]) + belly_data["emotes_absorb"] += msg + + belly_data["emotes_heal"] = list() + for(var/msg in B.emote_lists[DM_HEAL]) + belly_data["emotes_heal"] += msg + + belly_data["emotes_drain"] = list() + for(var/msg in B.emote_lists[DM_DRAIN]) + belly_data["emotes_drain"] += msg + + belly_data["emotes_steal"] = list() + for(var/msg in B.emote_lists[DM_SIZE_STEAL]) + belly_data["emotes_steal"] += msg + + belly_data["emotes_egg"] = list() + for(var/msg in B.emote_lists[DM_EGG]) + belly_data["emotes_egg"] += msg + + belly_data["emotes_shrink"] = list() + for(var/msg in B.emote_lists[DM_SHRINK]) + belly_data["emotes_shrink"] += msg + + belly_data["emotes_grow"] = list() + for(var/msg in B.emote_lists[DM_GROW]) + belly_data["emotes_grow"] += msg + + belly_data["emotes_unabsorb"] = list() + for(var/msg in B.emote_lists[DM_UNABSORB]) + belly_data["emotes_unabsorb"] += msg + + // Options + belly_data["digest_brute"] = B.digest_brute + belly_data["digest_burn"] = B.digest_burn + belly_data["digest_oxy"] = B.digest_oxy + belly_data["digest_tox"] = B.digest_tox + belly_data["digest_clone"] = B.digest_clone + + belly_data["can_taste"] = B.can_taste + belly_data["contaminates"] = B.contaminates + belly_data["contamination_flavor"] = B.contamination_flavor + belly_data["contamination_color"] = B.contamination_color + belly_data["nutrition_percent"] = B.nutrition_percent + belly_data["bulge_size"] = B.bulge_size + belly_data["display_absorbed_examine"] = B.display_absorbed_examine + belly_data["save_digest_mode"] = B.save_digest_mode + belly_data["emote_active"] = B.emote_active + belly_data["emote_time"] = B.emote_time + belly_data["shrink_grow_size"] = B.shrink_grow_size + belly_data["egg_type"] = B.egg_type + belly_data["selective_preference"] = B.selective_preference + + // Sounds + belly_data["is_wet"] = B.is_wet + belly_data["wet_loop"] = B.wet_loop + belly_data["fancy_vore"] = B.fancy_vore + belly_data["vore_sound"] = B.vore_sound + belly_data["release_sound"] = B.release_sound + + // Visuals (Vore FX) + belly_data["disable_hud"] = B.disable_hud + + // Interactions + belly_data["escapable"] = B.escapable + + belly_data["escapechance"] = B.escapechance + belly_data["escapetime"] = B.escapetime + + belly_data["transferchance"] = B.transferchance + belly_data["transferlocation"] = B.transferlocation + + belly_data["transferchance_secondary"] = B.transferchance_secondary + belly_data["transferlocation_secondary"] = B.transferlocation_secondary + + belly_data["absorbchance"] = B.absorbchance + belly_data["digestchance"] = B.digestchance + + data["bellies"] += list(belly_data) + + return data diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 224f055f44..aa33b24922 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -1055,54 +1055,70 @@ set category = "Preferences" set desc = "Print out your vorebelly messages into chat for copypasting." - for(var/belly in vore_organs) - if(isbelly(belly)) - var/obj/belly/B = belly - to_chat(src, "Belly name: [B.name]") - to_chat(src, "Belly desc: [B.desc]") - to_chat(src, "Belly absorbed desc: [B.absorbed_desc]") - to_chat(src, "Vore verb: [B.vore_verb]") - to_chat(src, "Release verb: [B.release_verb]") - to_chat(src, "Struggle messages (outside):") - for(var/msg in B.struggle_messages_outside) - to_chat(src, "[msg]") - to_chat(src, "Struggle messages (inside):") - for(var/msg in B.struggle_messages_inside) - to_chat(src, "[msg]") - to_chat(src, "Absorbed struggle messages (outside):") - for(var/msg in B.absorbed_struggle_messages_outside) - to_chat(src, "[msg]") - to_chat(src, "Absorbed struggle messages (inside):") - for(var/msg in B.absorbed_struggle_messages_inside) - to_chat(src, "[msg]") - to_chat(src, "Digest messages (owner):") - for(var/msg in B.digest_messages_owner) - to_chat(src, "[msg]") - to_chat(src, "Digest messages (prey):") - for(var/msg in B.digest_messages_prey) - to_chat(src, "[msg]") - to_chat(src, "Absorb messages:") - for(var/msg in B.absorb_messages_owner) - to_chat(src, "[msg]") - to_chat(src, "Absorb messages (prey):") - for(var/msg in B.absorb_messages_prey) - to_chat(src, "[msg]") - to_chat(src, "Unabsorb messages:") - for(var/msg in B.unabsorb_messages_owner) - to_chat(src, "[msg]") - to_chat(src, "Unabsorb messages (prey):") - for(var/msg in B.unabsorb_messages_prey) - to_chat(src, "[msg]") - to_chat(src, "Examine messages:") - for(var/msg in B.examine_messages) - to_chat(src, "[msg]") - for(var/msg in B.examine_messages_absorbed) - to_chat(src, "[msg]") - to_chat(src, "Emote lists:") - for(var/EL in B.emote_lists) - to_chat(src, "[EL]:") - for(var/msg in B.emote_lists[EL]) + var/result = tgui_alert(src, "Would you rather open the export panel?", "Selected Belly Export", list("Open Panel", "Print to Chat")) + if(result == "Open Panel") + var/mob/living/user = usr + if(!user) + to_chat(usr,"Mob undefined: [user]") + return FALSE + + var/datum/vore_look/export_panel/exportPanel + if(!exportPanel) + exportPanel = new(usr) + + if(!exportPanel) + to_chat(user,"Export panel undefined: [exportPanel]") + return + + exportPanel.tgui_interact(user) + else + for(var/belly in vore_organs) + if(isbelly(belly)) + var/obj/belly/B = belly + to_chat(src, "Belly name: [B.name]") + to_chat(src, "Belly desc: [B.desc]") + to_chat(src, "Belly absorbed desc: [B.absorbed_desc]") + to_chat(src, "Vore verb: [B.vore_verb]") + to_chat(src, "Struggle messages (outside):") + for(var/msg in B.struggle_messages_outside) to_chat(src, "[msg]") + to_chat(src, "Struggle messages (inside):") + for(var/msg in B.struggle_messages_inside) + to_chat(src, "[msg]") + to_chat(src, "Absorbed struggle messages (outside):") + for(var/msg in B.absorbed_struggle_messages_outside) + to_chat(src, "[msg]") + to_chat(src, "Absorbed struggle messages (inside):") + for(var/msg in B.absorbed_struggle_messages_inside) + to_chat(src, "[msg]") + to_chat(src, "Digest messages (owner):") + for(var/msg in B.digest_messages_owner) + to_chat(src, "[msg]") + to_chat(src, "Digest messages (prey):") + for(var/msg in B.digest_messages_prey) + to_chat(src, "[msg]") + to_chat(src, "Absorb messages:") + for(var/msg in B.absorb_messages_owner) + to_chat(src, "[msg]") + to_chat(src, "Absorb messages (prey):") + for(var/msg in B.absorb_messages_prey) + to_chat(src, "[msg]") + to_chat(src, "Unabsorb messages:") + for(var/msg in B.unabsorb_messages_owner) + to_chat(src, "[msg]") + to_chat(src, "Unabsorb messages (prey):") + for(var/msg in B.unabsorb_messages_prey) + to_chat(src, "[msg]") + to_chat(src, "Examine messages:") + for(var/msg in B.examine_messages) + to_chat(src, "[msg]") + for(var/msg in B.examine_messages_absorbed) + to_chat(src, "[msg]") + to_chat(src, "Emote lists:") + for(var/EL in B.emote_lists) + to_chat(src, "[EL]:") + for(var/msg in B.emote_lists[EL]) + to_chat(src, "[msg]") /** * Small helper component to manage the vore panel HUD icon diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index ce078a7384..9c1c8cc00e 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -357,6 +357,23 @@ to_chat(usr,"Virgo-specific preferences applied from active slot!") unsaved_changes = FALSE return TRUE + if("exportpanel") + var/mob/living/user = usr + if(!user) + to_chat(usr,"Mob undefined: [user]") + return FALSE + + var/datum/vore_look/export_panel/exportPanel + if(!exportPanel) + exportPanel = new(usr) + + if(!exportPanel) + to_chat(user,"Export panel undefined: [exportPanel]") + return FALSE + + exportPanel.open_export_panel(user) + + return TRUE if("setflavor") var/new_flavor = html_encode(tgui_input_text(usr,"What your character tastes like (400ch limit). This text will be printed to the pred after 'X tastes of...' so just put something like 'strawberries and cream':","Character Flavor",host.vore_taste)) if(!new_flavor) diff --git a/tgui/packages/tgui/interfaces/VorePanel.js b/tgui/packages/tgui/interfaces/VorePanel.js index 4adc1850e0..f3f1bdd5ff 100644 --- a/tgui/packages/tgui/interfaces/VorePanel.js +++ b/tgui/packages/tgui/interfaces/VorePanel.js @@ -52,67 +52,6 @@ export const VorePanel = (props, context) => { tabs[1] = ; - const generateBellyString = () => { - const { - // Controls - belly_name, - mode, - item_mode, - addons, - - // Descriptions - verb, - release_verb, - desc, - absorbed_desc, - } = data.selected; - - let result = '=== ' + belly_name + ' ===\n\n'; - result += '== Controls ==\n\n'; - result += 'Mode:\n' + mode + '\n\n'; - result += 'Addons:\n' + addons + '\n\n'; - result += 'Item Mode:\n' + item_mode + '\n\n'; - result += '== Descriptions ==\n\n'; - result += 'Verb:\n' + verb + '\n\n'; - result += 'Release Verb:\n' + release_verb + '\n\n'; - result += 'Description:\n"' + desc + '"\n\n'; - result += 'Absorbed Description:\n"' + absorbed_desc + '"\n\n'; - - return result; - }; - - const downloadPrefs = () => { - const { belly_name } = data.selected; - - const extension = '.txt'; - - let now = new Date(); - let hours = String(now.getHours()); - if (hours.length < 2) { - hours = '0' + hours; - } - let minutes = String(now.getMinutes()); - if (minutes.length < 2) { - minutes = '0' + minutes; - } - let dayofmonth = String(now.getDate()); - if (dayofmonth.length < 2) { - dayofmonth = '0' + dayofmonth; - } - let month = String(now.getMonth() + 1); // 0-11 - if (month.length < 2) { - month = '0' + month; - } - let year = String(now.getFullYear()); - - let datesegment = ' ' + year + '-' + month + '-' + dayofmonth + ' (' + hours + ' ' + minutes + ')'; - - let filename = belly_name + datesegment + extension; - - let blob = new Blob([generateBellyString()], { type: 'text/html;charset=utf8;' }); - window.navigator.msSaveOrOpenBlob(blob, filename); - }; - return ( @@ -125,11 +64,11 @@ export const VorePanel = (props, context) => { '; + + result += '
'; + result += '
'; + result += 'Addons:
' + GetAddons(addons) + '

'; + + result += '== Descriptions ==
'; + result += 'Vore Verb:
' + vore_verb + '

'; + result += 'Release Verb:
' + release_verb + '

'; + result += 'Description:
"' + desc + '"

'; + result += 'Absorbed Description:
"' + absorbed_desc + '"

'; + + result += '
'; + + result += '== Messages ==
'; + result += '
'; // Start Div messagesTabpanel + result += '
'; + result += '
'; + result += 'Struggle Messages (Outside)'; + result += 'Struggle Messages (Inside)'; + result += 'Absorbed Struggle Messages (Outside)'; + result += 'Absorbed Struggle Messages (Inside)'; + result += 'Digest Messages (Owner)'; + result += 'Digest Messages (Prey)'; + result += 'Absorb Messages (Owner)'; + result += 'Absorb Messages (Prey)'; + result += 'Unabsorb Messages (Owner)'; + result += 'Unabsorb Messages (Prey)'; + result += 'Examine Messages'; + result += 'Examine Messages (Absorbed)'; + result += '
'; + + result += '
'; + result += '
'; + + result += '
'; + struggle_messages_outside?.forEach((msg) => { + result += msg + '
'; + }); + result += '
'; + + result += '
'; + struggle_messages_inside?.forEach((msg) => { + result += msg + '
'; + }); + result += '
'; + + result += '
'; + absorbed_struggle_messages_outside?.forEach((msg) => { + result += msg + '
'; + }); + result += '
'; + + result += '
'; + absorbed_struggle_messages_inside?.forEach((msg) => { + result += msg + '
'; + }); + result += '
'; + + result += '
'; + digest_messages_owner?.forEach((msg) => { + result += msg + '
'; + }); + result += '
'; + + result += '
'; + digest_messages_prey?.forEach((msg) => { + result += msg + '
'; + }); + result += '
'; + + result += '
'; + absorb_messages_owner?.forEach((msg) => { + result += msg + '
'; + }); + result += '
'; + + result += '
'; + absorb_messages_prey?.forEach((msg) => { + result += msg + '
'; + }); + result += '
'; + + result += '
'; + unabsorb_messages_owner?.forEach((msg) => { + result += msg + '
'; + }); + result += '
'; + + result += '
'; + unabsorb_messages_prey?.forEach((msg) => { + result += msg + '
'; + }); + result += '
'; + + result += '
'; + examine_messages?.forEach((msg) => { + result += msg + '
'; + }); + result += '
'; + + result += '
'; + examine_messages_absorbed?.forEach((msg) => { + result += msg + '
'; + }); + result += '
'; + + result += '
'; + result += '
'; + result += '
'; // End Div messagesTabpanel + + result += '
= Idle Messages =

'; + + result += '

Idle Messages (Hold):

'; + emotes_hold?.forEach((msg) => { + result += msg + '
'; + }); + result += '


'; + + result += '
Idle Messages (Hold Absorbed):

'; + emotes_holdabsorbed?.forEach((msg) => { + result += msg + '
'; + }); + result += '


'; + + result += '
Idle Messages (Digest):

'; + emotes_digest?.forEach((msg) => { + result += msg + '
'; + }); + result += '


'; + + result += '
Idle Messages (Absorb):

'; + emotes_absorb?.forEach((msg) => { + result += msg + '
'; + }); + result += '


'; + + result += '
Idle Messages (Unabsorb):

'; + emotes_unabsorb?.forEach((msg) => { + result += msg + '
'; + }); + result += '


'; + + result += '
Idle Messages (Drain):

'; + emotes_drain?.forEach((msg) => { + result += msg + '
'; + }); + result += '


'; + + result += '
Idle Messages (Heal):

'; + emotes_heal?.forEach((msg) => { + result += msg + '
'; + }); + result += '


'; + + result += '
Idle Messages (Size Steal):

'; + emotes_steal?.forEach((msg) => { + result += msg + '
'; + }); + result += '


'; + + result += '
Idle Messages (Shrink):

'; + emotes_shrink?.forEach((msg) => { + result += msg + '
'; + }); + result += '


'; + + result += '
Idle Messages (Grow):

'; + emotes_grow?.forEach((msg) => { + result += msg + '
'; + }); + result += '


'; + + result += '
Idle Messages (Encase In Egg):

'; + emotes_egg?.forEach((msg) => { + result += msg + '
'; + }); + result += '


'; + + result += '


'; + + result += '
'; + + result += '
'; + + // OPTIONS + + result += '
'; + result += '

'; + result += '

'; + + result += '
'; + result += '
'; + result += '
    '; + result += '
  • Can Taste: ' + (can_taste ? 'Yes' : 'No') + '
  • '; + result += '
  • Contaminates: ' + (contaminates ? 'Yes' : 'No') + '
  • '; + result += '
  • Contamination Flavor: ' + contamination_flavor + '
  • '; + result += '
  • Contamination Color: ' + contamination_color + '
  • '; + result += '
  • Nutritional Gain: ' + nutrition_percent + '%
  • '; + result += '
  • Required Examine Size: ' + bulge_size * 100 + '%
  • '; + result += '
  • Display Absorbed Examines: ' + (display_absorbed_examine ? 'True' : 'False') + '
  • '; + result += '
  • Save Digest Mode: ' + (save_digest_mode ? 'True' : 'False') + '
  • '; + result += '
  • Idle Emotes: ' + (emote_active ? 'Active' : 'Inactive') + '
  • '; + result += '
  • Idle Emote Delay: ' + emote_time + ' seconds
  • '; + result += '
  • Shrink/Grow Size: ' + shrink_grow_size * 100 + '%
  • '; + result += '
  • Egg Type: ' + egg_type + '
  • '; + result += '
  • Selective Mode Preference: ' + selective_preference + '
  • '; + result += '
'; + result += '
'; + + // END OPTIONS + // SOUNDS + + result += '
'; + result += '

'; + result += '

'; + + result += '
'; + result += '
'; + result += '
    '; + result += '
  • Fleshy Belly: ' + (is_wet ? 'Yes' : 'No') + '
  • '; + result += '
  • Internal Loop: ' + (wet_loop ? 'Yes' : 'No') + '
  • '; + result += '
  • Use Fancy Sounds: ' + (fancy_vore ? 'Yes' : 'No') + '
  • '; + result += '
  • Vore Sound: ' + vore_sound + '
  • '; + result += '
  • Release Sound: ' + release_sound + '
  • '; + result += '
'; + result += '
'; + + // END SOUNDS + // VISUALS + + result += '
'; + result += '

'; + result += '

'; + + result += '
'; + result += 'Vore FX'; + result += '
    '; + result += '
  • Disable Prey HUD: ' + (disable_hud ? 'Yes' : 'No') + '
  • '; + result += '
'; + result += '
'; + + // END VISUALS + // INTERACTIONS + + result += '
'; + result += '

'; + result += '

'; + + result += '
'; + result += '
'; + result += 'Belly Interactions (' + + (escapable ? 'Enabled' : 'Disabled') + + ')'; + result += '
    '; + result += '
  • Escape Chance: ' + escapechance + '%
  • '; + result += '
  • Escape Time: ' + escapetime / 10 + 's
  • '; + result += '
  • Transfer Chance: ' + transferchance + '%
  • '; + result += '
  • Transfer Location: ' + transferlocation + '
  • '; + result += '
  • Secondary Transfer Chance: ' + transferchance_secondary + '%
  • '; + result += '
  • Secondary Transfer Location: ' + transferlocation_secondary + '
  • '; + result += '
  • Absorb Chance: ' + absorbchance + '%
  • '; + result += '
  • Digest Chance: ' + digestchance + '%
  • '; + result += '
'; + result += '
'; + + // END INTERACTIONS + + result += '
'; + + return result; +}; + +const getCurrentTimestamp = (): string => { + let now = new Date(); + let hours = String(now.getHours()); + if (hours.length < 2) { + hours = '0' + hours; + } + let minutes = String(now.getMinutes()); + if (minutes.length < 2) { + minutes = '0' + minutes; + } + let dayofmonth = String(now.getDate()); + if (dayofmonth.length < 2) { + dayofmonth = '0' + dayofmonth; + } + let month = String(now.getMonth() + 1); // 0-11 + if (month.length < 2) { + month = '0' + month; + } + let year = String(now.getFullYear()); + + return ' ' + year + '-' + month + '-' + dayofmonth + ' (' + hours + ' ' + minutes + ')'; +}; + +const downloadPrefs = (context, extension: string) => { + const { act, data } = useBackend(context); + + const { db_version, db_repo, mob_name, bellies } = data; + + let datesegment = getCurrentTimestamp(); + + let filename = mob_name + datesegment + extension; + let blob; + + if (extension === '.html') { + let style = ''; + + blob = new Blob( + [ + '' + + '' + + '' + + '' + + bellies.length + + ' Exported Bellies (DB_VER: ' + + db_repo + + '-' + + db_version + + ')' + + '' + + '' + + style + + '

Bellies of ' + + mob_name + + '

Generated on: ' + + datesegment + + '

', + ], + { + type: 'text/html;charset=utf8', + } + ); + bellies.forEach((belly, i) => { + blob = new Blob([blob, generateBellyString(belly, i)], { type: 'text/html;charset=utf8' }); + }); + blob = new Blob( + [ + blob, + '
', + '', + '
', + ], + { type: 'text/html;charset=utf8' } + ); + } + + (window.navigator as any).msSaveOrOpenBlob(blob, filename); +}; + +export const VorePanelExport = () => { + return ( + + + + + + ); +}; + +const VorePanelExportContent = (props, context) => { + const { act, data } = useBackend(context); + + const { bellies } = data; + + return ( +
+
+ +
+
+ ); +}; diff --git a/tgui/public/tgui.bundle.js b/tgui/public/tgui.bundle.js index 29adec21a1..be12013ab1 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=h;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))),u=m(n(75949));t.detectOverflow=u["default"];var s=n(79388);n(15954);function m(e){return e&&e.__esModule?e:{"default":e}}var p={placement:"bottom",modifiers:[],strategy:"absolute"};function f(){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,u.isHTMLElement)(e)?(0,c["default"])(e):e;if(!(0,u.isElement)(n))return[];return t.filter((function(e){return(0,u.isElement)(e)&&(0,p["default"])(e,n)&&"body"!==(0,f["default"])(e)}))}(e):[].concat(t),r=[].concat(o,[n]),a=r[0],l=r.reduce((function(t,n){var o=b(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}),b(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=N(n(8204)),a=N(n(40015)),i=N(n(3671)),c=N(n(55490)),l=N(n(25890)),d=N(n(40755)),u=n(79388),s=N(n(11100)),m=N(n(95136)),p=N(n(62215)),f=N(n(38569)),h=N(n(73060)),C=n(36291);function N(e){return e&&e.__esModule?e:{"default":e}}function b(e,t){return t===o.viewport?(0,h["default"])((0,r["default"])(e)):(0,u.isElement)(t)?function(e){var t=(0,s["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,h["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 s=(0,i.isHTMLElement)(t),m=(0,i.isHTMLElement)(t)&&function(e){var t=e.getBoundingClientRect(),n=(0,u.round)(t.width)/e.offsetWidth||1,o=(0,u.round)(t.height)/e.offsetHeight||1;return 1!==n||1!==o}(t),p=(0,l["default"])(t),f=(0,o["default"])(e,m),h={scrollLeft:0,scrollTop:0},C={x:0,y:0};(s||!s&&!n)&&(("body"!==(0,a["default"])(t)||(0,d["default"])(p))&&(h=(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:f.left+h.scrollLeft-C.x,y:f.top+h.scrollTop-C.y,width:f.width,height:f.height}};var o=s(n(11100)),r=s(n(3514)),a=s(n(38569)),i=n(79388),c=s(n(36056)),l=s(n(25890)),d=s(n(57360)),u=n(36291);function s(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,u=(0,c.max)(n.scrollWidth,n.clientWidth,d?d.scrollWidth:0,d?d.clientWidth:0),s=(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)-u);return{width:u,height:s,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=u(e);for(;n&&(0,c["default"])(n)&&"static"===(0,a["default"])(n).position;)n=u(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 u(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,u=0;i&&(c=i.width,l=i.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(d=i.offsetLeft,u=i.offsetTop));return{width:c,height:l,x:d+(0,a["default"])(e),y:u}};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),u=(0,a["default"])(c),s=d?[u].concat(u.visualViewport||[],(0,i["default"])(c)?c:[]):c,m=t.concat(s);return d?m:m.concat(l((0,r["default"])(s)))};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 u=[].concat(i,[a]).reduce((function(e,t){return e.concat([t,t+"-"+c,t+"-"+l])}),[]);t.placements=u;var s="beforeRead";t.beforeRead=s;var m="read";t.read=m;var p="afterRead";t.afterRead=p;var f="beforeMain";t.beforeMain=f;var h="main";t.main=h;var C="afterMain";t.afterMain=C;var N="beforeWrite";t.beforeWrite=N;var b="write";t.write=b;var V="afterWrite";t.afterWrite=V;var g=[s,m,p,f,h,C,N,b,V];t.modifierPhases=g},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)),u=m(n(45674)),s=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,u["default"])(e,s.basePlacements))};var f={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,a=e.name,d=e.options,u=n.elements.arrow,m=n.modifiersData.popperOffsets,f=(0,o["default"])(n.placement),h=(0,c["default"])(f),C=[s.left,s.right].indexOf(f)>=0?"height":"width";if(u&&m){var N=p(d.padding,n),b=(0,r["default"])(u),V="y"===h?s.top:s.left,g="y"===h?s.bottom:s.right,v=n.rects.reference[C]+n.rects.reference[h]-m[h]-n.rects.popper[C],_=m[h]-n.rects.reference[h],k=(0,i["default"])(u),y=k?"y"===h?k.clientHeight||0:k.clientWidth||0:0,x=v/2-_/2,w=N[V],B=y-b[C]-N[g],L=y/2-b[C]/2+x,S=(0,l.within)(w,L,B),I=h;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"]=f},54680:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0,t.mapToStyles=p;var o=n(15954),r=s(n(55490)),a=s(n(96904)),i=s(n(25890)),c=s(n(40755)),l=s(n(27629)),d=s(n(31686)),u=n(36291);function s(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,s=e.variation,p=e.offsets,f=e.position,h=e.gpuAcceleration,C=e.adaptive,N=e.roundOffsets,b=e.isFixed,V=p.x,g=void 0===V?0:V,v=p.y,_=void 0===v?0:v,k="function"==typeof N?N({x:g,y:_}):{x:g,y:_};g=k.x,_=k.y;var y=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"===f&&(I="scrollHeight",T="scrollWidth")),d===o.top||(d===o.left||d===o.right)&&s===o.end)B=o.bottom,_-=(b&&S===L&&L.visualViewport?L.visualViewport.height:S[I])-l.height,_*=h?1:-1;if(d===o.left||(d===o.top||d===o.bottom)&&s===o.end)w=o.right,g-=(b&&S===L&&L.visualViewport?L.visualViewport.width:S[T])-l.width,g*=h?1:-1}var A,M=Object.assign({position:f},C&&m),E=!0===N?function(e){var t=e.x,n=e.y,o=window.devicePixelRatio||1;return{x:(0,u.round)(t*o)/o||0,y:(0,u.round)(n*o)/o||0}}({x:g,y:_}):{x:g,y:_};return g=E.x,_=E.y,h?Object.assign({},M,((A={})[B]=x?"0":"",A[w]=y?"0":"",A.transform=(L.devicePixelRatio||1)<=1?"translate("+g+"px, "+_+"px)":"translate3d("+g+"px, "+_+"px, 0)",A)):Object.assign({},M,((t={})[B]=x?_+"px":"",t[w]=y?g+"px":"",t.transform="",t))}var f={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,u=void 0===c||c,s={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({},s,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:i,roundOffsets:u})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,p(Object.assign({},s,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:u})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};t["default"]=f},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,u=(0,r["default"])(t.elements.popper),s=[].concat(t.scrollParents.reference,t.scrollParents.popper);return c&&s.forEach((function(e){e.addEventListener("scroll",n.update,a)})),d&&u.addEventListener("resize",n.update,a),function(){c&&s.forEach((function(e){e.removeEventListener("scroll",n.update,a)})),d&&u.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=u(n(31477)),r=u(n(27629)),a=u(n(44214)),i=u(n(75949)),c=u(n(2894)),l=n(15954),d=u(n(31686));function u(e){return e&&e.__esModule?e:{"default":e}}var s={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,u=e.name;if(!t.modifiersData[u]._skip){for(var s=n.mainAxis,m=void 0===s||s,p=n.altAxis,f=void 0===p||p,h=n.fallbackPlacements,C=n.padding,N=n.boundary,b=n.rootBoundary,V=n.altBoundary,g=n.flipVariations,v=void 0===g||g,_=n.allowedAutoPlacements,k=t.options.placement,y=(0,r["default"])(k),x=h||(y===k||!v?[(0,o["default"])(k)]: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)]}(k)),w=[k].concat(x).reduce((function(e,n){return e.concat((0,r["default"])(n)===l.auto?(0,c["default"])(t,{placement:n,boundary:N,rootBoundary:b,padding:C,flipVariations:v,allowedAutoPlacements:_}):n)}),[]),B=t.rects.reference,L=t.rects.popper,S=new Map,I=!0,T=w[0],A=0;A=0,F=O?"width":"height",D=(0,i["default"])(t,{placement:M,boundary:N,rootBoundary:b,altBoundary:V,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),f&&W.push(D[R]<=0,D[j]<=0),W.every((function(e){return e}))){T=M,I=!1;break}S.set(M,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[u]._skip=!0,t.placement=T,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};t["default"]=s},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"}),u=(0,a["default"])(t,{altBoundary:!0}),s=i(d,o),m=i(u,r,l),p=c(s),f=c(m);t.modifiersData[n]={referenceClippingOffsets:s,popperEscapeOffsets:m,isReferenceHidden:p,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":f})}};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 u=m(n(83662));t.popperOffsets=u["default"];var s=m(n(21031));function m(e){return e&&e.__esModule?e:{"default":e}}t.preventOverflow=s["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],u=d.x,s=d.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=u,t.modifiersData.popperOffsets.y+=s),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=f(n(27629)),a=f(n(78772)),i=f(n(16696)),c=n(54444),l=f(n(68349)),d=f(n(55490)),u=f(n(75949)),s=f(n(31686)),m=f(n(22710)),p=n(36291);function f(e){return e&&e.__esModule?e:{"default":e}}var h={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,f=e.name,h=n.mainAxis,C=void 0===h||h,N=n.altAxis,b=void 0!==N&&N,V=n.boundary,g=n.rootBoundary,v=n.altBoundary,_=n.padding,k=n.tether,y=void 0===k||k,x=n.tetherOffset,w=void 0===x?0:x,B=(0,u["default"])(t,{boundary:V,rootBoundary:g,padding:_,altBoundary:v}),L=(0,r["default"])(t.placement),S=(0,s["default"])(t.placement),I=!S,T=(0,a["default"])(L),A=(0,i["default"])(T),M=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(M){if(C){var j,W="y"===T?o.top:o.left,z="y"===T?o.bottom:o.right,U="y"===T?"height":"width",H=M[T],G=H+B[W],K=H-B[z],Y=y?-P[U]/2:0,q=S===o.start?E[U]:P[U],$=S===o.start?-P[U]:-E[U],X=t.elements.arrow,Q=y&&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)(y?(0,p.min)(G,ce):G,H,y?(0,p.max)(K,le):K);M[T]=de,R[T]=de-H}if(b){var ue,se="x"===T?o.top:o.left,me="x"===T?o.bottom:o.right,pe=M[A],fe="y"===A?"height":"width",he=pe+B[se],Ce=pe-B[me],Ne=-1!==[o.top,o.left].indexOf(L),be=null!=(ue=null==D?void 0:D[A])?ue:0,Ve=Ne?he:pe-E[fe]-P[fe]-be+F.altAxis,ge=Ne?pe+E[fe]+P[fe]-be-F.altAxis:Ce,ve=y&&Ne?(0,c.withinMaxClamp)(Ve,pe,ge):(0,c.within)(y?Ve:he,pe,y?ge:Ce);M[A]=ve,R[A]=ve-pe}t.modifiersData[f]=R}},requiresIfExists:["offset"]};t["default"]=h},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 u=(0,o.popperGenerator)({defaultModifiers:d});t.createPopper=u},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)),u=C(n(82566)),s=C(n(21031)),m=C(n(71313)),p=C(n(27353)),f=n(47952);t.createPopperLite=f.createPopper;var h=n(4207);function C(e){return e&&e.__esModule?e:{"default":e}}Object.keys(h).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(o,e)||e in t&&t[e]===h[e]||(t[e]=h[e]))}));var N=[a["default"],i["default"],c["default"],l["default"],d["default"],u["default"],s["default"],m["default"],p["default"]];t.defaultModifiers=N;var b=(0,r.popperGenerator)({defaultModifiers:N});t.createPopperLite=t.createPopper=b},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,u=n.padding,s=n.flipVariations,m=n.allowedAutoPlacements,p=void 0===m?r.placements:m,f=(0,o["default"])(c),h=f?s?r.variationPlacements:r.variationPlacements.filter((function(e){return(0,o["default"])(e)===f})):r.basePlacements,C=h.filter((function(e){return p.indexOf(e)>=0}));0===C.length&&(C=h);var N=C.reduce((function(t,n){return t[n]=(0,a["default"])(e,{placement:n,boundary:l,rootBoundary:d,padding:u})[(0,i["default"])(n)],t}),{});return Object.keys(N).sort((function(e,t){return N[e]-N[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,u=l?(0,r["default"])(l):null,s=n.x+n.width/2-c.width/2,m=n.y+n.height/2-c.height/2;switch(d){case i.top:t={x:s,y:n.y-c.height};break;case i.bottom:t={x:s,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 f="y"===p?"height":"width";switch(u){case i.start:t[p]=t[p]-(n[f]/2-c[f]/2);break;case i.end:t[p]=t[p]+(n[f]/2-c[f]/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,f=n.boundary,h=void 0===f?l.clippingParents:f,C=n.rootBoundary,N=void 0===C?l.viewport:C,b=n.elementContext,V=void 0===b?l.popper:b,g=n.altBoundary,v=void 0!==g&&g,_=n.padding,k=void 0===_?0:_,y=(0,u["default"])("number"!=typeof k?k:(0,s["default"])(k,l.basePlacements)),x=V===l.popper?l.reference:l.popper,w=e.rects.popper,B=e.elements[v?x:V],L=(0,o["default"])((0,d.isElement)(B)?B:B.contextElement||(0,r["default"])(e.elements.popper),h,N),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)),A=V===l.popper?T:S,M={top:L.top-A.top+y.top,bottom:A.bottom-L.bottom+y.bottom,left:L.left-A.left+y.left,right:A.right-L.right+y.right},E=e.modifiersData.offset;if(V===l.popper&&E){var P=E[p];Object.keys(M).forEach((function(e){var t=[l.right,l.bottom].indexOf(e)>=0?1:-1,n=[l.top,l.bottom].indexOf(e)>=0?"y":"x";M[e]+=P[n]*t}))}return M};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),u=m(n(11277)),s=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),u=n(5484),s=n(77807),m=n(10374),p=n(56279),f=n(87229),h=n(73e3),C=n(92723).f,N=n(76469),b=n(56997),V=n(44958),g=n(43741),v=n(8220),_=n(48797),k=_.enforce,y=_.get,x=l.Int8Array,w=x&&x.prototype,B=l.Uint8ClampedArray,L=B&&B.prototype,S=x&&b(x),I=w&&b(w),T=Object.prototype,A=l.TypeError,M=g("toStringTag"),E=v("TYPED_ARRAY_TAG"),P="TypedArrayConstructor",O=i&&!!V&&"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(!u(e))return!1;var t=m(e);return"DataView"===t||s(D,t)||s(R,t)},W=function(e){if(!u(e))return!1;var t=m(e);return s(D,t)||s(R,t)};for(o in D)(a=(r=l[o])&&r.prototype)?k(a).TypedArrayConstructor=r:O=!1;for(o in R)(a=(r=l[o])&&r.prototype)&&(k(a).TypedArrayConstructor=r);if((!O||!d(S)||S===Function.prototype)&&(S=function(){throw A("Incorrect invocation")},O))for(o in D)l[o]&&V(l[o],S);if((!O||!I||I===T)&&(I=S.prototype,O))for(o in D)l[o]&&V(l[o].prototype,I);if(O&&b(L)!==I&&V(L,I),c&&!s(I,M))for(o in F=!0,C(I,M,{get:function(){return u(this)?this[E]:undefined}}),D)l[o]&&f(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 A("Target is not a typed array")},aTypedArrayConstructor:function(e){if(d(e)&&(!V||N(S,e)))return e;throw A(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&&s(a.prototype,e))try{delete a.prototype[e]}catch(i){try{a.prototype[e]=t}catch(d){}}}I[e]&&!n||h(I,e,n?t:O&&w[e]||t,o)}},exportTypedArrayStaticMethod:function(e,t,n){var o,r;if(c){if(V){if(n)for(o in D)if((r=l[o])&&s(r,e))try{delete r[e]}catch(a){}if(S[e]&&!n)return;try{return h(S,e,n?t:O&&S[e]||t)}catch(a){}}for(o in D)!(r=l[o])||r[e]&&!n||h(r,e,t)}},getTypedArrayConstructor:function z(e){var t=b(e);if(u(t)){var n=y(t);return n&&s(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),u=n(39125),s=n(41706),m=n(94868),p=n(87543),f=n(76124),h=n(29209),C=n(56997),N=n(44958),b=n(94600).f,V=n(92723).f,g=n(8093),v=n(74337),_=n(93182),k=n(48797),y=c.PROPER,x=c.CONFIGURABLE,w=k.get,B=k.set,L="ArrayBuffer",S="DataView",I="Wrong index",T=o.ArrayBuffer,A=T,M=A&&A.prototype,E=o.DataView,P=E&&E.prototype,O=Object.prototype,F=o.Array,D=o.RangeError,R=r(g),j=r([].reverse),W=h.pack,z=h.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){V(e.prototype,t,{get:function(){return w(this)[t]}})},X=function(e,t,n,o){var r=f(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=f(n),c=w(e);if(i+t>c.byteLength)throw D(I);for(var l=w(c.buffer).bytes,d=i+c.byteOffset,u=o(+r),s=0;ste;)(Z=ee[te++])in A||l(A,Z,T[Z]);M.constructor=A}N&&C(P)!==O&&N(P,O);var ne=new E(new A(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 M=(A=function(e){s(this,M);var t=f(e);B(this,{bytes:R(F(t),0),byteLength:t}),a||(this.byteLength=t)}).prototype,P=(E=function(e,t,n){s(this,P),s(e,M);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&&($(A,"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)}});_(A,L),_(E,S),e.exports={ArrayBuffer:A,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),u=r(t,l),s=arguments.length>2?arguments[2]:undefined,m=c((s===undefined?l:r(s,l))-u,l-d),p=1;for(u0;)u in n?n[d]=n[u]:i(n,d),d+=p,u+=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),u=n(61154),s=n(93247),m=n(52522),p=Array;e.exports=function(e){var t=a(e),n=l(this),f=arguments.length,h=f>1?arguments[1]:undefined,C=h!==undefined;C&&(h=o(h,f>2?arguments[2]:undefined));var N,b,V,g,v,_,k=m(t),y=0;if(!k||this===p&&c(k))for(N=d(t),b=n?new this(N):p(N);N>y;y++)_=C?h(t[y],y):t[y],u(b,y,_);else for(v=(g=s(t,k)).next,b=n?new this:[];!(V=r(v,g)).done;y++)_=C?i(g,h,[V.value,y],!0):V.value,u(b,y,_);return b.length=y,b}},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),u=r(i,d);if(e&&n!=n){for(;d>u;)if((c=l[u++])!=c)return!0}else for(;d>u;u++)if((e||u in l)&&l[u]===n)return e||u||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),u=function(e){var t=1==e,n=2==e,r=3==e,u=4==e,s=6==e,m=7==e,p=5==e||s;return function(f,h,C,N){for(var b,V,g=i(f),v=a(g),_=o(h,C),k=c(v),y=0,x=N||l,w=t?x(f,k):n||m?x(f,0):undefined;k>y;y++)if((p||y in v)&&(V=_(b=v[y],y,g),e))if(t)w[y]=V;else if(V)switch(e){case 3:return!0;case 5:return b;case 6:return y;case 2:d(w,b)}else switch(e){case 4:return!1;case 7:d(w,b)}return s?-1:r||u?u:w}};e.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6),filterReject:u(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,u=!!d&&1/[1].lastIndexOf(1,-0)<0,s=c("lastIndexOf"),m=u||!s;e.exports=m?function(e){if(u)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 u=r(t),s=a(u),m=i(u),p=e?m-1:0,f=e?-1:1;if(l<2)for(;;){if(p in s){d=s[p],p+=f;break}if(p+=f,e?p<0:m<=p)throw c("Reduce of empty array with no initial value")}for(;e?p>=0:m>p;p+=f)p in s&&(d=n(d,s[p],p,u));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),u=o(n===undefined?l:n,l),s=i(c(u-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!!b(this,e)}}),a(p,n?{get:function(e){var t=b(this,e);return t&&t.value},set:function(e,t){return N(this,0===e?0:e,t)}}:{add:function(e){return N(this,e=0===e?0:e,e)}}),s&&o(p,"size",{get:function(){return C(this).size}}),u},setStrong:function(e,t,n){var o=t+" Iterator",r=h(t),a=h(o);d(e,t,(function(e,t){f(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),u(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),u=n(36249),s=n(77807),m=n(48797),p=m.set,f=m.getterFor,h=u.find,C=u.findIndex,N=o([].splice),b=0,V=function(e){return e.frozen||(e.frozen=new g)},g=function(){this.entries=[]},v=function(e,t){return h(e.entries,(function(e){return e[0]===t}))};g.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&&N(this.entries,t,1),!!~t}},e.exports={getConstructor:function(e,t,n,o){var u=e((function(e,r){l(e,m),p(e,{type:t,id:b++,frozen:undefined}),r!=undefined&&d(r,e[o],{that:e,AS_ENTRIES:n})})),m=u.prototype,h=f(t),C=function(e,t,n){var o=h(e),r=a(i(t),!0);return!0===r?V(o).set(t,n):r[o.id]=n,e};return r(m,{"delete":function(e){var t=h(this);if(!c(e))return!1;var n=a(e);return!0===n?V(t)["delete"](e):n&&s(n,t.id)&&delete n[t.id]},has:function(e){var t=h(this);if(!c(e))return!1;var n=a(e);return!0===n?V(t).has(e):n&&s(n,t.id)}}),r(m,n?{get:function(e){var t=h(this);if(c(e)){var n=a(e);return!0===n?V(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)}}),u}}},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),u=n(41706),s=n(45744),m=n(5484),p=n(39125),f=n(98994),h=n(93182),C=n(75121);e.exports=function(e,t,n){var N=-1!==e.indexOf("Map"),b=-1!==e.indexOf("Weak"),V=N?"set":"add",g=r[e],v=g&&g.prototype,_=g,k={},y=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!(b&&!m(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return b&&!m(e)?undefined:t(this,0===e?0:e)}:"has"==e?function(e){return!(b&&!m(e))&&t(this,0===e?0:e)}:function(e,n){return t(this,0===e?0:e,n),this})};if(i(e,!s(g)||!(b||v.forEach&&!p((function(){(new g).entries().next()})))))_=n.getConstructor(t,e,N,V),l.enable();else if(i(e,!0)){var x=new _,w=x[V](b?{}:-0,1)!=x,B=p((function(){x.has(1)})),L=f((function(e){new g(e)})),S=!b&&p((function(){for(var e=new g,t=5;t--;)e[V](t,t);return!e.has(-0)}));L||((_=t((function(e,t){u(e,v);var n=C(new g,e,_);return t!=undefined&&d(t,n[V],{that:n,AS_ENTRIES:N}),n}))).prototype=v,v.constructor=_),(B||S)&&(y("delete"),y("has"),N&&y("get")),(S||w)&&y(V),b&&v.clear&&delete v.clear}return k[e]=_,o({global:!0,constructor:!0,forced:_!=g},k),h(_,e),b||n.setStrong(_,e,N),_}},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,u=0;u"+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 u=t+" Iterator";return e.prototype=r(o,{next:a(+!d,n)}),i(e,u,!1,!0),c[u]=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,u=o(l.getTime),s=o(l.getUTCDate),m=o(l.getUTCFullYear),p=o(l.getUTCHours),f=o(l.getUTCMilliseconds),h=o(l.getUTCMinutes),C=o(l.getUTCMonth),N=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(u(this)))throw i("Invalid time value");var e=this,t=m(e),n=f(e),o=t<0?"-":t>9999?"+":"";return o+a(c(t),o?6:4,0)+"-"+a(C(e)+1,2,0)+"-"+a(s(e),2,0)+"T"+a(p(e),2,0)+":"+a(h(e),2,0)+":"+a(N(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),u=n(44958),s=n(93182),m=n(87229),p=n(73e3),f=n(43741),h=n(53481),C=n(80936),N=i.PROPER,b=i.CONFIGURABLE,V=C.IteratorPrototype,g=C.BUGGY_SAFARI_ITERATORS,v=f("iterator"),_="keys",k="values",y="entries",x=function(){return this};e.exports=function(e,t,n,i,f,C,w){l(n,t,i);var B,L,S,I=function(e){if(e===f&&P)return P;if(!g&&e in M)return M[e];switch(e){case _:case k:case y:return function(){return new n(this,e)}}return function(){return new n(this)}},T=t+" Iterator",A=!1,M=e.prototype,E=M[v]||M["@@iterator"]||f&&M[f],P=!g&&E||I(f),O="Array"==t&&M.entries||E;if(O&&(B=d(O.call(new e)))!==Object.prototype&&B.next&&(a||d(B)===V||(u?u(B,V):c(B[v])||p(B,v,x)),s(B,T,!0,!0),a&&(h[T]=x)),N&&f==k&&E&&E.name!==k&&(!a&&b?m(M,"name",k):(A=!0,P=function(){return r(E,this)})),f)if(L={values:I(k),keys:C?P:I(_),entries:I(y)},w)for(S in L)(g||A||!(S in M))&&p(M,S,L[S]);else o({target:t,proto:!0,forced:g||A},L);return a&&!w||M[v]===P||p(M,v,P,{name:f}),h[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,u=d&&d.v8;u&&(r=(o=u.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,u,s,m,p,f=e.target,h=e.global,C=e.stat;if(n=h?o:C?o[f]||c(f,{}):(o[f]||{}).prototype)for(u in t){if(m=t[u],s=e.dontCallGetSet?(p=r(n,u))&&p.value:n[u],!d(h?u:f+(C?".":"#")+u,e.forced)&&s!==undefined){if(typeof m==typeof s)continue;l(m,s)}(e.sham||s&&s.sham)&&a(m,"sham",!0),i(n,u,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"),u=RegExp.prototype;e.exports=function(e,t,n,s){var m=c(e),p=!i((function(){var t={};return t[m]=function(){return 7},7!=""[e](t)})),f=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||!f||n){var h=o(/./[m]),C=t(m,""[e],(function(e,t,n,r,i){var c=o(e),l=t.exec;return l===a||l===u.exec?p&&!i?{done:!0,value:h(t,n,r)}:{done:!0,value:c(n,t,r)}:{done:!1}}));r(String.prototype,e,C[0]),r(u,m,C[1])}s&&l(u[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,u,s,m){for(var p,f=d,h=0,C=!!s&&i(s,m);h0&&o(p)?f=c(e,t,p,r(p),f,u-1)-1:(a(f+1),e[f]=p),f++),h++;return f}},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,u=o([].concat),s=o([].join),m={},p=function(e,t,n){if(!i(m,t)){for(var o=[],r=0;r]*>)/g,u=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,t,n,o,s,m){var p=n+e.length,f=o.length,h=u;return s!==undefined&&(s=r(s),h=d),c(m,h,(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=s[l(c,1,-1)];break;default:var u=+c;if(0===u)return r;if(u>f){var m=a(u/10);return 0===m?r:m<=f?o[m-1]===undefined?i(c,1):o[m-1]+i(c,1):r}d=o[u-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,u,s,m=t(l),p=8*l-c-1,f=(1<>1,C=23===c?o(2,-24)-o(2,-77):0,N=e<0||0===e&&1/e<0?1:0,b=0;for((e=n(e))!=e||e===Infinity?(u=e!=e?1:0,d=f):(d=r(a(e)/i),e*(s=o(2,-d))<1&&(d--,s*=2),(e+=d+h>=1?C/s:C*o(2,1-h))*s>=2&&(d++,s/=2),d+h>=f?(u=0,d=f):d+h>=1?(u=(e*s-1)*o(2,c),d+=h):(u=e*o(2,h-1)*o(2,c),d=0));c>=8;)m[b++]=255&u,u/=256,c-=8;for(d=d<0;)m[b++]=255&d,d/=256,p-=8;return m[--b]|=128*N,m},unpack:function(e,t){var n,r=e.length,a=8*r-t-1,i=(1<>1,l=a-7,d=r-1,u=e[d--],s=127&u;for(u>>=7;l>0;)s=256*s+e[d--],l-=8;for(n=s&(1<<-l)-1,s>>=-l,l+=t;l>0;)n=256*n+e[d--],l-=8;if(0===s)s=1-c;else{if(s===i)return n?NaN:u?-Infinity:Infinity;n+=o(2,t),s-=c}return(u?-1:1)*n*o(2,s-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),u=n(25586),s=n(65067),m=n(8220),p=n(57724),f=!1,h=m("meta"),C=0,N=function(e){l(e,h,{value:{objectID:"O"+C++,weakData:{}}})},b=e.exports={enable:function(){b.enable=function(){},f=!0;var e=d.f,t=r([].splice),n={};n[h]=1,e(n).length&&(d.f=function(n){for(var o=e(n),r=0,a=o.length;rb;b++)if((g=S(e[b]))&&d(h,g))return g;return new f(!1)}C=u(e,N)}for(v=C.next;!(_=r(v,C)).done;){try{g=S(_.value)}catch(I){m(C,"throw",I)}if("object"==typeof g&&g&&d(h,g))return g}return new f(!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),u=n(73e3),s=n(43741),m=n(37249),p=s("iterator"),f=!1;[].keys&&("next"in(a=[].keys())?(r=d(d(a)))!==Object.prototype&&(o=r):f=!0),o==undefined||i((function(){var e={};return o[p].call(e)!==e}))?o={}:m&&(o=l(o)),c(o[p])||u(o,p,(function(){return this})),e.exports={IteratorPrototype:o,BUGGY_SAFARI_ITERATORS:f}},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),u=d.enforce,s=d.get,m=Object.defineProperty,p=i&&!o((function(){return 8!==m((function(){}),"length",{value:8}).length})),f=String(String).split("String"),h=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=u(e);return a(o,"source")||(o.source=f.join("string"==typeof t?t:"")),e};Function.prototype.toString=h((function(){return r(this)&&s(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,u=r(a),s=o(a);return ul||n!=n?s*Infinity:s*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,u,s=n(61770),m=n(9341),p=n(12488).f,f=n(61777).set,h=n(25515),C=n(48715),N=n(35016),b=n(67745),V=s.MutationObserver||s.WebKitMutationObserver,g=s.document,v=s.process,_=s.Promise,k=p(s,"queueMicrotask"),y=k&&k.value;y||(o=function(){var e,t;for(b&&(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()},h||b||N||!V||!g?!C&&_&&_.resolve?((d=_.resolve(undefined)).constructor=_,u=m(d.then,d),i=function(){u(o)}):b?i=function(){v.nextTick(o)}:(f=m(f,s),i=function(){f(o)}):(c=!0,l=g.createTextNode(""),new V(o).observe(l,{characterData:!0}),i=function(){l.data=c=!c})),e.exports=y||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),u=o.parseFloat,s=o.Symbol,m=s&&s.iterator,p=1/u(l+"-0")!=-Infinity||m&&!r((function(){u(Object(m))}));e.exports=p?function(e){var t=c(i(e)),n=u(t);return 0===n&&"-"==d(t,0)?-0:n}:u},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,u=o.Symbol,s=u&&u.iterator,m=/^[+-]?0x/i,p=a(m.exec),f=8!==d(l+"08")||22!==d(l+"0x16")||s&&!r((function(){d(Object(s))}));e.exports=f?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),u=n(73502),s=n(83609),m=Object.assign,p=Object.defineProperty,f=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=u(e),r=arguments.length,i=1,m=l.f,p=d.f;r>i;)for(var h,C=s(arguments[i++]),N=m?f(c(C),m(C)):c(C),b=N.length,V=0;b>V;)h=N[V++],o&&!a(p,C,h)||(n[h]=C[h]);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),u=n(95541),s=u("IE_PROTO"),m=function(){},p=function(e){return"