diff --git a/_build_dependencies.sh b/_build_dependencies.sh index b278c1115a..cf9e6ed7bd 100644 --- a/_build_dependencies.sh +++ b/_build_dependencies.sh @@ -4,8 +4,8 @@ export SPACEMAN_DMM_VERSION=suite-1.7 # For NanoUI + TGUI export NODE_VERSION=12 # Byond Major -export BYOND_MAJOR=513 +export BYOND_MAJOR=514 # Byond Minor -export BYOND_MINOR=1542 +export BYOND_MINOR=1557 # Macro Count export MACRO_COUNT=4 diff --git a/code/datums/outfits/jobs/medical.dm b/code/datums/outfits/jobs/medical.dm index 0ad0938db5..ca95c8b52e 100644 --- a/code/datums/outfits/jobs/medical.dm +++ b/code/datums/outfits/jobs/medical.dm @@ -92,7 +92,7 @@ /decl/hierarchy/outfit/job/medical/paramedic name = OUTFIT_JOB_NAME("Paramedic") - uniform = /obj/item/clothing/under/rank/medical/scrubs/black + uniform = /obj/item/clothing/under/rank/medical/paramedic suit = /obj/item/clothing/suit/storage/toggle/fr_jacket shoes = /obj/item/clothing/shoes/boots/jackboots l_hand = /obj/item/weapon/storage/firstaid/regular @@ -103,5 +103,5 @@ /decl/hierarchy/outfit/job/medical/paramedic/emt name = OUTFIT_JOB_NAME("Emergency Medical Technician") - uniform = /obj/item/clothing/under/rank/medical/paramedic + uniform = /obj/item/clothing/under/rank/medical/paramedic_alt suit = /obj/item/clothing/suit/storage/toggle/labcoat/emt diff --git a/code/datums/supplypacks/medical.dm b/code/datums/supplypacks/medical.dm index 69f198bbd4..eb7d350c5f 100644 --- a/code/datums/supplypacks/medical.dm +++ b/code/datums/supplypacks/medical.dm @@ -202,7 +202,7 @@ /obj/item/clothing/under/rank/medical/paramedic, /obj/item/clothing/suit/storage/toggle/fr_jacket, /obj/item/clothing/mask/gas, - /obj/item/clothing/under/rank/medical/paramedic, + /obj/item/clothing/under/rank/medical/paramedic_alt, /obj/item/clothing/accessory/stethoscope, /obj/item/weapon/storage/firstaid/adv, /obj/item/clothing/shoes/boots/jackboots, @@ -305,8 +305,8 @@ /datum/supply_pack/med/medicalbiosuits name = "Medical biohazard gear" contains = list( - /obj/item/clothing/head/bio_hood = 3, - /obj/item/clothing/suit/bio_suit = 3, + /obj/item/clothing/head/bio_hood/modern = 3, + /obj/item/clothing/suit/bio_suit/modern = 3, /obj/item/clothing/head/bio_hood/virology = 2, /obj/item/clothing/suit/bio_suit/cmo, /obj/item/clothing/head/bio_hood/cmo, diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index 40ce15d2b0..581284f9ac 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -73,12 +73,13 @@ charging = null charge_state = CHARGER_EMPTY - update_icon() if((stat & (BROKEN|NOPOWER)) || !anchored) update_use_power(USE_POWER_OFF) else update_use_power(USE_POWER_IDLE) + + update_icon() /obj/machinery/cell_charger/examine(mob/user) . = ..() @@ -130,16 +131,13 @@ if(charging) remove_item(user) user.visible_message("[user] removes [charging] from [src].", "You remove [charging] from [src].") - update_icon() /obj/machinery/cell_charger/attack_ai(mob/user) if(istype(user, /mob/living/silicon/robot) && Adjacent(user)) // Borgs can remove the cell if they are near enough if(charging) - user.visible_message("[user] removes [charging] from [src].", "You remove [charging] from [src].") - charging.loc = src.loc - charging.update_icon() - charging = null - update_icon() + remove_item(user) + user.visible_message("[user] disconnects [charging] from [src].", "You disconnect [charging] from [src].") + /obj/machinery/cell_charger/emp_act(severity) if(stat & (BROKEN|NOPOWER)) diff --git a/code/game/machinery/gear_dispenser.dm b/code/game/machinery/gear_dispenser.dm index a2723a2597..adb204e4d9 100644 --- a/code/game/machinery/gear_dispenser.dm +++ b/code/game/machinery/gear_dispenser.dm @@ -80,15 +80,16 @@ var/list/dispenser_presets = list() var/spawned = list() voidsuit = new voidsuit_type(T) - spawned += voidsuit + spawned += voidsuit // We only add the voidsuit so the game doesn't try to put the tank/helmet/boots etc into their hands + // If we're supposed to make a helmet if(voidhelmet_type) // The coder may not have realized this type spawns its own helmet if(voidsuit.helmet) error("[src] created a voidsuit [voidsuit] and wants to add a helmet but it already has one") else - voidsuit.attach_helmet(new voidhelmet_type()) - spawned += voidhelmet + voidhelmet = new voidhelmet_type() + voidsuit.attach_helmet(voidhelmet) // If we're supposed to make boots if(magboots_type) // The coder may not have realized thist ype spawns its own boots @@ -97,7 +98,6 @@ var/list/dispenser_presets = list() else magboots = new magboots_type(voidsuit) voidsuit.boots = magboots - spawned += magboots if(refit) voidsuit.refit_for_species(user.species?.get_bodytype()) // does helmet and boots if they're attached @@ -109,7 +109,6 @@ var/list/dispenser_presets = list() else var/obj/item/life_support = new /obj/item/device/suit_cooling_unit(voidsuit) voidsuit.cooler = life_support - spawned += life_support else if(user.species?.breath_type) if(voidsuit.tank) error("[src] created a voidsuit [voidsuit] and wants to add a tank but it already has one") @@ -121,7 +120,6 @@ var/list/dispenser_presets = list() if(tankpath) var/obj/item/life_support = new tankpath(voidsuit) voidsuit.tank = life_support - spawned += life_support else voidsuit.audible_message("Dispenser warning: Unable to locate suitable airtank for user.") @@ -567,6 +565,27 @@ var/list/dispenser_presets = list() one_setting = /datum/gear_disp/voidsuit/autolok special_frame = "frame_grey" +////////////////////////////// MOEBIUS SUIT DISPENSERS /////////////////////////// +/datum/gear_disp/voidsuit/aether + name = "Aether Voidsuit" + voidsuit_type = /obj/item/clothing/suit/space/void/aether + voidhelmet_type = /obj/item/clothing/head/helmet/space/void/aether + refit = FALSE // No animal sprites AAA! + +/obj/machinery/gear_dispenser/suit/aether + name = "\improper Aether Voidsuit Dispenser" + desc = "An industrial U-Tak-It Dispenser unit designed to fetch a specific Aether-produced high-end suit." + icon_state = "suitdispenserMB" + dispenser_flags = GD_ONEITEM|GD_NOGREED|GD_UNLIMITED + one_setting = /datum/gear_disp/voidsuit/aether + +/obj/machinery/gear_dispenser/suit_fancy/aether + name = "\improper Aether Voidsuit Dispenser" + desc = "A commercial U-Tak-It Dispenser unit designed to fetch a specific Aether-produced high-end suit." + dispenser_flags = GD_ONEITEM|GD_NOGREED|GD_UNLIMITED + one_setting = /datum/gear_disp/voidsuit/aether + special_frame = "frame_purple" + // Adminbuse /obj/machinery/gear_dispenser/vv_get_dropdown() . = ..() diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 6332bab79a..98155993ba 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -116,7 +116,7 @@ charging = null update_icon() -/obj/machinery/cell_charger/attack_ai(mob/user) +/obj/machinery/recharger/attack_ai(mob/user) if(istype(user, /mob/living/silicon/robot) && Adjacent(user)) // Borgs can remove the cell if they are near enough if(charging) user.visible_message("[user] removes [charging] from [src].", "You remove [charging] from [src].") diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 4704449c3b..f58f379045 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -662,9 +662,20 @@ /obj/item/weapon/storage/verb/quick_empty() set name = "Empty Contents" set category = "Object" + set src in view(1) - if(((!(ishuman(usr) || isrobot(usr))) && (src.loc != usr)) || usr.stat || usr.restrained()) + // Only humans and robots can dump contents + if(!(ishuman(usr) || isrobot(usr))) return + + // Hard to do when you're KO'd + if(usr.incapacitated()) + return + + // Has to be at least adjacent (just for safety, src in view should handle this already) + if(!Adjacent(usr)) + return + drop_contents() /obj/item/weapon/storage/proc/drop_contents() // why is this a proc? literally just for RPEDs diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index f023f3e395..38e173e3ff 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -10,8 +10,8 @@ var/list/climbers var/block_turf_edges = FALSE // If true, turf edge icons will not be made on the turf this occupies. - var/list/connections = list("0", "0", "0", "0") - var/list/other_connections = list("0", "0", "0", "0") + var/list/connections + var/list/other_connections var/list/blend_objects = newlist() // Objects which to blend with var/list/noblend_objects = newlist() //Objects to avoid blending with (such as children of listed blend objects. diff --git a/code/game/objects/structures/barricades.dm b/code/game/objects/structures/barricades.dm index 34ab6025c7..c60c48375e 100644 --- a/code/game/objects/structures/barricades.dm +++ b/code/game/objects/structures/barricades.dm @@ -144,7 +144,8 @@ var/image/I for(var/i = 1 to 4) - I = image('icons/obj/sandbags.dmi', "sandbags[connections[i]]", dir = 1<<(i-1)) + var/connect = connections?[i] || 0 + I = image('icons/obj/sandbags.dmi', "sandbags[connect]", dir = 1<<(i-1)) I.color = material.icon_colour add_overlay(I) diff --git a/code/game/objects/structures/catwalk.dm b/code/game/objects/structures/catwalk.dm index 58674def1a..e77abbaa6f 100644 --- a/code/game/objects/structures/catwalk.dm +++ b/code/game/objects/structures/catwalk.dm @@ -51,7 +51,8 @@ var/image/I if(!hatch_open) for(var/i = 1 to 4) - I = image(icon, "catwalk[connections[i]]", dir = 1<<(i-1)) + var/connect = connections?[i] || 0 + I = image(icon, "catwalk[connect]", dir = 1<<(i-1)) add_overlay(I) if(plating_color) I = image(icon, "plated") diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index a89601cc0a..a1412ba7a9 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -33,6 +33,7 @@ /obj/item/clothing/under/rank/nurse, /obj/item/clothing/under/rank/orderly, /obj/item/clothing/suit/storage/toggle/labcoat, + /obj/item/clothing/suit/storage/toggle/labcoat/modern, /obj/item/clothing/suit/storage/toggle/fr_jacket, /obj/item/clothing/shoes/white, /obj/item/weapon/cartridge/medical, @@ -127,6 +128,7 @@ /obj/item/clothing/under/rank/chief_medical_officer/skirt, /obj/item/clothing/suit/storage/toggle/labcoat/cmo, /obj/item/clothing/suit/storage/toggle/labcoat/cmoalt, + /obj/item/clothing/suit/storage/toggle/labcoat/modern/cmo, /obj/item/weapon/cartridge/cmo, /obj/item/clothing/gloves/sterile/latex, /obj/item/clothing/shoes/brown, diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 66383849f0..a3fdc31f24 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -33,6 +33,7 @@ /obj/item/clothing/under/rank/research_director/rdalt, /obj/item/clothing/under/rank/research_director/dress_rd, /obj/item/clothing/suit/storage/toggle/labcoat, + /obj/item/clothing/suit/storage/toggle/labcoat/modern, /obj/item/weapon/cartridge/rd, /obj/item/clothing/shoes/white, /obj/item/clothing/shoes/laceup/brown, @@ -54,6 +55,7 @@ starts_with = list( /obj/item/clothing/under/rank/scientist, /obj/item/clothing/suit/storage/toggle/labcoat, + /obj/item/clothing/suit/storage/toggle/labcoat/modern, /obj/item/clothing/shoes/white, /obj/item/weapon/melee/umbrella, // vorestation addition, /obj/item/clothing/glasses/science, diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index 6c88090e40..12a1119792 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -220,6 +220,7 @@ /obj/item/clothing/under/rank/scientist/skirt = 2, /obj/item/clothing/under/rank/scientist/turtleneck = 3, /obj/item/clothing/suit/storage/toggle/labcoat = 3, + /obj/item/clothing/suit/storage/toggle/labcoat/modern = 3, /obj/item/clothing/shoes/white = 3, /obj/item/clothing/shoes/slippers = 3, /obj/item/clothing/suit/storage/hooded/wintercoat/science, diff --git a/code/modules/admin/view_variables/topic_list.dm b/code/modules/admin/view_variables/topic_list.dm index c437a58a17..1f535f2b42 100644 --- a/code/modules/admin/view_variables/topic_list.dm +++ b/code/modules/admin/view_variables/topic_list.dm @@ -10,7 +10,7 @@ mod_list(target, null, "list", "contents", target_index, autodetect_class = FALSE) if(href_list[VV_HK_LIST_REMOVE]) var/variable = target[target_index] - var/prompt = tgui_alert(usr, "Do you want to remove item number [target_index] from list?", "Confirm", "Yes", "No") + var/prompt = tgui_alert(usr, "Do you want to remove item number [target_index] from list?", "Confirm", list("Yes", "No")) if (prompt != "Yes") return target.Cut(target_index, target_index+1) diff --git a/code/modules/busy_space_vr/organizations.dm b/code/modules/busy_space_vr/organizations.dm index 05df67ce87..ec30b2a2a8 100644 --- a/code/modules/busy_space_vr/organizations.dm +++ b/code/modules/busy_space_vr/organizations.dm @@ -1402,7 +1402,7 @@ ////////////////////////////////////////////////////////////////////////////////// // Other -/datum/lore/organization/other/kitsuhana //sorry KHI, but you're not a coherent stellar government, and you're definitely not a TSC. you get to go in the Others pool. +/datum/lore/organization/other/kitsuhana //sorry KHI, but you're not a coherent stellar government, and you're definitely not a TSC. you get to go in the Others pool. //makes sense to me! name = "Kitsuhana Heavy Industries" short_name = "" //whitespace haaaack desc = "A large post-scarcity amalgamation of races, Kitsuhana is no longer a company but rather a loose association of 'members' \ diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm index b41e350209..3b10b1c637 100644 --- a/code/modules/client/preference_setup/loadout/loadout_suit.dm +++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm @@ -135,43 +135,39 @@ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(hoodies)) /datum/gear/suit/labcoat - display_name = "labcoat" + display_name = "labcoat selection, public" path = /obj/item/clothing/suit/storage/toggle/labcoat -/datum/gear/suit/labcoat/blue - display_name = "labcoat, blue" - path = /obj/item/clothing/suit/storage/toggle/labcoat/blue +/datum/gear/suit/labcoat/New() + ..() + var/list/labcoats = list( + "White labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat, + "Blue-edge labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat/blue_edge, + "Green labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat/green, + "Orange labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat/orange, + "Purple labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat/purple, + "Pink labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat/pink, + "Red labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat/red, + "Yellow labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat/yellow + ) + gear_tweaks += new/datum/gear_tweak/path(labcoats) -/datum/gear/suit/labcoat/blue_edge - display_name = "labcoat, blue-edged" - path = /obj/item/clothing/suit/storage/toggle/labcoat/blue_edge +/datum/gear/suit/labcoat_cmo + display_name = "labcoat selection, cmo" + path = /obj/item/clothing/suit/storage/toggle/labcoat/cmo + allowed_roles = list("Chief Medical Officer") -/datum/gear/suit/labcoat/green - display_name = "labcoat, green" - path = /obj/item/clothing/suit/storage/toggle/labcoat/green - -/datum/gear/suit/labcoat/orange - display_name = "labcoat, orange" - path = /obj/item/clothing/suit/storage/toggle/labcoat/orange - -/datum/gear/suit/labcoat/purple - display_name = "labcoat, purple" - path = /obj/item/clothing/suit/storage/toggle/labcoat/purple - -/datum/gear/suit/labcoat/pink - display_name = "labcoat, pink" - path = /obj/item/clothing/suit/storage/toggle/labcoat/pink - -/datum/gear/suit/labcoat/red - display_name = "labcoat, red" - path = /obj/item/clothing/suit/storage/toggle/labcoat/red - -/datum/gear/suit/labcoat/yellow - display_name = "labcoat, yellow" - path = /obj/item/clothing/suit/storage/toggle/labcoat/yellow +/datum/gear/suit/labcoat_cmo/New() + ..() + var/list/labcoats = list( + "CMO labcoat" = /obj/item/clothing/suit/storage/toggle/labcoat/cmo, + "CMO labcoat (alt)" = /obj/item/clothing/suit/storage/toggle/labcoat/cmoalt, + "CMO labcoat (modern)" = /obj/item/clothing/suit/storage/toggle/labcoat/modern/cmo + ) + gear_tweaks += new/datum/gear_tweak/path(labcoats) /datum/gear/suit/labcoat/emt - display_name = "labcoat, EMT (Medical)" + display_name = "labcoat, EMT" path = /obj/item/clothing/suit/storage/toggle/labcoat/emt allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist") @@ -189,6 +185,11 @@ path = /obj/item/clothing/suit/storage/apron/overalls cost = 1 +/datum/gear/suit/cyberpunk + display_name = "cyberpunk jacket" + path = /obj/item/clothing/suit/cyberpunk + cost = 2 + /datum/gear/suit/poncho display_name = "poncho selection" path = /obj/item/clothing/accessory/poncho @@ -203,15 +204,10 @@ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(ponchos)) /datum/gear/suit/roles/poncho - display_name = "poncho, cargo" + display_name = "poncho selection, departments" path = /obj/item/clothing/accessory/poncho/roles/cargo cost = 1 -<<<<<<< HEAD -/datum/gear/suit/roles/poncho/security - display_name = "poncho, security" - path = /obj/item/clothing/accessory/poncho/roles/security -||||||| parent of cbed72f7ee... Merge pull request #11090 from VOREStation/Arokha/cloaks1pt /datum/gear/suit/roles/poncho/New() ..() var/list/ponchos = list( @@ -227,107 +223,59 @@ /datum/gear/suit/roles/cloak display_name = "cloak selection, departments" path = /obj/item/clothing/accessory/poncho/roles/cloak/cargo -======= -/datum/gear/suit/roles/poncho/New() + cost = 1 + +/datum/gear/suit/roles/cloak/New() ..() - var/list/ponchos = list( - "Cargo poncho" = /obj/item/clothing/accessory/poncho/roles/cargo, - "Security poncho" = /obj/item/clothing/accessory/poncho/roles/security, - "Medical poncho" = /obj/item/clothing/accessory/poncho/roles/medical, - "Engineering poncho" = /obj/item/clothing/accessory/poncho/roles/engineering, - "Science poncho" = /obj/item/clothing/accessory/poncho/roles/science + var/list/cloaks = list( + "Cargo cloak" = /obj/item/clothing/accessory/poncho/roles/cloak/cargo, + "Mining cloak" = /obj/item/clothing/accessory/poncho/roles/cloak/mining, + "Security cloak" = /obj/item/clothing/accessory/poncho/roles/cloak/security, + "Service cloak" = /obj/item/clothing/accessory/poncho/roles/cloak/service, + "Engineer cloak" = /obj/item/clothing/accessory/poncho/roles/cloak/engineer, + "Atmos cloak" = /obj/item/clothing/accessory/poncho/roles/cloak/atmos, + "Research cloak" = /obj/item/clothing/accessory/poncho/roles/cloak/research, + "Medical cloak" = /obj/item/clothing/accessory/poncho/roles/cloak/medical ) - gear_tweaks += new/datum/gear_tweak/path(ponchos) + gear_tweaks += new/datum/gear_tweak/path(cloaks) - -/datum/gear/suit/roles/cloak - display_name = "cloak selection, departments" - path = /obj/item/clothing/accessory/poncho/roles/cloak/cargo - cost = 1 ->>>>>>> cbed72f7ee... Merge pull request #11090 from VOREStation/Arokha/cloaks1pt - -/datum/gear/suit/roles/poncho/medical - display_name = "poncho, medical" - path = /obj/item/clothing/accessory/poncho/roles/medical - -/datum/gear/suit/roles/poncho/engineering - display_name = "poncho, engineering" - path = /obj/item/clothing/accessory/poncho/roles/engineering - -/datum/gear/suit/roles/poncho/science - display_name = "poncho, science" - path = /obj/item/clothing/accessory/poncho/roles/science - -/datum/gear/suit/roles/poncho/cloak/hos +/datum/gear/suit/roles/poncho/cloak_hos display_name = "cloak, head of security" path = /obj/item/clothing/accessory/poncho/roles/cloak/hos allowed_roles = list("Head of Security") -/datum/gear/suit/roles/poncho/cloak/cmo +/datum/gear/suit/roles/poncho/cloak_cmo display_name = "cloak, chief medical officer" path = /obj/item/clothing/accessory/poncho/roles/cloak/cmo allowed_roles = list("Chief Medical Officer") -/datum/gear/suit/roles/poncho/cloak/ce +/datum/gear/suit/roles/poncho/cloak_ce display_name = "cloak, chief engineer" path = /obj/item/clothing/accessory/poncho/roles/cloak/ce allowed_roles = list("Chief Engineer") -/datum/gear/suit/roles/poncho/cloak/rd +/datum/gear/suit/roles/poncho/cloak_rd display_name = "cloak, research director" path = /obj/item/clothing/accessory/poncho/roles/cloak/rd allowed_roles = list("Research Director") -/datum/gear/suit/roles/poncho/cloak/qm +/datum/gear/suit/roles/poncho/cloak_qm display_name = "cloak, quartermaster" path = /obj/item/clothing/accessory/poncho/roles/cloak/qm allowed_roles = list("Quartermaster") -/datum/gear/suit/roles/poncho/cloak/captain +/datum/gear/suit/roles/poncho/cloak_captain display_name = "cloak, site manager" path = /obj/item/clothing/accessory/poncho/roles/cloak/captain allowed_roles = list("Site Manager") -/datum/gear/suit/roles/poncho/cloak/hop +/datum/gear/suit/roles/poncho/cloak_hop display_name = "cloak, head of personnel" path = /obj/item/clothing/accessory/poncho/roles/cloak/hop allowed_roles = list("Head of Personnel") -/datum/gear/suit/roles/poncho/cloak/cargo - display_name = "cloak, cargo" - path = /obj/item/clothing/accessory/poncho/roles/cloak/cargo - -/datum/gear/suit/roles/poncho/cloak/mining - display_name = "cloak, mining" - path = /obj/item/clothing/accessory/poncho/roles/cloak/mining - -/datum/gear/suit/roles/poncho/cloak/security - display_name = "cloak, security" - path = /obj/item/clothing/accessory/poncho/roles/cloak/security - allowed_roles = list("Head of Security","Detective","Warden","Security Officer","Blueshield Guard","Security Pilot") //YW ADDITIONS - -/datum/gear/suit/roles/poncho/cloak/service - display_name = "cloak, service" - path = /obj/item/clothing/accessory/poncho/roles/cloak/service - -/datum/gear/suit/roles/poncho/cloak/engineer - display_name = "cloak, engineer" - path = /obj/item/clothing/accessory/poncho/roles/cloak/engineer - -/datum/gear/suit/roles/poncho/cloak/atmos - display_name = "cloak, atmos" - path = /obj/item/clothing/accessory/poncho/roles/cloak/atmos - -/datum/gear/suit/roles/poncho/cloak/research - display_name = "cloak, science" - path = /obj/item/clothing/accessory/poncho/roles/cloak/research - -/datum/gear/suit/roles/poncho/cloak/medical - display_name = "cloak, medical" - path = /obj/item/clothing/accessory/poncho/roles/cloak/medical - -/datum/gear/suit/roles/poncho/cloak/custom //A colorable cloak - display_name = "cloak (colorable)" +/datum/gear/suit/roles/poncho/cloak_custom //A colorable cloak + display_name = "cloak, colorable" path = /obj/item/clothing/accessory/poncho/roles/cloak/custom /datum/gear/suit/roles/poncho/cloak/custom/New() @@ -339,44 +287,51 @@ path = /obj/item/clothing/suit/unathi/robe cost = 1 -/datum/gear/suit/black_lawyer_jacket - display_name = "suit jacket, black" +/datum/gear/suit/lawyer_jackets + display_name = "suit jacket selection" path = /obj/item/clothing/suit/storage/toggle/internalaffairs -/datum/gear/suit/blue_lawyer_jacket - display_name = "suit jacket, blue" - path = /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket - -/datum/gear/suit/purple_lawyer_jacket - display_name = "suit jacket, purple" - path = /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket +/datum/gear/suit/lawyer_jackets/New() + ..() + var/list/jackets = list( + "Black suit jacket" = /obj/item/clothing/suit/storage/toggle/internalaffairs, + "Blue suit jacket" = /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket, + "Purple suit jacket" = /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket + ) + gear_tweaks += new/datum/gear_tweak/path(jackets) /datum/gear/suit/suspenders display_name = "suspenders" path = /obj/item/clothing/suit/suspenders /datum/gear/suit/forensics - display_name = "forensics long, red" + display_name = "forensics uniform selection (Detective)" path = /obj/item/clothing/suit/storage/forensics/red/long allowed_roles = list("Detective") -/datum/gear/suit/forensics/blue - display_name = "forensics long, blue" - path = /obj/item/clothing/suit/storage/forensics/blue/long - allowed_roles = list("Detective") +/datum/gear/suit/forensics/New() + ..() + var/list/uniforms = list( + "Red, long uniform" = /obj/item/clothing/suit/storage/forensics/red/long, + "Blue, long uniform" = /obj/item/clothing/suit/storage/forensics/blue/long, + "Red, short uniform" = /obj/item/clothing/suit/storage/forensics/red, + "Blue, short uniform" = /obj/item/clothing/suit/storage/forensics/blue + ) + gear_tweaks += new/datum/gear_tweak/path(uniforms) -/datum/gear/suit/forensics/blue/short - display_name = "forensics, blue" - path = /obj/item/clothing/suit/storage/forensics/blue - allowed_roles = list("Detective") +/datum/gear/suit/qm_coat + display_name = "coat, quartermaster" + path = /obj/item/clothing/suit/storage/qm + allowed_roles = list("Quartermaster") -/datum/gear/suit/forensics/red/short - display_name = "forensics, red" - path = /obj/item/clothing/suit/storage/forensics/red - allowed_roles = list("Detective") +/datum/gear/suit/cargo_coat + display_name = "coat, cargo tech" + path = /obj/item/clothing/suit/storage/cargo + allowed_roles = list("Quartermaster","Shaft Miner","Cargo Technician","Head of Personnel") + +/obj/item/clothing/suit/storage/cargo // winter coats go here - /datum/gear/suit/wintercoat display_name = "winter coat" path = /obj/item/clothing/suit/storage/hooded/wintercoat @@ -441,7 +396,6 @@ path = /obj/item/clothing/suit/storage/hooded/wintercoat/science allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist", "Xenobotanist") - /datum/gear/suit/wintercoat/science/robotics display_name = "winter coat, robotics" path = /obj/item/clothing/suit/storage/hooded/wintercoat/science/robotics @@ -512,7 +466,6 @@ /datum/gear/suit/wintercoat/cosmic display_name = "winter coat, cosmic" path = /obj/item/clothing/suit/storage/hooded/wintercoat/cosmic - // winter coats end here /datum/gear/suit/varsity @@ -540,20 +493,18 @@ gear_tweaks += new/datum/gear_tweak/path(sortAssoc(tracks)) /datum/gear/suit/flannel - display_name = "grey flannel" + display_name = "flannel jacket selection" path = /obj/item/clothing/suit/storage/flannel -/datum/gear/suit/flannel/red - display_name = "red flannel" - path = /obj/item/clothing/suit/storage/flannel/red - -/datum/gear/suit/flannel/aqua - display_name = "aqua flannel" - path = /obj/item/clothing/suit/storage/flannel/aqua - -/datum/gear/suit/flannel/brown - display_name = "brown flannel" - path = /obj/item/clothing/suit/storage/flannel/brown +/datum/gear/suit/flannel/New() + ..() + var/list/flannel = list( + "Grey flannel" = /obj/item/clothing/suit/storage/flannel, + "Red flannel" = /obj/item/clothing/suit/storage/flannel/red, + "Aqua flannel" = /obj/item/clothing/suit/storage/flannel/aqua, + "Brown flannel" = /obj/item/clothing/suit/storage/flannel/brown + ) + gear_tweaks += new/datum/gear_tweak/path(flannel) /datum/gear/suit/denim_jacket display_name = "denim jacket" @@ -579,25 +530,20 @@ ..() gear_tweaks += gear_tweak_free_color_choice -/datum/gear/suit/miscellaneous/sec_dep_jacket - display_name = "department jacket, security" +/datum/gear/suit/miscellaneous/dep_jacket + display_name = "department jacket selection" path = /obj/item/clothing/suit/storage/toggle/sec_dep_jacket -/datum/gear/suit/miscellaneous/engi_dep_jacket - display_name = "department jacket, engineering" - path = /obj/item/clothing/suit/storage/toggle/engi_dep_jacket - -/datum/gear/suit/miscellaneous/supply_dep_jacket - display_name = "department jacket, supply" - path = /obj/item/clothing/suit/storage/toggle/supply_dep_jacket - -/datum/gear/suit/miscellaneous/sci_dep_jacket - display_name = "department jacket, science" - path = /obj/item/clothing/suit/storage/toggle/sci_dep_jacket - -/datum/gear/suit/miscellaneous/med_dep_jacket - display_name = "department jacket, medical" - path = /obj/item/clothing/suit/storage/toggle/med_dep_jacket +/datum/gear/suit/miscellaneous/dep_jacket/New() + ..() + var/list/jacket = list( + "Security department jacket" = /obj/item/clothing/suit/storage/toggle/sec_dep_jacket, + "Engineering department jacket" = /obj/item/clothing/suit/storage/toggle/engi_dep_jacket, + "Cargo department jacket" = /obj/item/clothing/suit/storage/toggle/supply_dep_jacket, + "Science department jacket" = /obj/item/clothing/suit/storage/toggle/sci_dep_jacket, + "Medical department jacket" = /obj/item/clothing/suit/storage/toggle/med_dep_jacket + ) + gear_tweaks += new/datum/gear_tweak/path(jacket) /datum/gear/suit/miscellaneous/peacoat display_name = "peacoat" @@ -651,4 +597,4 @@ /datum/gear/suit/miscellaneous/cardigan/New() ..() - gear_tweaks += gear_tweak_free_color_choice \ No newline at end of file + gear_tweaks += gear_tweak_free_color_choice diff --git a/code/modules/client/preference_setup/loadout/loadout_suit_vr.dm b/code/modules/client/preference_setup/loadout/loadout_suit_vr.dm index 2de9713198..f33118bce0 100644 --- a/code/modules/client/preference_setup/loadout/loadout_suit_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_suit_vr.dm @@ -31,16 +31,20 @@ path = /obj/item/clothing/suit/poncho //Detective alternative -/datum/gear/uniform/detective_alt - display_name = "sleek modern coat, detective" +/datum/gear/suit/detective_alt + display_name = "sleek modern coat selection, detective" path = /obj/item/clothing/suit/storage/det_trench/alt allowed_roles = list("Head of Security", "Detective") -//Detective alternative -/datum/gear/uniform/detective_alt2 - display_name = "sleek modern coat (long), detective" - path = /obj/item/clothing/suit/storage/det_trench/alt2 - allowed_roles = list("Head of Security", "Detective") +/datum/gear/suit/detective_alt/New() + ..() + var/list/coats = list( + "Modern coat (tan)" = /obj/item/clothing/suit/storage/det_trench/alt, + "Modern coat (long, tan)" = /obj/item/clothing/suit/storage/det_trench/alt2, + "Modern coat (black)" = /obj/item/clothing/suit/storage/det_trench/alt/black, + "Modern coat (long, black)" = /obj/item/clothing/suit/storage/det_trench/alt2/black + ) + gear_tweaks += new/datum/gear_tweak/path(coats) //Emergency Responder jackets for Parameds & EMTs, but also general Medical Staff /datum/gear/suit/roles/medical/ems_jacket diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm b/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm index df63678531..7c6e9ca629 100644 --- a/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm @@ -235,4 +235,18 @@ Talon jumpsuit /datum/gear/uniform/talonbasic display_name = "ITV Jumpsuit" description = "A jumpsuit that is usually issued to ITV contractors, however others can purchase it to show their support towards ITV." - path = /obj/item/clothing/under/rank/talon/basic \ No newline at end of file + path = /obj/item/clothing/under/rank/talon/basic + +// Summer dresses +/datum/gear/uniform/summerdress + display_name = "summer dress selection" + path = /obj/item/clothing/under/summerdress + +/datum/gear/uniform/summerdress/New() + ..() + var/list/dresses = list( + "black and white" = /obj/item/clothing/under/summerdress, + "blue and white" = /obj/item/clothing/under/summerdress/blue, + "red and white" = /obj/item/clothing/under/summerdress/red + ) + gear_tweaks += new/datum/gear_tweak/path(dresses) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index e64770f9ef..13816406cf 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -542,7 +542,7 @@ // Generate and cache the on-mob icon, which is used in update_inv_head(). var/body_type = (H && H.species.get_bodytype(H)) - var/cache_key = "[light_overlay][body_type && sprite_sheets[body_type] ? "_[body_type]" : ""]" + var/cache_key = "[light_overlay][body_type && sprite_sheets[body_type] ? body_type : ""]" if(!light_overlay_cache[cache_key]) var/use_icon = LAZYACCESS(sprite_sheets,body_type) || 'icons/mob/light_overlays.dmi' light_overlay_cache[cache_key] = image(icon = use_icon, icon_state = "[light_overlay]") @@ -736,7 +736,7 @@ var/fire_resist = T0C+100 body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS allowed = list(/obj/item/weapon/tank/emergency/oxygen) - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0) slot_flags = SLOT_OCLOTHING var/blood_overlay_type = "suit" blood_sprite_state = "suitblood" //Defaults to the suit's blood overlay, so that some blood renders instead of no blood. diff --git a/code/modules/clothing/spacesuits/rig/modules/modules.dm b/code/modules/clothing/spacesuits/rig/modules/modules.dm index fe2176215a..0762fedeae 100644 --- a/code/modules/clothing/spacesuits/rig/modules/modules.dm +++ b/code/modules/clothing/spacesuits/rig/modules/modules.dm @@ -41,6 +41,7 @@ // Icons. var/suit_overlay + var/suit_overlay_icon = 'icons/mob/rig_modules.dmi' var/suit_overlay_active // If set, drawn over icon and mob when effect is active. var/suit_overlay_inactive // As above, inactive. var/suit_overlay_used // As above, when engaged. diff --git a/code/modules/clothing/spacesuits/rig/modules/utility.dm b/code/modules/clothing/spacesuits/rig/modules/utility.dm index 43bcd583d2..4550eab088 100644 --- a/code/modules/clothing/spacesuits/rig/modules/utility.dm +++ b/code/modules/clothing/spacesuits/rig/modules/utility.dm @@ -8,7 +8,6 @@ * /obj/item/rig_module/device/arch_drill * /obj/item/rig_module/device/anomaly_scanner * /obj/item/rig_module/maneuvering_jets - * /obj/item/rig_module/foam_sprayer * /obj/item/rig_module/device/broadcaster * /obj/item/rig_module/chem_dispenser * /obj/item/rig_module/chem_dispenser/injector @@ -411,11 +410,7 @@ jets.holder = null jets.ion_trail.set_up(jets) -/obj/item/rig_module/foam_sprayer - - //Deployable Mop - /obj/item/rig_module/mounted/mop name = "mop projector" diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index aba67b11c7..5cfe6a9290 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -7,7 +7,6 @@ */ /obj/item/weapon/rig - name = "hardsuit control module" icon = 'icons/obj/rig_modules.dmi' desc = "A back-mounted hardsuit deployment and control mechanism." @@ -27,6 +26,8 @@ unacidable = 1 preserve_item = 1 + var/default_mob_icon = 'icons/mob/rig_back.dmi' + var/suit_state //The string used for the suit's icon_state. var/interface_path = "RIGSuit" @@ -98,22 +99,8 @@ var/datum/effect/effect/system/spark_spread/spark_system var/datum/mini_hud/rig/minihud -/obj/item/weapon/rig/examine() - . = ..() - if(wearer) - for(var/obj/item/piece in list(helmet,gloves,chest,boots)) - if(!piece || piece.loc != wearer) - continue - . += "[bicon(piece)] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed." - - if(src.loc == usr) - . += "The access panel is [locked? "locked" : "unlocked"]." - . += "The maintenance panel is [open ? "open" : "closed"]." - . += "Hardsuit systems are [offline ? "offline" : "online"]." - . += "The cooling stystem is [cooling_on ? "active" : "inactive"]." - - if(open) - . += "It's equipped with [english_list(installed_modules)]." + // Action button + action_button_name = "Hardsuit Interface" /obj/item/weapon/rig/New() ..() @@ -186,6 +173,23 @@ spark_system = null return ..() +/obj/item/weapon/rig/examine() + . = ..() + if(wearer) + for(var/obj/item/piece in list(helmet,gloves,chest,boots)) + if(!piece || piece.loc != wearer) + continue + . += "[bicon(piece)] \The [piece] [piece.gender == PLURAL ? "are" : "is"] deployed." + + if(src.loc == usr) + . += "The access panel is [locked? "locked" : "unlocked"]." + . += "The maintenance panel is [open ? "open" : "closed"]." + . += "Hardsuit systems are [offline ? "offline" : "online"]." + . += "The cooling stystem is [cooling_on ? "active" : "inactive"]." + + if(open) + . += "It's equipped with [english_list(installed_modules)]." + // We only care about processing when we're on a mob /obj/item/weapon/rig/Moved(old_loc, direction, forced) if(ismob(loc)) @@ -589,7 +593,7 @@ cut_overlays() if(!mob_icon || update_mob_icon) - var/species_icon = 'icons/mob/rig_back.dmi' + var/species_icon = default_mob_icon // Since setting mob_icon will override the species checks in // update_inv_wear_suit(), handle species checks here. if(wearer && sprite_sheets && sprite_sheets[wearer.species.get_bodytype(wearer)]) @@ -599,7 +603,7 @@ if(installed_modules.len) for(var/obj/item/rig_module/module in installed_modules) if(module.suit_overlay) - chest.add_overlay(image('icons/mob/rig_modules.dmi', icon_state = "[module.suit_overlay]", dir = SOUTH)) + chest.add_overlay(image(module.suit_overlay_icon, icon_state = "[module.suit_overlay]", dir = SOUTH)) if(wearer) wearer.update_inv_shoes() diff --git a/code/modules/clothing/spacesuits/rig/rig_verbs.dm b/code/modules/clothing/spacesuits/rig/rig_verbs.dm index c1d2fe2c5b..b28d93bc55 100644 --- a/code/modules/clothing/spacesuits/rig/rig_verbs.dm +++ b/code/modules/clothing/spacesuits/rig/rig_verbs.dm @@ -9,6 +9,11 @@ if(wearer && (wearer.back == src || wearer.belt == src)) tgui_interact(usr) +// So the UI button clicks come here +/obj/item/weapon/rig/ui_action_click() + if(usr == wearer && (wearer.back == src || wearer.belt == src)) + tgui_interact(usr) + /obj/item/weapon/rig/verb/toggle_vision() set name = "Toggle Visor" diff --git a/code/modules/clothing/spacesuits/rig/suits/station_vr.dm b/code/modules/clothing/spacesuits/rig/suits/station_vr.dm index f543b95431..e0d14f189a 100644 --- a/code/modules/clothing/spacesuits/rig/suits/station_vr.dm +++ b/code/modules/clothing/spacesuits/rig/suits/station_vr.dm @@ -53,3 +53,128 @@ /obj/item/weapon/rig/robotics allowed = list(/obj/item/device/flashlight, /obj/item/weapon/storage/box, /obj/item/weapon/storage/belt, /obj/item/device/defib_kit/compact) + +// 'Technomancer' hardsuit +/obj/item/weapon/rig/focalpoint + name = "\improper F.P.E. hardsuit control module" + desc = "A high-end hardsuit produced by Focal Point Energistics, focused around repair and construction." + + icon = 'icons/obj/rig_modules_vr.dmi' // the item + default_mob_icon = 'icons/mob/rig_back_vr.dmi' // the onmob + icon_state = "techno_rig" + suit_type = "\improper F.P.E. hardsuit" + cell_type = /obj/item/weapon/cell/hyper + + // Copied from CE rig + slowdown = 0 + offline_slowdown = 0 + offline_vision_restriction = 0 + rigsuit_max_pressure = 20 * ONE_ATMOSPHERE // Max pressure the rig protects against when sealed + rigsuit_min_pressure = 0 // Min pressure the rig protects against when sealed + min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE + max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE // so it's like a rig firesuit + armor = list("melee" = 40, "bullet" = 10, "laser" = 30, "energy" = 55, "bomb" = 70, "bio" = 100, "rad" = 100) + + chest_type = /obj/item/clothing/suit/space/rig/focalpoint + helm_type = /obj/item/clothing/head/helmet/space/rig/focalpoint + boot_type = /obj/item/clothing/shoes/magboots/rig/focalpoint + glove_type = /obj/item/clothing/gloves/gauntlets/rig/focalpoint + +/obj/item/weapon/rig/focalpoint/equipped + initial_modules = list( + /obj/item/rig_module/maneuvering_jets, + /obj/item/rig_module/teleporter, // Try not to set yourself on fire + /obj/item/rig_module/device/rcd, + /obj/item/rig_module/grenade_launcher/metalfoam + ) + +/obj/item/clothing/head/helmet/space/rig/focalpoint + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "techno_rig" + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() + +/obj/item/clothing/suit/space/rig/focalpoint + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "techno_rig" + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() + +/obj/item/clothing/shoes/magboots/rig/focalpoint + icon = 'icons/inventory/feet/item_vr.dmi' + default_worn_icon = 'icons/inventory/feet/mob_vr.dmi' + icon_state = "techno_rig" + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() + +/obj/item/clothing/gloves/gauntlets/rig/focalpoint + icon = 'icons/inventory/hands/item_vr.dmi' + default_worn_icon = 'icons/inventory/hands/mob_vr.dmi' + icon_state = "techno_rig" + siemens_coefficient = 0 + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() + +// 'Ironhammer' hardsuit +/obj/item/weapon/rig/hephaestus + name = "\improper Hephaestus hardsuit control module" + desc = "A high-end hardsuit produced by Hephaestus Industries, focused on destroying the competition. Literally." + + icon = 'icons/obj/rig_modules_vr.dmi' // the item + default_mob_icon = 'icons/mob/rig_back_vr.dmi' // the onmob + icon_state = "ihs_rig" + suit_type = "\improper Hephaestus hardsuit" + cell_type = /obj/item/weapon/cell/super + + armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 50, "bomb" = 60, "bio" = 100, "rad" = 20) + + chest_type = /obj/item/clothing/suit/space/rig/hephaestus + helm_type = /obj/item/clothing/head/helmet/space/rig/hephaestus + boot_type = /obj/item/clothing/shoes/magboots/rig/hephaestus + glove_type = /obj/item/clothing/gloves/gauntlets/rig/hephaestus + +/obj/item/weapon/rig/hephaestus/equipped + initial_modules = list( + /obj/item/rig_module/maneuvering_jets, + /obj/item/rig_module/grenade_launcher, + /obj/item/rig_module/mounted/egun, + /obj/item/rig_module/mounted/energy_blade + ) + +/obj/item/clothing/head/helmet/space/rig/hephaestus + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "ihs_rig" + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() + +/obj/item/clothing/suit/space/rig/hephaestus + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "ihs_rig" + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() + +/obj/item/clothing/shoes/magboots/rig/hephaestus + icon = 'icons/inventory/feet/item_vr.dmi' + default_worn_icon = 'icons/inventory/feet/mob_vr.dmi' + icon_state = "ihs_rig" + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() + +/obj/item/clothing/gloves/gauntlets/rig/hephaestus + icon = 'icons/inventory/hands/item_vr.dmi' + default_worn_icon = 'icons/inventory/hands/mob_vr.dmi' + icon_state = "ihs_rig" + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() diff --git a/code/modules/clothing/spacesuits/void/event_vr.dm b/code/modules/clothing/spacesuits/void/event_vr.dm index 357a8ff772..6d947ce245 100644 --- a/code/modules/clothing/spacesuits/void/event_vr.dm +++ b/code/modules/clothing/spacesuits/void/event_vr.dm @@ -73,4 +73,161 @@ /obj/item/clothing/suit/space/void/refurb/mercenary/talon name = "talon mercenary's voidsuit" - desc = "A refurbished early contact era voidsuit of human design. These things aren't especially good against modern weapons but they're sturdy, incredibly easy to come by, and there are lots of spare parts for repairs. Many old-timer mercs swear by these old things, even if new powered hardsuits have more features and better armor. The red markings indicate this as the mercenary variant. \"ITV TALON\" has been stamped onto each pauldron and the right side of the breastplate." \ No newline at end of file + desc = "A refurbished early contact era voidsuit of human design. These things aren't especially good against modern weapons but they're sturdy, incredibly easy to come by, and there are lots of spare parts for repairs. Many old-timer mercs swear by these old things, even if new powered hardsuits have more features and better armor. The red markings indicate this as the mercenary variant. \"ITV TALON\" has been stamped onto each pauldron and the right side of the breastplate." + +// HEV Suits +/obj/item/clothing/suit/space/void/hev + name = "hazardous environment suit" + desc = "Has a strange smell to it, but you feel like it might be an old friend." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "hev_orange" + + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() + +/obj/item/clothing/suit/space/void/hev/violet + icon_state = "hev_violet" + desc = "Has a strange smell to it, but you feel like it might be an old friend. This one has 'Dr. Coomer' engraved on the collar." + +/obj/item/clothing/head/helmet/space/void/hev + name = "hazardous environment helmet" + desc = "Has a strange smell to it, but you feel like it might be an old friend." + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "hev_orange" + + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() + +/obj/item/clothing/head/helmet/space/void/hev/violet + icon_state = "hev_violet" + desc = "Has a strange smell to it, but you feel like it might be an old friend. This one has 'Dr. Coomer' engraved on the collar." + +// Makeshift void suit +/obj/item/clothing/suit/space/void/makeshift + name = "makeshift voidsuit" + desc = "This is not something you should use if you have other options, but it's better than nothing!" + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "makeshift_void" + + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0) + + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() + +/obj/item/clothing/head/helmet/space/void/makeshift + name = "makeshift voidsuit helmet" + desc = "This is not something you should use if you have other options, but it's better than nothing!" + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "makeshift_void" + + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0) + + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() + +// 'Custodian' armor +/obj/item/clothing/suit/space/void/custodian + name = "custodian suit" + desc = "Vacuum-capable armor for a Custodian to do their duty." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "custodian" + + armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 50, "bomb" = 40, "bio" = 0, "rad" = 20) + + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() + +/obj/item/clothing/head/helmet/space/void/custodian + name = "custodian helmet" + desc = "Vacuum-capable helmet for a Custodian to do their duty." + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "custodian" + + armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 50, "bomb" = 40, "bio" = 0, "rad" = 20) + + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() + +// 'Moebius' armor +/obj/item/clothing/suit/space/void/aether + name = "\improper Aether voidsuit" + desc = "This suit seems rather high-end for a standard voidsuit. The air in it has a hint of 'new car smell', courtesy of Aether Atmospherics." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "moebiussuit" + + armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 20, "bomb" = 20, "bio" = 100, "rad" = 20) + + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() + +/obj/item/clothing/head/helmet/space/void/aether + name = "\improper Aether voidsuit helmet" + desc = "Aether Atmospherics thought that giving this helmet selectable colored lighting would improve market penetration. Very comfortable, regardless." + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "moebiushelm_White" + + armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 20, "bomb" = 20, "bio" = 100, "rad" = 20) + + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() + +/obj/item/clothing/head/helmet/space/void/aether/verb/select_color() + set name = "Helmet Color" + set desc = "Change the color of [src]" + set category = "Object" + + var/choice = tgui_input_list(usr, "Select a new color:", "[src] Color", list("White", "Blue", "Purple", "Yellow", "Red", "Green")) + if(!choice) + return + icon_state = "moebiushelm_[choice]" + update_clothing_icon() + to_chat(usr, "[src] color changed to: [choice]") + +// Excelsior suit +/obj/item/clothing/suit/space/void/excelsior + name = "\improper Excelsior voidsuit" + desc = "A space suit from a particular spaceship: Excelsior." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "excelsior" + + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() + +/obj/item/clothing/head/helmet/space/void/excelsior + name = "\improper Excelsior voidsuit helmet" + desc = "A space helmet from a particular spaceship: Excelsior." + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "excelsior" + + // No animal people sprites for these yet, sad times + species_restricted = list("exclude", SPECIES_TESHARI, SPECIES_VOX, SPECIES_DIONA) + sprite_sheets = list() diff --git a/code/modules/clothing/suits/aliens/teshari.dm b/code/modules/clothing/suits/aliens/teshari.dm index 256130de03..9aaab36c3e 100644 --- a/code/modules/clothing/suits/aliens/teshari.dm +++ b/code/modules/clothing/suits/aliens/teshari.dm @@ -3,7 +3,7 @@ name = "black cloak" desc = "It drapes over a Teshari's shoulders and closes at the neck with pockets convienently placed inside." icon = 'icons/inventory/suit/item_teshari.dmi' - icon = 'icons/inventory/suit/mob_teshari.dmi' + default_worn_icon = 'icons/inventory/suit/mob_teshari.dmi' icon_state = "tesh_cloak_bn" item_state = "tesh_cloak_bn" species_restricted = list(SPECIES_TESHARI) diff --git a/code/modules/clothing/suits/armor_vr.dm b/code/modules/clothing/suits/armor_vr.dm index 409a63f834..1f9ccf2402 100644 --- a/code/modules/clothing/suits/armor_vr.dm +++ b/code/modules/clothing/suits/armor_vr.dm @@ -118,3 +118,24 @@ /obj/item/clothing/suit/armor/pcarrier/explorer/deluxe name = "modular explorer suit" desc = "A modification of the explorer suit with a modular armor system. Requires you to insert armor plates." + +// 'Crusader' armor +/obj/item/clothing/suit/armor/crusader + name = "crusader armor" + desc = "God will protect those who defend his faith." + + armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 25, "bomb" = 30, "bio" = 0, "rad" = 0) + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "crusader_suit" + +/obj/item/clothing/head/helmet/crusader + name = "crusader helmet" + desc = "God will protect those who defend his faith." + + armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 25, "bomb" = 30, "bio" = 0, "rad" = 0) + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "crusader_head" diff --git a/code/modules/clothing/suits/jobs_vr.dm b/code/modules/clothing/suits/jobs_vr.dm new file mode 100644 index 0000000000..9b34c18637 --- /dev/null +++ b/code/modules/clothing/suits/jobs_vr.dm @@ -0,0 +1,18 @@ +// Cargotech jacket +/obj/item/clothing/suit/storage/cargo + name = "cargo jacket" + desc = "A jacket typically assigned to cargo technicians when it's chilly in cargonia." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "cargo_jacket" + +// QM Coat +/obj/item/clothing/suit/storage/qm + name = "\improper QM coat" + desc = "A coat typically assigned to quartermasters when it's chilly in cargonia." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "qm_coat" + \ No newline at end of file diff --git a/code/modules/clothing/suits/labcoat_vr.dm b/code/modules/clothing/suits/labcoat_vr.dm new file mode 100644 index 0000000000..4f82afd2e3 --- /dev/null +++ b/code/modules/clothing/suits/labcoat_vr.dm @@ -0,0 +1,27 @@ +// 'Modern' labcoats +/obj/item/clothing/suit/storage/toggle/labcoat/modern + name = "modern labcoat" + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "labcoat_mod" + +/obj/item/clothing/suit/storage/toggle/labcoat/modern/cmo + name = "modern cmo's labcoat" + desc = "A suit that protects against minor chemical spills. This one has distinct markings on the arms." + icon_state = "labcoat_cmo_mod" + +// 'Modern' biosuits +/obj/item/clothing/suit/bio_suit/modern + name = "modern bio suit" + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "bio_mod" + +/obj/item/clothing/head/bio_hood/modern + name = "modern bio hood" + + icon = 'icons/inventory/head/item_vr.dmi' + default_worn_icon = 'icons/inventory/head/mob_vr.dmi' + icon_state = "bio_mod" diff --git a/code/modules/clothing/suits/miscellaneous_vr.dm b/code/modules/clothing/suits/miscellaneous_vr.dm index 34d5d71ac9..8febb11143 100644 --- a/code/modules/clothing/suits/miscellaneous_vr.dm +++ b/code/modules/clothing/suits/miscellaneous_vr.dm @@ -88,18 +88,24 @@ /obj/item/clothing/suit/storage/det_trench/alt name = "sleek modern coat" desc = "A sleek overcoat made of neo-laminated fabric. Has a reasonably sized pocket on the inside." + icon = 'icons/inventory/suit/item_vr.dmi' - icon_override = 'icons/inventory/suit/mob_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' icon_state = "cyberpunksleek" - item_state = "cyberpunksleek" /obj/item/clothing/suit/storage/det_trench/alt2 name = "sleek modern coat (long)" desc = "A sleek long overcoat made of neo-laminated fabric. Has a reasonably sized pocket on the inside." + icon = 'icons/inventory/suit/item_vr.dmi' - icon_override = 'icons/inventory/suit/mob_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' icon_state = "cyberpunksleek_long" - item_state = "cyberpunksleek_long" + +/obj/item/clothing/suit/storage/det_trench/alt/black + icon_state = "cyberpunksleek_black" + +/obj/item/clothing/suit/storage/det_trench/alt2/black + icon_state = "cyberpunksleek_long_black" //Talon Hoodie /obj/item/clothing/suit/storage/toggle/hoodie/talon @@ -108,4 +114,24 @@ icon = 'icons/inventory/suit/item_vr.dmi' icon_override = 'icons/inventory/suit/mob_vr.dmi' icon_state = "talonhoodie" - item_state_slots = list(slot_r_hand_str = "suit_blue", slot_l_hand_str = "suit_blue") \ No newline at end of file + item_state_slots = list(slot_r_hand_str = "suit_blue", slot_l_hand_str = "suit_blue") + +// Bladerunner coat +/obj/item/clothing/suit/storage/bladerunner + name = "leather coat" + desc = "An old leather coat. Has probably seen things you wouldn't believe." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "bladerunner_coat" + +// Cyberpunk 'orange' vest +/obj/item/clothing/suit/cyberpunk + name = "cyberpunk vest" + desc = "A red vest with golden streaks. It's made out of tough materials, and can protect fairly well against bullets. Wake the fuck up, Samurai." + + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' + icon_state = "cyberpunk" + armor = list("melee" = 10, "bullet" = 20, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0) + diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm index 744c2a55c2..87346c6741 100644 --- a/code/modules/clothing/under/jobs/medsci.dm +++ b/code/modules/clothing/under/jobs/medsci.dm @@ -122,6 +122,15 @@ rolled_sleeves = -1 /obj/item/clothing/under/rank/medical/paramedic + name = "paramedic uniform" + desc = "It's made of a special fiber that provides minor protection against biohazards. This one is the color scheme that designates a rapid first responder." + icon_state = "paramedic" + item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS + rolled_down = -1 + rolled_sleeves = -1 + +/obj/item/clothing/under/rank/medical/paramedic_alt name = "short sleeve medical jumpsuit" desc = "It's made of a special fiber that provides minor protection against biohazards. This one has a cross on the chest denoting that the wearer is trained medical personnel." icon_state = "medical_short" diff --git a/code/modules/clothing/under/miscellaneous_vr.dm b/code/modules/clothing/under/miscellaneous_vr.dm index 112f45f3ba..ef3c67103a 100644 --- a/code/modules/clothing/under/miscellaneous_vr.dm +++ b/code/modules/clothing/under/miscellaneous_vr.dm @@ -196,4 +196,32 @@ icon_override = 'icons/inventory/uniform/mob_vr.dmi' icon_state = "talon_captain" item_state = "talon_captain" - rolled_sleeves = 0 \ No newline at end of file + rolled_sleeves = 0 + +// Excelsior uniforms +/obj/item/clothing/under/excelsior + name = "\improper Excelsior uniform" + desc = "A uniform from a particular spaceship: Excelsior." + + icon = 'icons/inventory/uniform/item_vr.dmi' + default_worn_icon = 'icons/inventory/uniform/mob_vr.dmi' + icon_state = "excelsior_white" + +/obj/item/clothing/under/excelsior/mixed + icon_state = "excelsior_mixed" +/obj/item/clothing/under/excelsior/orange + icon_state = "excelsior_orange" + +// Summer dresses +/obj/item/clothing/under/summerdress + name = "summer dress" + desc = "A nice summer dress." + + icon = 'icons/inventory/uniform/item_vr.dmi' + default_worn_icon = 'icons/inventory/uniform/mob_vr.dmi' + icon_state = "summerdress" + +/obj/item/clothing/under/summerdress/red + icon_state = "summerdress3" +/obj/item/clothing/under/summerdress/blue + icon_state = "summerdress2" diff --git a/code/modules/economy/vending_machines.dm b/code/modules/economy/vending_machines.dm index 7d4d9270ea..dfd693afd2 100644 --- a/code/modules/economy/vending_machines.dm +++ b/code/modules/economy/vending_machines.dm @@ -1156,6 +1156,7 @@ /obj/item/clothing/head/surgery/black = 5, /obj/item/clothing/shoes/white = 5, /obj/item/clothing/suit/storage/toggle/labcoat = 5, + /obj/item/clothing/suit/storage/toggle/labcoat/modern = 5, /obj/item/clothing/mask/surgical = 5, /obj/item/clothing/suit/storage/hooded/wintercoat/medical = 5, /obj/item/clothing/shoes/boots/winter/medical = 5 @@ -1227,6 +1228,7 @@ /obj/item/clothing/under/rank/scientist/skirt = 5, /obj/item/clothing/under/rank/scientist/turtleneck = 5, /obj/item/clothing/suit/storage/toggle/labcoat = 5, + /obj/item/clothing/suit/storage/toggle/labcoat/modern = 5, /obj/item/clothing/shoes/white = 5, /obj/item/clothing/shoes/slippers = 5, /obj/item/clothing/suit/storage/hooded/wintercoat/science = 5, @@ -1348,6 +1350,7 @@ /obj/item/clothing/under/rank/cargotech/jeans = 5, /obj/item/clothing/under/rank/cargotech/jeans/female = 5, /obj/item/clothing/suit/storage/hooded/wintercoat/cargo = 5, + /obj/item/clothing/suit/storage/cargo = 5, /obj/item/clothing/shoes/boots/winter/supply = 5, /obj/item/clothing/shoes/black = 5, /obj/item/clothing/gloves/black = 5, diff --git a/code/modules/mob/living/carbon/human/human_species.dm b/code/modules/mob/living/carbon/human/human_species.dm index 3c6451fc99..29b8155366 100644 --- a/code/modules/mob/living/carbon/human/human_species.dm +++ b/code/modules/mob/living/carbon/human/human_species.dm @@ -22,6 +22,17 @@ . = ..() delete_inventory() +/mob/living/carbon/human/dummy/mannequin/autoequip + icon = 'icons/effects/species.dmi' + icon_state = "lizard_f_s_full" + +/mob/living/carbon/human/dummy/mannequin/autoequip/Initialize() + icon = null + icon_state = "" + . = ..() + for(var/obj/item/I in loc) + equip_to_appropriate_slot(I) + /mob/living/carbon/human/skrell/Initialize(var/new_loc) h_style = "Skrell Short Tentacles" return ..(new_loc, SPECIES_SKRELL) diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index e4303081e3..8d2ca00ef5 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -129,6 +129,11 @@ message_data[2] = pick(M.say_verbs) . = 1 + if(CE_SPEEDBOOST in chem_effects || is_jittery) // motor mouth + for(var/datum/multilingual_say_piece/S in message_data[1]) + S.message = replacetext(S.message," ","") + S.message = replacetext(S.message,",","") + S.message = replacetext(S.message,";","") else . = ..(message_data) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index fba31251c7..d63681898d 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -110,7 +110,7 @@ var/alcohol_mod = 1 // Multiplier to alcohol strength; 0.5 = half, 0 = no effect at all, 2 = double, etc. var/pain_mod = 1 // Multiplier to pain effects; 0.5 = half, 0 = no effect (equal to NO_PAIN, really), 2 = double, etc. var/spice_mod = 1 // Multiplier to spice/capsaicin/frostoil effects; 0.5 = half, 0 = no effect (immunity), 2 = double, etc. - var/trauma_mod = 1 // Affects traumatic shock (how fast pain crit happens). 0 = no effect (immunity to pain crit), 2 = double etc.Overriden by "can_feel_pain" var + var/trauma_mod = 1 // Affects traumatic shock (how fast pain crit happens). 0 = no effect (immunity to pain crit), 2 = double etc.Overriden by "can_feel_pain" var // set below is EMP interactivity for nonsynth carbons var/emp_sensitivity = 0 // bitflag. valid flags are: EMP_PAIN, EMP_BLIND, EMP_DEAFEN, EMP_CONFUSE, EMP_STUN, and EMP_(BRUTE/BURN/TOX/OXY)_DMG var/emp_dmg_mod = 1 // Multiplier to all EMP damage sustained by the mob, if it's EMP-sensitive @@ -431,6 +431,8 @@ H.visible_message( \ "[H] boops [target]'s nose.", \ "You boop [target] on the nose.", ) + else if(H.zone_sel.selecting == BP_GROIN) //CHOMPEdit + H.vore_bellyrub(target) //VOREStation Edit End else H.visible_message("[H] hugs [target] to make [t_him] feel better!", \ diff --git a/code/modules/mob/living/simple_mob/defense.dm b/code/modules/mob/living/simple_mob/defense.dm index b0d622cb20..09d6fc7335 100644 --- a/code/modules/mob/living/simple_mob/defense.dm +++ b/code/modules/mob/living/simple_mob/defense.dm @@ -16,6 +16,9 @@ switch(L.a_intent) if(I_HELP) if(health > 0) + if(L.zone_sel.selecting == BP_GROIN) //CHOMPEdit + if(L.vore_bellyrub(src)) + return L.visible_message("\The [L] [response_help] \the [src].") if(I_DISARM) diff --git a/code/modules/mob/living/simple_mob/on_click.dm b/code/modules/mob/living/simple_mob/on_click.dm index 4b824c9580..74b0236c13 100644 --- a/code/modules/mob/living/simple_mob/on_click.dm +++ b/code/modules/mob/living/simple_mob/on_click.dm @@ -14,6 +14,9 @@ switch(a_intent) if(I_HELP) if(isliving(A)) + if(src.zone_sel.selecting == BP_GROIN) //CHOMPEdit + if(src.vore_bellyrub(A)) + return custom_emote(1,"[pick(friendly)] \the [A]!") if(I_HURT) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm b/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm index af2d00404e..04e995d7d1 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm @@ -274,11 +274,15 @@ switch(M.a_intent) if(I_HELP) if(health > 0) + if(M.zone_sel.selecting == BP_GROIN) //CHOMPEdit + if(M.vore_bellyrub(src)) + return M.visible_message("[M] [response_help] \the [src].") if(has_AI()) var/datum/ai_holder/AI = ai_holder AI.set_stance(STANCE_IDLE) if(prob(tame_chance)) + AI.violent_breakthrough = FALSE AI.hostile = FALSE friend = M AI.set_follow(friend) diff --git a/code/modules/mob/mob_planes.dm b/code/modules/mob/mob_planes.dm index 7b1fbd6f7e..b5a94810fe 100644 --- a/code/modules/mob/mob_planes.dm +++ b/code/modules/mob/mob_planes.dm @@ -215,6 +215,7 @@ render_target = O_LIGHTING_VISUAL_RENDER_TARGET blend_mode = BLEND_MULTIPLY alpha = 255 + appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR // NO_CLIENT_COLOR because it has some naughty interactions with colorblindness that I can't figure out. Byond bug? /obj/screen/plane_master/emissive plane = PLANE_EMISSIVE diff --git a/code/modules/tables/tables.dm b/code/modules/tables/tables.dm index 7111cd52d7..914c478e17 100644 --- a/code/modules/tables/tables.dm +++ b/code/modules/tables/tables.dm @@ -359,24 +359,27 @@ var/list/table_icon_cache = list() // Base frame shape. Mostly done for glass/diamond tables, where this is visible. for(var/i = 1 to 4) - var/image/I = get_table_image(icon, connections[i], 1<<(i-1)) + var/image/I = get_table_image(icon, connections?[i] || 0, 1<<(i-1)) add_overlay(I) // Standard table image if(material) for(var/i = 1 to 4) - var/image/I = get_table_image(icon, "[material.icon_base]_[connections[i]]", 1<<(i-1), material.icon_colour, 255 * material.opacity) + var/connect = connections?[i] || 0 + var/image/I = get_table_image(icon, "[material.icon_base]_[connect]", 1<<(i-1), material.icon_colour, 255 * material.opacity) add_overlay(I) // Reinforcements if(reinforced) for(var/i = 1 to 4) - var/image/I = get_table_image(icon, "[reinforced.icon_reinf]_[connections[i]]", 1<<(i-1), reinforced.icon_colour, 255 * reinforced.opacity) + var/connect = connections?[i] || 0 + var/image/I = get_table_image(icon, "[reinforced.icon_reinf]_[connect]", 1<<(i-1), reinforced.icon_colour, 255 * reinforced.opacity) add_overlay(I) if(carpeted) for(var/i = 1 to 4) - var/image/I = get_table_image(icon, "carpet_[connections[i]]", 1<<(i-1)) + var/connect = connections?[i] || 0 + var/image/I = get_table_image(icon, "carpet_[connect]", 1<<(i-1)) add_overlay(I) else cut_overlays() diff --git a/code/modules/ventcrawl/ventcrawl.dm b/code/modules/ventcrawl/ventcrawl.dm index dd96f40167..a1fd6af591 100644 --- a/code/modules/ventcrawl/ventcrawl.dm +++ b/code/modules/ventcrawl/ventcrawl.dm @@ -10,7 +10,8 @@ var/list/ventcrawl_machinery = list( /obj/item/weapon/holder, /obj/machinery/camera, /obj/belly, - /obj/screen + /obj/screen, + /atom/movable/emissive_blocker ) //VOREStation Edit : added /obj/belly, to this list, CI is complaining about this in his indentation check //mob/living/simple_mob/borer, //VORESTATION AI TEMPORARY REMOVAL REPLACE BACK IN LIST WHEN RESOLVED //VOREStation Edit diff --git a/code/modules/vore/eating/belly_obj_ch.dm b/code/modules/vore/eating/belly_obj_ch.dm index 710c551915..6a90218395 100644 --- a/code/modules/vore/eating/belly_obj_ch.dm +++ b/code/modules/vore/eating/belly_obj_ch.dm @@ -1,4 +1,4 @@ -//CHOMP vore additions, currently only consists of reagent stuff - Jack +//CHOMP vore additions. /obj/belly //CHOMP - liquid bellies @@ -302,4 +302,52 @@ transfer_contents(prey, dest_belly) else // Didn't transfer, so wait before retrying - addtimer(CALLBACK(src, /obj/belly/.proc/check_autotransfer, prey, autotransferlocation), autotransferwait) \ No newline at end of file + addtimer(CALLBACK(src, /obj/belly/.proc/check_autotransfer, prey, autotransferlocation), autotransferwait) + + +/////////////////////////// Process Cycle Lite /////////////////////////// CHOMP PCL +/obj/belly/proc/quick_cycle() //For manual belly cycling without straining the bellies subsystem. + HandleBellyReagents() //CHOMP reagent belly stuff. + // VERY early exit + if(!contents.len) + return + + var/to_update = FALSE //Did anything update worthy happen? + +/////////////////////////// Exit Early //////////////////////////// CHOMP PCL + var/list/touchable_atoms = contents - items_preserved + if(!length(touchable_atoms)) + return + + var/datum/digest_mode/DM = GLOB.digest_modes["[digest_mode]"] + if(!DM) + log_debug("Digest mode [digest_mode] didn't exist in the digest_modes list!!") + return FALSE + if(DM.handle_atoms(src, touchable_atoms)) + updateVRPanels() + return + + var/list/touchable_mobs = null + + var/list/hta_returns = handle_touchable_atoms(touchable_atoms) + if(islist(hta_returns)) + if(hta_returns["touchable_mobs"]) + touchable_mobs = hta_returns["touchable_mobs"] + if(hta_returns["to_update"]) + to_update = hta_returns["to_update"] + + if(!LAZYLEN(touchable_mobs)) + return + +///////////////////// Time to actually process mobs ///////////////////// CHOMP PCL + for(var/target in touchable_mobs) + var/mob/living/L = target + if(!istype(L)) + continue + var/list/returns = DM.process_mob(src, target) + if(istype(returns) && returns["to_update"]) + to_update = TRUE + + if(to_update) + updateVRPanels() +/////////////////////////// CHOMP PCL END /////////////////////////// \ No newline at end of file diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index 7c195dac12..aec57913ee 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -17,8 +17,10 @@ var/play_sound //Potential sound to play at the end to avoid code duplication. var/to_update = FALSE //Did anything update worthy happen? -///////////////////// Prey Loop Refresh/hack ////////////////////// - prey_loop() +/////////////////////////// Exit Early //////////////////////////// + var/list/touchable_atoms = contents - items_preserved + if(!length(touchable_atoms)) + return /////////////////////////// Sound Selections /////////////////////////// var/digestion_noise_chance = 0 @@ -31,10 +33,7 @@ prey_digest = sound(get_sfx("fancy_digest_prey")) pred_digest = sound(get_sfx("fancy_digest_pred")) -/////////////////////////// Exit Early //////////////////////////// - var/list/touchable_atoms = contents - items_preserved - if(!length(touchable_atoms)) - return +///////////////////// Early Non-Mode Handling ///////////////////// var/datum/digest_mode/DM = GLOB.digest_modes["[digest_mode]"] if(!DM) @@ -55,10 +54,58 @@ if(hta_returns["to_update"]) to_update = hta_returns["to_update"] + if(!digestion_noise_chance) + digestion_noise_chance = DM.noise_chance + +/////////////////////////// Make any noise /////////////////////////// + if(digestion_noise_chance && prob(digestion_noise_chance)) + for(var/mob/M in contents) + if(M && M.is_preference_enabled(/datum/client_preference/digestion_noises)) + SEND_SOUND(M, prey_digest) + play_sound = pred_digest + + if(to_update) + updateVRPanels() + if(!LAZYLEN(touchable_mobs)) + if(play_sound) + for(var/mob/M in hearers(VORE_SOUND_RANGE, get_turf(owner))) //so we don't fill the whole room with the sound effect + if(!M.is_preference_enabled(/datum/client_preference/digestion_noises)) + continue + if(isturf(M.loc) || (M.loc != src)) //to avoid people on the inside getting the outside sounds and their direct sounds + built in sound pref check + if(fancy_vore) + M.playsound_local(get_turf(owner), play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) + else + M.playsound_local(get_turf(owner), play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) + //these are all external sound triggers now, so it's ok. return -///////////////////// Early Non-Mode Handling ///////////////////// +///////////////////// Prey Loop Refresh/hack ////////////////////// + prey_loop() + +///////////////////// Time to actually process mobs ///////////////////// + + for(var/target in touchable_mobs) + var/mob/living/L = target + if(!istype(L)) + continue + var/list/returns = DM.process_mob(src, target) + if(istype(returns) && returns["to_update"]) + to_update = TRUE + if(istype(returns) && returns["soundToPlay"] && !play_sound) + play_sound = returns["soundToPlay"] + + if(play_sound) + for(var/mob/M in hearers(VORE_SOUND_RANGE, get_turf(owner))) //so we don't fill the whole room with the sound effect + if(!M.is_preference_enabled(/datum/client_preference/digestion_noises)) + continue + if(isturf(M.loc) || (M.loc != src)) //to avoid people on the inside getting the outside sounds and their direct sounds + built in sound pref check + if(fancy_vore) + M.playsound_local(get_turf(owner), play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) + else + M.playsound_local(get_turf(owner), play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) + //these are all external sound triggers now, so it's ok. + if(emote_active) var/list/EL = emote_lists[digest_mode] if(LAZYLEN(EL) && next_emote <= world.time) @@ -79,41 +126,6 @@ formatted_message = replacetext(formatted_message, "%countprey", living_count) to_chat(M, "[formatted_message]") - if(!digestion_noise_chance) - digestion_noise_chance = DM.noise_chance - - -///////////////////// Time to actually process mobs ///////////////////// - for(var/target in touchable_mobs) - var/mob/living/L = target - if(!istype(L)) - continue - var/list/returns = DM.process_mob(src, target) - if(istype(returns) && returns["to_update"]) - to_update = TRUE - if(istype(returns) && returns["soundToPlay"] && !play_sound) - play_sound = returns["soundToPlay"] - -/////////////////////////// Make any noise /////////////////////////// - if(digestion_noise_chance && prob(digestion_noise_chance)) - for(var/mob/M in contents) - if(M && M.is_preference_enabled(/datum/client_preference/digestion_noises)) - SEND_SOUND(M, prey_digest) - play_sound = pred_digest - - if(play_sound) - for(var/mob/M in hearers(VORE_SOUND_RANGE, get_turf(owner))) //so we don't fill the whole room with the sound effect - if(!M.is_preference_enabled(/datum/client_preference/digestion_noises)) - continue - if(isturf(M.loc) || (M.loc != src)) //to avoid people on the inside getting the outside sounds and their direct sounds + built in sound pref check - if(fancy_vore) - M.playsound_local(get_turf(owner), play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) - else - M.playsound_local(get_turf(owner), play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) - //these are all external sound triggers now, so it's ok. - - if(to_update) - updateVRPanels() /obj/belly/proc/handle_touchable_atoms(list/touchable_atoms) var/did_an_item = FALSE // Only do one item per cycle. diff --git a/code/modules/vore/eating/living_ch.dm b/code/modules/vore/eating/living_ch.dm index f51bc265b1..58f4c656e3 100644 --- a/code/modules/vore/eating/living_ch.dm +++ b/code/modules/vore/eating/living_ch.dm @@ -219,3 +219,21 @@ mob/living/proc/check_vorefootstep(var/m_intent, var/turf/T) soundfile = fancy_release_sounds[RTB.release_sound] if(soundfile) playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises) + +/mob/living/proc/vore_bellyrub(var/mob/living/T) + set name = "Give Bellyrubs" + set category = "Abilities" + set desc = "Provide bellyrubs to either yourself or another mob with a belly." + + if(!T) + T = input("Choose whose belly to rub") as null| mob in view(src.loc,1) + if(!T) + return FALSE + if(T.vore_selected) + var/obj/belly/B = T.vore_selected + if(istype(B)) + custom_emote_vr(1, "gives some rubs over [T]'s [B].") + B.quick_cycle() + return TRUE + to_chat(src, "There is no suitable belly for rubs.") + return FALSE \ No newline at end of file diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 5d194781c7..d69ccb25b9 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -52,6 +52,7 @@ M.verbs += /mob/living/proc/insidePanel M.verbs += /mob/living/proc/vore_transfer_reagents //CHOMP If mob doesnt have bellies it cant use this verb for anything M.verbs += /mob/living/proc/vore_check_reagents //CHOMP If mob doesnt have bellies it cant use this verb for anything + M.verbs += /mob/living/proc/vore_bellyrub //CHOMP If mob doesnt have bellies it probably won't be needing this anyway //Tries to load prefs if a client is present otherwise gives freebie stomach spawn(2 SECONDS) @@ -544,7 +545,7 @@ // Their AI should get notified so they can stab us prey.ai_holder?.react_to_attack(user) - + //Timer and progress bar if(!do_after(user, swallow_time, prey, exclusive = TASK_USER_EXCLUSIVE)) return FALSE // Prey escpaed (or user disabled) before timer expired. diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index 5bcd41de3f..2116cb6048 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -889,74 +889,56 @@ No. With a teleporter? Just *no*. - Hawk, YW //catalogue_data = list(/datum/category_item/catalogue/information/organization/khi) sensor_mode = 3 - icon = 'icons/vore/custom_clothes_vr.dmi' - icon_state = "khi_uniform_i" - - icon_override = 'icons/vore/custom_clothes_vr.dmi' - item_state = "" + icon = 'icons/inventory/uniform/item_vr.dmi' + default_worn_icon = 'icons/inventory/uniform/mob_vr.dmi' + icon_state = "khi_uniform" /obj/item/clothing/under/rank/khi/cmd //Command version name = "GE command suit" //CHOMPedit: Change to GE desc = "Gilthari Exports uniform. An extra-comfortable command one, at that." //CHOMPedit - icon_state = "khi_uniform_cmd_i" - item_state = "khi_uniform_cmd" - worn_state = "khi_uniform_cmd" + icon_state = "khi_uniform_cmd" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/under/rank/khi/sec //Security version name = "GE security suit" //CHOMPedit: Change to GE desc = "Gilthari Exports uniform. This one has angry red security stripes. Keepin' the peace in style." //CHOMPedit - icon_state = "khi_uniform_sec_i" - item_state = "khi_uniform_sec" - worn_state = "khi_uniform_sec" + icon_state = "khi_uniform_sec" armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/under/rank/khi/med //Medical version name = "GE medical suit" //CHOMPedit: Change to GE desc = "Gilthari Exports uniform. The medical version. Why not just get a new body, anyway?"//CHOMPedit - icon_state = "khi_uniform_med_i" - item_state = "khi_uniform_med" - worn_state = "khi_uniform_med" + icon_state = "khi_uniform_med" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 0) /obj/item/clothing/under/rank/khi/eng //Engineering version name = "GE engineering suit" //CHOMPedit: Change to GE desc = "Gilthari Exports uniform. One fit for an engineer, by the looks of it. Building the future, one disaster at a time." //CHOMPedit - icon_state = "khi_uniform_eng_i" - item_state = "khi_uniform_eng" - worn_state = "khi_uniform_eng" + icon_state = "khi_uniform_eng" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 10) /obj/item/clothing/under/rank/khi/sci //Science version name = "GE science suit" //CHOMPedit: Change to GE desc = "Gilthari Exports uniform. For performing science in, based on the color! Only SCIENCE can save us now." //CHOMPedit - icon_state = "khi_uniform_sci_i" - item_state = "khi_uniform_sci" - worn_state = "khi_uniform_sci" + icon_state = "khi_uniform_sci" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 0, rad = 0) /obj/item/clothing/under/rank/khi/crg //Cargo version name = "GE cargo suit" //CHOMPedit: Change to GE desc = "A sleek cargo uniform from Gilthari Exports." //CHOMPedit - icon_state = "khi_uniform_crg_i" - item_state = "khi_uniform_crg" - worn_state = "khi_uniform_crg" + icon_state = "khi_uniform_crg" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/under/rank/khi/civ //Science version name = "GE civilian suit" //CHOMPedit: Change to GE desc = "A sleek civilian uniform from Gilthari Exports." //CHOMPedit - icon_state = "khi_uniform_civ_i" - item_state = "khi_uniform_civ" - worn_state = "khi_uniform_civ" + icon_state = "khi_uniform_civ" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/under/rank/khi/fluff/aronai //Aro fluff version name = "KHI meditech suit" - desc = "An outdated uniform of some sort. You get the sense that whoever wore this must've been very full of themselves" - icon_state = "khi_uniform_aro_i" - item_state = "khi_uniform_aro" - worn_state = "khi_uniform_aro" + desc = "An outdated uniform of some sort. You get the sense that whoever wore this must've been very full of themselves" //YW edit + icon_state = "khi_uniform_aro" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 0) //jacobdragon:Earthen Breath @@ -1189,30 +1171,26 @@ Departamental Swimsuits, for general use /obj/item/clothing/under/rank/trek name = "Section 31 Uniform" desc = "Oooh... right." - icon = 'icons/vore/custom_clothes_vr.dmi' - icon_override = 'icons/vore/custom_clothes_vr.dmi' - item_state = "" + icon = 'icons/inventory/uniform/item_vr.dmi' + default_worn_icon = 'icons/inventory/uniform/mob_vr.dmi' //TOS /obj/item/clothing/under/rank/trek/command name = "Command Uniform" desc = "The uniform worn by command officers in the mid 2260s." icon_state = "trek_command" - item_state = "trek_command" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) // Considering only staff heads get to pick it /obj/item/clothing/under/rank/trek/eng //CHOMPEdit: Engineering only name = "Operations Uniform" desc = "The uniform worn by operations officers of the mid 2260s. You feel strangely vulnerable just seeing this..." icon_state = "trek_engsec" - item_state = "trek_engsec" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) // since they're shared between jobs and kinda moot. //CHOMPEdit: I'll tell you what, the armor values are NOT shared. Removed melee bonus. /obj/item/clothing/under/rank/trek/medsci name = "MedSci Uniform" desc = "The uniform worn by medsci officers in the mid 2260s." icon_state = "trek_medsci" - item_state = "trek_medsci" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) // basically a copy of vanilla sci/med @@ -1220,59 +1198,48 @@ Departamental Swimsuits, for general use /obj/item/clothing/under/rank/trek/command/next desc = "The uniform worn by command officers. This one's from the mid 2360s." icon_state = "trek_next_command" - item_state = "trek_next_command" /obj/item/clothing/under/rank/trek/eng/next //CHOMPEdit: Engineering only desc = "The uniform worn by operation officers. This one's from the mid 2360s." icon_state = "trek_next_engsec" - item_state = "trek_next_engsec" /obj/item/clothing/under/rank/trek/medsci/next desc = "The uniform worn by medsci officers. This one's from the mid 2360s." icon_state = "trek_next_medsci" - item_state = "trek_next_medsci" //ENT /obj/item/clothing/under/rank/trek/command/ent desc = "The uniform worn by command officers of the 2140s." icon_state = "trek_ent_command" - item_state = "trek_ent_command" /obj/item/clothing/under/rank/trek/eng/ent //CHOMPEdit: Engineering only desc = "The uniform worn by operations officers of the 2140s." icon_state = "trek_ent_engsec" - item_state = "trek_ent_engsec" /obj/item/clothing/under/rank/trek/medsci/ent desc = "The uniform worn by medsci officers of the 2140s." icon_state = "trek_ent_medsci" - item_state = "trek_ent_medsci" //VOY /obj/item/clothing/under/rank/trek/command/voy desc = "The uniform worn by command officers of the 2370s." icon_state = "trek_voy_command" - item_state = "trek_voy_command" /obj/item/clothing/under/rank/trek/eng/voy //CHOMPEdit: Engineering only desc = "The uniform worn by operations officers of the 2370s." icon_state = "trek_voy_engsec" - item_state = "trek_voy_engsec" /obj/item/clothing/under/rank/trek/medsci/voy desc = "The uniform worn by medsci officers of the 2370s." icon_state = "trek_voy_medsci" - item_state = "trek_voy_medsci" //DS9 - /obj/item/clothing/suit/storage/trek/ds9 name = "Padded Overcoat" desc = "The overcoat worn by all officers of the 2380s." + icon = 'icons/inventory/suit/item_vr.dmi' + default_worn_icon = 'icons/inventory/suit/mob_vr.dmi' icon_state = "trek_ds9_coat" - icon = 'icons/vore/custom_clothes_vr.dmi' - item_state = "trek_ds9_coat_mob" - icon_override = 'icons/vore/custom_clothes_vr.dmi' body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS permeability_coefficient = 0.50 allowed = list( @@ -1289,23 +1256,21 @@ Departamental Swimsuits, for general use name = "Admiral Overcoat" desc = "Admirality specialty coat to keep flag officers fashionable and protected." icon_state = "trek_ds9_coat_adm" - item_state = "trek_ds9_coat_adm_mob" armor = list(melee = 45, bullet = 35, laser = 35, energy = 20, bomb = 0, bio = 40, rad = 55) - /obj/item/clothing/under/rank/trek/command/ds9 desc = "The uniform worn by command officers of the 2380s." - icon_state = "trek_command" + icon_state = "trek_command" // no unique state for this one item_state = "trek_ds9_command" /obj/item/clothing/under/rank/trek/eng/ds9 //CHOMPEdit: Engineering only desc = "The uniform worn by operations officers of the 2380s." - icon_state = "trek_engsec" + icon_state = "trek_engsec" // no unique state for this one item_state = "trek_ds9_engsec" /obj/item/clothing/under/rank/trek/medsci/ds9 desc = "The uniform undershit worn by medsci officers of the 2380s." - icon_state = "trek_medsci" + icon_state = "trek_medsci" // no unique state for this one item_state = "trek_ds9_medsci" //For general use maybe @@ -1941,7 +1906,7 @@ Departamental Swimsuits, for general use item_icons = list() default_worn_icon = 'icons/vore/custom_clothes_vr.dmi' color = COLOR_NAVY - sprite_sheets = null + sprite_sheets = list() //SweetBlueSylveon:Pip Shyner /obj/item/clothing/accessory/poncho/roles/cloak/hop/fluff/pip diff --git a/icons/inventory/accessory/item.dmi b/icons/inventory/accessory/item.dmi index 21d8bbff1d..61e8c36841 100644 Binary files a/icons/inventory/accessory/item.dmi and b/icons/inventory/accessory/item.dmi differ diff --git a/icons/inventory/belt/item.dmi b/icons/inventory/belt/item.dmi index 4f97b40e27..9fd819307a 100644 Binary files a/icons/inventory/belt/item.dmi and b/icons/inventory/belt/item.dmi differ diff --git a/icons/inventory/feet/item_vr.dmi b/icons/inventory/feet/item_vr.dmi index 5b81be4b1f..cfba06c39b 100644 Binary files a/icons/inventory/feet/item_vr.dmi and b/icons/inventory/feet/item_vr.dmi differ diff --git a/icons/inventory/feet/mob_vr.dmi b/icons/inventory/feet/mob_vr.dmi index b1fbd831a1..c717e731fb 100644 Binary files a/icons/inventory/feet/mob_vr.dmi and b/icons/inventory/feet/mob_vr.dmi differ diff --git a/icons/inventory/hands/item_vr.dmi b/icons/inventory/hands/item_vr.dmi index c682016730..ba5e3bc134 100644 Binary files a/icons/inventory/hands/item_vr.dmi and b/icons/inventory/hands/item_vr.dmi differ diff --git a/icons/inventory/hands/mob_vr.dmi b/icons/inventory/hands/mob_vr.dmi index 36e4219289..c2a8db76f8 100644 Binary files a/icons/inventory/hands/mob_vr.dmi and b/icons/inventory/hands/mob_vr.dmi differ diff --git a/icons/inventory/head/item_vr.dmi b/icons/inventory/head/item_vr.dmi index d35d62e18e..929960272b 100644 Binary files a/icons/inventory/head/item_vr.dmi and b/icons/inventory/head/item_vr.dmi differ diff --git a/icons/inventory/head/mob_vr.dmi b/icons/inventory/head/mob_vr.dmi index 417faba92c..efde8d6aa5 100644 Binary files a/icons/inventory/head/mob_vr.dmi and b/icons/inventory/head/mob_vr.dmi differ diff --git a/icons/inventory/suit/item_vr.dmi b/icons/inventory/suit/item_vr.dmi index 31083070be..8357527923 100644 Binary files a/icons/inventory/suit/item_vr.dmi and b/icons/inventory/suit/item_vr.dmi differ diff --git a/icons/inventory/suit/mob_vr.dmi b/icons/inventory/suit/mob_vr.dmi index 35f233c1c3..24d7365930 100644 Binary files a/icons/inventory/suit/mob_vr.dmi and b/icons/inventory/suit/mob_vr.dmi differ diff --git a/icons/inventory/uniform/item.dmi b/icons/inventory/uniform/item.dmi index 5b7c197b03..08cc0cb815 100644 Binary files a/icons/inventory/uniform/item.dmi and b/icons/inventory/uniform/item.dmi differ diff --git a/icons/inventory/uniform/item_vr.dmi b/icons/inventory/uniform/item_vr.dmi index 2e97626d06..e3242dda79 100644 Binary files a/icons/inventory/uniform/item_vr.dmi and b/icons/inventory/uniform/item_vr.dmi differ diff --git a/icons/inventory/uniform/mob.dmi b/icons/inventory/uniform/mob.dmi index 71d8348cf6..87cee8aca9 100644 Binary files a/icons/inventory/uniform/mob.dmi and b/icons/inventory/uniform/mob.dmi differ diff --git a/icons/inventory/uniform/mob_vr.dmi b/icons/inventory/uniform/mob_vr.dmi index ad363e9706..3dc58ffd2c 100644 Binary files a/icons/inventory/uniform/mob_vr.dmi and b/icons/inventory/uniform/mob_vr.dmi differ diff --git a/icons/mob/rig_back_vr.dmi b/icons/mob/rig_back_vr.dmi new file mode 100644 index 0000000000..aa676c0e94 Binary files /dev/null and b/icons/mob/rig_back_vr.dmi differ diff --git a/icons/obj/rig_modules.dmi b/icons/obj/rig_modules.dmi index 5c81745fae..a63fcc23a8 100644 Binary files a/icons/obj/rig_modules.dmi and b/icons/obj/rig_modules.dmi differ diff --git a/icons/obj/rig_modules_vr.dmi b/icons/obj/rig_modules_vr.dmi index 1ee2c008aa..687ea5ba78 100644 Binary files a/icons/obj/rig_modules_vr.dmi and b/icons/obj/rig_modules_vr.dmi differ diff --git a/icons/obj/suitdispenser.dmi b/icons/obj/suitdispenser.dmi index 09723225a4..def549b9bb 100644 Binary files a/icons/obj/suitdispenser.dmi and b/icons/obj/suitdispenser.dmi differ diff --git a/icons/vore/custom_clothes_vr.dmi b/icons/vore/custom_clothes_vr.dmi index d9b172cd5a..595ce2da40 100644 Binary files a/icons/vore/custom_clothes_vr.dmi and b/icons/vore/custom_clothes_vr.dmi differ diff --git a/maps/offmap_vr/om_ships/aro3.dmm b/maps/offmap_vr/om_ships/aro3.dmm index 095ca08b7a..f31d589f73 100644 --- a/maps/offmap_vr/om_ships/aro3.dmm +++ b/maps/offmap_vr/om_ships/aro3.dmm @@ -2589,6 +2589,10 @@ /obj/structure/table/marble, /turf/simulated/floor/tiled/eris/cafe, /area/aro3/kitchen) +"vP" = ( +/obj/machinery/gear_dispenser/suit_fancy/aether, +/turf/simulated/floor/tiled/eris/steel/panels, +/area/aro3/eva_hall) "vQ" = ( /obj/structure/table/steel, /obj/item/device/flashlight/lamp, @@ -3953,6 +3957,22 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, +<<<<<<< HEAD +||||||| parent of df7a88506f... Merge pull request #11032 from VOREStation/Arokha/megaport +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -24 + }, +/obj/item/device/uav/loaded, +======= +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -24 + }, +/obj/item/device/uav/loaded{ + nickname = "FoxBot Beta" + }, +>>>>>>> df7a88506f... Merge pull request #11032 from VOREStation/Arokha/megaport /turf/simulated/floor/tiled/eris/dark/gray_perforated, /area/aro3/repair_bay) "Gy" = ( @@ -42234,7 +42254,7 @@ el el vZ lu -DM +vP XF XF Nu diff --git a/maps/offmap_vr/talon/talon_v2.dm b/maps/offmap_vr/talon/talon_v2.dm index 2b2ede093c..1a8e79af15 100644 --- a/maps/offmap_vr/talon/talon_v2.dm +++ b/maps/offmap_vr/talon/talon_v2.dm @@ -343,7 +343,7 @@ speaking of, if some dumbass does take it and fly off solo then get themselves k /obj/item/clothing/under/rank/medical, /obj/item/clothing/under/rank/nurse, /obj/item/clothing/under/rank/orderly, - /obj/item/clothing/suit/storage/toggle/labcoat, + /obj/item/clothing/suit/storage/toggle/labcoat/modern, /obj/item/clothing/suit/storage/toggle/fr_jacket, /obj/item/clothing/shoes/white, /obj/item/device/radio/headset/talon, diff --git a/maps/southern_cross/structures/closets/medical.dm b/maps/southern_cross/structures/closets/medical.dm index f528c2a0f1..666b42d617 100644 --- a/maps/southern_cross/structures/closets/medical.dm +++ b/maps/southern_cross/structures/closets/medical.dm @@ -13,6 +13,7 @@ /obj/item/clothing/under/rank/chief_medical_officer/skirt, /obj/item/clothing/suit/storage/toggle/labcoat/cmo, /obj/item/clothing/suit/storage/toggle/labcoat/cmoalt, + /obj/item/clothing/suit/storage/toggle/labcoat/modern/cmo, /obj/item/weapon/cartridge/cmo, /obj/item/clothing/gloves/sterile/latex, /obj/item/clothing/shoes/brown, diff --git a/maps/virgo_minitest/virgo_minitest_defines.dm b/maps/virgo_minitest/virgo_minitest_defines.dm index abee28169d..716815b7b3 100644 --- a/maps/virgo_minitest/virgo_minitest_defines.dm +++ b/maps/virgo_minitest/virgo_minitest_defines.dm @@ -60,6 +60,10 @@ allowed_spawns = list("Arrivals Shuttle","Gateway","Cryogenic Storage","Cyborg Storage") +/datum/map/virgo_minitest/New() + ..() + SSticker.start_immediately = TRUE + /datum/map_z_level/minitest/station z = Z_LEVEL_MAIN_VIRGO_TESTING name = "Station Level" diff --git a/tgui/packages/common/string.js b/tgui/packages/common/string.js index 461f975b3a..4278a1fb3e 100644 --- a/tgui/packages/common/string.js +++ b/tgui/packages/common/string.js @@ -78,13 +78,21 @@ export const createSearch = (searchText, stringifier) => { }; }; +export const isUppercase = chr => { + return chr.toUpperCase() === chr; +}; + export const capitalize = str => { // Handle array if (Array.isArray(str)) { return str.map(capitalize); } // Handle string - return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase(); + let chr = str.charAt(0); + if (isUppercase(chr)) { + return str; // Already caps, might be an acronym, so don't mess it up by lowercasing the rest + } + return chr.toUpperCase() + str.slice(1).toLowerCase(); }; export const toTitleCase = str => { diff --git a/tgui/public/tgui-common.bundle.js b/tgui/public/tgui-common.bundle.js index 013a168d31..d363cbd6bb 100644 --- a/tgui/public/tgui-common.bundle.js +++ b/tgui/public/tgui-common.bundle.js @@ -1 +1 @@ -(self.webpackChunktgui_workspace=self.webpackChunktgui_workspace||[]).push([[962],{33407:function(e,t,n){"use strict";t.__esModule=!0,t.popperGenerator=v,t.createPopper=void 0;var r=d(n(98825)),o=d(n(52089)),i=d(n(66469)),a=d(n(54484)),u=(d(n(82020)),d(n(7183))),c=d(n(16936)),s=(d(n(11026)),d(n(20675)),d(n(78044)),d(n(5495))),l=d(n(45073));t.detectOverflow=l["default"];var f=n(31966);n(54945);function d(e){return e&&e.__esModule?e:{"default":e}}var p={placement:"bottom",modifiers:[],strategy:"absolute"};function h(){for(var e=arguments.length,t=new Array(e),n=0;n=0&&(0,l.isHTMLElement)(e)?(0,u["default"])(e):e;if(!(0,l.isElement)(n))return[];return t.filter((function(e){return(0,l.isElement)(e)&&(0,p["default"])(e,n)&&"body"!==(0,h["default"])(e)}))}(e):[].concat(t),o=[].concat(r,[n]),i=o[0],c=o.reduce((function(t,n){var r=y(e,n);return t.top=(0,m.max)(r.top,t.top),t.right=(0,m.min)(r.right,t.right),t.bottom=(0,m.min)(r.bottom,t.bottom),t.left=(0,m.max)(r.left,t.left),t}),y(e,i));return c.width=c.right-c.left,c.height=c.bottom-c.top,c.x=c.left,c.y=c.top,c};var r=n(54945),o=g(n(17488)),i=g(n(27175)),a=g(n(66469)),u=g(n(54484)),c=g(n(36e3)),s=g(n(82020)),l=n(31966),f=g(n(87916)),d=g(n(23470)),p=g(n(41858)),h=g(n(38012)),v=g(n(77276)),m=n(52209);function g(e){return e&&e.__esModule?e:{"default":e}}function y(e,t){return t===r.viewport?(0,v["default"])((0,o["default"])(e)):(0,l.isHTMLElement)(t)?function(e){var t=(0,f["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,v["default"])((0,i["default"])((0,c["default"])(e)))}},98825:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t,n){void 0===n&&(n=!1);var l=(0,c["default"])(t),f=(0,r["default"])(e),d=(0,a.isHTMLElement)(t),p={scrollLeft:0,scrollTop:0},h={x:0,y:0};(d||!d&&!n)&&(("body"!==(0,i["default"])(t)||(0,s["default"])(l))&&(p=(0,o["default"])(t)),(0,a.isHTMLElement)(t)?((h=(0,r["default"])(t)).x+=t.clientLeft,h.y+=t.clientTop):l&&(h.x=(0,u["default"])(l)));return{x:f.left+p.scrollLeft-h.x,y:f.top+p.scrollTop-h.y,width:f.width,height:f.height}};var r=l(n(87916)),o=l(n(38015)),i=l(n(38012)),a=n(31966),u=l(n(25880)),c=l(n(36e3)),s=l(n(42156));function l(e){return e&&e.__esModule?e:{"default":e}}},82020:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(0,o["default"])(e).getComputedStyle(e)};var r,o=(r=n(89778))&&r.__esModule?r:{"default":r}},36e3:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(((0,r.isElement)(e)?e.ownerDocument:e.document)||window.document).documentElement};var r=n(31966)},27175:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n=(0,r["default"])(e),c=(0,a["default"])(e),s=null==(t=e.ownerDocument)?void 0:t.body,l=(0,u.max)(n.scrollWidth,n.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),f=(0,u.max)(n.scrollHeight,n.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),d=-c.scrollLeft+(0,i["default"])(e),p=-c.scrollTop;"rtl"===(0,o["default"])(s||n).direction&&(d+=(0,u.max)(n.clientWidth,s?s.clientWidth:0)-l);return{width:l,height:f,x:d,y:p}};var r=c(n(36e3)),o=c(n(82020)),i=c(n(25880)),a=c(n(31348)),u=n(52209);function c(e){return e&&e.__esModule?e:{"default":e}}},13339:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}},52089:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=e.offsetWidth,r=e.offsetHeight;Math.abs(t.width-n)<=1&&(n=t.width);Math.abs(t.height-r)<=1&&(r=t.height);return{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}};var r,o=(r=n(87916))&&r.__esModule?r:{"default":r}},38012:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e?(e.nodeName||"").toLowerCase():null}},38015:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return e!==(0,o["default"])(e)&&(0,i.isHTMLElement)(e)?(0,a["default"])(e):(0,r["default"])(e)};var r=u(n(31348)),o=u(n(89778)),i=n(31966),a=u(n(13339));function u(e){return e&&e.__esModule?e:{"default":e}}},54484:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,r["default"])(e),n=l(e);for(;n&&(0,u["default"])(n)&&"static"===(0,i["default"])(n).position;)n=l(n);if(n&&("html"===(0,o["default"])(n)||"body"===(0,o["default"])(n)&&"static"===(0,i["default"])(n).position))return t;return n||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&(0,a.isHTMLElement)(e)){if("fixed"===(0,i["default"])(e).position)return null}var n=(0,c["default"])(e);for(;(0,a.isHTMLElement)(n)&&["html","body"].indexOf((0,o["default"])(n))<0;){var r=(0,i["default"])(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t};var r=s(n(89778)),o=s(n(38012)),i=s(n(82020)),a=n(31966),u=s(n(69183)),c=s(n(23470));function s(e){return e&&e.__esModule?e:{"default":e}}function l(e){return(0,a.isHTMLElement)(e)&&"fixed"!==(0,i["default"])(e).position?e.offsetParent:null}},23470:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){if("html"===(0,r["default"])(e))return e;return e.assignedSlot||e.parentNode||((0,i.isShadowRoot)(e)?e.host:null)||(0,o["default"])(e)};var r=a(n(38012)),o=a(n(36e3)),i=n(31966);function a(e){return e&&e.__esModule?e:{"default":e}}},92098:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function c(e){if(["html","body","#document"].indexOf((0,i["default"])(e))>=0)return e.ownerDocument.body;if((0,a.isHTMLElement)(e)&&(0,o["default"])(e))return e;return c((0,r["default"])(e))};var r=u(n(23470)),o=u(n(42156)),i=u(n(38012)),a=n(31966);function u(e){return e&&e.__esModule?e:{"default":e}}},17488:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,r["default"])(e),n=(0,o["default"])(e),a=t.visualViewport,u=n.clientWidth,c=n.clientHeight,s=0,l=0;a&&(u=a.width,c=a.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=a.offsetLeft,l=a.offsetTop));return{width:u,height:c,x:s+(0,i["default"])(e),y:l}};var r=a(n(89778)),o=a(n(36e3)),i=a(n(25880));function a(e){return e&&e.__esModule?e:{"default":e}}},89778: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}},31348:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}};var r,o=(r=n(89778))&&r.__esModule?r:{"default":r}},25880:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return(0,r["default"])((0,o["default"])(e)).left+(0,i["default"])(e).scrollLeft};var r=a(n(87916)),o=a(n(36e3)),i=a(n(31348));function a(e){return e&&e.__esModule?e:{"default":e}}},31966:function(e,t,n){"use strict";t.__esModule=!0,t.isElement=function(e){var t=(0,o["default"])(e).Element;return e instanceof t||e instanceof Element},t.isHTMLElement=function(e){var t=(0,o["default"])(e).HTMLElement;return e instanceof t||e instanceof HTMLElement},t.isShadowRoot=function(e){if("undefined"==typeof ShadowRoot)return!1;var t=(0,o["default"])(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot};var r,o=(r=n(89778))&&r.__esModule?r:{"default":r}},42156:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=(0,o["default"])(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)};var r,o=(r=n(82020))&&r.__esModule?r:{"default":r}},69183:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return["table","td","th"].indexOf((0,o["default"])(e))>=0};var r,o=(r=n(38012))&&r.__esModule?r:{"default":r}},66469:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function c(e,t){var n;void 0===t&&(t=[]);var u=(0,r["default"])(e),s=u===(null==(n=e.ownerDocument)?void 0:n.body),l=(0,i["default"])(u),f=s?[l].concat(l.visualViewport||[],(0,a["default"])(u)?u:[]):u,d=t.concat(f);return s?d:d.concat(c((0,o["default"])(f)))};var r=u(n(92098)),o=u(n(23470)),i=u(n(89778)),a=u(n(42156));function u(e){return e&&e.__esModule?e:{"default":e}}},54945:function(e,t){"use strict";t.__esModule=!0,t.modifierPhases=t.afterWrite=t.write=t.beforeWrite=t.afterMain=t.main=t.beforeMain=t.afterRead=t.read=t.beforeRead=t.placements=t.variationPlacements=t.reference=t.popper=t.viewport=t.clippingParents=t.end=t.start=t.basePlacements=t.auto=t.left=t.right=t.bottom=t.top=void 0;t.top="top";var n="bottom";t.bottom=n;var r="right";t.right=r;var o="left";t.left=o;var i="auto";t.auto=i;var a=["top",n,r,o];t.basePlacements=a;var u="start";t.start=u;var c="end";t.end=c;t.clippingParents="clippingParents";t.viewport="viewport";t.popper="popper";t.reference="reference";var s=a.reduce((function(e,t){return e.concat([t+"-"+u,t+"-"+c])}),[]);t.variationPlacements=s;var l=[].concat(a,[i]).reduce((function(e,t){return e.concat([t,t+"-"+u,t+"-"+c])}),[]);t.placements=l;var f="beforeRead";t.beforeRead=f;var d="read";t.read=d;var p="afterRead";t.afterRead=p;var h="beforeMain";t.beforeMain=h;var v="main";t.main=v;var m="afterMain";t.afterMain=m;var g="beforeWrite";t.beforeWrite=g;var y="write";t.write=y;var b="afterWrite";t.afterWrite=b;var _=[f,d,p,h,v,m,g,y,b];t.modifierPhases=_},11613:function(e,t,n){"use strict";t.__esModule=!0;var r={popperGenerator:!0,detectOverflow:!0,createPopperBase:!0,createPopper:!0,createPopperLite:!0};t.createPopperLite=t.createPopper=t.createPopperBase=t.detectOverflow=t.popperGenerator=void 0;var o=n(54945);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(r,e)||e in t&&t[e]===o[e]||(t[e]=o[e]))}));var i=n(15461);Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(r,e)||e in t&&t[e]===i[e]||(t[e]=i[e]))}));var a=n(33407);t.popperGenerator=a.popperGenerator,t.detectOverflow=a.detectOverflow,t.createPopperBase=a.createPopper;var u=n(15172);t.createPopper=u.createPopper;var c=n(15327);t.createPopperLite=c.createPopper},1803:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r,o=(r=n(38012))&&r.__esModule?r:{"default":r},i=n(31966);var a={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]||{},r=t.attributes[e]||{},a=t.elements[e];(0,i.isHTMLElement)(a)&&(0,o["default"])(a)&&(Object.assign(a.style,n),Object.keys(r).forEach((function(e){var t=r[e];!1===t?a.removeAttribute(e):a.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 r=t.elements[e],a=t.attributes[e]||{},u=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});(0,i.isHTMLElement)(r)&&(0,o["default"])(r)&&(Object.assign(r.style,u),Object.keys(a).forEach((function(e){r.removeAttribute(e)})))}))}},requires:["computeStyles"]};t["default"]=a},35838:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r=d(n(78044)),o=d(n(52089)),i=d(n(41858)),a=d(n(54484)),u=d(n(99840)),c=d(n(51520)),s=d(n(72882)),l=d(n(8415)),f=n(54945);n(31966);function d(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,s["default"])("number"!=typeof e?e:(0,l["default"])(e,f.basePlacements))};var h={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,s=e.options,l=n.elements.arrow,d=n.modifiersData.popperOffsets,h=(0,r["default"])(n.placement),v=(0,u["default"])(h),m=[f.left,f.right].indexOf(h)>=0?"height":"width";if(l&&d){var g=p(s.padding,n),y=(0,o["default"])(l),b="y"===v?f.top:f.left,_="y"===v?f.bottom:f.right,w=n.rects.reference[m]+n.rects.reference[v]-d[v]-n.rects.popper[m],x=d[v]-n.rects.reference[v],E=(0,a["default"])(l),S=E?"y"===v?E.clientHeight||0:E.clientWidth||0:0,C=w/2-x/2,N=g[b],O=S-y[m]-g[_],k=S/2-y[m]/2+C,M=(0,c["default"])(N,k,O),A=v;n.modifiersData[i]=((t={})[A]=M,t.centerOffset=M-k,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&(0,i["default"])(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};t["default"]=h},42569:function(e,t,n){"use strict";t.__esModule=!0,t.mapToStyles=d,t["default"]=void 0;var r=n(54945),o=l(n(54484)),i=l(n(89778)),a=l(n(36e3)),u=l(n(82020)),c=l(n(78044)),s=n(52209);function l(e){return e&&e.__esModule?e:{"default":e}}var f={top:"auto",right:"auto",bottom:"auto",left:"auto"};function d(e){var t,n=e.popper,c=e.popperRect,l=e.placement,d=e.offsets,p=e.position,h=e.gpuAcceleration,v=e.adaptive,m=e.roundOffsets,g=!0===m?function(e){var t=e.x,n=e.y,r=window.devicePixelRatio||1;return{x:(0,s.round)((0,s.round)(t*r)/r)||0,y:(0,s.round)((0,s.round)(n*r)/r)||0}}(d):"function"==typeof m?m(d):d,y=g.x,b=void 0===y?0:y,_=g.y,w=void 0===_?0:_,x=d.hasOwnProperty("x"),E=d.hasOwnProperty("y"),S=r.left,C=r.top,N=window;if(v){var O=(0,o["default"])(n),k="clientHeight",M="clientWidth";O===(0,i["default"])(n)&&(O=(0,a["default"])(n),"static"!==(0,u["default"])(O).position&&(k="scrollHeight",M="scrollWidth")),O=O,l===r.top&&(C=r.bottom,w-=O[k]-c.height,w*=h?1:-1),l===r.left&&(S=r.right,b-=O[M]-c.width,b*=h?1:-1)}var A,T=Object.assign({position:p},v&&f);return h?Object.assign({},T,((A={})[C]=E?"0":"",A[S]=x?"0":"",A.transform=(N.devicePixelRatio||1)<2?"translate("+b+"px, "+w+"px)":"translate3d("+b+"px, "+w+"px, 0)",A)):Object.assign({},T,((t={})[C]=E?w+"px":"",t[S]=x?b+"px":"",t.transform="",t))}var p={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,i=n.adaptive,a=void 0===i||i,u=n.roundOffsets,s=void 0===u||u,l={placement:(0,c["default"])(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,d(Object.assign({},l,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:s})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,d(Object.assign({},l,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:s})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};t["default"]=p},84886:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r,o=(r=n(89778))&&r.__esModule?r:{"default":r};var i={passive:!0};var a={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,a=r.scroll,u=void 0===a||a,c=r.resize,s=void 0===c||c,l=(0,o["default"])(t.elements.popper),f=[].concat(t.scrollParents.reference,t.scrollParents.popper);return u&&f.forEach((function(e){e.addEventListener("scroll",n.update,i)})),s&&l.addEventListener("resize",n.update,i),function(){u&&f.forEach((function(e){e.removeEventListener("scroll",n.update,i)})),s&&l.removeEventListener("resize",n.update,i)}},data:{}};t["default"]=a},75306:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r=l(n(21784)),o=l(n(78044)),i=l(n(10333)),a=l(n(45073)),u=l(n(9118)),c=n(54945),s=l(n(7938));function l(e){return e&&e.__esModule?e:{"default":e}}var f={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,l=e.name;if(!t.modifiersData[l]._skip){for(var f=n.mainAxis,d=void 0===f||f,p=n.altAxis,h=void 0===p||p,v=n.fallbackPlacements,m=n.padding,g=n.boundary,y=n.rootBoundary,b=n.altBoundary,_=n.flipVariations,w=void 0===_||_,x=n.allowedAutoPlacements,E=t.options.placement,S=(0,o["default"])(E),C=v||(S===E||!w?[(0,r["default"])(E)]:function(e){if((0,o["default"])(e)===c.auto)return[];var t=(0,r["default"])(e);return[(0,i["default"])(e),t,(0,i["default"])(t)]}(E)),N=[E].concat(C).reduce((function(e,n){return e.concat((0,o["default"])(n)===c.auto?(0,u["default"])(t,{placement:n,boundary:g,rootBoundary:y,padding:m,flipVariations:w,allowedAutoPlacements:x}):n)}),[]),O=t.rects.reference,k=t.rects.popper,M=new Map,A=!0,T=N[0],I=0;I=0,j=B?"width":"height",R=(0,a["default"])(t,{placement:P,boundary:g,rootBoundary:y,altBoundary:b,padding:m}),D=B?L?c.right:c.left:L?c.bottom:c.top;O[j]>k[j]&&(D=(0,r["default"])(D));var F=(0,r["default"])(D),K=[];if(d&&K.push(R[V]<=0),h&&K.push(R[D]<=0,R[F]<=0),K.every((function(e){return e}))){T=P,A=!1;break}M.set(P,K)}if(A)for(var z=function(e){var t=N.find((function(t){var n=M.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return T=t,"break"},Y=w?3:1;Y>0;Y--){if("break"===z(Y))break}t.placement!==T&&(t.modifiersData[l]._skip=!0,t.placement=T,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};t["default"]=f},91263:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r,o=n(54945),i=(r=n(45073))&&r.__esModule?r:{"default":r};function a(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 u(e){return[o.top,o.right,o.bottom,o.left].some((function(t){return e[t]>=0}))}var c={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,c=t.modifiersData.preventOverflow,s=(0,i["default"])(t,{elementContext:"reference"}),l=(0,i["default"])(t,{altBoundary:!0}),f=a(s,r),d=a(l,o,c),p=u(f),h=u(d);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:d,isReferenceHidden:p,hasPopperEscaped:h},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":h})}};t["default"]=c},15461: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 r=d(n(1803));t.applyStyles=r["default"];var o=d(n(35838));t.arrow=o["default"];var i=d(n(42569));t.computeStyles=i["default"];var a=d(n(84886));t.eventListeners=a["default"];var u=d(n(75306));t.flip=u["default"];var c=d(n(91263));t.hide=c["default"];var s=d(n(36777));t.offset=s["default"];var l=d(n(19860));t.popperOffsets=l["default"];var f=d(n(90992));function d(e){return e&&e.__esModule?e:{"default":e}}t.preventOverflow=f["default"]},36777:function(e,t,n){"use strict";t.__esModule=!0,t.distanceAndSkiddingToXY=a,t["default"]=void 0;var r,o=(r=n(78044))&&r.__esModule?r:{"default":r},i=n(54945);function a(e,t,n){var r=(0,o["default"])(e),a=[i.left,i.top].indexOf(r)>=0?-1:1,u="function"==typeof n?n(Object.assign({},t,{placement:e})):n,c=u[0],s=u[1];return c=c||0,s=(s||0)*a,[i.left,i.right].indexOf(r)>=0?{x:s,y:c}:{x:c,y:s}}var u={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,u=void 0===o?[0,0]:o,c=i.placements.reduce((function(e,n){return e[n]=a(n,t.rects,u),e}),{}),s=c[t.placement],l=s.x,f=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=f),t.modifiersData[r]=c}};t["default"]=u},19860:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r,o=(r=n(89731))&&r.__esModule?r:{"default":r};var i={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=(0,o["default"])({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}};t["default"]=i},90992:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=void 0;var r=n(54945),o=h(n(78044)),i=h(n(99840)),a=h(n(80776)),u=h(n(51520)),c=h(n(52089)),s=h(n(54484)),l=h(n(45073)),f=h(n(7938)),d=h(n(9775)),p=n(52209);function h(e){return e&&e.__esModule?e:{"default":e}}var v={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,h=e.name,v=n.mainAxis,m=void 0===v||v,g=n.altAxis,y=void 0!==g&&g,b=n.boundary,_=n.rootBoundary,w=n.altBoundary,x=n.padding,E=n.tether,S=void 0===E||E,C=n.tetherOffset,N=void 0===C?0:C,O=(0,l["default"])(t,{boundary:b,rootBoundary:_,padding:x,altBoundary:w}),k=(0,o["default"])(t.placement),M=(0,f["default"])(t.placement),A=!M,T=(0,i["default"])(k),I=(0,a["default"])(T),P=t.modifiersData.popperOffsets,V=t.rects.reference,L=t.rects.popper,B="function"==typeof N?N(Object.assign({},t.rects,{placement:t.placement})):N,j={x:0,y:0};if(P){if(m||y){var R="y"===T?r.top:r.left,D="y"===T?r.bottom:r.right,F="y"===T?"height":"width",K=P[T],z=P[T]+O[R],Y=P[T]-O[D],U=S?-L[F]/2:0,H=M===r.start?V[F]:L[F],W=M===r.start?-L[F]:-V[F],$=t.elements.arrow,G=S&&$?(0,c["default"])($):{width:0,height:0},q=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:(0,d["default"])(),X=q[R],Q=q[D],Z=(0,u["default"])(0,V[F],G[F]),J=A?V[F]/2-U-Z-X-B:H-Z-X-B,ee=A?-V[F]/2+U+Z+Q+B:W+Z+Q+B,te=t.elements.arrow&&(0,s["default"])(t.elements.arrow),ne=te?"y"===T?te.clientTop||0:te.clientLeft||0:0,re=t.modifiersData.offset?t.modifiersData.offset[t.placement][T]:0,oe=P[T]+J-re-ne,ie=P[T]+ee-re;if(m){var ae=(0,u["default"])(S?(0,p.min)(z,oe):z,K,S?(0,p.max)(Y,ie):Y);P[T]=ae,j[T]=ae-K}if(y){var ue="x"===T?r.top:r.left,ce="x"===T?r.bottom:r.right,se=P[I],le=se+O[ue],fe=se-O[ce],de=(0,u["default"])(S?(0,p.min)(le,oe):le,se,S?(0,p.max)(fe,ie):fe);P[I]=de,j[I]=de-se}}t.modifiersData[h]=j}},requiresIfExists:["offset"]};t["default"]=v},15327:function(e,t,n){"use strict";t.__esModule=!0,t.defaultModifiers=t.createPopper=void 0;var r=n(33407);t.popperGenerator=r.popperGenerator,t.detectOverflow=r.detectOverflow;var o=c(n(84886)),i=c(n(19860)),a=c(n(42569)),u=c(n(1803));function c(e){return e&&e.__esModule?e:{"default":e}}var s=[o["default"],i["default"],a["default"],u["default"]];t.defaultModifiers=s;var l=(0,r.popperGenerator)({defaultModifiers:s});t.createPopper=l},15172:function(e,t,n){"use strict";t.__esModule=!0;var r={createPopper:!0,createPopperLite:!0,defaultModifiers:!0,popperGenerator:!0,detectOverflow:!0};t.defaultModifiers=t.createPopperLite=t.createPopper=void 0;var o=n(33407);t.popperGenerator=o.popperGenerator,t.detectOverflow=o.detectOverflow;var i=m(n(84886)),a=m(n(19860)),u=m(n(42569)),c=m(n(1803)),s=m(n(36777)),l=m(n(75306)),f=m(n(90992)),d=m(n(35838)),p=m(n(91263)),h=n(15327);t.createPopperLite=h.createPopper;var v=n(15461);function m(e){return e&&e.__esModule?e:{"default":e}}Object.keys(v).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(r,e)||e in t&&t[e]===v[e]||(t[e]=v[e]))}));var g=[i["default"],a["default"],u["default"],c["default"],s["default"],l["default"],f["default"],d["default"],p["default"]];t.defaultModifiers=g;var y=(0,o.popperGenerator)({defaultModifiers:g});t.createPopperLite=t.createPopper=y},9118:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){void 0===t&&(t={});var n=t,u=n.placement,c=n.boundary,s=n.rootBoundary,l=n.padding,f=n.flipVariations,d=n.allowedAutoPlacements,p=void 0===d?o.placements:d,h=(0,r["default"])(u),v=h?f?o.variationPlacements:o.variationPlacements.filter((function(e){return(0,r["default"])(e)===h})):o.basePlacements,m=v.filter((function(e){return p.indexOf(e)>=0}));0===m.length&&(m=v);var g=m.reduce((function(t,n){return t[n]=(0,i["default"])(e,{placement:n,boundary:c,rootBoundary:s,padding:l})[(0,a["default"])(n)],t}),{});return Object.keys(g).sort((function(e,t){return g[e]-g[t]}))};var r=u(n(7938)),o=n(54945),i=u(n(45073)),a=u(n(78044));function u(e){return e&&e.__esModule?e:{"default":e}}},89731:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t,n=e.reference,u=e.element,c=e.placement,s=c?(0,r["default"])(c):null,l=c?(0,o["default"])(c):null,f=n.x+n.width/2-u.width/2,d=n.y+n.height/2-u.height/2;switch(s){case a.top:t={x:f,y:n.y-u.height};break;case a.bottom:t={x:f,y:n.y+n.height};break;case a.right:t={x:n.x+n.width,y:d};break;case a.left:t={x:n.x-u.width,y:d};break;default:t={x:n.x,y:n.y}}var p=s?(0,i["default"])(s):null;if(null!=p){var h="y"===p?"height":"width";switch(l){case a.start:t[p]=t[p]-(n[h]/2-u[h]/2);break;case a.end:t[p]=t[p]+(n[h]/2-u[h]/2)}}return t};var r=u(n(78044)),o=u(n(7938)),i=u(n(99840)),a=n(54945);function u(e){return e&&e.__esModule?e:{"default":e}}},16936: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}}},45073:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t){void 0===t&&(t={});var n=t,d=n.placement,p=void 0===d?e.placement:d,h=n.boundary,v=void 0===h?c.clippingParents:h,m=n.rootBoundary,g=void 0===m?c.viewport:m,y=n.elementContext,b=void 0===y?c.popper:y,_=n.altBoundary,w=void 0!==_&&_,x=n.padding,E=void 0===x?0:x,S=(0,l["default"])("number"!=typeof E?E:(0,f["default"])(E,c.basePlacements)),C=b===c.popper?c.reference:c.popper,N=e.elements.reference,O=e.rects.popper,k=e.elements[w?C:b],M=(0,o["default"])((0,s.isElement)(k)?k:k.contextElement||(0,i["default"])(e.elements.popper),v,g),A=(0,r["default"])(N),T=(0,a["default"])({reference:A,element:O,strategy:"absolute",placement:p}),I=(0,u["default"])(Object.assign({},O,T)),P=b===c.popper?I:A,V={top:M.top-P.top+S.top,bottom:P.bottom-M.bottom+S.bottom,left:M.left-P.left+S.left,right:P.right-M.right+S.right},L=e.modifiersData.offset;if(b===c.popper&&L){var B=L[p];Object.keys(V).forEach((function(e){var t=[c.right,c.bottom].indexOf(e)>=0?1:-1,n=[c.top,c.bottom].indexOf(e)>=0?"y":"x";V[e]+=B[n]*t}))}return V};var r=d(n(87916)),o=d(n(70846)),i=d(n(36e3)),a=d(n(89731)),u=d(n(77276)),c=n(54945),s=n(31966),l=d(n(72882)),f=d(n(8415));function d(e){return e&&e.__esModule?e:{"default":e}}},8415:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}},50121: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),r=1;r=0?"x":"y"}},21784: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"}},10333: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"}},7938:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e){return e.split("-")[1]}},52209:function(e,t){"use strict";t.__esModule=!0,t.round=t.min=t.max=void 0;var n=Math.max;t.max=n;var r=Math.min;t.min=r;var o=Math.round;t.round=o},5495: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]}))}},72882:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){return Object.assign({},(0,o["default"])(),e)};var r,o=(r=n(9775))&&r.__esModule?r:{"default":r}},7183:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){var t=function(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}(e);return r.modifierPhases.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])};var r=n(54945)},77276: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})}},20675:function(e,t){"use strict";t.__esModule=!0,t["default"]=function(e,t){var n=new Set;return e.filter((function(e){var r=t(e);if(!n.has(r))return n.add(r),!0}))}},11026:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e){e.forEach((function(t){Object.keys(t).forEach((function(n){switch(n){case"name":t.name;break;case"enabled":t.enabled;case"phase":o.modifierPhases.indexOf(t.phase);break;case"fn":t.fn;break;case"effect":t.effect;break;case"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}))}))}))}))};(r=n(50121))&&r.__esModule;var r,o=n(54945)},51520:function(e,t,n){"use strict";t.__esModule=!0,t["default"]=function(e,t,n){return(0,r.max)(e,(0,r.min)(t,n))};var r=n(52209)},13686:function(e){"use strict";e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},85369:function(e,t,n){"use strict";var r=n(88711);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},14281:function(e,t,n){"use strict";var r=n(53414),o=n(96093),i=n(96452),a=r("unscopables"),u=Array.prototype;u[a]==undefined&&i.f(u,a,{configurable:!0,value:o(null)}),e.exports=function(e){u[a][e]=!0}},47103:function(e,t,n){"use strict";var r=n(34444).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},2273:function(e){"use strict";e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},14860:function(e,t,n){"use strict";var r=n(88711);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},17811:function(e){"use strict";e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},73203:function(e,t,n){"use strict";var r,o=n(17811),i=n(67738),a=n(179),u=n(88711),c=n(18632),s=n(54781),l=n(21413),f=n(77219),d=n(96452).f,p=n(92608),h=n(77715),v=n(53414),m=n(88340),g=a.Int8Array,y=g&&g.prototype,b=a.Uint8ClampedArray,_=b&&b.prototype,w=g&&p(g),x=y&&p(y),E=Object.prototype,S=E.isPrototypeOf,C=v("toStringTag"),N=m("TYPED_ARRAY_TAG"),O=o&&!!h&&"Opera"!==s(a.opera),k=!1,M={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},A={BigInt64Array:8,BigUint64Array:8},T=function(e){if(!u(e))return!1;var t=s(e);return"DataView"===t||c(M,t)||c(A,t)},I=function(e){if(!u(e))return!1;var t=s(e);return c(M,t)||c(A,t)};for(r in M)a[r]||(O=!1);if((!O||"function"!=typeof w||w===Function.prototype)&&(w=function(){throw TypeError("Incorrect invocation")},O))for(r in M)a[r]&&h(a[r],w);if((!O||!x||x===E)&&(x=w.prototype,O))for(r in M)a[r]&&h(a[r].prototype,x);if(O&&p(_)!==x&&h(_,x),i&&!c(x,C))for(r in k=!0,d(x,C,{get:function(){return u(this)?this[N]:undefined}}),M)a[r]&&l(a[r],N,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:O,TYPED_ARRAY_TAG:k&&N,aTypedArray:function(e){if(I(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(S.call(w,e))return e}else for(var t in M)if(c(M,r)){var n=a[t];if(n&&(e===n||S.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(i){if(n)for(var r in M){var o=a[r];o&&c(o.prototype,e)&&delete o.prototype[e]}x[e]&&!n||f(x,e,n?t:O&&y[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,o;if(i){if(h){if(n)for(r in M)(o=a[r])&&c(o,e)&&delete o[e];if(w[e]&&!n)return;try{return f(w,e,n?t:O&&g[e]||t)}catch(u){}}for(r in M)!(o=a[r])||o[e]&&!n||f(o,e,t)}},isView:T,isTypedArray:I,TypedArray:w,TypedArrayPrototype:x}},93071:function(e,t,n){"use strict";var r=n(179),o=n(67738),i=n(17811),a=n(21413),u=n(5289),c=n(84921),s=n(2273),l=n(44028),f=n(27842),d=n(66659),p=n(63408),h=n(92608),v=n(77715),m=n(75604).f,g=n(96452).f,y=n(24115),b=n(81978),_=n(28076),w=_.get,x=_.set,E="ArrayBuffer",S="DataView",C="Wrong index",N=r.ArrayBuffer,O=N,k=r.DataView,M=k&&k.prototype,A=Object.prototype,T=r.RangeError,I=p.pack,P=p.unpack,V=function(e){return[255&e]},L=function(e){return[255&e,e>>8&255]},B=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},j=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},R=function(e){return I(e,23,4)},D=function(e){return I(e,52,8)},F=function(e,t){g(e.prototype,t,{get:function(){return w(this)[t]}})},K=function(e,t,n,r){var o=d(n),i=w(e);if(o+t>i.byteLength)throw T(C);var a=w(i.buffer).bytes,u=o+i.byteOffset,c=a.slice(u,u+t);return r?c:c.reverse()},z=function(e,t,n,r,o,i){var a=d(n),u=w(e);if(a+t>u.byteLength)throw T(C);for(var c=w(u.buffer).bytes,s=a+u.byteOffset,l=r(+o),f=0;fW;)(Y=H[W++])in O||a(O,Y,N[Y]);U.constructor=O}v&&h(M)!==A&&v(M,A);var $=new k(new O(2)),G=M.setInt8;$.setInt8(0,2147483648),$.setInt8(1,2147483649),!$.getInt8(0)&&$.getInt8(1)||u(M,{setInt8:function(e,t){G.call(this,e,t<<24>>24)},setUint8:function(e,t){G.call(this,e,t<<24>>24)}},{unsafe:!0})}else O=function(e){s(this,O,E);var t=d(e);x(this,{bytes:y.call(new Array(t),0),byteLength:t}),o||(this.byteLength=t)},k=function(e,t,n){s(this,k,S),s(e,O,S);var r=w(e).byteLength,i=l(t);if(i<0||i>r)throw T("Wrong offset");if(i+(n=n===undefined?r-i:f(n))>r)throw T("Wrong length");x(this,{buffer:e,byteLength:n,byteOffset:i}),o||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},o&&(F(O,"byteLength"),F(k,"buffer"),F(k,"byteLength"),F(k,"byteOffset")),u(k.prototype,{getInt8:function(e){return K(this,1,e)[0]<<24>>24},getUint8:function(e){return K(this,1,e)[0]},getInt16:function(e){var t=K(this,2,e,arguments.length>1?arguments[1]:undefined);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=K(this,2,e,arguments.length>1?arguments[1]:undefined);return t[1]<<8|t[0]},getInt32:function(e){return j(K(this,4,e,arguments.length>1?arguments[1]:undefined))},getUint32:function(e){return j(K(this,4,e,arguments.length>1?arguments[1]:undefined))>>>0},getFloat32:function(e){return P(K(this,4,e,arguments.length>1?arguments[1]:undefined),23)},getFloat64:function(e){return P(K(this,8,e,arguments.length>1?arguments[1]:undefined),52)},setInt8:function(e,t){z(this,1,e,V,t)},setUint8:function(e,t){z(this,1,e,V,t)},setInt16:function(e,t){z(this,2,e,L,t,arguments.length>2?arguments[2]:undefined)},setUint16:function(e,t){z(this,2,e,L,t,arguments.length>2?arguments[2]:undefined)},setInt32:function(e,t){z(this,4,e,B,t,arguments.length>2?arguments[2]:undefined)},setUint32:function(e,t){z(this,4,e,B,t,arguments.length>2?arguments[2]:undefined)},setFloat32:function(e,t){z(this,4,e,R,t,arguments.length>2?arguments[2]:undefined)},setFloat64:function(e,t){z(this,8,e,D,t,arguments.length>2?arguments[2]:undefined)}});b(O,E),b(k,S),e.exports={ArrayBuffer:O,DataView:k}},92475:function(e,t,n){"use strict";var r=n(6289),o=n(13292),i=n(27842),a=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),u=i(n.length),c=o(e,u),s=o(t,u),l=arguments.length>2?arguments[2]:undefined,f=a((l===undefined?u:o(l,u))-s,u-c),d=1;for(s0;)s in n?n[c]=n[s]:delete n[c],c+=d,s+=d;return n}},24115:function(e,t,n){"use strict";var r=n(6289),o=n(13292),i=n(27842);e.exports=function(e){for(var t=r(this),n=i(t.length),a=arguments.length,u=o(a>1?arguments[1]:undefined,n),c=a>2?arguments[2]:undefined,s=c===undefined?n:o(c,n);s>u;)t[u++]=e;return t}},70091:function(e,t,n){"use strict";var r=n(77118).forEach,o=n(45944)("forEach");e.exports=o?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}},75372:function(e,t,n){"use strict";var r=n(57386),o=n(6289),i=n(36288),a=n(76774),u=n(27842),c=n(79651),s=n(29863);e.exports=function(e){var t,n,l,f,d,p,h=o(e),v="function"==typeof this?this:Array,m=arguments.length,g=m>1?arguments[1]:undefined,y=g!==undefined,b=s(h),_=0;if(y&&(g=r(g,m>2?arguments[2]:undefined,2)),b==undefined||v==Array&&a(b))for(n=new v(t=u(h.length));t>_;_++)p=y?g(h[_],_):h[_],c(n,_,p);else for(d=(f=b.call(h)).next,n=new v;!(l=d.call(f)).done;_++)p=y?i(f,g,[l.value,_],!0):l.value,c(n,_,p);return n.length=_,n}},53454:function(e,t,n){"use strict";var r=n(94789),o=n(27842),i=n(13292),a=function(e){return function(t,n,a){var u,c=r(t),s=o(c.length),l=i(a,s);if(e&&n!=n){for(;s>l;)if((u=c[l++])!=u)return!0}else for(;s>l;l++)if((e||l in c)&&c[l]===n)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},77118:function(e,t,n){"use strict";var r=n(57386),o=n(46317),i=n(6289),a=n(27842),u=n(12384),c=[].push,s=function(e){var t=1==e,n=2==e,s=3==e,l=4==e,f=6==e,d=7==e,p=5==e||f;return function(h,v,m,g){for(var y,b,_=i(h),w=o(_),x=r(v,m,3),E=a(w.length),S=0,C=g||u,N=t?C(h,E):n||d?C(h,0):undefined;E>S;S++)if((p||S in w)&&(b=x(y=w[S],S,_),e))if(t)N[S]=b;else if(b)switch(e){case 3:return!0;case 5:return y;case 6:return S;case 2:c.call(N,y)}else switch(e){case 4:return!1;case 7:c.call(N,y)}return f?-1:s||l?l:N}};e.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterOut:s(7)}},9819:function(e,t,n){"use strict";var r=n(94789),o=n(44028),i=n(27842),a=n(45944),u=Math.min,c=[].lastIndexOf,s=!!c&&1/[1].lastIndexOf(1,-0)<0,l=a("lastIndexOf"),f=s||!l;e.exports=f?function(e){if(s)return c.apply(this,arguments)||0;var t=r(this),n=i(t.length),a=n-1;for(arguments.length>1&&(a=u(a,o(arguments[1]))),a<0&&(a=n+a);a>=0;a--)if(a in t&&t[a]===e)return a||0;return-1}:c},16684:function(e,t,n){"use strict";var r=n(84921),o=n(53414),i=n(32728),a=o("species");e.exports=function(e){return i>=51||!r((function(){var t=[];return(t.constructor={})[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},45944:function(e,t,n){"use strict";var r=n(84921);e.exports=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){throw 1},1)}))}},59878:function(e,t,n){"use strict";var r=n(13686),o=n(6289),i=n(46317),a=n(27842),u=function(e){return function(t,n,u,c){r(n);var s=o(t),l=i(s),f=a(s.length),d=e?f-1:0,p=e?-1:1;if(u<2)for(;;){if(d in l){c=l[d],d+=p;break}if(d+=p,e?d<0:f<=d)throw TypeError("Reduce of empty array with no initial value")}for(;e?d>=0:f>d;d+=p)d in l&&(c=n(c,l[d],d,s));return c}};e.exports={left:u(!1),right:u(!0)}},12384:function(e,t,n){"use strict";var r=n(88711),o=n(1897),i=n(53414)("species");e.exports=function(e,t){var n;return o(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!o(n.prototype)?r(n)&&null===(n=n[i])&&(n=undefined):n=undefined),new(n===undefined?Array:n)(0===t?0:t)}},36288:function(e,t,n){"use strict";var r=n(14860),o=n(16284);e.exports=function(e,t,n,i){try{return i?t(r(n)[0],n[1]):t(n)}catch(a){throw o(e),a}}},33652:function(e,t,n){"use strict";var r=n(53414)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},"return":function(){o=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(u){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var i={};i[r]=function(){return{next:function(){return{done:n=!0}}}},e(i)}catch(u){}return n}},90726:function(e){"use strict";var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},54781:function(e,t,n){"use strict";var r=n(97099),o=n(90726),i=n(53414)("toStringTag"),a="Arguments"==o(function(){return arguments}());e.exports=r?o:function(e){var t,n,r;return e===undefined?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(n){}}(t=Object(e),i))?n:a?o(t):"Object"==(r=o(t))&&"function"==typeof t.callee?"Arguments":r}},4721:function(e,t,n){"use strict";var r=n(96452).f,o=n(96093),i=n(5289),a=n(57386),u=n(2273),c=n(8362),s=n(54981),l=n(40548),f=n(67738),d=n(21419).fastKey,p=n(28076),h=p.set,v=p.getterFor;e.exports={getConstructor:function(e,t,n,s){var l=e((function(e,r){u(e,l,t),h(e,{type:t,index:o(null),first:undefined,last:undefined,size:0}),f||(e.size=0),r!=undefined&&c(r,e[s],{that:e,AS_ENTRIES:n})})),p=v(t),m=function(e,t,n){var r,o,i=p(e),a=g(e,t);return a?a.value=n:(i.last=a={index:o=d(t,!0),key:t,value:n,previous:r=i.last,next:undefined,removed:!1},i.first||(i.first=a),r&&(r.next=a),f?i.size++:e.size++,"F"!==o&&(i.index[o]=a)),e},g=function(e,t){var n,r=p(e),o=d(t);if("F"!==o)return r.index[o];for(n=r.first;n;n=n.next)if(n.key==t)return n};return i(l.prototype,{clear:function(){for(var e=p(this),t=e.index,n=e.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=undefined),delete t[n.index],n=n.next;e.first=e.last=undefined,f?e.size=0:this.size=0},"delete":function(e){var t=this,n=p(t),r=g(t,e);if(r){var o=r.next,i=r.previous;delete n.index[r.index],r.removed=!0,i&&(i.next=o),o&&(o.previous=i),n.first==r&&(n.first=o),n.last==r&&(n.last=i),f?n.size--:t.size--}return!!r},forEach:function(e){for(var t,n=p(this),r=a(e,arguments.length>1?arguments[1]:undefined,3);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!g(this,e)}}),i(l.prototype,n?{get:function(e){var t=g(this,e);return t&&t.value},set:function(e,t){return m(this,0===e?0:e,t)}}:{add:function(e){return m(this,e=0===e?0:e,e)}}),f&&r(l.prototype,"size",{get:function(){return p(this).size}}),l},setStrong:function(e,t,n){var r=t+" Iterator",o=v(t),i=v(r);s(e,t,(function(e,t){h(this,{type:r,target:e,state:o(e),kind:t,last:undefined})}),(function(){for(var e=i(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),l(t)}}},76568:function(e,t,n){"use strict";var r=n(5289),o=n(21419).getWeakData,i=n(14860),a=n(88711),u=n(2273),c=n(8362),s=n(77118),l=n(18632),f=n(28076),d=f.set,p=f.getterFor,h=s.find,v=s.findIndex,m=0,g=function(e){return e.frozen||(e.frozen=new y)},y=function(){this.entries=[]},b=function(e,t){return h(e.entries,(function(e){return e[0]===t}))};y.prototype={get:function(e){var t=b(this,e);if(t)return t[1]},has:function(e){return!!b(this,e)},set:function(e,t){var n=b(this,e);n?n[1]=t:this.entries.push([e,t])},"delete":function(e){var t=v(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,s){var f=e((function(e,r){u(e,f,t),d(e,{type:t,id:m++,frozen:undefined}),r!=undefined&&c(r,e[s],{that:e,AS_ENTRIES:n})})),h=p(t),v=function(e,t,n){var r=h(e),a=o(i(t),!0);return!0===a?g(r).set(t,n):a[r.id]=n,e};return r(f.prototype,{"delete":function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?g(t)["delete"](e):n&&l(n,t.id)&&delete n[t.id]},has:function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?g(t).has(e):n&&l(n,t.id)}}),r(f.prototype,n?{get:function(e){var t=h(this);if(a(e)){var n=o(e);return!0===n?g(t).get(e):n?n[t.id]:undefined}},set:function(e,t){return v(this,e,t)}}:{add:function(e){return v(this,e,!0)}}),f}}},20991:function(e,t,n){"use strict";var r=n(99592),o=n(179),i=n(61287),a=n(77219),u=n(21419),c=n(8362),s=n(2273),l=n(88711),f=n(84921),d=n(33652),p=n(81978),h=n(69262);e.exports=function(e,t,n){var v=-1!==e.indexOf("Map"),m=-1!==e.indexOf("Weak"),g=v?"set":"add",y=o[e],b=y&&y.prototype,_=y,w={},x=function(e){var t=b[e];a(b,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(m&&!l(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return m&&!l(e)?undefined:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(m&&!l(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(i(e,"function"!=typeof y||!(m||b.forEach&&!f((function(){(new y).entries().next()})))))_=n.getConstructor(t,e,v,g),u.REQUIRED=!0;else if(i(e,!0)){var E=new _,S=E[g](m?{}:-0,1)!=E,C=f((function(){E.has(1)})),N=d((function(e){new y(e)})),O=!m&&f((function(){for(var e=new y,t=5;t--;)e[g](t,t);return!e.has(-0)}));N||((_=t((function(t,n){s(t,_,e);var r=h(new y,t,_);return n!=undefined&&c(n,r[g],{that:r,AS_ENTRIES:v}),r}))).prototype=b,b.constructor=_),(C||O)&&(x("delete"),x("has"),v&&x("get")),(O||S)&&x(g),m&&b.clear&&delete b.clear}return w[e]=_,r({global:!0,forced:_!=y},w),p(_,e),m||n.setStrong(_,e,v),_}},44121:function(e,t,n){"use strict";var r=n(18632),o=n(1051),i=n(8740),a=n(96452);e.exports=function(e,t){for(var n=o(t),u=a.f,c=i.f,s=0;s"+a+""}},97993:function(e,t,n){"use strict";var r=n(9392).IteratorPrototype,o=n(96093),i=n(28804),a=n(81978),u=n(36617),c=function(){return this};e.exports=function(e,t,n){var s=t+" Iterator";return e.prototype=o(r,{next:i(1,n)}),a(e,s,!1,!0),u[s]=c,e}},21413:function(e,t,n){"use strict";var r=n(67738),o=n(96452),i=n(28804);e.exports=r?function(e,t,n){return o.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},28804:function(e){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},79651:function(e,t,n){"use strict";var r=n(79165),o=n(96452),i=n(28804);e.exports=function(e,t,n){var a=r(t);a in e?o.f(e,a,i(0,n)):e[a]=n}},27051:function(e,t,n){"use strict";var r=n(84921),o=n(61514).start,i=Math.abs,a=Date.prototype,u=a.getTime,c=a.toISOString;e.exports=r((function(){return"0385-07-25T07:06:39.999Z"!=c.call(new Date(-50000000000001))}))||!r((function(){c.call(new Date(NaN))}))?function(){if(!isFinite(u.call(this)))throw RangeError("Invalid time value");var e=this,t=e.getUTCFullYear(),n=e.getUTCMilliseconds(),r=t<0?"-":t>9999?"+":"";return r+o(i(t),r?6:4,0)+"-"+o(e.getUTCMonth()+1,2,0)+"-"+o(e.getUTCDate(),2,0)+"T"+o(e.getUTCHours(),2,0)+":"+o(e.getUTCMinutes(),2,0)+":"+o(e.getUTCSeconds(),2,0)+"."+o(n,3,0)+"Z"}:c},92880:function(e,t,n){"use strict";var r=n(14860),o=n(79165);e.exports=function(e){if("string"!==e&&"number"!==e&&"default"!==e)throw TypeError("Incorrect hint");return o(r(this),"number"!==e)}},54981:function(e,t,n){"use strict";var r=n(99592),o=n(97993),i=n(92608),a=n(77715),u=n(81978),c=n(21413),s=n(77219),l=n(53414),f=n(51684),d=n(36617),p=n(9392),h=p.IteratorPrototype,v=p.BUGGY_SAFARI_ITERATORS,m=l("iterator"),g="keys",y="values",b="entries",_=function(){return this};e.exports=function(e,t,n,l,p,w,x){o(n,t,l);var E,S,C,N=function(e){if(e===p&&T)return T;if(!v&&e in M)return M[e];switch(e){case g:case y:case b:return function(){return new n(this,e)}}return function(){return new n(this)}},O=t+" Iterator",k=!1,M=e.prototype,A=M[m]||M["@@iterator"]||p&&M[p],T=!v&&A||N(p),I="Array"==t&&M.entries||A;if(I&&(E=i(I.call(new e)),h!==Object.prototype&&E.next&&(f||i(E)===h||(a?a(E,h):"function"!=typeof E[m]&&c(E,m,_)),u(E,O,!0,!0),f&&(d[O]=_))),p==y&&A&&A.name!==y&&(k=!0,T=function(){return A.call(this)}),f&&!x||M[m]===T||c(M,m,T),d[t]=T,p)if(S={values:N(y),keys:w?T:N(g),entries:N(b)},x)for(C in S)(v||k||!(C in M))&&s(M,C,S[C]);else r({target:t,proto:!0,forced:v||k},S);return S}},90209:function(e,t,n){"use strict";var r=n(91996),o=n(18632),i=n(42571),a=n(96452).f;e.exports=function(e){var t=r.Symbol||(r.Symbol={});o(t,e)||a(t,e,{value:i.f(e)})}},67738:function(e,t,n){"use strict";var r=n(84921);e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},27383:function(e,t,n){"use strict";var r=n(179),o=n(88711),i=r.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},13745:function(e,t,n){"use strict";var r=n(97285);e.exports=/(?:iphone|ipod|ipad).*applewebkit/i.test(r)},23043:function(e,t,n){"use strict";var r=n(90726),o=n(179);e.exports="process"==r(o.process)},59137:function(e,t,n){"use strict";var r=n(97285);e.exports=/web0s(?!.*chrome)/i.test(r)},97285:function(e,t,n){"use strict";var r=n(44417);e.exports=r("navigator","userAgent")||""},32728:function(e,t,n){"use strict";var r,o,i=n(179),a=n(97285),u=i.process,c=u&&u.versions,s=c&&c.v8;s?o=(r=s.split("."))[0]+r[1]:a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=r[1]),e.exports=o&&+o},89807:function(e){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},99592:function(e,t,n){"use strict";var r=n(179),o=n(8740).f,i=n(21413),a=n(77219),u=n(53753),c=n(44121),s=n(61287);e.exports=function(e,t){var n,l,f,d,p,h=e.target,v=e.global,m=e.stat;if(n=v?r:m?r[h]||u(h,{}):(r[h]||{}).prototype)for(l in t){if(d=t[l],f=e.noTargetGet?(p=o(n,l))&&p.value:n[l],!s(v?l:h+(m?".":"#")+l,e.forced)&&f!==undefined){if(typeof d==typeof f)continue;c(d,f)}(e.sham||f&&f.sham)&&i(d,"sham",!0),a(n,l,d,e)}}},84921:function(e){"use strict";e.exports=function(e){try{return!!e()}catch(t){return!0}}},27167:function(e,t,n){"use strict";n(30660);var r=n(77219),o=n(84921),i=n(53414),a=n(21413),u=i("species"),c=!o((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")})),s="$0"==="a".replace(/./,"$0"),l=i("replace"),f=!!/./[l]&&""===/./[l]("a","$0"),d=!o((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));e.exports=function(e,t,n,l){var p=i(e),h=!o((function(){var t={};return t[p]=function(){return 7},7!=""[e](t)})),v=h&&!o((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[u]=function(){return n},n.flags="",n[p]=/./[p]),n.exec=function(){return t=!0,null},n[p](""),!t}));if(!h||!v||"replace"===e&&(!c||!s||f)||"split"===e&&!d){var m=/./[p],g=n(p,""[e],(function(e,t,n,r,o){return t.exec===RegExp.prototype.exec?h&&!o?{done:!0,value:m.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:s,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:f}),y=g[0],b=g[1];r(String.prototype,e,y),r(RegExp.prototype,p,2==t?function(e,t){return b.call(e,this,t)}:function(e){return b.call(e,this)})}l&&a(RegExp.prototype[p],"sham",!0)}},83632:function(e,t,n){"use strict";var r=n(1897),o=n(27842),i=n(57386);e.exports=function a(e,t,n,u,c,s,l,f){for(var d,p=c,h=0,v=!!l&&i(l,f,3);h0&&r(d))p=a(e,t,d,o(d.length),p,s-1)-1;else{if(p>=9007199254740991)throw TypeError("Exceed the acceptable array length");e[p]=d}p++}h++}return p}},41e3:function(e,t,n){"use strict";var r=n(84921);e.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},57386:function(e,t,n){"use strict";var r=n(13686);e.exports=function(e,t,n){if(r(e),t===undefined)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},27314:function(e,t,n){"use strict";var r=n(13686),o=n(88711),i=[].slice,a={},u=function(e,t,n){if(!(t in a)){for(var r=[],o=0;o]*>)/g,u=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,t,n,c,s,l){var f=n+e.length,d=c.length,p=u;return s!==undefined&&(s=r(s),p=a),i.call(l,p,(function(r,i){var a;switch(i.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(f);case"<":a=s[i.slice(1,-1)];break;default:var u=+i;if(0===u)return r;if(u>d){var l=o(u/10);return 0===l?r:l<=d?c[l-1]===undefined?i.charAt(1):c[l-1]+i.charAt(1):r}a=c[u-1]}return a===undefined?"":a}))}},179:function(e,t,n){"use strict";var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},18632:function(e){"use strict";var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},58825:function(e){"use strict";e.exports={}},63380:function(e,t,n){"use strict";var r=n(179);e.exports=function(e,t){var n=r.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}},55780:function(e,t,n){"use strict";var r=n(44417);e.exports=r("document","documentElement")},59807:function(e,t,n){"use strict";var r=n(67738),o=n(84921),i=n(27383);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},63408:function(e){"use strict";var t=Math.abs,n=Math.pow,r=Math.floor,o=Math.log,i=Math.LN2;e.exports={pack:function(e,a,u){var c,s,l,f=new Array(u),d=8*u-a-1,p=(1<>1,v=23===a?n(2,-24)-n(2,-77):0,m=e<0||0===e&&1/e<0?1:0,g=0;for((e=t(e))!=e||e===Infinity?(s=e!=e?1:0,c=p):(c=r(o(e)/i),e*(l=n(2,-c))<1&&(c--,l*=2),(e+=c+h>=1?v/l:v*n(2,1-h))*l>=2&&(c++,l/=2),c+h>=p?(s=0,c=p):c+h>=1?(s=(e*l-1)*n(2,a),c+=h):(s=e*n(2,h-1)*n(2,a),c=0));a>=8;f[g++]=255&s,s/=256,a-=8);for(c=c<0;f[g++]=255&c,c/=256,d-=8);return f[--g]|=128*m,f},unpack:function(e,t){var r,o=e.length,i=8*o-t-1,a=(1<>1,c=i-7,s=o-1,l=e[s--],f=127&l;for(l>>=7;c>0;f=256*f+e[s],s--,c-=8);for(r=f&(1<<-c)-1,f>>=-c,c+=t;c>0;r=256*r+e[s],s--,c-=8);if(0===f)f=1-u;else{if(f===a)return r?NaN:l?-Infinity:Infinity;r+=n(2,t),f-=u}return(l?-1:1)*r*n(2,f-t)}}},46317:function(e,t,n){"use strict";var r=n(84921),o=n(90726),i="".split;e.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==o(e)?i.call(e,""):Object(e)}:Object},69262:function(e,t,n){"use strict";var r=n(88711),o=n(77715);e.exports=function(e,t,n){var i,a;return o&&"function"==typeof(i=t.constructor)&&i!==n&&r(a=i.prototype)&&a!==n.prototype&&o(e,a),e}},1306:function(e,t,n){"use strict";var r=n(53252),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return o.call(e)}),e.exports=r.inspectSource},21419:function(e,t,n){"use strict";var r=n(58825),o=n(88711),i=n(18632),a=n(96452).f,u=n(88340),c=n(41e3),s=u("meta"),l=0,f=Object.isExtensible||function(){return!0},d=function(e){a(e,s,{value:{objectID:"O"+ ++l,weakData:{}}})},p=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,s)){if(!f(e))return"F";if(!t)return"E";d(e)}return e[s].objectID},getWeakData:function(e,t){if(!i(e,s)){if(!f(e))return!0;if(!t)return!1;d(e)}return e[s].weakData},onFreeze:function(e){return c&&p.REQUIRED&&f(e)&&!i(e,s)&&d(e),e}};r[s]=!0},28076:function(e,t,n){"use strict";var r,o,i,a=n(2900),u=n(179),c=n(88711),s=n(21413),l=n(18632),f=n(53252),d=n(6839),p=n(58825),h=u.WeakMap;if(a){var v=f.state||(f.state=new h),m=v.get,g=v.has,y=v.set;r=function(e,t){return t.facade=e,y.call(v,e,t),t},o=function(e){return m.call(v,e)||{}},i=function(e){return g.call(v,e)}}else{var b=d("state");p[b]=!0,r=function(e,t){return t.facade=e,s(e,b,t),t},o=function(e){return l(e,b)?e[b]:{}},i=function(e){return l(e,b)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!c(t)||(n=o(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},76774:function(e,t,n){"use strict";var r=n(53414),o=n(36617),i=r("iterator"),a=Array.prototype;e.exports=function(e){return e!==undefined&&(o.Array===e||a[i]===e)}},1897:function(e,t,n){"use strict";var r=n(90726);e.exports=Array.isArray||function(e){return"Array"==r(e)}},61287:function(e,t,n){"use strict";var r=n(84921),o=/#|\.prototype\./,i=function(e,t){var n=u[a(e)];return n==s||n!=c&&("function"==typeof t?r(t):!!t)},a=i.normalize=function(e){return String(e).replace(o,".").toLowerCase()},u=i.data={},c=i.NATIVE="N",s=i.POLYFILL="P";e.exports=i},44616:function(e,t,n){"use strict";var r=n(88711),o=Math.floor;e.exports=function(e){return!r(e)&&isFinite(e)&&o(e)===e}},88711:function(e){"use strict";e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},51684:function(e){"use strict";e.exports=!1},45025:function(e,t,n){"use strict";var r=n(88711),o=n(90726),i=n(53414)("match");e.exports=function(e){var t;return r(e)&&((t=e[i])!==undefined?!!t:"RegExp"==o(e))}},8362:function(e,t,n){"use strict";var r=n(14860),o=n(76774),i=n(27842),a=n(57386),u=n(29863),c=n(16284),s=function(e,t){this.stopped=e,this.result=t};e.exports=function(e,t,n){var l,f,d,p,h,v,m,g=n&&n.that,y=!(!n||!n.AS_ENTRIES),b=!(!n||!n.IS_ITERATOR),_=!(!n||!n.INTERRUPTED),w=a(t,g,1+y+_),x=function(e){return l&&c(l),new s(!0,e)},E=function(e){return y?(r(e),_?w(e[0],e[1],x):w(e[0],e[1])):_?w(e,x):w(e)};if(b)l=e;else{if("function"!=typeof(f=u(e)))throw TypeError("Target is not iterable");if(o(f)){for(d=0,p=i(e.length);p>d;d++)if((h=E(e[d]))&&h instanceof s)return h;return new s(!1)}l=f.call(e)}for(v=l.next;!(m=v.call(l)).done;){try{h=E(m.value)}catch(S){throw c(l),S}if("object"==typeof h&&h&&h instanceof s)return h}return new s(!1)}},16284:function(e,t,n){"use strict";var r=n(14860);e.exports=function(e){var t=e["return"];if(t!==undefined)return r(t.call(e)).value}},9392:function(e,t,n){"use strict";var r,o,i,a=n(84921),u=n(92608),c=n(21413),s=n(18632),l=n(53414),f=n(51684),d=l("iterator"),p=!1;[].keys&&("next"in(i=[].keys())?(o=u(u(i)))!==Object.prototype&&(r=o):p=!0);var h=r==undefined||a((function(){var e={};return r[d].call(e)!==e}));h&&(r={}),f&&!h||s(r,d)||c(r,d,(function(){return this})),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},36617:function(e){"use strict";e.exports={}},64674: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){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:n(e)-1}:t},90702:function(e,t,n){"use strict";var r=n(53188),o=Math.abs,i=Math.pow,a=i(2,-52),u=i(2,-23),c=i(2,127)*(2-u),s=i(2,-126);e.exports=Math.fround||function(e){var t,n,i=o(e),l=r(e);return ic||n!=n?l*Infinity:l*n}},36535:function(e){"use strict";var t=Math.log;e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:t(1+e)}},53188:function(e){"use strict";e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},63785:function(e,t,n){"use strict";var r,o,i,a,u,c,s,l,f=n(179),d=n(8740).f,p=n(3350).set,h=n(13745),v=n(59137),m=n(23043),g=f.MutationObserver||f.WebKitMutationObserver,y=f.document,b=f.process,_=f.Promise,w=d(f,"queueMicrotask"),x=w&&w.value;x||(r=function(){var e,t;for(m&&(e=b.domain)&&e.exit();o;){t=o.fn,o=o.next;try{t()}catch(n){throw o?a():i=undefined,n}}i=undefined,e&&e.enter()},h||m||v||!g||!y?_&&_.resolve?(s=_.resolve(undefined),l=s.then,a=function(){l.call(s,r)}):a=m?function(){b.nextTick(r)}:function(){p.call(f,r)}:(u=!0,c=y.createTextNode(""),new g(r).observe(c,{characterData:!0}),a=function(){c.data=u=!u})),e.exports=x||function(e){var t={fn:e,next:undefined};i&&(i.next=t),o||(o=t,a()),i=t}},23287:function(e,t,n){"use strict";var r=n(179);e.exports=r.Promise},72974:function(e,t,n){"use strict";var r=n(23043),o=n(32728),i=n(84921);e.exports=!!Object.getOwnPropertySymbols&&!i((function(){return!Symbol.sham&&(r?38===o:o>37&&o<41)}))},2900:function(e,t,n){"use strict";var r=n(179),o=n(1306),i=r.WeakMap;e.exports="function"==typeof i&&/native code/.test(o(i))},15115:function(e,t,n){"use strict";var r=n(13686),o=function(e){var t,n;this.promise=new e((function(e,r){if(t!==undefined||n!==undefined)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=r(t),this.reject=r(n)};e.exports.f=function(e){return new o(e)}},42386:function(e,t,n){"use strict";var r=n(45025);e.exports=function(e){if(r(e))throw TypeError("The method doesn't accept regular expressions");return e}},87419:function(e,t,n){"use strict";var r=n(179).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&r(e)}},86710:function(e,t,n){"use strict";var r=n(179),o=n(20017).trim,i=n(65094),a=r.parseFloat,u=1/a(i+"-0")!=-Infinity;e.exports=u?function(e){var t=o(String(e)),n=a(t);return 0===n&&"-"==t.charAt(0)?-0:n}:a},42619:function(e,t,n){"use strict";var r=n(179),o=n(20017).trim,i=n(65094),a=r.parseInt,u=/^[+-]?0[Xx]/,c=8!==a(i+"08")||22!==a(i+"0x16");e.exports=c?function(e,t){var n=o(String(e));return a(n,t>>>0||(u.test(n)?16:10))}:a},18174:function(e,t,n){"use strict";var r=n(67738),o=n(84921),i=n(75224),a=n(32645),u=n(32163),c=n(6289),s=n(46317),l=Object.assign,f=Object.defineProperty;e.exports=!l||o((function(){if(r&&1!==l({b:1},l(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),o="abcdefghijklmnopqrst";return e[n]=7,o.split("").forEach((function(e){t[e]=e})),7!=l({},e)[n]||i(l({},t)).join("")!=o}))?function(e,t){for(var n=c(e),o=arguments.length,l=1,f=a.f,d=u.f;o>l;)for(var p,h=s(arguments[l++]),v=f?i(h).concat(f(h)):i(h),m=v.length,g=0;m>g;)p=v[g++],r&&!d.call(h,p)||(n[p]=h[p]);return n}:l},96093:function(e,t,n){"use strict";var r,o=n(14860),i=n(79227),a=n(89807),u=n(58825),c=n(55780),s=n(27383),l=n(6839),f=l("IE_PROTO"),d=function(){},p=function(e){return"