diff --git a/code/__defines/planets.dm b/code/__defines/planets.dm index da67d42ea2..3579cc804d 100644 --- a/code/__defines/planets.dm +++ b/code/__defines/planets.dm @@ -11,6 +11,7 @@ #define WEATHER_BLOOD_MOON "blood moon" // For admin fun or cult later on. #define WEATHER_EMBERFALL "emberfall" // More adminbuse, from TG. Harmless. #define WEATHER_ASH_STORM "ash storm" // Ripped from TG, like the above. Less harmless. +#define WEATHER_ASH_STORM_SAFE "light ash storm" //Safe version of the ash storm. Dimmer. #define WEATHER_FALLOUT "fallout" // Modified emberfall, actually harmful. Admin only. #define MOON_PHASE_NEW_MOON "new moon" diff --git a/code/__defines/species_languages_vr.dm b/code/__defines/species_languages_vr.dm index e8cf9a88b9..ec9165653d 100644 --- a/code/__defines/species_languages_vr.dm +++ b/code/__defines/species_languages_vr.dm @@ -13,5 +13,7 @@ #define LANGUAGE_ECHOSONG "Echo Song" #define LANGUAGE_ANIMAL "Animal" +#define LANGUAGE_TEPPI "Teppi" +#define LANGUAGE_MOUSE "Mouse" #define LANGUAGE_SHADEKIN "Shadekin Empathy" diff --git a/code/_helpers/turfs.dm b/code/_helpers/turfs.dm index ddfcec7421..515370c50d 100644 --- a/code/_helpers/turfs.dm +++ b/code/_helpers/turfs.dm @@ -156,7 +156,8 @@ for(var/obj/O in T) if(O.simulated) O.loc = X - O.update_light() + if(O.light_system == STATIC_LIGHT) + O.update_light() if(z_level_change) // The objects still need to know if their z-level changed. O.onTransitZ(T.z, X.z) diff --git a/code/controllers/subsystems/xenoarch.dm b/code/controllers/subsystems/xenoarch.dm index a175625b1f..111653fc68 100644 --- a/code/controllers/subsystems/xenoarch.dm +++ b/code/controllers/subsystems/xenoarch.dm @@ -1,8 +1,8 @@ #define XENOARCH_SPAWN_CHANCE 0.5 #define DIGSITESIZE_LOWER 4 #define DIGSITESIZE_UPPER 12 -#define ARTIFACTSPAWNNUM_LOWER 6 -#define ARTIFACTSPAWNNUM_UPPER 12 +#define ARTIFACTSPAWNNUM_LOWER 12 +#define ARTIFACTSPAWNNUM_UPPER 24 // // Xenoarch subsystem handles initialization of Xenoarcheaology artifacts and digsites. diff --git a/code/game/jobs/job/captain_vr.dm b/code/game/jobs/job/captain_vr.dm index a055ce9590..b77163d727 100644 --- a/code/game/jobs/job/captain_vr.dm +++ b/code/game/jobs/job/captain_vr.dm @@ -14,6 +14,9 @@ /datum/alt_title/captain title = "Captain" +/datum/job/captain/get_request_reasons() + return list("Training crew") + /datum/job/hop disallow_jobhop = TRUE pto_type = PTO_CIVILIAN @@ -46,6 +49,9 @@ /datum/alt_title/facility_steward title = "Facility Steward" +/datum/job/hop/get_request_reasons() + return list("ID modification", "Training crew") + /datum/job/secretary disallow_jobhop = TRUE diff --git a/code/game/jobs/job/civilian_vr.dm b/code/game/jobs/job/civilian_vr.dm index 0a400a1a28..cdcbdbe27d 100644 --- a/code/game/jobs/job/civilian_vr.dm +++ b/code/game/jobs/job/civilian_vr.dm @@ -57,6 +57,9 @@ /datum/alt_title/cargo_supervisor title = "Cargo Supervisor" +/datum/job/qm/get_request_reasons() + return list("Training crew") + /datum/job/cargo_tech total_positions = 3 diff --git a/code/game/jobs/job/engineering_vr.dm b/code/game/jobs/job/engineering_vr.dm index 8e2a16fec5..c44f6f5cb9 100644 --- a/code/game/jobs/job/engineering_vr.dm +++ b/code/game/jobs/job/engineering_vr.dm @@ -24,7 +24,7 @@ title = "Maintenance Manager" /datum/job/chief_engineer/get_request_reasons() - return list("Engine setup", "Construction project", "Repairs necessary") + return list("Engine setup", "Construction project", "Repairs necessary", "Training crew") /datum/job/engineer diff --git a/code/game/jobs/job/exploration_vr.dm b/code/game/jobs/job/exploration_vr.dm index 69e69c15d8..6390e6d5b5 100644 --- a/code/game/jobs/job/exploration_vr.dm +++ b/code/game/jobs/job/exploration_vr.dm @@ -55,6 +55,9 @@ /datum/alt_title/exploration_manager title = "Exploration Manager" +/datum/job/pathfinder/get_request_reasons() + return list("Training crew") + /datum/job/explorer title = "Explorer" flag = EXPLORER diff --git a/code/game/jobs/job/medical_vr.dm b/code/game/jobs/job/medical_vr.dm index 0cf24400bb..6fab4e1ce1 100644 --- a/code/game/jobs/job/medical_vr.dm +++ b/code/game/jobs/job/medical_vr.dm @@ -22,7 +22,7 @@ title = "Healthcare Manager" /datum/job/cmo/get_request_reasons() - return list("Surgery pending", "Viral outbreak") + return list("Surgery pending", "Viral outbreak", "Training crew") /datum/job/doctor diff --git a/code/game/jobs/job/science_vr.dm b/code/game/jobs/job/science_vr.dm index 01a2d5004a..37bc168901 100644 --- a/code/game/jobs/job/science_vr.dm +++ b/code/game/jobs/job/science_vr.dm @@ -25,6 +25,9 @@ /datum/alt_title/head_scientist title = "Head Scientist" +/datum/job/rd/get_request_reasons() + return list("Repairs needed", "Training crew") + /datum/job/scientist spawn_positions = 5 @@ -88,6 +91,9 @@ /datum/alt_title/assembly_tech title = "Assembly Technician" +/datum/job/roboticist/get_request_reasons() + return list("Repairs needed") + ////////////////////////////////// // Xenobotanist ////////////////////////////////// diff --git a/code/game/jobs/job/security_vr.dm b/code/game/jobs/job/security_vr.dm index 2ab3925c31..232c9be332 100644 --- a/code/game/jobs/job/security_vr.dm +++ b/code/game/jobs/job/security_vr.dm @@ -17,7 +17,7 @@ title = "Security Manager" /datum/job/hos/get_request_reasons() - return list("Wildlife management", "Forensic investigation") + return list("Wildlife management", "Forensic investigation", "Training crew") /datum/job/warden diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm index 232ef11600..bf6e0700c0 100644 --- a/code/game/objects/items/weapons/storage/wallets.dm +++ b/code/game/objects/items/weapons/storage/wallets.dm @@ -36,7 +36,8 @@ /obj/item/weapon/stamp, /obj/item/clothing/accessory/permit, /obj/item/clothing/accessory/badge, - /obj/item/weapon/makeover + /obj/item/weapon/makeover, + /obj/item/pizzavoucher //VOREStation edit ) cant_hold = list(/obj/item/weapon/tool/screwdriver/power) slot_flags = SLOT_ID diff --git a/code/game/objects/micro_structures.dm b/code/game/objects/micro_structures.dm new file mode 100644 index 0000000000..32955ed772 --- /dev/null +++ b/code/game/objects/micro_structures.dm @@ -0,0 +1,397 @@ +/obj/structure/micro_tunnel + name = "mouse hole" + desc = "A tiny little hole... where does it go?" + icon = 'icons/obj/structures/micro_structures.dmi' + icon_state = "mouse_hole" + + anchored = TRUE + density = FALSE + + 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() + . = ..() + if(name == initial(name)) + var/area/our_area = get_area(src) + name = "[our_area.name] [name]" + 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)) + thing.cancel_camera() + + 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) + pixel_y = 32 + if(2) + pixel_y = -32 + if(4) + pixel_x = 32 + if(8) + pixel_x = -32 + +/obj/structure/micro_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", "Cancel")) + switch(choice) + if("Exit") + if(user.loc != src) + to_chat(user, "You can't do that unless you're in \the [src].") + return + + user.forceMove(get_turf(src.loc)) + user.cancel_camera() + user.visible_message("\The [user] climbs out of \the [src]!") + return + if("Move") + if(user.loc != src) + to_chat(user, "You can't do that unless you're in \the [src].") + return + + var/list/destinations = list() + var/turf/myturf = get_turf(src.loc) + var/datum/planet/planet + for(var/datum/planet/P in SSplanets.planets) + if(myturf.z in P.expected_z_levels) + planet = P + else + for(var/obj/structure/micro_tunnel/t in world) + if(t == src) + continue + if(magic || t.magic) + destinations |= t + continue + if(t.z == z) + destinations |= t + continue + var/turf/targetturf = get_turf(t.loc) + if(planet) + if(targetturf.z in planet.expected_z_levels) + destinations |= t + continue + else + var/above = GetAbove(myturf) + if(above && t.z == z + 1) + destinations |= t + continue + var/below = GetBelow(myturf) + if(below && t.z == z - 1) + destinations |= t + + if(!destinations.len) + to_chat(user, "There are no other tunnels connected to this one!") + return + 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...") + 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 + if("Cancel") + 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)) + if(!l.attempt_to_scoop(h)) + l.forceMove(get_turf(src.loc)) + 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)) + if(!l.attempt_to_scoop(a)) + l.forceMove(get_turf(src.loc)) + 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_tunnel/proc/can_enter(var/mob/living/user) + if(user.mob_size <= MOB_TINY || user.get_effective_size(TRUE) <= micro_accepted_scale) + return TRUE + + return FALSE + +/obj/structure/micro_tunnel/attack_generic(mob/user, damage, attack_verb) + attack_hand(user) + return ..() + +/obj/structure/micro_tunnel/MouseDrop_T(mob/living/M, mob/living/user) + . = ..() + if(M != user) + 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_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) + if(thing == user) + continue + 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_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") + if(usr.loc != src) + to_chat(usr, "You can't do that unless you're in \the [src].") + return + + usr.forceMove(get_turf(src.loc)) + usr.cancel_camera() + usr.visible_message("\The [usr] climbs out of \the [src]!") + return + + if("Move") + if(usr.loc != src) + to_chat(usr, "You can't do that unless you're in \the [src].") + return + 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) + 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.") + + 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 [our_choice]. . .") + 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) + if(!l.attempt_to_scoop(h)) + l.forceMove(get_turf(src.loc)) + 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)) + if(!l.attempt_to_scoop(a)) + l.forceMove(get_turf(src.loc)) + 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 + + 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) + 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 " + 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]. . .") + +/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/code/game/objects/objs.dm b/code/game/objects/objs.dm index b9e462190a..b9a0f53c7d 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("\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) diff --git a/code/game/sound.dm b/code/game/sound.dm index 4fef9f41ed..0833824224 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -13,9 +13,11 @@ // Looping through the player list has the added bonus of working for mobs inside containers var/sound/S = sound(get_sfx(soundin)) var/maxdistance = (world.view + extrarange) * 2 //VOREStation Edit - 3 to 2 - var/list/listeners = player_list + var/list/listeners = player_list.Copy() if(!ignore_walls) //these sounds don't carry through walls - listeners = listeners & hearers(maxdistance,turf_source) + for(var/mob/listen in listeners) + if(!(get_turf(listen) in hear(maxdistance,source))) + listeners -= listen for(var/mob/M as anything in listeners) if(!M || !M.client) continue diff --git a/code/modules/admin/verbs/buildmode.dm b/code/modules/admin/verbs/buildmode.dm index f4715c8f1c..d9aacdcaca 100644 --- a/code/modules/admin/verbs/buildmode.dm +++ b/code/modules/admin/verbs/buildmode.dm @@ -627,6 +627,9 @@ /obj/effect/bmode/buildmode/proc/get_path_from_partial_text(default_path) var/desired_path = tgui_input_text(usr, "Enter full or partial typepath.","Typepath","[default_path]") + if(!desired_path) //VOREStation Add - If you don't give it anything it builds a list of every possible thing in the game and crashes your client. + return //VOREStation Add - And the main way for it to do that is to push the cancel button, which should just do nothing. :U + var/list/types = typesof(/atom) var/list/matches = list() @@ -705,4 +708,4 @@ #undef BUILDMODE_CONTENTS #undef BUILDMODE_LIGHTS #undef BUILDMODE_AI -#undef LAST_BUILDMODE \ No newline at end of file +#undef LAST_BUILDMODE diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 282c1c6cca..abf234d901 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -779,7 +779,7 @@ var/image/standing = ..() if(taurized) //Special snowflake var on suits standing.pixel_x = -16 - standing.layer = BODY_LAYER + 16 // 16 is above tail layer, so will not be covered by taurbody. + standing.layer = BODY_LAYER + 17 // 17 is above tail layer, so will not be covered by taurbody. TAIL_UPPER_LAYER +1 return standing /obj/item/clothing/suit/apply_accessories(var/image/standing) diff --git a/code/modules/mob/language/monkey.dm b/code/modules/mob/language/animal.dm similarity index 95% rename from code/modules/mob/language/monkey.dm rename to code/modules/mob/language/animal.dm index 8224ca7aa8..9135babe24 100644 --- a/code/modules/mob/language/monkey.dm +++ b/code/modules/mob/language/animal.dm @@ -9,7 +9,7 @@ machine_understands = 0 /datum/language/mouse - name = "Mouse" + name = LANGUAGE_MOUSE desc = "A set of squeaks that only mice can understand." speech_verb = "squeaks" ask_verb = "squeaks" @@ -21,7 +21,7 @@ syllables = list("squeak") // , "gripes", "oi", "meow") /datum/language/teppi - name = "Teppi" + name = LANGUAGE_TEPPI desc = "A set of gyohs that only teppi can understand." speech_verb = "rumbles" ask_verb = "tilts" diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 91c4658afd..c47b69749e 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -389,6 +389,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/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/mob/living/carbon/human/species/station/traits_vr/negative.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm index f3cbc7534f..b1c6f480a8 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 @@ -176,7 +176,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 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/living/simple_mob/simple_mob_vr.dm b/code/modules/mob/living/simple_mob/simple_mob_vr.dm index 72cf906d67..460834e2cb 100644 --- a/code/modules/mob/living/simple_mob/simple_mob_vr.dm +++ b/code/modules/mob/living/simple_mob/simple_mob_vr.dm @@ -84,6 +84,7 @@ voremob_awake = TRUE update_fullness() if(!vore_fullness) + update_transform() return 0 else if((stat == CONSCIOUS) && (!icon_rest || !resting || !incapacitated(INCAPACITATION_DISABLED)) && (vore_icons & SA_ICON_LIVING)) icon_state = "[icon_living]-[vore_fullness]" @@ -370,7 +371,7 @@ if(buckle_mob(M)) visible_message("[M] starts riding [name]!") -/mob/living/simple_mob/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) +/mob/living/simple_mob/handle_message_mode(message_mode, message, verb, used_radios, speaking, alt_name) if(mob_radio) switch(message_mode) if("intercom") diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm index 7a6a3458d9..c5b5e14276 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm @@ -51,7 +51,7 @@ say_list_type = /datum/say_list/catslug player_msg = "You have escaped the foul weather, into this much more pleasant place. You are an intelligent creature capable of more than most think. You can pick up and use many things, and even carry some of them with you into the vents, which you can use to move around quickly. You're quiet and capable, you speak with your hands and your deeds!
- - - - -
Keep in mind, your goal should generally be to survive. You're expected to follow the same rules as everyone else, so don't go self antagging without permission from the staff team, but you are able and capable of defending yourself from those who would attack you for no reason." - has_langs = list("Sign Language") + has_langs = list(LANGUAGE_SIGN) var/picked_color = FALSE diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm index 036e07c2d4..55dd265705 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm @@ -128,7 +128,7 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have? mob_size = MOB_LARGE - has_langs = list("Teppi") + has_langs = list(LANGUAGE_TEPPI) say_list_type = /datum/say_list/teppi player_msg = "Teppi are large omnivorous quadrupeds. You have four toes on each paw, a long, strong tail, and are quite tough and powerful. You’re a lot more intimidating than you are actually harmful though. Your kind are ordinarily rather passive, only really rising to violence when someone does violence to you or others like you. You’re not stupid though, you can commiunicate with others of your kind, and form bonds with those who are kind to you, be they Teppi or otherwise.
- - - - -
While you may have access to galactic common, this is purely meant for making it so you can understand people in an OOC manner, for facilitating roleplay. You almost certainly should not be speaking to people or roleplaying as though you understand everything everyone says perfectly, but it's not unreasonable to be able to intuit intent and such through people's tones when they speak. Teppi are kind of smart, but they are animals, and should be roleplayed as such. ADDITIONALLY, you have the ability to produce offspring if you're well fed enough every once in a while, and the ability to disable this from happening to you. These verbs exist for to preserve the mechanical functionality of the mob you are playing. You should be aware of your surroundings when you use this verb, and NEVER use it to prefbreak or be disruptive. If in doubt, don't use it. Also, to note, AI Teppi will never initiate breeding with player Teppi." loot_list = list(/obj/item/weapon/bone/horn = 100) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/chicken.dm b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/chicken.dm index e8f44b020b..4e9a8d4107 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/chicken.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/farm animals/chicken.dm @@ -22,7 +22,7 @@ GLOBAL_VAR_INIT(chicken_count, 0) // How mant chickens DO we have? organ_names = /decl/mob_organ_names/chicken - has_langs = list("Bird") + has_langs = list(LANGUAGE_ANIMAL) say_list_type = /datum/say_list/chicken @@ -122,7 +122,7 @@ GLOBAL_VAR_INIT(chicken_count, 0) // How mant chickens DO we have? response_harm = "kicks" attacktext = list("kicked") - has_langs = list("Bird") + has_langs = list(LANGUAGE_ANIMAL) say_list_type = /datum/say_list/chick diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm index 266174b7c3..e0184b210a 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm @@ -32,7 +32,7 @@ minbodytemp = 223 //Below -50 Degrees Celcius maxbodytemp = 323 //Above 50 Degrees Celcius - has_langs = list("Mouse") + has_langs = list(LANGUAGE_MOUSE) holder_type = /obj/item/weapon/holder/mouse meat_amount = 1 diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/penguin.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/penguin.dm index 5616b4b524..dd312988ec 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/penguin.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/penguin.dm @@ -24,7 +24,7 @@ melee_damage_upper = 15 attacktext = list("pecked") - has_langs = list("Bird") + has_langs = list(LANGUAGE_ANIMAL) /mob/living/simple_mob/animal/passive/penguin/tux name = "Tux" diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/bird.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/bird.dm index d7c2bf37db..af1c72ca54 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/pets/bird.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/bird.dm @@ -28,7 +28,7 @@ attacktext = list("clawed", "pecked") speak_emote = list("chirps", "caws") - has_langs = list("Bird") + has_langs = list(LANGUAGE_ANIMAL) response_help = "pets" response_disarm = "gently moves aside" response_harm = "swats" diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm index c29ce4d137..241d00714f 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat.dm @@ -46,7 +46,7 @@ var/list/_cat_default_emotes = list( holder_type = /obj/item/weapon/holder/cat mob_size = MOB_SMALL - has_langs = list("Cat") + has_langs = list(LANGUAGE_ANIMAL) var/mob/living/friend = null // Our best pal, who we'll follow. Meow. var/named = FALSE //have I been named yet? diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm index 2b8e67b513..33acad33df 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm @@ -17,7 +17,7 @@ mob_size = MOB_SMALL - has_langs = list("Dog") + has_langs = list(LANGUAGE_ANIMAL) say_list_type = /datum/say_list/dog diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/fennec.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/fennec.dm index 0408c7ff27..249af03a4e 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/pets/fennec.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/fennec.dm @@ -15,7 +15,7 @@ holder_type = /obj/item/weapon/holder/fennec mob_size = MOB_SMALL - has_langs = list("Cat, Dog") //they're similar, why not. + has_langs = list(LANGUAGE_ANIMAL) /mob/living/simple_mob/animal/passive/fennec/faux name = "faux" diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm index d64810ff1d..c03327b5bd 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/parrot.dm @@ -3,7 +3,7 @@ name = "parrot" description_info = "You can give it a headset by clicking on it with a headset. \ To remove it, click the bird while on grab intent." - has_langs = list("Galactic Common", "Bird") + has_langs = list(LANGUAGE_GALCOM, LANGUAGE_ANIMAL) ai_holder_type = /datum/ai_holder/simple_mob/passive/parrot diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/bats.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/bats.dm index 595e3557cf..f4c4719059 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/space/bats.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/bats.dm @@ -30,7 +30,7 @@ ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive - has_langs = list("Mouse") + has_langs = list(LANGUAGE_MOUSE, LANGUAGE_ECHOSONG) // Haha squeak meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_amount = 2 diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/goose.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/goose.dm index 840b424994..875434ebea 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/space/goose.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/goose.dm @@ -23,7 +23,7 @@ organ_names = /decl/mob_organ_names/goose - has_langs = list("Bird") + has_langs = list(LANGUAGE_ANIMAL) meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/chicken meat_amount = 3 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm b/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm index 4b36fb7b1e..02cf178447 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/c_pet.dm @@ -39,7 +39,7 @@ "rad" = 0 ) - has_langs = list("Animal") + has_langs = list(LANGUAGE_ANIMAL) /mob/living/simple_mob/animal/passive/honkpet/attack_hand(mob/living/user as mob) if(user.a_intent == I_DISARM) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm index ee27fb1c97..c84ab019f9 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm @@ -18,7 +18,7 @@ has_hands = TRUE //Pawbs seedarkness = FALSE //SHAAAADEkin attack_sound = 'sound/weapons/bladeslice.ogg' - has_langs = list(LANGUAGE_GALCOM,LANGUAGE_SHADEKIN) + has_langs = list(LANGUAGE_GALCOM, LANGUAGE_SHADEKIN) melee_damage_lower = 10 melee_damage_upper = 20 @@ -212,7 +212,7 @@ phase_shift() // shifting back in, nobody present else if (non_kin_count && !(ability_flags & AB_PHASE_SHIFTED)) phase_shift() // shifting out, scaredy - + /mob/living/simple_mob/shadekin/update_icon() . = ..() diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/softdog.dm b/code/modules/mob/living/simple_mob/subtypes/vore/softdog.dm index be4e903681..f6a3a0a973 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/softdog.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/softdog.dm @@ -50,7 +50,7 @@ mob_size = MOB_SMALL - has_langs = list("Dog", "Canilunzt", "Galactic Common") + has_langs = list(LANGUAGE_ANIMAL, LANGUAGE_CANILUNZT, LANGUAGE_GALCOM) say_list_type = /datum/say_list/softdog swallowTime = 0.1 SECONDS 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/code/modules/organs/pain.dm b/code/modules/organs/pain.dm index 1d374ab7f0..6cf236bc19 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)) //VOREStation Edit Start + var/mob/living/carbon/human/H = src + maxdam *= H.species.trauma_mod //VOREStation edit end if(damaged_organ && chem_effects[CE_PAINKILLER] < maxdam) if(maxdam > 10 && paralysis) AdjustParalysis(-round(maxdam/10)) diff --git a/code/modules/planet/virgo3b_vr.dm b/code/modules/planet/virgo3b_vr.dm index 9e76fd1eda..b3e6d136fb 100644 --- a/code/modules/planet/virgo3b_vr.dm +++ b/code/modules/planet/virgo3b_vr.dm @@ -99,18 +99,19 @@ var/datum/planet/virgo3b/planet_virgo3b = null /datum/weather_holder/virgo3b temperature = T0C allowed_weather_types = list( - WEATHER_CLEAR = new /datum/weather/virgo3b/clear(), - WEATHER_OVERCAST = new /datum/weather/virgo3b/overcast(), - WEATHER_LIGHT_SNOW = new /datum/weather/virgo3b/light_snow(), - WEATHER_SNOW = new /datum/weather/virgo3b/snow(), - WEATHER_BLIZZARD = new /datum/weather/virgo3b/blizzard(), - WEATHER_RAIN = new /datum/weather/virgo3b/rain(), - WEATHER_STORM = new /datum/weather/virgo3b/storm(), - WEATHER_HAIL = new /datum/weather/virgo3b/hail(), - WEATHER_BLOOD_MOON = new /datum/weather/virgo3b/blood_moon(), - WEATHER_EMBERFALL = new /datum/weather/virgo3b/emberfall(), - WEATHER_ASH_STORM = new /datum/weather/virgo3b/ash_storm(), - WEATHER_FALLOUT = new /datum/weather/virgo3b/fallout() + WEATHER_CLEAR = new /datum/weather/virgo3b/clear(), + WEATHER_OVERCAST = new /datum/weather/virgo3b/overcast(), + WEATHER_LIGHT_SNOW = new /datum/weather/virgo3b/light_snow(), + WEATHER_SNOW = new /datum/weather/virgo3b/snow(), + WEATHER_BLIZZARD = new /datum/weather/virgo3b/blizzard(), + WEATHER_RAIN = new /datum/weather/virgo3b/rain(), + WEATHER_STORM = new /datum/weather/virgo3b/storm(), + WEATHER_HAIL = new /datum/weather/virgo3b/hail(), + WEATHER_BLOOD_MOON = new /datum/weather/virgo3b/blood_moon(), + WEATHER_EMBERFALL = new /datum/weather/virgo3b/emberfall(), + WEATHER_ASH_STORM = new /datum/weather/virgo3b/ash_storm(), + WEATHER_ASH_STORM_SAFE = new /datum/weather/virgo3b/ash_storm_safe(), + WEATHER_FALLOUT = new /datum/weather/virgo3b/fallout() ) roundstart_weather_chances = list( WEATHER_CLEAR = 30, @@ -479,6 +480,27 @@ var/datum/planet/virgo3b/planet_virgo3b = null L.inflict_heat_damage(rand(1, 3)) +/datum/weather/virgo3b/ash_storm_safe + name = "light ash storm" + icon_state = "ashfall_moderate" + light_modifier = 0.1 + light_color = "#FF0000" + temp_high = 323.15 // 50c + temp_low = 313.15 // 40c + wind_high = 6 + wind_low = 3 + flight_failure_modifier = 50 + transition_chances = list( + WEATHER_ASH_STORM_SAFE = 100 + ) + observed_message = "All that can be seen is black smoldering ash." + transition_messages = list( + "Smoldering clouds of scorching ash billow down around you!" + ) + // Lets recycle. + outdoor_sounds_type = /datum/looping_sound/weather/outside_blizzard + indoor_sounds_type = /datum/looping_sound/weather/inside_blizzard + // Totally radical. /datum/weather/virgo3b/fallout diff --git a/code/modules/planet/virgo3c_vr.dm b/code/modules/planet/virgo3c_vr.dm index 3afd9ca6c4..c4bd17c84f 100644 --- a/code/modules/planet/virgo3c_vr.dm +++ b/code/modules/planet/virgo3c_vr.dm @@ -119,18 +119,19 @@ var/datum/planet/virgo3c/planet_virgo3c = null /datum/weather_holder/virgo3c temperature = T0C allowed_weather_types = list( - WEATHER_CLEAR = new /datum/weather/virgo3c/clear(), - WEATHER_OVERCAST = new /datum/weather/virgo3c/overcast(), - WEATHER_LIGHT_SNOW = new /datum/weather/virgo3c/light_snow(), - WEATHER_SNOW = new /datum/weather/virgo3c/snow(), - WEATHER_BLIZZARD = new /datum/weather/virgo3c/blizzard(), - WEATHER_RAIN = new /datum/weather/virgo3c/rain(), - WEATHER_STORM = new /datum/weather/virgo3c/storm(), - WEATHER_HAIL = new /datum/weather/virgo3c/hail(), - WEATHER_BLOOD_MOON = new /datum/weather/virgo3c/blood_moon(), - WEATHER_EMBERFALL = new /datum/weather/virgo3c/emberfall(), - WEATHER_ASH_STORM = new /datum/weather/virgo3c/ash_storm(), - WEATHER_FALLOUT = new /datum/weather/virgo3c/fallout() + WEATHER_CLEAR = new /datum/weather/virgo3c/clear(), + WEATHER_OVERCAST = new /datum/weather/virgo3c/overcast(), + WEATHER_LIGHT_SNOW = new /datum/weather/virgo3c/light_snow(), + WEATHER_SNOW = new /datum/weather/virgo3c/snow(), + WEATHER_BLIZZARD = new /datum/weather/virgo3c/blizzard(), + WEATHER_RAIN = new /datum/weather/virgo3c/rain(), + WEATHER_STORM = new /datum/weather/virgo3c/storm(), + WEATHER_HAIL = new /datum/weather/virgo3c/hail(), + WEATHER_BLOOD_MOON = new /datum/weather/virgo3c/blood_moon(), + WEATHER_EMBERFALL = new /datum/weather/virgo3c/emberfall(), + WEATHER_ASH_STORM = new /datum/weather/virgo3c/ash_storm(), + WEATHER_ASH_STORM_SAFE = new /datum/weather/virgo3c/ash_storm_safe(), + WEATHER_FALLOUT = new /datum/weather/virgo3c/fallout() ) roundstart_weather_chances = list( WEATHER_CLEAR = 50, @@ -475,6 +476,30 @@ var/datum/planet/virgo3c/planet_virgo3c = null L.inflict_heat_damage(1) to_chat(L, "Smoldering ash singes you!") + + +//A non-lethal variant of the ash_storm. Stays on indefinitely. +/datum/weather/virgo3c/ash_storm_safe + name = "light ash storm" + icon_state = "ashfall_moderate" + light_modifier = 0.1 + light_color = "#FF0000" + temp_high = 313.15 // 40c + temp_low = 303.15 // 30c + wind_high = 6 + wind_low = 3 + flight_failure_modifier = 50 + transition_chances = list( + WEATHER_ASH_STORM_SAFE = 100 + ) + observed_message = "All that can be seen is black smoldering ash." + transition_messages = list( + "Smoldering clouds of scorching ash billow down around you!" + ) + // Lets recycle. + outdoor_sounds_type = /datum/looping_sound/weather/outside_blizzard + indoor_sounds_type = /datum/looping_sound/weather/inside_blizzard + // Totally radical. /datum/weather/virgo3c/fallout name = "fallout" @@ -543,6 +568,7 @@ VIRGO3C_TURF_CREATE(/turf/simulated/floor/reinforced) VIRGO3C_TURF_CREATE(/turf/simulated/floor/glass/reinforced) VIRGO3C_TURF_CREATE(/turf/simulated/floor/tiled/dark) VIRGO3C_TURF_CREATE(/turf/simulated/mineral) +VIRGO3C_TURF_CREATE(/turf/simulated/mineral/ignore_cavegen) VIRGO3C_TURF_CREATE(/turf/simulated/floor) VIRGO3C_TURF_CREATE(/turf/simulated/floor/wood) VIRGO3C_TURF_CREATE(/turf/simulated/floor/wood/sif) diff --git a/code/modules/planet/virgo4_vr.dm b/code/modules/planet/virgo4_vr.dm index f4e2118e80..9cb88591ad 100644 --- a/code/modules/planet/virgo4_vr.dm +++ b/code/modules/planet/virgo4_vr.dm @@ -98,18 +98,19 @@ var/datum/planet/virgo4/planet_virgo4 = null /datum/weather_holder/virgo4 temperature = T0C allowed_weather_types = list( - WEATHER_CLEAR = new /datum/weather/virgo4/clear(), - WEATHER_OVERCAST = new /datum/weather/virgo4/overcast(), - WEATHER_LIGHT_SNOW = new /datum/weather/virgo4/light_snow(), - WEATHER_SNOW = new /datum/weather/virgo4/snow(), - WEATHER_BLIZZARD = new /datum/weather/virgo4/blizzard(), - WEATHER_RAIN = new /datum/weather/virgo4/rain(), - WEATHER_STORM = new /datum/weather/virgo4/storm(), - WEATHER_HAIL = new /datum/weather/virgo4/hail(), - WEATHER_BLOOD_MOON = new /datum/weather/virgo4/blood_moon(), - WEATHER_EMBERFALL = new /datum/weather/virgo4/emberfall(), - WEATHER_ASH_STORM = new /datum/weather/virgo4/ash_storm(), - WEATHER_FALLOUT = new /datum/weather/virgo4/fallout() + WEATHER_CLEAR = new /datum/weather/virgo4/clear(), + WEATHER_OVERCAST = new /datum/weather/virgo4/overcast(), + WEATHER_LIGHT_SNOW = new /datum/weather/virgo4/light_snow(), + WEATHER_SNOW = new /datum/weather/virgo4/snow(), + WEATHER_BLIZZARD = new /datum/weather/virgo4/blizzard(), + WEATHER_RAIN = new /datum/weather/virgo4/rain(), + WEATHER_STORM = new /datum/weather/virgo4/storm(), + WEATHER_HAIL = new /datum/weather/virgo4/hail(), + WEATHER_BLOOD_MOON = new /datum/weather/virgo4/blood_moon(), + WEATHER_EMBERFALL = new /datum/weather/virgo4/emberfall(), + WEATHER_ASH_STORM = new /datum/weather/virgo4/ash_storm(), + WEATHER_ASH_STORM_SAFE = new /datum/weather/virgo4/ash_storm_safe(), + WEATHER_FALLOUT = new /datum/weather/virgo4/fallout() ) roundstart_weather_chances = list( WEATHER_CLEAR = 50, @@ -452,6 +453,28 @@ var/datum/planet/virgo4/planet_virgo4 = null L.inflict_heat_damage(rand(1, 3)) +//A non-lethal variant of the ash_storm. Stays on indefinitely. +/datum/weather/virgo4/ash_storm_safe + name = "light ash storm" + icon_state = "ashfall_moderate" + light_modifier = 0.1 + light_color = "#FF0000" + temp_high = 323.15 // 50c + temp_low = 313.15 // 40c + wind_high = 6 + wind_low = 3 + flight_failure_modifier = 50 + transition_chances = list( + WEATHER_ASH_STORM_SAFE = 100 + ) + observed_message = "All that can be seen is black smoldering ash." + transition_messages = list( + "Smoldering clouds of scorching ash billow down around you!" + ) + // Lets recycle. + outdoor_sounds_type = /datum/looping_sound/weather/outside_blizzard + indoor_sounds_type = /datum/looping_sound/weather/inside_blizzard + // Totally radical. /datum/weather/virgo4/fallout diff --git a/code/modules/rogueminer_vr/zonemaster.dm b/code/modules/rogueminer_vr/zonemaster.dm index 15d1887803..4826661d2d 100644 --- a/code/modules/rogueminer_vr/zonemaster.dm +++ b/code/modules/rogueminer_vr/zonemaster.dm @@ -171,8 +171,8 @@ #define XENOARCH_SPAWN_CHANCE 0.3 #define DIGSITESIZE_LOWER 4 #define DIGSITESIZE_UPPER 12 - #define ARTIFACTSPAWNNUM_LOWER 6 - #define ARTIFACTSPAWNNUM_UPPER 12 //Replace with difficulty-based ones. + #define ARTIFACTSPAWNNUM_LOWER 1 + #define ARTIFACTSPAWNNUM_UPPER 1 //Replace with difficulty-based ones. if(!M.mineral && prob(rm_controller.diffstep_chances[rm_controller.diffstep])) //Difficulty translates directly into ore chance rm_controller.dbg("ZM(par): Adding mineral to [M.x],[M.y].") diff --git a/code/modules/vore/eating/exportpanel_vr.dm b/code/modules/vore/eating/exportpanel_vr.dm new file mode 100644 index 0000000000..835fbcd03c --- /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"] = "vorestation" + 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/stumblevore_vr.dm b/code/modules/vore/eating/stumblevore_vr.dm index 7c17c604b3..cdaae1d5df 100644 --- a/code/modules/vore/eating/stumblevore_vr.dm +++ b/code/modules/vore/eating/stumblevore_vr.dm @@ -32,10 +32,10 @@ M.Weaken(4) M.stop_flying() if(CanStumbleVore(M)) - visible_message("[M] flops carlessly into [src]!") + visible_message("[M] flops carelessly into [src]!") perform_the_nom(src,M,src,src.vore_selected,1) else if(M.CanStumbleVore(src)) - visible_message("[M] flops carlessly into [src]!") + visible_message("[M] flops carelessly into [src]!") perform_the_nom(M,src,M,M.vore_selected,1) else if(istype(S) && S.species.lightweight == 1) visible_message("[M] carelessly bowls [src] over!") @@ -51,4 +51,4 @@ else visible_message("[M] trips over [src]!") M.forceMove(get_turf(src)) - M.apply_damage(1, BRUTE) \ No newline at end of file + M.apply_damage(1, BRUTE) 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/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) diff --git a/icons/effects/weather.dmi b/icons/effects/weather.dmi index 355288fc32..94c1fed992 100644 Binary files a/icons/effects/weather.dmi and b/icons/effects/weather.dmi differ diff --git a/icons/mob/human_races/subspecies/r_vatgrown.dmi b/icons/mob/human_races/subspecies/r_vatgrown.dmi index c1562d2b67..25680167e3 100644 Binary files a/icons/mob/human_races/subspecies/r_vatgrown.dmi and b/icons/mob/human_races/subspecies/r_vatgrown.dmi differ diff --git a/icons/mob/vore/wings96_vr.dmi b/icons/mob/vore/wings96_vr.dmi new file mode 100644 index 0000000000..f7dc2e61f8 Binary files /dev/null and b/icons/mob/vore/wings96_vr.dmi differ diff --git a/icons/obj/stacks.dmi b/icons/obj/stacks.dmi index b08f3b086a..ea1543413a 100644 Binary files a/icons/obj/stacks.dmi and b/icons/obj/stacks.dmi differ diff --git a/icons/obj/structures/micro_structures.dmi b/icons/obj/structures/micro_structures.dmi new file mode 100644 index 0000000000..f3096a1223 Binary files /dev/null and b/icons/obj/structures/micro_structures.dmi differ 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/eastwilds/eastwilds1.dmm b/maps/groundbase/eastwilds/eastwilds1.dmm index fc499a6095..8670910a0d 100644 --- a/maps/groundbase/eastwilds/eastwilds1.dmm +++ b/maps/groundbase/eastwilds/eastwilds1.dmm @@ -42,7 +42,7 @@ /turf/simulated/floor/outdoors/grass/forest/virgo3c, /area/submap/groundbase/wilderness/east) "y" = ( -/turf/simulated/mineral/ignore_cavegen, +/turf/simulated/mineral/ignore_cavegen/virgo3c, /area/submap/groundbase/wilderness/east) "B" = ( /obj/effect/landmark{ diff --git a/maps/groundbase/eastwilds/eastwilds2.dmm b/maps/groundbase/eastwilds/eastwilds2.dmm index 33a58e58c2..3b3c0e744f 100644 --- a/maps/groundbase/eastwilds/eastwilds2.dmm +++ b/maps/groundbase/eastwilds/eastwilds2.dmm @@ -26,7 +26,7 @@ }, /area/submap/groundbase/wilderness/east) "r" = ( -/turf/simulated/mineral/ignore_cavegen, +/turf/simulated/mineral/ignore_cavegen/virgo3c, /area/submap/groundbase/wilderness/east) "t" = ( /turf/simulated/floor/water/deep/virgo3c, diff --git a/maps/groundbase/gb-z1.dmm b/maps/groundbase/gb-z1.dmm index eb43eaa733..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 @@ -7436,7 +7441,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" = ( @@ -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/groundbase/northwilds/northwilds1.dmm b/maps/groundbase/northwilds/northwilds1.dmm index 68cd0f9113..a154b0c730 100644 --- a/maps/groundbase/northwilds/northwilds1.dmm +++ b/maps/groundbase/northwilds/northwilds1.dmm @@ -13,7 +13,7 @@ /turf/simulated/floor/outdoors/grass/forest/virgo3c, /area/submap/groundbase/wilderness/north) "m" = ( -/turf/simulated/mineral/ignore_cavegen, +/turf/simulated/mineral/ignore_cavegen/virgo3c, /area/submap/groundbase/wilderness/north) "p" = ( /obj/effect/map_effect/portal/master/side_a/gb_wilds/north_south, diff --git a/maps/groundbase/northwilds/northwilds2.dmm b/maps/groundbase/northwilds/northwilds2.dmm index 34cff8b6d3..aff13aac2a 100644 --- a/maps/groundbase/northwilds/northwilds2.dmm +++ b/maps/groundbase/northwilds/northwilds2.dmm @@ -22,7 +22,7 @@ /turf/simulated/floor/outdoors/grass/virgo3c, /area/submap/groundbase/wilderness/north) "m" = ( -/turf/simulated/mineral/ignore_cavegen, +/turf/simulated/mineral/ignore_cavegen/virgo3c, /area/submap/groundbase/wilderness/north) "o" = ( /turf/simulated/mineral/cave/virgo3c, diff --git a/maps/groundbase/southwilds/southwilds1.dmm b/maps/groundbase/southwilds/southwilds1.dmm index f2c050a458..237eb4ec4b 100644 --- a/maps/groundbase/southwilds/southwilds1.dmm +++ b/maps/groundbase/southwilds/southwilds1.dmm @@ -54,7 +54,7 @@ /turf/simulated/mineral/cave/virgo3c, /area/submap/groundbase/wilderness/south/cave) "Q" = ( -/turf/simulated/mineral/ignore_cavegen, +/turf/simulated/mineral/ignore_cavegen/virgo3c, /area/submap/groundbase/wilderness/south) "S" = ( /obj/effect/map_effect/portal/master/side_b/gb_wilds/south, diff --git a/maps/groundbase/southwilds/southwilds2.dmm b/maps/groundbase/southwilds/southwilds2.dmm index 9bd399620f..5e190301ec 100644 --- a/maps/groundbase/southwilds/southwilds2.dmm +++ b/maps/groundbase/southwilds/southwilds2.dmm @@ -41,7 +41,7 @@ /turf/simulated/floor/outdoors/grass/virgo3c, /area/submap/groundbase/wilderness/south) "Q" = ( -/turf/simulated/mineral/ignore_cavegen, +/turf/simulated/mineral/ignore_cavegen/virgo3c, /area/submap/groundbase/wilderness/south) "S" = ( /obj/effect/map_effect/portal/master/side_b/gb_wilds/south, diff --git a/maps/groundbase/southwilds/southwilds3.dmm b/maps/groundbase/southwilds/southwilds3.dmm index 14ee56a717..cfa03d4587 100644 --- a/maps/groundbase/southwilds/southwilds3.dmm +++ b/maps/groundbase/southwilds/southwilds3.dmm @@ -84,7 +84,7 @@ /turf/simulated/floor/outdoors/grass/virgo3c, /area/submap/groundbase/wilderness/south) "Q" = ( -/turf/simulated/mineral/ignore_cavegen, +/turf/simulated/mineral/ignore_cavegen/virgo3c, /area/submap/groundbase/wilderness/south) "S" = ( /obj/effect/map_effect/portal/master/side_b/gb_wilds/south, diff --git a/maps/groundbase/westwilds/westwilds1.dmm b/maps/groundbase/westwilds/westwilds1.dmm index d9ba406ce0..25fe159a36 100644 --- a/maps/groundbase/westwilds/westwilds1.dmm +++ b/maps/groundbase/westwilds/westwilds1.dmm @@ -2085,7 +2085,7 @@ /turf/simulated/floor, /area/groundbase/science/outpost/atmos) "zM" = ( -/turf/simulated/mineral/ignore_cavegen, +/turf/simulated/mineral/ignore_cavegen/virgo3c, /area/submap/groundbase/wilderness/west) "zP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/black, diff --git a/maps/groundbase/westwilds/westwilds2.dmm b/maps/groundbase/westwilds/westwilds2.dmm index f1f03cad6e..62fa99bf28 100644 --- a/maps/groundbase/westwilds/westwilds2.dmm +++ b/maps/groundbase/westwilds/westwilds2.dmm @@ -446,7 +446,7 @@ }, /area/submap/groundbase/wilderness/west) "fM" = ( -/turf/simulated/mineral/ignore_cavegen, +/turf/simulated/mineral/ignore_cavegen/virgo3c, /area/submap/groundbase/wilderness/west) "fQ" = ( /obj/machinery/chem_master, diff --git a/maps/stellar_delight/stellar_delight1.dmm b/maps/stellar_delight/stellar_delight1.dmm index 2a1622a32f..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" @@ -23668,7 +23767,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" = ( @@ -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/stellar_delight/stellar_delight_jobs.dm b/maps/stellar_delight/stellar_delight_jobs.dm index 2541edfd9c..312fc0befa 100644 --- a/maps/stellar_delight/stellar_delight_jobs.dm +++ b/maps/stellar_delight/stellar_delight_jobs.dm @@ -27,4 +27,7 @@ alt_titles = list("Brig Sentry" = /datum/alt_title/brig_sentry, "Armory Superintendent" = /datum/alt_title/armory_superintendent, "Master-at-Arms" = /datum/alt_title/master_at_arms) /datum/alt_title/master_at_arms - title = "Master-at-Arms" \ No newline at end of file + title = "Master-at-Arms" + +/datum/job/pilot/get_request_reasons() + return list("Moving Stellar Delight") \ No newline at end of file diff --git a/maps/submaps/pois_vr/debris_field/_templates.dm b/maps/submaps/pois_vr/debris_field/_templates.dm index 408647587f..b8d086a992 100644 --- a/maps/submaps/pois_vr/debris_field/_templates.dm +++ b/maps/submaps/pois_vr/debris_field/_templates.dm @@ -237,14 +237,14 @@ cost = 10 allow_duplicates = FALSE discard_prob = 10 - + /datum/map_template/debrisfield/new_escape_pod_infested_xeno name = "Xeno-Infested Escape Pod" mappath = 'new_escapepod_xeno.dmm' cost = 20 allow_duplicates = FALSE discard_prob = 25 - + /datum/map_template/debrisfield/new_escape_pod_infested_carp name = "Carp-Infested Escape Pod" mappath = 'new_escapepod_carp.dmm' @@ -266,7 +266,7 @@ allow_duplicates = FALSE discard_prob = 25 -/datum/map_template/debrisfield/gutted_mackerel +/datum/map_template/debrisfield/wrecked_salamander name = "Wrecked Salamander" mappath = 'maps/offmap_vr/om_ships/salamander_wreck.dmm' cost = 35 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 diff --git a/tgui/.gitignore b/tgui/.gitignore index bcdbd1c91a..7214051f09 100644 --- a/tgui/.gitignore +++ b/tgui/.gitignore @@ -15,6 +15,8 @@ package-lock.json ## Build artifacts /public/.tmp/**/* /public/*.map +/public/tgui-bench.bundle.js +/public/tgui-bench.bundle.css ## Previously ignored locations that are kept to avoid confusing git ## while transitioning to a new project structure. diff --git a/tgui/package.json b/tgui/package.json index 602af0324c..c8ea6dfb14 100644 --- a/tgui/package.json +++ b/tgui/package.json @@ -43,7 +43,6 @@ "eslint-plugin-radar": "^0.2.1", "eslint-plugin-react": "^7.30.0", "eslint-plugin-unused-imports": "^2.0.0", - "file-loader": "^6.2.0", "inferno": "^7.4.11", "jest": "^28.1.0", "jest-circus": "^28.1.0", @@ -56,7 +55,6 @@ "style-loader": "^3.3.1", "terser-webpack-plugin": "^5.3.1", "typescript": "^4.6.4", - "url-loader": "^4.1.1", "webpack": "^5.72.1", "webpack-bundle-analyzer": "^4.5.0", "webpack-cli": "^4.9.2" 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 26ee1c0bbd..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"