diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index dda9365c288b..18191142966b 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -537,6 +537,7 @@
sections["traitor"] = memory_edit_traitor()
// SS220 EDIT - START
sections["blood_brother"] = memory_edit_blood_brother()
+ sections["vox_raider"] = memory_edit_vox_raider()
// SS220 EDIT - END
if(!issilicon(current))
/** CULT ***/
diff --git a/modular_ss220/antagonists/_antagonists.dm b/modular_ss220/antagonists/_antagonists.dm
index 04dc718d1c9d..40815e65c394 100644
--- a/modular_ss220/antagonists/_antagonists.dm
+++ b/modular_ss220/antagonists/_antagonists.dm
@@ -16,6 +16,6 @@
)
GLOB.department_radio_keys |= list(
- ":V" = "VoxCom", "#V" = "VoxCom", ".V" = "VoxCom",
- ":v" = "VoxCom", "#v" = "VoxCom", ".v" = "VoxCom",
+ ":VR" = "VoxCom", "#VR" = "VoxCom", ".VR" = "VoxCom",
+ ":vr" = "VoxCom", "#vr" = "VoxCom", ".vr" = "VoxCom",
)
diff --git a/modular_ss220/antagonists/_antagonists.dme b/modular_ss220/antagonists/_antagonists.dme
index feb1debd254a..ee76b8f9d2be 100644
--- a/modular_ss220/antagonists/_antagonists.dme
+++ b/modular_ss220/antagonists/_antagonists.dme
@@ -2,8 +2,8 @@
#include "code/antag_mix/scenarios/antag_scenario.dm"
#include "code/antag_mix/scenarios/antag_team_scenario.dm"
-#include "code/antag_mix/scenarios/minor_scenarios.dm"
#include "code/antag_mix/scenarios/major_scenarios.dm"
+#include "code/antag_mix/scenarios/minor_scenarios.dm"
#include "code/configuration/antag_mix_configuration.dm"
#include "code/mind/memory_edit.dm"
#include "code/antag_mix/antag_mix.dm"
diff --git a/modular_ss220/antagonists/code/antag_mix/scenarios/antag_scenario.dm b/modular_ss220/antagonists/code/antag_mix/scenarios/antag_scenario.dm
index 100cf166b3a6..c7d1dfd50d08 100644
--- a/modular_ss220/antagonists/code/antag_mix/scenarios/antag_scenario.dm
+++ b/modular_ss220/antagonists/code/antag_mix/scenarios/antag_scenario.dm
@@ -131,15 +131,15 @@
chosen_mind.special_role = antag_special_role
chosen_mind.restricted_roles |= restricted_roles
- if(!try_create_characters())
- return FALSE
-
return length(assigned) - assigned_before > 0
/**
* Called in `post_setup`, which means that all players already have jobs. Here antags should receive everything they need.
* Can fail here, but there is nothing we can do on this stage - all players already have their jobs.
*/
/datum/antag_scenario/proc/execute()
+ if(!is_crew_antag && !try_create_characters())
+ return FALSE
+
for(var/datum/mind/assignee as anything in assigned)
assignee.add_antag_datum(antag_datum)
@@ -225,6 +225,7 @@
temp_landmarks.Remove(picked_landmark)
var/turf/loc_spawn = get_turf(picked_landmark)
make_character(mind, loc_spawn)
+ equip_character(mind)
return TRUE
@@ -236,6 +237,8 @@
var/datum/antagonist/temp_antag_datum = locate(antag_datum) in mind.antag_datums
temp_antag_datum.create_mob(loc_spawn, TRUE, picked_species, possible_species)
+/datum/antag_scenario/proc/equip_character(datum/mind/mind)
+ return TRUE
/**
* Recommended species increase the chance of getting a role for RP-experienced players
*/
diff --git a/modular_ss220/antagonists/code/antag_mix/scenarios/antag_team_scenario.dm b/modular_ss220/antagonists/code/antag_mix/scenarios/antag_team_scenario.dm
index bbbe0c8869f9..40bddc27db76 100644
--- a/modular_ss220/antagonists/code/antag_mix/scenarios/antag_team_scenario.dm
+++ b/modular_ss220/antagonists/code/antag_mix/scenarios/antag_team_scenario.dm
@@ -44,9 +44,6 @@
message_admins("Picked team of: [json_encode(members)]")
picked_teams += list(members)
- if(!try_create_characters())
- return FALSE
-
return length(picked_teams) - teams_before > 0
diff --git a/modular_ss220/antagonists/code/antag_mix/scenarios/major_scenarios.dm b/modular_ss220/antagonists/code/antag_mix/scenarios/major_scenarios.dm
index 10e69be9369e..3a60738d26f6 100644
--- a/modular_ss220/antagonists/code/antag_mix/scenarios/major_scenarios.dm
+++ b/modular_ss220/antagonists/code/antag_mix/scenarios/major_scenarios.dm
@@ -18,3 +18,17 @@
possible_species = list("Vox")
recommended_species_active_pref = list("Vox")
recommended_species_mod = 3
+
+/datum/antag_scenario/team/vox_raiders/equip_character(datum/mind/mind)
+ mind.current.equipOutfit(/datum/outfit/vox)
+ mind.current.faction = list("Vox")
+ mind.offstation_role = TRUE
+
+
+
+
+// !!!!!!!!! ВРЕМЯНКА ДЛЯ ТЕСТА
+/datum/antag_scenario/team/vox_raiders/New()
+ . = ..()
+ required_players = 0
+
diff --git a/modular_ss220/antagonists/code/vox_raider/clothing/vox_outfit.dm b/modular_ss220/antagonists/code/vox_raider/clothing/vox_outfit.dm
index b30f82561297..5b81a72525eb 100644
--- a/modular_ss220/antagonists/code/vox_raider/clothing/vox_outfit.dm
+++ b/modular_ss220/antagonists/code/vox_raider/clothing/vox_outfit.dm
@@ -1,5 +1,5 @@
// Outfit
-/datum/outfit/admin/vox
+/datum/outfit/vox
name = "Vox Clothing"
uniform = /obj/item/clothing/under/vox/jumpsuit
gloves = /obj/item/clothing/gloves/vox
@@ -19,7 +19,7 @@
/obj/item/clothing/head/helmet/space/vox/pressure = 1,
)
-/datum/outfit/admin/vox/pre_equip(mob/living/carbon/human/H, visualsOnly)
+/datum/outfit/vox/pre_equip(mob/living/carbon/human/H, visualsOnly)
. = ..()
var/choosen = rand(1, 8)
switch(choosen)
@@ -46,7 +46,7 @@
if(prob(25))
back = /obj/item/storage/backpack/duffel/vox
-/datum/outfit/admin/vox/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+/datum/outfit/vox/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(visualsOnly)
return
@@ -55,26 +55,12 @@
if(istype(I))
apply_to_card(I, H, get_all_accesses(), "Vox Raider", "syndie")
-/datum/outfit/admin/vox/carapace
- name = "Vox Carapace"
- uniform = /obj/item/clothing/suit/hooded/vox_robes
- suit = /obj/item/clothing/suit/space/vox/carapace
- gloves = /obj/item/clothing/gloves/color/yellow/vox
- shoes = /obj/item/clothing/shoes/magboots/vox
- head = /obj/item/clothing/head/helmet/space/vox/carapace
- mask = /obj/item/clothing/mask/gas/syndicate
- glasses = /obj/item/clothing/glasses/thermal/monocle
- l_ear = /obj/item/radio/headset/vox/alt
-
-
-/datum/outfit/admin/vox/carapace/pre_equip(mob/living/carbon/human/H, visualsOnly)
- . = ..()
- uniform = /obj/item/clothing/suit/hooded/vox_robes
- back = /obj/item/storage/backpack/vox
+ H.internal = H.r_pocket
+ H.update_action_buttons_icon()
// ==================== Raiders ====================
-/datum/outfit/admin/vox/raider
+/datum/outfit/vox/raider
name = "vox raider"
suit = /obj/item/clothing/suit/space/hardsuit/vox
suit_store = /obj/item/tank/internals/emergency_oxygen/double/vox
@@ -82,33 +68,33 @@
shoes = /obj/item/clothing/shoes/magboots/vox
l_ear = /obj/item/radio/headset/vox/alt
-/datum/outfit/admin/vox/raider/trooper
+/datum/outfit/vox/raider/trooper
name = "vox raider trooper"
suit = /obj/item/clothing/suit/space/hardsuit/vox/trooper
shoes = /obj/item/clothing/shoes/magboots/vox/combat
-/datum/outfit/admin/vox/raider/scout
+/datum/outfit/vox/raider/scout
name = "vox raider scout"
suit = /obj/item/clothing/suit/space/hardsuit/vox/scout
shoes = /obj/item/clothing/shoes/magboots/vox/scout
-/datum/outfit/admin/vox/raider/medic
+/datum/outfit/vox/raider/medic
name = "vox raider medic"
suit = /obj/item/clothing/suit/space/hardsuit/vox/medic
-/datum/outfit/admin/vox/raider/mechanic
+/datum/outfit/vox/raider/mechanic
name = "vox raider mechanic"
suit = /obj/item/clothing/suit/space/hardsuit/vox/mechanic
shoes = /obj/item/clothing/shoes/magboots/vox/heavy
-/datum/outfit/admin/vox/raider/heavy
+/datum/outfit/vox/raider/heavy
name = "vox raider heavy"
suit = /obj/item/clothing/suit/space/hardsuit/vox/heavy
shoes = /obj/item/clothing/shoes/magboots/vox/heavy
// ==================== Mercenaries ====================
-/datum/outfit/admin/vox/merc
+/datum/outfit/vox/merc
name = "vox mercenary"
suit = /obj/item/clothing/suit/armor/vox_merc
head = /obj/item/clothing/head/helmet/vox_merc
@@ -116,34 +102,52 @@
shoes = /obj/item/clothing/shoes/magboots/vox
l_ear = /obj/item/radio/headset/vox/alt
-/datum/outfit/admin/vox/merc/storm
+/datum/outfit/vox/merc/storm
name = "vox mercenary stormtrooper"
suit = /obj/item/clothing/suit/armor/vox_merc/stormtrooper
head = /obj/item/clothing/head/helmet/vox_merc/stormtrooper
shoes = /obj/item/clothing/shoes/magboots/vox/combat
-/datum/outfit/admin/vox/merc/fieldmedic
+/datum/outfit/vox/merc/fieldmedic
name = "vox mercenary field medic"
suit = /obj/item/clothing/suit/armor/vox_merc/fieldmedic
head = /obj/item/clothing/head/helmet/vox_merc/fieldmedic
-/datum/outfit/admin/vox/merc/bomber
+/datum/outfit/vox/merc/bomber
name = "vox mercenary bomber"
suit = /obj/item/clothing/suit/armor/vox_merc/bomber
head = /obj/item/clothing/head/helmet/vox_merc/bomber
shoes = /obj/item/clothing/shoes/magboots/vox/heavy
-/datum/outfit/admin/vox/merc/laminar
+/datum/outfit/vox/merc/laminar
name = "vox mercenary laminar"
suit = /obj/item/clothing/suit/armor/vox_merc/laminar
head = /obj/item/clothing/head/helmet/vox_merc/laminar
-/datum/outfit/admin/vox/merc/laminar/scout
+/datum/outfit/vox/merc/laminar/scout
name = "vox mercenary laminar scout"
suit = /obj/item/clothing/suit/armor/vox_merc/laminar/scout
shoes = /obj/item/clothing/shoes/magboots/vox/scout
-/datum/outfit/admin/vox/merc/stealth
+/datum/outfit/vox/merc/stealth
name = "vox mercenary stealth"
suit = /obj/item/clothing/suit/armor/vox_merc/stealth
head = /obj/item/clothing/head/helmet/vox_merc/stealth
+
+
+// ==================== Other ====================
+/datum/outfit/vox/carapace
+ name = "Vox Carapace"
+ uniform = /obj/item/clothing/suit/hooded/vox_robes
+ suit = /obj/item/clothing/suit/space/vox/carapace
+ gloves = /obj/item/clothing/gloves/color/yellow/vox
+ shoes = /obj/item/clothing/shoes/magboots/vox
+ head = /obj/item/clothing/head/helmet/space/vox/carapace
+ mask = /obj/item/clothing/mask/gas/syndicate
+ glasses = /obj/item/clothing/glasses/thermal/monocle
+ l_ear = /obj/item/radio/headset/vox/alt
+
+/datum/outfit/vox/carapace/pre_equip(mob/living/carbon/human/H, visualsOnly)
+ . = ..()
+ uniform = /obj/item/clothing/suit/hooded/vox_robes
+ back = /obj/item/storage/backpack/vox
diff --git a/modular_ss220/antagonists/code/vox_raider/clothing/vox_shoes.dm b/modular_ss220/antagonists/code/vox_raider/clothing/vox_shoes.dm
index 5d76c8a766d6..3e0c44608138 100644
--- a/modular_ss220/antagonists/code/vox_raider/clothing/vox_shoes.dm
+++ b/modular_ss220/antagonists/code/vox_raider/clothing/vox_shoes.dm
@@ -15,6 +15,9 @@
armor = list(MELEE = 15, BULLET = 15, LASER = 15, ENERGY = 15, BOMB = 50, RAD = 0, FIRE = 115, ACID = 50)
strip_delay = 7 SECONDS
resistance_flags = NONE
+ slowdown = 0
+ slowdown_passive = 0
+ slowdown_active = 1
/obj/item/clothing/shoes/magboots/vox/combat
name = "vox combat magclaws"
@@ -35,11 +38,13 @@
permeability_coefficient = 0.01
armor = list(MELEE = 115, BULLET = 50, LASER = 75, ENERGY = 50, BOMB = 200, RAD = 200, FIRE = 450, ACID = 200)
strip_delay = 14 SECONDS
- slowdown_active = SHOES_SLOWDOWN+2
+ slowdown_passive = SHOES_SLOWDOWN+1
+ slowdown_active = SHOES_SLOWDOWN+3
/obj/item/clothing/shoes/magboots/vox/scout
name = "vox scout magclaws"
desc = "Легкие налапочники для когтистых лап причудливой формы с продвинутым сцеплением с поверхностью для ускорение передвижения."
item_state = "boots-vox-combat"
icon_state = "boots-vox-combat"
- slowdown_active = -2 // !!! проверить и выставить -1 если много или броне.
+ slowdown_passive = -0.25
+ slowdown_active = 0
diff --git a/modular_ss220/antagonists/code/vox_raider/clothing/vox_suit_armor.dm b/modular_ss220/antagonists/code/vox_raider/clothing/vox_suit_armor.dm
index 8de6410804f3..e5e3a9df4a10 100644
--- a/modular_ss220/antagonists/code/vox_raider/clothing/vox_suit_armor.dm
+++ b/modular_ss220/antagonists/code/vox_raider/clothing/vox_suit_armor.dm
@@ -146,16 +146,7 @@
name = "vox mercenary laminar scout vest"
desc = "Компактный и мобильный костюм сформированный из лёгких пластин и за счет их особого размещения, увеличивает погашение импульсов перенаправляя их в ускорение носителя, но взамен теряя значимые защитные свойства. "
armor = list(MELEE = 20, BULLET = 20, LASER = 10, ENERGY = 40, BOMB = 40, RAD = 20, FIRE = 20, ACID = 20)
-
-/obj/item/clothing/suit/armor/vox_merc/laminar/scout/equipped(mob/living/user, slot)
- ..()
- if(isvox(user) && slot == SLOT_HUD_OUTER_SUIT)
- ADD_TRAIT(user, TRAIT_GOTTAGOFAST, "laminararmor[UID()]")
-
-/obj/item/clothing/suit/armor/vox_merc/laminar/scout/dropped(mob/user)
- . = ..()
- if(user)
- REMOVE_TRAIT(user, TRAIT_GOTTAGOFAST, "laminararmor[UID()]")
+ slowdown = -0.25
// Stealth
diff --git a/modular_ss220/antagonists/code/vox_raider/objects/packs/vox_shop_pack.dm b/modular_ss220/antagonists/code/vox_raider/objects/packs/vox_shop_pack.dm
index 4df3f9817561..386f2b0eeaa6 100644
--- a/modular_ss220/antagonists/code/vox_raider/objects/packs/vox_shop_pack.dm
+++ b/modular_ss220/antagonists/code/vox_raider/objects/packs/vox_shop_pack.dm
@@ -15,7 +15,8 @@
if(!path)
continue
var/atom/movable/AM = path
- ui_manifest += "[bicon(AM)] [initial(AM.name)]" // !!!! проверяем отобразится ли иконка
+ var/icon/I = icon(initial(AM.icon), initial(AM.icon_state))
+ ui_manifest += "[bicon(I)] [initial(AM.name)]" // !!!! проверяем отобразится ли иконка
/datum/vox_pack/proc/create_package(turf/spawn_location, mob/user, put_in_hands = TRUE)
var/list/items_list = list()
diff --git a/modular_ss220/antagonists/code/vox_raider/objects/vox_trade.dm b/modular_ss220/antagonists/code/vox_raider/objects/vox_trade.dm
index 9d5085f1a0c5..2533dae57c6f 100644
--- a/modular_ss220/antagonists/code/vox_raider/objects/vox_trade.dm
+++ b/modular_ss220/antagonists/code/vox_raider/objects/vox_trade.dm
@@ -122,7 +122,7 @@
return TRUE
/obj/machinery/vox_trader/proc/do_trade(mob/user)
- var/list/items_list = get_turf(src)
+ var/list/items_list = get_turf(src).GetAllContents(7)
if(!length(items_list))
sparks()
diff --git a/modular_ss220/antagonists/code/vox_raider/vox_raider_mode.dm b/modular_ss220/antagonists/code/vox_raider/vox_raider_mode.dm
index b9b6beea8b60..e43ccd0bce14 100644
--- a/modular_ss220/antagonists/code/vox_raider/vox_raider_mode.dm
+++ b/modular_ss220/antagonists/code/vox_raider/vox_raider_mode.dm
@@ -10,6 +10,10 @@
. = ..()
list_scenarios = list(/datum/antag_scenario/team/vox_raiders)
+ var/datum/antag_scenario/antag_datum = /datum/antag_scenario/team/vox_raiders
+ required_players = initial(antag_datum.required_players)
+ return
+
/datum/game_mode/antag_mix/vox_raider/announce()
to_chat(world, "The current game mode is - Vox Raiders!")
to_chat(world, "Поблизости сектора [world.name] обнаружен корабль воксов!")
diff --git a/modular_ss220/cyrillic_fixes/_cyrillic_fixes.dm b/modular_ss220/cyrillic_fixes/_cyrillic_fixes.dm
index 2b2054c32938..9f46f751dce6 100644
--- a/modular_ss220/cyrillic_fixes/_cyrillic_fixes.dm
+++ b/modular_ss220/cyrillic_fixes/_cyrillic_fixes.dm
@@ -21,9 +21,11 @@
Busy letters by radio(eng):
c e h i l m n p r s t u w x z
+ vr
Busy letters by radio(rus):
б г д е ё з к р с т у ц ч ш ы ь я Э
+ мк
Busy symbols by radio:
~ , $ _ - + *
@@ -66,8 +68,8 @@
":Ё" = "cords", "#Ё" = "cords", "№Ё" = "cords", ".Ё" = "cords",
// modular_ss220/antagonists/code/antagonist_radio.dm
- ":М" = "VoxCom", "#М" = "VoxCom", "№М" = "VoxCom", ".М" = "VoxCom",
- ":м" = "VoxCom", "#м" = "VoxCom", "№м" = "VoxCom", ".м" = "VoxCom",
+ ":МК" = "VoxCom", "#МК" = "VoxCom", "№МК" = "VoxCom", ".МК" = "VoxCom",
+ ":мк" = "VoxCom", "#мк" = "VoxCom", "№мк" = "VoxCom", ".мк" = "VoxCom",
// Russian symbols no case
// None yet.
diff --git a/tgui/packages/tgui/public/tgui.bundle.js b/tgui/packages/tgui/public/tgui.bundle.js
index dfe4aaf1df05..c66db138f005 100644
--- a/tgui/packages/tgui/public/tgui.bundle.js
+++ b/tgui/packages/tgui/public/tgui.bundle.js
@@ -1,5 +1,5 @@
-!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=233)}([function(e,t,n){"use strict";t.__esModule=!0;var o=n(235);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===o[e]||(t[e]=o[e]))}))},function(e,t,n){"use strict";t.__esModule=!0,t.useSharedState=t.useLocalState=t.useBackend=t.deleteLocalState=t.backendUpdate=t.backendSetSharedState=t.backendReducer=t.backendDeleteSharedState=void 0;var o=n(33),r=n(44);t.backendUpdate=function(e){return{type:"backend/update",payload:e}};var a=function(e,t){return{type:"backend/setSharedState",payload:{key:e,nextState:t}}};t.backendSetSharedState=a;var c=function(e){return{type:"backend/deleteSharedState",payload:e}};t.backendDeleteSharedState=c;t.backendReducer=function(e,t){var n=t.type,o=t.payload;if("backend/update"===n){var a=Object.assign({},e.config,o.config),c=Object.assign({},e.data,o.static_data,o.data),i=Object.assign({},e.shared);if(o.shared)for(var l=0,d=Object.keys(o.shared);l1?n-1:0),r=1;rn?n:e};t.clamp01=function(e){return e<0?0:e>1?1:e};t.scale=function(e,t,n){return(e-t)/(n-t)};t.round=function(e,t){return!e||isNaN(e)?e:(t|=0,a=(e*=n=Math.pow(10,t))>0|-(e<0),r=Math.abs(e%1)>=.4999999999854481,o=Math.floor(e),r&&(e=o+(a>0)),(r?e:Math.round(e))/n);var n,o,r,a};t.toFixed=function(e,t){return void 0===t&&(t=0),Number(e).toFixed(Math.max(t,0))};var o=function(e,t){return t&&e>=t[0]&&e<=t[1]};t.inRange=o;t.keyOfMatchingRange=function(e,t){for(var n=0,r=Object.keys(t);n=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n",apos:"'"};return e.replace(/
/gi,"\n").replace(/<\/?[a-z0-9-_]+[^>]*>/gi,"").replace(/&(nbsp|amp|quot|lt|gt|apos);/g,(function(e,n){return t[n]})).replace(/?([0-9]+);/gi,(function(e,t){var n=parseInt(t,10);return String.fromCharCode(n)})).replace(/?([0-9a-f]+);/gi,(function(e,t){var n=parseInt(t,16);return String.fromCharCode(n)}))};t.buildQueryString=function(e){return Object.keys(e).map((function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).join("&")}},function(e,t,n){"use strict";var o=n(5),r=n(74),a=o.String;e.exports=function(e){if("Symbol"===r(e))throw TypeError("Cannot convert a Symbol value to a string");return a(e)}},function(e,t,n){"use strict";t.__esModule=!0,t.unit=t.halfUnit=t.computeBoxProps=t.computeBoxClassName=t.Box=void 0;var o=n(8),r=n(0),a=n(508),c=n(44),i=["as","className","children"];var l=function(e){return"string"==typeof e?e:"number"==typeof e?12*e+"px":void 0};t.unit=l;var d=function(e){return"string"==typeof e?e:"number"==typeof e?12*e*.5+"px":void 0};t.halfUnit=d;var u=function(e){return"string"==typeof e&&c.CSS_COLORS.includes(e)},s=function(e){return function(t,n){(0,o.isFalsy)(n)||(t[e]=n)}},m=function(e,t){return function(n,r){(0,o.isFalsy)(r)||(n[e]=t(r))}},p=function(e,t){return function(n,r){(0,o.isFalsy)(r)||(n[e]=t)}},h=function(e,t,n){return function(r,a){if(!(0,o.isFalsy)(a))for(var c=0;c0&&(t.style=l),t};t.computeBoxProps=N;var b=function(e){var t=e.textColor||e.color,n=e.backgroundColor;return(0,o.classes)([u(t)&&"color-"+t,u(n)&&"color-bg-"+n])};t.computeBoxClassName=b;var V=function(e){var t=e.as,n=void 0===t?"div":t,o=e.className,c=e.children,l=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,i);if("function"==typeof c)return c(N(e));var d="string"==typeof o?o+" "+b(l):b(l),u=N(l);return(0,r.createVNode)(a.VNodeFlags.HtmlElement,n,d,c,a.ChildFlags.UnknownChildren,u)};t.Box=V,V.defaultHooks=o.pureComponentHooks},function(e,t,n){"use strict";var o=n(42);e.exports=function(e){return o(e.length)}},function(e,t,n){"use strict";var o=n(5),r=n(13),a=n(50),c=n(132),i=n(130);e.exports=function(e,t,n,l){var d=!!l&&!!l.unsafe,u=!!l&&!!l.enumerable,s=!!l&&!!l.noTargetGet,m=l&&l.name!==undefined?l.name:t;return r(n)&&c(n,m,l),e===o?(u?e[t]=n:i(t,n),e):(d?!s&&e[t]&&(u=!0):delete e[t],u?e[t]=n:a(e,t,n),e)}},function(e,t,n){"use strict";t.__esModule=!0,t.zipWith=t.zip=t.uniqBy=t.toKeyedArray=t.toArray=t.sortBy=t.reduce=t.map=t.filter=void 0;t.toArray=function(e){if(Array.isArray(e))return e;if("object"==typeof e){var t=Object.prototype.hasOwnProperty,n=[];for(var o in e)t.call(e,o)&&n.push(e[o]);return n}return[]};t.toKeyedArray=function(e,t){return void 0===t&&(t="key"),o((function(e,n){var o;return Object.assign(((o={})[t]=n,o),e)}))(e)};t.filter=function(e){return function(t){if(null===t&&t===undefined)return t;if(Array.isArray(t)){for(var n=[],o=0;oi)return 1}return 0};t.sortBy=function(){for(var e=arguments.length,t=new Array(e),n=0;nx;x++)if((p||x in v)&&(V=y(b=v[x],x,g),e))if(t)L[x]=V;else if(V)switch(e){case 3:return!0;case 5:return b;case 6:return x;case 2:d(L,b)}else switch(e){case 4:return!1;case 7:d(L,b)}return s?-1:r||u?u:L}};e.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6),filterReject:u(7)}},function(e,t,n){"use strict";var o=n(9),r=n(15),a=n(102),c=n(64),i=n(31),l=n(56),d=n(18),u=n(174),s=Object.getOwnPropertyDescriptor;t.f=o?s:function(e,t){if(e=i(e),t=l(t),u)try{return s(e,t)}catch(n){}if(d(e,t))return c(!r(a.f,e,t),e[t])}},function(e,t,n){"use strict";var o=n(5),r=n(13),a=n(71),c=o.TypeError;e.exports=function(e){if(r(e))return e;throw c(a(e)+" is not a function")}},function(e,t,n){"use strict";t.__esModule=!0,t.modalRegisterBodyOverride=t.modalOpen=t.modalClose=t.modalAnswer=t.ComplexModal=void 0;var o=n(0),r=n(1),a=n(2),c={};t.modalOpen=function(e,t,n){var o=(0,r.useBackend)(e),a=o.act,c=o.data,i=Object.assign(c.modal?c.modal.args:{},n||{});a("modal_open",{id:t,arguments:JSON.stringify(i)})};t.modalRegisterBodyOverride=function(e,t){c[e]=t};var i=function(e,t,n,o){var a=(0,r.useBackend)(e),c=a.act,i=a.data;if(i.modal){var l=Object.assign(i.modal.args||{},o||{});c("modal_answer",{id:t,answer:n,arguments:JSON.stringify(l)})}};t.modalAnswer=i;var l=function(e,t){(0,(0,r.useBackend)(e).act)("modal_close",{id:t})};t.modalClose=l;t.ComplexModal=function(e,t){var n=(0,r.useBackend)(t).data;if(n.modal){var d,u,s=n.modal,m=s.id,p=s.text,h=s.type,f=(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Cancel",color:"grey",onClick:function(){return l(t)}}),C="auto";if(c[m])u=c[m](n.modal,t);else if("input"===h){var N=n.modal.value;d=function(e){return i(t,m,N)},u=(0,o.createComponentVNode)(2,a.Input,{value:n.modal.value,placeholder:"ENTER to submit",width:"100%",my:"0.5rem",autofocus:!0,onChange:function(e,t){N=t}}),f=(0,o.createComponentVNode)(2,a.Box,{mt:"0.5rem",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Cancel",color:"grey",onClick:function(){return l(t)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"check",content:"Confirm",color:"good",float:"right",m:"0",onClick:function(){return i(t,m,N)}}),(0,o.createComponentVNode)(2,a.Box,{clear:"both"})]})}else if("choice"===h){var b="object"==typeof n.modal.choices?Object.values(n.modal.choices):n.modal.choices;u=(0,o.createComponentVNode)(2,a.Dropdown,{options:b,selected:n.modal.value,width:"100%",my:"0.5rem",onSelected:function(e){return i(t,m,e)}}),C="initial"}else"bento"===h?u=(0,o.createComponentVNode)(2,a.Flex,{spacingPrecise:"1",wrap:"wrap",my:"0.5rem",maxHeight:"1%",children:n.modal.choices.map((function(e,r){return(0,o.createComponentVNode)(2,a.Flex.Item,{flex:"1 1 auto",children:(0,o.createComponentVNode)(2,a.Button,{selected:r+1===parseInt(n.modal.value,10),onClick:function(){return i(t,m,r+1)},children:(0,o.createVNode)(1,"img",null,null,1,{src:e})})},r)}))}):"boolean"===h&&(f=(0,o.createComponentVNode)(2,a.Box,{mt:"0.5rem",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:n.modal.no_text,color:"bad",float:"left",mb:"0",onClick:function(){return i(t,m,0)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"check",content:n.modal.yes_text,color:"good",float:"right",m:"0",onClick:function(){return i(t,m,1)}}),(0,o.createComponentVNode)(2,a.Box,{clear:"both"})]}));return(0,o.createComponentVNode)(2,a.Modal,{maxWidth:e.maxWidth||window.innerWidth/2+"px",maxHeight:e.maxHeight||window.innerHeight/2+"px",onEnter:d,mx:"auto",overflowY:C,children:[(0,o.createComponentVNode)(2,a.Box,{display:"inline",children:p}),u,f]})}}},function(e,t,n){"use strict";var o=n(5),r=n(13),a=function(e){return r(e)?e:undefined};e.exports=function(e,t){return arguments.length<2?a(o[e]):o[e]&&o[e][t]}},function(e,t,n){"use strict";var o=n(85),r=n(32);e.exports=function(e){return o(r(e))}},function(e,t,n){"use strict";var o=n(5).TypeError;e.exports=function(e){if(e==undefined)throw o("Can't call method on "+e);return e}},function(e,t,n){"use strict";function o(e,t,n,o,r,a,c){try{var i=e[a](c),l=i.value}catch(d){return void n(d)}i.done?t(l):Promise.resolve(l).then(o,r)}t.__esModule=!0,t.winset=t.winget=t.runCommand=t.callByondAsync=t.callByond=t.IS_IE8=void 0;var r=window.Byond,a=function(){var e=navigator.userAgent.match(/Trident\/(\d+).+?;/i);if(!e)return null;var t=e[1];return t?parseInt(t,10):null}(),c=null!==a&&a<=6;t.IS_IE8=c;var i=function(e,t){void 0===t&&(t={}),r.call(e,t)};t.callByond=i;var l=function(e,t){void 0===t&&(t={}),window.__callbacks__=window.__callbacks__||[];var n=window.__callbacks__.length,o=new Promise((function(e){window.__callbacks__.push(e)}));return r.call(e,Object.assign({},t,{callback:"__callbacks__["+n+"]"})),o};t.callByondAsync=l;t.runCommand=function(e){return i("winset",{command:e})};var d=function(){var e,t=(e=regeneratorRuntime.mark((function n(e,t){var o;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,l("winget",{id:e,property:t});case 2:return o=n.sent,n.abrupt("return",o[t]);case 4:case"end":return n.stop()}}),n)})),function(){var t=this,n=arguments;return new Promise((function(r,a){var c=e.apply(t,n);function i(e){o(c,r,a,i,l,"next",e)}function l(e){o(c,r,a,i,l,"throw",e)}i(undefined)}))});return function(e,n){return t.apply(this,arguments)}}();t.winget=d;t.winset=function(e,t,n){var o;return i("winset",((o={})[e+"."+t]=n,o))}},function(e,t,n){"use strict";t.__esModule=!0,t.computeFlexProps=t.computeFlexItemProps=t.FlexItem=t.Flex=void 0;var o=n(0),r=n(8),a=n(33),c=n(22),i=["className","direction","wrap","align","alignContent","justify","inline","spacing","spacingPrecise"],l=["className","grow","order","shrink","basis","align"];function d(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}var u=function(e){var t=e.className,n=e.direction,o=e.wrap,c=e.align,l=e.alignContent,u=e.justify,s=e.inline,m=e.spacing,p=void 0===m?0:m,h=e.spacingPrecise,f=void 0===h?0:h,C=d(e,i);return Object.assign({className:(0,r.classes)(["Flex",a.IS_IE8&&("column"===n?"Flex--ie8--column":"Flex--ie8"),s&&"Flex--inline",p>0&&"Flex--spacing--"+p,f>0&&"Flex--spacingPrecise--"+f,t]),style:Object.assign({},C.style,{"flex-direction":n,"flex-wrap":o,"align-items":c,"align-content":l,"justify-content":u})},C)};t.computeFlexProps=u;var s=function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,c.Box,Object.assign({},u(e))))};t.Flex=s,s.defaultHooks=r.pureComponentHooks;var m=function(e){var t=e.className,n=e.grow,o=e.order,i=e.shrink,u=e.basis,s=void 0===u?e.width:u,m=e.align,p=d(e,l);return Object.assign({className:(0,r.classes)(["Flex__item",a.IS_IE8&&"Flex__item--ie8",t]),style:Object.assign({},p.style,{"flex-grow":n,"flex-shrink":i,"flex-basis":(0,c.unit)(s),order:o,"align-self":m})},p)};t.computeFlexItemProps=m;var p=function(e){return(0,o.normalizeProps)((0,o.createComponentVNode)(2,c.Box,Object.assign({},m(e))))};t.FlexItem=p,p.defaultHooks=r.pureComponentHooks,s.Item=p},function(e,t,n){"use strict";e.exports=!1},function(e,t,n){"use strict";var o=n(238),r=n(18),a=n(180),c=n(17).f;e.exports=function(e){var t=o.Symbol||(o.Symbol={});r(t,e)||c(t,e,{value:a.f(e)})}},function(e,t,n){"use strict";var o=n(7),r=n(32),a=n(21),c=/"/g,i=o("".replace);e.exports=function(e,t,n,o){var l=a(r(e)),d="<"+t;return""!==n&&(d+=" "+n+'="'+i(a(o),c,""")+'"'),d+">"+l+""+t+">"}},function(e,t,n){"use strict";var o=n(6);e.exports=function(e){return o((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))}},function(e,t,n){"use strict";t.__esModule=!0,t.flow=t.compose=void 0;t.flow=function o(){for(var e=arguments.length,t=new Array(e),n=0;n1?r-1:0),c=1;c1?o-1:0),a=1;a0?r:o)(t)}},function(e,t,n){"use strict";var o=n(41),r=Math.min;e.exports=function(e){return e>0?r(o(e),9007199254740991):0}},function(e,t,n){"use strict";var o=n(5),r=n(18),a=n(13),c=n(19),i=n(104),l=n(142),d=i("IE_PROTO"),u=o.Object,s=u.prototype;e.exports=l?u.getPrototypeOf:function(e){var t=c(e);if(r(t,d))return t[d];var n=t.constructor;return a(n)&&t instanceof n?n.prototype:t instanceof u?s:null}},function(e,t,n){"use strict";t.__esModule=!0,t.timeAgo=t.getGasLabel=t.getGasColor=t.UI_UPDATE=t.UI_INTERACTIVE=t.UI_DISABLED=t.UI_CLOSE=t.RADIO_CHANNELS=t.CSS_COLORS=t.COLORS=void 0;t.UI_INTERACTIVE=2;t.UI_UPDATE=1;t.UI_DISABLED=0;t.UI_CLOSE=-1;t.COLORS={department:{command:"#526aff",security:"#CF0000",medical:"#009190",science:"#993399",engineering:"#A66300",supply:"#9F8545",service:"#80A000",centcom:"#78789B",other:"#C38312"},damageType:{oxy:"#3498db",toxin:"#2ecc71",burn:"#e67e22",brute:"#e74c3c"}};t.CSS_COLORS=["black","white","red","orange","yellow","olive","green","teal","blue","violet","purple","pink","brown","grey","good","average","bad","label"];t.RADIO_CHANNELS=[{name:"Syndicate",freq:1213,color:"#a52a2a"},{name:"SyndTeam",freq:1244,color:"#a52a2a"},{name:"Red Team",freq:1215,color:"#ff4444"},{name:"Blue Team",freq:1217,color:"#3434fd"},{name:"Response Team",freq:1345,color:"#2681a5"},{name:"Special Ops",freq:1341,color:"#2681a5"},{name:"Supply",freq:1347,color:"#b88646"},{name:"Service",freq:1349,color:"#6ca729"},{name:"Science",freq:1351,color:"#c68cfa"},{name:"Command",freq:1353,color:"#5177ff"},{name:"Procedure",freq:1339,color:"#F70285"},{name:"Medical",freq:1355,color:"#57b8f0"},{name:"Medical(I)",freq:1485,color:"#57b8f0"},{name:"Engineering",freq:1357,color:"#f37746"},{name:"Security",freq:1359,color:"#dd3535"},{name:"Security(I)",freq:1475,color:"#dd3535"},{name:"AI Private",freq:1343,color:"#d65d95"},{name:"Common",freq:1459,color:"#1ecc43"}];var o=[{id:"o2",name:"Oxygen",label:"O\u2082",color:"blue"},{id:"n2",name:"Nitrogen",label:"N\u2082",color:"red"},{id:"co2",name:"Carbon Dioxide",label:"CO\u2082",color:"grey"},{id:"plasma",name:"Plasma",label:"Plasma",color:"pink"},{id:"water_vapor",name:"Water Vapor",label:"H\u2082O",color:"grey"},{id:"nob",name:"Hyper-noblium",label:"Hyper-nob",color:"teal"},{id:"n2o",name:"Nitrous Oxide",label:"N\u2082O",color:"red"},{id:"no2",name:"Nitryl",label:"NO\u2082",color:"brown"},{id:"tritium",name:"Tritium",label:"Tritium",color:"green"},{id:"bz",name:"BZ",label:"BZ",color:"purple"},{id:"stim",name:"Stimulum",label:"Stimulum",color:"purple"},{id:"pluox",name:"Pluoxium",label:"Pluoxium",color:"blue"},{id:"miasma",name:"Miasma",label:"Miasma",color:"olive"},{id:"hydrogen",name:"Hydrogen",label:"H\u2082",color:"white"},{id:"ab",name:"Agent B",label:"Agent B",color:"purple"}];t.getGasLabel=function(e,t){var n=String(e).toLowerCase(),r=o.find((function(e){return e.id===n||e.name.toLowerCase()===n}));return r&&r.label||t||e};t.getGasColor=function(e){var t=String(e).toLowerCase(),n=o.find((function(e){return e.id===t||e.name.toLowerCase()===t}));return n&&n.color};t.timeAgo=function(e,t){if(e>t)return"in the future";var n=(t/=10)-(e/=10);if(n>3600){var o=Math.round(n/3600);return o+" hour"+(1===o?"":"s")+" ago"}if(n>60){var r=Math.round(n/60);return r+" minute"+(1===r?"":"s")+" ago"}var a=Math.round(n);return a+" second"+(1===a?"":"s")+" ago"}},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledListItem=t.LabeledListDivider=t.LabeledList=void 0;var o=n(0),r=n(8),a=n(22),c=n(222),i=["className","label","labelColor","color","textAlign","verticalAlign","buttons","content","children","noColon"];var l=function(e){var t=e.children;return(0,o.createVNode)(1,"table","LabeledList",t,0)};t.LabeledList=l,l.defaultHooks=r.pureComponentHooks;var d=function(e){var t=e.className,n=e.label,c=e.labelColor,l=void 0===c?"label":c,d=e.color,u=e.textAlign,s=e.verticalAlign,m=e.buttons,p=e.content,h=e.children,f=e.noColon,C=void 0!==f&&f,N=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o=0||(r[n]=e[n]);return r}(e,i),b=C?"":":";return(0,o.createVNode)(1,"tr",(0,r.classes)(["LabeledList__row",t]),[(0,o.createComponentVNode)(2,a.Box,{as:"td",color:l,verticalAlign:s,className:(0,r.classes)(["LabeledList__cell","LabeledList__label"]),children:n?n+b:null}),(0,o.normalizeProps)((0,o.createComponentVNode)(2,a.Box,Object.assign({as:"td",color:d,textAlign:u,verticalAlign:s,className:(0,r.classes)(["LabeledList__cell","LabeledList__content"]),colSpan:m?undefined:2},N,{children:[p,h]}))),m&&(0,o.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",m,0)],0)};t.LabeledListItem=d,d.defaultHooks=r.pureComponentHooks;var u=function(e){var t=e.size?(0,a.unit)(Math.max(0,e.size-1)):0;return(0,o.createVNode)(1,"tr","LabeledList__row",(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,c.Divider),2,{colSpan:3,style:{"padding-top":t,"padding-bottom":t}}),2)};t.LabeledListDivider=u,u.defaultHooks=r.pureComponentHooks,l.Item=d,l.Divider=u},function(e,t,n){"use strict";var o=n(7),r=o({}.toString),a=o("".slice);e.exports=function(e){return a(r(e),8,-1)}},function(e,t,n){"use strict";var o=n(7);e.exports=o({}.isPrototypeOf)},function(e,t,n){"use strict";var o=n(84),r=Function.prototype,a=r.apply,c=r.call;e.exports="object"==typeof Reflect&&Reflect.apply||(o?c.bind(a):function(){return c.apply(a,arguments)})},function(e,t,n){"use strict";var o=n(30);e.exports=o("navigator","userAgent")||""},function(e,t,n){"use strict";var o=n(9),r=n(17),a=n(64);e.exports=o?function(e,t,n){return r.f(e,t,a(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){"use strict";var o=n(41),r=Math.max,a=Math.min;e.exports=function(e,t){var n=o(e);return n<0?r(n+t,0):a(n,t)}},function(e,t,n){"use strict";var o,r=n(10),a=n(136),c=n(134),i=n(87),l=n(179),d=n(131),u=n(104),s=u("IE_PROTO"),m=function(){},p=function(e){return"