Minesweeper "
- var/static_web = "
Minesweeper Minesweeper " //When we need to revert to the main menu we set web as this
- web = static_web
-
- if(CHECK_BITFIELD(obj_flags, EMAGGED))
- web = "
Minesweeper Minesweeper EXTREME EDITION : Iteration #[randomnumber] " //Different colour mix for every random number made
- if(!spark_spam)
- do_sparks(5, 1, src)
- spark_spam = TRUE
- addtimer(CALLBACK(src, .proc/reset_spark_spam), 30)
-
-
- var/startup_sound = CHECK_BITFIELD(obj_flags, EMAGGED) ? 'sound/arcade/minesweeper_emag2.ogg' : 'sound/arcade/minesweeper_startup.ogg'
-
- if(href_list["Main_Menu"])
- game_status = MINESWEEPER_GAME_MAIN_MENU
- mine_limit = 0
- rows = 0
- columns = 0
- mine_placed = 0
- if(href_list["Easy"])
- playsound(loc, startup_sound, 10, 0, extrarange = -3, falloff = 10)
- flag_text = "OFF"
- game_status = MINESWEEPER_GAME_PLAYING
- reset_board = TRUE
- difficulty = "Easy"
- rows = 10 //9x9 board
- columns = 10
- mine_limit = 10
- if(href_list["Intermediate"])
- playsound(loc, startup_sound, 10, 0, extrarange = -3, falloff = 10)
- flag_text = "OFF"
- game_status = MINESWEEPER_GAME_PLAYING
- reset_board = TRUE
- difficulty = "Intermediate"
- rows = 17 //16x16 board
- columns = 17
- mine_limit = 40
- if(href_list["Hard"])
- playsound(loc, startup_sound, 10, 0, extrarange = -3, falloff = 10)
- flag_text = "OFF"
- game_status = MINESWEEPER_GAME_PLAYING
- reset_board = TRUE
- difficulty = "Hard"
- rows = 17 //16x30 board
- columns = 31
- mine_limit = 99
- if(href_list["Custom"])
- if(custom_generation(usr))
- flag_text = "OFF"
- game_status = MINESWEEPER_GAME_PLAYING
- reset_board = TRUE
- difficulty = "Custom"
- playsound(loc, startup_sound, 10, 0, extrarange = -3, falloff = 10)
- if(href_list["Flag"])
- playsound(loc, 'sound/arcade/minesweeper_boardpress.ogg', 50, 0, extrarange = -3, falloff = 10)
- if(!flagging)
- flagging = TRUE
- flag_text = "ON"
- else
- flagging = FALSE
- flag_text = "OFF"
-
- if(game_status == MINESWEEPER_GAME_MAIN_MENU)
- if(CHECK_BITFIELD(obj_flags, EMAGGED))
- playsound(loc, 'sound/arcade/minesweeper_emag2.ogg', 10, 0, extrarange = -3, falloff = 10)
- web += "
Explode in the game, explode in real life! What difficulty do you want to play?Easy (9x9 board, 10 mines) Intermediate (16x16 board, 40 mines) Hard (16x30 board, 99 mines) Custom "
- else
- playsound(loc, 'sound/arcade/minesweeper_startup.ogg', 10, 0, extrarange = -3, falloff = 10)
- web += web_difficulty_menu
-
- if(game_status == MINESWEEPER_GAME_PLAYING)
- mine_sound = TRUE
-
- area = (rows-1)*(columns-1)
-
- if(reset_board)
- mine_placed = 0
- var/reset_everything = TRUE
- make_mines(reset_everything)
-
- safe_squares_revealed = 0
- win_condition = area-mine_placed
-
- if(game_status != MINESWEEPER_GAME_MAIN_MENU)
- for(var/y1=1;y1= 0) //Check that it's not already revealed, and stop flag removal if we're out of flag mode
- table[y1][x1] += 10
- if(table[y1][x1] != 10)
- playsound(loc, 'sound/arcade/minesweeper_boardpress.ogg', 50, 0, extrarange = -3, falloff = 10)
- else
- if(game_status != MINESWEEPER_GAME_LOST && game_status != MINESWEEPER_GAME_WON)
- game_status = MINESWEEPER_GAME_LOST
- if(CHECK_BITFIELD(obj_flags, EMAGGED) && !exploding_hell)
- exploding_hell = TRUE
- explode_EVERYTHING()
- if(QDELETED(src))
- return
- if(mine_sound)
- switch(rand(1,3)) //Play every time a mine is hit
- if(1)
- playsound(loc, 'sound/arcade/minesweeper_explosion1.ogg', 50, 0, extrarange = -3, falloff = 10)
- if(2)
- playsound(loc, 'sound/arcade/minesweeper_explosion2.ogg', 50, 0, extrarange = -3, falloff = 10)
- if(3)
- playsound(loc, 'sound/arcade/minesweeper_explosion3.ogg', 50, 0, extrarange = -3, falloff = 10)
- mine_sound = FALSE
- else
- playsound(loc, 'sound/arcade/minesweeper_boardpress.ogg', 50, 0, extrarange = -3, falloff = 10)
- if(table[y1][x1] >= 0) //Check that it's not already flagged
- table[y1][x1] -= 10
- else if(table[y1][x1] < 0) //If flagged, remove the flag
- table[y1][x1] += 10
- if(href_list["same_board"]) //Reset the board... kinda
- if(game_status != MINESWEEPER_GAME_PLAYING)
- mine_sound = TRUE
- game_status = MINESWEEPER_GAME_PLAYING
- if(table[y1][x1] >= 10) //If revealed, become unrevealed!
- if(mine_sound)
- playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
- mine_sound = FALSE
- table[y1][x1] -= 10
- if(table[y1][x1] > 10 && !reset_board)
- safe_squares_revealed += 1
- var/y2 = y1
- var/x2 = x1
- work_squares(y2, x2) //Work squares while in this loop so there's less load
- reset_board = FALSE
-
- web += "" //Start setting up the html table
- web += ""
- for(var/y1=1;y1"
- for(var/x1=1;x1[MINESWEEPERIMG(flag)]"
- else
- web += "[MINESWEEPERIMG(flag)] "
- if(0)
- if(game_status != MINESWEEPER_GAME_PLAYING)
- web += "[MINESWEEPERIMG(mine)] "
- else
- web += "[MINESWEEPERIMG(hidden)] " //Make unique hrefs for every square
- if(1 to 9)
- if(game_status != MINESWEEPER_GAME_PLAYING)
- web += "[MINESWEEPERIMG(hidden)] "
- else
- web += "[MINESWEEPERIMG(hidden)] " //Make unique hrefs for every square
- if(10)
- web += "[MINESWEEPERIMG(minehit)] "
- if(11)
- web += "[MINESWEEPERIMG(empty)] "
- if(12)
- web += "[MINESWEEPERIMG(1)] "
- if(13)
- web += "[MINESWEEPERIMG(2)] "
- if(14)
- web += "[MINESWEEPERIMG(3)] "
- if(15)
- web += "[MINESWEEPERIMG(4)] "
- if(16)
- web += "[MINESWEEPERIMG(5)] "
- if(17)
- web += "[MINESWEEPERIMG(6)] "
- if(18)
- web += "[MINESWEEPERIMG(7)] "
- if(19)
- web += "[MINESWEEPERIMG(8)] "
- web += ""
- web += "
"
- web += ""
- web += " "
-
- if(safe_squares_revealed >= win_condition && game_status == MINESWEEPER_GAME_PLAYING)
- game_status = MINESWEEPER_GAME_WON
- if(rows < 10 || columns < 10) //If less than easy difficulty
- playsound(loc, 'sound/arcade/minesweeper_winfail.ogg', 10, 0, extrarange = -3, falloff = 10)
- say("You cleared the board of all mines, but you picked too small of a board! Try again with at least a 9x9 board!")
- else
- playsound(loc, 'sound/arcade/minesweeper_win.ogg', 10, 0, extrarange = -3, falloff = 10)
- say("You cleared the board of all mines! Congratulations!")
- if(CHECK_BITFIELD(obj_flags, EMAGGED))
- var/itemname
- switch(rand(1,3))
- if(1)
- itemname = "a syndicate bomb beacon"
- new /obj/item/sbeacondrop/bomb(loc)
- if(2)
- itemname = "a rocket launcher"
- new /obj/item/gun/ballistic/rocketlauncher(loc)
- new /obj/item/ammo_casing/caseless/rocket(loc)
- new /obj/item/ammo_casing/caseless/rocket(loc)
- new /obj/item/ammo_casing/caseless/rocket(loc)
- if(3)
- itemname = "two bags of c4"
- new /obj/item/storage/backpack/duffelbag/syndie/c4(loc)
- new /obj/item/storage/backpack/duffelbag/syndie/x4(loc)
- message_admins("[key_name_admin(user)] won emagged Minesweeper and got [itemname]!")
- visible_message("[src] dispenses [itemname]! ", "You hear a chime and a clunk. ")
- DISABLE_BITFIELD(obj_flags, EMAGGED)
- else
- var/dope_prizes = (area >= 480) ? list(ARCADE_WEIGHT_RARE) : (area >= 256) ? list(ARCADE_WEIGHT_RARE, ARCADE_WEIGHT_TRICK) : null
- prizevend(user, dope_prizes)
-
- if(game_status == MINESWEEPER_GAME_WON)
- web += "[(rows < 10 || columns < 10) ? "You won, but your board was too small! Pick a bigger board next time!" : "Congratulations, you have won!"]Want to play again?Easy (9x9 board, 10 mines) Intermediate (16x16 board, 40 mines) Hard (16x30 board, 99 mines) Custom Play on the same board Return to Main Menu "
-
- if(game_status == MINESWEEPER_GAME_LOST)
- web += "You have lost!Try again?Easy (9x9 board, 10 mines) Intermediate (16x16 board, 40 mines) Hard (16x30 board, 99 mines) Custom Play on the same board Return to Main Menu "
-
- if(game_status == MINESWEEPER_GAME_PLAYING)
- web += "Return to Main Menu "
- web += ""
-
- web += " "
- var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/simple/minesweeper)
- saved_web = sheet.css_tag()
- saved_web += web
- updateDialog()
- return
-
-/obj/machinery/computer/arcade/minesweeper/emag_act(mob/user)
- . = ..()
- if(CHECK_BITFIELD(obj_flags, EMAGGED))
- return
- desc = "An arcade machine that generates grids. It's clunking and sparking everywhere, almost as if threatening to explode at any moment!"
- do_sparks(5, 1, src)
- randomnumber = rand(1,255)
- randomcolour = rgb(randomnumber,randomnumber/2,randomnumber/3)
- ENABLE_BITFIELD(obj_flags, EMAGGED)
- if(game_status == MINESWEEPER_GAME_MAIN_MENU)
- to_chat(user, "
An ominous tune plays from the arcade's speakers! ")
- playsound(user, 'sound/arcade/minesweeper_emag1.ogg', 10, 0, extrarange = 3, falloff = 10)
- else //Can't let you do that, star fox!
- to_chat(user, "
The machine buzzes and sparks... the game has been reset! ")
- playsound(user, 'sound/machines/buzz-sigh.ogg', 10, 0, extrarange = 3, falloff = 10) //Loud buzz
- game_status = MINESWEEPER_GAME_MAIN_MENU
- return TRUE
-
-/obj/machinery/computer/arcade/minesweeper/proc/custom_generation(mob/user)
- playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 10, 0, extrarange = -3, falloff = 10) //Entered into the menu so ping sound
- var/new_rows = input(user, "How many rows do you want? (Minimum: 4, Maximum: 30)", "Minesweeper Rows") as null|num
- if(!new_rows || !user.canUseTopic(src, !hasSiliconAccessInArea(user)))
- return FALSE
- new_rows = clamp(new_rows + 1, 4, 30)
- playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 10, 0, extrarange = -3, falloff = 10)
- var/new_columns = input(user, "How many columns do you want? (Minimum: 4, Maximum: 50)", "Minesweeper Squares") as null|num
- if(!new_columns || !user.canUseTopic(src, !hasSiliconAccessInArea(user)))
- return FALSE
- new_columns = clamp(new_columns + 1, 4, 50)
- playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 10, 0, extrarange = -3, falloff = 10)
- var/grid_area = (new_rows - 1) * (new_columns - 1)
- var/lower_limit = round(grid_area*0.156)
- var/upper_limit = round(grid_area*0.85)
- var/new_mine_limit = input(user, "How many mines do you want? (Minimum: [lower_limit], Maximum: [upper_limit])", "Minesweeper Mines") as null|num
- if(!new_mine_limit || !user.canUseTopic(src, !hasSiliconAccessInArea(user)))
- return FALSE
- playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 10, 0, extrarange = -3, falloff = 10)
- rows = new_rows
- columns = new_columns
- mine_limit = clamp(new_mine_limit, lower_limit, upper_limit)
- return TRUE
-
-/obj/machinery/computer/arcade/minesweeper/proc/make_mines(reset_everything)
- if(mine_placed < mine_limit)
- for(var/y1=1;y1
0 && x3 > 0)
- y2 = y3
- x2 = x3
- if(table[y2][x2] == 1)
- for(y3=y2-1;y3= rows || y3 < 1)
- continue
- for(x3=x2-1;x3= columns || x3 < 1)
- continue
- if(table[y3][x3] == 0)
- table[y2][x2] += 1
- if(table[y2][x2] == 11)
- for(y3=y2-1;y3= rows || y3 < 1)
- continue
- for(x3=x2-1;x3= columns || x3 < 1)
- continue
- if(table[y3][x3] > 0 && table[y3][x3] < 10)
- table[y3][x3] += 10
- work_squares(y3, x3) //Refresh so we check everything we might be missing
-
-/obj/machinery/computer/arcade/minesweeper/proc/explode_EVERYTHING()
- var/mob/living/user = usr
- to_chat(user, "You feel a great sense of dread wash over you, as if you just unleashed armageddon upon yourself! ")
- var/row_limit = rows-1
- var/column_limit = columns-1
- var/mine_limit_v2 = mine_limit
- if(rows > 21)
- row_limit = 20
- if(columns > 21)
- column_limit = 20
- if(mine_limit > (rows*columns) * 0.25)
- mine_limit_v2 = 24
- message_admins("[key_name_admin(user)] failed an emagged Minesweeper arcade and has unleashed an explosion armageddon of size [row_limit],[column_limit] around [ADMIN_LOOKUPFLW(user.loc)]!")
- if(mine_limit_v2 < 10)
- explosion(loc, 2, 5, 10, 15) //Thought you could survive by putting as few mines as possible, huh??
- else
- explosion(loc, 1, 3, rand(1,5), rand(1,10))
- var/list/targets = list()
- var/cur_y = y - round(row_limit * 0.5, 1)
- var/starting_row = 1
- if(cur_y < 1)
- starting_row -= cur_y - 1
- cur_y = 1
- var/start_x = x - round(column_limit * 0.5, 1)
- var/starting_column = 1
- if(start_x < 1)
- starting_column -= start_x - 1
- start_x = 1
- for(var/row in starting_row to length(table)) //translate the mines locations into actual turf coordinates.
- if(!locate(cur_y, start_x, z))
- break
- var/cur_x = start_x
- for(var/column in starting_column to length(table[row]))
- var/coord_value = table[row][column]
- if(coord_value == 10 || coord_value == 0) //there is a mine in here.
- var/turf/T = locate(cur_y, cur_x, z)
- if(!T)
- break
- targets += T
- cur_x++
- cur_y++
- var/num_explosions = 0
- for(var/T in shuffle(targets)) //Create a shitton of explosions in irl turfs if we lose, it will probably kill us
- addtimer(CALLBACK(GLOBAL_PROC, /proc/explosion, T, 0, rand(1,2),rand(1,5),rand(3,10), FALSE), 15 * ++num_explosions)
- if(num_explosions == mine_limit_v2)
- return
-
-#undef MINESWEEPERIMG
-#undef MINESWEEPER_GAME_MAIN_MENU
-#undef MINESWEEPER_GAME_PLAYING
-#undef MINESWEEPER_GAME_LOST
-#undef MINESWEEPER_GAME_WON
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index d3b9725a6b..034f684939 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -1383,7 +1383,7 @@
log_combat(user, src, message)
//add_hiddenprint(user)
-/obj/machinery/door/airlock/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
+/obj/machinery/door/airlock/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0)
. = ..()
if(obj_integrity < (0.75 * max_integrity))
update_icon()
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 7748d14e41..48ccf325f6 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -231,7 +231,7 @@
return 0
. = ..()
-/obj/machinery/door/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
+/obj/machinery/door/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0)
. = ..()
if(. && obj_integrity > 0)
if(damage_amount >= 10 && prob(30))
diff --git a/code/game/machinery/doors/unpowered.dm b/code/game/machinery/doors/unpowered.dm
index f00b214b46..37c494d2b9 100644
--- a/code/game/machinery/doors/unpowered.dm
+++ b/code/game/machinery/doors/unpowered.dm
@@ -55,6 +55,11 @@
name = "Legion Castrum"
req_access_txt = "123"
+//khoor
+/obj/machinery/door/unpowered/securedoor/khandoor
+ name = "khan door"
+ req_access_txt = "125"
+
// ------------------------------------
// NCR SECURE REINFORCED DOOR - tough airlock replacement
diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm
index ab9c6c1bfd..4bb7c37874 100644
--- a/code/game/objects/effects/landmarks.dm
+++ b/code/game/objects/effects/landmarks.dm
@@ -598,8 +598,8 @@ obj/effect/landmark/start/f13/ncrlogisticsofficer
/obj/effect/landmark/start/f13/orator
name = "Legion Orator"
-/obj/effect/landmark/start/f13/slavemaster
- name = "Legion Slavemaster"
+/obj/effect/landmark/start/f13/immune
+ name = "Legion Immune"
/obj/effect/landmark/start/f13/priestess
name = "Priestess of Mars"
@@ -742,11 +742,10 @@ obj/effect/landmark/start/f13/ncrlogisticsofficer
icon_state = "Lawyer"
/obj/effect/landmark/start/f13/sheriff
- name = "Sheriff"
- icon_state = "Sheriff"
+ name = "Chief"
/obj/effect/landmark/start/f13/deputy
- name = "Deputy"
+ name = "Officer"
/obj/effect/landmark/start/f13/farmer
name = "Farmer"
@@ -852,7 +851,7 @@ obj/effect/landmark/start/f13/ncrlogisticsofficer
icon_state = "Tribal"
/obj/effect/landmark/start/f13/chief
- name = "Chief"
+ name = "Tribal Chief"
icon_state = "Tribal"
/obj/effect/landmark/start/f13/shaman
diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
index 3b76e8d0fd..2987b9b6f9 100644
--- a/code/game/objects/effects/mines.dm
+++ b/code/game/objects/effects/mines.dm
@@ -29,7 +29,7 @@
s.set_up(3, 1, src)
s.start()
mineEffect(victim)
- SEND_SIGNAL(src, COMSIG_MINE_TRIGGERED)
+ SEND_SIGNAL(src, COMSIG_EFFECT_MINE_TRIGGERED)
triggered = 1
qdel(src)
@@ -37,73 +37,6 @@
. = ..()
triggermine()
-/obj/effect/mine/explosive
- name = "explosive mine"
- var/range_devastation = 0
- var/range_heavy = 1
- var/range_light = 2
- var/range_flash = 3
-
-/obj/effect/mine/explosive/mineEffect(mob/victim)
- explosion(loc, range_devastation, range_heavy, range_light, range_flash)
-
-
-/obj/effect/mine/stun
- name = "stun mine"
- var/stun_time = 80
-
-/obj/effect/mine/stun/mineEffect(mob/living/victim)
- if(isliving(victim))
- victim.DefaultCombatKnockdown(stun_time)
-
-/obj/effect/mine/shrapnel
- name = "shrapnel mine"
- var/shrapnel_type = /obj/item/projectile/bullet/shrapnel
- var/shrapnel_magnitude = 3
-
-/obj/effect/mine/shrapnel/mineEffect(mob/victim)
- AddComponent(/datum/component/pellet_cloud, projectile_type=shrapnel_type, magnitude=shrapnel_magnitude)
- explosion(loc, 0, 0, 2, 2)
-
-/obj/effect/mine/shrapnel/sting
- name = "stinger mine"
- shrapnel_type = /obj/item/projectile/bullet/pellet/stingball
-
-/obj/effect/mine/kickmine
- name = "kick mine"
-
-/obj/effect/mine/kickmine/mineEffect(mob/victim)
- if(isliving(victim) && victim.client)
- to_chat(victim, "You have been kicked FOR NO REISIN! ")
- qdel(victim.client)
-
-
-/obj/effect/mine/gas
- name = "oxygen mine"
- var/gas_amount = 360
- var/gas_type = "o2"
-
-/obj/effect/mine/gas/mineEffect(mob/victim)
- atmos_spawn_air("[gas_type]=[gas_amount]")
-
-
-/obj/effect/mine/gas/plasma
- name = "plasma mine"
- gas_type = "plasma"
-
-
-/obj/effect/mine/gas/n2o
- name = "\improper N2O mine"
- gas_type = "n2o"
-
-/* Some error
-/obj/effect/mine/sound/mineEffect(mob/victim)
- playsound(loc, sound, 100, 1)
-
-/obj/effect/mine/sound/bwoink
- name = "bwoink mine"
- sound = 'sound/effects/adminhelp.ogg'
-*/
/obj/effect/mine/pickup
name = "pickup"
desc = "pick me up"
diff --git a/code/game/objects/effects/spawners/f13lootdrop.dm b/code/game/objects/effects/spawners/f13lootdrop.dm
index 3805260759..61781f3d20 100644
--- a/code/game/objects/effects/spawners/f13lootdrop.dm
+++ b/code/game/objects/effects/spawners/f13lootdrop.dm
@@ -225,7 +225,7 @@
name = "tier 1 armor"
loot = list(
/obj/item/clothing/suit/armor/f13/leather_jacket,
- /obj/item/clothing/suit/armor/f13/kit,
+ /obj/item/clothing/suit/armor/f13/leatherarmor,
/obj/effect/spawner/bundle/f13/armor/supafly,
/obj/effect/spawner/bundle/f13/armor/sadist,
/obj/effect/spawner/bundle/f13/armor/blastmaster,
@@ -234,7 +234,8 @@
/obj/effect/spawner/bundle/f13/armor/psycho,
/obj/item/clothing/suit/f13/duster,
/obj/effect/spawner/bundle/f13/armor/combatduster,
- /obj/item/clothing/suit/armor/f13/raider/iconoclast
+ /obj/item/clothing/suit/armor/f13/raider/iconoclast,
+ /obj/item/clothing/suit/armor/f13/plates,
)
/obj/effect/spawner/bundle/f13/armor/supafly
@@ -291,9 +292,11 @@
loot = list(
/obj/effect/spawner/bundle/f13/armor/knight,
/obj/effect/spawner/bundle/f13/armor/metal,
- /obj/item/clothing/suit/armor/f13/leatherarmor,
+ /obj/effect/spawner/bundle/f13/armor/laserproofmetal,
/obj/item/clothing/suit/armor/f13/leather_jacket/combat,
- /obj/item/clothing/suit/armor/f13/leather_jacket/combat/coat
+ /obj/item/clothing/suit/armor/f13/leather_jacket/combat/coat,
+ /obj/item/clothing/suit/armor/vest,
+ /obj/item/clothing/suit/armor/vest/alt,
)
/obj/effect/spawner/bundle/f13/armor/knight
@@ -310,6 +313,14 @@
/obj/item/clothing/head/helmet/f13/metalmask
)
+/obj/effect/spawner/bundle/f13/armor/laserproofmetal
+ name = "polsihed metal armor spawner"
+ items = list(
+ /obj/item/clothing/suit/armor/f13/metalarmor/laserproof,
+ /obj/item/clothing/head/helmet/f13/metalmask
+ )
+
+
/obj/effect/spawner/lootdrop/f13/armor/tier3 //TIER 3 ARMOR
name = "tier 3 armor"
loot = list(
@@ -318,7 +329,8 @@
/obj/effect/spawner/bundle/f13/armor/combat,
/obj/effect/spawner/bundle/f13/armor/bulletproof,
/obj/effect/spawner/bundle/f13/armor/combat/dark,
- /obj/effect/spawner/bundle/f13/armor/sulphite
+ /obj/effect/spawner/bundle/f13/armor/sulphite,
+ /obj/effect/spawner/bundle/f13/armor/vault,
)
/obj/effect/spawner/bundle/f13/armor/metal/reinforced
@@ -354,6 +366,7 @@
/obj/item/clothing/head/helmet/f13/combat/dark
)
+
/obj/effect/spawner/bundle/f13/armor/sulphite
name = "sulphite raider armor spawner"
items = list(
@@ -384,6 +397,13 @@
/obj/item/clothing/head/helmet/f13/rangerbroken
)
+/obj/effect/spawner/bundle/f13/armor/vault
+ name = "vault armor spawner"
+ items = list(
+ /obj/item/clothing/suit/armor/vest/big,
+ /obj/item/clothing/head/helmet/riot/vaultsec,
+ )
+
/obj/effect/spawner/bundle/f13/armor/combat/mk2
name = "MkII combat armor spawner"
items = list(
@@ -542,6 +562,44 @@
/obj/item/reagent_containers/hypospray/medipen/medx,
/obj/item/storage/pill_bottle/chem_tin/buffout
)
+
+
+obj/effect/spawner/lootdrop/f13/medical/rnd/mid
+ name = "mid dungeon science loot" //to replace guns as treasure in slightly protected areas
+ lootcount = 1
+
+ loot = list(
+ /obj/item/screwdriver/power,
+ /obj/item/wrench/power,
+ /obj/item/storage/box/medicine/stimpaks/stimpaks5,
+ /obj/item/stack/sheet/prewar/twenty,
+ /obj/item/stack/sheet/plastic/twenty,
+ /obj/item/defibrillator/primitive,
+ /obj/item/reagent_containers/syringe/bluespace,
+ )
+
+
+obj/effect/spawner/lootdrop/f13/medical/rnd/good
+ name = "good dungeon science loot" //to replace guns as treasure in heavily guarded areas
+ lootcount = 1
+
+ loot = list(
+ /obj/item/reagent_containers/glass/beaker/meta = 5,
+ /obj/item/stack/sheet/mineral/abductor/ten = 5,
+ /obj/item/scalpel/advanced = 5,
+ /obj/item/surgical_drapes/advanced = 5,
+ /obj/effect/spawner/bundle/f13/needler = 5,
+ /obj/item/clothing/glasses/night = 5,
+ /obj/item/circuitboard/machine/chem_dispenser/apothecary = 5,
+ /obj/item/storage/box/stockparts/deluxe = 5,
+ /obj/item/storage/box/emps = 5,
+ /obj/item/organ/cyberimp/arm/janitor = 5,
+ /obj/item/reagent_containers/glass/bottle/fentanyl = 5,
+ /obj/item/reagent_containers/glass/bottle/frostoil = 5,
+ /obj/item/book/granter/trait/midsurgery = 5,
+ /obj/item/reagent_containers/glass/bottle/FEV_solution = 1,
+ )
+
/* ------------------------------------------------
--------------WEAPON SPAWNERS-------------------
------------------------------------------------ */
@@ -570,15 +628,20 @@
/obj/effect/spawner/lootdrop/f13/weapon/melee/tier1 //TIER 1 MELEE WEAPON
name = "tier 1 melee"
lootcount = 1
-
- loot = list(
- /obj/item/crowbar,
+ loot = list(/obj/item/crowbar,
/obj/item/extinguisher,
/obj/item/hatchet,
/obj/item/pickaxe/mini,
/obj/item/wrench,
/obj/item/kitchen/knife,
/obj/item/kitchen/rollingpin,
+ /obj/item/weldingtool,
+ /obj/item/gavelhammer,
+ /obj/item/oar,
+ /obj/item/pickaxe,
+ /obj/item/shovel,
+ /obj/item/instrument/guitar,
+ /obj/item/surgicaldrill
)
@@ -586,50 +649,40 @@
name = "tier 2 melee"
lootcount = 1
- loot = list(
- /obj/effect/spawner/bundle/f13/throwingknife3,
- /obj/item/gavelhammer,
- /obj/item/oar,
- /obj/item/pickaxe,
- /obj/item/shovel,
+ loot = list(/obj/effect/spawner/bundle/f13/throwingknife3,
/obj/item/melee/onehanded/knife/switchblade,
/obj/item/throwing_star/spear,
- /obj/item/surgicaldrill,
/obj/item/melee/onehanded/knife/hunting,
/obj/item/melee/onehanded/knife/survival,
/obj/item/melee/onehanded/knife/bone,
- /obj/item/instrument/guitar,
/obj/item/twohanded/spear/scrapspear,
/obj/item/melee/onehanded/club,
/obj/item/melee/onehanded/knife/cosmicdirty,
+ /obj/item/melee/onehanded/machete,
/obj/item/melee/unarmed/brass,
- /obj/item/melee/unarmed/brass/spiked,
+ /obj/item/melee/unarmed/brass/spiked
)
/obj/effect/spawner/lootdrop/f13/weapon/melee/tier3 //TIER 3 MELEE WEAPON
name = "tier 3 melee"
lootcount = 1
- loot = list(
- /obj/effect/spawner/bundle/f13/throwingknife3,
- /obj/item/weldingtool,
+ loot = list(/obj/effect/spawner/bundle/f13/throwingknife3,
/obj/item/twohanded/spear,
/obj/item/twohanded/baseball,
/obj/item/kitchen/knife/butcher,
/obj/item/twohanded/baseball/golfclub,
- /obj/item/melee/onehanded/machete,
/obj/item/melee/onehanded/machete/forgedmachete,
/obj/item/shield/riot/buckler,
/obj/item/melee/unarmed/tigerclaw,
- /obj/item/melee/unarmed/sappers,
+ /obj/item/melee/unarmed/sappers
)
/obj/effect/spawner/lootdrop/f13/weapon/melee/tier4 //TIER 4 MELEE WEAPON
name = "tier 4 melee"
lootcount = 1
- loot = list(
- /obj/item/twohanded/fireaxe,
+ loot = list(/obj/item/twohanded/fireaxe,
/obj/item/twohanded/sledgehammer,
/obj/item/twohanded/fireaxe/bmprsword,
/obj/item/melee/unarmed/lacerator,
@@ -637,25 +690,23 @@
/obj/item/melee/unarmed/punchdagger,
/obj/item/twohanded/baseball/louisville,
/obj/item/shield/riot,
- /obj/effect/spawner/bundle/f13/throwingknife3
)
/obj/effect/spawner/lootdrop/f13/weapon/melee/tier5 //TIER 5 MELEE WEAPON
name = "tier 5 melee"
lootcount = 1
- loot = list(
- /obj/item/twohanded/thermic_lance,
+ loot = list(/obj/item/twohanded/thermic_lance,
/obj/item/twohanded/chainsaw,
/obj/item/twohanded/sledgehammer/rockethammer,
/obj/item/melee/powered/ripper,
- /obj/item/melee/powerfist/f13,
+ /obj/item/melee/unarmed/powerfist,
/obj/item/melee/transforming/energy/axe/protonaxe,
/obj/item/gun/ballistic/revolver/ballisticfist,
/obj/item/twohanded/sledgehammer/supersledge,
/obj/item/shishkebabpack,
/obj/item/melee/unarmed/deathclawgauntlet,
- /obj/item/melee/powerfist/f13/moleminer
+ /obj/item/melee/unarmed/powerfist/moleminer
)
/obj/effect/spawner/lootdrop/f13/weapon/melee/random
@@ -669,14 +720,18 @@
/obj/effect/spawner/lootdrop/f13/weapon/melee/tier4 = 10
)
+/obj/effect/spawner/lootdrop/f13/weapon/melee/random_mid
+ name = "mid tier random melee loot"
+ loot = list(
+ /obj/effect/spawner/lootdrop/f13/weapon/melee/tier3 = 20,
+ /obj/effect/spawner/lootdrop/f13/weapon/melee/tier4 = 10
+ )
+
/obj/effect/spawner/lootdrop/f13/weapon/melee/random_high
name = "high tier random melee loot"
lootcount = 1
-
- loot = list(
- /obj/effect/spawner/lootdrop/f13/weapon/melee/tier3 = 45,
- /obj/effect/spawner/lootdrop/f13/weapon/melee/tier4 = 35,
- /obj/effect/spawner/lootdrop/f13/weapon/melee/tier5 = 20
+ loot = list(/obj/effect/spawner/lootdrop/f13/weapon/melee/tier4 = 2,
+ /obj/effect/spawner/lootdrop/f13/weapon/melee/tier5 = 1
)
/* ------------------------------------------------
@@ -705,6 +760,13 @@
/obj/effect/spawner/bundle/f13/ionrifle = 5
)
+/obj/effect/spawner/lootdrop/f13/weapon/gun/energy/midhigh //overlaps with midtier
+ name = "mid-high tier energy gun"
+ loot = list(/obj/effect/spawner/bundle/f13/aer12,
+ /obj/effect/spawner/bundle/f13/wattz2kext,
+ /obj/effect/spawner/bundle/f13/plasmapistol,
+ /obj/effect/spawner/bundle/f13/ionrifle
+ )
/obj/effect/spawner/lootdrop/f13/weapon/gun/energy/high
name = "high tier energy gun"
loot = list(/obj/effect/spawner/bundle/f13/plasmarifle = 25,
@@ -730,85 +792,93 @@
//Ballistic Weapon Spawners
/obj/effect/spawner/lootdrop/f13/weapon/gun/ballistic/hobo
name = "hobo tier ballistic gun"
- loot = list(/obj/effect/spawner/bundle/f13/piperifle,
+ loot = list(/obj/effect/spawner/bundle/f13/pepperbox,
/obj/effect/spawner/bundle/weapon/piperifle,
/obj/effect/spawner/bundle/f13/zipgun,
/obj/item/gun/ballistic/revolver/hobo/knifegun,
/obj/item/gun/ballistic/revolver/hobo/knucklegun,
/obj/effect/spawner/bundle/f13/autopipe,
+ /obj/effect/spawner/bundle/f13/pistol22,
+ /obj/item/gun/ballistic/revolver/winchesterrebored
+ )
+
+/obj/effect/spawner/lootdrop/f13/weapon/gun/ballistic/superlow
+ name = "very low tier non-hobo ballistic gun"
+ loot = list(/obj/effect/spawner/bundle/f13/ninemil,
+ /obj/effect/spawner/bundle/f13/sig,
/obj/effect/spawner/bundle/f13/caravan_shotgun,
/obj/effect/spawner/bundle/f13/mosin,
/obj/effect/spawner/bundle/f13/remington,
- /obj/item/gun/ballistic/revolver/winchesterrebored,
/obj/effect/spawner/bundle/f13/widowmaker,
/obj/effect/spawner/bundle/f13/varmint
)
+
/obj/effect/spawner/lootdrop/f13/weapon/gun/ballistic/low
name = "low tier ballistic gun"
loot = list(/obj/effect/spawner/bundle/f13/m1911,
- /obj/effect/spawner/bundle/f13/m1911c,
- /obj/effect/spawner/bundle/f13/ninemil,
+ /obj/effect/spawner/bundle/f13/thatgun,
/obj/effect/spawner/bundle/f13/n99,
- /obj/effect/spawner/bundle/f13/pistol22,
- /obj/effect/spawner/bundle/f13/colt6520,
/obj/effect/spawner/bundle/f13/colt357,
- /obj/effect/spawner/bundle/f13/beretta,
- /obj/effect/spawner/bundle/f13/mk23,
- /obj/effect/spawner/bundle/f13/sig,
/obj/effect/spawner/bundle/f13/huntingshotgun,
/obj/effect/spawner/bundle/f13/police_pistol,
/obj/effect/spawner/bundle/f13/guns/commando,
/obj/effect/spawner/bundle/f13/m1carbine
)
+/obj/effect/spawner/lootdrop/f13/weapon/gun/ballistic/lowmid
+ name = "low-mid tier ballistic gun"
+ loot = list(/obj/effect/spawner/bundle/f13/n99,
+ /obj/effect/spawner/bundle/f13/cowboy,
+ /obj/effect/spawner/bundle/f13/mk23,
+ /obj/effect/spawner/bundle/f13/hunting,
+ /obj/effect/spawner/lootdrop/f13/weapon/revolver44variants,
+ /obj/effect/spawner/bundle/f13/trenchshotgun,
+ /obj/effect/spawner/bundle/f13/m1carbine,
+ /obj/effect/spawner/bundle/f13/huntingshotgun,
+ /obj/effect/spawner/bundle/f13/revolver45
+ )
+
/obj/effect/spawner/lootdrop/f13/weapon/gun/ballistic/mid
name = "mid tier ballistic gun"
loot = list(/obj/effect/spawner/bundle/f13/trail,
- /obj/effect/spawner/bundle/f13/cowboy,
/obj/effect/spawner/bundle/f13/service,
/obj/effect/spawner/bundle/f13/miniuzi,
- /obj/effect/spawner/bundle/f13/smg10mm,
- /obj/effect/spawner/bundle/f13/guns/rockwell,
- /obj/effect/spawner/bundle/f13/mp5,
- /obj/effect/spawner/bundle/f13/revolver44,
- /obj/effect/spawner/bundle/f13/revolverm29,
- /obj/effect/spawner/bundle/f13/revolverm29alt,
- /obj/effect/spawner/bundle/f13/needler,
- /obj/effect/spawner/bundle/f13/deagle,
- /obj/effect/spawner/bundle/f13/automag,
- /obj/effect/spawner/bundle/f13/beretta/select,
- /obj/effect/spawner/bundle/f13/shotgunlever,
/obj/effect/spawner/bundle/f13/auto5,
- /obj/effect/spawner/bundle/f13/trenchshotgun,
- /obj/effect/spawner/bundle/f13/revolver45,
- /obj/effect/spawner/bundle/f13/thatgun,
/obj/effect/spawner/bundle/f13/marksman,
- /obj/effect/spawner/bundle/f13/hunting,
/obj/effect/spawner/bundle/f13/m1garand,
+ /obj/effect/spawner/bundle/f13/deagle,
+ /obj/effect/spawner/bundle/f13/automag,
/obj/item/gun/ballistic/automatic/smg/american180
)
+/obj/effect/spawner/lootdrop/f13/weapon/gun/ballistic/highmid
+ name = "high-mid tier ballistic gun"
+ loot = list(/obj/effect/spawner/bundle/f13/mp5,
+ /obj/effect/spawner/bundle/f13/smg10mm,
+ /obj/effect/spawner/bundle/f13/needler,
+ /obj/effect/spawner/bundle/f13/marksman,
+ /obj/effect/spawner/bundle/f13/guns/tommygun,
+ /obj/effect/spawner/bundle/f13/shotgunlever
+ )
+
/obj/effect/spawner/lootdrop/f13/weapon/gun/ballistic/high
name = "high tier ballistic gun"
loot = list(/obj/effect/spawner/bundle/f13/assault_rifle = 20,
/obj/effect/spawner/bundle/f13/r84 = 10,
/obj/effect/spawner/bundle/f13/dkssniper = 15,
- /obj/effect/spawner/bundle/f13/guns/tommygun = 15,
/obj/effect/spawner/bundle/f13/pistol14 = 15,
/obj/item/gun/ballistic/revolver/grenadelauncher = 5,
+ /obj/item/gun/ballistic/rocketlauncher = 5
)
/obj/effect/spawner/lootdrop/f13/weapon/gun/ballistic/superhigh
name = "superhigh tier ballistic gun"
- loot = list(/obj/effect/spawner/bundle/f13/citykiller = 12,
- /obj/effect/spawner/bundle/f13/riotshotgun = 13,
- /obj/effect/spawner/bundle/f13/bozar = 6,
+ loot = list(/obj/effect/spawner/bundle/f13/riotshotgun = 5,
/obj/effect/spawner/bundle/f13/amr = 10,
/obj/effect/spawner/bundle/f13/brushgun = 15,
- /obj/effect/spawner/bundle/f13/rangemaster = 18,
- /obj/effect/spawner/bundle/f13/gauss = 10,
- /obj/effect/spawner/bundle/f13/fnfal = 6,
+ /obj/effect/spawner/bundle/f13/rangemaster = 15,
+ /obj/effect/spawner/bundle/f13/fnfal = 5,
/obj/item/gun/ballistic/rocketlauncher = 10,
)
@@ -827,6 +897,19 @@
/obj/item/gun/ballistic/automatic/pistol/pistol14/lildevil
)
+
+//Random-pick pools so that regular spawners aren't super diluted with shit like 3 .44 revolver variants
+
+/obj/effect/spawner/lootdrop/f13/weapon/revolver44variants
+ name = "random spawner for .44 revolvers/variants"
+ loot = list(/obj/effect/spawner/bundle/f13/revolverm29,
+ /obj/effect/spawner/bundle/f13/revolverm29alt,
+ /obj/effect/spawner/bundle/f13/revolver44,
+ /obj/effect/spawner/bundle/f13/revolverm29snub
+ )
+
+
+
//Gun Bundles
/obj/effect/spawner/bundle/f13/zipgun
name = "zip gun spawner"
@@ -881,14 +964,7 @@
name = "9mm pistol and ammo spawner"
items = list(
/obj/item/gun/ballistic/automatic/pistol/ninemil,
- /obj/item/ammo_box/magazine/m9mm
- )
-
-/obj/effect/spawner/bundle/f13/colt6520
- name = "Colt 6520 and ammo spawner"
- items = list(
- /obj/item/gun/ballistic/revolver/colt6520,
- /obj/item/ammo_box/l10mm
+ /obj/item/ammo_box/magazine/m9mmds
)
/obj/effect/spawner/bundle/f13/varmint
@@ -905,13 +981,6 @@
/obj/item/ammo_box/magazine/m22
)
-/obj/effect/spawner/bundle/f13/m1911c
- name = "compact m1911 and ammo spawner"
- items = list(
- /obj/item/gun/ballistic/automatic/pistol/m1911/compact,
- /obj/item/ammo_box/magazine/m45/
- )
-
/obj/effect/spawner/bundle/f13/beretta
name = "beretta pistol and ammo spawner"
items = list(
@@ -926,7 +995,7 @@
/obj/item/ammo_box/magazine/m9mm/
)
-/obj/effect/spawner/bundle/f13/piperifle
+/obj/effect/spawner/bundle/f13/pepperbox
name = "pepperbox gun spawner"
items = list(
/obj/item/gun/ballistic/revolver/hobo/pepperbox,
@@ -961,6 +1030,14 @@
/obj/item/ammo_box/m44
)
+/obj/effect/spawner/bundle/f13/revolverm29snub
+ name = "m29 snub-nose revolver and ammo spawner"
+ items = list(
+ /obj/item/gun/ballistic/revolver/m29/snub,
+ /obj/item/ammo_box/m44/
+ )
+
+
/obj/effect/spawner/bundle/f13/automag
name = "automag and ammo spawner"
items = list(
@@ -1058,13 +1135,6 @@
/obj/item/ammo_box/magazine/uzim9mm/
)
-/obj/effect/spawner/bundle/f13/guns/rockwell
- name = "rockwell gun and ammo spawner"
- items = list(
- /obj/item/gun/ballistic/automatic/smg/rockwell,
- /obj/item/ammo_box/magazine/uzim9mm/rockwell/
- )
-
/obj/effect/spawner/bundle/f13/smg10mm
name = "10mm SMG and ammo spawner"
items = list(
@@ -1550,7 +1620,8 @@
/obj/item/grenade/plastic/c4,
/obj/item/grenade/empgrenade,
/obj/item/grenade/f13/radiation,
- /obj/item/grenade/f13/frag
+ /obj/item/grenade/f13/frag,
+ /obj/effect/spawner/bundle/f13/grenadelauncher,
)
/obj/effect/spawner/lootdrop/f13/bomb/top_tier
lootcount = 1
@@ -1559,7 +1630,8 @@
/obj/item/grenade/f13/incendiary,
/obj/item/grenade/f13/radiation,
/obj/item/grenade/plastic/x4,
- /obj/item/grenade/stingbang/shred = 1
+ /obj/item/grenade/stingbang/shred = 1,
+ /obj/effect/spawner/bundle/f13/rocketlauncher,
)
@@ -1738,7 +1810,7 @@
/obj/item/stack/crafting/electronicparts/three,
/obj/item/stack/crafting/electronicparts/five,
/obj/item/reagent_containers/glass/bottle/blackpowder,
- /obj/item/crafting/timer,
+ /obj/item/assembly/timer,
/obj/item/crafting/wonderglue,
/obj/item/crafting/duct_tape)
@@ -1928,12 +2000,25 @@
/obj/item/book/granter/trait/pa_wear = 1,
/obj/item/book/granter/trait/explosives = 10,
/obj/item/book/granter/trait/explosives_advanced = 1,
- /obj/item/book/granter/crafting_recipe/gunsmith_one = 29,
+ /obj/item/book/granter/trait/rifleman = 5,
/obj/item/book/granter/crafting_recipe/gunsmith_two = 20,
/obj/item/book/granter/crafting_recipe/gunsmith_three = 10,
/obj/item/book/granter/crafting_recipe/gunsmith_four = 10
)
+/obj/effect/spawner/lootdrop/f13/traitbooks/low
+ name = "low trait book spawner"
+ lootcount = 1
+ loot = list(/obj/item/book/granter/trait/lowsurgery = 5,
+ /obj/item/book/granter/trait/chemistry = 1,
+ /obj/item/book/granter/trait/techno = 10,
+ /obj/item/book/granter/crafting_recipe/scav_one = 10,
+ /obj/item/book/granter/crafting_recipe/scav_two = 10,
+ /obj/item/book/granter/trait/explosives = 10,
+ /obj/item/book/granter/crafting_recipe/ODF = 10,
+ /obj/item/book/granter/action/drink_fling = 10,
+ /obj/item/book/granter/crafting_recipe/gunsmith_one = 10,
+ )
/obj/effect/spawner/lootdrop/f13/blueprintLow
name = "gun comps spawner"
icon_state = "blueprint_loot"
@@ -1969,21 +2054,29 @@
/obj/item/attachments/auto_sear
)
+/obj/effect/spawner/lootdrop/f13/blueprintLowMid
+ name = "blueprint-tier(Mid-Low) item spawner"
+ icon_state = "blueprint_loot"
+ lootcount = 1
+ loot = list(
+ /obj/item/book/granter/crafting_recipe/blueprint/thatgun,
+ /obj/item/book/granter/crafting_recipe/blueprint/uzi,
+ /obj/item/book/granter/crafting_recipe/blueprint/greasegun,
+ /obj/item/book/granter/crafting_recipe/blueprint/commando,
+ /obj/item/book/granter/crafting_recipe/blueprint/m1carbine,
+ )
/obj/effect/spawner/lootdrop/f13/blueprintMid
name = "blueprint-tier(Mid) item spawner"
icon_state = "blueprint_loot"
lootcount = 1
loot = list(
- /obj/item/book/granter/crafting_recipe/blueprint/greasegun,
/obj/item/book/granter/crafting_recipe/blueprint/r82,
/obj/item/book/granter/crafting_recipe/blueprint/service,
/obj/item/book/granter/crafting_recipe/blueprint/trailcarbine,
- /obj/item/book/granter/crafting_recipe/blueprint/thatgun,
- /obj/item/book/granter/crafting_recipe/blueprint/uzi,
/obj/item/book/granter/crafting_recipe/blueprint/smg10mm,
- /obj/item/book/granter/crafting_recipe/blueprint/m1carbine,
+ /obj/item/book/granter/crafting_recipe/blueprint/aep7,
/obj/item/book/granter/crafting_recipe/blueprint/scoutcarbine,
- /obj/item/book/granter/crafting_recipe/blueprint/commando,
+ /obj/item/book/granter/crafting_recipe/blueprint/sniper,
)
/obj/effect/spawner/lootdrop/f13/blueprintHigh
@@ -1993,12 +2086,9 @@
loot = list(
/obj/item/book/granter/crafting_recipe/blueprint/leveraction,
/obj/item/book/granter/crafting_recipe/blueprint/r91,
- /obj/item/book/granter/crafting_recipe/blueprint/sniper,
- /obj/item/book/granter/crafting_recipe/blueprint/riotshotgun,
/obj/item/book/granter/crafting_recipe/blueprint/r84,
/obj/item/book/granter/crafting_recipe/blueprint/deagle,
/obj/item/book/granter/crafting_recipe/blueprint/marksman,
- /obj/item/book/granter/crafting_recipe/blueprint/aep7,
/obj/item/book/granter/crafting_recipe/blueprint/plasmapistol,
/obj/item/book/granter/crafting_recipe/blueprint/brushgun,
)
@@ -2008,8 +2098,8 @@
icon_state = "blueprint_loot"
lootcount = 1
loot = list(
- /obj/item/book/granter/crafting_recipe/blueprint/gauss,
/obj/item/book/granter/crafting_recipe/blueprint/neostead,
+ /obj/item/book/granter/crafting_recipe/blueprint/riotshotgun,
/obj/item/book/granter/crafting_recipe/blueprint/aer9,
)
@@ -2018,6 +2108,7 @@
icon_state = "blueprint_loot"
lootcount = 1
loot = list(
+ /obj/item/book/granter/crafting_recipe/blueprint/gauss,
/obj/item/book/granter/crafting_recipe/blueprint/am_rifle,
/obj/item/book/granter/crafting_recipe/blueprint/citykiller,
/obj/item/book/granter/crafting_recipe/blueprint/rangemaster,
@@ -2030,15 +2121,10 @@
lootcount = 3
lootdoubles = FALSE
loot = list(
- /obj/item/book/granter/crafting_recipe/blueprint/r91 ,
- /obj/item/book/granter/crafting_recipe/blueprint/r84 ,
- /obj/item/book/granter/crafting_recipe/blueprint/gauss = 3,
- /obj/item/book/granter/crafting_recipe/blueprint/neostead = 3,
- /obj/item/book/granter/crafting_recipe/blueprint/aer9 = 3,
+ /obj/item/book/granter/crafting_recipe/blueprint/r91 = 3,
+ /obj/item/book/granter/crafting_recipe/blueprint/r84 = 3,
/obj/item/book/granter/crafting_recipe/blueprint/am_rifle = 3,
- /obj/item/book/granter/crafting_recipe/blueprint/citykiller = 3,
/obj/item/book/granter/crafting_recipe/blueprint/rangemaster = 3,
- /obj/item/book/granter/crafting_recipe/blueprint/bozar = 3,
/obj/item/advanced_crafting_components/flux,
/obj/item/advanced_crafting_components/lenses,
/obj/item/advanced_crafting_components/conductors,
diff --git a/code/game/objects/effects/spawners/themed_loot_tables.dm b/code/game/objects/effects/spawners/themed_loot_tables.dm
index 338d1cb336..7e2c6a5659 100644
--- a/code/game/objects/effects/spawners/themed_loot_tables.dm
+++ b/code/game/objects/effects/spawners/themed_loot_tables.dm
@@ -131,7 +131,6 @@
/obj/item/gun/ballistic/revolver/detective = 20,
/obj/effect/spawner/bundle/f13/n99 = 11,
/obj/effect/spawner/bundle/f13/pistol22 = 10,
- /obj/effect/spawner/bundle/f13/m1911c = 10,
/obj/item/gun/ballistic/revolver/m29/snub = 7,
/obj/effect/spawner/bundle/f13/smg10mm = 5,
/obj/item/gun/energy/laser/wattz = 5,
@@ -153,13 +152,12 @@
/obj/item/gun/ballistic/revolver/hobo/piperifle = 10,
/obj/effect/spawner/bundle/f13/zipgun = 8,
/obj/item/gun/ballistic/revolver/hobo/pepperbox = 8,
- /obj/item/gun/ballistic/revolver/colt6520 = 9,
+ /obj/item/gun/ballistic/automatic/pistol/n99 = 9,
/obj/item/gun/ballistic/rifle/hunting/obrez = 5,
/obj/item/gun/ballistic/revolver/colt357 = 4,
/obj/item/gun/ballistic/revolver/winchesterrebored = 4,
- /obj/item/gun/ballistic/automatic/pistol/m1911/no_mag = 4,
+ /obj/item/gun/ballistic/automatic/pistol/m1911 = 4,
/obj/effect/spawner/bundle/f13/revolverm29 = 4,
- /obj/effect/spawner/bundle/f13/guns/rockwell = 2,
/obj/effect/spawner/bundle/weapon/worn10mmsmg = 1,
/obj/effect/spawner/bundle/weapon/lasmusket = 1,
/obj/item/melee/onehanded/machete = 5,
@@ -322,7 +320,7 @@
/obj/item/gun/energy/laser/plasma/glock = 2,
/obj/item/gun/energy/laser/plasma = 2,
/obj/item/gun/energy/laser/plasma/scatter =1,
- /obj/item/melee/powerfist/f13/moleminer = 10,
+ /obj/item/melee/unarmed/powerfist/moleminer = 10,
/obj/item/melee/transforming/energy/axe/protonaxe = 10,
/obj/item/gun/ballistic/revolver/ballisticfist = 5,
)
@@ -390,7 +388,7 @@
/obj/item/reagent_containers/food/drinks/flask,
/obj/item/reagent_containers/glass/bottle/blackpowder,
/obj/item/stack/cable_coil,
- /obj/item/crafting/timer,
+ /obj/item/assembly/timer,
/obj/item/crafting/coffee_pot,
/obj/item/assembly/igniter,
/obj/item/ammo_box/jerrycan,
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index b58ffecb2c..b52090be8a 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -1112,7 +1112,8 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
jostle_chance = (!isnull(embedding["jostle_chance"]) ? embedding["jostle_chance"] : EMBEDDED_JOSTLE_CHANCE),\
jostle_pain_mult = (!isnull(embedding["jostle_pain_mult"]) ? embedding["jostle_pain_mult"] : EMBEDDED_JOSTLE_PAIN_MULTIPLIER),\
pain_stam_pct = (!isnull(embedding["pain_stam_pct"]) ? embedding["pain_stam_pct"] : EMBEDDED_PAIN_STAM_PCT),\
- embed_chance_turf_mod = (!isnull(embedding["embed_chance_turf_mod"]) ? embedding["embed_chance_turf_mod"] : EMBED_CHANCE_TURF_MOD))
+ embed_chance_turf_mod = (!isnull(embedding["embed_chance_turf_mod"]) ? embedding["embed_chance_turf_mod"] : EMBED_CHANCE_TURF_MOD),\
+ projectile_payload = embedding["projectile_payload"])
return TRUE
/obj/item/proc/get_held_item_speechspans(mob/living/carbon/user)
@@ -1137,4 +1138,3 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
played_sound = pick(equipsound)
playsound(src, played_sound, volume, 1)
-
diff --git a/code/game/objects/items/binoculars.dm b/code/game/objects/items/binoculars.dm
index a0f5cad62c..27d6cf93da 100644
--- a/code/game/objects/items/binoculars.dm
+++ b/code/game/objects/items/binoculars.dm
@@ -42,7 +42,10 @@
src.zoom_out_amt = 19
src.zoom_amt = 10
to_chat(user,"You see the horizon more clearly from this elevation.")
-
+ else if(!is_above_level(T.z))
+ src.zoom_out_amt = 6
+ src.zoom_amt = 10
+
switch(user.dir)
if(NORTH)
_y = zoom_amt
diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index ebcf78d32b..c7abb6d35e 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -893,7 +893,7 @@
/obj/item/card/id/dogtag/deputy
- name = "deputy's badge"
+ name = "officer's badge"
desc = "A silver badge which shows honour and dedication."
assignment = "badge"
assignment = "Deputy"
@@ -903,7 +903,7 @@
/obj/item/card/id/dogtag/deputy/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/card/id/dogtag/sheriff))
- var/newname = stripped_input(user, "Who do you want to designate as your deputy?", , "", MAX_NAME_LEN)
+ var/newname = stripped_input(user, "Who do you want to designate as your officer?", , "", MAX_NAME_LEN)
if(newname)
to_chat(user, "You scribble the [registered_name] for the name on the badge.")
registered_name = newname
@@ -911,8 +911,8 @@
return ..()
/obj/item/card/id/dogtag/sheriff
- name = "sheriff's badge"
- desc = "A golden Sheriff's badge."
+ name = "chief's badge"
+ desc = "A golden Chief's badge."
assignment = "badge"
icon_state = "sheriff"
item_state = "badge-sheriff"
@@ -1051,12 +1051,12 @@
item_state = "card-id_leg"
assignment = "prime medallion"
-/obj/item/card/id/dogtag/legslavemaster
- name = "slavemaster medallion"
- desc = "A marked silver disc stamped with the Legion's Bull insignia and a whip. Worn by legionnaires on camp duty."
+/obj/item/card/id/dogtag/legimmune
+ name = "immune medallion"
+ desc = "A marked silver disc stamped with the Legion's Bull insignia. Worn by legionnaires on camp duty."
icon_state = "legionmedallionprime"
item_state = "card-id_leg"
- assignment = "slavemaster medallion"
+ assignment = "immune medallion"
/obj/item/card/id/dogtag/legveteran
name = "veteran medallion"
diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm
index dc9e6a5900..019ab34d99 100644
--- a/code/game/objects/items/circuitboards/computer_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm
@@ -136,10 +136,6 @@
name = "Orion Trail (Computer Board)"
build_path = /obj/machinery/computer/arcade/orion_trail
-/obj/item/circuitboard/computer/arcade/minesweeper
- name = "Minesweeper (Computer Board)"
- build_path = /obj/machinery/computer/arcade/minesweeper
-
/obj/item/circuitboard/computer/arcade/amputation
name = "Mediborg's Amputation Adventure (Computer Board)"
build_path = /obj/machinery/computer/arcade/amputation
diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm
index 404841715c..8dd05be624 100644
--- a/code/game/objects/items/circuitboards/machine_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm
@@ -50,6 +50,10 @@
/obj/item/circuitboard/machine/autolathe/secure
name = "Secure Autolathe (Machine Board)"
build_path = /obj/machinery/autolathe/secure
+
+/obj/item/circuitboard/machine/autolathe/basic
+ name = "Makeshift Workshop"
+ build_path = /obj/machinery/autolathe/basic
/obj/item/circuitboard/machine/bloodbankgen
name = "Blood Bank Generator (Machine Board)"
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index db18e2fde5..4ece058e90 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -69,6 +69,10 @@
var/pre_noise = FALSE
var/post_noise = FALSE
+ var/precision_mode = FALSE
+ var/precision_x = 0
+ var/precision_y = 0
+
/obj/item/toy/crayon/proc/isValidSurface(surface)
return istype(surface, /turf/open/floor)
@@ -225,6 +229,13 @@
.["can_change_colour"] = can_change_colour
.["current_colour"] = paint_color
+ .["precision_mode"] = precision_mode
+ .["x"] = precision_x
+ .["y"] = precision_y
+ .["min_offset"] = -world.icon_size/2
+ .["max_offset"] = world.icon_size/2
+
+
/obj/item/toy/crayon/ui_act(action, list/params)
if(..())
return
@@ -253,6 +264,17 @@
. = TRUE
paint_mode = PAINT_NORMAL
drawtype = "a"
+ if("toggle_precision")
+ precision_mode = !precision_mode
+ . = TRUE
+ if("set_precision_x")
+ var/x = text2num(params["x"])
+ precision_x = x
+ . = TRUE
+ if("set_precision_y")
+ var/y = text2num(params["y"])
+ precision_y = y
+ . = TRUE
update_icon()
/obj/item/toy/crayon/proc/select_colour(mob/user)
@@ -378,8 +400,12 @@
if(PAINT_NORMAL)
var/obj/effect/decal/cleanable/crayon/C = new(target, paint_color, drawing, temp, graf_rot)
C.add_hiddenprint(user)
- C.pixel_x = clickx
- C.pixel_y = clicky
+ if(precision_mode)
+ C.pixel_x = clamp(precision_x, -(world.icon_size/2), world.icon_size/2)
+ C.pixel_y = clamp(precision_y, -(world.icon_size/2), world.icon_size/2)
+ else
+ C.pixel_x = clickx
+ C.pixel_y = clicky
affected_turfs += target
if(PAINT_LARGE_HORIZONTAL)
var/turf/left = locate(target.x-1,target.y,target.z)
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index ac8d3a8e7a..1450e43d93 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -239,7 +239,7 @@
item_state = "defibunit"
cell = /obj/item/stock_parts/cell/high
-/obj/item/defibrillator/primitive/Initialize()
+/obj/item/defibrillator/primitive/Initialize()
. = ..()
paddles = make_paddlesprim()
update_power()
@@ -441,7 +441,7 @@
if((!req_defib && grab_ghost) || (req_defib && defib.grab_ghost))
H.notify_ghost_cloning("Your heart is being defibrillated!")
H.grab_ghost() // Shove them back in their body.
- else if(H.can_defib())
+ else if(H.can_revive())
H.notify_ghost_cloning("Your heart is being defibrillated. Re-enter your corpse if you want to be revived!", source = src)
do_help(H, user)
diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm
index db94ea701f..78194cc2c9 100644
--- a/code/game/objects/items/devices/radio/intercom.dm
+++ b/code/game/objects/items/devices/radio/intercom.dm
@@ -32,11 +32,9 @@
if(!istype(SSticker.mode, /datum/game_mode/clockwork_cult))
invisibility = INVISIBILITY_OBSERVER
alpha = 125
- emped = TRUE
else
invisibility = initial(invisibility)
alpha = initial(alpha)
- emped = FALSE
..()
/obj/item/radio/intercom/Initialize(mapload, ndir, building)
@@ -124,7 +122,7 @@
last_tick = world.timeofday
var/area/A = get_area(src)
- if(!A || emped)
+ if(!A)
on = FALSE
else
on = A.powered(EQUIP) // set "on" to the power status
@@ -150,13 +148,13 @@
/obj/item/radio/intercom/retro
name = "vintage intercom"
icon_state = "intercom_retro"
-
+
/obj/item/radio/intercom/retro/process()
if(((world.timeofday - last_tick) > 30) || ((world.timeofday - last_tick) < 0))
last_tick = world.timeofday
var/area/A = get_area(src)
- if(!A || emped)
+ if(!A)
on = FALSE
else
on = A.powered(EQUIP) // set "on" to the power status
@@ -169,30 +167,28 @@
/obj/item/radio/intercom/retro/kebob
name = "Oasis intercom"
freqlock = TRUE
- frequency = 1369
+ frequency = 1369
channels = list(RADIO_CHANNEL_TOWN = 1)
/obj/item/radio/intercom/retro/kebob/mayor
name = "Mayor's intercom"
use_command = TRUE
command = TRUE
-
+
/obj/item/radio/intercom/retro/foa
name = "Clinic intercom"
freqlock = TRUE
frequency = 1355
channels = list(RADIO_CHANNEL_MEDICAL = 1)
-
+
/obj/item/radio/intercom/retro/pirate
name = "Pirate Radio Broadcaster"
desc = "A radio that has been hacked to send and recieve from any frequency."
freerange = TRUE
- canhear_range = 1
+ canhear_range = 1
/obj/item/radio/intercom/retro/bear
name = "NCR intercom"
freqlock = TRUE
frequency = 1363
channels = list(RADIO_CHANNEL_NCR = 1)
-
-
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index e709131080..869d04b7f5 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -17,7 +17,6 @@
var/on = TRUE
var/frequency = FREQ_COMMON
var/canhear_range = 3 // The range around the radio in which mobs can hear what it receives.
- var/emped = 0 // Tracks the number of EMPs currently stacked.
var/broadcasting = FALSE // Whether the radio will transmit dialogue it hears nearby.
var/listening = TRUE // Whether the radio is currently receiving.
@@ -399,22 +398,14 @@
. = ..()
if (. & EMP_PROTECT_SELF)
return
- emped++ //There's been an EMP; better count it
- var/curremp = emped //Remember which EMP this was
- if (listening && ismob(loc)) // if the radio is turned on and on someone's person they notice
- to_chat(loc, "\The [src] overloads. ")
- broadcasting = FALSE
- listening = FALSE
- for (var/ch_name in channels)
- channels[ch_name] = 0
- on = FALSE
- addtimer(CALLBACK(src, .proc/end_emp_effect, curremp), 2 SECONDS)
-
-/obj/item/radio/proc/end_emp_effect(curremp)
- if(emped != curremp) //Don't fix it if it's been EMP'd again
- return FALSE
- emped = FALSE
- return TRUE
+ if(prob(severity * 1.5))
+ if(listening && ismob(loc)) // if the radio is turned on and on someone's person they notice
+ to_chat(loc, "\The [src] shorts out! ")
+ broadcasting = FALSE
+ listening = FALSE
+ for (var/ch_name in channels)
+ channels[ch_name] = 0
+ on = FALSE
///////////////////////////////
//////////Borg Radios//////////
@@ -487,9 +478,9 @@
qdel(implant)
else
return ..()
-
+
/// Other Radios
-
+
/obj/item/radio/tribal
name = "primitive radio"
icon_state = "radio"
@@ -497,6 +488,3 @@
desc = "a homemade radio transceiver made out of transistors and wire."
canhear_range = 2
w_class = WEIGHT_CLASS_NORMAL
-
-
-
diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm
index 617cdca38f..0a0bd85bd2 100644
--- a/code/game/objects/items/granters.dm
+++ b/code/game/objects/items/granters.dm
@@ -603,7 +603,7 @@
icon_state = "gab2"
oneuse = TRUE
remarks = list("Always keep your gun well lubricated...", "Keep your barrel free of grime...", "Perfect fitment is the key to a good firearm...", "Maintain a proper trigger pull length...", "Keep your sights zeroed to proper range...")
- crafting_recipe_types = list(/datum/crafting_recipe/n99, /datum/crafting_recipe/huntingrifle, /datum/crafting_recipe/m1911, /datum/crafting_recipe/varmintrifle, /datum/crafting_recipe/colt6520)
+ crafting_recipe_types = list(/datum/crafting_recipe/n99, /datum/crafting_recipe/huntingrifle, /datum/crafting_recipe/m1911, /datum/crafting_recipe/varmintrifle)
/obj/item/book/granter/crafting_recipe/gunsmith_three
name = "Guns and Bullets, Part 3"
@@ -626,7 +626,7 @@
desc = "A popular post-war comic series detailing the trials and tribulations of scavengers and their tools."
oneuse = TRUE
remarks = list("And it was here that I stabbed a man over a desk fan...", "The paint was chipping, but that didn't matter when he lay dead...", "A tank here, a pipe there...", "A bit of duct tape wrapped around everything...", "My flamethrower spat fire! Wait, where are my eyebrows...")
- crafting_recipe_types = list(/datum/crafting_recipe/chainsaw, /datum/crafting_recipe/tools/forged/entrenching_tool)
+ crafting_recipe_types = list(/datum/crafting_recipe/chainsaw, /datum/crafting_recipe/tools/forged/entrenching_tool, /datum/crafting_recipe/durathread_vest, /datum/crafting_recipe/steeltower)
/obj/item/book/granter/crafting_recipe/scav_two
name = "SCAV! Issue 2"
@@ -810,7 +810,7 @@
/obj/item/book/granter/crafting_recipe/blueprint/trapper
name = "guide to minelaying"
icon_state = "blueprint2"
- crafting_recipe_types = list(/datum/crafting_recipe/shrapnelmine)
+ crafting_recipe_types = list(/datum/crafting_recipe/explosive/shrapnelmine, /datum/crafting_recipe/explosive/explomine, /datum/crafting_recipe/explosive/stingmine, /datum/crafting_recipe/explosive/pulsemine, /datum/crafting_recipe/explosive/stunmine)
/*
/obj/item/book/granter/crafting_recipe/blueprint/fnfal
@@ -844,13 +844,14 @@
icon_state = "book"
remarks = list("Never make dreams...", "Don't pick from an empty list...", "Runtimes are not good for cardio...", "Report an issue to a nearby technician, and expect to be told to post it to their terminal...", "Probably don't adjust the default safety settings.", "Clean up any messes left in the pod before the next use.")
crafting_recipe_types = list(/datum/crafting_recipe/set_vrboard/den)
-
+
/obj/item/book/granter/crafting_recipe/ODF
name = "Weapons of Yuma and the Oasis Defense Force"
desc = "a book detailing weapons used in the region and by the local town, it has lithiographed pictures of hand-drawn schematics for each weapon type"
oneuse = TRUE
- crafting_recipe_types = list(/datum/crafting_recipe/policepistol, /datum/crafting_recipe/policerifle, /datum/crafting_recipe/steelbib/heavy, /datum/crafting_recipe/armyhelmetheavy, /datum/crafting_recipe/huntingshotgun)
- remarks = list("Looks like Oasis hand-crafts replicas from a pre-war police armory", "Some of these weapons are more than 200 years old....", "Duct tape really can hold it together!", "So that is how you laminate armor sheets together", "Looks like you can beat metal into just the right shape to replace the bits")
+ crafting_recipe_types = list(/datum/crafting_recipe/policepistol, /datum/crafting_recipe/durathread_vest, /datum/crafting_recipe/policerifle, /datum/crafting_recipe/steelbib/heavy, /datum/crafting_recipe/armyhelmetheavy, /datum/crafting_recipe/huntingshotgun)
+ remarks = list("Looks like Oasis hand-crafts replicas from a pre-war police armory", "Some of these weapons are more than 200 years old....", "Duct tape really can hold it together!", "So that is how you laminate armor sheets together", "Looks like you can beat metal into just the right shape to replace the bits")
+
/obj/item/book/granter/trait/tagger
name = "Picket Fences"
@@ -911,9 +912,19 @@
oneuse = TRUE
granted_trait = TRAIT_TECHNOPHREAK
traitname = "craftsmanship"
- crafting_recipe_types = list(/datum/crafting_recipe/tribalradio)
+ crafting_recipe_types = list(/datum/crafting_recipe/tribalradio, /datum/crafting_recipe/durathread_vest, /datum/crafting_recipe/plasmasniper)
remarks = list("Troubleshooting is a systematic approach to problem solving, do not skip any steps in the process.", "Ensure you have all the required parts before you begin.", "Always wear personal protective equipment, electric shock can be fatal.", "Combustibles and sparks do not mix, store welding fuel in a safe location.", "Don't lose track of your tools, or you have a new problem to deal with.")
+/obj/item/book/granter/trait/wirevision
+ name = "Popular Electronics"
+ desc = "An issue of Popular Electronics, dated January 1975. This one has a wiring guide for the Altair 8800 computer, and a few other projects to boot!"
+ oneuse = TRUE
+ granted_trait = TRAIT_WIREVISION
+ traitname = "wirevision"
+ remarks = list("Troubleshooting is a systematic approach to problem solving, do not skip any steps in the process.", "Ensure you have all the required parts before you begin.", "Don't lose track of your tools, or you have a new problem to deal with.", "Make sure you check the colouring of wires extremely carefully- you don't want to be mixing up yellow and lime, or purple and indigo!")
+
+
+
/obj/item/book/granter/trait/pa_wear
name = "US Army: Mechanized Infantry Handbook"
desc = "A battered olive-green handbook, detailing lessons to ancient mechanized US Army infantry units."
@@ -938,7 +949,7 @@
traitname = "explosive crafting"
remarks = list("If you want to get started making bombs, you're going to need a lot of igniters and black powder.", "Did a Follower write this book, or something?", "All thermite takes is some aluminum and iron.", "Coconut shells make acceptable grenade casings in a pinch.")
crafting_recipe_types = list(/datum/crafting_recipe/frag_shrapnel, /datum/crafting_recipe/stinger, /datum/crafting_recipe/flashbang,
-/datum/crafting_recipe/smokebomb, /datum/crafting_recipe/rocket_base, /datum/crafting_recipe/weakrocket, /datum/crafting_recipe/shrapnelmine)
+/datum/crafting_recipe/smokebomb, /datum/crafting_recipe/rocket_base, /datum/crafting_recipe/weakrocket)
/obj/item/book/granter/trait/explosives_advanced
name = "Advanced Techniques for Winning at Postal Chess"
@@ -948,7 +959,7 @@
traitname = "advanced explosive crafting"
remarks = list("Is this actually a legal chess move...?", "If you hook electronic parts up to a flux capacitor-oh, that makes a lot of sense, actually.", "Radium? What would you use radium f-oh no.", "Why would anyone actually publish this?")
crafting_recipe_types = list(/datum/crafting_recipe/incendiary, /datum/crafting_recipe/concussion, /datum/crafting_recipe/radgrenade, /datum/crafting_recipe/empgrenade, /datum/crafting_recipe/incendiaryrocket, /datum/crafting_recipe/strongrocket, /datum/crafting_recipe/frag_shrapnel, /datum/crafting_recipe/stinger, /datum/crafting_recipe/flashbang,
-/datum/crafting_recipe/smokebomb, /datum/crafting_recipe/rocket_base, /datum/crafting_recipe/weakrocket, /datum/crafting_recipe/shrapnelmine)
+/datum/crafting_recipe/smokebomb, /datum/crafting_recipe/rocket_base, /datum/crafting_recipe/weakrocket)
/obj/item/book/granter/trait/gunslinger
name = "Tycho: Life of a Lawman"
@@ -1014,7 +1025,7 @@
if("Wasteland Survival Guide")
granted_trait = TRAIT_HARD_YARDS
traitname = "trekking"
- remarks = list("Tribes and gangs often hide the best loot in the back room.", "Radiation is best avoided entirely, but it helps to carry spare rad-x.", "Whether ancient or recent, landmines are still a threat, and readers should look out for them.", "Injuries and open bleeding make it harder to travel, always carry spare medical supplies.", "Most animals are simple-minded, and can be led into easy lines of fire.")
+ remarks = list("Tribes and gangs often hide the best loot in the back room.", "Radiation is best avoided entirely, but it helps to carry spare rad-x.", "Whether ancient or recent, landmines are still a threat, and readers should look out for them. Their detonators can be removed with a screwdriver.", "Injuries and open bleeding make it harder to travel, always carry spare medical supplies.", "Most animals are simple-minded, and can be led into easy lines of fire.")
if("First Aid Pamphlet")
granted_trait = TRAIT_SURGERY_LOW
traitname = "minor surgery"
@@ -1027,7 +1038,7 @@
if("Dean's Electronics")
granted_trait = TRAIT_TECHNOPHREAK
traitname = "craftsmanship"
- crafting_recipe_types = list(/datum/crafting_recipe/tribalradio)
+ crafting_recipe_types = list(/datum/crafting_recipe/tribalradio, /datum/crafting_recipe/durathread_vest, /datum/crafting_recipe/plasmasniper)
remarks = list("Troubleshooting is a systematic approach to problem solving, do not skip any steps in the process.", "Ensure you have all the required parts before you begin.", "Always wear personal protective equipment, electric shock can be fatal.", "Combustibles and sparks do not mix, store welding fuel in a safe location.", "Don't lose track of your tools, or you have a new problem to deal with.")
if("Grognak the Barbarian")
granted_trait = TRAIT_BIG_LEAGUES
@@ -1059,7 +1070,7 @@
if("Technophilia")
granted_trait = TRAIT_TECHNOPHREAK
traitname = "technology and crafting"
- crafting_recipe_types = list(/datum/crafting_recipe/ninemil, /datum/crafting_recipe/huntingrifle, /datum/crafting_recipe/n99, /datum/crafting_recipe/huntingrifle, /datum/crafting_recipe/m1911, /datum/crafting_recipe/varmintrifle, /datum/crafting_recipe/colt6520, /datum/crafting_recipe/autoaxe, /datum/crafting_recipe/steelsaw, /datum/crafting_recipe/tools/forged/entrenching_tool, /datum/crafting_recipe/chainsaw)
+ crafting_recipe_types = list(/datum/crafting_recipe/ninemil, /datum/crafting_recipe/huntingrifle, /datum/crafting_recipe/n99, /datum/crafting_recipe/huntingrifle, /datum/crafting_recipe/m1911, /datum/crafting_recipe/varmintrifle, /datum/crafting_recipe/autoaxe, /datum/crafting_recipe/steelsaw, /datum/crafting_recipe/tools/forged/entrenching_tool, /datum/crafting_recipe/chainsaw, /datum/crafting_recipe/steeltower, /datum/crafting_recipe/durathread_vest)
if("Pugilist")
granted_trait = TRAIT_IRONFIST
traitname = "using your fists"
@@ -1084,7 +1095,7 @@
/obj/item/book/granter/crafting_recipe/tribal
name = "Tribal traditions"
desc = "A book of traditions passed down through generations within the tribe."
- crafting_recipe_types = list(/datum/crafting_recipe/warmace, /datum/crafting_recipe/tribalwar/bone_bow, /datum/crafting_recipe/tribalwar/pipe_bow)
+ crafting_recipe_types = list(/datum/crafting_recipe/tribalwar/lighttribe, /datum/crafting_recipe/tribalwar/heavytribe, /datum/crafting_recipe/warmace)
/obj/item/book/granter/crafting_recipe/tribal/whitelegs
name = "White Legs traditions"
@@ -1113,4 +1124,9 @@
/obj/item/book/granter/crafting_recipe/tribal/wayfarer
name = "Wayfarer traditions"
- crafting_recipe_types = list(/datum/crafting_recipe/tribal_pa,/datum/crafting_recipe/tribal_pa_helmet, /datum/crafting_recipe/tribal_combat_armor, /datum/crafting_recipe/tribal_combat_armor_helmet)
+ crafting_recipe_types = list(/datum/crafting_recipe/tribalwar/lighttribe, /datum/crafting_recipe/tribalwar/heavytribe, /datum/crafting_recipe/warmace)
+
+/obj/item/book/granter/crafting_recipe/tribal/bone
+ name = "Bone Dancer traditions"
+ crafting_recipe_types = list(/datum/crafting_recipe/tribalwar/bone/lightarmour,/datum/crafting_recipe/tribalwar/bone/armour, /datum/crafting_recipe/tribalwar/bone/heavyarmour,
+ /datum/crafting_recipe/tribalwar/bone/garb,/datum/crafting_recipe/tribalwar/bone/helmet)
diff --git a/code/game/objects/items/grenades/emgrenade.dm b/code/game/objects/items/grenades/emgrenade.dm
index 4020997334..57e1b2ad50 100644
--- a/code/game/objects/items/grenades/emgrenade.dm
+++ b/code/game/objects/items/grenades/emgrenade.dm
@@ -11,5 +11,5 @@
if(!empgrenade_turf)
return
playsound(empgrenade_turf, 'sound/f13weapons/pulsegrenade.ogg', 100, TRUE, 8, 0.9)
- empulse_using_range(src, 14)
+ empulse_using_range(src, 7)
qdel(src)
diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm
index 4d50c975ef..7b0f908dc3 100644
--- a/code/game/objects/items/handcuffs.dm
+++ b/code/game/objects/items/handcuffs.dm
@@ -252,7 +252,7 @@
icon_state = "beartrap"
desc = "A trap used to catch bears and other legged creatures."
var/armed = FALSE
- var/trap_damage = 20
+ var/trap_damage = 30
/obj/item/restraints/legcuffs/beartrap/Initialize()
. = ..()
diff --git a/code/game/objects/items/melee/f13powerfist.dm b/code/game/objects/items/melee/f13powerfist.dm
index d6e4201458..85a5171218 100644
--- a/code/game/objects/items/melee/f13powerfist.dm
+++ b/code/game/objects/items/melee/f13powerfist.dm
@@ -2,8 +2,8 @@
// POWER FISTS //
///////////////// -Uses power (gas currently) for knockback. Heavy AP, specialized for attacking heavy armor
-// Power Fist Throws targets. Max damage 44. Full AP.
-/obj/item/melee/powerfist/f13
+// Power Fist Throws targets. Max damage 44. 50% ap
+/obj/item/melee/unarmed/powerfist
name = "power fist"
desc = "A metal gauntlet with a piston-powered ram on top for that extra 'oomph' in your punch."
icon_state = "powerfist"
@@ -15,46 +15,38 @@
force = 22
throwforce = 10
throw_range = 3
+ armour_penetration = 0.5
w_class = WEIGHT_CLASS_NORMAL
- slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_GLOVES
var/transfer_prints = TRUE //prevents runtimes with forensics when held in glove slot
- var/throw_distance = 1
+ var/throw_distance = 1 //multipled by power to give actual throw dist
+ var/power = 1
+ var/knockback_anchored = FALSE
attack_speed = CLICK_CD_MELEE
-/obj/item/melee/powerfist/f13/attackby(obj/item/W, mob/user, params)
+/obj/item/melee/unarmed/powerfist/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/knockback, throw_distance, FALSE, knockback_anchored)
+
+/obj/item/melee/unarmed/powerfist/attackby(obj/item/W, mob/user, params)
+ if(!power)
+ return
if(istype(W, /obj/item/wrench))
- switch(fisto_setting)
+ switch(power)
if(1)
- fisto_setting = 2
+ power = 2
if(2)
- fisto_setting = 1
+ power = 1
+ if(GetComponent(/datum/component/knockback))
+ var/datum/component/knockback/KB = GetComponent(/datum/component/knockback)
+ KB.throw_distance = initial(throw_distance) * power
W.play_tool_sound(src)
- to_chat(user, "You tweak \the [src]'s piston valve to [fisto_setting]. ")
- attack_speed = CLICK_CD_MELEE * fisto_setting
+ to_chat(user, "You tweak \the [src]'s piston valve to [power]. ")
+ force = initial(force) * power
+ attack_speed = CLICK_CD_MELEE * power
-/obj/item/melee/powerfist/f13/updateTank(obj/item/tank/internals/thetank, removing = 0, mob/living/carbon/human/user)
- return
-
-/obj/item/melee/powerfist/f13/attack(mob/living/target, mob/living/user, attackchain_flags = NONE)
- if(HAS_TRAIT(user, TRAIT_PACIFISM))
- to_chat(user, "You don't want to harm other living beings! ")
- return FALSE
- var/turf/T = get_turf(src)
- if(!T)
- return FALSE
- var/totalitemdamage = target.pre_attacked_by(src, user)
- target.apply_damage(totalitemdamage * fisto_setting, BRUTE, wound_bonus = -25*fisto_setting**2)
- target.visible_message("[user]'s powerfist lets out a loud hiss as [user.p_they()] punch[user.p_es()] [target.name]! ", \
- "You cry out in pain as [user]'s punch flings you backwards! ")
- new /obj/effect/temp_visual/kinetic_blast(target.loc)
- playsound(loc, 'sound/weapons/resonator_blast.ogg', 50, 1)
- playsound(loc, 'sound/weapons/genhit2.ogg', 50, 1)
- var/atom/throw_target = get_edge_target_turf(target, get_dir(src, get_step_away(target, src)))
- target.throw_at(throw_target, 2 * throw_distance, 0.5 + (throw_distance / 2))
- log_combat(user, target, "power fisted", src)
// Goliath Throws targets far. Max damage 50.
-/obj/item/melee/powerfist/f13/goliath
+/obj/item/melee/unarmed/powerfist/goliath
name = "Goliath"
desc = "A massive, experimental metal gauntlet captured by the Legion. The piston-powered ram on top is designed to throw targets very, very far."
icon = 'icons/fallout/objects/melee/melee.dmi'
@@ -66,7 +58,7 @@
throw_distance = 3
-// Ballistic Fist Keywords: Damage max 42, AP 0.45, Shotgun
+// Ballistic Fist Keywords: 30 damage, AP 0.45, Shotgun
/obj/item/gun/ballistic/revolver/ballisticfist
name = "ballistic fist"
desc = "This powerfist has been modified to have two shotgun barrels welded to it, with the trigger integrated into the knuckle guard. For those times when you want to punch someone and shoot them in the face at the same time."
@@ -86,8 +78,8 @@
var/transfer_prints = TRUE //prevents runtimes with forensics when held in glove slot
-// Mole Miner
-/obj/item/melee/powerfist/f13/moleminer
+// Mole Miner
+/obj/item/melee/unarmed/powerfist/moleminer
name = "mole miner gauntlet"
desc = "A hand-held mining and cutting implement, repurposed into a deadly melee weapon. Its name origins are a mystery..."
icon_state = "mole_miner_g"
@@ -95,9 +87,7 @@
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
flags_1 = CONDUCT_1
- force = 15
- throwforce = 10
- throw_range = 7
+ force = 20
attack_verb = list("slashed", "sliced", "torn", "ripped", "diced", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
tool_behaviour = TOOL_MINING
@@ -105,8 +95,6 @@
toolspeed = 0.4
sharpness = SHARP_EDGED
w_class = WEIGHT_CLASS_NORMAL
- slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_GLOVES
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
/////////////////////
diff --git a/code/game/objects/items/melee/f13twohanded.dm b/code/game/objects/items/melee/f13twohanded.dm
index 028e7010b6..47747885f9 100644
--- a/code/game/objects/items/melee/f13twohanded.dm
+++ b/code/game/objects/items/melee/f13twohanded.dm
@@ -404,7 +404,7 @@
. = ..()
if(!proximity || !wielded || IS_STAMCRIT(user))
return
- if(istype(A, /obj/structure))
+ if(istype(A, /obj/structure))
var/obj/structure/W = A
W.take_damage(20, BRUTE, "melee", 0)
@@ -500,7 +500,7 @@ obj/item/twohanded/sledgehammer/supersledge/afterattack(atom/A, mob/living/user,
. = ..()
if(!proximity || !wielded || IS_STAMCRIT(user))
return
- if(istype(A, /obj/structure))
+ if(istype(A, /obj/structure))
var/obj/structure/W = A
W.take_damage(25, BRUTE, "melee", 0)
playsound(loc, hitsound, 80, TRUE)
@@ -535,7 +535,7 @@ obj/item/twohanded/sledgehammer/supersledge/afterattack(atom/A, mob/living/user,
. = ..()
if(!proximity || !wielded || IS_STAMCRIT(user))
return
- if(istype(A, /obj/structure))
+ if(istype(A, /obj/structure))
var/obj/structure/W = A
W.take_damage(10, BRUTE, "melee", 0)
playsound(loc, hitsound, 50, TRUE)
@@ -558,7 +558,7 @@ obj/item/twohanded/sledgehammer/supersledge/afterattack(atom/A, mob/living/user,
. = ..()
if(!proximity || !wielded || IS_STAMCRIT(user))
return
- if(istype(A, /obj/structure))
+ if(istype(A, /obj/structure))
var/obj/structure/W = A
W.take_damage(10, BRUTE, "melee", 0)
playsound(loc, hitsound, 80, TRUE)
@@ -601,8 +601,7 @@ obj/item/twohanded/sledgehammer/supersledge/afterattack(atom/A, mob/living/user,
. = ..()
AddComponent(/datum/component/two_handed, force_unwielded = 25, force_wielded = 45, icon_wielded="[icon_prefix]2")
-
-// Shaman staff Keywords: Damage 15/30, Big stamina damage buff
+// Shaman staff Keywords: Damage 15/30, Big stamina damage buff
/obj/item/twohanded/sledgehammer/shamanstaff
name = "shaman staff"
desc = "An intricate staff, carried for centuries by the shaman class of the Wayfayer Tribe."
@@ -694,7 +693,7 @@ obj/item/twohanded/sledgehammer/supersledge/afterattack(atom/A, mob/living/user,
playsound(loc, hitsound, 80, TRUE)
-//Steel Saw Keywords: Damage 14/40, Fast, Wound Bonus, Tool saw-off
+//Steel Saw Keywords: Damage 10/27, 2x attackspeed, Wound Bonus, Tool saw-off, structure bonus damage
/obj/item/twohanded/steelsaw
name = "steel saw"
desc = "A long, heavy circular saw with reinforced blades, designed for cutting through I-beams."
@@ -706,44 +705,45 @@ obj/item/twohanded/sledgehammer/supersledge/afterattack(atom/A, mob/living/user,
icon_prefix = "steelsaw"
force = 4
toolspeed = 0.5
- wound_bonus = 15
- attack_speed = CLICK_CD_MELEE * 0.9
+ wound_bonus = 20
+ bare_wound_bonus = 20
hitsound = 'sound/weapons/chainsawhit.ogg'
tool_behaviour = TOOL_SAW
sharpness = SHARP_EDGED
resistance_flags = FIRE_PROOF
w_class = WEIGHT_CLASS_BULKY
slot_flags = null
- total_mass = TOTAL_MASS_MEDIEVAL_WEAPON
+ total_mass = TOTAL_MASS_NORMAL_ITEM //it swings faster
+ var/structure_bonus_damage = 20
var/on_icon_state = "steelsaw_on"
var/off_icon_state = "steelsaw"
var/on_item_state = "steelsaw_on"
var/off_item_state = "steelsaw"
var/weight_class_on = WEIGHT_CLASS_HUGE
var/on = FALSE
- var/force_on = 40
- var/force_off = 14
- var/description_on = "You pull the cord, starting up the chainsaw with a roar and letting the blades spin up. "
- var/description_off = "You press the off button, stopping the noise and the carnage. "
+ var/force_on = 27 //10 more dps than chainsaw, but less perhit
+ var/force_off = 10
var/on_sound = 'sound/weapons/chainsawhit.ogg'
/obj/item/twohanded/steelsaw/attack_self(mob/user)
on = !on
if(on)
- to_chat(user, description_on)
+ user.visible_message("[user] pulls the cord, starting up the [src] with a roar and letting the blades spin up. ")
icon_state = on_icon_state
item_state = on_item_state
w_class = weight_class_on
force = force_on
+ attack_speed = CLICK_CD_MELEE * 0.5
attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
playsound(loc, on_sound, 50, TRUE)
else
- to_chat(user, description_off)
+ user.visible_message("[user] presses the off button, stopping the noise and the carnage. ")
icon_state = off_icon_state
item_state = off_item_state
w_class = WEIGHT_CLASS_BULKY
force = force_off
attack_verb = list("poked", "scraped")
+ attack_speed = CLICK_CD_MELEE * 1.2
add_fingerprint(user)
/obj/item/twohanded/steelsaw/ComponentInitialize()
@@ -752,6 +752,18 @@ obj/item/twohanded/sledgehammer/supersledge/afterattack(atom/A, mob/living/user,
AddComponent(/datum/component/two_handed, require_twohands=TRUE)
update_icon()
+/obj/item/twohanded/steelsaw/afterattack(atom/A, mob/living/user, proximity)
+ . = ..()
+ if(!proximity || !wielded || IS_STAMCRIT(user))
+ return
+ if(istype(A, /obj/structure)) //hurts structures more (it can cut through i-beams, it can ostensibly cut through weaker shit)
+ var/obj/structure/S = A
+ S.take_damage(structure_bonus_damage, BRUTE, "melee", 0, armour_penetration = src.armour_penetration)
+ else if(istype(A, /obj/machinery/door))
+ var/obj/machinery/door/D = A
+ D.take_damage(structure_bonus_damage, BRUTE, "melee", 0, armour_penetration = src.armour_penetration)
+
+
/obj/item/twohanded/steelsaw/suicide_act(mob/living/carbon/user)
if(on)
user.visible_message("[user] begins to tear [user.p_their()] head off with [src]! It looks like [user.p_theyre()] trying to commit suicide! ")
@@ -764,25 +776,43 @@ obj/item/twohanded/sledgehammer/supersledge/afterattack(atom/A, mob/living/user,
playsound(src, 'sound/weapons/genhit1.ogg', 100, 1)
return(BRUTELOSS)
-//Auto Axe Keywords: Damage 14/40, AP 0.5, Wound Bonus
+//autoaxe Keywords: Damage 10/29, 2x attackspeed, Wound Bonus, structure bonus damage, 0.3 AP
/obj/item/twohanded/steelsaw/autoaxe
name = "auto axe"
- desc = "A reinforced and heavier steel saw, upgraded using the parts of a car engine."
+ desc = "A reinforced and heavier steel saw, upgraded using the parts of a car engine. A little heavy and ungainly to use as a tool, however."
icon_state = "autoaxe"
item_state = "autoaxe"
icon_prefix = "autoaxe"
- force = 6
- force_on = 40
- force_off = 14
+ force_on = 29
+ attack_speed = CLICK_CD_MELEE * 1.5
armour_penetration = 0.3
on_icon_state = "autoaxe_on"
off_icon_state = "autoaxe"
on_item_state = "autoaxe_on"
off_item_state = "autoaxe"
- wound_bonus = 10
- tool_behaviour = null
-
+ toolspeed = 2
+ structure_bonus_damage = 40
+/obj/item/twohanded/steelsaw/autoaxe/attack_self(mob/user)
+ on = !on
+ if(on)
+ user.visible_message("[user] turns the starting crank on the [src], starting it up with a guttral roar. ")
+ icon_state = on_icon_state
+ item_state = on_item_state
+ w_class = weight_class_on
+ force = force_on
+ attack_speed = CLICK_CD_MELEE * 0.5
+ attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
+ playsound(loc, on_sound, 50, TRUE)
+ else
+ user.visible_message("[user] cuts the throttle on the [src], letting the blades slowly spin down. ")
+ icon_state = off_icon_state
+ item_state = off_item_state
+ w_class = WEIGHT_CLASS_BULKY
+ force = force_off
+ attack_verb = list("poked", "scraped")
+ attack_speed = CLICK_CD_MELEE * 1.5
+ add_fingerprint(user)
/*
CODE ARCHIVE
diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm
index 4e25f1e2bb..0ec7b9b353 100644
--- a/code/game/objects/items/miscellaneous.dm
+++ b/code/game/objects/items/miscellaneous.dm
@@ -270,7 +270,7 @@
icon = 'icons/obj/crates.dmi'
icon_state = "weaponcrate"
item_state = "syringe_kit"
-
+
/obj/item/choice_beacon/weapon/follower
name = "Follower of the Apocalpyse standard issue self-defense weapon crate"
desc = "Has that weapon you ordered"
@@ -278,17 +278,28 @@
"lethal, energy" = /obj/item/gun/energy/laser/wattz,
"lethal, ballistics" = /obj/item/gun/ballistic/revolver/colt357,
)
-
+
/obj/item/choice_beacon/weapon/follower/generate_display_names()
return follower_guns
-
+
/obj/item/choice_beacon/weapon/wastelander
name = "personal weapon stash"
desc = "contains your personal weapon, whatever it may be"
var/static/list/follower_guns = list("M1911" = /obj/item/gun/ballistic/automatic/pistol/m1911,
- "M1911 compact" = /obj/item/gun/ballistic/automatic/pistol/m1911/compact,
+ "M1911" = /obj/item/gun/ballistic/automatic/pistol/m1911,
"N99, 10mm" = /obj/item/gun/ballistic/automatic/pistol/n99,
".357 Police Pistol" = /obj/item/gun/ballistic/revolver/police,
".357 Single Action Revolver" = /obj/item/gun/ballistic/revolver/colt357,
"5.56mm Varmint Rifle" = /obj/item/gun/ballistic/automatic/varmint
)
+
+/obj/item/choice_beacon/box/g11ammo
+ name = "choice box (tactical ammunition)"
+ desc = "Contains 50 rounds of your preferred tactical 4.73mm ammunition."
+ var/static/list/ammolist = list("4.73mm flat-nose bullets" = /obj/item/ammo_box/m473/dumdum,
+ "4.73mm incendiary bullets" = /obj/item/ammo_box/m473/incendiary,
+ "4.73mm electro-static discharge bullets" = /obj/item/ammo_box/m473/shock,
+ "4.73mm high-velocity bullets" = /obj/item/ammo_box/m473/hv)
+
+/obj/item/choice_beacon/box/g11ammo/generate_display_names()
+ return ammolist
diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm
index dfb4e65bc4..2a5e4a7785 100644
--- a/code/game/objects/items/shields.dm
+++ b/code/game/objects/items/shields.dm
@@ -5,25 +5,26 @@
icon = 'icons/fallout/objects/melee/shields.dmi'
lefthand_file = 'icons/fallout/onmob/weapons/shields_lefthand.dmi'
righthand_file = 'icons/fallout/onmob/weapons/shields_righthand.dmi'
- item_flags = ITEM_CAN_BLOCK
+ item_flags = ITEM_CAN_BLOCK | SLOWS_WHILE_IN_HAND
+ slowdown = 0
block_parry_data = /datum/block_parry_data/shield
- armor = list("linemelee" = 150, "linebullet" = 150, "linelaser" = 150, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70)
+ armor = list("melee" = 60, "bullet" = 60, "laser" = 60, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70) //this is how much armor the SHIELD has. how much it PROTECTS is defined by block_parry_data. look at riot/bulletproof shield for implementation and living_blocking_parrying.dm for more info re:block
/// Shield flags
var/shield_flags = SHIELD_FLAGS_DEFAULT
/// Last shieldbash world.time
var/last_shieldbash = 0
/// Shieldbashing cooldown
- var/shieldbash_cooldown = 5 SECONDS
+ var/shieldbash_cooldown = 4 SECONDS
/// Shieldbashing stamina cost
var/shieldbash_stamcost = 7.5
/// Shieldbashing knockback
var/shieldbash_knockback = 2
/// Shield bashing brute damage
- var/shieldbash_brutedamage = 5
+ var/shieldbash_brutedamage = 25
/// Shield bashing stamina damage
- var/shieldbash_stamdmg = 15
+ var/shieldbash_stamdmg = 35
/// Shield bashing stagger duration
- var/shieldbash_stagger_duration = 3.5 SECONDS
+ var/shieldbash_stagger_duration = 5 SECONDS
/// Shield bashing push distance
var/shieldbash_push_distance = 1
@@ -49,11 +50,9 @@
/obj/item/shield/proc/on_shield_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance)
return TRUE
-/obj/item/shield/alt_pre_attack(atom/A, mob/living/user, params)
- user_shieldbash(user, A, user.a_intent == INTENT_HARM)
- return TRUE
-
/obj/item/shield/altafterattack(atom/target, mob/user, proximity_flag, click_parameters)
+ if(!proximity_flag)
+ return
user_shieldbash(user, target, user.a_intent == INTENT_HARM)
return TRUE
@@ -195,7 +194,9 @@
icon_state = "shield_riot"
item_state = "shield_riot"
slot_flags = ITEM_SLOT_BACK
+ armor = list("melee" = 80, "bullet" = 65, "laser" = 60, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70)
force = 10
+ block_parry_data = /datum/block_parry_data/shield/riot
throwforce = 5
throw_speed = 2
throw_range = 3
@@ -206,15 +207,16 @@
var/repair_material = /obj/item/stack/sheet/plastic
var/can_shatter = FALSE
shield_flags = SHIELD_FLAGS_DEFAULT | SHIELD_TRANSPARENT
- max_integrity = 450
+ max_integrity = 2250
+
+/datum/block_parry_data/shield/riot
+ block_damage_multiplier = 0.35
+ block_stamina_efficiency = 5
+ block_stamina_cost_per_second = 1
+ block_damage_absorption = 7.5
/obj/item/shield/riot/attackby(obj/item/W, mob/user, params)
- if(istype(W, /obj/item/melee))
- if(cooldown < world.time - 25)
- user.visible_message("[user] bashes [src] with [W]! ")
- playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1)
- cooldown = world.time
- else if(istype(W, repair_material))
+ if(istype(W, repair_material))
if(obj_integrity >= max_integrity)
to_chat(user, "[src] is already in perfect condition. ")
else
@@ -222,6 +224,11 @@
S.use(1)
obj_integrity = max_integrity
to_chat(user, "You repair [src] with [S]. ")
+ else if(istype(W, /obj/item/melee))
+ if(cooldown < world.time - 25)
+ user.visible_message("[user] bashes [src] with [W]! ")
+ playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1)
+ cooldown = world.time
else
return ..()
@@ -250,28 +257,24 @@
take_damage(damage)
return ..()
-/obj/item/shield/riot/attackby(obj/item/W, mob/user, params)
- if(istype(W, /obj/item))
- if(cooldown < world.time - 25)
- user.visible_message("[user] bashes [src] with [W]! ")
- playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1)
- cooldown = world.time
- else
- return ..()
-
-
-
//Bulletproof riot shield
obj/item/shield/riot/bullet_proof
name = "bullet resistant shield"
desc = "Kevlar coated surface makes this riot shield a lot better for blocking projectiles."
icon_state = "shield_bulletproof"
item_state = "shield_bulletproof"
- armor = list("linemelee" = 80, "linebullet" = 400, "laser" = 0, "energy" = 0, "bomb" = -40, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50)
- max_integrity = 350
+ block_parry_data = /datum/block_parry_data/shield/bulletproof
+ armor = list("melee" = 50, "bullet" = 90, "laser" = 50, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70)
+ max_integrity = 1750
custom_materials = list(/datum/material/plastic=8000, /datum/material/titanium=1000)
repair_material = /obj/item/stack/sheet/mineral/titanium
+/datum/block_parry_data/shield/bulletproof
+ block_damage_multiplier_override = list(ATTACK_TYPE_PROJECTILE_TEXT = 0.65)
+ block_damage_absorption_override = list(ATTACK_TYPE_PROJECTILE_TEXT = 12.5)
+ block_resting_stamina_penalty_multiplier = 2
+ block_projectile_mitigation = 90
+ block_damage_limit = 100
//Buckler. Cheapest shield, also the worst.
/obj/item/shield/riot/buckler
@@ -279,12 +282,15 @@ obj/item/shield/riot/bullet_proof
desc = "A small wooden shield."
icon_state = "shield_buckler"
item_state = "shield_buckler"
- block_chance = 30
- max_integrity = 150
+ block_parry_data = /datum/block_parry_data/shield/scrap
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 40)
+ max_integrity = 750
custom_materials = list(/datum/material/wood = 18000)
resistance_flags = FLAMMABLE
repair_material = /obj/item/stack/sheet/mineral/wood
- shield_flags = SHIELD_FLAGS_DEFAULT
+ shield_flags = SHIELD_FLAGS_LIGHT
+ shieldbash_push_distance = 0
+ shieldbash_knockback = 0
/obj/item/shield/riot/buckler/shatter(mob/living/carbon/human/owner)
playsound(owner, 'sound/effects/bang.ogg', 50)
@@ -297,7 +303,8 @@ obj/item/shield/riot/bullet_proof
desc = "Made from a ancient roadsign, with handles made of rope."
icon_state = "shield_stop"
item_state = "shield_stop"
- max_integrity = 200
+ armor = list("melee" = 65, "bullet" = 60, "laser" = 65, "energy" = 0, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 40)
+ max_integrity = 1000
resistance_flags = null
repair_material = /obj/item/stack/sheet/metal
@@ -308,16 +315,22 @@ obj/item/shield/riot/bullet_proof
desc = "Heavy shield with metal pieces bolted to a wood backing, with a painted yellow bull insignia in the centre."
icon_state = "shield_legion"
item_state = "shield_legion"
+ block_parry_data = /datum/block_parry_data/shield/legion
+ armor = list("melee" = 70, "bullet" = 60, "laser" = 60, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 40)
force = 13
- max_integrity = 300
+ max_integrity = 1500
custom_materials = list(/datum/material/wood = 16000, /datum/material/iron= 16000)
repair_material = /obj/item/stack/sheet/mineral/wood
- shield_flags = SHIELD_FLAGS_DEFAULT
+ shield_flags = SHIELD_FLAGS_HEAVY
/obj/item/shield/riot/legion/shatter(mob/living/carbon/human/owner)
playsound(owner, 'sound/effects/grillehit.ogg', 100)
new /obj/item/stack/sheet/metal(get_turf(src))
+/datum/block_parry_data/shield/legion
+ block_damage_multiplier = 0.3
+ block_damage_absorption = 7.5
+ block_damage_limit = 60
//Scrap shield. Somewhat cheaper, simpler and worse than Legion shield but basically similar.
/obj/item/shield/riot/scrapshield
@@ -325,13 +338,17 @@ obj/item/shield/riot/bullet_proof
desc = "A large shield made of glued and welded sheets of metal. Heavy and clumsy, but at least its handle is wrapped in some cloth."
icon_state = "shield_scrap"
item_state = "shield_scrap"
- armor = list("linemelee" = 70, "linebullet" = 70, "linelaser" = 70, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 80)
- max_integrity = 250
+ block_parry_data = /datum/block_parry_data/shield/scrap
+ armor = list("melee" = 60, "bullet" = 60, "laser" = 60, "energy" = 0, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 40)
+ max_integrity = 1250
force = 13
custom_materials = list(/datum/material/iron = 16000)
repair_material = /obj/item/stack/sheet/metal
shield_flags = SHIELD_FLAGS_DEFAULT
+/datum/block_parry_data/shield/scrap
+ block_damage_multiplier = 0.3
+ block_damage_limit = 30
//Energy shield. Placeholder for the experimental BoS shield concept that never got implemented I suppose.
/obj/item/shield/energy
@@ -389,6 +406,94 @@ obj/item/shield/riot/bullet_proof
to_chat(user, "[src] can now be concealed. ")
add_fingerprint(user)
+/obj/item/shield/riot/tower
+ name = "tower shield"
+ desc = "A heavy metal tower shield. Very unwieldly."
+ icon_state = "shield_tower"
+ item_state = "shield_tower"
+ slowdown = 0.25
+ slot_flags = ITEM_SLOT_BACK
+ shieldbash_cooldown = 8 SECONDS
+ shieldbash_brutedamage = 50//if you close in with this, and land a shieldbash you should deal a good bit of damage
+ shieldbash_stamdmg = 80//and stamina
+ force = 25
+ block_parry_data = /datum/block_parry_data/shield/tower
+ throwforce = 5
+ throw_speed = 1
+ throw_range = 1
+ w_class = WEIGHT_CLASS_HUGE
+ custom_materials = list(/datum/material/iron = 32000)
+ repair_material = /obj/item/stack/sheet/metal
+ shield_flags = SHIELD_FLAGS_HEAVY
+ max_integrity = 3000
+
+/datum/block_parry_data/shield/tower
+ block_slowdown = 0.75
+ block_damage_multiplier = 0.7
+ block_stamina_efficiency = 10
+ block_stamina_cost_per_second = 5
+ block_damage_absorption = 20
+ block_damage_limit = 160
+ block_start_delay = 10 //1 second to start blocking
+
+/obj/item/shield/riot/tower/scrap
+ name = "scrap-tower shield"
+ desc = "A heavy metal tower shield, made from scrap metal. Very unwieldly."
+ icon_state = "shield_tower_scrap"
+ item_state = "shield_tower_scrap"
+ slowdown = 0.35
+ shieldbash_brutedamage = 40
+ shieldbash_stamdmg = 60
+ shield_flags = SHIELD_FLAGS_DEFAULT //no guaranteed kd on bash, sorry
+ block_parry_data = /datum/block_parry_data/shield/tower/scrap
+ max_integrity = 1500
+
+/datum/block_parry_data/shield/tower/scrap
+ block_damage_multiplier = 0.6
+ block_stamina_efficiency = 7.5
+ block_damage_absorption = 15
+
+/obj/item/shield/riot/tele
+ name = "telescopic shield"
+ desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
+ icon_state = "teleriot0"
+ lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
+ slot_flags = null
+ force = 3
+ throwforce = 3
+ throw_speed = 3
+ throw_range = 4
+ w_class = WEIGHT_CLASS_NORMAL
+ var/active = FALSE
+
+/obj/item/shield/riot/tele/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
+ if(!active)
+ return BLOCK_NONE
+ return ..()
+
+/obj/item/shield/riot/tele/can_active_block()
+ return ..() && active
+
+/obj/item/shield/riot/tele/attack_self(mob/living/user)
+ active = !active
+ icon_state = "teleriot[active]"
+ playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE)
+ if(active)
+ force = 8
+ throwforce = 5
+ throw_speed = 2
+ w_class = WEIGHT_CLASS_BULKY
+ slot_flags = ITEM_SLOT_BACK
+ to_chat(user, "You extend \the [src]. ")
+ else
+ force = 3
+ throwforce = 3
+ throw_speed = 3
+ w_class = WEIGHT_CLASS_NORMAL
+ slot_flags = null
+ to_chat(user, "[src] can now be concealed. ")
+ add_fingerprint(user)
////////////////
//CODE ARCHIVE//
@@ -438,46 +543,5 @@ The telescopic shields are legacy and don't fit, but the code might be of intere
if(ismob(loc.loc)) //cyberimplant.user
to_chat(loc, "[src] has recharged its reinforcement matrix and is ready for use! ")
-/obj/item/shield/riot/tele
- name = "telescopic shield"
- desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
- icon_state = "teleriot0"
- lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
- slot_flags = null
- force = 3
- throwforce = 3
- throw_speed = 3
- throw_range = 4
- w_class = WEIGHT_CLASS_NORMAL
- var/active = FALSE
-/obj/item/shield/riot/tele/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
- if(!active)
- return BLOCK_NONE
- return ..()
-
-/obj/item/shield/riot/tele/can_active_block()
- return ..() && active
-
-/obj/item/shield/riot/tele/attack_self(mob/living/user)
- active = !active
- icon_state = "teleriot[active]"
- playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE)
-
- if(active)
- force = 8
- throwforce = 5
- throw_speed = 2
- w_class = WEIGHT_CLASS_BULKY
- slot_flags = ITEM_SLOT_BACK
- to_chat(user, "You extend \the [src]. ")
- else
- force = 3
- throwforce = 3
- throw_speed = 3
- w_class = WEIGHT_CLASS_NORMAL
- slot_flags = null
- to_chat(user, "[src] can now be concealed. ")
- add_fingerprint(user)
*/
diff --git a/code/game/objects/items/shrapnel.dm b/code/game/objects/items/shrapnel.dm
index db41b4ff40..b245236422 100644
--- a/code/game/objects/items/shrapnel.dm
+++ b/code/game/objects/items/shrapnel.dm
@@ -11,7 +11,6 @@
/obj/item/shrapnel/stingball // stingbang grenades
name = "stingball"
- embedding = list(embed_chance=90, fall_chance=3, jostle_chance=7, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.7, pain_mult=5, jostle_pain_mult=6, rip_time=15, embed_chance_turf_mod=-100)
icon_state = "tiny"
sharpness = SHARP_NONE
@@ -36,14 +35,14 @@
dismemberment = 5
ricochets_max = 2
ricochet_chance = 70
- shrapnel_type = /obj/item/shrapnel
+ embedding = list(embed_chance=70, ignore_throwspeed_threshold=TRUE, fall_chance=4, embed_chance_turf_mod=-100, projectile_payload = /obj/item/shrapnel)
ricochet_incidence_leeway = 60
sharpness = SHARP_EDGED
wound_bonus = 50
/obj/item/projectile/bullet/shrapnel/plasma // plasma grenades
name = "plasma split"
- embedding = list(embed_chance=0, ignore_throwspeed_threshold=FALSE, fall_chance=0, embed_chance_turf_mod=0)
+ embedding = list(embed_chance=0, ignore_throwspeed_threshold=FALSE, fall_chance=0, embed_chance_turf_mod=0, payload = /obj/item/shrapnel)
custom_materials = list(/datum/material/iron=50)
damage = 35
armour_penetration = 0.8
@@ -52,7 +51,6 @@
dismemberment = 0
ricochets_max = 0
ricochet_chance = 0
- shrapnel_type = /obj/item/shrapnel
ricochet_incidence_leeway = 0
sharpness = SHARP_EDGED
wound_bonus = 60
@@ -71,7 +69,7 @@
/obj/item/projectile/bullet/pellet/stingball
name = "stingball pellet"
damage = 3
- stamina = 8
+ stamina = 10
ricochets_max = 4
ricochet_chance = 66
ricochet_decay_chance = 1
@@ -79,7 +77,7 @@
ricochet_auto_aim_angle = 10
ricochet_auto_aim_range = 2
ricochet_incidence_leeway = 0
- shrapnel_type = /obj/item/shrapnel/stingball
+ embedding = list(embed_chance=90, fall_chance=3, jostle_chance=7, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.7, pain_mult=5, jostle_pain_mult=6, rip_time=15, embed_chance_turf_mod=-100, projectile_payload = /obj/item/shrapnel/stingball)
/obj/item/projectile/bullet/pellet/stingball/mega
name = "megastingball pellet"
@@ -97,3 +95,9 @@
damage = 10
wound_bonus = 30
sharpness = SHARP_EDGED
+
+/obj/item/shrapnel/bullet/a556/microshrapnel
+ name = "\improper 5.56mm microshrapnel bullet"
+
+/obj/item/shrapnel/bullet/a762/microshrapnel
+ name = "\improper 7.62mm microshrapnel bullet"
diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm
index 883856c5c0..1f65c40687 100644
--- a/code/game/objects/items/stacks/sheets/leather.dm
+++ b/code/game/objects/items/stacks/sheets/leather.dm
@@ -184,6 +184,9 @@ GLOBAL_LIST_INIT(leather_recipes, list ( \
/obj/item/stack/sheet/leather/five
amount = 5
+/obj/item/stack/sheet/leather/ten
+ amount = 10
+
/obj/item/stack/sheet/leather/twenty
amount = 20
diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm
index 67f2d2b2ca..6176305291 100644
--- a/code/game/objects/items/stacks/sheets/mineral.dm
+++ b/code/game/objects/items/stacks/sheets/mineral.dm
@@ -289,6 +289,7 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \
GLOBAL_LIST_INIT(titanium_recipes, list ( \
new/datum/stack_recipe("titanium tile", /obj/item/stack/tile/mineral/titanium, 1, 4, 20), \
new/datum/stack_recipe("titanic ingot", /obj/item/ingot/titanium, 6, time = 100), \
+ new/datum/stack_recipe("bear trap", /obj/item/restraints/legcuffs/beartrap, 1, time = 50), \
new/datum/stack_recipe("high quality parts", /obj/item/stack/crafting/goodparts, 5, time = 50) \
))
@@ -417,6 +418,9 @@ GLOBAL_LIST_INIT(snow_recipes, list ( \
merge_type = /obj/item/stack/sheet/mineral/abductor
walltype = /turf/closed/wall/mineral/abductor
+/obj/item/stack/sheet/mineral/abductor/ten
+ amount = 10
+
GLOBAL_LIST_INIT(abductor_recipes, list ( \
new/datum/stack_recipe("poylmer bed", /obj/structure/bed/abductor, 2, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("polymer locker", /obj/structure/closet/abductor, 2, time = 15, one_per_turf = 1, on_floor = 1), \
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 5fb881eb30..36caf39346 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -293,8 +293,9 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
new /datum/stack_recipe("compost bin", /obj/structure/reagent_dispensers/compostbin, 25, time = 40, one_per_turf = TRUE, on_floor = TRUE), \
new /datum/stack_recipe("harvest bin", /obj/machinery/smartfridge/bottlerack/grownbin, 20, time = 40, one_per_turf = TRUE, on_floor = TRUE), \
new /datum/stack_recipe("seed bin", /obj/machinery/smartfridge/bottlerack/seedbin, 20, time = 40, one_per_turf = TRUE, on_floor = TRUE), \
- null, \
new /datum/stack_recipe("alchemy rack", /obj/machinery/smartfridge/bottlerack/alchemy_rack, 20, time = 40, one_per_turf = TRUE, on_floor = TRUE),\
+ null, \
+ new /datum/stack_recipe("primitive chemistry table", /obj/machinery/chem_master/primitive, 25, time = 15, one_per_turf = TRUE, on_floor = TRUE),\
new /datum/stack_recipe("loom", /obj/structure/loom, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE),\
)), \
new/datum/stack_recipe_list("cooking", list( \
@@ -420,6 +421,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
new/datum/stack_recipe("medical bag", /obj/item/storage/bag/chemistry, 4), \
new/datum/stack_recipe("bio bag", /obj/item/storage/bag/bio, 4), \
new/datum/stack_recipe("casings bag", /obj/item/storage/bag/casings, 4), \
+ new/datum/stack_recipe("salvage bag", /obj/item/storage/bag/salvage, 4), \
null, \
new/datum/stack_recipe("string", /obj/item/weaponcrafting/string, 1, time = 10), \
new/datum/stack_recipe("improvised gauze", /obj/item/stack/medical/gauze/improvised, 1, 2, 6), \
@@ -751,7 +753,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
GLOBAL_LIST_INIT(bone_recipes, list(
new /datum/stack_recipe("bone dagger", /obj/item/melee/onehanded/knife/bone, 2, time = 20),
null, \
- new /datum/stack_recipe("bone armor", /obj/item/clothing/suit/armor/bone, 6, time = 30),
+ new /datum/stack_recipe("bone armor", /obj/item/clothing/suit/f13/tribal/light/bone, 6, time = 30),
new /datum/stack_recipe("skull helmet", /obj/item/clothing/head/helmet/skull, 4, time = 30),
null, \
new/datum/stack_recipe_list("medicine", list( \
diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm
index 62b0dc52c0..4cdb995f58 100644
--- a/code/game/objects/items/storage/bags.dm
+++ b/code/game/objects/items/storage/bags.dm
@@ -120,6 +120,7 @@
AddComponent(/datum/component/rad_insulation, 0.01) //please datum mats no more cancer
var/datum/component/storage/concrete/stack/STR = GetComponent(/datum/component/storage/concrete/stack)
STR.allow_quick_empty = TRUE
+ STR.max_items = 14
STR.can_hold = typecacheof(list(/obj/item/stack/ore))
STR.max_w_class = WEIGHT_CLASS_HUGE
STR.max_combined_stack_amount = 50
@@ -494,3 +495,22 @@ obj/item/storage/bag/chemistry/tribal
STR.max_items = 2
STR.display_numerical_stacking = TRUE
STR.can_hold = typecacheof(list(/obj/item/rcd_ammo, /obj/item/stack/sheet))
+
+/obj/item/storage/bag/salvage
+ name = "salvage sack"
+ desc = "A sack for your salvage."
+ icon = 'icons/obj/janitor.dmi' //im lazy
+ icon_state = "trashbag"
+ item_state = "trashbag"
+ lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi'
+ w_class = WEIGHT_CLASS_HUGE
+ resistance_flags = FLAMMABLE
+
+/obj/item/storage/bag/salvage/ComponentInitialize()
+ . = ..()
+ var/datum/component/storage/STR = GetComponent(/datum/component/storage)
+ STR.max_w_class = WEIGHT_CLASS_NORMAL
+ STR.max_combined_w_class = WEIGHT_CLASS_NORMAL * 30
+ STR.max_items = 30
+ STR.can_hold = typecacheof(list(/obj/item/salvage))
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index 7735d80905..afdcb6e8d3 100755
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -186,7 +186,7 @@
new /obj/item/bonesetter(src)
// END OF FALLOUT BELTS
-// ------------------------------------------------------
+// ------------------------------------------------------
/obj/item/storage/belt/utility/servant/PopulateContents()
new /obj/item/screwdriver/brass(src)
@@ -506,7 +506,7 @@
STR.max_items = 7
-/obj/item/storage/belt/military/followers/PopulateContents()
+/obj/item/storage/belt/military/army/military/followers/PopulateContents()
new /obj/item/reagent_containers/spray/pepper(src)
new /obj/item/restraints/handcuffs(src)
new /obj/item/melee/classic_baton(src)
@@ -776,6 +776,7 @@
/obj/item/ammo_box/c4570,
/obj/item/ammo_box/a50MG,
/obj/item/ammo_box/c45rev,
+ /obj/item/ammo_box/a45lcrev,
/obj/item/gun/energy/laser/solar,
/obj/item/gun/energy/laser/pistol,
/obj/item/gun/energy/laser/complianceregulator,
@@ -823,12 +824,6 @@
new /obj/item/ammo_box/c4570(src)
new /obj/item/ammo_box/c4570(src)
-/obj/item/storage/belt/holster/ranger10mm/PopulateContents()
- new /obj/item/gun/ballistic/revolver/colt6520(src)
- new /obj/item/ammo_box/l10mm(src)
- new /obj/item/ammo_box/l10mm(src)
- new /obj/item/ammo_box/l10mm(src)
-
/obj/item/storage/belt/holster/legholster
name = "leg holster"
desc = "A holster to carry a handgun and ammo worn on the leg."
@@ -869,8 +864,8 @@
/obj/item/storage/belt/sabre
name = "sabre sheath"
desc = "An ornate sheath designed to hold an officer's blade."
- icon_state = "sheath"
- item_state = "sheath"
+ icon_state = "utilitybelt"
+ item_state = "utility"
w_class = WEIGHT_CLASS_BULKY
content_overlays = TRUE
onmob_overlays = TRUE
@@ -894,6 +889,33 @@
/obj/item/storage/belt/sabre/PopulateContents()
new starting_sword(src)
+/obj/item/storage/belt/sabre/heavy
+ name = "heavy-duty sheath"
+ desc = "A rugged set of leather straps and metal tips to comfortably carry a large variety of blades (and even blunt objects) on your side."
+ icon_state = "sheath"
+ item_state = "sheath"
+ w_class = WEIGHT_CLASS_BULKY
+ content_overlays = TRUE
+ onmob_overlays = TRUE
+ slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_NECK
+ fitting_swords = list(/obj/item/melee/smith/shortsword,
+ /obj/item/melee/smith/wakizashi,
+ /obj/item/melee/smith/twohand/broadsword,
+ /obj/item/melee/smith/twohand/zweihander,
+ /obj/item/melee/smith/twohand/katana,
+ /obj/item/melee/smith/sabre,
+ /obj/item/melee/smith/cogheadclub,
+ /obj/item/melee/onehanded/machete,
+ /obj/item/melee/onehanded/club,
+ /obj/item/melee/classic_baton,
+ /obj/item/twohanded/fireaxe,
+ /obj/item/twohanded/baseball,
+ /obj/item/twohanded/sledgehammer,
+ /obj/item/melee/transforming/energy/axe/protonaxe,
+ /obj/item/melee/powered/ripper)
+ starting_sword = null
+
+
/obj/item/storage/belt/sabre/rapier
name = "rapier sheath"
desc = "A sinister, thin sheath, suitable for a rapier."
diff --git a/code/game/objects/items/storage/survivalkit.dm b/code/game/objects/items/storage/survivalkit.dm
index cd058cd294..a1544c6865 100644
--- a/code/game/objects/items/storage/survivalkit.dm
+++ b/code/game/objects/items/storage/survivalkit.dm
@@ -2,7 +2,8 @@
name = "survival kit"
desc = "A robust leather pouch containing the essentials for wasteland survival."
icon_state = "survivalkit"
- w_class = WEIGHT_CLASS_SMALL
+ slot_flags = ITEM_SLOT_POCKET
+ w_class = WEIGHT_CLASS_NORMAL
/obj/item/storage/survivalkit/PopulateContents()
. = ..()
@@ -11,89 +12,71 @@
new /obj/item/flashlight/flare(src)
new /obj/item/reagent_containers/pill/radx(src)
-/obj/item/storage/survivalkit_khan
- name = "survival kit"
+/obj/item/storage/survivalkit/khan
desc = "A robust leather pouch containing essentials a Khan might need in the wasteland."
icon = 'icons/fallout/clothing/khans.dmi'
icon_state = "survivalkit"
- w_class = WEIGHT_CLASS_SMALL
-/obj/item/storage/survivalkit_khan/PopulateContents()
- . = ..()
+/obj/item/storage/survivalkit/khan/PopulateContents()
new /obj/item/reagent_containers/hypospray/medipen/stimpak(src)
new /obj/item/reagent_containers/hypospray/medipen/stimpak(src)
new /obj/item/reagent_containers/hypospray/medipen/medx(src)
new /obj/item/stack/medical/gauze(src)
new /obj/item/reagent_containers/pill/radx(src)
-/obj/item/storage/survivalkit_tribal
- name = "survival kit"
- desc = "A robust leather pouch containing the essentials for wasteland survival."
- icon_state = "survivalkit"
- w_class = WEIGHT_CLASS_SMALL
-
-/obj/item/storage/survivalkit_tribal/PopulateContents()
- . = ..()
+/obj/item/storage/survivalkit/tribal/PopulateContents()
new /obj/item/reagent_containers/pill/patch/healingpowder(src)
new /obj/item/reagent_containers/pill/patch/healingpowder(src)
new /obj/item/stack/medical/gauze(src)
new /obj/item/flashlight/flare/torch(src)
-/obj/item/storage/survivalkit_tribal/chief
-
-/obj/item/storage/survivalkit_tribal/chief/PopulateContents()
+/obj/item/storage/survivalkit/tribal/adv/PopulateContents()
. = ..()
- new /obj/item/reagent_containers/pill/patch/healingpowder(src)
- new /obj/item/reagent_containers/pill/patch/healingpowder(src)
new /obj/item/reagent_containers/pill/patch/healpoultice(src)
- new /obj/item/stack/medical/gauze(src)
- new /obj/item/flashlight/flare/torch(src)
-/obj/item/storage/survivalkit_adv
- name = "survival kit"
- desc = "A robust leather pouch containing the essentials for wasteland survival."
- icon_state = "survivalkit"
- w_class = WEIGHT_CLASS_SMALL
+/obj/item/storage/survivalkit/outlaw/PopulateContents()
+ new /obj/item/reagent_containers/hypospray/medipen/stimpak(src)
+ new /obj/item/stack/medical/suture(src)
+ new /obj/item/stack/medical/ointment(src)
+ new /obj/item/stack/medical/gauze(src)
+ new /obj/item/flashlight/flare(src)
+ new /obj/item/reagent_containers/pill/radx(src)
-/obj/item/storage/survivalkit_adv/PopulateContents()
- . = ..()
+/obj/item/storage/survivalkit/adv/PopulateContents()
new /obj/item/reagent_containers/hypospray/medipen/stimpak(src)
new /obj/item/stack/medical/gauze(src)
new /obj/item/flashlight/seclite(src)
new /obj/item/reagent_containers/pill/radx(src)
-/obj/item/storage/survivalkit_aid
+/obj/item/storage/survivalkit/aid
name = "individual first aid kit"
desc = "A robust leather pouch containing the essentials for trauma care."
icon_state = "ifak"
- w_class = WEIGHT_CLASS_SMALL
-/obj/item/storage/survivalkit_aid/ComponentInitialize()
+/obj/item/storage/survivalkit/aid/ComponentInitialize()
. = ..()
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.max_items = 4
-/obj/item/storage/survivalkit_aid/PopulateContents()
- . = ..()
+/obj/item/storage/survivalkit/aid/PopulateContents()
new /obj/item/reagent_containers/hypospray/medipen/stimpak(src)
new /obj/item/stack/medical/gauze(src)
new /obj/item/stack/medical/suture(src)
new /obj/item/stack/medical/ointment(src)
-/obj/item/storage/survivalkit_aid_adv
+/obj/item/storage/survivalkit/aid/adv
name = "advanced-individual first aid kit"
desc = "A robust leather pouch containing the essentials for trauma care."
icon_state = "ifak"
- w_class = WEIGHT_CLASS_SMALL
-/obj/item/storage/survivalkit_aid_adv/ComponentInitialize()
- . = ..()
- var/datum/component/storage/STR = GetComponent(/datum/component/storage)
- STR.max_items = 4
-
-/obj/item/storage/survivalkit_aid_adv/PopulateContents()
- . = ..()
+/obj/item/storage/survivalkit/aid/adv/PopulateContents()
new /obj/item/reagent_containers/hypospray/medipen/stimpak/super(src)
new /obj/item/stack/medical/gauze/adv(src)
new /obj/item/stack/medical/suture/medicated(src)
new /obj/item/stack/medical/mesh(src)
+
+/obj/item/storage/survivalkit_empty
+ name = "survival kit"
+ desc = "A robust leather pouch containing the essentials for wasteland survival."
+ icon_state = "survivalkit"
+ w_class = WEIGHT_CLASS_SMALL
diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm
index 2e458ed5f6..b943451835 100644
--- a/code/game/objects/items/tools/weldingtool.dm
+++ b/code/game/objects/items/tools/weldingtool.dm
@@ -68,7 +68,7 @@
switch(welding)
if(0)
force = 3
- damtype = "brute"
+ damtype = BRUTE
update_icon()
if(!can_off_process)
STOP_PROCESSING(SSobj, src)
@@ -76,7 +76,7 @@
//Welders left on now use up fuel, but lets not have them run out quite that fast
if(1)
force = 15
- damtype = "fire"
+ damtype = BURN
++burned_fuel_for
if(burned_fuel_for >= WELDER_FUEL_BURN_INTERVAL)
use(1)
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 6fab329d53..519440541e 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -269,11 +269,7 @@
if (islist(result))
if (result["button"] != 2) // If the user pressed the cancel button
// text2num conveniently returns a null on invalid values
- armor = armor.setRating(tier = text2num(result["values"]["tier"]),\
- linemelee = text2num(result["values"]["linemelee"]),\
- linebullet = text2num(result["values"]["linebullet"]),\
- linelaser = text2num(result["values"]["linelaser"]),\
- melee = text2num(result["values"]["melee"]),\
+ armor = armor.setRating(melee = text2num(result["values"]["melee"]),\
bullet = text2num(result["values"]["bullet"]),\
laser = text2num(result["values"]["laser"]),\
energy = text2num(result["values"]["energy"]),\
@@ -286,8 +282,8 @@
bullet = text2num(result["values"]["bullet"]),\
laser = text2num(result["values"]["laser"])
)
- log_admin("[key_name(usr)] modified the armor on [src] ([type]) to linemelee: [armor.linemelee], linebullet: [armor.linebullet], linelaser: [armor.linelaser], energy: [armor.energy], bomb: [armor.bomb], bio: [armor.bio], rad: [armor.rad], fire: [armor.fire], acid: [armor.acid], melee: [armor.melee], bullet: [armor.bullet], laser: [armor.laser]")
- message_admins("[key_name_admin(usr)] modified the armor on [src] ([type]) to linemelee: [armor.linemelee], linebullet: [armor.linebullet], linelaser: [armor.linelaser], energy: [armor.energy], bomb: [armor.bomb], bio: [armor.bio], rad: [armor.rad], fire: [armor.fire], acid: [armor.acid], melee: [armor.melee], bullet: [armor.bullet], laser: [armor.laser] ")
+ log_admin("[key_name(usr)] modified the armor on [src] ([type]) to melee: [armor.melee], bullet: [armor.bullet], laser: [armor.laser] energy: [armor.energy], bomb: [armor.bomb], bio: [armor.bio], rad: [armor.rad], fire: [armor.fire], acid: [armor.acid]")
+ message_admins("[key_name_admin(usr)] modified the armor on [src] ([type]) to melee: [armor.melee], bullet: [armor.bullet], laser: [armor.laser] energy: [armor.energy], bomb: [armor.bomb], bio: [armor.bio], rad: [armor.rad], fire: [armor.fire], acid: [armor.acid] ")
if(href_list[VV_HK_MASS_DEL_TYPE])
if(check_rights(R_DEBUG|R_SERVER))
var/action_type = alert("Strict type ([type]) or type and all subtypes?",,"Strict type","Type and subtypes","Cancel")
diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm
index 819dedf589..cb11aa231d 100644
--- a/code/game/objects/structures/ghost_role_spawners.dm
+++ b/code/game/objects/structures/ghost_role_spawners.dm
@@ -753,7 +753,7 @@
backpack_contents = list(
/obj/item/ammo_box/magazine/m556/rifle/assault = 1,
/obj/item/clothing/head/helmet/f13/combat/ncr_patrol = 1,
- /obj/item/storage/survivalkit_aid = 1,
+ /obj/item/storage/survivalkit/aid = 1,
/obj/item/attachments/scope = 1,
/obj/item/gun/ballistic/revolver/revolver44 = 1,
/obj/item/ammo_box/m44 = 2,
diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm
index fa6bab0fcc..080c9eb66f 100644
--- a/code/game/objects/structures/mirror.dm
+++ b/code/game/objects/structures/mirror.dm
@@ -48,14 +48,34 @@
return // no message spam
..()
+/obj/structure/mirror/attacked_by(obj/item/I, mob/living/user)
+ if(broken || !istype(user) || !I.force)
+ return ..()
+
+ . = ..()
+ if(broken) // breaking a mirror truly gets you bad luck!
+ to_chat(user, "A chill runs down your spine as [src] shatters... ")
+ user.AddComponent(/datum/component/omen, silent=TRUE) // we have our own message
+
+/obj/structure/mirror/bullet_act(obj/item/projectile/P)
+ if(broken || !isliving(P.firer) || !P.damage)
+ return ..()
+
+ . = ..()
+ if(broken) // breaking a mirror truly gets you bad luck!
+ var/mob/living/unlucky_dude = P.firer
+ to_chat(unlucky_dude, "A chill runs down your spine as [src] shatters... ")
+ unlucky_dude.AddComponent(/datum/component/omen, silent=TRUE) // we have our own message
+
/obj/structure/mirror/obj_break(damage_flag, mapload)
- if(!broken && !(flags_1 & NODECONSTRUCT_1))
- icon_state = "mirror_broke"
- if(!mapload)
- playsound(src, "shatter", 70, 1)
- if(desc == initial(desc))
- desc = "Oh no, seven years of bad luck!"
- broken = TRUE
+ if(broken || (flags_1 & NODECONSTRUCT_1))
+ return
+ icon_state = "mirror_broke"
+ if(!mapload)
+ playsound(src, "shatter", 70, TRUE)
+ if(desc == initial(desc))
+ desc = "Oh no, seven years of bad luck!"
+ broken = TRUE
/obj/structure/mirror/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm
index 62c0715d78..3c3b2b88bd 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -21,7 +21,7 @@ FLOOR SAFES
var/tumbler_2_open
var/dial = 0 //where is the dial pointing?
var/space = 0 //the combined w_class of everything in the safe
- var/maxspace = 24 //the maximum combined w_class of stuff in the safe
+ var/maxspace = 48 //the maximum combined w_class of stuff in the safe
var/explosion_count = 0 //Tough, but breakable
/obj/structure/safe/New()
@@ -34,11 +34,14 @@ FLOOR SAFES
/obj/structure/safe/Initialize(mapload)
- . = ..()
+ ..()
if(!mapload)
return
+ else
+ return INITIALIZE_HINT_LATELOAD
+obj/structure/safe/LateInitialize()
for(var/obj/item/I in loc)
if(space >= maxspace)
return
diff --git a/code/game/turfs/openspace/openspace.dm b/code/game/turfs/openspace/openspace.dm
index df6b9da640..e3df2f8afc 100644
--- a/code/game/turfs/openspace/openspace.dm
+++ b/code/game/turfs/openspace/openspace.dm
@@ -83,6 +83,7 @@ Prevents players on higher Zs from seeing into buildings they arent meant to.
if(!CanBuildHere())
return
if(istype(C, /obj/item/stack/rods))
+ var/support
var/obj/item/stack/rods/R = C
var/obj/structure/lattice/L = locate(/obj/structure/lattice, src)
var/obj/structure/lattice/catwalk/W = locate(/obj/structure/lattice/catwalk, src)
@@ -97,12 +98,19 @@ Prevents players on higher Zs from seeing into buildings they arent meant to.
else
to_chat(user, "You need two rods to build a catwalk! ")
return
- if(R.use(1))
- to_chat(user, "You construct a lattice. ")
- playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE)
- ReplaceWithLattice()
+ for(var/turf/T in range(2, SSmapping.get_turf_below(src)))
+ if(istype(T, /turf/closed))
+ support++
+ break
+ if(support)
+ if(R.use(1))
+ to_chat(user, "You construct a lattice. ")
+ playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE)
+ ReplaceWithLattice()
+ else
+ to_chat(user, "You need one rod to build a lattice. ")
else
- to_chat(user, "You need one rod to build a lattice. ")
+ to_chat(user, "You need some support under this space to make a lattice. ")
return
if(istype(C, /obj/item/stack/tile/plasteel))
if(!CanCoverUp())
@@ -130,7 +138,7 @@ Prevents players on higher Zs from seeing into buildings they arent meant to.
if(L)
return list("mode" = RCD_FLOORWALL, "delay" = 0, "cost" = 1)
else
- return list("mode" = RCD_FLOORWALL, "delay" = 0, "cost" = 3)
+ return FALSE
return FALSE
/turf/open/transparent/openspace/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode)
diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm
index ce27f8fd24..0986bf37f3 100644
--- a/code/game/turfs/simulated/floor/fancy_floor.dm
+++ b/code/game/turfs/simulated/floor/fancy_floor.dm
@@ -333,6 +333,10 @@
icon = 'icons/turf/floors/carpet_royalblue.dmi'
floor_tile = /obj/item/stack/tile/carpet/royalblue
canSmoothWith = list(/turf/open/floor/carpet/royalblue, /turf/open/floor/carpet/royalblue/airless)
+
+/turf/open/floor/carpet/vault
+ icon = 'icons/turf/floors/carpet_vault.dmi'
+ canSmoothWith = list(/turf/open/floor/carpet/vault)
//*****Airless versions of all of the above.*****
/turf/open/floor/carpet/airless
diff --git a/code/modules/WVM/wmv_buyer.dm b/code/modules/WVM/wmv_buyer.dm
index 940c6006ef..11e7b9bcef 100644
--- a/code/modules/WVM/wmv_buyer.dm
+++ b/code/modules/WVM/wmv_buyer.dm
@@ -280,7 +280,6 @@ Fence
/obj/item/gun/ballistic/revolver/hobo/knifegun = 8,
/obj/item/gun/ballistic/revolver/hobo/pepperbox = 8,
/obj/item/gun/ballistic/revolver/single_shotgun = 8,
- /obj/item/gun/ballistic/revolver/colt6520 = 8,
/obj/item/gun/ballistic/automatic/pistol/n99 = 8,
/obj/item/gun/ballistic/automatic/pistol/pistol22 = 8,
/obj/item/gun/ballistic/automatic/pistol/ninemil = 8,
@@ -297,7 +296,7 @@ Fence
/obj/item/gun/ballistic/rifle/hobo/lasmusket = 15,
/obj/item/stack/crafting/armor_plate = 20,
)
-
+
/obj/machinery/mineral/wasteland_trader/gunbuyer/ui_interact(mob/user)
. = ..()
var/dat
@@ -315,7 +314,7 @@ Fence
dat += "Does not accept weapons of historical or artisanal value. Those belong in a musuem."
dat += ""
dat += " "
-
+
var/datum/browser/popup = new(user, "tradingvendor", "Trading point", 400, 500)
popup.set_content(dat)
popup.open()
diff --git a/code/modules/WVM/wvm.dm b/code/modules/WVM/wvm.dm
index 5353752140..42ad587305 100644
--- a/code/modules/WVM/wvm.dm
+++ b/code/modules/WVM/wvm.dm
@@ -596,13 +596,19 @@ GLOBAL_VAR_INIT(vendor_cash, 0)
new /datum/data/wasteland_equipment("Gas Mask", /obj/item/clothing/mask/gas, 50),
new /datum/data/wasteland_equipment("Advanced Mop", /obj/item/mop/advanced, 100),
new /datum/data/wasteland_equipment("Fixer", /obj/item/storage/pill_bottle/chem_tin/fixer, 200),
- new /datum/data/wasteland_equipment("X-tra Large Beaker", /obj/item/reagent_containers/glass/beaker/plastic, 500),
+ new /datum/data/wasteland_equipment("Metamaterial Beaker", /obj/item/reagent_containers/glass/beaker/meta, 500),
new /datum/data/wasteland_equipment("Medical HUD", /obj/item/clothing/glasses/hud/health, 500),
+ new /datum/data/wasteland_equipment("Prosthetic Left Arm", /obj/item/bodypart/l_arm/robot, 600),
+ new /datum/data/wasteland_equipment("Prosthetic Right Arm", /obj/item/bodypart/r_arm/robot, 600),
+ new /datum/data/wasteland_equipment("Prosthetic Left Leg", /obj/item/bodypart/l_leg/robot, 600),
+ new /datum/data/wasteland_equipment("Prosthetic Right Leg", /obj/item/bodypart/r_leg/robot, 600),
+ new /datum/data/wasteland_equipment("Integrated Toolset Implant", /obj/item/organ/cyberimp/arm/toolset, 700),
new /datum/data/wasteland_equipment("Defibrillator", /obj/item/defibrillator, 1000),
- new /datum/data/wasteland_equipment("Integrated Toolset Implant", /obj/item/organ/cyberimp/arm/toolset, 2000),
- new /datum/data/wasteland_equipment("Upgraded Prosthethic Limbs", /obj/item/storage/box/sparelimbs, 2000),
+ new /datum/data/wasteland_equipment("Chest reviver Implant", /obj/item/organ/cyberimp/chest/reviver, 1500),
+ new /datum/data/wasteland_equipment("Upgraded Prosthetic Limbs", /obj/item/storage/box/sparelimbs, 2000),
new /datum/data/wasteland_equipment("Cat", /mob/living/simple_animal/pet/cat/Runtime, 10000),
)
+
highpop_list = list(
new /datum/data/wasteland_equipment("Medicated Suture", /obj/item/stack/medical/suture/medicated, 45),
new /datum/data/wasteland_equipment("Advanced Regen. Mesh", /obj/item/stack/medical/mesh/advanced, 45),
@@ -610,11 +616,16 @@ GLOBAL_VAR_INIT(vendor_cash, 0)
new /datum/data/wasteland_equipment("Gas Mask", /obj/item/clothing/mask/gas, 50),
new /datum/data/wasteland_equipment("Advanced Mop", /obj/item/mop/advanced, 100),
new /datum/data/wasteland_equipment("Fixer", /obj/item/storage/pill_bottle/chem_tin/fixer, 200),
- new /datum/data/wasteland_equipment("X-tra Large Beaker", /obj/item/reagent_containers/glass/beaker/plastic, 500),
+ new /datum/data/wasteland_equipment("Metamaterial Beaker", /obj/item/reagent_containers/glass/beaker/meta, 500),
new /datum/data/wasteland_equipment("Medical HUD", /obj/item/clothing/glasses/hud/health, 500),
+ new /datum/data/wasteland_equipment("Prosthetic Left Arm", /obj/item/bodypart/l_arm/robot, 600),
+ new /datum/data/wasteland_equipment("Prosthetic Right Arm", /obj/item/bodypart/r_arm/robot, 600),
+ new /datum/data/wasteland_equipment("Prosthetic Left Leg", /obj/item/bodypart/l_leg/robot, 600),
+ new /datum/data/wasteland_equipment("Prosthetic Right Leg", /obj/item/bodypart/r_leg/robot, 600),
+ new /datum/data/wasteland_equipment("Integrated Toolset Implant", /obj/item/organ/cyberimp/arm/toolset, 700),
new /datum/data/wasteland_equipment("Defibrillator", /obj/item/defibrillator, 1000),
- new /datum/data/wasteland_equipment("Integrated Toolset Implant", /obj/item/organ/cyberimp/arm/toolset, 2000),
- new /datum/data/wasteland_equipment("Upgraded Prosthethic Limbs", /obj/item/storage/box/sparelimbs, 2000),
+ new /datum/data/wasteland_equipment("Chest reviver Implant", /obj/item/organ/cyberimp/chest/reviver, 1500),
+ new /datum/data/wasteland_equipment("Upgraded Prosthetic Limbs", /obj/item/storage/box/sparelimbs, 2000),
new /datum/data/wasteland_equipment("Cat", /mob/living/simple_animal/pet/cat/Runtime, 10000),
)
@@ -632,7 +643,7 @@ GLOBAL_VAR_INIT(vendor_cash, 0)
)
highpop_list = list(
new /datum/data/wasteland_equipment("survival knife", /obj/item/melee/onehanded/knife/survival, 40),
- new /datum/data/wasteland_equipment("9mm pistol", /obj/item/gun/ballistic/automatic/pistol/ninemil, 60),
+ new /datum/data/wasteland_equipment("9mm pistol", /obj/item/gun/ballistic/automatic/pistol/beretta, 60),
new /datum/data/wasteland_equipment("M1911", /obj/item/gun/ballistic/automatic/pistol/m1911, 70),
new /datum/data/wasteland_equipment("Guns and Bullets, Part 1", /obj/item/book/granter/crafting_recipe/gunsmith_one, 100),
new /datum/data/wasteland_equipment("Guns and Bullets, Part 2", /obj/item/book/granter/crafting_recipe/gunsmith_two, 200),
@@ -645,7 +656,7 @@ GLOBAL_VAR_INIT(vendor_cash, 0)
icon_state = "ammo_idle"
prize_list = list(
new /datum/data/wasteland_equipment("Handgun magazine (.45)", /obj/item/ammo_box/magazine/m45, 50),
- new /datum/data/wasteland_equipment("9mm pistol magazine (9mm)", /obj/item/ammo_box/magazine/m9mm, 50),
+ new /datum/data/wasteland_equipment("9mm pistol magazine (9mm)", /obj/item/ammo_box/magazine/m9mmds, 50),
new /datum/data/wasteland_equipment("10mm pistol magazine (10mm)", /obj/item/ammo_box/magazine/m10mm_adv/simple, 60),
new /datum/data/wasteland_equipment("Speed strip (.357)", /obj/item/ammo_box/a357, 70),
new /datum/data/wasteland_equipment("Smoke Bomb", /obj/item/grenade/smokebomb, 70),
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index e7c6a5995e..563e90b7b9 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -367,6 +367,9 @@ GLOBAL_PROTECT(admin_verbs_hideable)
message_admins("[key_name_admin(usr)] re-entered corpse")
ghost.can_reenter_corpse = 1 //force re-entering even when otherwise not possible
ghost.reenter_corpse()
+ if(isliving(mob))
+ var/mob/living/L = mob
+ L.living_flags &= ~HIDE_OFFLINE_INDICATOR
SSblackbox.record_feedback("tally", "admin_verb", 1, "Admin Reenter") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
else if(isnewplayer(mob))
to_chat(src, "
Error: Aghost: Can't admin-ghost whilst in the lobby. Join or Observe first. ")
@@ -376,6 +379,9 @@ GLOBAL_PROTECT(admin_verbs_hideable)
log_admin("[key_name(usr)] admin ghosted.")
message_admins("[key_name_admin(usr)] admin ghosted.")
var/mob/body = mob
+ if(isliving(body))
+ var/mob/living/livingbody = body
+ livingbody.living_flags |= HIDE_OFFLINE_INDICATOR
body.ghostize(1, voluntary = TRUE)
if(body && !body.key)
body.key = "@[key]" //Haaaaaaaack. But the people have spoken. If it breaks; blame adminbus
diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm
index bd9088eff2..f8fd94142f 100644
--- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm
+++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm
@@ -266,7 +266,7 @@
var/selectors_used = FALSE
var/list/combined_refs = list()
do
- CHECK_TICK
+ stoplag(2)
finished = TRUE
for(var/i in running)
var/datum/sdql2_query/query = i
diff --git a/code/modules/arousal/arousal.dm b/code/modules/arousal/arousal.dm
index 1d698ec111..863ab4f337 100644
--- a/code/modules/arousal/arousal.dm
+++ b/code/modules/arousal/arousal.dm
@@ -171,23 +171,6 @@
else if(!silent)
to_chat(src, "
You cannot do this without an appropriate container. ")
-/mob/living/carbon/human/proc/available_rosie_palms(silent = FALSE, list/whitelist_typepaths = list(/obj/item/dildo))
- if(restrained(TRUE)) //TRUE ignores grabs
- if(!silent)
- to_chat(src, "
You can't do that while restrained! ")
- return FALSE
- if(!get_num_arms() || !get_empty_held_indexes())
- if(whitelist_typepaths)
- if(!islist(whitelist_typepaths))
- whitelist_typepaths = list(whitelist_typepaths)
- for(var/path in whitelist_typepaths)
- if(is_holding_item_of_type(path))
- return TRUE
- if(!silent)
- to_chat(src, "
You need at least one free arm. ")
- return FALSE
- return TRUE
-
//Here's the main proc itself
/mob/living/carbon/human/proc/mob_climax(forced_climax=FALSE) //Forced is instead of the other proc, makes you cum if you have the tools for it, ignoring restraints
if(mb_cd_timer > world.time)
@@ -240,43 +223,8 @@
return
//Ok, now we check what they want to do.
- var/choice = input(src, "Select sexual activity", "Sexual activity:") as null|anything in list("Climax alone","Climax with partner", "Fill container")
+ var/choice = input(src, "Select sexual activity", "Sexual activity:") as null|anything in list("Climax with partner")
if(!choice)
return
- switch(choice)
- if("Climax alone")
- if(!available_rosie_palms())
- return
- var/obj/item/organ/genital/picked_organ = pick_climax_genitals()
- if(picked_organ && available_rosie_palms(TRUE))
- mob_climax_outside(picked_organ)
- if("Climax with partner")
- //We need no hands, we can be restrained and so on, so let's pick an organ
- var/obj/item/organ/genital/picked_organ = pick_climax_genitals()
- if(picked_organ)
- var/mob/living/partner = pick_partner() //Get someone
- if(partner)
- var/spillage = input(src, "Would your fluids spill outside?", "Choose overflowing option", "Yes") as null|anything in list("Yes", "No")
- if(spillage && in_range(src, partner))
- mob_climax_partner(picked_organ, partner, spillage == "Yes" ? TRUE : FALSE)
- if("Fill container")
- //We'll need hands and no restraints.
- if(!available_rosie_palms(FALSE, /obj/item/reagent_containers))
- return
- //We got hands, let's pick an organ
- var/obj/item/organ/genital/picked_organ
- picked_organ = pick_climax_genitals() //Gotta be climaxable, not just masturbation, to fill with fluids.
- if(picked_organ)
- //Good, got an organ, time to pick a container
- var/obj/item/reagent_containers/fluid_container = pick_climax_container()
- if(fluid_container && available_rosie_palms(TRUE, /obj/item/reagent_containers))
- mob_fill_container(picked_organ, fluid_container)
-
mb_cd_timer = world.time + mb_cd_length
-
-/*/mob/living/carbon/human/verb/climax_verb() // LoneStar removal.
- set category = "IC"
- set name = "Climax"
- set desc = "Lets you choose a couple ways to ejaculate."
- mob_climax()*/
diff --git a/code/modules/arousal/toys/dildos.dm b/code/modules/arousal/toys/dildos.dm
deleted file mode 100644
index 3f6fa9bb45..0000000000
--- a/code/modules/arousal/toys/dildos.dm
+++ /dev/null
@@ -1,160 +0,0 @@
-//////////
-//DILDOS//
-//////////
-/obj/item/dildo
- name = "dildo"
- desc = "Floppy!"
- icon = 'icons/obj/genitals/dildo.dmi'
- force = 0
- hitsound = 'sound/weapons/tap.ogg'
- throwforce = 0
- icon_state = "dildo_knotted_2"
- alpha = 192//transparent
- var/can_customize = FALSE
- var/dildo_shape = "human"
- var/dildo_size = 2
- var/dildo_type = "dildo"//pretty much just used for the icon state
- var/random_color = TRUE
- var/random_size = FALSE
- var/random_shape = FALSE
- var/is_knotted = FALSE
- //Lists moved to _cit_helpers.dm as globals so they're not instanced individually
-
-/obj/item/dildo/proc/update_appearance()
- icon_state = "[dildo_type]_[dildo_shape]_[dildo_size]"
- var/sizeword = ""
- switch(dildo_size)
- if(1)
- sizeword = "small "
- if(3)
- sizeword = "big "
- if(4)
- sizeword = "huge "
- if(5)
- sizeword = "gigantic "
-
- name = "[sizeword][dildo_shape] [can_customize ? "custom " : ""][dildo_type]"
-
-/obj/item/dildo/AltClick(mob/living/user)
- . = ..()
- if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
- return
- customize(user)
- return TRUE
-
-/obj/item/dildo/proc/customize(mob/living/user)
- if(!can_customize)
- return FALSE
- if(src && !user.incapacitated() && in_range(user,src))
- var/color_choice = input(user,"Choose a color for your dildo.","Dildo Color") as null|anything in GLOB.dildo_colors
- if(src && color_choice && !user.incapacitated() && in_range(user,src))
- sanitize_inlist(color_choice, GLOB.dildo_colors, "Red")
- color = GLOB.dildo_colors[color_choice]
- update_appearance()
- if(src && !user.incapacitated() && in_range(user,src))
- var/shape_choice = input(user,"Choose a shape for your dildo.","Dildo Shape") as null|anything in GLOB.dildo_shapes
- if(src && shape_choice && !user.incapacitated() && in_range(user,src))
- sanitize_inlist(shape_choice, GLOB.dildo_colors, "Knotted")
- dildo_shape = GLOB.dildo_shapes[shape_choice]
- update_appearance()
- if(src && !user.incapacitated() && in_range(user,src))
- var/size_choice = input(user,"Choose the size for your dildo.","Dildo Size") as null|anything in GLOB.dildo_sizes
- if(src && size_choice && !user.incapacitated() && in_range(user,src))
- sanitize_inlist(size_choice, GLOB.dildo_colors, "Medium")
- dildo_size = GLOB.dildo_sizes[size_choice]
- update_appearance()
- if(src && !user.incapacitated() && in_range(user,src))
- var/transparency_choice = input(user,"Choose the transparency of your dildo. Lower is more transparent!(192-255)","Dildo Transparency") as null|num
- if(src && transparency_choice && !user.incapacitated() && in_range(user,src))
- sanitize_integer(transparency_choice, 192, 255, 192)
- alpha = transparency_choice
- update_appearance()
- return TRUE
-
-/obj/item/dildo/Initialize()
- . = ..()
- if(random_color == TRUE)
- var/randcolor = pick(GLOB.dildo_colors)
- color = GLOB.dildo_colors[randcolor]
- if(random_shape == TRUE)
- var/randshape = pick(GLOB.dildo_shapes)
- dildo_shape = GLOB.dildo_shapes[randshape]
- if(random_size == TRUE)
- var/randsize = pick(GLOB.dildo_sizes)
- dildo_size = GLOB.dildo_sizes[randsize]
- update_appearance()
- alpha = rand(192, 255)
- pixel_y = rand(-7,7)
- pixel_x = rand(-7,7)
-
-/obj/item/dildo/examine(mob/user)
- . = ..()
- if(can_customize)
- . += "
Alt-Click \the [src.name] to customize it. "
-
-/obj/item/dildo/random//totally random
- name = "random dildo"//this name will show up in vendors and shit so you know what you're vending(or don't, i guess :^))
- random_color = TRUE
- random_shape = TRUE
- random_size = TRUE
-
-/obj/item/dildo/knotted
- dildo_shape = "knotted"
- name = "knotted dildo"
- attack_verb = list("penetrated", "knotted", "slapped", "inseminated")
-
-obj/item/dildo/human
- dildo_shape = "human"
- name = "human dildo"
- attack_verb = list("penetrated", "slapped", "inseminated")
-
-obj/item/dildo/plain
- dildo_shape = "plain"
- name = "plain dildo"
- attack_verb = list("penetrated", "slapped", "inseminated")
-
-obj/item/dildo/flared
- dildo_shape = "flared"
- name = "flared dildo"
- attack_verb = list("penetrated", "slapped", "neighed", "gaped", "prolapsed", "inseminated")
-
-obj/item/dildo/flared/huge
- name = "literal horse cock"
- desc = "THIS THING IS HUGE!"
- dildo_size = 4
- force = 10
-
-obj/item/dildo/custom
- name = "customizable dildo"
- desc = "Thanks to significant advances in synthetic nanomaterials, this dildo is capable of taking on many different forms to fit the user's preferences! Pricy!"
- can_customize = TRUE
- random_color = TRUE
- random_shape = TRUE
- random_size = TRUE
-
-// Suicide acts, by request
-
-/obj/item/dildo/proc/manual_suicide(mob/living/user)
- user.visible_message("
[user] finally finishes deepthroating the [src], and their life. ")
- user.adjustOxyLoss(200)
- user.death(0)
-
-/obj/item/dildo/suicide_act(mob/living/user)
-// is_knotted = ((src.dildo_shape == "knotted")?"They swallowed the knot":"Their face is turning blue")
- if(do_after(user,17,target=src))
- user.visible_message("
[user] tears-up and gags as they shove [src] down their throat! It looks like [user.p_theyre()] trying to commit suicide! ")
- playsound(loc, 'sound/weapons/gagging.ogg', 50, 1, -1)
- user.Stun(150)
- user.adjust_blurriness(8)
- var/obj/item/organ/eyes/eyes = user.getorganslot(ORGAN_SLOT_EYES)
- eyes?.applyOrganDamage(10)
- return MANUAL_SUICIDE
-
-/obj/item/dildo/flared/huge/suicide_act(mob/living/user)
- if(do_after(user,35,target=src))
- user.visible_message("
[user] tears-up and gags as they try to deepthroat the [src]! WHY WOULD THEY DO THAT? It looks like [user.p_theyre()] trying to commit suicide!! ")
- playsound(loc, 'sound/weapons/gagging.ogg', 50, 2, -1)
- user.Stun(300)
- user.adjust_blurriness(8)
- return MANUAL_SUICIDE
-
diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm
index 29e6d56ab8..d2bea5d1d2 100644
--- a/code/modules/asset_cache/asset_list_items.dm
+++ b/code/modules/asset_cache/asset_list_items.dm
@@ -245,24 +245,6 @@
)
*/
-/datum/asset/spritesheet/simple/minesweeper
- name = "minesweeper"
- assets = list(
- "1" = 'icons/ui_icons/minesweeper_tiles/one.png',
- "2" = 'icons/ui_icons/minesweeper_tiles/two.png',
- "3" = 'icons/ui_icons/minesweeper_tiles/three.png',
- "4" = 'icons/ui_icons/minesweeper_tiles/four.png',
- "5" = 'icons/ui_icons/minesweeper_tiles/five.png',
- "6" = 'icons/ui_icons/minesweeper_tiles/six.png',
- "7" = 'icons/ui_icons/minesweeper_tiles/seven.png',
- "8" = 'icons/ui_icons/minesweeper_tiles/eight.png',
- "empty" = 'icons/ui_icons/minesweeper_tiles/empty.png',
- "flag" = 'icons/ui_icons/minesweeper_tiles/flag.png',
- "hidden" = 'icons/ui_icons/minesweeper_tiles/hidden.png',
- "mine" = 'icons/ui_icons/minesweeper_tiles/mine.png',
- "minehit" = 'icons/ui_icons/minesweeper_tiles/minehit.png'
- )
-
/datum/asset/spritesheet/simple/pills
name = "pills"
assets = list(
diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm
index c1319f5f83..0074f6839f 100644
--- a/code/modules/cargo/packs/misc.dm
+++ b/code/modules/cargo/packs/misc.dm
@@ -145,8 +145,6 @@
/obj/item/circuitboard/computer/arcade/battle,
/obj/item/circuitboard/computer/arcade/orion_trail,
/obj/item/circuitboard/computer/arcade/orion_trail,
- /obj/item/circuitboard/computer/arcade/minesweeper,
- /obj/item/circuitboard/computer/arcade/minesweeper,
/obj/item/circuitboard/computer/slot_machine,
/obj/item/circuitboard/computer/slot_machine,
/obj/item/circuitboard/computer/slot_machine,
@@ -395,26 +393,6 @@
/obj/item/stack/tile/noslip/thirty)
crate_name = "high-traction floor tiles crate"
-//////////////////////////////////////////////////////////////////////////////
-//////////////////////////////// Lewd Supplies ///////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-/datum/supply_pack/misc/lewd
- name = "Lewd Crate" // OwO
- desc = "Pssst, want to have a good time with your sluts? Well I got what you want! Maid clothing, dildos, collars and more!"
- cost = 5250
- contraband = TRUE
- contains = list(/obj/item/dildo/custom,
- /obj/item/dildo/custom,
- /obj/item/clothing/under/costume/maid,
- /obj/item/clothing/under/costume/maid,
- /obj/item/electropack/shockcollar,
- /obj/item/electropack/shockcollar,
- /obj/item/restraints/handcuffs/fake/kinky,
- /obj/item/restraints/handcuffs/fake/kinky)
- crate_name = "lewd kit"
- crate_type = /obj/structure/closet/crate
-
///Special supply crate that generates random syndicate gear up to a determined TC value
/datum/supply_pack/misc/syndicate
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index c816d79d0f..04a332d914 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -717,9 +717,9 @@ Records disabled until a use for them is found
dat += "
Auto stand: [autostand ? "Enabled" : "Disabled"] "
dat += "
Auto OOC: [auto_ooc ? "Disabled" : "Enabled" ] "
dat += "
Force Slot Storage HUD: [no_tetris_storage ? "Enabled" : "Disabled"] "
-// dat += "
Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")] "
-// if (user && user.client && !user.client.prefs.screenshake==0)
-// dat += "
Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")] "
+ dat += "
Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")] "
+ if (user && user.client && !user.client.prefs.screenshake==0)
+ dat += "
Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")] "
var/p_chaos
if (!preferred_chaos)
p_chaos = "No preference"
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index f4e1cb8479..575b09754d 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -262,22 +262,22 @@
if(LAZYLEN(armor_list))
armor_list.Cut()
- if(armor.bio)
- armor_list += list("TOXIN" = armor.bio)
- if(armor.bomb)
- armor_list += list("EXPLOSIVE" = armor.bomb)
+ if(armor.melee)
+ armor_list += list("MELEE" = armor.melee)
if(armor.bullet)
armor_list += list("BULLET" = armor.bullet)
- if(armor.energy)
- armor_list += list("ENERGY" = armor.energy)
if(armor.laser)
armor_list += list("LASER" = armor.laser)
- if(armor.magic)
- armor_list += list("MAGIC" = armor.magic)
- if(armor.melee)
- armor_list += list("MELEE" = armor.melee)
+ if(armor.energy)
+ armor_list += list("ENERGY" = armor.energy)
+ if(armor.bio)
+ armor_list += list("TOXIN" = armor.bio)
+ if(armor.bomb)
+ armor_list += list("EXPLOSIVE" = armor.bomb)
if(armor.rad)
armor_list += list("RADIATION" = armor.rad)
+ if(armor.magic)
+ armor_list += list("MAGIC" = armor.magic)
if(LAZYLEN(durability_list))
durability_list.Cut()
@@ -286,8 +286,8 @@
if(armor.acid)
durability_list += list("ACID" = armor.acid)
- //if(LAZYLEN(armor_list) || LAZYLEN(durability_list))
- // . += "
It has a tag listing its protection classes. "
+ if(LAZYLEN(armor_list) || LAZYLEN(durability_list))
+ . += "
It has a tag listing its protection classes. "
/obj/item/clothing/Topic(href, href_list)
. = ..()
@@ -298,48 +298,16 @@
readout += "\n
ARMOR "
for(var/dam_type in armor_list)
var/armor_amount = armor_list[dam_type]
- readout += "\n[dam_type] [armor_to_protection_class(armor_amount)]" //e.g. BOMB IV
+ readout += "\n[dam_type] [armor_amount]" //e.g. MELEE 27
if(LAZYLEN(durability_list))
readout += "\n
DURABILITY "
for(var/dam_type in durability_list)
var/durability_amount = durability_list[dam_type]
- readout += "\n[dam_type] [armor_to_protection_class(durability_amount)]" //e.g. FIRE II
+ readout += "\n[dam_type] [durability_amount]" //e.g. ACID 20
readout += ""
to_chat(usr, "[readout.Join()]")
-/**
- * Rounds armor_value to nearest 10, divides it by 10 and then expresses it in roman numerals up to 10
- *
- * Rounds armor_value to nearest 10, divides it by 10
- * and then expresses it in roman numerals up to 10
- * Arguments:
- * * armor_value - Number we're converting
- */
-/obj/item/clothing/proc/armor_to_protection_class(armor_value)
- armor_value = round(armor_value,10) / 10
- switch (armor_value)
- if (1)
- . = "I"
- if (2)
- . = "II"
- if (3)
- . = "III"
- if (4)
- . = "IV"
- if (5)
- . = "V"
- if (6)
- . = "VI"
- if (7)
- . = "VII"
- if (8)
- . = "VIII"
- if (9)
- . = "IX"
- if (10 to INFINITY)
- . = "X"
- return .
/obj/item/clothing/obj_break(damage_flag)
damaged_clothes = CLOTHING_DAMAGED
diff --git a/code/modules/clothing/head/f13factionhead.dm b/code/modules/clothing/head/f13factionhead.dm
index 0512ee3f1c..2eac62f028 100644
--- a/code/modules/clothing/head/f13factionhead.dm
+++ b/code/modules/clothing/head/f13factionhead.dm
@@ -55,7 +55,7 @@
icon_state = "supafly"
item_state = "supafly"
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
- armor = list("melee" = 35, "bullet" = 35, "laser" = 30, energy = "20", "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25)
+ armor = list("melee" = 35, "bullet" = 35, "laser" = 30, energy = "20", "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25, "wound" = 40)
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
slowdown = 0
@@ -86,7 +86,7 @@
icon_state = "arclight"
item_state = "arclight"
visor_flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
- armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25)
+ armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25, "wound" = 40)
flash_protect = 2
tint = 0.5
@@ -99,7 +99,7 @@
desc = "A sturdy helmet to protect against both the elements and from harm, if only it was not looking in such poor condition."
icon_state = "blastmaster"
item_state = "blastmaster"
- armor = list("melee" = 40, "bullet" = 20, "laser" = 40, "bio" = 0, "bomb" = 50, "rad" = 0, "fire" = 25, "acid" = 25)
+ armor = list("melee" = 40, "bullet" = 20, "laser" = 40, "bio" = 0, "bomb" = 50, "rad" = 0, "fire" = 25, "acid" = 25, "wound" = 40)
dynamic_hair_suffix = ""
dynamic_fhair_suffix = ""
@@ -151,7 +151,7 @@
desc = "A leather cap cobbled together adorned with a bighorner skull, perfect for any drug-fueled frenzy."
icon_state = "fiend"
item_state = "fiend"
- armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 20, "bomb" = 40, "bio" = 40, "rad" = 20, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 20, "bomb" = 40, "bio" = 40, "rad" = 20, "fire" = 60, "acid" = 20, "wound" = 40)
flags_inv = HIDEEARS|HIDEHAIR
/obj/item/clothing/head/helmet/f13/fiend_reinforced
@@ -159,7 +159,7 @@
desc = "A leather cap cobbled together adorned with a bighorner skull, perfect for any drug-fueled frenzy. This helmet has been reinforced with metal plates under its skull"
icon_state = "fiend"
item_state = "fiend"
- armor = list("melee" = 40, "bullet" = 40, "laser" = 35, "energy" = 20, "bomb" = 45, "bio" = 40, "rad" = 20, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 40, "bullet" = 40, "laser" = 35, "energy" = 20, "bomb" = 45, "bio" = 40, "rad" = 20, "fire" = 60, "acid" = 20, "wound" = 40)
flags_inv = HIDEEARS|HIDEHAIR
slowdown = 0.025
@@ -169,7 +169,7 @@
icon_state = "raidermetal"
item_state = "raidermetal"
can_toggle = TRUE
- armor = list("melee" = 35, "bullet" = 25, "laser" = 40, "energy" = 25, "bomb" = 45, "bio" = 30, "rad" = 15, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 25, "laser" = 40, "energy" = 25, "bomb" = 45, "bio" = 30, "rad" = 15, "fire" = 60, "acid" = 0, "wound" = 40)
flags_inv = HIDEMASK|HIDEEYES|HIDEFACE
strip_delay = 80
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
@@ -180,7 +180,7 @@
desc = "A combat helmet modified with metal plating"
icon_state = "raider_combat_helmet"
item_state = "raider_combat_helmet"
- armor = list("melee" = 37, "bullet" = 27, "laser" = 42, "energy" = 27, "bomb" = 47, "bio" = 30, "rad" = 15, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 37, "bullet" = 27, "laser" = 42, "energy" = 27, "bomb" = 47, "bio" = 30, "rad" = 15, "fire" = 60, "acid" = 0, "wound" = 40)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
slowdown = 0.025
@@ -194,7 +194,6 @@
item_state = "hat_enclave_science"
flags_inv = HIDEEARS|HIDEFACE
flags_cover = null
- armor = list("tier" = 1)
/obj/item/clothing/head/helmet/f13/helmet/enclave/intel
name = "intel beret"
@@ -203,7 +202,6 @@
item_state = "hat_enclave_intel"
flags_inv = HIDEEARS|HIDEFACE
flags_cover = null
- armor = list("tier" = 3)
/obj/item/clothing/head/helmet/f13/helmet/enclave/peacekeeper
name = "peacekeeper cap"
@@ -214,14 +212,13 @@
strip_delay = 50
dynamic_hair_suffix = ""
dynamic_fhair_suffix = ""
- armor = list("tier" = 4)
/obj/item/clothing/head/helmet/f13/helmet/enclave/officer
name = "enclave officer hat"
- desc = "(VII) Wheeled hat with a cap made of light-weight alloys beneath."
+ desc = "Wheeled hat with a cap made of light-weight alloys beneath."
icon_state = "hat_enclave_officer"
item_state = "hat_enclave_officer"
- armor = list("tier" = 7, "energy" = 45, "bomb" = 60, "bio" = 60, "rad" = 15, "fire" = 60, "acid" = 30) // On par with BoS Knight
+
//////////
//LEGION//
@@ -235,7 +232,7 @@
mob_overlay_icon = 'icons/fallout/onmob/clothes/head.dmi'
lefthand_file = ""
righthand_file = ""
- armor = list("melee" = 30, "bullet" = 30, "laser" = 10, "energy" = 10, "bomb" = 15, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0)
+ armor = list("melee" = 30, "bullet" = 30, "laser" = 10, "energy" = 10, "bomb" = 15, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0, "wound" = 40)
flags_inv = HIDEEARS|HIDEHAIR
strip_delay = 50
dynamic_hair_suffix = ""
@@ -257,14 +254,14 @@
desc = "It's a leather skullcap issued to recruits."
icon_state = "legion-recruit"
item_state = "legion-recruit"
-
+
/obj/item/clothing/head/helmet/f13/legion/prime
name = "legion prime helmet"
desc = "A helmet from reinforced leather with a red peak."
item_state = "legion-prime"
icon_state = "legion-prime"
- armor = list("melee" = 35, "bullet" = 35, "laser" = 15, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 35, "laser" = 15, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/helmet/f13/legion/prime/slavemaster
name = "slavemaster helmet"
@@ -280,21 +277,21 @@
desc = "It's a metal legion veteran helmet, clearly inspired by old world sports uniforms."
icon_state = "legion-veteran"
item_state = "legion-veteran"
- armor = list("melee" = 37, "bullet" = 37, "laser" = 20, "energy" = 15, "bomb" = 30, "bio" = 5, "rad" = 5, "fire" = 35, "acid" = 0)
-
+ armor = list("melee" = 37, "bullet" = 37, "laser" = 20, "energy" = 15, "bomb" = 30, "bio" = 5, "rad" = 5, "fire" = 35, "acid" = 0, "wound" = 40)
+
/obj/item/clothing/head/helmet/f13/legion/vet/explorer
name = "legion explorer hood"
desc = "(It's a leather hood with metal reinforcments and built in headphones to plug the radio into."
icon_state = "legion-explorer"
item_state = "legion-explorer"
- armor = list("melee" = 35, "bullet" = 35, "laser" = 15, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0)
-
+ armor = list("melee" = 35, "bullet" = 35, "laser" = 15, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0, "wound" = 40)
+
/obj/item/clothing/head/helmet/f13/legion/vet/combvexil
name = "legion bear vexillarius helmet"
desc = "This helmet is decorated with the pelt of a ashland bear."
icon_state = "legion-vex"
item_state = "legion-vex"
- armor = list("melee" = 35, "bullet" = 35, "laser" = 15, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 35, "laser" = 15, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/helmet/f13/legion/vet/vexil
name = "legion fox vexillarius helmet"
@@ -302,34 +299,39 @@
icon_state = "legion-vex-alt"
item_state = "legion-vex-alt"
+/obj/item/clothing/head/helmet/f13/legion/vet/nightvexil
+ name = "legion nightstalker vexillarius helmet"
+ desc = "This helmet is decorated with the pelt of a nightstalker."
+ icon_state = "legion-vex-night"
+ item_state = "legion-vex-night"
/obj/item/clothing/head/helmet/f13/legion/venator
name = "legion venator hood"
desc = "A leather hood with a sturdy metal skullcap and a gold bull insignia in the front."
icon_state = "legion-venator"
item_state = "legion-venator"
- armor = list("melee" = 35, "bullet" = 35, "laser" = 15, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 35, "laser" = 15, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/helmet/f13/legion/recruit/decan
name = "legion recruit decanus helmet"
desc = "This reinforced leather helmet has a plume of black and dark red feathers."
icon_state = "legion-decrec"
item_state = "legion-decrec"
- armor = list("melee" = 37, "bullet" = 37, "laser" = 20, "energy" = 15, "bomb" = 30, "bio" = 5, "rad" = 5, "fire" = 35, "acid" = 0)
+ armor = list("melee" = 37, "bullet" = 37, "laser" = 20, "energy" = 15, "bomb" = 30, "bio" = 5, "rad" = 5, "fire" = 35, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/helmet/f13/legion/prime/decan
name = "legion prime decanus helmet"
desc = "This reinforced leather helmet with a red peak has a plume of black feathers."
item_state = "legion-decprime"
icon_state = "legion-decprime"
- armor = list("melee" = 37, "bullet" = 37, "laser" = 20, "energy" = 15, "bomb" = 30, "bio" = 5, "rad" = 5, "fire" = 35, "acid" = 0)
+ armor = list("melee" = 37, "bullet" = 37, "laser" = 20, "energy" = 15, "bomb" = 30, "bio" = 5, "rad" = 5, "fire" = 35, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/helmet/f13/legion/heavy
name = "reinforced legion veteran decanus helmet"
desc = "A metal helmet with ballistic visor and a plume, denoting veteran Decanus status."
icon_state = "legion-decvet"
item_state = "legion-decvet"
- armor = list("melee" = 35, "bullet" = 50, "laser" = 15, "energy" = 15, "bomb" = 25, "bio" = 50, "rad" = 20, "fire" = 70, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 50, "laser" = 15, "energy" = 15, "bomb" = 25, "bio" = 50, "rad" = 20, "fire" = 70, "acid" = 0, "wound" = 40)
actions_types = list(/datum/action/item_action/toggle)
/obj/item/clothing/head/helmet/f13/legion/heavy/attack_self(mob/user)
@@ -342,14 +344,14 @@
desc = "It's a metal helmet with an array of red, white and black feathers, unmistakably a Veteran Decanus."
icon_state = "legion-decvet-alt"
item_state = "legion-decvet-alt"
- armor = list("melee" = 37, "bullet" = 37, "laser" = 20, "energy" = 15, "bomb" = 30, "bio" = 5, "rad" = 5, "fire" = 35, "acid" = 0)
+ armor = list("melee" = 37, "bullet" = 37, "laser" = 20, "energy" = 15, "bomb" = 30, "bio" = 5, "rad" = 5, "fire" = 35, "acid" = 0, "wound" = 50)
/obj/item/clothing/head/helmet/f13/legion/centurion
name = "legion centurion helmet"
desc = "A sturdy helmet from steel and brass with a red horizontal plume."
icon_state = "legion-centurion"
item_state = "legion-centurion"
- armor = list("melee" = 55, "bullet" = 55, "laser" = 20, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0)
+ armor = list("melee" = 55, "bullet" = 55, "laser" = 20, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0, "wound" = 55)
resistance_flags = LAVA_PROOF | FIRE_PROOF
/obj/item/clothing/head/helmet/f13/legion/rangercent
@@ -357,7 +359,7 @@
desc = "The helmet of an NCR ranger, refit to serve as a Centurions helmet."
icon_state = "legion-rangercent"
item_state = "legion-rangercent"
- armor = list("melee" = 50, "bullet" = 65, "laser" = 25, "energy" = 35, "bomb" = 39, "bio" = 60, "rad" = 20, "fire" = 80, "acid" = 0)
+ armor = list("melee" = 50, "bullet" = 65, "laser" = 25, "energy" = 35, "bomb" = 39, "bio" = 60, "rad" = 20, "fire" = 80, "acid" = 0, "wound" = 55)
resistance_flags = LAVA_PROOF | FIRE_PROOF
/obj/item/clothing/head/helmet/f13/legion/palacent
@@ -365,7 +367,7 @@
desc = "The once-marvelous helmet of the T-45d power armor set, repurposed by the Legion into a symbol of its might. It has a large plume of red horse hair across the top of it going horizontally, donoting the rank of Centurion."
icon_state = "legion-palacent"
item_state = "legion-palacent"
- armor = list("melee" = 65, "bullet" = 45, "laser" = 30, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0)
+ armor = list("melee" = 65, "bullet" = 45, "laser" = 30, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0, "wound" = 55)
resistance_flags = LAVA_PROOF | FIRE_PROOF
/obj/item/clothing/head/helmet/f13/legion/legate
@@ -373,7 +375,7 @@
desc = "A custom forged steel full helmet complete with abstract points and arches. The face is extremely intimidating, as it was meant to be. This particular one was ordered to be forged by Caesar, given to his second legate in exchange for his undying loyalty to Caesar."
icon_state = "legion-legate"
item_state = "legion-legate"
- armor = list("melee" = 60, "bullet" = 60, "laser" = 40, "energy" = 35, "bomb" = 45, "bio" = 60, "rad" = 20, "fire" = 80, "acid" = 0)
+ armor = list("melee" = 60, "bullet" = 60, "laser" = 40, "energy" = 35, "bomb" = 45, "bio" = 60, "rad" = 20, "fire" = 80, "acid" = 0, "wound" = 60)
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
flags_inv = HIDEEARS|HIDEEYES|HIDEHAIR
resistance_flags = LAVA_PROOF | FIRE_PROOF
@@ -420,9 +422,9 @@
/obj/item/clothing/head/f13/ncr
name = "NCR trooper helmet"
desc = "A standard issue NCR steel helmet. Looks like you can write on it and strap a few items on the helmet band."
- icon_state = "ncr_steelpot"
- item_state = "ncr_steelpot"
- armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ icon_state = "ncr_old"
+ item_state = "ncr_old"
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
strip_delay = 50
obj_flags = UNIQUE_RENAME
@@ -433,8 +435,8 @@
/obj/item/clothing/head/f13/ncr/steelpot_goggles
name = "NCR storm helmet"
desc = "A standard issue NCR steel helmet, issued with an additional pair of storm goggles for weather resistance."
- icon_state = "steelpot_goggles"
- item_state = "steelpot_goggles"
+ icon_state = "ncr_goggles_helmet"
+ item_state = "ncr_goggles_helmet"
alt_toggle_message = "You push the goggles down "
can_toggle = 1
flags_inv = HIDEEARS
@@ -468,33 +470,33 @@
/obj/item/clothing/head/f13/ncr/steelpot_med
name = "NCR medic helmet"
desc = "(III) A standard issue NCR steel helmet with the addition of decalling signifying a medic."
- icon_state = "steelpot_med"
- item_state = "steelpot_med"
+ icon_state = "ncr_old_med"
+ item_state = "ncr_old_med"
/obj/item/clothing/head/f13/ncr/steelpot_mp
name = "NCR military police helmet"
desc = "A standard issue NCR steel helmet emblazoned with the initials of the military police."
- icon_state = "steelpot_mp"
- item_state = "steelpot_mp"
+ icon_state = "ncr_old_mp"
+ item_state = "ncr_old_mp"
/obj/item/clothing/head/f13/ncr/steelpot_gambler
name = "NCR gambler helmet"
desc = "A standard issue NCR steel helmet. Stashed in the strap are decks of cards, dominoes and cigarettes for personal use."
- icon_state = "steelpot_gambler"
- item_state = "steelpot_gambler"
+ icon_state = "ncr_old_gambler"
+ item_state = "ncr_old_gambler"
/obj/item/clothing/head/f13/ncr/steelpot_bandolier
name = "NCR bandolier helmet"
desc = "A standard issue NCR steel helmet. This one has clearly seen heavy use, as well as having additional bullets tucked into the strap."
- icon_state = "steelpot_bandolier"
- item_state = "steelpot_bandolier"
+ icon_state = "ncr_old_bandolier"
+ item_state = "ncr_old_bandolier"
/obj/item/clothing/head/f13/ncr_flapcap
name = "NCR field cap"
desc = "A special issue canvas NCR field cap with cotton neckflap, for sun protection in arid climates."
icon_state = "ncr_flapcap"
item_state = "ncr_flapcap"
- armor = list("tier" = 3, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
icon_state = "ncr_flapcap"
item_state = "ncr_flapcap"
@@ -503,107 +505,107 @@
desc = "An irregular issue NCR sun hat, the left side of the brim is pinned to the crown for ease with shouldering rifles."
icon_state = "ncr_slouch"
item_state = "ncr_slouch"
- armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
-
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
+
/obj/item/clothing/head/beret/ncr
name = "NCR officer beret"
desc = "A green beret, standard issue for all commissioned NCR Officers."
icon_state = "ncr_officer_beret"
item_state = "ncr_officer_beret"
- armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/beret/ncr/ncr_medic
name = "NCR medical beret"
desc = "A white beret, issued to officers of the medical corps."
icon_state = "ncr_medical_beret"
item_state = "ncr_medical_beret"
- armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/beret/ncr_recon
name = "NCR First Recon beret"
desc = "A red beret, issued to members of NCR First Recon."
icon_state = "ncr_recon_beret"
item_state = "ncr_recon_beret"
- armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/beret/ncr_recon/worn
name = "Worn NCR First Recon beret"
desc = "A red beret, issued to members of NCR First Recon. This one is worn, having been kept when a soldier was transfered from the unit."
icon_state = "ncr_recon_beret"
item_state = "ncr_recon_beret"
- armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/beret/ncr_scout
name = "NCR Third Scout beret"
desc = "A brown beret, issued to members of the NCR Third Scout Battallion."
icon_state = "scoutberet"
item_state = "scoutberet"
- armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
-
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
+
/obj/item/clothing/head/beret/ncr_scout_lt
name = "NCR Third Scout officer beret"
desc = "A brown beret, issued to officers of the NCR Third Scout Battallion."
icon_state = "scoutberet"
item_state = "scoutberet"
- armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/beret/ncr_sapper
name = "NCR Sapper beret"
desc = "A grey beret, issued to troopers that have passed Sapper School."
icon_state = "ncr_sapper_beret"
item_state = "ncr_sapper_beret"
- armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/beret/ncr_sof
name = "NCR SOF beret"
desc = "A tan beret, issued members of the New California Republic Special Operations Command."
icon_state = "ncr_sof_beret"
item_state = "ncr_sof_beret"
- armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
-
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
+
/obj/item/clothing/head/f13/ncr_stetson
name = "NCR air cavalry stetson"
desc = "A black brahmin leather stetson, authorized for usage amongst all troopers assigned to Air Cavalry units."
icon_state = "ncr_stetson"
item_state = "ncr_stetson"
- armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/f13/ncr_cap
name = "NCR garrison cap"
desc = "A simple cloth garrison cap to be worn when a helmet isn't necessary."
icon_state = "ncr_cap"
item_state = "ncr_cap"
- armor = list("melee" = 20, "bullet" = 20, "laser" = 10, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 20, "bullet" = 20, "laser" = 10, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/f13/ncr_campaign
name = "NCR campaign hat"
desc = "A khaki campaign hat, popularly used by senior NCOs in the NCRA."
icon_state = "ncr_campaign"
item_state = "ncr_campaign"
- armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/beret/ncr_dresscap
name = "NCR peaked cap"
desc = "A tan peaked cap with silver pin, designated for enlisted NCRA personnel."
icon_state = "ncr_dresscap"
item_state = "ncr_dresscap"
- armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/beret/ncr_codresscap
name = "NCR peaked cap"
desc = "A tan peaked cap with golden pin, designated for commissioned NCRA personnel."
icon_state = "ncr_codresscap"
item_state = "ncr_codresscap"
- armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
//NCR Ranger
/obj/item/clothing/head/beret/ncr_recon_ranger
name = "NCR Ranger scout beret"
- desc = "(IV) A brown beret, issued to members of the NCR Recon Rangers."
+ desc = " A brown beret, issued to members of the NCR Recon Rangers."
icon_state = "scoutberet"
item_state = "scoutberet"
- armor = list("melee" = 35, "bullet" = 45, "laser" = 25, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 45, "laser" = 25, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/beret/ncr_recon_ranger/Initialize()
. = ..()
@@ -614,7 +616,7 @@
desc = "a rustic, homely style cowboy hat worn by NCR trail rangers. Yeehaw!"
icon_state = "cowboyrang"
item_state = "cowboyrang"
- armor = list("melee" = 35, "bullet" = 45, "laser" = 25, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 45, "laser" = 25, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/f13/trailranger/Initialize()
. = ..()
@@ -625,7 +627,7 @@
desc = "An NCR ranger hat, standard issue amongst all but the most elite rangers."
icon_state = "rangerhat"
item_state = "rangerhat"
- armor = list("melee" = 35, "bullet" = 45, "laser" = 25, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 45, "laser" = 25, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/f13/ranger/Initialize()
. = ..()
@@ -633,14 +635,14 @@
/obj/item/clothing/head/helmet/f13/combat/ncr_patrol
name = "NCR patrol helmet"
- desc = "(IV) A combat helmet hand-manufactured in the NCR and issued to patrol rangers."
+ desc = " A combat helmet hand-manufactured in the NCR and issued to patrol rangers."
icon_state = "ncr_patrol_helmet"
item_state = "ncr_patrol_helmet"
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
- armor = list("melee" = 35, "bullet" = 45, "laser" = 25, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
-
-/obj/item/clothing/head/f13/combat/ncr_patrol/Initialize()
+ armor = list("melee" = 35, "bullet" = 45, "laser" = 25, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
+
+/obj/item/clothing/head/helmet/f13/combat/ncr_patrol/Initialize()
. = ..()
AddComponent(/datum/component/armor_plate)
@@ -661,7 +663,7 @@
desc = "An old combat helmet, out of use around the time of the war."
icon_state = "ranger"
item_state = "ranger"
- armor = list("melee" = 50, "bullet" = 50, "laser" = 40, "energy" = 22, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 40, "energy" = 22, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 55)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
resistance_flags = LAVA_PROOF | FIRE_PROOF
@@ -677,7 +679,7 @@
desc = "An old combat helmet seen in the divide, repurposed for higher ranking Rangers."
icon_state = "elite_riot"
item_state = "elite_riot"
- armor = list("melee" = 55, "bullet" = 55, "laser" = 45, "energy" = 24, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 55, "bullet" = 55, "laser" = 45, "energy" = 24, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 55)
/obj/item/clothing/head/helmet/f13/ncr/rangercombat/desert
@@ -694,7 +696,7 @@
darkness_view = null
flash_protect = 0
resistance_flags = null
- armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 15, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 15, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 40)
/obj/item/clothing/head/helmet/f13/rangercombat/eliteriot/reclaimed
@@ -702,7 +704,7 @@
desc = "A refurbished and personalized set of pre-unification desert ranger gear."
icon_state = "desert_ranger"
item_state = "desert_ranger"
- armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 15, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 15, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 40)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
@@ -720,14 +722,14 @@
desc = "An improved combat helmet, bearing the symbol of a Senior Knight."
icon_state = "brotherhood_helmet_senior"
item_state = "brotherhood_helmet_senior"
- armor = list("melee" = 50, "bullet" = 50, "laser" = 40, "energy" = 22, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20)
-
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 40, "energy" = 22, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 50)
+
/obj/item/clothing/head/helmet/f13/combat/brotherhood/captain
name = "brotherhood head knight helmet"
desc = "An improved combat helmet, bearing the symbol of the Head Knight."
icon_state = "brotherhood_helmet_captain"
item_state = "brotherhood_helmet_captain"
- armor = list("melee" = 50, "bullet" = 50, "laser" = 40, "energy" = 22, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 40, "energy" = 22, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 50)
/obj/item/clothing/head/helmet/f13/combat/brotherhood/initiate
name = "initiate helmet"
@@ -740,14 +742,14 @@
desc = "An advanced pre-war titanium plated, ceramic coated, kevlar, padded helmet designed to withstand extreme punishment of all forms, repainted to the colour scheme of the Brotherhood of Steel."
icon_state = "brotherhood_helmet"
item_state = "brotherhood_helmet"
- armor = list("melee" = 45, "bullet" = 45, "laser" = 45, "energy" = 40, "bomb" = 50, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 45, "bullet" = 45, "laser" = 45, "energy" = 40, "bomb" = 50, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 50)
/obj/item/clothing/head/helmet/f13/combat/brotherhood/outcast
name = "brotherhood helmet"
desc = " An improved combat helmet, bearing a series of red markings."
icon_state = "brotherhood_helmet_outcast"
item_state = "brotherhood_helmet_outcast"
- armor = list("melee" = 50, "bullet" = 50, "laser" = 40, "energy" = 22, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 40, "energy" = 22, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 50)
/obj/item/clothing/head/f13/boscap
name = "brotherhood formal cap"
@@ -758,7 +760,7 @@
/obj/item/clothing/head/f13/boscap/beret
name = "brotherhood beret"
- desc = "(I) A beret typically worn with the standard fatigues of the local Brotherhood of Steel Chapter."
+ desc = " A beret typically worn with the standard fatigues of the local Brotherhood of Steel Chapter."
icon_state = "bos_beret"
item_state = "bos_beret"
@@ -770,12 +772,12 @@
icon_state = "tricorn"
item_state = "dethat"
flags_inv = HIDEHAIR
- armor = list("melee" = 25, "bullet" = 25, "laser" = 20, "energy" = 20, "bomb" = 20, "bio" = 5, "rad" = 0, "fire" = 15, "acid" = 5)
+ armor = list("melee" = 25, "bullet" = 25, "laser" = 20, "energy" = 20, "bomb" = 20, "bio" = 5, "rad" = 0, "fire" = 15, "acid" = 5, "wound" = 30)
/obj/item/clothing/head/f13/town/mayor
name = "mayoral tricorn"
desc = "A tricorn in the desert. Stranger things have happened."
- armor = list("melee" = 30, "bullet" = 35, "laser" = 25, "energy" = 25, "bomb" = 25, "bio" = 15, "rad" = 10, "fire" = 15, "acid" = 5)
+ armor = list("melee" = 30, "bullet" = 35, "laser" = 25, "energy" = 25, "bomb" = 25, "bio" = 15, "rad" = 10, "fire" = 15, "acid" = 5, "wound" = 55)
/obj/item/clothing/head/f13/town/big
name = "big hat"
@@ -786,7 +788,7 @@
name = "deputy hat"
desc = "A black cowboy hat."
icon_state = "deputyhat"
- armor = list("melee" = 45, "bullet" = 45, "laser" = 40, "energy" = 35, "bomb" = 30, "bio" = 40, "rad" = 40, "fire" = 50, "acid" = 10)
+ armor = list("melee" = 45, "bullet" = 45, "laser" = 40, "energy" = 35, "bomb" = 30, "bio" = 40, "rad" = 40, "fire" = 50, "acid" = 10, "wound" = 50)
/obj/item/clothing/head/f13/town/deputy/Initialize()
. = ..()
@@ -799,17 +801,30 @@
mob_overlay_icon = 'icons/fallout/onmob/clothes/head.dmi'
icon_state = "police_officer"
item_state = "police_officer"
-
+
armor = list("melee" = 40, "bullet" = 40, "laser" = 35, "energy" = 35, "bomb" = 30, "bio" = 40, "rad" = 40, "fire" = 50, "acid" = 10)
/obj/item/clothing/head/f13/town/officer/Initialize()
. = ..()
AddComponent(/datum/component/armor_plate)
+/obj/item/clothing/head/f13/town/marksman
+ name = "police marksman's cap"
+ desc = "A simple dark navy service cap, worn by police marksmen."
+ icon = 'icons/fallout/clothing/hats.dmi'
+ mob_overlay_icon = 'icons/fallout/onmob/clothes/head.dmi'
+ icon_state = "police_cap"
+ item_state = "police_cap"
+
+ armor = list("melee" = 40, "bullet" = 40, "laser" = 35, "energy" = 35, "bomb" = 30, "bio" = 40, "rad" = 40, "fire" = 50, "acid" = 10)
+/obj/item/clothing/head/f13/town/marksman/Initialize()
+ . = ..()
+ AddComponent(/datum/component/armor_plate)
+
/obj/item/clothing/head/f13/town/sheriff
name = "sheriff hat"
desc = "A black cowboy hat with a snakeskin band."
icon_state = "sheriffhat"
- armor = list("melee" = 50, "bullet" = 50, "laser" = 45, "energy" = 35, "bomb" = 30, "bio" = 40, "rad" = 40, "fire" = 50, "acid" = 10)
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 45, "energy" = 35, "bomb" = 30, "bio" = 40, "rad" = 40, "fire" = 50, "acid" = 10, "wound" = 50)
/obj/item/clothing/head/f13/town/sheriff/Initialize()
. = ..()
@@ -848,7 +863,7 @@
mob_overlay_icon = 'icons/fallout/onmob/clothes/khaans.dmi'
icon_state = "khan_helmet"
item_state = "khan_helmet"
- armor = list("melee" = 30, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 30, "bio" = 40, "rad" = 40, "fire" = 50, "acid" = 10)
+ armor = list("melee" = 30, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 30, "bio" = 40, "rad" = 40, "fire" = 50, "acid" = 10, "wound" = 30)
flags_inv = null
flags_cover = null
strip_delay = 20
@@ -919,7 +934,7 @@
desc = " A Khan helmet modified with steel horns and a full guard comprised of red sunglass lenses and a thick metal plate to conceal the lower face."
icon_state = "khan_fullhelmet"
item_state = "khan_fullhelmet"
- armor = list("melee" = 40, "bullet" = 40, "laser" = 45, "energy" = 25, "bomb" = 35, "bio" = 10, "rad" = 10, "fire" = 10, "acid" = 0)
+ armor = list("melee" = 40, "bullet" = 40, "laser" = 45, "energy" = 25, "bomb" = 35, "bio" = 10, "rad" = 10, "fire" = 10, "acid" = 0, "wound" = 40)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
strip_delay = 20
@@ -951,7 +966,7 @@
desc = "An antler skull headdress traditionally worn by the spiritually inclined."
icon_state = "antlerhelm"
item_state = "antlerhelm"
-
+
/obj/item/clothing/head/helmet/f13/wayfarer/shamanblue
name = "ritual headdress"
@@ -976,18 +991,25 @@
visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
-/obj/item/clothing/head/helmet/f13/combat/wayfarer/tribe_helmet
- name = "tribalized helmet"
- desc = "An old military grade pre-war combat helmet, repainted and re purposed with bones and sinew to worship some tribal diety."
+/obj/item/clothing/head/helmet/f13/combat/tribal
+ name = "tribalized combat helmet"
+ desc = "An old military grade pre-war combat helmet, repainted and re-purposed with bones and sinew."
icon_state = "tribe_helmet"
item_state = "tribe_helmet"
-/obj/item/clothing/head/helmet/f13/wayfarer/pa_helmet
- name = "tribal full plate headdress"
- desc = "The once-marvelous helmet of the T-45d power armor set, repurposed and painted with markings of a tribe to signify its holyness to Kwer. It has dye'd feathers addoring it to make it look fierce in battle."
+/obj/item/clothing/head/helmet/f13/combat/mk2/tribal
+ name = "tribalized reinforced helmet"
+ desc = "An old military grade pre-war reinforced combat helmet, repainted and re-purposed with bones and sinew."
+ icon_state = "tribe_helmet"
+ item_state = "tribe_helmet"
+
+/obj/item/clothing/head/helmet/f13/power_armor/t45b/tribal
+ name = "tribal t-45b headdress"
+ desc = "A salvaged T-45b powered armor, with the servos removed and a feathered headdress. Certain bits of plating have been stripped out to retain more freedom of movement."
icon_state = "tribal_PA_helmet"
item_state = "tribal_PA_helmet"
- armor = list("melee" = 60, "bullet" = 65, "laser" = 65, "energy" = 24, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 80, "acid" = 0, "wound" = 40)
+ armor = list("melee" = 60, "bullet" = 60, "laser" = 60, "energy" = 20, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 80, "acid" = 0, "wound" = 65)
+ slowdown = 0
resistance_flags = LAVA_PROOF | FIRE_PROOF
/obj/item/clothing/head/helmet/f13/wayfarer/chief/attack_self(mob/user)
@@ -1012,6 +1034,9 @@
/obj/item/clothing/head/helmet/riot/vaultsec
name = "security helmet"
desc = "A standard issue vault security helmet, pretty robust."
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 25, energy = "25", "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "wound" = 50)
+ slowdown = 0.01
+
/obj/item/clothing/head/helmet/riot/vaultsec/vc
name = "vtcc riot helmet"
@@ -1029,7 +1054,7 @@
mob_overlay_icon = 'icons/fallout/onmob/clothes/head.dmi'
icon_state = "army_cap"
item_state = "army_cap"
- armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0)
+ armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0, "wound" = 30)
dynamic_hair_suffix = "+generic"
/obj/item/clothing/head/f13/army/officer
@@ -1039,7 +1064,7 @@
mob_overlay_icon = 'icons/fallout/onmob/clothes/head.dmi'
icon_state = "army_officer"
item_state = "army_officer"
-
+
/obj/item/clothing/head/f13/army/general
name = "US Army general's cap"
@@ -1048,7 +1073,7 @@
mob_overlay_icon = 'icons/fallout/onmob/clothes/head.dmi'
icon_state = "army_general"
item_state = "army_general"
- armor = list("melee" = 27, "bullet" = 12, "laser" = 12, "energy" = 15, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0)
+ armor = list("melee" = 27, "bullet" = 12, "laser" = 12, "energy" = 15, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0, "wound" = 30)
obj/item/clothing/head/f13/army/beret
name = "US Army beret"
@@ -1057,7 +1082,7 @@ obj/item/clothing/head/f13/army/beret
mob_overlay_icon = 'icons/fallout/onmob/clothes/head.dmi'
icon_state = "army_beret"
item_state = "army_beret"
- armor = list("melee" = 27, "bullet" = 12, "laser" = 12, "energy" = 15, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0)
+ armor = list("melee" = 27, "bullet" = 12, "laser" = 12, "energy" = 15, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0, "wound" = 30)
/obj/item/clothing/head/f13/army/beret/airborne
name = "US Army airborne beret"
@@ -1066,7 +1091,7 @@ obj/item/clothing/head/f13/army/beret
mob_overlay_icon = 'icons/fallout/onmob/clothes/head.dmi'
icon_state = "army_beret_airborne"
item_state = "army_beret_airborne"
-
+
/obj/item/clothing/head/f13/army/beret/specialforces
name = "US Army special forces beret"
@@ -1075,7 +1100,7 @@ obj/item/clothing/head/f13/army/beret
mob_overlay_icon = 'icons/fallout/onmob/clothes/head.dmi'
icon_state = "army_beret_specialforces"
item_state = "army_beret_specialforces"
-
+
//People's Liberation Army
/obj/item/clothing/head/f13/chinese
@@ -1085,11 +1110,11 @@ obj/item/clothing/head/f13/army/beret
mob_overlay_icon = 'icons/fallout/onmob/clothes/head.dmi'
icon_state = "chinese_soldier"
item_state = "chinese_soldier"
- armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0)
+ armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0, "wound" = 30)
/obj/item/clothing/head/f13/chinese/officer
name = "PLA officer's cap"
- desc = "(II) A People's Liberation Army peaked cap, worn by officers."
+ desc = " A People's Liberation Army peaked cap, worn by officers."
icon = 'icons/fallout/clothing/hats.dmi'
mob_overlay_icon = 'icons/fallout/onmob/clothes/head.dmi'
icon_state = "chinese_officer"
@@ -1105,8 +1130,8 @@ obj/item/clothing/head/f13/army/beret
mob_overlay_icon = 'icons/fallout/onmob/clothes/head.dmi'
icon_state = "police_officer"
item_state = "police_officer"
- armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0)
-
+ armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0, "wound" = 30)
+
/obj/item/clothing/head/f13/police/sergeant
name = "police campaign hat"
desc = "A simple dark navy campaign hat, worn by police."
@@ -1114,7 +1139,7 @@ obj/item/clothing/head/f13/army/beret
mob_overlay_icon = 'icons/fallout/onmob/clothes/head.dmi'
icon_state = "police_sergeant"
item_state = "police_sergeant"
- armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0)
+ armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0, "wound" = 30)
/obj/item/clothing/head/f13/police/lieutenant
name = "police lieutenant's cap"
@@ -1123,7 +1148,7 @@ obj/item/clothing/head/f13/army/beret
mob_overlay_icon = 'icons/fallout/onmob/clothes/head.dmi'
icon_state = "police_lieutenant"
item_state = "police_lieutenant"
- armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0)
+ armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 15, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0, "wound" = 30)
/obj/item/clothing/head/f13/police/chief
name = "police chief's cap"
@@ -1132,8 +1157,8 @@ obj/item/clothing/head/f13/army/beret
mob_overlay_icon = 'icons/fallout/onmob/clothes/head.dmi'
icon_state = "police_chief"
item_state = "police_chief"
- armor = list("melee" = 27, "bullet" = 12, "laser" = 12, "energy" = 15, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0)
-
+ armor = list("melee" = 27, "bullet" = 12, "laser" = 12, "energy" = 15, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0, "wound" = 30)
+
/obj/item/clothing/head/f13/police/trooper
name = "state police campaign hat"
desc = "A gray campaign hat, worn by the State Police."
@@ -1143,7 +1168,7 @@ obj/item/clothing/head/f13/army/beret
item_state = "police_chief"
icon_state = "state_trooper"
item_state = "state_trooper"
- armor = list("tier" = 2, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0)
+ armor = list("melee" = 27, "bullet" = 12, "laser" = 12, "energy" = 15, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0)
//THE GRAVEYARD
//UNUSED or LEGACY - RETAINED IN CASE DESIRED FOR ADMIN SPAWN OR REIMPLEMENATION. MAY NOT BE EVERYTHING THAT'S UNUSED. TEST BEFORE USING
@@ -1151,13 +1176,13 @@ obj/item/clothing/head/f13/army/beret
/obj/item/clothing/head/f13/ncr/medic
name = "NCR medical helmet"
- desc = "(V) A standard issue NCR Infantry helmet, colored to suit a medical officer."
+ desc = " A standard issue NCR Infantry helmet, colored to suit a medical officer."
icon_state = "ncr_medical_helmet"
item_state = "ncr_medical_helmet"
/obj/item/clothing/head/f13/ncr/mp
name = "NCR military police helmet"
- desc = "(V) A standard issue NCR helmet, with the letters \"MP\" scrawled on the front."
+ desc = " A standard issue NCR helmet, with the letters \"MP\" scrawled on the front."
icon_state = "ncr_MP"
item_state = "ncr_MP"
@@ -1184,7 +1209,6 @@ obj/item/clothing/head/f13/army/beret
item_color = "ncr"
flags_inv = HIDEEARS
dog_fashion = null
- armor = list("tier" = 5, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
strip_delay = 50
/obj/item/clothing/head/f13/ncr/goggles/attack_self(mob/user)
@@ -1212,33 +1236,29 @@ obj/item/clothing/head/f13/army/beret
//Enclave / Remnant
/obj/item/clothing/head/donor/enclave
name = "enclave forge cap"
- desc = "(III) A resistant, black forage cap issued to Enclave soldiers."
+ desc = "A resistant, black forage cap issued to Enclave soldiers."
icon_state = "enclave_cap"
item_state = "enclave_cap"
- armor = list("tier" = 3, "energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 0)
/obj/item/clothing/head/helmet/f13/combat/enclave
name = "enclave combat helmet"
- desc = "(VI) An intimidating helmet that is issued with it's corresponding suit."
+ desc = "An intimidating helmet that is issued with it's corresponding suit."
icon_state = "enclave_new"
item_state = "enclave_new"
- armor = list("tier" = 6, "energy" = 75, "bomb" = 70, "bio" = 80, "rad" = 80, "fire" = 80, "acid" = 50)
/obj/item/clothing/head/helmet/f13/combat/remnant
name = "remnant combat helmet"
- desc = "(VI) A dark helmet with yellow lenses, used commonly in espionage or shadow ops."
+ desc = "A dark helmet with yellow lenses, used commonly in espionage or shadow ops."
icon_state = "remnant_helmet"
item_state = "remnant_helmet"
- armor = list("tier" = 6, "energy" = 75, "bomb" = 70, "bio" = 80, "rad" = 80, "fire" = 80, "acid" = 50)
/obj/item/clothing/head/helmet/f13/envirosuit
name = "enclave envirosuit hood"
icon_state = "envirohead"
item_state = "envirohead"
- desc = "(II) A white hazmat helmet with a coupling system, the visor looks to be made out of orange plexiglas."
+ desc = "A white hazmat helmet with a coupling system, the visor looks to be made out of orange plexiglas."
clothing_flags = THICKMATERIAL
flags_inv = HIDEMASK|HIDEEARS|HIDEFACE|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR
- armor = list("tier" = 2,"energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 50, "acid" = 100)
strip_delay = 60
equip_delay_other = 60
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
@@ -1246,6 +1266,6 @@ obj/item/clothing/head/f13/army/beret
/obj/item/clothing/head/soft/f13/enclave
name = "officer hat"
- desc = "(I) A standard-issue Enclave officer's cap."
+ desc = "A standard-issue Enclave officer's cap."
icon_state = "enclave"
item_color = "enclave"
diff --git a/code/modules/clothing/head/f13head.dm b/code/modules/clothing/head/f13head.dm
index 8d8d73248b..241ec59983 100644
--- a/code/modules/clothing/head/f13head.dm
+++ b/code/modules/clothing/head/f13head.dm
@@ -54,7 +54,7 @@
desc = "An old military grade pre-war combat helmet."
icon_state = "combat_helmet"
item_state = "combat_helmet"
- armor = list("melee" = 45, "bullet" = 45, "laser" = 40, "energy" = 20, "bomb" = 50, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 45, "bullet" = 45, "laser" = 45, "energy" = 20, "bomb" = 50, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 50)
strip_delay = 50
flags_inv = HIDEEARS|HIDEEYES|HIDEHAIR
flags_cover = HEADCOVERSEYES
@@ -79,7 +79,7 @@
desc = "An advanced pre-war titanium plated, ceramic coated, kevlar, padded helmet designed to withstand extreme punishment of all forms."
icon_state = "combat_helmet_mk2"
item_state = "combat_helmet_mk2"
- armor = list("melee" = 50, "bullet" = 50, "laser" = 40, "energy" = 22, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 40, "energy" = 22, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 50)
/obj/item/clothing/head/helmet/f13/combat/mk2/dark
name = "reinforced combat helmet"
@@ -95,7 +95,7 @@
name = "broken riot helmet"
icon_state = "ranger_broken"
desc = "An old riot police helmet, out of use around the time of the war."
- armor = list("melee" = 38, "bullet" = 45, "laser" = 38, "energy" = 18, "bomb" = 45, "bio" = 55, "rad" = 10, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 38, "bullet" = 45, "laser" = 38, "energy" = 18, "bomb" = 45, "bio" = 55, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 50)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
resistance_flags = LAVA_PROOF | FIRE_PROOF
@@ -108,7 +108,7 @@
desc = "A prewar combat helmet issued to S.W.A.T. personnel."
icon_state = "swatsyndie"
item_state = "swatsyndie"
- armor = list("melee" = 30, "bullet" = 50, "laser" = 30, "energy" = 20, "bomb" = 55, "bio" = 60, "rad" = 15, "fire" = 60, "acid" = 30)
+ armor = list("melee" = 30, "bullet" = 50, "laser" = 30, "energy" = 20, "bomb" = 55, "bio" = 60, "rad" = 15, "fire" = 60, "acid" = 30, "wound" = 40)
/obj/item/clothing/head/helmet/f13/combat/environmental
@@ -116,7 +116,7 @@
desc = "A full head helmet and gas mask, developed for use in heavily contaminated environments."
icon_state = "env_helmet"
item_state = "env_helmet"
- armor = list("melee" = 35, "bullet" = 40, "laser" = 40,"energy" = 20, "bomb" = 55, "bio" = 70, "rad" = 100, "fire" = 60, "acid" = 50)
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 40,"energy" = 20, "bomb" = 55, "bio" = 70, "rad" = 100, "fire" = 60, "acid" = 50, "wound" = 40)
strip_delay = 60
equip_delay_other = 60
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
@@ -132,7 +132,7 @@
desc = "A sulphite raider helmet, affixed with thick anti-ballistic glass over the eyes."
icon_state = "sulphite_helm"
item_state = "sulphite_helm"
- armor = list("melee" = 25, "bullet" = 55,"laser" = 40, "energy" = 20, "bomb" = 50, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 25, "bullet" = 55,"laser" = 40, "energy" = 20, "bomb" = 50, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 40)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
@@ -144,14 +144,14 @@
icon_state = "metalhelmet"
item_state = "metalhelmet"
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
- armor = list("melee" = 35, "bullet" = 20, "laser" = 40, "energy" = 15, "bomb" = 45, "bio" = 30, "rad" = 15, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 20, "laser" = 40, "energy" = 15, "bomb" = 45, "bio" = 30, "rad" = 15, "fire" = 60, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/helmet/knight/f13/metal/reinforced
name = "reinforced metal helmet"
icon_state = "metalhelmet_r"
item_state = "metalhelmet_r"
- armor = list("melee" = 37, "bullet" = 22, "laser" = 42, "energy" = 16, "bomb" = 45, "bio" = 30, "rad" = 15, "fire" = 60, "acid" = 0)
-
+ armor = list("melee" = 37, "bullet" = 22, "laser" = 42, "energy" = 16, "bomb" = 45, "bio" = 30, "rad" = 15, "fire" = 60, "acid" = 0, "wound" = 40)
+
/obj/item/clothing/head/helmet/knight/f13/rider
name = "rider helmet" //Not raider. Rider.
desc = "It's a fancy dark metal helmet with orange spray painted flames."
@@ -166,7 +166,7 @@
toggle_message = "You lower"
alt_toggle_message = "You raise"
can_toggle = 1
- armor = list("melee" = 35, "bullet" = 20, "laser" = 40, "energy" = 15, "bomb" = 45, "bio" = 30, "rad" = 15, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 20, "laser" = 40, "energy" = 15, "bomb" = 45, "bio" = 30, "rad" = 15, "fire" = 60, "acid" = 0, "wound" = 40)
flags_inv = HIDEMASK|HIDEEYES|HIDEFACE
strip_delay = 80
actions_types = list(/datum/action/item_action/toggle)
@@ -189,14 +189,14 @@
desc = "A reinforced metal hockey mask."
icon_state = "metal_mask2"
item_state = "metal_mask2"
- armor = list("melee" = 37, "bullet" = 25, "laser" = 42, "energy" = 15, "bomb" = 40, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 37, "bullet" = 25, "laser" = 42, "energy" = 15, "bomb" = 40, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
/obj/item/clothing/head/helmet/f13/tesla
name = "tesla helmet"
desc = "A prewar armor design by Nikola Tesla before being confiscated by the U.S. government. Provides high energy weapons resistance."
icon_state = "tesla_helmet"
item_state = "tesla_helmet"
- armor = list("melee" = 25, "bullet" = 25,"laser" = 80, "energy" = 60, "bomb" = 40, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 25, "bullet" = 25,"laser" = 80, "energy" = 60, "bomb" = 40, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
var/hit_reflect_chance = 20
protected_zones = list(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_GROIN, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
@@ -235,73 +235,9 @@
light_system = MOVABLE_LIGHT_DIRECTIONAL
light_range = 5
light_on = FALSE
-// darkness_view = 128
-// lighting_alpha = LIGHTING_PLANE_ALPHA_NV_TRAIT
- var/emped = 0
var/requires_training = TRUE
- var/armor_block_chance = 0
-// protected_zones = list(BODY_ZONE_HEAD)
-// var/deflection_chance = 0
-// var/armor_block_threshold = 0.2 //projectiles below this will deflect
-// var/melee_block_threshold = 30
-// var/dmg_block_threshold = 42
- var/powerLevel = 7000
- var/powerMode = 3
var/powered = TRUE
-/obj/item/clothing/head/helmet/f13/power_armor/attackby(obj/item/I, mob/user, params)
- . = ..()
- if(istype(I,/obj/item/fusion_fuel)&& powered)
- var/obj/item/fusion_fuel/fuel = I
- if(src.powerLevel>=50000)
- to_chat(user, "The fusion core is full.")
- return
- if(fuel.fuel >= 5000)
- src.powerLevel += 5000
- fuel.fuel -= 5000
- to_chat(user, "You charge the fusion core to [src.powerLevel] units of fuel. [fuel.fuel]/20000 left in the fuel cell.")
- return
- to_chat(user, "The fuel cell is empty.")
-
-/obj/item/clothing/head/helmet/f13/power_armor/proc/processPower()
- if(powerLevel>0)//drain charge
- powerLevel -= 1
- if(powerLevel > 20000)//switch to 3 power mode
- if(powerMode <= 2)
- powerUp()
- return
- if(powerLevel > 10000)//switch to 2 power
- if(powerMode <= 1)
- powerUp()
- if(powerMode > 2)
- powerDown()
- return
- if(powerLevel > 5000)//switch to 1 power
- if(powerMode <= 0)
- powerUp()
- if(powerMode > 1)
- powerDown()
- return
- if(powerLevel >= 1)//switch to 0 power
- if(powerMode >= 0)
- powerDown()
-
-/obj/item/clothing/head/helmet/f13/power_armor/proc/powerUp()
- powerMode += 1
- slowdown -= 0.2
- var/mob/living/L = loc
- if(istype(L))
- L.update_equipment_speed_mods()
- armor = armor.modifyRating(linemelee = 75, linebullet = 75, linelaser = 75)
-
-/obj/item/clothing/head/helmet/f13/power_armor/proc/powerDown()
- powerMode -= 1
- slowdown += 0.2
- var/mob/living/L = loc
- if(istype(L))
- L.update_equipment_speed_mods()
- armor = armor.modifyRating(linemelee = -75, linebullet = -75, linelaser = -75)
-
/obj/item/clothing/head/helmet/f13/power_armor/ComponentInitialize()
. = ..()
AddElement(/datum/element/update_icon_updates_onmob)
@@ -318,6 +254,8 @@
var/mob/living/carbon/human/H = user
if(src == H.head) //Suit is already equipped
return ..()
+ if(!powered)
+ return ..()
if (!HAS_TRAIT(H, TRAIT_PA_WEAR) && slot == SLOT_HEAD && requires_training)
to_chat(user, "
You don't have the proper training to operate the power armor! ")
return 0
@@ -325,54 +263,12 @@
return ..()
return
-/obj/item/clothing/head/helmet/f13/power_armor/emp_act(mob/living/carbon/human/owner, severity)
- . = ..()
- if(. & EMP_PROTECT_SELF)
- return
- emped++
- var/curremp = emped
- if(ismob(loc))
- to_chat(loc, "
Warning: electromagnetic surge detected in helmet. Rerouting power to emergency systems. ")
- armor = armor.modifyRating(melee = -100, bullet = -100, laser = -100)
- addtimer(CALLBACK(src, .proc/end_emp_effect, curremp), 5 SECONDS)
-
-/obj/item/clothing/head/helmet/f13/power_armor/proc/end_emp_effect(curremp)
- if(emped != curremp) //Don't fix it if it's been EMP'd again
- return FALSE
- if(ismob(loc))
- var/mob/living/L = loc
- emped = FALSE
- to_chat(loc, "
Helmet power reroute successful. All systems operational. ")
- armor = armor.modifyRating(melee = 100, bullet = 100,laser = 100)
- if(istype(L))
- L.update_equipment_speed_mods()
- return TRUE
-/*
-/obj/item/clothing/head/helmet/f13/power_armor/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
- . = ..()
- if(damage >= src.dmg_block_threshold && check_armor_penetration(object) >= 0)
- return
- if(check_armor_penetration(object) <= src.armor_block_threshold && (attack_type == ATTACK_TYPE_PROJECTILE) && (def_zone in protected_zones))
- if(prob(armor_block_chance))
- var/ratio = rand(0,100)
- if(ratio <= deflection_chance)
- block_return[BLOCK_RETURN_REDIRECT_METHOD] = REDIRECT_METHOD_DEFLECT
- return BLOCK_SHOULD_REDIRECT | BLOCK_REDIRECTED | BLOCK_SUCCESS | BLOCK_PHYSICAL_INTERNAL
- if(ismob(loc))
- to_chat(loc, "
Your power armor absorbs the projectile's impact! ")
- block_return[BLOCK_RETURN_SET_DAMAGE_TO] = 0
- return BLOCK_SUCCESS | BLOCK_PHYSICAL_INTERNAL
- return
-*/
/obj/item/clothing/head/helmet/f13/power_armor/t45b
name = "salvaged T-45b helmet"
desc = "It's a salvaged T-45b power armor helmet."
icon_state = "t45bhelmet"
item_state = "t45bhelmet"
- armor = list("melee" = 75, "bullet" = 75, "laser" = 75, "energy" = 20, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 80, "acid" = 0, "wound" = 40)
-// darkness_view = 0
-// armor_block_chance = 25
-// deflection_chance = 10 //10% chance to block damage from blockable bullets and redirect the bullet at a random angle. Not nearly as effective as true power armor
+ armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 20, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 80, "acid" = 0, "wound" = 40)
requires_training = FALSE
powered = FALSE
@@ -381,19 +277,14 @@
desc = "It's an NCR salvaged T-45b power armor helmet, better repaired than regular salvaged PA, and decorated with the NCR flag and other markings for an NCR Heavy Trooper."
icon_state = "t45bhelmet_ncr"
item_state = "t45bhelmet_ncr"
- armor = list("melee" = 75, "bullet" = 75, "laser" = 75, "energy" = 24, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 80, "acid" = 0, "wound" = 40)
-// darkness_view = 0
-// armor_block_chance = 40
-// deflection_chance = 10 //10% chance to block damage from blockable bullets and redirect the bullet at a random angle. Not nearly as effective as true power armor
+ armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 24, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 80, "acid" = 0, "wound" = 40)
requires_training = FALSE
powered = FALSE
/obj/item/clothing/head/helmet/f13/power_armor/t45b/restored
name = "restored T-45b helmet"
desc = "It's a restored T-45b power armor helmet."
- armor = list("melee" = 75, "bullet" = 75, "laser" = 75, "energy" = 22, "bomb" = 55, "bio" = 65, "rad" = 55, "fire" = 85, "acid" = 0, "wound" = 40)
-// armor_block_chance = 60
-// deflection_chance = 10 //20% chance to block damage from blockable bullets and redirect the bullet at a random angle
+ armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 22, "bomb" = 55, "bio" = 65, "rad" = 55, "fire" = 85, "acid" = 0, "wound" = 40)
requires_training = TRUE
powered = TRUE
@@ -404,47 +295,17 @@
item_state = "raiderpa_helm"
armor = list("melee" = 65, "bullet" = 55, "laser" = 55, "energy" = 20, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 80, "acid" = 0, "wound" = 40)
requires_training = FALSE
-// armor_block_chance = 20
-// deflection_chance = 10
powered = FALSE
slowdown = 0.05
-/obj/item/clothing/head/helmet/f13/power_armor/hotrod
- name = "hotrod T-45b power helmet"
- desc = "This power armor helmet is so decrepit and battle-worn that it have lost most of its capability to protect the wearer from harm."
- icon_state = "t45hotrod_helm"
- item_state = "t45hotrod_helm"
- armor = list("melee" = 55, "bullet" = 55, "laser" = 55, "energy" = 20, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 80, "acid" = 0, "wound" = 40)
- requires_training = FALSE
-// armor_block_chance = 20
- powered = FALSE
-// deflection_chance = 10 //5% chance to block damage from blockable bullets and redirect the bullet at a random angle. Stripped down version of an already stripped down version
- slowdown = 0.05
-
-/obj/item/clothing/head/helmet/f13/power_armor/vaulttec
- name = "Vault-Tec power helmet"
- desc = "(VIII) A refined suit of power armour, purpose-built by the residents of Vault-115 in order to better keep the peace in their new settlement."
- icon_state = "vaultpahelm"
- item_state = "vaultpahelm"
- armor = list("tier" = 8, "energy" = 50, "bomb" = 48, "bio" = 60, "rad" = 50, "fire" = 80, "acid" = 0, "wound" = 40)
-// armor_block_chance = 40
-// deflection_chance = 10 //10% chance to block damage from blockable bullets and redirect the bullet at a random angle. Not a heavy combat model
-
-/obj/item/clothing/head/helmet/f13/power_armor/vaulttecta
- name = "Vault-Tec power helmet"
- desc = "A refined suit of power armour, purpose-built by the residents of Vault-115 in order to better keep the peace in their new settlement."
- icon_state = "vaulttahelm"
- item_state = "vaulttahelm"
- slowdown = 0.1
-
/obj/item/clothing/head/helmet/f13/power_armor/t45d
name = "T-45d power helmet"
desc = "t's an old pre-War power armor helmet. It's pretty hot inside of it."
icon_state = "t45dhelmet0"
item_state = "t45dhelmet0"
actions_types = list(/datum/action/item_action/toggle_helmet_light)
- armor = list("melee" = 75, "bullet" = 75, "laser" = 75, "energy" = 25, "bomb" = 65, "bio" = 75, "rad" = 80, "fire" = 85, "acid" = 30, "wound" = 40)
+ armor = list("melee" = 72.5, "bullet" = 72.5, "laser" = 72.5, "energy" = 25, "bomb" = 65, "bio" = 75, "rad" = 80, "fire" = 85, "acid" = 30, "wound" = 40)
// armor_block_chance = 60
// deflection_chance = 10 //20% chance to block damage from blockable bullets and redirect the bullet at a random angle
@@ -460,42 +321,22 @@
icon_state = "t45dhelmet[light_on]"
item_state = "t45dhelmet[light_on]"
-/obj/item/clothing/head/helmet/f13/power_armor/t45d/gunslinger
- name = "Gunslinger T-51b Helm"
- desc = "(IX) With most of the external plating stripped to allow for internal thermal and night vision scanners, as well as aided targeting assist via onboard systems, this helm provides much more utility then protection. To support these systems, secondary power cells were installed into the helm, and covered with a stylish hat."
- icon_state = "t51bgs"
- item_state = "t51bgs"
- slowdown = -0.2
- flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR
- actions_types = list()
-
-/obj/item/clothing/head/helmet/f13/power_armor/t45d/sierra
- name = "sierra power helmet"
- desc = "(IX) A pre-war power armor helmet, issued to special NCR officers.."
- icon_state = "sierra"
- item_state = "sierra"
- actions_types = list()
-
-/obj/item/clothing/head/helmet/f13/power_armor/midwest
- name = "midwestern power helmet"
- desc = "This helmet once belonged to the Midwestern branch of the Brotherhood of Steel, and now resides here."
- icon_state = "midwestgrey_helm"
- item_state = "midwestgrey_helm"
- armor = list("melee" = 75, "bullet" = 75, "laser" = 80, "energy" = 27, "bomb" = 62, "bio" = 100, "rad" = 99, "fire" = 90, "acid" = 0, "wound" = 70)
-// armor_block_chance = 60
-// deflection_chance = 10 //20% chance to block damage from blockable bullets and redirect the bullet at a random angle
+/obj/item/clothing/head/helmet/f13/power_armor/hotrod
+ name = "hotrod T-45b power helmet"
+ desc = "This power armor helmet is so decrepit and battle-worn that it have lost most of its capability to protect the wearer from harm."
+ icon_state = "t45hotrod_helm"
+ item_state = "t45hotrod_helm"
+ armor = list("melee" = 55, "bullet" = 55, "laser" = 55, "energy" = 20, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 80, "acid" = 0, "wound" = 40)
+ requires_training = FALSE
+ powered = FALSE
/obj/item/clothing/head/helmet/f13/power_armor/t51b
name = "T-51b power helmet"
desc = "It's a T-51b power helmet, typically used by the Brotherhood. It looks somewhat charming."
icon_state = "t51bhelmet0"
item_state = "t51bhelmet0"
- armor = list("melee" = 75, "bullet" = 75, "laser" = 75, "energy" = 27, "bomb" = 62, "bio" = 100, "rad" = 99, "fire" = 90, "acid" = 0, "wound" = 70)
+ armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 27, "bomb" = 62, "bio" = 100, "rad" = 99, "fire" = 90, "acid" = 0, "wound" = 70)
actions_types = list(/datum/action/item_action/toggle_helmet_light)
-// armor_block_chance = 70
-// deflection_chance = 10 //35% chance to block damage from blockable bullets and redirect the bullet at a random angle. Less overall armor compared to T-60, but higher deflection.
-// armor_block_threshold = 0.25
-// melee_block_threshold = 35
/obj/item/clothing/head/helmet/f13/power_armor/t51b/update_icon_state()
icon_state = "t51bhelmet[light_on]"
@@ -509,27 +350,6 @@
icon_state = "t51bhelmet[light_on]"
item_state = "t51bhelmet[light_on]"
-/obj/item/clothing/head/helmet/f13/power_armor/t51b/wbos
- name = "Washington power helmet"
- desc = "It's a Washington Brotherhood power helmet. It looks somewhat terrifying."
- icon_state = "t51wboshelmet"
- item_state = "t51wboshelmet"
- actions_types = list()
-
-/obj/item/clothing/head/helmet/f13/power_armor/t51b/reforgedwbos
- name = "reforged Washington power helmet"
- desc = "It's a reforged Washington Brotherhood power helmet, designed to induce fear in a target."
- icon_state = "t51matthelmet"
- item_state = "t51matthelmet"
- actions_types = list()
-
-/obj/item/clothing/head/helmet/f13/power_armor/t51b/ultra
- name = "Ultracite power helmet"
- desc = "It's a T-51b power helmet, typically used by the Brotherhood. It looks somewhat charming. Now enhanced with ultracite."
- icon_state = "ultracitepa_helm"
- item_state = "ultracitepa_helm"
- slowdown = 0
- actions_types = list()
/obj/item/clothing/head/helmet/f13/power_armor/t60
name = "T-60a power helmet"
@@ -538,10 +358,7 @@
item_state = "t60helmet0"
armor = list("melee" = 80, "bullet" = 70, "laser" = 80, "energy" = 30, "bomb" = 82, "bio" = 100, "rad" = 100, "fire" = 95, "acid" = 0, "wound" = 80)
actions_types = list(/datum/action/item_action/toggle_helmet_light)
-// armor_block_chance = 80
-// deflection_chance = 15 //20% chance to block damage from blockable bullets and redirect the bullet at a random angle. Same deflection as T-45 due to it having the same general shape.
-// melee_block_threshold = 40
-// armor_block_threshold = 0.3
+
/obj/item/clothing/head/helmet/f13/power_armor/t60/update_icon_state()
icon_state = "t60helmet[light_on]"
@@ -549,69 +366,37 @@
/obj/item/clothing/head/helmet/f13/power_armor/excavator
name = "excavator power helmet"
- desc = "(VIII) The helmet of the excavator power armor suit."
+ desc = "The helmet of the excavator power armor suit."
icon_state = "excavator"
item_state = "excavator"
- armor = list("tier" = 8, "energy" = 60, "bomb" = 62, "bio" = 100, "rad" = 90, "fire" = 90, "acid" = 0)
-// armor_block_chance = 40
-// deflection_chance = 10 //10% chance to block damage from blockable bullets and redirect the bullet at a random angle. Not a heavy combat model
+ armor = list("melee" = 80, "bullet" = 50, "laser" = 50, "energy" = 15, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 95, "acid" = 80, "wound" = 80)
+
/obj/item/clothing/head/helmet/f13/power_armor/advanced
name = "advanced power helmet"
- desc = "(XII) It's an advanced power armor MK1 helmet, typically used by the Enclave. It looks somewhat threatening."
+ desc = "It's an advanced power armor MK1 helmet, typically used by the Enclave. It looks somewhat threatening."
icon_state = "advhelmet1"
item_state = "advhelmet1"
armor = list("melee" = 80, "bullet" = 80, "laser" = 85, "energy" = 35, "bomb" = 72, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 0, "wound" = 90)
-// armor_block_threshold = 0.45
-// melee_block_threshold = 45
-// armor_block_chance = 80 //Enclave. 'nuff said
-// deflection_chance = 15 //40% chance to block damage from blockable bullets and redirect the bullet at a random angle. Your ride's over mutie, time to die.
+
/obj/item/clothing/head/helmet/f13/power_armor/advanced/hellfire
name = "hellfire power armor"
desc = "A deep black helmet of Enclave-manufactured heavy power armor with yellow ballistic glass, based on pre-war designs such as the T-51 and improving off of data gathered by post-war designs such as the X-01. Most commonly fielded on the East Coast, no other helmet rivals it's strength."
icon_state = "hellfirehelm"
item_state = "hellfirehelm"
-// melee_block_threshold = 70
-// armor_block_threshold = 0.8
-// armor_block_chance = 99
-// deflection_chance = 70
armor = list("melee" = 85, "bullet" = 85, "laser" = 87, "energy" = 37, "bomb" = 72, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 0, "wound" = 100)
-/obj/item/clothing/head/helmet/f13/power_armor/advanced/hellfire/wbos
- name = "advanced Washington power helmet"
- desc = "It's an improved model of the power armor helmet used exclusively by the Washington Brotherhood, designed to induce fear in a target."
- icon_state = "t51wboshelmet"
- item_state = "t51wboshelmet"
-
-/obj/item/clothing/head/helmet/f13/power_armor/tesla
- name = "tesla power helmet"
- desc = "A helmet typically used by Enclave special forces.
There are three orange energy capacitors on the side."
- icon_state = "tesla"
- item_state = "tesla"
- armor = list("linemelee" = 200, "linebullet" = 200, "linelaser" = 300, "energy" = 95, "bomb" = 62, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 0, "wound" = 80)
- var/hit_reflect_chance = 35
-
-/obj/item/clothing/head/helmet/f13/power_armor/tesla/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
- if(is_energy_reflectable_projectile(object) && (attack_type == ATTACK_TYPE_PROJECTILE) && (def_zone in protected_zones))
- if(prob(hit_reflect_chance))
- block_return[BLOCK_RETURN_REDIRECT_METHOD] = REDIRECT_METHOD_DEFLECT
- return BLOCK_SHOULD_REDIRECT | BLOCK_REDIRECTED | BLOCK_SUCCESS | BLOCK_PHYSICAL_INTERNAL
- return ..()
//Part of the peacekeeper enclave stuff, adjust values as needed.
/obj/item/clothing/head/helmet/f13/power_armor/x02helmet
name = "Enclave power armor helmet"
- desc = "(XI) The Enclave Mark II Powered Combat Armor helmet."
+ desc = "The Enclave Mark II Powered Combat Armor helmet."
icon_state = "advanced"
item_state = "advanced"
slowdown = 0.1
- armor = list("tier" = 11, "energy" = 65, "bomb" = 62, "bio" = 100, "rad" = 99, "fire" = 90, "acid" = 0, "wound" = 70)
+ armor = list("melee" = 85, "bullet" = 85, "laser" = 87, "energy" = 65, "bomb" = 62, "bio" = 100, "rad" = 99, "fire" = 90, "acid" = 0, "wound" = 70)
actions_types = list(/datum/action/item_action/toggle_helmet_light)
-// armor_block_threshold = 0.45
-// melee_block_threshold = 45
-// armor_block_chance = 80
-// deflection_chance = 15
//Generic Tribal - For Wayfarer specific, see f13factionhead.dm
@@ -705,7 +490,7 @@
flags_inv = HIDEHAIR
armor = list("melee" = 20, "bullet" = 15, "laser" = 10, "energy" = 10, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 0)
-/obj/item/clothing/head/f13/cowboy/Initialize()
+/obj/item/clothing/head/f13/cowboy/Initialize()
. = ..()
AddComponent(/datum/component/armor_plate)
@@ -718,7 +503,7 @@
flags_inv = HIDEHAIR
armor = list("melee" = 20, "bullet" = 15, "laser" = 10, "energy" = 10, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 0)
-/obj/item/clothing/head/f13/bandit/Initialize()
+/obj/item/clothing/head/f13/bandit/Initialize()
. = ..()
AddComponent(/datum/component/armor_plate)
@@ -729,8 +514,8 @@
item_state = "dethat"
flags_inv = HIDEHAIR
armor = list("melee" = 20, "bullet" = 15, "laser" = 10, "energy" = 10, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 0)
-
-/obj/item/clothing/head/f13/gambler/Initialize()
+
+/obj/item/clothing/head/f13/gambler/Initialize()
. = ..()
AddComponent(/datum/component/armor_plate)
@@ -744,10 +529,10 @@
armor = list("melee" = 35, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 0)
flags_inv = HIDEMASK|HIDEEARS|HIDEHAIR
strip_delay = 10
-
-/obj/item/clothing/head/helmet/f13/motorcycle/Initialize()
+
+/obj/item/clothing/head/helmet/f13/motorcycle/Initialize()
. = ..()
- AddComponent(/datum/component/armor_plate)
+ AddComponent(/datum/component/armor_plate)
/obj/item/clothing/head/helmet/f13/firefighter
name = "firefighter helmet"
@@ -780,10 +565,10 @@
item_state = "wastewar"
armor = list("melee" = 35, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 0)
flags_inv = HIDEEARS|HIDEHAIR
-
-/obj/item/clothing/head/helmet/f13/wastewarhat/Initialize()
+
+/obj/item/clothing/head/helmet/f13/wastewarhat/Initialize()
. = ..()
- AddComponent(/datum/component/armor_plate)
+ AddComponent(/datum/component/armor_plate)
/obj/item/clothing/head/helmet/f13/hoodedmask
@@ -803,8 +588,8 @@
item_state = "brahmin_leather_cowboy_hat"
armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 0)
flags_inv = HIDEEARS|HIDEHAIR
-
-/obj/item/clothing/head/helmet/f13/brahmincowboyhat/Initialize()
+
+/obj/item/clothing/head/helmet/f13/brahmincowboyhat/Initialize()
. = ..()
AddComponent(/datum/component/armor_plate)
@@ -816,8 +601,8 @@
flags_inv = HIDEEARS|HIDEHAIR
armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 0)
flags_inv = HIDEEARS|HIDEHAIR
-
-/obj/item/clothing/head/helmet/f13/rustedcowboyhat/Initialize()
+
+/obj/item/clothing/head/helmet/f13/rustedcowboyhat/Initialize()
. = ..()
AddComponent(/datum/component/armor_plate)
@@ -833,7 +618,6 @@
desc = "A headband with a pair of cute kitty ears."
icon_state = "kittyb"
color = "#999999"
- armor = list("tier" = 0)
dynamic_hair_suffix = ""
/obj/item/clothing/head/f13/riderw
@@ -917,7 +701,7 @@
alt_toggle_message = "You take the sniper's veil off"
can_toggle = 1
toggle_cooldown = 0
- armor = list("tier" = 2, "energy" = 20, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 20, "acid" = 20)
+
/obj/item/clothing/head/helmet/f13/ncr/rangercombat/mosshelmet
name = "veteran patrol stetson"
@@ -982,7 +766,7 @@
desc = "(IV) A thick undyed felt cowboy hat, bleached from excessive sun exposure and creased from heavy usage."
icon_state = "marlowhat"
item_state = "marlowhat"
- armor = list("tier" = 4, "energy" = 25, "bomb" = 30, "bio" = 20, "rad" = 0, "fire" = 50, "acid" = 0)
+ armor = list("energy" = 25, "bomb" = 30, "bio" = 20, "rad" = 0, "fire" = 50, "acid" = 0)
flags_inv = HIDEEARS|HIDEHAIR
/obj/item/clothing/head/helmet/f13/marlowhat/Initialize()
@@ -995,7 +779,7 @@
icon_state = "ranger_grey_hat"
item_state = "ranger_grey_hat"
flags_inv = HIDEEARS|HIDEHAIR
-
+
/obj/item/clothing/head/f13/ranger_hat/Initialize() //HQ parts reinforcement
. = ..()
AddComponent(/datum/component/armor_plate)
@@ -1024,3 +808,13 @@
desc = "A set of heavy bandages wrapped around the head. Made to protect the eye from whatever injury occured."
icon_state = "eyepatch_white_r"
item_state = "eyepatch_white_r"
+
+/obj/item/clothing/head/helmet/skull/bone
+ name = "Reinforced skull helmet"
+ desc = "An intimidating tribal helmet reinforced with leather and cloth parts on the inside for more comfort, while styling it on the Bone dancers way."
+ flags_inv = HIDEEARS|HIDEFACE
+ flags_cover = HEADCOVERSEYES
+ armor = list("melee" = 30, "bullet" = 30, "laser" = 25, "energy" = 10, "bomb" = 15, "bio" = 60, "rad" = 15, "fire" = 60, "acid" = 30)
+ icon_state = "bone_dancer_helmet"
+ item_state = "bone_dancer_helmet"
+ strip_delay = 100
diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm
index dcf7a0c6b9..acfd8eb905 100644
--- a/code/modules/clothing/head/hardhat.dm
+++ b/code/modules/clothing/head/hardhat.dm
@@ -9,7 +9,7 @@
light_color = "#FFCC66"
light_on = FALSE
var/hat_type = "yellow" //Determines used sprites: hardhat[light_on]_[hat_type] and hardhat[light_on]_[hat_type]2 (lying down sprite)
- armor = list("tier" = 2,"energy" = 10, "bomb" = 20, "bio" = 10, "rad" = 20, "fire" = 100, "acid" = 50)
+ armor = list("melee" = 35, "bullet" = 10, "laser" = 25,"energy" = 10, "bomb" = 30, "bio" = 0, "rad" = 20, "fire" = 100, "acid" = 50)
flags_inv = 0
actions_types = list(/datum/action/item_action/toggle_helmet_light)
resistance_flags = FIRE_PROOF
@@ -53,6 +53,7 @@
dog_fashion = null
name = "firefighter helmet"
clothing_flags = STOPSPRESSUREDAMAGE
+ armor = list("melee" = 10, "bullet" = 10, "laser" = 35,"energy" = 10, "bomb" = 30, "bio" = 0, "rad" = 20, "fire" = 100, "acid" = 50)
heat_protection = HEAD
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
cold_protection = HEAD
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index 4cdb117728..e189e9533b 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -42,7 +42,6 @@
. += "
[attached_light] looks like it can be unscrewed from [src]. "
else if(can_flashlight)
. += "It has a mounting point for a
seclite ."
- . += "This helmet provides [armor.bullet] bullet, [armor.laser] energy, and [armor.melee] melee resistance."
/obj/item/clothing/head/helmet/handle_atom_del(atom/A)
if(A == attached_light)
@@ -459,7 +458,7 @@
icon_state = "policehelm"
dynamic_hair_suffix = ""
armor = list("tier" = 2)
-
+
/obj/item/clothing/head/helmet/armyhelmet
name = "steel helmet"
desc = "a steel helmet, inspired by several pre-war designs. It provides some protection against impacts, cuts, and medium-velocity bullets."
@@ -468,7 +467,7 @@
icon_state = "armyhelmet"
item_state = "armyhelmet"
armor = list("melee" = 20, "bullet" = 45, "laser" = 20, "energy" = 15, "bomb" = 20, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
-
+
/obj/item/clothing/head/helmet/armyhelmet/heavy
name = "heavy steel helmet"
desc = "a steel helmet, inspired by several pre-war designs. This one has been modified by oasis citizens to provide more protection to the face and neck."
diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm
index d4bc799537..16dc47aa15 100644
--- a/code/modules/clothing/head/misc.dm
+++ b/code/modules/clothing/head/misc.dm
@@ -17,11 +17,10 @@
/obj/item/clothing/head/that
name = "top-hat"
- desc = "(I) It's an amish looking hat."
+ desc = "It's an amish looking hat."
icon_state = "tophat"
item_state = "that"
throwforce = 1
- armor = list("tier" = 1)
dog_fashion = /datum/dog_fashion/head
beepsky_fashion = /datum/beepsky_fashion/tophat
@@ -36,8 +35,7 @@
/obj/item/clothing/head/redcoat
name = "redcoat's hat"
icon_state = "redcoat"
- desc = "(I)
'I guess it's a redhead.' "
- armor = list("tier" = 1)
+ desc = "
'I guess it's a redhead.' "
/obj/item/clothing/head/mailman
name = "mailman's hat"
@@ -46,10 +44,10 @@
/obj/item/clothing/head/plaguedoctorhat
name = "plague doctor's hat"
- desc = "(I) These were once used by plague doctors. They're pretty much useless."
+ desc = "These were once used by plague doctors. They're pretty much useless."
icon_state = "plaguedoctor"
+ armor = list("melee" = 10, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 15, "bio" = 25, "rad" = 0, "fire" = 30, "acid" = 0)
permeability_coefficient = 0.01
- armor = list("tier" = 1)
/obj/item/clothing/head/hasturhood
@@ -299,12 +297,10 @@
/obj/item/clothing/head/crown
name = "crown"
- desc = "(I) A crown fit for a king, a petty king maybe."
+ desc = "A crown fit for a king, a petty king maybe."
icon_state = "crown"
- armor = list("tier" = 1,"energy" = 15, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
dynamic_hair_suffix = ""
-
beepsky_fashion = /datum/beepsky_fashion/king
/obj/item/clothing/head/crown/fancy
@@ -455,15 +451,16 @@
/obj/item/clothing/head/hunter
name = "bounty hunting hat"
- desc = "(I) Ain't nobody gonna cheat the hangman in my town."
+ desc = "Ain't nobody gonna cheat the hangman in my town."
icon_state = "hunter"
item_state = "hunter"
- armor = list("tier" = 1, "energy" = 15, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ armor = list("melee" = 15, "bullet" = 15, "laser" = 15, "energy" = 10, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 0)
resistance_flags = FIRE_PROOF | ACID_PROOF
/obj/item/clothing/head/kepi
name = "kepi"
desc = "A white cap with visor. Oui oui, mon capitane!"
+ armor = list("melee" = 15, "bullet" = 15, "laser" = 15, "energy" = 10, "bomb" = 15, "bio" = 5, "rad" = 5, "fire" = 30, "acid" = 5)
icon_state = "kepi"
/obj/item/clothing/head/kepi/old
@@ -489,26 +486,72 @@
icon_state = "kabuto"
item_state = "kabuto"
flags_inv = HIDEHAIR|HIDEEARS
+ armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 0)
/obj/item/clothing/head/fluff/bandit
name = "bandit hat"
- desc = "(I) A black cowboy hat with a large brim, curved to the sides, and a silver eagle pinned to the front."
+ desc = "A black cowboy hat with a large brim, curved to the sides, and a silver eagle pinned to the front."
icon_state = "bandit"
item_state = "fedora"
- armor = list("tier" = 1)
+ armor = list("melee" = 15, "bullet" = 15, "laser" = 15, "energy" = 10, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 0)
/obj/item/clothing/head/fluff/gambler
name = "gambler hat"
- desc = "(I) Perfect for a ramblin' gamblin' man." //But I got to ramble (ramblin' man) //Oh I got to gamble (gamblin' man) //Got to got to ramble (ramblin' man) //I was born a ramblin' gamblin' man
+ desc = "Perfect for a ramblin' gamblin' man." //But I got to ramble (ramblin' man) //Oh I got to gamble (gamblin' man) //Got to got to ramble (ramblin' man) //I was born a ramblin' gamblin' man
icon_state = "gambler"
item_state = "dethat"
- armor = list("tier" = 1)
+ armor = list("melee" = 15, "bullet" = 15, "laser" = 15, "energy" = 10, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 0)
/obj/item/clothing/head/fluff/Bikerhelmet
name = "Future Helmet"
- desc = "(II) A helmet of some sort as if from the distant future."
+ desc = "(A helmet of some sort as if from the distant future."
icon_state = "biker_helmet"
item_state = "biker_helmet"
- armor = list("tier" = 2,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 0)
+ armor = list("melee" = 30, "bullet" = 15, "laser" = 25, "energy" = 10, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 0)
resistance_flags = FIRE_PROOF
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
+
+/obj/item/clothing/head/rainbowbunchcrown
+ name = "rainbow flower crown"
+ desc = "A flower crown made out of the flowers of the rainbow bunch plant."
+ dynamic_hair_suffix = ""
+ attack_verb = list("crowned")
+
+/obj/item/clothing/head/rainbowbunchcrown/Initialize()
+ . = ..()
+ var/crown_type = rand(1,4)
+ switch(crown_type)
+ if(1)
+ desc += " This one has red, yellow and white flowers."
+ icon_state = "rainbow_bunch_crown_1"
+ if(2)
+ desc += " This one has blue, yellow, green and white flowers."
+ icon_state = "rainbow_bunch_crown_2"
+ if(3)
+ desc += " This one has red, blue, purple and pink flowers."
+ icon_state = "rainbow_bunch_crown_3"
+ if(4)
+ desc += " This one has yellow, green and white flowers."
+ icon_state = "rainbow_bunch_crown_4"
+
+/obj/item/clothing/head/sunflowercrown
+ name = "sunflower crown"
+ desc = "A bright flower crown made out sunflowers that is sure to brighten up anyone's day!"
+ icon_state = "sunflower_crown"
+ dynamic_hair_suffix = ""
+ attack_verb = list("crowned")
+
+/obj/item/clothing/head/poppycrown
+ name = "poppy crown"
+ desc = "A flower crown made out of a string of bright red poppies."
+ icon_state = "poppy_crown"
+ dynamic_hair_suffix = ""
+ attack_verb = list("crowned")
+
+/obj/item/clothing/head/lilycrown
+ name = "lily crown"
+ desc = "A leafy flower crown with a cluster of large white lilies at at the front."
+ icon_state = "lily_crown"
+ dynamic_hair_suffix = ""
+ attack_verb = list("crowned")
+
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index 646c887e4f..d4ebc382ab 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -125,6 +125,14 @@
light_range = 2
flags_cover = HEADCOVERSEYES
+/obj/item/clothing/head/hardhat/pumpkinhead/blumpkin
+ name = "carved blumpkin"
+ desc = "A very blue jack o' lantern! Believed to ward off vengeful chemists."
+ icon_state = "hardhat0_blumpkin"
+ item_state = "hardhat0_blumpkin"
+ hat_type = "blumpkin"
+ light_color = "#76ff8e"
+
/*
* Kitty ears
*/
diff --git a/code/modules/clothing/outfits/vr.dm b/code/modules/clothing/outfits/vr.dm
index 18de254fc2..905da74486 100644
--- a/code/modules/clothing/outfits/vr.dm
+++ b/code/modules/clothing/outfits/vr.dm
@@ -78,7 +78,7 @@
shoes = /obj/item/clothing/shoes/combat/swat
gloves = /obj/item/clothing/gloves/combat
id = /obj/item/card/id/dogtag/virt
- box = /obj/item/storage/survivalkit_adv
+ box = /obj/item/storage/survivalkit/adv
starting_funds = 0
/datum/outfit/vr/followers
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index 080cb4ed12..4d4298f3ac 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -8,14 +8,10 @@
equip_delay_other = 40
max_integrity = 250
resistance_flags = NONE
- armor = list("melee" = 40, "bullet" = 40, "laser" = 40, energy = "25", "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "wound" = 25)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0 , "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0, "wound" = 25)
slowdown = 0.01
var/list/protected_zones = list(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_GROIN, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
-/obj/item/clothing/suit/armor/examine(mob/user)
- . = ..()
- . += "This armor provides [armor.bullet]% bullet, [armor.laser]% laser, and [armor.melee]% melee resistance."
-
/obj/item/clothing/suit/armor/Initialize()
. = ..()
if(!allowed)
@@ -31,13 +27,24 @@
/obj/item/clothing/suit/armor/vest
name = "armor vest"
- desc = "A slim armored vest with a rigid exterior that provides decent protection against most types of damage."
+ desc = "A slim armored vest with a rigid exterior that provides decent protection against pistol rounds, stabs, and bludgeons."
icon_state = "armoralt"
item_state = "armoralt"
blood_overlay_type = "armor"
dog_fashion = /datum/dog_fashion/back
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
- armor = list("melee" = 40, "bullet" = 40, "laser" = 40, energy = "25", "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "wound" = 25)
+ armor = list("melee" = 35, "bullet" = 35, "laser" = 35, energy = "25", "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "wound" = 30)
+ slowdown = 0.05
+
+/obj/item/clothing/suit/armor/vest/big
+ name = "security vest"
+ desc = "A thick bullet-resistant vest composed of ballistic plates and padding. Common with pre-war security forces."
+ icon = 'icons/fallout/clothing/armored_medium.dmi'
+ mob_overlay_icon = 'icons/fallout/onmob/clothes/armor_medium.dmi'
+ icon_state = "vest_armor"
+ item_state = "vest_armor"
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 25, energy = "20", "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "wound" = 30)
+ slowdown = 0.18
/obj/item/clothing/suit/armor/vest/trench
name = "followers trenchcoat"
@@ -46,9 +53,11 @@
item_state = "followerstrench"
/obj/item/clothing/suit/armor/vest/alt
- desc = "A Type I armored vest that provides decent protection against most types of damage."
+ desc = "A thick armored vest that provides decent protection against most types of damage."
icon_state = "armor"
item_state = "armor"
+ armor = list("melee" = 40, "bullet" = 40, "laser" = 40, energy = "25", "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "wound" = 30)
+ slowdown = 0.1
/obj/item/clothing/suit/armor/vest/old
name = "degrading armor vest"
@@ -289,14 +298,13 @@
/obj/item/clothing/suit/armor/vest/durathread
name = "makeshift vest"
- desc = "A vest made of durathread with strips of leather acting as trauma plates."
+ desc = "A makeshift vest made of heat-resistant fiber."
icon_state = "durathread"
item_state = "durathread"
strip_delay = 60
equip_delay_other = 40
max_integrity = 200
- resistance_flags = FLAMMABLE
- armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 5, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50)
+ armor = list("melee" = 25, "bullet" = 15, "laser" = 40, "energy" = 40, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50)
/obj/item/clothing/suit/armor/vest/russian
name = "russian vest"
diff --git a/code/modules/clothing/suits/f13armor.dm b/code/modules/clothing/suits/f13armor.dm
index cb60a1244c..0cea743550 100644
--- a/code/modules/clothing/suits/f13armor.dm
+++ b/code/modules/clothing/suits/f13armor.dm
@@ -55,9 +55,9 @@
desc = "Separate armor parts you can wear over the clothing to get the most basic protection from the dangers of wasteland.
It sure is better than going into the battle without any armor at all."
icon_state = "armorkit"
item_state = "armorkit"
- armor = list("melee" = 20, "bullet" = 40, "laser" = 15, "energy" = 15, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0, "wound" = 30)
+ armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 20, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 10, "wound" = 30)
strip_delay = 30
- slowdown = 0.05
+ slowdown = 0.025
/obj/item/clothing/suit/armor/f13/kit/Initialize()
. = ..()
@@ -68,16 +68,26 @@
desc = "A couple of armor parts that can be worn over the clothing for moderate protection against the dangers of wasteland.
Do you feel lucky now? Well, do ya, punk?"
icon_state = "armorkit_punk"
item_state = "armorkit_punk"
- armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 20, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0, "wound" = 30)
+ armor = list("melee" = 20, "bullet" = 30, "laser" = 20, "energy" = 15, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 10, "wound" = 30)
strip_delay = 30
icon = 'icons/fallout/clothing/armored_light.dmi'
mob_overlay_icon = 'icons/fallout/onmob/clothes/armor_light.dmi'
- slowdown = 0.05
+ slowdown = 0.025
/obj/item/clothing/suit/armor/f13/punk/Initialize()
. = ..()
AddComponent(/datum/component/armor_plate)
+/obj/item/clothing/suit/armor/f13/plates
+ name = "light armor plates"
+ desc = "Well-made metal plates covering your vital organs."
+ icon = 'icons/fallout/clothing/armored_light.dmi'
+ mob_overlay_icon = 'icons/fallout/onmob/clothes/armor_light.dmi'
+ icon_state = "light_plates"
+ item_state = "armorkit"
+ armor = list("melee" = 33, "bullet" = 33, "laser" = 40, "energy" = 15, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0, "wound" = 30)
+ slowdown = 0.08
+
/obj/item/clothing/suit/armor/f13/leatherarmor
name = "leather armor"
desc = "Your basic all leather apparel. Finely crafted from tanned brahmin hide."
@@ -103,15 +113,19 @@
mob_overlay_icon = 'icons/fallout/onmob/clothes/armor_medium.dmi'
icon_state = "metal_chestplate"
item_state = "metal_chestplate"
- armor = list("melee" = 40, "bullet" = 40, "laser" = 50, "energy" = 15, "bomb" = 45, "bio" = 30, "rad" = 15, "fire" = 60, "acid" = 0, "wound" = 45)
- slowdown = 0.3
+ armor = list("melee" = 40, "bullet" = 45, "laser" = 50, "energy" = 15, "bomb" = 45, "bio" = 30, "rad" = 15, "fire" = 60, "acid" = 0, "wound" = 45)
+ slowdown = 0.22
strip_delay = 10
/obj/item/clothing/suit/armor/f13/metalarmor/laserproof
name = "polished metal armor"
desc = "A set of plates formed together to form a crude chestplate. These have been waxed and buffed to a mirror finish, but it looks a bit thinner."
- armor = list("melee" = 40, "bullet" = 38, "laser" = 60, "energy" = 15, "bomb" = 45, "bio" = 30, "rad" = 15, "fire" = 60, "acid" = 0, "wound" = 45)
- slowdown = 0.29
+ icon = 'icons/fallout/clothing/armored_medium.dmi'
+ mob_overlay_icon = 'icons/fallout/onmob/clothes/armor_medium.dmi'
+ icon_state = "armor_enclave_peacekeeper"
+ item_state = "armor_enclave_peacekeeper"
+ armor = list("melee" = 38, "bullet" = 42, "laser" = 60, "energy" = 25, "bomb" = 45, "bio" = 30, "rad" = 15, "fire" = 60, "acid" = 0, "wound" = 45)
+ slowdown = 0.2
strip_delay = 10
/obj/item/clothing/suit/armor/fluff/metalarmor/Initialize()
@@ -125,11 +139,11 @@
/obj/item/clothing/suit/armor/f13/metalarmor/reinforced
name = "reinforced metal armor"
- desc = "A set of polished plates formed together to provide effective protection."
+ desc = "A set of well-fitted plates formed together to provide effective protection."
icon_state = "metal_chestplate2"
item_state = "metal_chestplate2"
- armor = list("melee" = 37, "bullet" = 25, "laser" = 42, "energy" = 15, "bomb" = 40, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 50)
- slowdown = 0.27
+ armor = list("melee" = 45, "bullet" = 50, "laser" = 55, "energy" = 15, "bomb" = 45, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 50)
+ slowdown = 0.25
strip_delay = 10
/obj/item/clothing/suit/armor/f13/metalarmor/steelbib
@@ -138,7 +152,7 @@
icon_state = "steel_bib"
item_state = "steel_bib"
armor = list("melee" = 20, "bullet" = 45, "laser" = 20, "energy" = 15, "bomb" = 20, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
- slowdown = 0.05
+ slowdown = 0.06
strip_delay = 5
//Combat armor (Faction specific is on f13factionarmor.dm)
@@ -147,9 +161,14 @@
desc = "An old military grade pre war combat armor."
icon_state = "combat_armor"
item_state = "combat_armor"
- armor = list("melee" = 45, "bullet" = 45, "laser" = 40, "energy" = 20, "bomb" = 50, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 50)
+ armor = list("melee" = 45, "bullet" = 45, "laser" = 45, "energy" = 20, "bomb" = 50, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 50)
slowdown = 0.12
+/obj/item/clothing/suit/armor/f13/combat/laserproof
+ name = "ablative combat armor"
+ desc = "An old military grade pre war combat armor. This one switches out its ballistic fibers for an ablative coating that disrupts energy weapons."
+ armor = list("melee" = 35, "bullet" = 35, "laser" = 60, "energy" = 50, "bomb" = 50, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 50)
+
/obj/item/clothing/suit/armor/f13/combat/dark
name = "combat armor"
desc = "An old military grade pre war combat armor. Now in dark, and extra-crispy!"
@@ -170,9 +189,9 @@
icon = 'icons/obj/clothing/suits.dmi'
icon_state = "combat_armor_mk2"
item_state = "combat_armor_mk2"
- armor = list("melee" = 50, "bullet" = 50, "laser" = 40, "energy" = 22, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 55)
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 22, "bomb" = 55, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 55)
slowdown = 0.15
-
+
/obj/item/clothing/suit/armor/f13/combat/mk2/dark
name = "reinforced combat armor"
desc = "A reinforced model based of the pre-war combat armor. Now in dark, light, and smoky barbeque!"
@@ -198,7 +217,7 @@
item_state = "rusted_combat_armor"
armor = list("melee" = 38, "bullet" = 45, "laser" = 38, "energy" = 18, "bomb" = 45, "bio" = 55, "rad" = 10, "fire" = 60, "acid" = 20, "wound" = 45)
slowdown = 0.12
-
+
/obj/item/clothing/suit/armor/f13/combat/environmental
name = "environmental armor"
desc = "A pre-war suit developed for use in heavily contaminated environments, and is prized in the Wasteland for its ability to protect against biological threats."
@@ -243,84 +262,8 @@
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
- var/emped = 0
var/requires_training = TRUE
var/powered = TRUE
- var/armor_block_chance = 0 //Chance for the power armor to block a low penetration projectile
- protected_zones = list(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_GROIN, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
- var/deflection_chance = 0 //Chance for the power armor to redirect a blocked projectile
- var/armor_block_threshold = 0 //projectiles below this will deflect
- var/melee_block_threshold = 0
- var/dmg_block_threshold = 0
- var/powerLevel = 7000
- var/powerMode = 3
-
-/obj/item/fusion_fuel
- name = "fusion fuel cell"
- desc = "Some fusion fuel used to recharge the fusion cores of Power Armor."
- icon = 'icons/obj/power.dmi'
- icon_state = "cell"
- item_state = "cell"
- lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
- var/fuel = 20000
-
-/obj/item/fusion_fuel/examine(mob/user)
- . = ..()
- to_chat(user, "The charge meter reads [fuel].")
-
-/obj/item/clothing/suit/armor/f13/power_armor/attackby(obj/item/I, mob/user, params)
- . = ..()
- if(istype(I,/obj/item/fusion_fuel)&& powered)
- var/obj/item/fusion_fuel/fuel = I
- if(src.powerLevel>=50000)
- to_chat(user, "The fusion core is full.")
- return
- if(fuel.fuel >= 5000)
- src.powerLevel += 5000
- fuel.fuel -= 5000
- to_chat(user, "You charge the fusion core to [src.powerLevel] units of fuel. [fuel.fuel]/20000 left in the fuel cell.")
- return
- to_chat(user, "The fuel cell is empty.")
-
-/obj/item/clothing/suit/armor/f13/power_armor/proc/processPower()
- if(powerLevel>0)//drain charge
- powerLevel -= 1
- if(powerLevel > 20000)//switch to 3 power mode
- if(powerMode <= 2)
- powerUp()
- return
- if(powerLevel > 10000)//switch to 2 power
- if(powerMode <= 1)
- powerUp()
- if(powerMode > 2)
- powerDown()
- return
- if(powerLevel > 5000)//switch to 1 power
- if(powerMode <= 0)
- powerUp()
- if(powerMode > 1)
- powerDown()
- return
- if(powerLevel >= 0)//switch to 0 power
- if(powerMode >= 1)
- powerDown()
-
-/obj/item/clothing/suit/armor/f13/power_armor/proc/powerUp(mob/user)
- powerMode += 1
- slowdown -= 0.2
- var/mob/living/L = loc
- if(istype(L))
- L.update_equipment_speed_mods()
- armor = armor.modifyRating(melee = 75, bullet = 75, laser = 75)
-
-/obj/item/clothing/suit/armor/f13/power_armor/proc/powerDown(mob/user)
- powerMode -= 1
- slowdown += 0.2
- var/mob/living/L = loc
- if(istype(L))
- L.update_equipment_speed_mods()
- armor = armor.modifyRating(melee = -75, bullet = -75, laser = -75)
/obj/item/clothing/suit/armor/f13/power_armor/mob_can_equip(mob/user, mob/equipper, slot, disable_warning = 1)
var/mob/living/carbon/human/H = user
@@ -329,66 +272,53 @@
if (!HAS_TRAIT(H, TRAIT_PA_WEAR) && slot == SLOT_WEAR_SUIT && requires_training)
to_chat(user, "
You don't have the proper training to operate the power armor! ")
return 0
- if(slot == SLOT_WEAR_SUIT)
- ADD_TRAIT(user, TRAIT_STUNIMMUNE, "stun_immunity")
- ADD_TRAIT(user, TRAIT_PUSHIMMUNE, "push_immunity")
+ if(!powered)
+ return ..()
+ if(slot == SLOT_WEAR_SUIT && powered)
+ ADD_TRAIT(user, TRAIT_STUNIMMUNE, "PA_stun_immunity")
+ ADD_TRAIT(user, TRAIT_PUSHIMMUNE, "PA_push_immunity")
+ ADD_TRAIT(user, SPREAD_CONTROL, "PA_spreadcontrol")
+
return ..()
return
/obj/item/clothing/suit/armor/f13/power_armor/dropped(mob/user)
- REMOVE_TRAIT(user, TRAIT_STUNIMMUNE, "stun_immunity")
- REMOVE_TRAIT(user, TRAIT_PUSHIMMUNE, "push_immunity")
+ if(powered)
+ REMOVE_TRAIT(user, TRAIT_STUNIMMUNE, "PA_stun_immunity")
+ REMOVE_TRAIT(user, TRAIT_PUSHIMMUNE, "PA_push_immunity")
+ REMOVE_TRAIT(user, SPREAD_CONTROL, "PA_spreadcontrol")
return ..()
/obj/item/clothing/suit/armor/f13/power_armor/emp_act(mob/living/carbon/human/owner, severity)
. = ..()
if(. & EMP_PROTECT_SELF)
return
- emped++
- var/curremp = emped // keeps tabs on the current EMP cycle.
- if(ismob(loc))
+ if(!powered)
+ return
+ if(isliving(loc) && prob(severity*1.5))
+ var/time_slowed = severity / 10 SECONDS
var/mob/living/L = loc
- to_chat(loc, "
Warning: electromagnetic surge detected in armor. Rerouting power to emergency systems. ")
+ to_chat(L, "
Warning: electromagnetic surge detected in armor. Rerouting power to emergency systems. ")
slowdown += 1.2
- armor = armor.modifyRating(melee = -100, bullet = -100, laser = -100)
if(istype(L))
L.update_equipment_speed_mods()
- addtimer(CALLBACK(src, .proc/end_emp_effect, curremp), 5 SECONDS)
+ addtimer(CALLBACK(src, .proc/end_emp_effect), time_slowed)
-/obj/item/clothing/suit/armor/f13/power_armor/proc/end_emp_effect(curremp)
- if(emped != curremp) //Don't fix it if it's been EMP'd again
- return FALSE
- if(ismob(loc))
+/obj/item/clothing/suit/armor/f13/power_armor/proc/end_emp_effect()
+ if(isliving(loc))
var/mob/living/L = loc
- armor = armor.modifyRating(melee = 100, bullet = 100, laser = 100)
slowdown -= 1.2
- to_chat(loc, "
Armor power reroute successful. All systems operational. ")
+ to_chat(L, "
Armor power reroute successful. All systems operational. ")
if(istype(L))
L.update_equipment_speed_mods()
return TRUE
-/obj/item/clothing/suit/armor/f13/power_armor/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
- . = ..()
- if(damage >= src.dmg_block_threshold && check_armor_penetration(object) >= 0)
- return
- if(check_armor_penetration(object) <= src.armor_block_threshold && (attack_type == ATTACK_TYPE_PROJECTILE) && (def_zone in protected_zones))
- if(prob(armor_block_chance))
- var/ratio = rand(0,100)
- if(ratio <= deflection_chance)
- block_return[BLOCK_RETURN_REDIRECT_METHOD] = REDIRECT_METHOD_DEFLECT
- return BLOCK_SHOULD_REDIRECT | BLOCK_REDIRECTED | BLOCK_SUCCESS | BLOCK_PHYSICAL_INTERNAL
- if(ismob(loc))
- to_chat(loc, "
Your power armor absorbs the projectile's impact! ")
- block_return[BLOCK_RETURN_SET_DAMAGE_TO] = 0
- return BLOCK_SUCCESS | BLOCK_PHYSICAL_INTERNAL
- return
-
/obj/item/clothing/suit/armor/f13/power_armor/t45b
name = "salvaged T-45b power armor"
desc = "It's a set of early-model T-45 power armor with a custom air conditioning module and stripped out servomotors. Bulky and slow, but almost as good as the real thing."
icon_state = "t45bpowerarmor"
item_state = "t45bpowerarmor"
- armor = list("melee" = 75, "bullet" = 75, "laser" = 75, "energy" = 20, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 80, "acid" = 0, "wound" = 65)
+ armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 20, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 80, "acid" = 0, "wound" = 65)
requires_training = FALSE
slowdown = 0.5
powered = FALSE
@@ -397,7 +327,7 @@
name = "restored T-45b power armor"
desc = "It's a set of early-model T-45 power armor with a custom air conditioning module and restored servomotors. Bulky, but almost as good as the real thing."
requires_training = TRUE
- armor = list("melee" = 75, "bullet" = 75, "laser" = 75, "energy" = 22, "bomb" = 55, "bio" = 65, "rad" = 55, "fire" = 85, "acid" = 0, "wound" = 65)
+ armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 22, "bomb" = 55, "bio" = 65, "rad" = 55, "fire" = 85, "acid" = 0, "wound" = 65)
powered = TRUE
slowdown = 0.3
@@ -427,29 +357,13 @@
slowdown = 0.25
requires_training = FALSE
-/obj/item/clothing/suit/armor/f13/power_armor/vaulttec
- name = "Vault-Tec power armour"
- desc = "A refined suit of power armour, purpose-built by the residents of Vault-115 in order to better keep the peace in their new settlement."
- icon_state = "vaultpa"
- item_state = "vaultpa"
- armor = list("melee" = 65, "bullet" = 65, "laser" = 65, "energy" = 22, "bomb" = 55, "bio" = 65, "rad" = 55, "fire" = 85, "acid" = 0, "wound" = 70)
- slowdown = 0
-
-/obj/item/clothing/suit/armor/f13/power_armor/vaulttecta
- name = "Vault-Tec technical armour"
- desc = "A primative suit of power armour, the first kind built by the residents of Vault-115 in order to fight off immediate threats."
- icon_state = "vaulttecta"
- item_state = "vaulttecta"
- armor = list("melee" = 60, "bullet" = 60, "laser" = 60, "energy" = 25, "bomb" = 55, "bio" = 65, "rad" = 55, "fire" = 85, "acid" = 0, "wound" = 70)
- slowdown = 0.4
-
/obj/item/clothing/suit/armor/f13/power_armor/excavator
name = "excavator power armor"
desc = "Developed by Garrahan Mining Co. in collaboration with West Tek, the Excavator-class power armor was designed to protect miners from rockfalls and airborne contaminants while increasing the speed at which they could work. "
icon_state = "excavator"
item_state = "excavator"
- slowdown = 0.5
- armor = list("melee" = 70, "bullet" = 50, "laser" = 50, "energy" = 25, "bomb" = 80, "bio" = 65, "rad" = 55, "fire" = 85, "acid" = 0, "wound" = 40)
+ slowdown = 0.4
+ armor = list("melee" = 80, "bullet" = 50, "laser" = 50, "energy" = 15, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 95, "acid" = 80, "wound" = 80)
/obj/item/clothing/suit/armor/f13/power_armor/t45d
name = "T-45d power armor"
@@ -457,26 +371,11 @@
icon_state = "t45dpowerarmor"
item_state = "t45dpowerarmor"
slowdown = 0.225
- armor = list("melee" = 75, "bullet" = 75, "laser" = 75, "energy" = 25, "bomb" = 65, "bio" = 75, "rad" = 80, "fire" = 85, "acid" = 30, "wound" = 70)
-
-
-/obj/item/clothing/suit/armor/f13/power_armor/t45d/gunslinger
- name = "Gunslinger T-51b"
- desc = "(IX) What was once a suit of T-51 Power Armor is now an almost unrecognizable piece of art or garbage, depending on who you ask. Almost all of the external plating has either been removed or stripped to allow for maximum mobility, and overlapping underplates protect the user from small arms fire. Whoever designed this had a very specific purpose in mind: mobility and aesthetics over defense."
- icon_state = "t51bgs"
- item_state = "t51bgs"
- slowdown = -0.2
- flags_inv = HIDEJUMPSUIT|HIDENECK
-
-/obj/item/clothing/suit/armor/f13/power_armor/t45d/sierra
- name = "sierra power armor"
- desc = "A captured set of T-45d power armor put into use by the NCR, it's been heavily modified and decorated with the head of a bear and intricate gold trimming. A two headed bear is scorched into the breastplate."
- icon_state = "sierra"
- item_state = "sierra"
+ armor = list("melee" = 72.5, "bullet" = 72.5, "laser" = 72.5, "energy" = 25, "bomb" = 65, "bio" = 75, "rad" = 80, "fire" = 85, "acid" = 30, "wound" = 70)
/obj/item/clothing/suit/armor/f13/power_armor/t45d/knightcaptain
- name = "Knight-Captain's T-45d Power Armour"
- desc = "A classic set of T-45d Power Armour only to be used in armed combat, it signifies the Knight Captain and their place in the Brotherhood. A leader, and a beacon of structure in a place where chaos reigns. All must rally to his call, for he is the Knight Captain and your safety is his duty."
+ name = "Head-Knight's T-45d Power Armour"
+ desc = "A classic set of T-45d Power Armour only to be used in armed combat, it signifies the Head Knight and their place in the Brotherhood. A leader, and a beacon of structure in a place where chaos reigns. All must rally to his call, for he is the Head Knight and your safety is his duty."
icon_state = "t45dkc"
item_state = "t45dkc"
slowdown = 0.16
@@ -487,20 +386,13 @@
icon_state = "t45dpowerarmor_bos"
item_state = "t45dpowerarmor_bos"
-/obj/item/clothing/suit/armor/f13/power_armor/midwest
- name = "midwestern power armor"
- desc = "This set of power armor once belonged to the Midwestern branch of the Brotherhood of Steel, and now resides here."
- icon_state = "midwestgrey_pa"
- item_state = "midwestgrey_pa"
- armor = list("melee" = 75, "bullet" = 70, "laser" = 45, "energy" = 25, "bomb" = 65, "bio" = 75, "rad" = 80, "fire" = 85, "acid" = 30, "wound" = 70)
-
/obj/item/clothing/suit/armor/f13/power_armor/t51b
name = "T-51b power armor"
desc = "The pinnacle of pre-war technology. This suit of power armor provides substantial protection to the wearer."
icon_state = "t51bpowerarmor"
item_state = "t51bpowerarmor"
- slowdown = 0.15 //+0.05 from helmet = total 0.175
- armor = list("melee" = 75, "bullet" = 75, "laser" = 75, "energy" = 30, "bomb" = 62, "bio" = 100, "rad" = 99, "fire" = 90, "acid" = 0, "wound" = 72)
+ slowdown = 0.15 //+0.05 from helmet = total 0.175
+ armor = list("melee" = 72.5, "bullet" = 72.5, "laser" = 72.5, "energy" = 30, "bomb" = 62, "bio" = 100, "rad" = 99, "fire" = 90, "acid" = 0, "wound" = 72)
/obj/item/clothing/suit/armor/f13/power_armor/t51green
name = "Hardened T-51b power armor"
@@ -508,7 +400,7 @@
icon_state = "t51green"
item_state = "t51green"
slowdown = 0.15 //+0.05 from helmet = total 0.2
- armor = list("melee" = 77, "bullet" = 77, "laser" = 72, "energy" = 27, "bomb" = 64, "bio" = 100, "rad" = 99, "fire" = 90, "acid" = 0, "wound" = 75)
+ armor = list("melee" = 75, "bullet" = 75, "laser" = 75, "energy" = 27, "bomb" = 64, "bio" = 100, "rad" = 99, "fire" = 90, "acid" = 0, "wound" = 75)
/obj/item/clothing/suit/armor/f13/power_armor/t51b/bos
name = "Brotherhood T-51b Power Armour"
@@ -516,33 +408,6 @@
icon_state = "t51bpowerarmor_bos"
item_state = "t51bpowerarmor_bos"
-/obj/item/clothing/suit/armor/f13/power_armor/t51b/tesla
- name = "T-51b tesla armor"
- desc = "The pinnacle of pre-war technology. This suit of power armor provides substantial protection to the wearer, with the added benefit of tesla coils."
- icon_state = "t51tesla"
- item_state = "t51tesla"
- slowdown = 0.15 //+0.1 from helmet = total 0.25
- armor = list("melee" = 70, "bullet" = 70, "laser" = 85, "energy" = 70, "bomb" = 62, "bio" = 100, "rad" = 99, "fire" = 90, "acid" = 0, "wound" = 72)
-
-/obj/item/clothing/suit/armor/f13/power_armor/t51b/wbos
- name = "Washington power armor"
- desc = "A dark mirror to the pinnacle of pre-war technology. This suit of power armor provides substantial protection to the wearer."
- icon_state = "t51wbos"
- item_state = "t51wbos"
-
-/obj/item/clothing/suit/armor/f13/power_armor/t51b/reforgedwbos
- name = "reforged Washington power armor"
- desc = "A dark mirror to the pinnacle of pre-war technology, reforged. This suit of power armor provides substantial protection to the wearer."
- icon_state = "t51matt"
- item_state = "t51matt"
-
-/obj/item/clothing/suit/armor/f13/power_armor/t51b/ultra
- name = "Ultracite power armor"
- desc = "(X) The pinnacle of pre-war technology. This suit of power armor provides substantial protection to the wearer. Now ultracite enhanced."
- icon_state = "ultracitepa"
- item_state = "ultracitepa"
- slowdown = 0
-
/obj/item/clothing/suit/armor/f13/power_armor/t60
name = "T-60a power armor"
desc = "Developed in early 2077 after the Anchorage Reclamation, the T-60 series of power armor was designed to eventually replace the T-51b as the pinnacle of powered armor technology in the U.S. military arsenal."
@@ -551,22 +416,6 @@
slowdown = 0.1
armor = list("melee" = 80, "bullet" = 70, "laser" = 80, "energy" = 30, "bomb" = 82, "bio" = 100, "rad" = 100, "fire" = 95, "acid" = 0, "wound" = 80)
-/obj/item/clothing/suit/armor/f13/power_armor/t60/tesla
- name = "T-60b tesla armor"
- desc = "(X*) An experimental variant of T-60a power armor featuring an array of tesla coils. A small amount of protection has been sacrificed to give a chance to deflect energy projectiles."
- icon_state = "t60tesla"
- item_state = "t60tesla"
- slowdown = 0.1
- armor = list("tier" = 10, "linelaser" = 25, "energy" = 70, "bomb" = 82, "bio" = 100, "rad" = 100, "fire" = 95, "acid" = 0, "wound" = 80)
- var/hit_reflect_chance = 20
-
-/obj/item/clothing/suit/armor/f13/power_armor/t60/tesla/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
- if(is_energy_reflectable_projectile(object) && (attack_type == ATTACK_TYPE_PROJECTILE) && (def_zone in protected_zones))
- if(prob(hit_reflect_chance))
- block_return[BLOCK_RETURN_REDIRECT_METHOD] = REDIRECT_METHOD_DEFLECT
- return BLOCK_SHOULD_REDIRECT | BLOCK_REDIRECTED | BLOCK_SUCCESS | BLOCK_PHYSICAL_INTERNAL
- return ..()
-
/obj/item/clothing/suit/armor/f13/power_armor/advanced
name = "advanced power armor"
desc = "An advanced suit of armor typically used by the Enclave.
It is composed of lightweight metal alloys, reinforced with ceramic castings at key stress points.
Additionally, like the T-51b power armor, it includes a recycling system that can convert human waste into drinkable water, and an air conditioning system for its user's comfort."
@@ -574,56 +423,28 @@
item_state = "advpowerarmor1"
armor = list("melee" = 80, "bullet" = 80, "laser" = 85, "energy" = 35, "bomb" = 72, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 0, "wound" = 90)
-/obj/item/clothing/suit/armor/f13/power_armor/advanced/hellfire
- name = "hellfire power armor"
- desc = "A deep black suit of Enclave-manufactured heavy power armor, based on pre-war designs such as the T-51 and improving off of data gathered by post-war designs such as the X-01. Most commonly fielded on the East Coast, no suit rivals it's strength."
- icon_state = "hellfire"
- item_state = "hellfire"
- armor = list("melee" = 85, "bullet" = 85, "laser" = 90, "energy" = 37, "bomb" = 72, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 0, "wound" = 100)
-
-/obj/item/clothing/suit/armor/f13/power_armor/advanced/hellfire/wbos
- name = "advanced Washington power armor"
- desc = "It's an improved model of the power armor used exclusively by the Washington Brotherhood."
- icon_state = "apawbos"
- item_state = "apawbos"
-
-/obj/item/clothing/suit/armor/f13/power_armor/tesla
- name = "tesla power armor"
- desc = "A variant of the Enclave's advanced power armor Mk I, jury-rigged with a Tesla device that is capable of dispersing a large percentage of the damage done by directed-energy attacks.
As it's made of complex composite materials designed to block most of energy damage - it's notably weaker against kinetic impacts."
- icon_state = "tesla"
- item_state = "tesla"
- armor = list("melee" = 65, "bullet" = 65, "laser" = 90, "energy" = 95, "bomb" = 62, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 0, "wound" = 80)
- var/hit_reflect_chance = 35
-
-/obj/item/clothing/suit/armor/f13/power_armor/tesla/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return)
- if(is_energy_reflectable_projectile(object) && (attack_type == ATTACK_TYPE_PROJECTILE) && (def_zone in protected_zones))
- if(prob(hit_reflect_chance))
- block_return[BLOCK_RETURN_REDIRECT_METHOD] = REDIRECT_METHOD_DEFLECT
- return BLOCK_SHOULD_REDIRECT | BLOCK_REDIRECTED | BLOCK_SUCCESS | BLOCK_PHYSICAL_INTERNAL
- return ..()
-
//Peacekeeper armor adjust as needed
/obj/item/clothing/suit/armor/f13/power_armor/x02
name = "Enclave power armor"
- desc = "(XI) Upgraded pre-war power armor design used by the Enclave. It is mildly worn due to it's age and lack of maintenance after the fall of the Enclave."
+ desc = "Upgraded pre-war power armor design used by the Enclave. It is mildly worn due to it's age and lack of maintenance after the fall of the Enclave."
icon_state = "advanced"
item_state = "advanced"
slowdown = 0.15 //+0.1 from helmet = total 0.25
- armor = list("tier" = 11, "energy" = 65, "bomb" = 62, "bio" = 100, "rad" = 99, "fire" = 90, "acid" = 0, "wound" = 70)
+ armor = list("melee" = 85, "bullet" = 85, "laser" = 87, "energy" = 65, "bomb" = 62, "bio" = 100, "rad" = 99, "fire" = 90, "acid" = 0, "wound" = 70)
/obj/item/clothing/suit/armor/f13/enclave/armorvest
name = "armored vest"
- desc = "(VI) Efficient prewar design issued to Enclave personell."
+ desc = "Efficient prewar design issued to Enclave personell."
icon_state = "armor_enclave_peacekeeper"
item_state = "armor_enclave_peacekeeper"
- armor = list("tier" = 6)
+ armor = list("melee" = 55, "bullet" = 55, "laser" = 55, "energy" = 20, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 80, "acid" = 0, "wound" = 70)
/obj/item/clothing/suit/armor/f13/enclave/officercoat
name = "armored coat"
- desc = "(VII) Premium prewar armor fitted into a coat for Enclave officers."
+ desc = "Premium prewar armor fitted into a coat for Enclave officers."
icon_state = "armor_enclave_officer"
item_state = "armor_enclave_officer"
- armor = list("tier" = 7)
+ armor = list("melee" = 60, "bullet" = 60, "laser" = 60, "energy" = 20, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 80, "acid" = 0, "wound" = 70)
//Generic Tribal - For Wayfarer specific, see f13factionhead.dm
//Trying generic tribal armor stats for this one for now.
@@ -712,7 +533,7 @@
equip_delay_other = 40
max_integrity = 250
resistance_flags = NONE
- armor = list("tier" = 2, "energy" = 16, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
+ armor = list("melee" = 25, "bullet" = 25,"laser" = 25, "energy" = 16, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
togglename = "collar"
/obj/item/clothing/suit/armor/f13/vaquero
@@ -760,7 +581,7 @@
desc = "A heavy pre-war bomber coat, dyed blue with the number '113' embroidered on the back. Most often worn by leaders, such as the Overseer."
icon_state = "maxson_battlecoat"
item_state = "maxson_battlecoat"
-
+
/obj/item/clothing/suit/armor/f13/battlecoat/vault/overseer
name = "Overseer's battlecoat"
@@ -797,16 +618,12 @@
icon_state = "bulletproof"
item_state = "armor"
blood_overlay_type = "armor"
- armor = list("melee" = 25, "bullet" = 60, "laser" = 25, "energy" = 35, "bomb" = 50, "bio" = 40, "rad" = 10, "fire" = 60, "acid" = 10, "wound" = 50)
+ armor = list("melee" = 27, "bullet" = 60, "laser" = 27, "energy" = 35, "bomb" = 50, "bio" = 40, "rad" = 10, "fire" = 60, "acid" = 10, "wound" = 50)
strip_delay = 70
equip_delay_other = 50
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
slowdown = 0.05
-/obj/item/clothing/suit/armor/bulletproof/Initialize()
- . = ..()
- AddComponent(/datum/component/armor_plate)
-
/obj/item/clothing/suit/armor/bone
name = "bone armor"
desc = "A tribal armor plate, crafted from animal bone."
@@ -853,9 +670,9 @@ obj/item/clothing/suit/armor/f13/exile/cust0m
/obj/item/clothing/suit/armor/f13/harpercoat
name = "outlaw coat"
- desc = "(IV) A combat duster"
+ desc = " A combat duster"
icon_state = "harperduster"
- armor = list("tier" = 4, "energy" = 40, "bomb" = 25, "bio" = 40, "rad" = 35, "fire" = 80, "acid" = 0)
+ armor = list("energy" = 40, "bomb" = 25, "bio" = 40, "rad" = 35, "fire" = 80, "acid" = 0)
/obj/item/clothing/suit/armor/f13/raider/reptiliatenebris
name = "Reptilia Tenebris"
@@ -936,11 +753,11 @@ obj/item/clothing/suit/armor/f13/exile/cust0m
/obj/item/clothing/suit/armor/f13/herbertranger //Armor wise, it's reskinned raider armor.
name = "weathered desert ranger armor"
- desc = "(IV) A set of pre-unification desert ranger armor, made using parts of what was once USMC riot armor. It looks as if it has been worn for decades; the coat has become discoloured from years under the Mojave sun and has multiple tears and bullet holes in its leather. The armor plating itself seems to be in relatively good shape, though it could do with some maintenance."
+ desc = " A set of pre-unification desert ranger armor, made using parts of what was once USMC riot armor. It looks as if it has been worn for decades; the coat has become discoloured from years under the Mojave sun and has multiple tears and bullet holes in its leather. The armor plating itself seems to be in relatively good shape, though it could do with some maintenance."
body_parts_covered = CHEST|GROIN|LEGS|ARMS
icon_state = "usmc_riot_gear"
item_state = "usmc_riot_gear"
- armor = list("tier" = 4, "energy" = 35, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25)
+ armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 35, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25)
strip_delay = 40
/obj/item/clothing/suit/armor/f13/herbertranger/Initialize() //HQ parts reinforcement, just like raider gear
@@ -962,7 +779,7 @@ obj/item/clothing/suit/armor/f13/exile/cust0m
/obj/item/clothing/suit/armor/f13/marlowsuit/ikesuit
name = "gunfighter's overcoat"
- desc = "(IV) A thick double-breasted red leather overcoat worn through with scattered tears and bullet holes."
+ desc = " A thick double-breasted red leather overcoat worn through with scattered tears and bullet holes."
icon_state = "ikesuit"
item_state = "ikesuit"
@@ -972,7 +789,7 @@ obj/item/clothing/suit/armor/f13/exile/cust0m
/obj/item/clothing/suit/armor/f13/marlowsuit/masonsuit
name = "vagabond's vest"
- desc = "(IV) A padded thick red leather vest, coated in stitched pockets and other mends."
+ desc = " A padded thick red leather vest, coated in stitched pockets and other mends."
icon_state = "masonsuit"
item_state = "masonsuit"
@@ -992,55 +809,55 @@ obj/item/clothing/suit/armor/f13/exile/cust0m
/obj/item/clothing/suit/armor/f13/atomzealot
name = "zealot armor"
- desc = "(IV) The armor of those true to the Division."
+ desc = " The armor of those true to the Division."
icon_state = "atomzealot"
item_state = "atomzealot"
- armor = list("tier" = 4, "energy" = 45, "bomb" = 55, "bio" = 65, "rad" = 100, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 40, "bullet" = 40,"laser" = 40, "energy" = 45, "bomb" = 55, "bio" = 65, "rad" = 100, "fire" = 60, "acid" = 20)
/obj/item/clothing/suit/armor/f13/atomwitch
name = "atomic seer robes"
- desc = "(II) The robes worn by female seers of the Division."
+ desc = " The robes worn by female seers of the Division."
icon_state = "atomwitch"
item_state = "atomwitch"
- armor = list("tier" = 2, "energy" = 45, "bomb" = 55, "bio" = 65, "rad" = 100, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 30, "bullet" = 25,"laser" = 25, "energy" = 45, "bomb" = 55, "bio" = 65, "rad" = 100, "fire" = 60, "acid" = 20)
/obj/item/clothing/suit/armor/f13/harbingermantle
name = "Harbinger's Mantle"
- desc = "(VII) An eerie, silken cloth that seems to be dripping with a thick mist. It is in truth a high-tech stealth device that allows for psionic amplification. The capacitors and manipulators in it utilise quantum technology and are highly volatile."
+ desc = " An eerie, silken cloth that seems to be dripping with a thick mist. It is in truth a high-tech stealth device that allows for psionic amplification. The capacitors and manipulators in it utilise quantum technology and are highly volatile."
icon_state = "scloak"
item_state = "scloak"
- armor = list("tier" = 7, "energy" = 55, "bomb" = 45, "bio" = 45, "rad" = 45, "fire" = 45, "acid" = 0)
+ armor = list("melee" = 50, "bullet" = 50,"laser" = 50, "energy" = 55, "bomb" = 45, "bio" = 45, "rad" = 45, "fire" = 45, "acid" = 0)
/obj/item/clothing/suit/armor/f13/ghostechoe
name = "tattered peace coat"
- desc = "(II) An old coat belonging to a Desert Ranger once. It has been stripped of most useful protection, and has seen better days. A crude peace symbol has been painted on the back in white."
+ desc = " An old coat belonging to a Desert Ranger once. It has been stripped of most useful protection, and has seen better days. A crude peace symbol has been painted on the back in white."
icon_state = "ghostechoe"
item_state = "ghostechoe"
- armor = list("tier" = 2, "energy" = 0, "bomb" = 16, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ armor = list("melee" = 30, "bullet" = 25,"laser" = 25, "energy" = 0, "bomb" = 16, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
//Mutants
/obj/item/clothing/suit/armor/f13/mutant/poncho
name = "mutant poncho"
- desc = "(IV) An oversized poncho, made to fit the frame of a super mutant. Maybe he's the big ranger with an iron on his hip?"
+ desc = " An oversized poncho, made to fit the frame of a super mutant. Maybe he's the big ranger with an iron on his hip?"
icon_state = "mutie_poncho"
item_state = "mutie_poncho"
- armor = list("tier" = 4, "energy" = 40, "bomb" = 50, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 30, "bullet" = 25,"laser" = 25, "energy" = 40, "bomb" = 50, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20)
/obj/item/clothing/suit/armor/f13/mutant/metal
name = "mutant armour"
- desc = "(V) An oversized set of metal armour, made to fit the frame of a super mutant. Maybe he's the big iron with a ranger on his hip?"
+ desc = " An oversized set of metal armour, made to fit the frame of a super mutant. Maybe he's the big iron with a ranger on his hip?"
icon_state = "mutie_metal_armour"
item_state = "mutie_metal_armour"
- armor = list("tier" = 5, "energy" = 40, "bomb" = 50, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 40, "bullet" = 40,"laser" = 40, "energy" = 40, "bomb" = 50, "bio" = 60, "rad" = 10, "fire" = 60, "acid" = 20)
/obj/item/clothing/suit/armor/f13/mutant/metal/reinforced
name = "mutant armour"
desc = "(6) An oversized boiler plate, hammered to fit the frame of a super mutant. Maybe he's the big iron with a ranger on his hip?"
icon_state = "mutie_metal_armour_mk2"
item_state = "mutie_metal_armour_mk2"
- armor = list("tier" = 6, "energy" = 40, "bomb" = 50, "bio" = 60, "rad" = 40, "fire" = 30, "acid" = 20)
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 40, "bomb" = 50, "bio" = 60, "rad" = 40, "fire" = 30, "acid" = 20)
//TRIBALS
@@ -1051,10 +868,6 @@ obj/item/clothing/suit/armor/f13/exile/cust0m
item_state = "tribal"
armor = list("melee" = 35, "bullet" = 25, "laser" = 35, "energy" = 15, "bomb" = 50, "bio" = 40, "rad" = 10, "fire" = 60, "acid" = 10, "wound" = 40)
slowdown = 0.05
-
-/obj/item/clothing/suit/f13/tribal/examine(mob/user)
- . = ..()
- . += "This armor provides [armor.bullet]% bullet, [armor.laser]% laser, and [armor.melee]% melee resistance."
/obj/item/clothing/suit/f13/tribal/light
name = "light tribal armor"
@@ -1091,7 +904,7 @@ obj/item/clothing/suit/armor/f13/exile/cust0m
armor = list("melee" = 35, "bullet" = 40, "laser" = 35, "energy" = 10, "bomb" = 50, "bio" = 40, "rad" = 10, "fire" = 60, "acid" = 10)
pocket_storage_component_path = /datum/component/storage/concrete/pockets/small
slowdown = 0.1
-
+
/obj/item/clothing/suit/f13/tribal/heavy/rustwalkers
name = "Rustwalkers heavy armor"
desc = "A car seat leather duster, a timing belt bandolier, and armour plating made from various parts of a car, it surely would weigh the wearer down. Commonly worn by members of the Rustwalkers tribe."
@@ -1153,7 +966,7 @@ obj/item/clothing/suit/armor/f13/exile/cust0m
pocket_storage_component_path = /datum/component/storage/concrete/pockets/bulletbelt
armor = list("melee" = 25, "bullet" = 20, "laser" = 20, "energy" = 10, "bomb" = 50, "bio" = 40, "rad" = 10, "fire" = 60, "acid" = 10)
slowdown = 0.01
-
+
/obj/item/clothing/suit/f13/tribal/deadhorses
name = "Dead Horses armour"
@@ -1180,3 +993,35 @@ obj/item/clothing/suit/armor/f13/exile/cust0m
item_state = "sorrows_armour"
armor = list("melee" = 20, "bullet" = 45, "laser" = 20, "energy" = 10, "bomb" = 50, "bio" = 40, "rad" = 10, "fire" = 60, "acid" = 10)
slowdown = 0.08
+
+/obj/item/clothing/suit/f13/tribal/light/bone
+ name = "Bone armor"
+ desc = "A tribal armor plate, crafted from animal bone."
+ icon_state = "bone_dancer_armor_light"
+ item_state = "bone_dancer_armor_light"
+ blood_overlay_type = "armor"
+ armor = list("melee" = 30, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 50, "bio" = 40, "rad" = 10, "fire" = 60, "acid" = 10)
+ pocket_storage_component_path = /datum/component/storage/concrete/pockets
+ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS
+
+/obj/item/clothing/suit/f13/tribal/bone
+ name = "Reinforced Bone armor"
+ desc = "A tribal armor plate, reinforced with leather and a few metal parts."
+ icon_state = "bone_dancer_armor"
+ item_state = "bone_dancer_armor"
+ blood_overlay_type = "armor"
+ armor = list("melee" = 40, "bullet" = 35, "laser" = 30, "energy" = 10, "bomb" = 50, "bio" = 40, "rad" = 10, "fire" = 60, "acid" = 10)
+ pocket_storage_component_path = /datum/component/storage/concrete/pockets/small
+ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS
+ slowdown = 0.025
+
+/obj/item/clothing/suit/f13/tribal/heavy/bone
+ name = "Heavy Bone armor"
+ desc = "A tribal full armor plate, crafted from animal bone, metal and leather. Usually worn by the Bone Dancers"
+ icon_state = "bone_dancer_armor_heavy"
+ item_state = "bone_dancer_armor_heavy"
+ blood_overlay_type = "armor"
+ armor = list("melee" = 45, "bullet" = 45, "laser" = 35, "energy" = 20, "bomb" = 50, "bio" = 40, "rad" = 10, "fire" = 60, "acid" = 10, "wound" = 45)
+ pocket_storage_component_path = /datum/component/storage/concrete/pockets/small
+ body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS
+ slowdown = 0.05
diff --git a/code/modules/clothing/suits/f13factionarmor.dm b/code/modules/clothing/suits/f13factionarmor.dm
index a7ba943058..67549d1c57 100644
--- a/code/modules/clothing/suits/f13factionarmor.dm
+++ b/code/modules/clothing/suits/f13factionarmor.dm
@@ -6,15 +6,15 @@
name = "base raider armor"
desc = "for testing"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
- armor = list("melee" = 35, "bullet" = 35, "laser" = 30, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25, "wound" = 35)
+ armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25, "wound" = 35)
strip_delay = 40
slowdown = 0.05
/obj/item/clothing/suit/armor/f13/raider/supafly
name = "supa-fly raider armor"
desc = "Fabulous mutant powers were revealed to me the day I held aloft my bumper sword and said...
BY THE POWER OF NUKA-COLA, I AM RAIDER MAN!"
- armor = list("melee" = 30, "bullet" = 30, "laser" = 25, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25)
- slowdown = 0.02
+ armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25, "wound" = 40)
+ slowdown = 0.01
icon_state = "supafly"
item_state = "supafly"
@@ -48,7 +48,7 @@
icon_state = "blastmaster"
item_state = "blastmaster"
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
- armor = list("melee" = 40, "bullet" = 20, "laser" = 40, "bio" = 0, "bomb" = 50, "rad" = 0, "fire" = 25, "acid" = 25)
+ armor = list("melee" = 40, "bullet" = 25, "laser" = 40, "bio" = 0, "bomb" = 50, "rad" = 0, "fire" = 25, "acid" = 25, "wound" = 40)
flash_protect = 2
/obj/item/clothing/suit/armor/f13/raider/blastmaster/Initialize()
@@ -71,7 +71,7 @@
desc = "A leather top with a bandolier over it and a straps that cover the arms."
icon_state = "badlands"
item_state = "badlands"
- armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25)
+ armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25, "wound" = 40)
pocket_storage_component_path = /datum/component/storage/concrete/pockets/bulletbelt
/obj/item/clothing/suit/armor/f13/raider/badlands/Initialize()
@@ -83,7 +83,7 @@
desc = "A particularly unhuggable armor, even by raider standards. Extremely spiky."
icon_state = "painspike"
item_state = "painspike"
- armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25)
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25, "wound" = 40)
/obj/item/clothing/suit/armor/f13/raider/painspike/Initialize()
. = ..()
@@ -102,7 +102,7 @@
/obj/item/clothing/suit/armor/f13/raider/combatduster
name = "combat duster"
desc = "An old military-grade pre-war combat armor under a weathered duster. It appears to be fitted with metal plates to replace the crumbling ceramic."
- armor = list("melee" = 25, "bullet" = 50, "laser" = 25, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25)
+ armor = list("melee" = 25, "bullet" = 50, "laser" = 25, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25, "wound" = 40)
icon_state = "combatduster"
item_state = "combatduster"
slowdown = 0.07
@@ -121,7 +121,7 @@
name = "base faction exile armor"
desc = "this is for testing."
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS
- armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 20, "bomb" = 40, "bio" = 40, "rad" = 20, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 20, "bomb" = 40, "bio" = 40, "rad" = 20, "fire" = 60, "acid" = 20, "wound" = 40)
strip_delay = 30
icon = 'icons/fallout/clothing/armored_medium.dmi'
mob_overlay_icon = 'icons/fallout/onmob/clothes/armor_medium.dmi'
@@ -139,7 +139,7 @@
/obj/item/clothing/suit/armor/f13/exile/legexile
name = "modified Legion armor"
desc = "A modified detoriated armor kit consisting of Legion gear and scrap metal."
- armor = list("melee" = 40, "bullet" = 30, "laser" = 35, "energy" = 20, "bomb" = 40, "bio" = 40, "rad" = 20, "fire" = 60, "acid" = 20)
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 35, "energy" = 20, "bomb" = 40, "bio" = 40, "rad" = 20, "fire" = 60, "acid" = 20, "wound" = 40)
icon_state = "legexile"
item_state = "legexile"
@@ -164,7 +164,7 @@
desc = "An old military-grade pre-war combat armor. It appears to be fitted with metal plates to replace the crumbling ceramic."
icon_state = "raider_combat"
item_state = "raider_combat"
- armor = list("melee" = 40, "bullet" = 40 , "laser" = 35,"energy" = 25, "bomb" = 50, "bio" = 50, "rad" = 10, "fire" = 60, "acid" = 10)
+ armor = list("melee" = 40, "bullet" = 40 , "laser" = 40,"energy" = 25, "bomb" = 50, "bio" = 50, "rad" = 10, "fire" = 60, "acid" = 10, "wound" = 40)
slowdown = 0.1
/obj/item/clothing/suit/armor/f13/raider/raidermetal
@@ -172,7 +172,7 @@
desc = "A suit of welded, fused metal plates. Looks bulky, with great protection."
icon_state = "raider_metal"
item_state = "raider_metal"
- armor = list("melee" = 35, "bullet" = 35, "laser" = 45, "energy" = 25, "bomb" = 45, "bio" = 30, "rad" = 15, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 35, "laser" = 45, "energy" = 25, "bomb" = 45, "bio" = 30, "rad" = 15, "fire" = 60, "acid" = 0, "wound" = 40)
resistance_flags = FIRE_PROOF
slowdown = 0.25
@@ -192,7 +192,7 @@
armor = list("melee" = 30, "bullet" = 30, "laser" = 10, "energy" = 10, "bomb" = 15, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0, "wound" = 40)
slowdown = 0.05
pocket_storage_component_path = /datum/component/storage/concrete/pockets/tiny/legion
-
+
/datum/component/storage/concrete/pockets/tiny/legion
max_items = 3
@@ -205,19 +205,16 @@
desc = "Legion Recruits carry very basic protection, repurposed old sports gear with bits of leather and other tribal style armor that the wearer has managed to scrounge up."
icon_state = "legion_recruit"
item_state = "legion_recruit"
- armor = list("melee" = 30, "bullet" = 25, "laser" = 20, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0)
+ armor = list("melee" = 30, "bullet" = 25, "laser" = 20, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0, "wound" = 40)
slowdown = 0.04
+
/obj/item/clothing/suit/armor/f13/legion/prime
name = "legion prime armor"
desc = "Legion Primes have survived some skirmishes, and when promoted often recieve a set of armor, padded leather modeled on ancient baseball catcher uniforms and various plates of metal or boiled leather."
icon_state = "legion_prime"
item_state = "legion_prime"
- armor = list("melee" = 30, "bullet" = 33, "laser" = 20, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0)
-
-/obj/item/clothing/suit/armor/f13/legion/vet/orator
- icon_state = "legion_orator"
- item_state = "legion_orator"
+ armor = list("melee" = 30, "bullet" = 33, "laser" = 20, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0, "wound" = 40)
/obj/item/clothing/suit/armor/f13/legion/prime/slavemaster
name = "slavemaster armor"
@@ -232,9 +229,19 @@
mob_overlay_icon = 'icons/fallout/onmob/clothes/armor_medium.dmi'
icon_state = "legion_veteran"
item_state = "legion_veteran"
- armor = list("melee" = 35, "bullet" = 37, "laser" = 25, "energy" = 15, "bomb" = 30, "bio" = 5, "rad" = 5, "fire" = 35, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 37, "laser" = 25, "energy" = 15, "bomb" = 30, "bio" = 5, "rad" = 5, "fire" = 35, "acid" = 0, "wound" = 40)
slowdown = 0.05
+
+//We should probably move the sprite for this to a better place.
+/obj/item/clothing/suit/armor/f13/legion/vet/orator
+ name = "legion orator armor"
+ desc = "Legion orators are rather lightly armored. Despite being high-ranking officers, they are there to be the legion's mouthpiece, and are armored as such."
+//Copying armor over, it's actually pretty convluted to move the sprites and It's way too much work for this bounty hunter - Kitsunemitsu
+ armor = list("melee" = 30, "bullet" = 25, "laser" = 20, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0)
+ icon_state = "legion_orator"
+ item_state = "legion_orator"
+
/obj/item/clothing/suit/armor/f13/legion/heavy
name = "legion veteran decan armor"
desc = "A Legion veterans armor reinforced with a patched bulletproof vest, the wearer has the markings of a Decanus."
@@ -252,7 +259,7 @@
mob_overlay_icon = 'icons/fallout/onmob/clothes/armor_light.dmi'
icon_state = "legion_explorer"
item_state = "legion_explorer"
- armor = list("melee" = 35, "bullet" = 35, "laser" = 15, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 35, "laser" = 15, "energy" = 10, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0, "wound" = 40)
slowdown = 0.03
/obj/item/clothing/suit/armor/f13/legion/vet/vexil
@@ -261,7 +268,7 @@
desc = " Worn by Vexillarius, this armor has been reinforced with circular metal plates on the chest and a back mounted pole for the flag of the Bull, making the wearer easy to see at a distance."
icon_state = "legion_vex"
item_state = "legion_vex"
- armor = list("melee" = 50, "bullet" = 40, "laser" = 25, "energy" = 20, "bomb" = 25, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0)
+ armor = list("melee" = 50, "bullet" = 40, "laser" = 25, "energy" = 20, "bomb" = 25, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0, "wound" = 40)
slowdown = 0.12
/obj/item/clothing/suit/armor/f13/legion/venator
@@ -269,7 +276,7 @@
desc = "Explorer armor reinforced with metal plates and chainmail."
icon_state = "legion-venator"
item_state = "legion-venator"
- armor = list("melee" = 35, "bullet" = 35, "laser" = 15, "energy" = 20, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 35, "laser" = 15, "energy" = 20, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0, "wound" = 55)
/obj/item/clothing/suit/armor/f13/legion/centurion
name = "legion centurion armor"
@@ -288,7 +295,7 @@
desc = "A Centurion able to defeat a Brotherhood Paladin gets the honorific title 'Paladin-Slayer', and adds bits of the looted armor to his own."
icon_state = "legion_palacent"
item_state = "legion_palacent"
- armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 20, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0)
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 20, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 25, "acid" = 0, "wound" = 55)
slowdown = 0.25
@@ -299,7 +306,7 @@
desc = "Centurions who have led many patrols and ambushes against NCR Rangers have a distinct look from the many looted pieces of Ranger armor, and are often experienced in skirmishing."
icon_state = "legion_rangercent"
item_state = "legion_rangercent"
- armor = list("melee" = 55, "bullet" = 50, "laser" = 25, "energy" = 35, "bomb" = 39, "bio" = 60, "rad" = 20, "fire" = 80, "acid" = 0)
+ armor = list("melee" = 55, "bullet" = 50, "laser" = 25, "energy" = 35, "bomb" = 39, "bio" = 60, "rad" = 20, "fire" = 80, "acid" = 0, "wound" = 55)
slowdown = 0.08
/obj/item/clothing/suit/armor/f13/legion/legate
@@ -310,7 +317,7 @@
icon_state = "legion_legate"
item_state = "legion_legate"
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS
- armor = list("melee" = 60, "bullet" = 60, "laser" = 40, "energy" = 35, "bomb" = 45, "bio" = 60, "rad" = 20, "fire" = 80, "acid" = 0)
+ armor = list("melee" = 60, "bullet" = 60, "laser" = 40, "energy" = 35, "bomb" = 45, "bio" = 60, "rad" = 20, "fire" = 80, "acid" = 0, "wound" = 60)
/obj/item/clothing/suit/armor/f13/combat/legion
name = "Legion combat armor"
@@ -336,16 +343,17 @@
icon_state = "legion_slaveleather"
item_state = "legion_slaveleather"
allowed = list(/obj/item/hatchet, /obj/item/scythe, /obj/item/cultivator, /obj/item/shovel)
+ armor = list("melee" = 20, "bullet" = 5, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 20, "fire" = 20, "acid" = 0, "wound" = 20)
/*
/obj/item/clothing/suit/armor/f13/legion/vet/orator
name = "legion orator armor"
desc = "he armor appears to be based off of a suit of Legion veteran armor, with the addition of bracers, a chainmail skirt, and large pauldrons. A tabard emblazoned with the bull is loosely draped over the torso."
icon_state = "legheavy"
-
+
/obj/item/clothing/suit/armor/f13/legion/palacent/custom_excess
name = "Champion of Kanab's Armor"
- desc = "(VI) The armor of the Champion and Conqueror of the city in Utah named Kanab. The armor is made up of pieces of Power Armor and pre-war Riot Gear, the shin guards are spraypainted a dark crimson and the Power Armour pauldron has a red trim. The symbol of a Pheonix is carefully engraved and painted upon the chest piece... I wonder what it means.."
+ desc = " The armor of the Champion and Conqueror of the city in Utah named Kanab. The armor is made up of pieces of Power Armor and pre-war Riot Gear, the shin guards are spraypainted a dark crimson and the Power Armour pauldron has a red trim. The symbol of a Pheonix is carefully engraved and painted upon the chest piece... I wonder what it means.."
icon_state = "palacent_excess"
item_state = "palacent_excess"
*/
@@ -358,8 +366,16 @@
item_state = "vest_utility"
icon = 'icons/fallout/clothing/suits_utility.dmi'
mob_overlay_icon = 'icons/fallout/onmob/clothes/suit_utility.dmi'
- armor = list("melee" = 20, "bullet" = 20, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 10, "rad" = 20, "fire" = 30, "acid" = 0)
- pocket_storage_component_path = /datum/component/storage/concrete/pockets
+ armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 10, "bomb" = 15, "bio" = 10, "rad" = 20, "fire" = 30, "acid" = 0, "wound" = 30)
+ pocket_storage_component_path = /datum/component/storage/concrete/pockets/utility
+ slowdown = 0.02
+
+/datum/component/storage/concrete/pockets/utility
+ max_items = 4
+
+/obj/item/clothing/suit/armor/f13/utilityvest/Initialize()
+ . = ..()
+ AddComponent(/datum/component/armor_plate)
/obj/item/clothing/suit/armor/f13/ncrarmor
name = "NCR patrol vest"
@@ -370,10 +386,10 @@
armor = list("melee" = 30, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
slowdown = 0.1
pocket_storage_component_path = /datum/component/storage/concrete/pockets/bulletbelt/ncr
-
+
/datum/component/storage/concrete/pockets/bulletbelt/ncr
max_items = 2
-
+
/obj/item/clothing/suit/armor/f13/ncrarmor/Initialize()
. = ..()
AddComponent(/datum/component/armor_plate)
@@ -389,14 +405,14 @@
desc = "A standard issue NCR Infantry vest reinforced with a groinpad."
icon_state = "ncr_reinforced_vest"
item_state = "ncr_reinforced_vest"
- armor = list("melee" = 32, "bullet" = 42, "laser" = 22, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 32, "bullet" = 42, "laser" = 22, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
slowdown = 0.12
/obj/item/clothing/suit/armor/f13/ncrarmor/mantle/reinforced
name = "NCR reinforced mantle vest"
desc = "A standard issue NCR Infantry vest reinforced with a groinpad and a mantle."
icon_state = "ncr_reinforced_mantle"
- armor = list("melee" = 32, "bullet" = 42, "laser" = 22, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 32, "bullet" = 42, "laser" = 22, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
slowdown = 0.12
/obj/item/clothing/suit/armor/f13/ncrarmor/labcoat
@@ -404,7 +420,7 @@
desc = "An armored labcoat typically issued to NCR Medical Officers. It's a standard white labcoat with the Medical Officer's name stitched into the breast and a two headed bear sewn into the shoulder."
icon_state = "ncr_labcoat"
item_state = "ncr_labcoat"
- armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
allowed = list(/obj/item/gun, /obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/sensor_device, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
/obj/item/clothing/suit/armor/f13/ncrarmor/captain
@@ -412,15 +428,15 @@
desc = "A heavily reinforced set of NCR mantle armour, with large ceramic plating fitted to cover the torso and back, with additional plating on the shoulders and arms. Intended for use by high ranking officers."
icon_state = "ncr_captain_armour"
item_state = "ncr_captain_armour"
- armor = list("melee" = 40, "bullet" = 42, "laser" = 35, "energy" = 20, "bomb" = 50, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 40, "bullet" = 42, "laser" = 35, "energy" = 20, "bomb" = 50, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 55)
pocket_storage_component_path = /datum/component/storage/concrete/pockets/treasurer
-
+
/obj/item/clothing/suit/armor/f13/ncrarmor/lieutenant
name = "NCR officer vest"
desc = "A reinforced set of NCR mantle armour, with added padding on the groin, neck and shoulders. Intended for use by the officer class."
icon_state = "ncr_lt_armour"
item_state = "ncr_lt_armour"
- armor = list("melee" = 38, "bullet" = 40, "laser" = 33, "energy" = 20, "bomb" = 50, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 38, "bullet" = 40, "laser" = 33, "energy" = 20, "bomb" = 50, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 50)
pocket_storage_component_path = /datum/component/storage/concrete/pockets/treasurer
/obj/item/clothing/suit/armor/f13/ncrarmor/scout
@@ -440,7 +456,7 @@
icon_state = "scout_armor_lt"
item_state = "scout_armor_lt"
desc = "A specialized variant of combat armor issued to officers of the 3rd Scout Battalion."
- armor = list("tier" = 7, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 30, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 38, "bullet" = 40, "laser" = 33,"energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 30, "fire" = 60, "acid" = 0)
/obj/item/clothing/suit/armor/f13/combat/ncr
name = "NCR combat armor"
@@ -465,14 +481,14 @@
desc = "A brown dress uniform jacket intended for enlisted NCRA personnel."
icon_state = "ncr_dressjack"
item_state = "ncr_dressjack"
- armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 30)
/obj/item/clothing/suit/armor/f13/ncrarmor/ncr_codressjack
name = "NCR dress jacket"
desc = "A brown dress uniform jacket for commissioned NCRA personnel."
icon_state = "ncr_codressjack"
item_state = "ncr_codressjack"
- armor = list("tier" = 2, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
/obj/item/clothing/suit/armor/f13/ncrarmor/lieutenant/ncr_officer_coat
name = "NCR officer vest"
@@ -486,10 +502,10 @@
desc = "A thicker than average duster worn by NCR recon rangers out in the field. It's not heavily armored by any means, but is easy to move around in and provides excellent protection from the harsh desert environment."
icon_state = "duster_recon"
item_state = "duster_recon"
- armor = list("melee" = 35, "bullet" = 45, "laser" = 25, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 45, "laser" = 25, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
slowdown = 0.05
-/obj/item/clothing/suit/armor/f13/rangerrecon/Initialize()
+/obj/item/clothing/suit/toggle/armor/f13/rangerrecon/Initialize()
. = ..()
AddComponent(/datum/component/armor_plate)
@@ -498,17 +514,17 @@
desc = "a handmade tactical rig. The actual rig is made of a black, fiberous cloth, being attached to a dusty desert-colored belt. A flask and two ammo pouches hang from the belt."
icon_state = "r_gear_rig"
item_state = "r_gear_rig"
- armor = list("melee" = 35, "bullet" = 40, "laser" = 35, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 35, "energy" = 20, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 40)
slowdown = 0.05
pocket_storage_component_path = /datum/component/storage/concrete/pockets/bulletbelt/ncr
-
+
/obj/item/clothing/suit/armor/f13/trailranger
name = "ranger vest"
desc = "A quaint little jacket and scarf worn by NCR trail rangers."
icon_state = "cowboyrang"
item_state = "cowboyrang"
- armor = list("melee" = 25, "bullet" = 25, "laser" = 10, "energy" = 10, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0)
+ armor = list("melee" = 25, "bullet" = 25, "laser" = 10, "energy" = 10, "bomb" = 25, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 30)
slowdown = 0.01
/obj/item/clothing/suit/armor/f13/trailranger/Initialize()
@@ -532,7 +548,7 @@
desc = "A set of standard issue ranger patrol armor that provides defense similar to a suit of pre-war combat armor. It's got NCR markings, making it clear who it was made by."
icon_state = "ncr_patrol"
item_state = "ncr_patrol"
- armor = list("melee" = 30, "bullet" = 45, "laser" = 25, "energy" = 45, "bomb" = 55, "bio" = 60, "rad" = 15, "fire" = 60, "acid" = 30)
+ armor = list("melee" = 30, "bullet" = 45, "laser" = 25, "energy" = 45, "bomb" = 55, "bio" = 60, "rad" = 15, "fire" = 60, "acid" = 30, "wound" = 40)
/obj/item/clothing/suit/armor/f13/combat/ncr_patrol/Initialize()
. = ..()
@@ -555,7 +571,7 @@
desc = "A refurbished set of NCRA 3rd Scouts armor, now with heavier plating together with arm and leg guards. A two-headed bear has been painted on its chest."
icon_state = "refurb_scout"
item_state = "refurb_scout"
- armor = list("tier" = 5, "energy" = 45, "bomb" = 55, "bio" = 60, "rad" = 15, "fire" = 60, "acid" = 30)
+ armor = list("melee" = 50, "bullet" = 60, "laser" = 40, "energy" = 45, "bomb" = 55, "bio" = 60, "rad" = 15, "fire" = 60, "acid" = 30)
/obj/item/clothing/suit/armor/f13/rangercombat
name = "veteran ranger combat armor"
@@ -564,8 +580,8 @@
item_state = "ranger"
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS
slowdown = 0.08
- armor = list("melee" = 50, "bullet" = 60, "laser" = 40, "energy" = 40, "bomb" = 55, "bio" = 60, "rad" = 60, "fire" = 90, "acid" = 20)
-
+ armor = list("melee" = 50, "bullet" = 60, "laser" = 40, "energy" = 40, "bomb" = 55, "bio" = 60, "rad" = 60, "fire" = 90, "acid" = 20, "wound" = 55)
+
/obj/item/clothing/suit/armor/f13/ncrcfjacket
name = "NCRCF jacket"
@@ -581,7 +597,7 @@
icon_state = "headscribe"
item_state = "headscribe"
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS
- armor = list("melee" = 10, "bullet" = 35, "laser" = 35, "energy" = 40, "bomb" = 36, "bio" = 50, "rad" = 69, "fire" = 10, "acid" = 70)
+ armor = list("melee" = 10, "bullet" = 35, "laser" = 35, "energy" = 40, "bomb" = 36, "bio" = 50, "rad" = 69, "fire" = 10, "acid" = 70, "wound" = 30)
/obj/item/clothing/suit/f13/scribe
name = "Brotherhood Scribe's robe"
@@ -589,7 +605,7 @@
icon_state = "scribe"
item_state = "scribe"
body_parts_covered = CHEST|ARMS|LEGS
- armor = list("melee" = 10, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 16, "bio" = 100, "rad" = 0, "fire" = 0, "acid" = 0)
+ armor = list("melee" = 10, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 16, "bio" = 100, "rad" = 0, "fire" = 0, "acid" = 0, "wound" = 30)
/obj/item/clothing/suit/f13/seniorscribe
name = "Brotherhood Senior Scribe's robe"
@@ -597,7 +613,7 @@
icon_state = "seniorscribe"
item_state = "seniorscribe"
body_parts_covered = CHEST|ARMS|LEGS
- armor = list("melee" = 10, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 16, "bio" = 100, "rad" = 0, "fire" = 0, "acid" = 0)
+ armor = list("melee" = 10, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 16, "bio" = 100, "rad" = 0, "fire" = 0, "acid" = 0, "wound" = 30)
/obj/item/clothing/suit/f13/elder
name = "Brotherhood Elder's robe"
@@ -605,7 +621,7 @@
icon_state = "elder"
item_state = "elder"
body_parts_covered = CHEST|ARMS|LEGS
- armor = list("melee" = 20, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 16, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ armor = list("melee" = 20, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 16, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0, "wound" = 30)
allowed = list(/obj/item/gun)
/obj/item/clothing/suit/armor/f13/combat/brotherhood
@@ -616,14 +632,14 @@
/obj/item/clothing/suit/armor/f13/combat/brotherhood/senior
name = "brotherhood senior knight armor"
- desc = "A combat armor set made by the Brotherhood of Steel, standard issue for all Senior Knight. It bears a silver stripe."
+ desc = "A combat armor set made by the Brotherhood of Steel, standard issue for all Senior Knights. It bears a silver stripe."
icon_state = "brotherhood_armor_senior"
item_state = "brotherhood_armor_senior"
-
-
+
+
/obj/item/clothing/suit/armor/f13/combat/brotherhood/captain
- name = "brotherhood knight-captain armor"
- desc = "A combat armor set made by the Brotherhood of Steel, standard issue for all Knight-Captains. It bears golden embroidery."
+ name = "brotherhood head knight armor"
+ desc = "A combat armor set made by the Brotherhood of Steel, standard issue for all Head Knights. It bears golden embroidery."
icon_state = "brotherhood_armor_captain"
item_state = "brotherhood_armor_captain"
@@ -658,12 +674,12 @@
body_parts_covered = CHEST|GROIN|LEGS|ARMS
armor = list("melee" = 25, "bullet" = 25, "laser" = 20, "energy" = 20, "bomb" = 20, "bio" = 5, "rad" = 0, "fire" = 15, "acid" = 5, "wound" = 40)
slowdown = 0.025 // zoom zoom
-
+
/obj/item/clothing/suit/armor/f13/town/mayor
name = "mayor trenchcoat"
desc = "A symbol of the mayor's authority (or lack thereof). It has discrete armor plating in the lining, to foil assassination attempts."
- armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 25, "bomb" = 25, "bio" = 15, "rad" = 10, "fire" = 15, "acid" = 5)
+ armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 25, "bomb" = 25, "bio" = 15, "rad" = 10, "fire" = 15, "acid" = 5, "wound" = 55)
slowdown = 0.05
/obj/item/clothing/suit/armor/f13/town/sheriff
@@ -672,7 +688,7 @@
icon_state = "towntrench_heavy"
armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 35, "bomb" = 30, "bio" = 40, "rad" = 40, "fire" = 50, "acid" = 10, "wound" = 55)
slowdown = 0.1 //reinforced combat armor, but less slowdown
-
+
/obj/item/clothing/suit/armor/f13/town/sheriff/Initialize()
. = ..()
AddComponent(/datum/component/armor_plate)
@@ -702,14 +718,25 @@
/obj/item/clothing/suit/armor/f13/town/deputy/Initialize()
. = ..()
AddComponent(/datum/component/armor_plate)
-
+
+/obj/item/clothing/suit/armor/vest/oasis
+ name = "OPD vest"
+ desc = "A slim armored vest with a rigid exterior that provides decent protection against most types of damage. This one has pockets sewn into the front and OPD stitched on the back."
+ pocket_storage_component_path = /datum/component/storage/concrete/pockets
+ armor = list("melee" = 38, "bullet" = 38, "laser" = 38, "energy" = 30, "bomb" = 40, "bio" = 40, "rad" = 40, "fire" = 50, "acid" = 10, "wound" = 50)
+ slowdown = 0.06
+
+/obj/item/clothing/suit/armor/vest/oasis/Initialize()
+ . = ..()
+ AddComponent(/datum/component/armor_plate)
+
/obj/item/clothing/suit/armor/f13/metalarmor/steelbib/oasis
name = "heavy steel breastplate"
desc = "a steel breastplate, inspired by a pre-war design. Looks like oasis citiznes added an additional layer of metal on the front face."
icon_state = "steel_bib"
item_state = "steel_bib"
- armor = list( "melee" = 30, "bullet" = 50, "laser" = 30, "energy" = 15, "bomb" = 20, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 42)
- slowdown = 0.1
+ armor = list( "melee" = 25, "bullet" = 50, "laser" = 40, "energy" = 15, "bomb" = 20, "bio" = 30, "rad" = 20, "fire" = 60, "acid" = 0, "wound" = 42)
+ slowdown = 0.11
strip_delay = 5
//Great Khan
@@ -734,29 +761,31 @@
item_state = "lightcloak"
body_parts_covered = CHEST|GROIN|ARMS|LEGS
slowdown = 0.05
- allowed = list(/obj/item/gun, /obj/item/kitchen, /obj/item/twohanded, /obj/item/melee/onehanded, /obj/item/twohanded/spear, /obj/item/melee/smith, /obj/item/melee/smith/twohand)
pocket_storage_component_path = /datum/component/storage/concrete/pockets/small
-
-/obj/item/clothing/suit/armor/f13/tribal_combat_armor
+
+/obj/item/clothing/suit/armor/f13/combat/tribal
name = "tribal combat armor"
desc = "An old military grade pre war combat armor, now decorated with sinew and the bones of the hunted for its new wearer."
icon_state = "tribecombatarmor"
item_state = "tribecombatarmor"
body_parts_covered = CHEST|GROIN|ARMS|LEGS
- armor = list("melee" = 40, "bullet" = 40, "laser" = 35, "energy" = 25, "bomb" = 30, "bio" = 40, "rad" = 40, "fire" = 50, "acid" = 10, "wound" = 45)
- allowed = list(/obj/item/gun, /obj/item/kitchen, /obj/item/twohanded, /obj/item/claymore, /obj/item/melee/onehanded, /obj/item/twohanded/spear, /obj/item/melee/smith, /obj/item/melee/smith/twohand)
- slowdown = 0.07
-
+
+/obj/item/clothing/suit/armor/f13/combat/mk2/tribal
+ name = "tribal reinforced combat armor"
+ desc = "An old military grade pre-war reinforced combat armor, now decorated with sinew and the bones of the hunted for its new wearer."
+ icon_state = "tribecombatarmor"
+ item_state = "tribecombatarmor"
+ body_parts_covered = CHEST|GROIN|ARMS|LEGS
+
/obj/item/clothing/suit/armor/f13/tribe_armor
name = "light tribal armor"
- desc = "Light armor made of leather stips and a large, flat piece of turquoise.Armor commonplace among the Wayfinders."
+ desc = "Light armor made of leather stips and a large, flat piece of turquoise. Armor commonplace among the Wayfinders."
icon_state = "tribal_armor"
item_state = "tribal_armor"
body_parts_covered = CHEST|GROIN|ARMS
- armor = list("melee" = 40, "bullet" = 25, "laser" = 20, "energy" = 25, "bomb" = 25, "bio" = 70, "rad" = 65, "fire" = 80, "acid" = 100, "wound" = 47)
- allowed = list(/obj/item/gun, /obj/item/kitchen, /obj/item/twohanded, /obj/item/claymore, /obj/item/melee/onehanded, /obj/item/twohanded/spear, /obj/item/melee/smith, /obj/item/melee/smith/twohand)
+ armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 25, "bomb" = 25, "bio" = 70, "rad" = 65, "fire" = 80, "acid" = 100, "wound" = 50)
slowdown = 0.04
-
+
/obj/item/clothing/suit/armor/f13/tribe_heavy_armor
name = "heavy tribal armor"
desc = "Heavy armor make of sturdy leather and pieces of bone. Worn by seasoned veterans within the Wayfinder tribe."
@@ -764,11 +793,8 @@
mob_overlay_icon = 'icons/fallout/onmob/clothes/armor_heavy.dmi'
icon_state = "tribal_heavy"
item_state = "tribal_heavy"
- armor = list("melee" = 50, "bullet" = 35, "laser" = 30, "energy" = 30, "bomb" = 55, "bio" = 60, "rad" = 15, "fire" = 60, "acid" = 30, "wound" = 50)
- slowdown = 0.15
- flags_inv = HIDEJUMPSUIT
- allowed = list(/obj/item/gun, /obj/item/kitchen, /obj/item/twohanded, /obj/item/claymore, /obj/item/melee/onehanded, /obj/item/twohanded/spear, /obj/item/melee/smith, /obj/item/melee/smith/twohand
-)
+ armor = list("melee" = 40, "bullet" = 40, "laser" = 35, "energy" = 30, "bomb" = 55, "bio" = 60, "rad" = 15, "fire" = 60, "acid" = 30, "wound" = 50)
+ slowdown = 0.10
/obj/item/clothing/suit/armor/f13/lightcloak
name = "light tribal cloak"
@@ -776,29 +802,15 @@
icon_state = "lightcloak"
item_state = "lightcloak"
body_parts_covered = CHEST|GROIN|ARMS|LEGS
- armor = list("melee" = 25, "bullet" = 25, "laser" = 20, "energy" = 25, "bomb" = 25, "bio" = 70, "rad" = 65, "fire" = 80, "acid" = 100)
- allowed = list(/obj/item/gun, /obj/item/kitchen, /obj/item/twohanded, /obj/item/claymore, /obj/item/melee/onehanded, /obj/item/twohanded/spear, /obj/item/melee/smith, /obj/item/melee/smith/twohand)
+ armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 25, "bomb" = 25, "bio" = 70, "rad" = 65, "fire" = 80, "acid" = 100, "wound" = 50)
slowdown = 0.025
-/obj/item/clothing/suit/armor/f13/tribal_combat_armor
- name = "tribal combat armor"
- desc = "An old military grade pre war combat armor, now decorated with sinew and the bones of the hunted for its new wearer."
- icon_state = "tribecombatarmor"
- item_state = "tribecombatarmor"
- body_parts_covered = CHEST|GROIN|ARMS|LEGS
- allowed = list(/obj/item/gun, /obj/item/kitchen, /obj/item/twohanded, /obj/item/claymore, /obj/item/melee/onehanded, /obj/item/twohanded/spear, /obj/item/melee/smith, /obj/item/melee/smith/twohand)
- armor = list("melee" = 35, "bullet" = 35, "laser" = 30, "energy" = 25, "bomb" = 25, "bio" = 70, "rad" = 65, "fire" = 80, "acid" = 100)
- slowdown = 0.09
-
-
-/obj/item/clothing/suit/armor/f13/wayfarer/tribal_pa
- name = "tribal full plate armor"
- desc = "A set of power armor, now reborn in the paints of the Wayfarers, it serves its new owners as an idol to Kwer, as well as being a piece of heavy covering, with removed parts to allow for quick nimble speed, its hardly what it used to be long ago."
+/obj/item/clothing/suit/armor/f13/power_armor/t45b/tribal
+ name = "tribal salvaged t45-b"
+ desc = "A set of salvaged power armor, with certain bits of plating stripped out to retain more freedom of movement. No cooling module, though."
icon_state = "tribal_power_armor"
item_state = "tribal_power_armor"
- armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 30, "bomb" = 40, "bio" = 60, "rad" = 20, "fire" = 80, "acid" = 0)
- allowed = list(/obj/item/gun, /obj/item/kitchen, /obj/item/twohanded, /obj/item/melee/onehanded, /obj/item/twohanded/spear, /obj/item/melee/smith, /obj/item/melee/smith/twohand
- )
+ armor = list("melee" = 65, "bullet" = 65, "laser" = 65, "energy" = 20, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 80, "acid" = 0, "wound" = 65)
slowdown = 0.3
//Followers
@@ -806,10 +818,10 @@
/obj/item/clothing/suit/armor/f13/riot/vault
name = "VTCC riot armour"
- desc = "(VII) A suit of riot armour adapted from the design of the pre-war U.S.M.C. armour, painted blue and white."
+ desc = " A suit of riot armour adapted from the design of the pre-war U.S.M.C. armour, painted blue and white."
icon_state = "vtcc_riot_gear"
item_state = "vtcc_riot_gear"
- armor = list("tier" = 7, "energy" = 35, "bomb" = 35, "bio" = 40, "rad" = 10, "fire" = 60, "acid" = 10)
+ armor = list("melee" = 50, "bullet" = 60, "laser" = 40, "energy" = 35, "bomb" = 35, "bio" = 40, "rad" = 10, "fire" = 60, "acid" = 10)
//Old World Law Enforcement
//Police
@@ -821,7 +833,7 @@
mob_overlay_icon = 'icons/fallout/onmob/clothes/suit_cosmetic.dmi'
icon_state = "police_officer"
item_state = "police_officer"
- armor = list("melee" = 15, "bullet" = 15, "laser" = 15, "energy" = 15, "bomb" = 20, "bio" = 5, "rad" = 0, "fire" = 15, "acid" = 5)
+ armor = list("melee" = 15, "bullet" = 15, "laser" = 15, "energy" = 15, "bomb" = 20, "bio" = 5, "rad" = 0, "fire" = 15, "acid" = 5, "wound" = 30)
/obj/item/clothing/suit/f13/police/lieutenant
name = "police lieutenant's jacket"
@@ -830,7 +842,7 @@
mob_overlay_icon = 'icons/fallout/onmob/clothes/suit_cosmetic.dmi'
icon_state = "police_lieutenant"
item_state = "police_lieutenant"
- armor = list("melee" = 15, "bullet" = 15, "laser" = 15, "energy" = 15, "bomb" = 20, "bio" = 5, "rad" = 0, "fire" = 15, "acid" = 5)
+ armor = list("melee" = 15, "bullet" = 15, "laser" = 15, "energy" = 15, "bomb" = 20, "bio" = 5, "rad" = 0, "fire" = 15, "acid" = 5, "wound" = 30)
/obj/item/clothing/suit/f13/police/chief
name = "police chief's jacket"
@@ -839,7 +851,7 @@
mob_overlay_icon = 'icons/fallout/onmob/clothes/suit_cosmetic.dmi'
icon_state = "police_chief"
item_state = "police_chief"
- armor = list("melee" = 15, "bullet" = 15, "laser" = 15, "energy" = 15, "bomb" = 20, "bio" = 5, "rad" = 0, "fire" = 15, "acid" = 5)
+ armor = list("melee" = 15, "bullet" = 15, "laser" = 15, "energy" = 15, "bomb" = 20, "bio" = 5, "rad" = 0, "fire" = 15, "acid" = 5, "wound" = 30)
//THE GRAVEYARD
@@ -848,22 +860,22 @@
/obj/item/clothing/suit/armor/f13/town/embroidered
name = "embroidered trenchcoat"
- desc = "(V) A custom armored trench coat with extra-length and a raised collar. There's a flower embroidered onto the back, although the color is a little faded."
+ desc = " A custom armored trench coat with extra-length and a raised collar. There's a flower embroidered onto the back, although the color is a little faded."
icon_state = "towntrench_special"
item_state = "towntrench_special"
- armor = list("tier" = 5, "energy" = 40, "bomb" = 25, "bio" = 40, "rad" = 35, "fire" = 80, "acid" = 0)
+ armor = list("energy" = 40, "bomb" = 25, "bio" = 40, "rad" = 35, "fire" = 80, "acid" = 0)
/obj/item/clothing/suit/armor/f13/rangercombat/eliteriot
name = "elite riot gear"
- desc = "(VIII) A heavily reinforced set of military grade armor, commonly seen in the Divide now repurposed and reissued to Chief Rangers."
+ desc = " A heavily reinforced set of military grade armor, commonly seen in the Divide now repurposed and reissued to Chief Rangers."
icon_state = "elite_riot"
item_state = "elite_riot"
- armor = list("tier" = 8, "energy" = 60, "bomb" = 70, "bio" = 60, "rad" = 60, "fire" = 90, "acid" = 50)
+ armor = list("energy" = 60, "bomb" = 70, "bio" = 60, "rad" = 60, "fire" = 90, "acid" = 50)
icon = 'icons/obj/clothing/suits.dmi'
/obj/item/clothing/suit/armor/f13/rangercombat/desert
name = "desert ranger combat armor"
- desc = "(VIII) This is the original armor the NCR Ranger Combat armor was based off of. An awe inspiring suit of armor used by the legendary Desert Rangers."
+ desc = " This is the original armor the NCR Ranger Combat armor was based off of. An awe inspiring suit of armor used by the legendary Desert Rangers."
icon_state = "desert_ranger"
item_state = "desert_ranger"
@@ -871,14 +883,14 @@
/obj/item/clothing/suit/armor/f13/combat/enclave
name = "enclave combat armor"
- desc = "(VI) An old set of pre-war combat armor, painted black."
+ desc = " An old set of pre-war combat armor, painted black."
icon_state = "enclave_new"
item_state = "enclave_new"
- armor = list("tier" = 6, "energy" = 75, "bomb" = 70, "bio" = 80, "rad" = 80, "fire" = 80, "acid" = 50)
+ armor = list("energy" = 75, "bomb" = 70, "bio" = 80, "rad" = 80, "fire" = 80, "acid" = 50)
/obj/item/clothing/suit/armor/f13/environmentalsuit
name = "enclave envirosuit"
- desc = "(II) An advanced white and airtight environmental suit. It seems to be equipped with a fire-resistant seal and a refitted internals system. This one looks to have been developed by the Enclave sometime after the Great War. You'd usually exclusively see this on scientists of the Enclave."
+ desc = " An advanced white and airtight environmental suit. It seems to be equipped with a fire-resistant seal and a refitted internals system. This one looks to have been developed by the Enclave sometime after the Great War. You'd usually exclusively see this on scientists of the Enclave."
icon_state = "envirosuit"
item_state = "envirosuit"
w_class = WEIGHT_CLASS_BULKY
@@ -886,7 +898,7 @@
permeability_coefficient = 0.5
clothing_flags = THICKMATERIAL
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
- armor = list("tier" = 2,"energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 50, "acid" = 100)
+ armor = list("energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 50, "acid" = 100)
strip_delay = 60
equip_delay_other = 60
flags_inv = HIDEJUMPSUIT
@@ -894,7 +906,7 @@
/obj/item/clothing/suit/armor/f13/combat/remnant
name = "remnant combat armor"
- desc = "(VI) A dark armor, used commonly in espionage or shadow ops."
+ desc = " A dark armor, used commonly in espionage or shadow ops."
icon_state = "remnant"
item_state = "remnant"
- armor = list("tier" = 6, "energy" = 75, "bomb" = 70, "bio" = 80, "rad" = 80, "fire" = 80, "acid" = 50)
+ armor = list("energy" = 75, "bomb" = 70, "bio" = 80, "rad" = 80, "fire" = 80, "acid" = 50)
diff --git a/code/modules/clothing/suits/f13suits.dm b/code/modules/clothing/suits/f13suits.dm
index 0f6d005c88..1b051dd267 100644
--- a/code/modules/clothing/suits/f13suits.dm
+++ b/code/modules/clothing/suits/f13suits.dm
@@ -116,7 +116,7 @@
desc = " A rather grisly selection of cured hides and skin, sewn together to form a ragged mantle."
icon_state = "mantle_liz"
item_state = "det_suit"
-
+
/obj/item/clothing/suit/f13/mfp //Mad Max 1 1979 babe!
name = "MFP jacket"
desc = "A Main Force Patrol leather jacket.
Offbeat."
@@ -137,7 +137,7 @@
item_state = "suit-command"
armor = list("melee" = 25, "bullet" = 15, "laser" = 15, "energy" = 5, "bomb" = 16, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
pocket_storage_component_path = /datum/component/storage/concrete/pockets/small
-
+
/obj/item/clothing/suit/f13/veteran
name = "merc veteran coat"
desc = " A blue leather coat adorned with war medals.
This type of outfit is common for professional mercenaries and bounty hunters."
@@ -178,7 +178,7 @@
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS
armor = list("melee" = 30, "bullet" = 30, "laser" = 15, "energy" = 5, "bomb" = 16, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
pocket_storage_component_path = /datum/component/storage/concrete/pockets
-
+
/obj/item/clothing/suit/f13/hubologist
name = "hubologist robe"
@@ -286,12 +286,12 @@
//Armored jacket
/obj/item/clothing/suit/toggle/labcoat/f13/khan_jacket/armored
name = "Great Khan armored jacket"
- desc = "A black leather jacket with metal plates and a big Great Khan logo on the back. Some prefer to wear a leather vest (alt-click)."
+ desc = "A black leather jacket with ballistic plates and a big Great Khan logo on the back. Some prefer to wear a leather vest (alt-click)."
icon_state = "khan_jacket_armored"
item_state = "khan_jacket_armored"
body_parts_covered = CHEST|GROIN|ARMS|LEGS|HANDS|FEET
armor = list("melee" = 37, "bullet" = 37, "laser" = 40, "energy" = 25, "bomb" = 30, "bio" = 10, "rad" = 10, "fire" = 10, "acid" = 0)
- slowdown = 0.12
+ slowdown = 0.08
pocket_storage_component_path = /datum/component/storage/concrete/pockets/small
/obj/item/clothing/suit/toggle/labcoat/f13/khan_jacket/armored/Initialize()
@@ -379,7 +379,7 @@
name = "armored medical parka"
icon_state = "armormedical"
desc = "A staunch, practical parka made out of a wind-breaking jacket, reinforced with metal plates."
-
+
hoodtype = /obj/item/clothing/head/hooded/parkahood/medical
/obj/item/clothing/head/hooded/parkahood/medical
@@ -465,10 +465,10 @@
/obj/item/clothing/suit/hooded/cloak/shunter
name = "Quickclaw armour"
- icon_state = "birdarmor"
+ icon_state = "birdarmor_t"
desc = "A suit of armour fashioned out of the remains of a legendary deathclaw, this one has been crafted to remove a good portion of its protection to improve on speed and trekking."
- slowdown = 0.025
- armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 25, "bomb" = 16, "bio" = 10, "rad" = 10, "fire" = 0, "acid" = 0)
+ slowdown = 0
+ armor = list("melee" = 40, "bullet" = 40, "laser" = 35, "energy" = 20, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0, "wound" = 30)
hoodtype = /obj/item/clothing/head/hooded/cloakhood/shunter
heat_protection = CHEST|GROIN|LEGS|ARMS|HANDS
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
@@ -478,6 +478,6 @@
name = "Quickclaw hood"
icon_state = "birdhood"
desc = "A hood madde of deathclaw hides, light while also being comfortable to wear, designed for speed."
- armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 25, "bomb" = 16, "bio" = 10, "rad" = 10, "fire" = 0, "acid" = 0)
+ armor = list("melee" = 40, "bullet" = 40, "laser" = 35, "energy" = 20, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 0, "wound" = 30)
heat_protection = HEAD
resistance_flags = FIRE_PROOF | ACID_PROOF
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index cd89a09cac..4a34a8ecc3 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -69,11 +69,11 @@
//Detective
/obj/item/clothing/suit/det_suit
name = "trenchcoat"
- desc = "(III) An 18th-century multi-purpose trenchcoat. Someone who wears this means serious business."
+ desc = "An 18th-century multi-purpose trenchcoat. Someone who wears this means serious business."
icon_state = "detective"
item_state = "det_suit"
blood_overlay_type = "coat"
- armor = list("tier" = 3, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45)
+ armor = list("melee" = 25, "bullet" = 15, "laser" = 33,"energy" = 15, "bomb" = 10, "bio" = 30, "rad" = 0, "fire" = 0, "acid" = 45)
cold_protection = CHEST|GROIN|LEGS|ARMS
heat_protection = CHEST|GROIN|LEGS|ARMS
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
@@ -84,7 +84,7 @@
/obj/item/clothing/suit/det_suit/grey
name = "noir trenchcoat"
- desc = "(III) A hard-boiled private investigator's grey trenchcoat."
+ desc = "A hard-boiled private investigator's grey trenchcoat."
icon_state = "greydet"
item_state = "greydet"
@@ -117,7 +117,9 @@
item_state = "hazard"
blood_overlay_type = "armor"
resistance_flags = NONE
+ armor = list("melee" = 15, "bullet" = 10, "laser" = 35,"energy" = 10, "bomb" = 10, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 45)
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
+ pocket_storage_component_path = /datum/component/storage/concrete/pockets/small
//Lawyer
/obj/item/clothing/suit/toggle/lawyer
@@ -158,11 +160,11 @@
//Curator
/obj/item/clothing/suit/curator
name = "treasure hunter's coat"
- desc = "(III) Both fashionable and lightly armoured, this jacket is favoured by treasure hunters the galaxy over."
+ desc = "Both fashionable and lightly armoured, this jacket is favoured by treasure hunters the wasteland over."
icon_state = "curator"
item_state = "curator"
blood_overlay_type = "coat"
- armor = list("tier" = 3, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45)
+ armor = list("melee" = 10, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 10, "bio" = 10, "rad" = 10, "fire" = 40, "acid" = 40)
cold_protection = CHEST|ARMS
heat_protection = CHEST|ARMS
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
diff --git a/code/modules/clothing/suits/medium_armor.dm b/code/modules/clothing/suits/medium_armor.dm
index dbc7d47b57..68cd422cff 100644
--- a/code/modules/clothing/suits/medium_armor.dm
+++ b/code/modules/clothing/suits/medium_armor.dm
@@ -5,13 +5,6 @@
// WASTELAND //
///////////////
-/obj/item/clothing/suit/armored/medium/bone
- name = "bone armor"
- desc = "Primitive armor made from animal bones and sinew. Rattles when walking. Hard for critters to bite through and fire to burn."
- icon_state = "bone"
- item_state = "bone"
- armor = list("melee" = 45, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 15, "bio" = 0, "rad" = 5, "fire" = 25, "acid" = 0)
-
// Kevlar
/obj/item/clothing/suit/armored/medium/vestarmor
name = "armored vest"
@@ -115,7 +108,7 @@
icon_state = "supafly"
item_state = "supafly"
armor = list("melee" = 25, "bullet" = 40, "laser" = 20, "energy" = 10, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25)
-
+
/obj/item/clothing/suit/armored/medium/rebel
name = "rebel raider armor"
desc = "Rebel, rebel. Your face is a mess."
@@ -378,7 +371,7 @@
desc = "A trenchcoat which does a poor job at hiding the full-body combat armor beneath it."
icon_state = "towntrench_heavy"
armor = list("melee" = 45, "bullet" = 45, "laser" = 35, "energy" = 40, "bomb" = 30, "bio" = 40, "rad" = 40, "fire" = 50, "acid" = 10)
-
+
/obj/item/clothing/suit/armored/medium/lawcoat/commissioner
name = "commissioner's jacket"
desc = "A navy-blue jacket with blue shoulder designations, '/OPD/' stitched into one of the chest pockets, and hidden ceramic trauma plates. It has a small compartment for a holdout pistol."
diff --git a/code/modules/clothing/under/f13.dm b/code/modules/clothing/under/f13.dm
index 916771c019..352acf100a 100644
--- a/code/modules/clothing/under/f13.dm
+++ b/code/modules/clothing/under/f13.dm
@@ -29,7 +29,7 @@
desc = "Khaki officers uniform with gold trimming over a black turtleneck."
icon_state = "uniform_enclave_officer"
item_state = "uniform_enclave_officer"
-
+
/obj/item/clothing/under/f13/enclave/intel
name = "intel officer uniform"
desc = "Dark pants and turtleneck with hidden kevlar layers, since intel officers often wear no proper armor."
@@ -957,11 +957,12 @@
/obj/item/clothing/under/f13/police/swat
name = "SWAT officer uniform"
- desc = "A US Army combat uniform, modified for SWAT team personnel."
+ desc = "The uniform of the Oasis Police Department, modified for SWAT team personnel."
icon = 'icons/fallout/clothing/uniforms.dmi'
mob_overlay_icon = 'icons/fallout/onmob/clothes/uniform.dmi'
- icon_state = "army_uniform"
- item_state = "army_uniform"
+ icon_state = "navy"
+ item_state = "bl_suit"
+ item_color = "navy"
/obj/item/clothing/under/f13/machinist
name = "workman outfit"
@@ -1311,7 +1312,7 @@
item_state = "lb_suit"
item_color = "general"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 20, "fire" = 40, "acid" = 40)
-
+
/obj/item/clothing/under/f13/general/oasis
name = "dictator's overcoat"
desc = "A grim looking overcoat - preferable standard for the ruler of oasis.
It's decorated with golden stars, each one adorned with a tree."
@@ -1770,3 +1771,13 @@
item_state = "sorrows_under_f"
item_color = "sorrows_under_f"
+/obj/item/clothing/under/f13/bone
+ name = "Bone Dancer outfit"
+ desc = "A full body skin tight overalls, seemingly of brown color. Commonly worn by members of the Bone Dancers tribe."
+ icon_state = "bone_dancer"
+ item_state = "bone_dancer"
+ item_color = "bone_dancer"
+ var/sleeves_adjusted = 0
+ alt_covers_chest = TRUE
+ fitted = FEMALE_UNIFORM_TOP
+ can_adjust = TRUE
diff --git a/code/modules/crafting/items.dm b/code/modules/crafting/items.dm
index 1a78be2064..69299ffa09 100644
--- a/code/modules/crafting/items.dm
+++ b/code/modules/crafting/items.dm
@@ -175,9 +175,9 @@
/obj/item/stack/crafting/electronicparts/three,
/obj/item/stack/sheet/mineral/titanium,
/obj/item/stack/sheet/metal/ten,
+ /obj/item/stack/sheet/cloth/ten,
+ /obj/item/stack/sheet/leather/ten,
/obj/item/stack/sheet/glass/ten,
- /obj/item/stack/sheet/cloth/five,
- /obj/item/stack/sheet/leather/five,
/obj/item/stack/sheet/prewar/five,
/obj/item/stock_parts/cell/ammo/ec,
/obj/item/stack/crafting/goodparts/five
@@ -191,9 +191,8 @@
/obj/item/crafting/coffee_pot,
/obj/item/crafting/wonderglue,
/obj/item/crafting/abraxo,
- /obj/item/crafting/igniter,
- /obj/item/crafting/timer,
- /obj/item/crafting/sensor,
+ /obj/item/stack/sheet/cloth/five,
+ /obj/item/stack/sheet/leather/five,
/obj/item/crafting/lunchbox,
/obj/item/reagent_containers/glass/bottle/blackpowder)
@@ -230,4 +229,3 @@
/obj/item/attachments/burst_improvement,
/obj/item/attachments/recoil_decrease,
/obj/item/attachments/auto_sear)
-
diff --git a/code/modules/fallout/misc/gang_items.dm b/code/modules/fallout/misc/gang_items.dm
index 56479fcb3f..05c578c0bb 100644
--- a/code/modules/fallout/misc/gang_items.dm
+++ b/code/modules/fallout/misc/gang_items.dm
@@ -103,7 +103,7 @@
/datum/gang_item/clothing/khan_battlecoat
name = "Great Khan battlecoat"
id = "khan_battlecoat"
- cost = 1000
+ cost = 300
item_path = /obj/item/clothing/suit/toggle/labcoat/f13/khan_jacket/coat
// ---------------------------
@@ -111,13 +111,13 @@
/datum/gang_item/clothing/prostitute_dress
name = "Prostitute dress"
id = "prostitute_dress"
- cost = 25
+ cost = 10
item_path = /obj/item/clothing/under/f13/female/flapper
/datum/gang_item/clothing/hat
name = "Pimp Hat"
id = "hat"
- cost = 30
+ cost = 20
item_path = /obj/item/clothing/head/collectable/petehat/gang
/obj/item/clothing/head/collectable/petehat/gang
@@ -127,43 +127,43 @@
/datum/gang_item/clothing/glasses/sunglasses
name = "Sunglasses"
id = "sunglasses"
- cost = 40
+ cost = 20
item_path = /obj/item/clothing/glasses/sunglasses
/datum/gang_item/clothing/raider_uniform
name = "Raider uniform"
id = "raider_uniform"
- cost = 40
+ cost = 20
item_path = /obj/item/clothing/under/f13/raider_leather
/datum/gang_item/clothing/jester_uniform
name = "Jester suit"
id = "jester_uniform"
- cost = 40
+ cost = 20
item_path = /obj/item/clothing/under/jester
/datum/gang_item/clothing/biker_uniform
name = "Biker uniform"
id = "biker_uniform"
- cost = 40
+ cost = 20
item_path = /obj/item/clothing/under/f13/Retro_Biker_Vest
/datum/gang_item/clothing/scarecrow_uniform
name = "Scarecrow uniform"
id = "scarecrow_uniform"
- cost = 40
+ cost = 20
item_path = /obj/item/clothing/under/scarecrow
/datum/gang_item/clothing/soviet_uniform
name = "Soviet uniform"
id = "soviet_uniform"
- cost = 40
+ cost = 20
item_path = /obj/item/clothing/under/soviet
/datum/gang_item/clothing/chairmen_uniform
name = "Chairmen uniform"
id = "chairmen_uniform"
- cost = 40
+ cost = 20
item_path = /obj/item/clothing/under/f13/bennys/gang
/obj/item/clothing/under/f13/bennys/gang
@@ -203,7 +203,7 @@
/datum/gang_item/weapon/slugger
name = "Louiseville Slugger"
id = "slugger"
- cost = 50
+ cost = 40
item_path = /obj/item/twohanded/baseball/louisville
/datum/gang_item/weapon/sappers
@@ -317,7 +317,7 @@
/datum/gang_item/equipment/bundleanarchist
name = "Mad Bomber Bundle"
id = "bundleanarchist"
- cost = 650
+ cost = 550
item_path = /obj/item/storage/box/bundleanarchist
/obj/item/storage/box/bundleanarchist
@@ -336,7 +336,7 @@
/datum/gang_item/equipment/bundlegunner
name = "Old Soldier Bundle"
id = "bundlegunner"
- cost = 500
+ cost = 400
item_path = /obj/item/storage/box/bundlegunner
/obj/item/storage/box/bundlegunner
@@ -350,11 +350,12 @@
new /obj/item/storage/belt(src)
new /obj/item/clothing/under/f13/army(src)
new /obj/item/gun/ballistic/automatic/pistol/m1911(src)
+ new /obj/item/grenade/frag(src)
/datum/gang_item/equipment/bundleelguapo
name = "Bandito Bundle"
id = "bundleelguapo"
- cost = 500
+ cost = 300
item_path = /obj/item/storage/box/bundleelguapo
/obj/item/storage/box/bundleelguapo
diff --git a/code/modules/fallout/misc/gangs.dm b/code/modules/fallout/misc/gangs.dm
index e3bdebe9da..920bcba08b 100644
--- a/code/modules/fallout/misc/gangs.dm
+++ b/code/modules/fallout/misc/gangs.dm
@@ -46,6 +46,7 @@ GLOBAL_DATUM_INIT(denmob, /datum/gang/denmob, new)
/datum/gang_item/weapon/type17,
/datum/gang_item/weapon/uzi,
/datum/gang_item/weapon/type93,
+ /datum/gang_item/equipment/frag,
/datum/gang_item/clothing/prostitute_dress,
/datum/gang_item/clothing/hat,
@@ -86,6 +87,7 @@ GLOBAL_DATUM_INIT(denmob, /datum/gang/denmob, new)
/datum/gang_item/equipment/c4,
/datum/gang_item/equipment/emp,
+ /datum/gang_item/equipment/frag,
/datum/gang_item/weapon/shuriken,
/datum/gang_item/equipment/necklace,
diff --git a/code/modules/fallout/obj/crafting.dm b/code/modules/fallout/obj/crafting.dm
index c7d85ccc16..bf7879db32 100644
--- a/code/modules/fallout/obj/crafting.dm
+++ b/code/modules/fallout/obj/crafting.dm
@@ -152,21 +152,6 @@
icon_state = "reloader"
tool_behaviour = TOOL_MSRELOADER
-/obj/item/crafting/igniter
- name = "igniter"
- desc = "A small electronic device able to ignite combustable substances."
- icon_state = "igniter"
-
-/obj/item/crafting/timer
- name = "timer"
- desc = "Used to time things. Works well with contraptions which has to count down. Tick tock."
- icon_state = "timer"
-
-/obj/item/crafting/sensor
- name = "proximity sensor"
- desc = "Used for scanning and alerting when someone enters a certain proximity."
- icon_state = "sensor"
-
/obj/item/crafting/lunchbox
name = "lunch box"
desc = "This was a promotional item created by Vault-Tec before the Great War and used in the company's advertisements. With the right schematics, it can be used to make bottlecap mines."
diff --git a/code/modules/fallout/obj/explosives.dm b/code/modules/fallout/obj/explosives.dm
index 4c67201d13..0d4cce16b6 100644
--- a/code/modules/fallout/obj/explosives.dm
+++ b/code/modules/fallout/obj/explosives.dm
@@ -81,3 +81,208 @@
. += span_warning("It seems to be activating!")
if(ACTIVE)
. += span_warning("It seems activated!")
+
+
+
+
+/obj/item/grenade/plastic/c4/New()
+ wires = new /datum/wires/explosive/c4(src)
+ ..()
+
+/obj/item/grenade/plastic/c4/Destroy()
+ qdel(wires)
+ wires = null
+ target = null
+ return ..()
+
+/obj/item/mine
+ name = "dummy mine"
+ desc = "Better stay away from that thing."
+ w_class = WEIGHT_CLASS_NORMAL
+ density = FALSE
+ anchored = TRUE
+ icon = 'icons/obj/items_and_weapons.dmi'
+ icon_state = "uglymine"
+ var/armed = TRUE //we can be armed and unanchored if we want, but this isn't normally the case
+ var/random = FALSE //are our wires random?
+ /// We manually check to see if we've been triggered in case multiple atoms cross us in the time between the mine being triggered and it actually deleting, to avoid a race condition with multiple detonations
+ var/triggered = FALSE
+
+/obj/item/mine/ComponentInitialize()
+ . = ..()
+ AddElement(/datum/element/empprotection, EMP_PROTECT_WIRES)
+
+/obj/item/mine/Initialize()
+ . = ..()
+ if(random)
+ wires = new /datum/wires/explosive/mine/random(src)
+ else
+ wires = new /datum/wires/explosive/mine(src)
+
+
+/obj/item/mine/Destroy()
+ qdel(wires)
+ wires = null
+ return ..()
+
+/obj/item/mine/attack_self(mob/user)
+ if(armed)
+ to_chat(user, "
The mine is already armed! ") //how did we get here
+ if(user.dropItemToGround(src))
+ anchored = TRUE
+ addtimer(CALLBACK(src, .proc/arm), 5 SECONDS)
+ to_chat(user, "
You drop the mine and activate the 5-second arming process. ")
+ return
+
+/obj/item/mine/proc/arm()
+ visible_message("
[src] beeps! ")
+ if(armed)
+ triggermine()
+ return
+ armed = TRUE
+
+/obj/item/mine/attackby(obj/item/I, mob/user, params)
+ if(is_wire_tool(I))
+ wires.interact(user)
+ else ..()
+
+/obj/item/mine/proc/mineEffect(mob/victim)
+ to_chat(victim, "
*click* ")
+
+/obj/item/mine/Crossed(atom/movable/AM)
+ if(!armed)
+ return
+ if(triggered || !isturf(loc) || !isliving(AM) || isstructure(AM) || isnottriggermine(AM))
+ return
+ . = ..()
+
+ if(AM.movement_type & FLYING)
+ return
+
+ triggermine(AM)
+
+/obj/item/mine/proc/triggermine(mob/victim)
+ if(triggered)
+ return
+ visible_message("
[victim] sets off [icon2html(src, viewers(src))] [src]! ")
+ var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
+ s.set_up(3, 1, src)
+ s.start()
+ mineEffect(victim)
+ SEND_SIGNAL(src, COMSIG_ITEM_MINE_TRIGGERED)
+ triggered = 1
+ qdel(src)
+
+/obj/item/mine/take_damage(damage_amount, damage_type, damage_flag, sound_effect, attack_dir)
+ . = ..()
+ triggermine()
+
+/obj/item/mine/screwdriver_act(mob/living/user, obj/item/S)
+ if(!armed)
+ return
+ to_chat(user, "
You begin carefully disarming [src]. ")
+ if(S.use_tool(src, user, 200, volume=100)) //20 seconds base, if you don't want to play the game of chance
+ to_chat(user, "
You carefully destroy the detonator of the mine! ")
+ qdel(src)
+ else
+ triggermine(user)
+
+/obj/item/mine/explosive
+ name = "explosive mine"
+ var/range_devastation = 0
+ var/range_heavy = 1
+ var/range_light = 2
+ var/range_flash = 3
+
+/obj/item/mine/explosive/mineEffect(mob/victim)
+ explosion(loc, range_devastation, range_heavy, range_light, range_flash)
+
+/obj/item/mine/explosive/random
+ random = TRUE
+ anchored = FALSE
+ armed = FALSE
+
+/obj/item/mine/stun
+ name = "stun mine"
+ var/stun_time = 80
+
+/obj/item/mine/stun/mineEffect(mob/living/victim)
+ if(isliving(victim))
+ victim.DefaultCombatKnockdown(stun_time)
+
+/obj/item/mine/stun/random
+ random = TRUE
+ anchored = FALSE
+ armed = FALSE
+
+/obj/item/mine/shrapnel
+ name = "shrapnel mine"
+ var/shrapnel_type = /obj/item/projectile/bullet/shrapnel
+ var/shrapnel_magnitude = 3
+
+/obj/item/mine/shrapnel/mineEffect(mob/victim)
+ AddComponent(/datum/component/pellet_cloud, projectile_type=shrapnel_type, magnitude=shrapnel_magnitude)
+ explosion(loc, 0, 0, 2, 2)
+
+/obj/item/mine/shrapnel/random
+ random = TRUE
+ anchored = FALSE
+ armed = FALSE
+
+/obj/item/mine/shrapnel/sting
+ name = "stinger mine"
+ shrapnel_type = /obj/item/projectile/bullet/pellet/stingball
+
+/obj/item/mine/shrapnel/sting/random
+ random = TRUE
+ anchored = FALSE
+ armed = FALSE
+
+/obj/item/mine/kickmine
+ name = "kick mine"
+
+/obj/item/mine/kickmine/mineEffect(mob/victim)
+ if(isliving(victim) && victim.client)
+ to_chat(victim, "
You have been kicked FOR NO REISIN! ")
+ qdel(victim.client)
+
+
+/obj/item/mine/gas
+ name = "oxygen mine"
+ var/gas_amount = 360
+ var/gas_type = "o2"
+
+/obj/item/mine/gas/mineEffect(mob/victim)
+ atmos_spawn_air("[gas_type]=[gas_amount]")
+
+
+/obj/item/mine/gas/plasma
+ name = "plasma mine"
+ gas_type = "plasma"
+
+
+/obj/item/mine/gas/n2o
+ name = "\improper N2O mine"
+ gas_type = "n2o"
+
+/obj/item/mine/sound
+ name = "dummy mine"
+ var/soundtoplay
+
+/obj/item/mine/sound/mineEffect(mob/victim)
+ playsound(loc, soundtoplay, 100, 1)
+
+/obj/item/mine/sound/bwoink
+ soundtoplay = 'sound/effects/adminhelp.ogg'
+
+/obj/item/mine/emp
+ name = "pulse mine"
+ var/range = 3
+
+/obj/item/mine/emp/mineEffect(mob/victim)
+ empulse_using_range(src, range)
+
+/obj/item/mine/emp/random
+ random = TRUE
+ anchored = FALSE
+ armed = FALSE
diff --git a/code/modules/fallout/obj/food_and_drinks/wastefood.dm b/code/modules/fallout/obj/food_and_drinks/wastefood.dm
index 5fc91f84d9..9ad54e25a1 100644
--- a/code/modules/fallout/obj/food_and_drinks/wastefood.dm
+++ b/code/modules/fallout/obj/food_and_drinks/wastefood.dm
@@ -7,489 +7,6 @@
bonus_reagents = list( /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment/vitamin = 5)
tastes = list("Monkey" = 1)
foodtype = MEAT | VEGETABLES
-
-/////PLANTS Fallout 13///////
-
-/obj/item/seeds/buffalogourd
- name = "pack of buffalo gourd seeds"
- desc = "These seeds grow into buffalo vines.
they appear to be edible once cooked! "
- icon_state = "seed-gourd"
- species = "buffalo gourd"
- plantname = "Buffalo Vines"
- product = /obj/item/reagent_containers/food/snacks/grown/buffalogourd
- growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
- icon_grow = "gourd-grow"
- icon_dead = "gourd-dead"
- icon_harvest = "gourd-harvest"
- reagents_add = list(/datum/reagent/water = 0.2, /datum/reagent/toxin = 0.1)
- lifespan = 50
- endurance = 40
- maturation = 10
- production = 1
- yield = 3
- growthstages = 3
-
-/obj/item/seeds/buffalogourd/microwave_act(obj/machinery/microwave/MW) //The act allows it to be cooked over a bonfire grille too.
- ..()
- new /obj/item/reagent_containers/food/snacks/roastseeds/buffalogourd(drop_location())
- qdel(src)
-
-/obj/item/reagent_containers/food/snacks/roastseeds/buffalogourd //Inherits from pumpkin.dm's roast seeds, similarity commented out for clarity
- name = "roasted gourd seeds"
- desc = "Well prepared crispy buffalo gourd seeds, full of chewy protein."
- //icon_state = "roasted_seeds"
- list_reagents = list(/datum/reagent/consumable/cooking_oil = 1, /datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1.5)
- //bitesize = 2
- //w_class = WEIGHT_CLASS_TINY
- //tastes = list("crunchy" = 1)
- //foodtype = GRAIN
-
-/obj/item/reagent_containers/food/snacks/grown/buffalogourd
- seed = /obj/item/seeds/buffalogourd
- name = "buffalo gourd"
- desc = "A bitter tasting vine plant, with a watery fleshy texture."
- icon_state = "buffalo_gourd"
- filling_color = "#008000"
- bitesize_mod = 3
- foodtype = FRUIT | GROSS
- juice_results = list(/datum/reagent/lye= 0.5) // The oil made from the gourd plant itself is used in Native American soap.
- distill_reagent = list(/datum/chemical_reaction/pestkiller= 0.25) //Native Americans used the extract of gourd as small vermin pesticide.
-
-/obj/item/seeds/coyotetobacco
- name = "pack of coyote tobacco seeds"
- desc = "These seeds grow into coyote tobacco plants."
- icon_state = "seed-coyote"
- species = "coyote tobacco"
- plantname = "Coyote Tobacco Bush"
- product = /obj/item/reagent_containers/food/snacks/grown/coyotetobacco
- genes = list(/datum/plant_gene/trait/plant_type/weed_hardy)
- lifespan = 20
- maturation = 5
- production = 5
- yield = 10
- growthstages = 4
- growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
- icon_grow = "coyote-grow"
- icon_dead = "coyote-dead"
- icon_harvest = "coyote-harvest"
- reagents_add = list(/datum/reagent/drug/nicotine = 0.1, /datum/reagent/consumable/nutriment = 0.1)
-
-/obj/item/reagent_containers/food/snacks/grown/coyotetobacco
- seed = /obj/item/seeds/coyotetobacco
- name = "coyote tobacco leaves"
- desc = "This tobacco like plant is commonly used by tribals for a great variety of medicinal and ceremonial purposes."
- icon_state = "Coyote Tobacco"
- filling_color = "#008000"
- juice_results = list(/datum/reagent/consumable/tea/coyotetea = 0)
- distill_reagent = /datum/reagent/consumable/ethanol/deathroach
-
-
-/obj/item/seeds/feracactus
- name = "pack of barrel cactus seeds"
- desc = "These seeds grow into a barrel cactus."
- icon_state = "seed-feracactus"
- growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
- icon_grow = "feracactus-grow"
- icon_dead = "feracactus-dead"
- icon_harvest = "feracactus-harvest"
- species = "barrel cactus"
- plantname = "Barrel Cactus"
- product = /obj/item/reagent_containers/food/snacks/grown/feracactus
- lifespan = 60
- endurance = 20
- yield = 2
- growthstages = 2
- production = 5
- maturation = 5
- reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/medicine/calomel = 0.1,)
-
-/obj/item/reagent_containers/food/snacks/grown/feracactus
- seed = /obj/item/seeds/feracactus
- name = "barrel cactus fruit"
- desc = "Carefully harvested spineless barrel-cactus fruit, it feels dry to the touch but appears more than edible."
- icon_state = "feracactus"
- filling_color = "#FF6347"
- foodtype = FRUIT
- juice_results = list(/datum/reagent/consumable/tea/feratea = 0)
- distill_reagent = /datum/reagent/consumable/ethanol/yellowpulque
-
-/obj/item/seeds/poppy/broc
- name = "pack of broc seeds"
- desc = "These seeds grow into broc flowers."
- icon_state = "seed-broc"
- species = "broc"
- plantname = "Broc Flowers"
- product = /obj/item/reagent_containers/food/snacks/grown/broc
- lifespan = 25
- endurance = 10
- yield = 4
- growthstages = 3
- production = 4
- maturation = 4
- growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
- icon_harvest = "broc-harvest"
- icon_grow = "broc-grow"
- icon_dead = "broc-dead"
- //mutatelist = list(/obj/item/seeds/geraniumseed, /obj/item/seeds/lilyseed)
- reagents_add = list(/datum/reagent/medicine/dexalin = 0.2, /datum/reagent/medicine/salglu_solution = 0.05, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/medicine/bicaridine = 0.1,)
-
-/obj/item/reagent_containers/food/snacks/grown/broc
- seed = /obj/item/seeds/poppy/broc
- name = "broc flower"
- desc = "This vibrant, orange flower grows on tall stalks in the wasteland and exhibits moderate healing properties, even when unprocessed."
- icon_state = "broc"
- //slot_flags = SLOT_HEAD
- filling_color = "#FF6347"
- juice_results = list(/datum/reagent/consumable/tea/broctea = 0)
- distill_reagent = /datum/reagent/consumable/ethanol/brocbrew
-
-
-/obj/item/seeds/xander
- name = "pack of xander seeds"
- desc = "These seeds grow into xander roots."
- icon_state = "seed-xander"
- species = "xander"
- plantname = "Xander Roots"
- product = /obj/item/reagent_containers/food/snacks/grown/xander
- lifespan = 25
- endurance = 10
- yield = 3
- growthstages = 4
- production = 4
- maturation = 4
- growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
- icon_grow = "xander-grow"
- icon_harvest = "xander-harvest"
- icon_dead = "xander-dead"
- reagents_add = list(/datum/reagent/medicine/antitoxin = 0.2, /datum/reagent/medicine/salglu_solution = 0.05, /datum/reagent/consumable/nutriment = 0.1)
-
-/obj/item/reagent_containers/food/snacks/grown/xander
- seed = /obj/item/seeds/xander
- name = "xander root"
- desc = "Xander roots are large, hardy, turnip-like roots with mild healing properties."
- icon_state = "xander"
- filling_color = "#FF6347"
- juice_results = list(/datum/reagent/consumable/tea/xandertea = 0)
- distill_reagent = /datum/reagent/consumable/ethanol/salgam
-
-/*HRP*/
-
-/obj/item/seeds/horsenettle
- name = "pack of horsenettle seeds"
- desc = "These seeds grow into white horsenettles."
- icon_state = "seed-horsenettle"
- species = "horsenettle"
- plantname = "White Horsenettles"
- product = /obj/item/reagent_containers/food/snacks/grown/horsenettle
- lifespan = 30
- endurance = 40
- yield = 4
- growthstages = 4
- growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
- icon_grow = "horsenettle-grow"
- icon_dead = "horsenettle-dead"
- icon_harvest = "horsenettle-harvest"
- genes = list(/datum/plant_gene/trait/plant_type/weed_hardy)
- reagents_add = list( /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
-
-/obj/item/reagent_containers/food/snacks/grown/horsenettle
- seed = /obj/item/seeds/horsenettle
- name = "horsenettle berries"
- desc = "The tribes use these berries as a vegetable rennet."
- icon_state = "White Horsenettle"
- filling_color = "#FF00FF"
- bitesize_mod = 2
- foodtype = FRUIT
- juice_results = list(/datum/reagent/consumable/enzyme = 1)
- tastes = list("searing pain" = 1)
- distill_reagent = /datum/reagent/consumable/enzyme
-
-
-/obj/item/seeds/mesquite
- name = "pack of honey mesquite seeds"
- desc = "These seeds grows into a mesquite plant."
- icon_state = "mycelium-tower"
- species = "honey mesquite"
- plantname = "Honey Mesquite"
- product = /obj/item/reagent_containers/food/snacks/grown/mesquite
- lifespan = 80
- endurance = 50
- maturation = 6
- production = 5
- yield = 5
- potency = 50
- growthstages = 4
- growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
- icon_grow = "mesquite-grow"
- icon_dead = "mesquite-dead"
- icon_harvest = "mesquite-harvest"
- genes = list(/datum/plant_gene/trait/repeated_harvest)
- reagents_add = list(/datum/reagent/consumable/honey = 0.1, /datum/reagent/consumable/nutriment = 0.05)
-
-/obj/item/reagent_containers/food/snacks/grown/mesquite
- seed = /obj/item/seeds/mesquite
- name = "honey mesquite pods"
- desc = "The honey mesquite pod grows on a short tree with willow-like branches. Trees with pickable pods will appear bushier in foliage and have strings of pods on them, resembling a fern pattern. Pods can be eaten or used in recipes"
- gender = PLURAL
- icon_state = "Mesquite Pod"
- filling_color = "#F0E68C"
- bitesize_mod = 2
- foodtype = VEGETABLES
- juice_results = list(/datum/reagent/consumable/honey = 0.1)
- tastes = list("crunchy sweetness" = 1)
- distill_reagent = /datum/reagent/consumable/ethanol/wastemead
-
-
-/obj/item/seeds/pinyon
- name = "pack of pinyon pine seeds"
- desc = "The seeds of the pinyon pine, known as pine nuts or pi��ns, are an important food for settlers and tribes living in the mountains of the North American Southwest. All species of pine produce edible seeds, but in North America only the pinyon produces seeds large enough to be a major source of food."
- icon_state = "seed-pinyon"
- species = "pinyon pine"
- plantname = "Pinyon Pine"
- product = /obj/item/reagent_containers/food/snacks/grown/pinyon
- lifespan = 80
- endurance = 50
- maturation = 9
- production = 6
- yield = 5
- potency = 50
- growthstages = 4
- growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
- icon_grow = "pinyon-grow"
- icon_dead = "pinyon-dead"
- icon_harvest = "pinyon-harvest"
- genes = list(/datum/plant_gene/trait/repeated_harvest)
- reagents_add = list( /datum/reagent/consumable/nutriment = 0.05)
-
-/obj/item/reagent_containers/food/snacks/grown/pinyon
- seed = /obj/item/seeds/pinyon
- name = "pinyon nuts"
- desc = "The seeds of the pinyon pine, known as pine nuts or pi��ns, are an important food for settlers and tribes living in the mountains of the North American Southwest. All species of pine produce edible seeds, but in North America only the pinyon produces seeds large enough to be a major source of food."
- gender = PLURAL
- icon_state = "Pinyon Nuts"
- filling_color = "#F0E68C"
- bitesize_mod = 2
- foodtype = GRAIN
- grind_results = list(/datum/reagent/consumable/flour = 0)
- tastes = list("pine nuts" = 1)
-
-/obj/item/seeds/pricklypear
- name = "pack of prickly pear seeds"
- desc = "These seeds grow into a prickly pear cactus."
- icon_state = "seed-prickly"
- growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
- icon_grow = "prickly-grow"
- icon_dead = "prickly-dead"
- icon_harvest = "prickly-harvest"
- species = "prickly pear"
- plantname = "Prickly pear cactus"
- genes = list(/datum/plant_gene/trait/repeated_harvest)
- product = /obj/item/reagent_containers/food/snacks/grown/pricklypear
- reagents_add = list(/datum/reagent/consumable/nutriment = 0.2, /datum/reagent/water = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.05)
- lifespan = 60
- endurance = 20
- yield = 2
- growthstages = 4
- production = 4
- maturation = 5
-
-/obj/item/reagent_containers/food/snacks/grown/pricklypear
- seed = /obj/item/seeds/pricklypear
- name = "prickly pear fruit"
- desc = "Distinguished by having cylindrical, rather than flattened, stem segments with large barbed spines. The stem joints are very brittle on young stems, readily breaking off when the barbed spines stick to clothing or animal fur."
- icon_state = "Prickly Pear"
- filling_color = "#FF6347"
- foodtype = FRUIT
- bitesize_mod = 2
- juice_results = list(/datum/reagent/consumable/tea/pricklytea = 0)
- tastes = list("sweet cactus" = 1)
- distill_reagent = /datum/reagent/consumable/ethanol/pinkpulque
-
-/obj/item/grown/pricklypear/pickup(mob/living/user)
- ..()
- if(!iscarbon(user))
- return FALSE
- var/mob/living/carbon/C = user
- if(C.gloves)
- return FALSE
- var/hit_zone = (C.held_index_to_dir(C.active_hand_index) == "l" ? "l_":"r_") + "arm"
- var/obj/item/bodypart/affecting = C.get_bodypart(hit_zone)
- if(affecting)
- if(affecting.receive_damage(0, force))
- C.update_damage_overlays()
- to_chat(C, "
The thorns pierce your bare hand! ")
- return TRUE
-
-/obj/item/seeds/datura
- name = "pack of datura seeds"
- desc = "These seeds grow into datura plants."
- icon_state = "seed-datura"
- species = "Datura"
- plantname = "Datura"
- product = /obj/item/reagent_containers/food/snacks/grown/datura
- lifespan = 30
- maturation = 6
- production = 5
- yield = 4
- growthstages = 5
- growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
- icon_grow = "datura-grow"
- icon_dead = "datura-dead"
- icon_harvest = "datura-harvest"
- reagents_add = list(/datum/reagent/medicine/morphine = 0.2, /datum/reagent/drug/mushroomhallucinogen = 0.1, /datum/reagent/toxin = 0.05, /datum/reagent/consumable/nutriment = 0.1)
-
-/obj/item/reagent_containers/food/snacks/grown/datura
- seed = /obj/item/seeds/datura
- name = "Datura"
- desc = "The sacred datura root, useful as an anesthetic for surgery and in healing salves, as well as for rites of passage rituals and ceremonies"
- icon_state = "Datura"
- filling_color = "#FFA500"
- bitesize_mod = 2
- foodtype = VEGETABLES
- juice_results = list(/datum/reagent/consumable/ethanol/daturatea = 0)
- distill_reagent = /datum/reagent/consumable/ethanol/daturatea
-
-/obj/item/seeds/punga
- name = "pack of punga seeds"
- desc = "These small black pits grow into a punga bush"
- icon_state = "seed-punga"
- species = "punga"
- plantname = "Punga Bush"
- product = /obj/item/reagent_containers/food/snacks/grown/pungafruit
- lifespan = 100
- endurance = 30
- maturation = 10
- production = 5
- yield = 3
- potency = 30
- growthstages = 4
- rarity = 20
- growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
- icon_grow = "punga-grow"
- icon_dead = "punga-dead"
- icon_harvest = "punga-harvest"
- genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/repeated_harvest)
- reagents_add = list(/datum/reagent/medicine/charcoal = 0.1, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/medicine/radaway = 0.05)
-
-/obj/item/reagent_containers/food/snacks/grown/pungafruit
- seed = /obj/item/seeds/punga
- name = "pungafruit"
- desc = "Punga fruit plants flower at a single point at the terminus of their stems, gradually developing into large, fleshy fruits with a yellow/brown, thick skin. They are common throughout Point Lookout, due to the unique conditions offered by the swamps, and scrub radiation when ingested."
- icon_state = "Punga Fruit"
- filling_color = "#FF6347"
- juice_results = list(/datum/reagent/consumable/ethanol/pungajuice = 0)
-
-/obj/item/seeds/yucca
- name = "pack of banana yucca seeds"
- desc = "These seeds grow into a yucca plant."
- icon = 'icons/obj/hydroponics/seeds.dmi'
- icon_state = "seed-yucca"
- species = "banna yucca"
- plantname = "Banana Yucca plant"
- product = /obj/item/reagent_containers/food/snacks/grown/yucca
- lifespan = 50
- endurance = 30
- yield = 5
- growthstages = 4
- maturation = 5
- production = 4
- growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
- icon_grow = "yucca-grow"
- icon_dead = "yucca-dead"
- icon_harvest = "yucca-harvest"
- genes = list(/datum/plant_gene/trait/repeated_harvest)
- reagents_add = list( /datum/reagent/consumable/nutriment = 0.2, /datum/reagent/consumable/sugar = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.2)
-
-
-/obj/item/reagent_containers/food/snacks/grown/yucca
- seed = /obj/item/seeds/yucca
- name = "banana yucca fruit"
- desc = "The fleshy banana like fruit, rougly 8 cm long and 6 cm across. It tastes similar to a sweet potato."
- icon_state = "Bannana Yucca"
- icon = 'icons/obj/hydroponics/harvest.dmi'
- bitesize = 3
- juice_results = list(/datum/reagent/consumable/yuccajuice = 0)
- distill_reagent = /datum/reagent/consumable/yuccajuice
-
-/obj/item/seeds/tato
- name = "pack of tato seeds"
- desc = "a pack of tato seeds"
- icon_state = "seed-tato"
- species = "tato"
- plantname = "Tato Plants"
- product = /obj/item/reagent_containers/food/snacks/grown/tato
- lifespan = 30
- maturation = 7
- production = 3
- yield = 4
- growthstages = 4
- growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
- icon_grow = "tato-grow"
- icon_dead = "tato-dead"
- icon_harvest = "tato-harvest"
- genes = list(/datum/plant_gene/trait/battery, /datum/plant_gene/trait/repeated_harvest)
- reagents_add = list( /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
-
-/obj/item/reagent_containers/food/snacks/grown/tato
- seed = /obj/item/seeds/tato
- name = "tato"
- desc = "The outside looks like a tomato, but the inside is brown. Tastes as absolutely disgusting as it looks, but will keep you from starving."
- icon_state = "Tato"
- filling_color = "#E9967A"
- bitesize = 100
- foodtype = VEGETABLES
- juice_results = list(/datum/reagent/consumable/tato_juice = 0)
- distill_reagent = /datum/reagent/consumable/ethanol/tatovodka
-
-/obj/item/reagent_containers/food/snacks/grown/tato/wedges
- name = "tato wedges"
- desc = "Slices of neatly cut tato."
- icon_state = "potato_wedges"
- filling_color = "#E9967A"
- bitesize = 100
-
-/obj/item/reagent_containers/food/snacks/grown/tato/attackby(obj/item/W, mob/user, params)
- if(W.get_sharpness())
- to_chat(user, "
You cut the tato into wedges with [W]. ")
- var/obj/item/reagent_containers/food/snacks/grown/tato/wedges/Wedges = new /obj/item/reagent_containers/food/snacks/grown/tato/wedges
- remove_item_from_storage(user)
- qdel(src)
- user.put_in_hands(Wedges)
- else
- return ..()
-
-
-/obj/item/seeds/mutfruit
- name = "pack of mutfruit seeds"
- desc = "These seeds grow into a mutfruit sapling."
- icon_state = "seed-mutfruit"
- species = "mutfruit"
- plantname = "Mutfruit Sapling"
- growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
- icon_grow = "mutfruit-grow"
- icon_dead = "mutfruit-dead"
- product = /obj/item/reagent_containers/food/snacks/grown/mutfruit
- lifespan = 30
- endurance = 20
- yield = 3
- growthstages = 3
- production = 5
- maturation = 5
- reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/radium = 0.15)
-
-/obj/item/reagent_containers/food/snacks/grown/mutfruit
- seed = /obj/item/seeds/mutfruit
- name = "mutfruit"
- desc = "Mutfruit provides both hydration and sustenance, but the mutated plant also carries small amounts of radiation."
- icon_state = "mutfruit"
- filling_color = "#FF6347"
- distill_reagent = /datum/reagent/consumable/ethanol/purplecider
- juice_results = list(/datum/reagent/consumable/mutjuice = 0)
-
-
-/*HRP*/
-
-
//// LAVALAND MUSHROOMS ////
// Bracket (Shaving mushroom)
@@ -584,6 +101,7 @@
desc = "Cave fungus is an edible mushroom which has the ability to purge bodily toxins."
icon_state = "fungus"
filling_color = "#FF6347"
+ distill_reagent = /datum/reagent/consumable/cavefungusjuice
/obj/item/seeds/glow
name = "pack of glowing fungus seeds"
@@ -615,34 +133,3 @@
filling_color = "#FF6347"
/*MRP*/
-
-
-/obj/item/seeds/agave
- name = "pack of agave seeds"
- desc = "These seeds grow into an agave plant."
- icon = 'icons/obj/hydroponics/seeds.dmi'
- icon_state = "seed-agave"
- species = "agave"
- plantname = "Agave plant"
- product = /obj/item/reagent_containers/food/snacks/grown/agave
- lifespan = 60
- endurance = 10
- yield = 5
- growthstages = 3
- production = 7
- maturation = 7
- growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
- icon_grow = "agave-grow"
- icon_dead = "agave-dead"
- icon_harvest = "agave-harvest"
- reagents_add = list(/datum/reagent/medicine/kelotane = 0.1, /datum/reagent/toxin/lipolicide = 0.1 )
-
-
-/obj/item/reagent_containers/food/snacks/grown/agave
- seed = /obj/item/seeds/agave
- name = "agave leaf"
- desc = "A strange kind of fleshy grass often used as a primitive burn medication that rapidly depletes stored nutrients in the body."
- icon_state = "Agave Leaf"
- icon = 'icons/obj/flora/wastelandflora.dmi'
- juice_results = list(/datum/reagent/consumable/tea/agavetea = 0)
- distill_reagent = /datum/reagent/consumable/ethanol/tequila
diff --git a/code/modules/fallout/obj/smelling_salts.dm b/code/modules/fallout/obj/smelling_salts.dm
index 970c766195..6d208d963c 100644
--- a/code/modules/fallout/obj/smelling_salts.dm
+++ b/code/modules/fallout/obj/smelling_salts.dm
@@ -130,6 +130,6 @@
var/policy = late? policies[POLICYCONFIG_ON_DEFIB_LATE] : policies[POLICYCONFIG_ON_DEFIB_INTACT]
if(policy)
to_chat(revived_mob, policy)
- revived_mob.log_message("revived using strange reagent, [time_since_death / 10] seconds from time of death, considered [late? "late" : "memory-intact"] revival under configured policy limits.", LOG_GAME)
+ revived_mob.log_message("revived using smelling salts, [time_since_death / 10] seconds from time of death, considered [late? "late" : "memory-intact"] revival under configured policy limits.", LOG_GAME)
//add_logs(user, revived_mob, "revived (smelling salts)", src)
in_use = FALSE
diff --git a/code/modules/fallout/obj/spawners/lootdrops.dm b/code/modules/fallout/obj/spawners/lootdrops.dm
index 8e4b17c512..799990dfc6 100644
--- a/code/modules/fallout/obj/spawners/lootdrops.dm
+++ b/code/modules/fallout/obj/spawners/lootdrops.dm
@@ -21,10 +21,10 @@
/obj/item/crafting/wonderglue = 5,
/obj/item/crafting/turpentine = 5,
/obj/item/crafting/abraxo = 5,
- /obj/item/crafting/igniter = 5,
+ /obj/item/assembly/igniter = 5,
/obj/item/crafting/reloader = 5,
- /obj/item/crafting/timer = 5,
- /obj/item/crafting/sensor = 5)
+ /obj/item/assembly/timer = 5,
+ /obj/item/assembly/prox_sensor = 5)
*/
/obj/effect/spawner/lootdrop/wrange_low
/* color = "#CCCCCC"
diff --git a/code/modules/fallout/reagents/alcohol.dm b/code/modules/fallout/reagents/alcohol.dm
index 3fb927b640..453963066b 100644
--- a/code/modules/fallout/reagents/alcohol.dm
+++ b/code/modules/fallout/reagents/alcohol.dm
@@ -25,6 +25,21 @@
M.radiation = max(M.radiation-3,0)
return ..()
+/datum/reagent/consumable/ethanol/buffalo
+ name = "buffalo juice"
+ description = "The fermented liquid of the buffalo gourd. Very bitter."
+ color = "#706A58"
+ boozepwr = 100
+ taste_description = "bitter boozey sludge"
+ glass_icon_state = "glass_brown"
+ glass_name = "glass of fermented buffalo juice"
+ glass_desc = "The fermented liquid of the buffalo gourd. Very bitter."
+
+/datum/reagent/consumable/ethanol/buffalo/on_mob_life(mob/living/carbon/M)
+ if(M.disgust < 80)
+ M.adjust_disgust(10)
+ return ..()
+
/datum/reagent/consumable/ethanol/pungajuice
name = "punga juice"
description = "The fermented juice of the punga fruit, used to treat radiation sickness"
@@ -401,6 +416,7 @@
glass_name = "Nuka Quantum"
glass_desc = "An extremely blue and glowing combination of Nuka-Cola and (REDACTED)"
var/datum/brain_trauma/special/psychotic_brawling/bath_salts/rage
+
/datum/reagent/consumable/ethanol/nukaquantum/on_mob_life(mob/living/carbon/M)
M.drowsyness = 0
@@ -414,6 +430,9 @@
M.adjustStaminaLoss(-3, 0)
M.hallucination += 20
M.Jitter(2)
+ if(HAS_TRAIT(M, TRAIT_NUKA_LOVER))
+ M.adjustBruteLoss(-0.1)
+ M.adjustFireLoss(-0.1)
ADD_TRAIT(M, TRAIT_SLEEPIMMUNE, "[type]")
if(iscarbon(M))
var/mob/living/carbon/C = M
diff --git a/code/modules/fallout/reagents/drinks.dm b/code/modules/fallout/reagents/drinks.dm
index e6d0767b5f..bc4572d832 100644
--- a/code/modules/fallout/reagents/drinks.dm
+++ b/code/modules/fallout/reagents/drinks.dm
@@ -6,13 +6,21 @@
glass_icon_state = "nukacolaglass"
glass_name = "Nuka Cola"
glass_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland."
+ overdose_threshold = 100
/datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/M)
M.drowsyness = 0
M.AdjustSleeping(-40, FALSE)
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
+ if(HAS_TRAIT(M, TRAIT_NUKA_LOVER))
+ M.adjustBruteLoss(-0.05)
+ M.adjustFireLoss(-0.05)
..()
- . = TRUE
+
+/datum/reagent/consumable/nuka_cola/overdose_start(mob/living/M)
+ to_chat(M, "
Too much Nuka-Cola! This cannot be good for you! ")
+ M.AdjustSleeping(600, FALSE)
+ . = 1
/datum/reagent/consumable/sunset
name = "Sunset Sarsaparilla"
@@ -191,14 +199,22 @@
glass_icon_state = "nukaiceglass"
glass_name = "Iced Nuka"
glass_desc = "Nuka. Stay frosty."
-
+
/datum/reagent/consumable/nukaice/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C) //310.15 is the normal bodytemp.
M.drowsyness = 0
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL)
+ if(HAS_TRAIT(M, TRAIT_NUKA_LOVER))
+ M.adjustBruteLoss(-0.075)
+ M.adjustFireLoss(-0.075)
..()
. = TRUE
+/datum/reagent/consumable/nukaice/overdose_start(mob/living/M)
+ to_chat(M, "
Too much Nuka-Cola! This cannot be good for you! ")
+ M.AdjustSleeping(600, FALSE)
+ . = 1
+
/datum/reagent/consumable/nukawild
name = "Nuka Wild"
description = "A totally original concept of Nuka-Cola!"
diff --git a/code/modules/fallout/reagents/drugs.dm b/code/modules/fallout/reagents/drugs.dm
index 5a26aa1448..3e38703ef2 100644
--- a/code/modules/fallout/reagents/drugs.dm
+++ b/code/modules/fallout/reagents/drugs.dm
@@ -15,7 +15,7 @@
if(isliving(M))
to_chat(M, "
You come down from your high. The wild ride is unfortunately over... ")
M.confused += 2
-
+
/datum/reagent/drug/jet/on_mob_life(mob/living/carbon/M)
M.adjustStaminaLoss(-20, 0)
M.set_drugginess(20)
@@ -249,7 +249,7 @@
reagent_state = SOLID
overdose_threshold = 20
addiction_threshold = 11
- metabolization_rate = 1.25 * REAGENTS_METABOLISM
+ metabolization_rate = 0.5 * REAGENTS_METABOLISM
var/datum/brain_trauma/special/psychotic_brawling/bath_salts/rage
/datum/reagent/drug/buffout/on_mob_add(mob/living/carbon/human/M)
diff --git a/code/modules/fallout/reagents/medicines.dm b/code/modules/fallout/reagents/medicines.dm
index 1d8504047b..0cdd843536 100644
--- a/code/modules/fallout/reagents/medicines.dm
+++ b/code/modules/fallout/reagents/medicines.dm
@@ -21,6 +21,7 @@
..()
/datum/reagent/medicine/stimpak/on_mob_life(mob/living/carbon/M)
+ M.adjust_nutrition(-2)
if(M.health < 0) //Functions as epinephrine.
M.adjustToxLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0)
M.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0)
@@ -41,11 +42,13 @@
if(!M.reagents.has_reagent(/datum/reagent/medicine/healing_powder)) // We don't want these healing items to stack, so we only apply the healing if these chems aren't found.We only check for the less powerful chems, so the least powerful one always heals.
M.adjustBruteLoss(-4*REAGENTS_EFFECT_MULTIPLIER)
M.adjustFireLoss(-4*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
M.AdjustStun(-5*REAGENTS_EFFECT_MULTIPLIER, 0)
M.AdjustKnockdown(-5*REAGENTS_EFFECT_MULTIPLIER, 0)
M.adjustStaminaLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
. = TRUE
+ if(M.nutrition <= NUTRITION_LEVEL_STARVING - 50)
+ M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER, 0)
+ M.overeatduration = 0
..()
/datum/reagent/medicine/stimpak/overdose_process(mob/living/M)
@@ -64,7 +67,7 @@
description = "Rapidly heals damage when injected. A poor man's stimpak."
reagent_state = LIQUID
color = "#FFA500"
-
+
/datum/reagent/medicine/stimpakimitation/on_mob_life(mob/living/carbon/M)
if(M.getBruteLoss() == 0 && M.getFireLoss() == 0)
metabolization_rate = 1000 * REAGENTS_METABOLISM //instant metabolise if it won't help you, prevents prehealing before combat
@@ -85,6 +88,7 @@
addiction_threshold = 16
datum/reagent/medicine/super_stimpak/on_mob_life(mob/living/M)
+ M.adjust_nutrition(-3)
if(M.health < 0) //Functions as epinephrine.
M.adjustToxLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0)
M.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0)
@@ -105,11 +109,13 @@ datum/reagent/medicine/super_stimpak/on_mob_life(mob/living/M)
if(!M.reagents.has_reagent(/datum/reagent/medicine/healing_powder/poultice) && !M.reagents.has_reagent(/datum/reagent/medicine/stimpak) && !M.reagents.has_reagent(/datum/reagent/medicine/healing_powder)) // We don't want these healing items to stack, so we only apply the healing if these chems aren't found. We only check for the less powerful chems, so the least powerful one always heals.
M.adjustBruteLoss(-8*REAGENTS_EFFECT_MULTIPLIER)
M.adjustFireLoss(-8*REAGENTS_EFFECT_MULTIPLIER)
- M.adjustToxLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
M.AdjustStun(-10*REAGENTS_EFFECT_MULTIPLIER, 0)
M.AdjustKnockdown(-10*REAGENTS_EFFECT_MULTIPLIER, 0)
M.adjustStaminaLoss(-4*REAGENTS_EFFECT_MULTIPLIER)
. = TRUE
+ if(M.nutrition <= NUTRITION_LEVEL_STARVING - 50)
+ M.adjustToxLoss(3*REAGENTS_EFFECT_MULTIPLIER, 0)
+ M.overeatduration = 0
..()
/datum/reagent/medicine/super_stimpak/overdose_process(mob/living/M)
@@ -117,7 +123,7 @@ datum/reagent/medicine/super_stimpak/on_mob_life(mob/living/M)
M.adjustOxyLoss(12*REAGENTS_EFFECT_MULTIPLIER)
..()
. = TRUE
-
+
// ---------------------------
// LONGPORK STEW REAGENT
@@ -158,7 +164,7 @@ datum/reagent/medicine/super_stimpak/on_mob_life(mob/living/M)
reagent_state = SOLID
color = "#7f7add"
taste_description = "heaven."
- metabolization_rate = 0.7 * REAGENTS_METABOLISM
+ metabolization_rate = 0.7 * REAGENTS_METABOLISM
overdose_threshold = 30 //hard to OD on, besides if you use too much it kills you when it wears off
/datum/reagent/medicine/berserker_powder/on_mob_life(mob/living/carbon/M)
@@ -233,6 +239,7 @@ datum/reagent/medicine/super_stimpak/on_mob_life(mob/living/M)
var/heal_factor_perk = -5 //Multiplier if you have the right perk.
/datum/reagent/medicine/bitter_drink/on_mob_life(mob/living/carbon/M)
+ M.set_blurriness(7)
var/is_tribal = FALSE
if(HAS_TRAIT(M, TRAIT_TRIBAL))
is_tribal = TRUE
@@ -300,13 +307,17 @@ datum/reagent/medicine/super_stimpak/on_mob_life(mob/living/M)
// HEALING POULTICE REAGENT
/datum/reagent/medicine/healing_powder/poultice
- name = "ealing poultice"
+ name = "Healing poultice"
description = "Restores limb condition and heals rapidly."
color = "#C8A5DC"
overdose_threshold = 20
heal_factor = -2
heal_factor_perk = -4
+/datum/reagent/medicine/healing_powder/poultice/on_mob_life(mob/living/carbon/M)
+ M.set_blurriness(5)
+ ..()
+
// ---------------------------
// RAD-X REAGENT
@@ -363,14 +374,14 @@ datum/reagent/medicine/super_stimpak/on_mob_life(mob/living/M)
..()
if(isliving(M))
to_chat(M, "
You feel tougher, able to shrug off pain more easily. ")
- M.maxHealth += 100
- M.health += 100
+ M.maxHealth += 70
+ M.health += 70
/datum/reagent/medicine/medx/on_mob_delete(mob/living/carbon/human/M)
if(isliving(M))
to_chat(M, "
You feel as vulnerable to pain as a normal person. ")
- M.maxHealth -= 100
- M.health -= 100
+ M.maxHealth -= 70
+ M.health -= 70
switch(current_cycle)
if(1 to 40)
M.confused += 10
@@ -402,7 +413,7 @@ datum/reagent/medicine/super_stimpak/on_mob_life(mob/living/M)
M.set_heartattack(TRUE)
M.visible_message("
[M] clutches at their chest as if their heart stopped! ")
to_chat(M, "
Your vision goes black and your heart stops beating as the amount of drugs in your system shut down your organs one by one. Say hello to Elvis in the afterlife. ")
-
+
..()
/datum/reagent/medicine/medx/on_mob_life(mob/living/carbon/M)
diff --git a/code/modules/fallout/reagents/teas.dm b/code/modules/fallout/reagents/teas.dm
index bf833267ce..7c31149a8a 100644
--- a/code/modules/fallout/reagents/teas.dm
+++ b/code/modules/fallout/reagents/teas.dm
@@ -46,28 +46,7 @@
..()
. = TRUE
-/datum/reagent/consumable/tea/broctea
- name = "Broc Tea"
- description = "A soothing herbal rememedy steeped from the Broc Flower. Increases the clearance and flow of airways."
- color = "#FF6347"
- nutriment_factor = 0
- taste_description = "bitterness"
- glass_icon_state = "tea"
- glass_name = "Broc Tea"
- glass_desc = "A soothing herbal rememedy steeped from the Broc Flower. Increases the clearance and flow of airways."
-/datum/reagent/consumable/tea/broctea/on_mob_life(mob/living/carbon/M)
- M.adjustOxyLoss(-4*REAGENTS_EFFECT_MULTIPLIER, 0)
- M.nutrition = max(M.nutrition - 3, 0)
- M.dizziness = max(0,M.dizziness-2)
- M.drowsyness = max(0,M.drowsyness-1)
- M.jitteriness = max(0,M.jitteriness-3)
- M.AdjustSleeping(-20, FALSE)
- if(M.getToxLoss() && prob(20))
- M.adjustToxLoss(-1, 0)
- M.adjust_bodytemperature(20 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL)
- ..()
- . = TRUE
/datum/reagent/consumable/tea/coyotetea
name = "Coyote Tea"
@@ -97,34 +76,6 @@
..()
. = TRUE
-/datum/reagent/consumable/tea/coyotetea
- name = "Coyote Tea"
- description = "A smokey herbal rememedy steeped from coyote tobacco stems. Natural caffeines keep the drinker alert and awake while numbing the senses."
- color = "#008000"
- nutriment_factor = 0
- taste_description = "smoke"
- glass_icon_state = "chocolateglass"
- glass_name = "Coyote Tea"
- glass_desc = "A smokey herbal rememedy steeped from coyote tobacco stems. Natural caffeines keep the drinker alert and awake while numbing the senses."
-
-/datum/reagent/consumable/tea/coyotetea/on_mob_life(mob/living/carbon/M)
- if(prob(10))
- var/smoke_message = pick("You feel relaxed.", "You feel calmed.","You feel alert.","You feel rugged.")
- to_chat(M, "
[smoke_message] ")
- M.AdjustStun(-40, 0)
- M.AdjustKnockdown(-40, 0)
- M.AdjustUnconscious(-40, 0)
- M.adjustStaminaLoss(-1*REAGENTS_EFFECT_MULTIPLIER, 0)
- M.dizziness = max(0,M.dizziness-2)
- M.drowsyness = max(0,M.drowsyness-1)
- M.jitteriness = max(0,M.jitteriness-3)
- M.AdjustSleeping(-20, FALSE)
- if(M.getToxLoss() && prob(20))
- M.adjustToxLoss(-1, 0)
- M.adjust_bodytemperature(20 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL)
- ..()
- . = TRUE
-
/datum/reagent/consumable/tea/feratea
name = "Barrel Tea"
description = "A sour and dry rememedy steeped from barrel cactus fruit. Detoxifies the user through natural filteration and dehydration."
@@ -158,13 +109,13 @@
/datum/reagent/consumable/tea/pricklytea
name = "Prickly Tea"
- description = "A sweet and fruitfel rememedy steeped from barrel cactus fruit. Keeps you on edge."
+ description = "A sweet and fruity rememedy steeped from prickly pear fruit. Keeps you on edge."
color = "#FF6347"
nutriment_factor = 0
taste_description = "sweetness"
glass_icon_state = "cafe_latte"
glass_name = "Prickly Tea"
- glass_desc = "A sour and dry rememedy steeped from barrel cactus fruit. Keeps you on edge."
+ glass_desc = "A sweet and fruity rememedy steeped from prickly pear fruit. Keeps you on edge."
/datum/reagent/consumable/tea/pricklytea/on_mob_life(mob/living/carbon/M)
if(prob(33))
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index b1d3170df2..8db85a0171 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -31,7 +31,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
if(!hallucination)
return
- hallucination--
+ hallucination = max(hallucination-1, 0)
if(world.time < next_hallucination)
return
diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
index 6a92e2385d..ec6a5e12f0 100644
--- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
@@ -139,7 +139,7 @@
icon = 'icons/obj/f13vending.dmi'
icon_state = "nukacola"
list_reagents = list(/datum/reagent/consumable/nuka_cola = 25, /datum/reagent/radium = 5)
- foodtype = SUGAR
+ foodtype = NUKA
isGlass = TRUE
/obj/item/reagent_containers/food/drinks/bottle/f13nukacola/radioactive
@@ -152,7 +152,6 @@
icon = 'icons/obj/f13vending.dmi'
icon_state = "sunset"
list_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 1, /datum/reagent/consumable/sunset = 15, /datum/reagent/medicine/salglu_solution = 5)
- foodtype = SUGAR
isGlass = TRUE
@@ -693,6 +692,7 @@
desc = "You've really hit rock bottom now... yet theres nothing like homebrew nukashine in times like these!"
icon_state = "nukashine"
list_reagents = list(/datum/reagent/consumable/ethanol/nukashine = 100)
+ foodtype = NUKA
// Empty bottles
diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
index 8e5069925f..b73aba113e 100644
--- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
@@ -92,6 +92,12 @@
/obj/item/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola
name = "Nuka Cola"
list_reagents = list(/datum/reagent/consumable/nuka_cola = 50)
+ foodtype = NUKA
+
+obj/item/reagent_containers/food/drinks/drinkingglass/filled/nuka_float
+ name = "Nuka Float"
+ list_reagents = list(/datum/reagent/consumable/nukafloat = 50)
+ foodtype = NUKA
/obj/item/reagent_containers/food/drinks/drinkingglass/filled/syndicatebomb
name = "Syndicate Bomb"
diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm
index 1d134d61ce..e6b0aabcb4 100644
--- a/code/modules/food_and_drinks/food/condiment.dm
+++ b/code/modules/food_and_drinks/food/condiment.dm
@@ -341,3 +341,10 @@
/obj/item/reagent_containers/food/condiment/pack/soup
name = "soup bouillon pack"
list_reagents = list(/datum/reagent/consumable/dry_ramen = 10)
+
+/obj/item/reagent_containers/food/condiment/bbqsauce
+ name = "barbecue sauce"
+ desc = "Ahm I gehtin ah moar.. Sweet tangy, Byte?"
+ icon_state = "bbqsauce"
+ list_reagents = list(/datum/reagent/consumable/bbqsauce = 50)
+ possible_states = list()
diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
index ed6d0d83ec..a29dc54fb0 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
@@ -151,10 +151,13 @@
to_chat(user, "
You need more cleaning agent! ")
return TRUE
- if(istype(O, /obj/item/soap))
- var/obj/item/soap/P = O
+ if(istype(O, /obj/item/soap) || istype(O, /obj/item/reagent_containers/rag))
+ var/cleanspeed = 50
+ if(istype(O, /obj/item/soap))
+ var/obj/item/soap/used_soap = O
+ cleanspeed = used_soap.cleanspeed
user.visible_message("[user] starts to clean \the [src].", "
You start to clean \the [src]... ")
- if(do_after(user, P.cleanspeed, target = src))
+ if(do_after(user, cleanspeed, target = src))
user.visible_message("[user] has cleaned \the [src].", "
You clean \the [src]. ")
dirty = 0
update_icon()
diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
index 0dcf9a588f..33a1add9cc 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm
@@ -823,7 +823,8 @@
/obj/item/reagent_containers/food/condiment/yeast = 1,
/obj/item/reagent_containers/food/condiment/saltshaker = 1,
/obj/item/reagent_containers/food/condiment/peppermill = 1,
- /obj/item/reagent_containers/food/condiment/soysauce = 1)
+ /obj/item/reagent_containers/food/condiment/soysauce = 1,
+ /obj/item/reagent_containers/food/condiment/bbqsauce = 1)
/obj/machinery/smartfridge/bottlerack/lootshelf/books
desc = "A rusted pre-war shelf, this one has a faded label about magazines. "
diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm
index 7ccd501f2e..d5c1c95dbf 100644
--- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm
+++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm
@@ -860,7 +860,7 @@
results = list(/datum/reagent/consumable/ethanol/commander_and_chief = 50)
required_reagents = list(/datum/reagent/consumable/ethanol/alliescocktail = 50, /datum/reagent/consumable/ethanol/champagne = 20, /datum/reagent/consumable/doctor_delight = 10, /datum/reagent/consumable/ethanol/quintuple_sec = 10, /datum/reagent/consumable/ethanol/screwdrivercocktail = 10)
mix_message = "When your powers combine, I am Captain Pl-..."
-
+
/datum/chemical_reaction/cherryshake
name = "Cherry Shake"
id = /datum/reagent/consumable/cherryshake
@@ -949,7 +949,7 @@
name = "Cold Scales"
id = /datum/reagent/consumable/ethanol/species_drink/coldscales
results = list(/datum/reagent/consumable/ethanol/species_drink/coldscales = 3)
- required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/toxin/slimejelly = 1, /datum/reagent/consumable/menthol = 1)
+ required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/celugel = 1, /datum/reagent/consumable/menthol = 1)
/datum/chemical_reaction/oil_drum
name = "Oil Drum"
@@ -1010,7 +1010,7 @@
name = "Jell Wyrm"
id = /datum/reagent/consumable/ethanol/species_drink/jell_wyrm
results = list(/datum/reagent/consumable/ethanol/species_drink/jell_wyrm = 2)
- required_reagents = list(/datum/reagent/toxin/slimejelly = 1, /datum/reagent/toxin/carpotoxin = 1, /datum/reagent/carbondioxide = 5)
+ required_reagents = list(/datum/reagent/celugel = 1, /datum/reagent/toxin/carpotoxin = 1, /datum/reagent/carbondioxide = 5)
required_temp = 333 // (59.85'C)
/datum/chemical_reaction/laval_spit
@@ -1019,7 +1019,7 @@
results = list(/datum/reagent/consumable/ethanol/species_drink/laval_spit = 20) //Limited use
required_reagents = list(/datum/reagent/iron = 5, /datum/reagent/consumable/ethanol/mauna_loa = 10, /datum/reagent/sulfur = 5)
required_temp = 900 // (626.85'C)
-
+
///nuka variants
/datum/chemical_reaction/nukafloat
@@ -1039,7 +1039,7 @@
id = /datum/reagent/consumable/ethanol/nukashine
results = list(/datum/reagent/consumable/ethanol/nukashine = 2)
required_reagents = list(/datum/reagent/consumable/nuka_cola = 1, /datum/reagent/consumable/ethanol/beer = 1)
-
+
/datum/chemical_reaction/rotgut
name = "Rotgut"
id = /datum/reagent/consumable/ethanol/rotgut
@@ -1051,25 +1051,25 @@
id = /datum/reagent/consumable/ethanol/nukavictory
results = list(/datum/reagent/consumable/ethanol/nukavictory = 2)
required_reagents = list(/datum/reagent/consumable/nuka_cola = 1, /datum/reagent/consumable/ethanol/thirteenloko = 1)
-
+
/datum/chemical_reaction/nukaquartz
name = "Nuka Quartz"
id = /datum/reagent/consumable/nukaquartz
results = list(/datum/reagent/consumable/nukaquartz = 3)
required_reagents = list(/datum/reagent/consumable/nuka_cola = 1, /datum/reagent/silicon = 1, /datum/reagent/consumable/sugar = 1)
-
+
/datum/chemical_reaction/nukacherry
name = "Nuka Cherry"
id = /datum/reagent/consumable/nukacherry
results = list(/datum/reagent/consumable/nukacherry = 4)
required_reagents = list(/datum/reagent/consumable/nuka_cola = 3, /datum/reagent/consumable/cherryjelly = 1)
-
+
/datum/chemical_reaction/nukalove
name = "Nuka Love"
id = /datum/reagent/consumable/ethanol/nukalove
results = list(/datum/reagent/consumable/ethanol/nukalove = 2)
required_reagents = list(/datum/reagent/consumable/nukacherry = 1, /datum/reagent/consumable/nukaquartz = 1)
-
+
/datum/chemical_reaction/nukaquantum
name = "Nuka Quantum"
id = /datum/reagent/consumable/ethanol/nukaquantum
@@ -1386,3 +1386,44 @@
results = list(/datum/reagent/consumable/yuccashake = 3)
required_reagents = list(/datum/reagent/consumable/yuccajuice = 1, /datum/reagent/consumable/milk = 1, /datum/reagent/consumable/cream = 1)
+/datum/chemical_reaction/broctea
+ name = "Broc Tea"
+ id = "broctea"
+ results = list(/datum/reagent/consumable/tea/broctea = 3)
+ required_reagents = list(/datum/reagent/consumable/brocjuice = 1, /datum/reagent/water = 2)
+ required_temp = 315
+
+/datum/chemical_reaction/xandertea
+ name = "Xander Tea"
+ id = "xandertea"
+ results = list(/datum/reagent/consumable/tea/xandertea = 3)
+ required_reagents = list(/datum/reagent/consumable/xanderjuice = 1, /datum/reagent/water = 2)
+ required_temp = 315
+
+/datum/chemical_reaction/agavetea
+ name = "Agave Tea"
+ id = "agavetea"
+ results = list(/datum/reagent/consumable/tea/agavetea = 3)
+ required_reagents = list(/datum/reagent/consumable/agavejuice = 1, /datum/reagent/water = 2)
+ required_temp = 315
+
+/datum/chemical_reaction/feratea
+ name = "Barrel Tea"
+ id = "feratea"
+ results = list(/datum/reagent/consumable/tea/feratea = 3)
+ required_reagents = list(/datum/reagent/consumable/ferajuice = 1, /datum/reagent/water = 2)
+ required_temp = 315
+
+/datum/chemical_reaction/daturatea
+ name = "Datura Tea"
+ id = "daturatea"
+ results = list(/datum/reagent/consumable/ethanol/daturatea = 3)
+ required_reagents = list(/datum/reagent/consumable/daturajuice = 1, /datum/reagent/water = 2)
+ required_temp = 315
+
+/datum/chemical_reaction/coyotetea
+ name = "Coyote Tea"
+ id = "coyotetea"
+ results = list(/datum/reagent/consumable/tea/coyotetea = 3)
+ required_reagents = list(/datum/reagent/consumable/coyotejuice = 1, /datum/reagent/water = 2)
+ required_temp = 315
diff --git a/code/modules/hydroponics/grown/agave.dm b/code/modules/hydroponics/grown/agave.dm
index 8f7630de92..1b49545d69 100644
--- a/code/modules/hydroponics/grown/agave.dm
+++ b/code/modules/hydroponics/grown/agave.dm
@@ -1,11 +1,10 @@
-
/obj/item/seeds/agave
name = "pack of agave seeds"
desc = "These seeds grow into an agave plant."
icon = 'icons/obj/hydroponics/seeds.dmi'
icon_state = "seed-agave"
species = "agave"
- plantname = "agave plant"
+ plantname = "Agave plant"
product = /obj/item/reagent_containers/food/snacks/grown/agave
lifespan = 60
endurance = 10
@@ -17,7 +16,7 @@
icon_grow = "agave-grow"
icon_dead = "agave-dead"
icon_harvest = "agave-harvest"
- reagents_add = list(/datum/reagent/medicine/kelotane = 0.05, /datum/reagent/toxin/lipolicide = 0.05, /datum/reagent/nitrogen = 0.05, /datum/reagent/oxygen = 0.05)
+ reagents_add = list(/datum/reagent/medicine/kelotane = 0.1, /datum/reagent/toxin/lipolicide = 0.1 )
/obj/item/reagent_containers/food/snacks/grown/agave
@@ -26,5 +25,5 @@
desc = "A strange kind of fleshy grass often used as a primitive burn medication that rapidly depletes stored nutrients in the body."
icon_state = "Agave Leaf"
icon = 'icons/obj/flora/wastelandflora.dmi'
- juice_results = list(/datum/reagent/agavetea = 0)
+ juice_results = list(/datum/reagent/consumable/agavejuice = 0)
distill_reagent = /datum/reagent/consumable/ethanol/tequila
diff --git a/code/modules/hydroponics/grown/broc.dm b/code/modules/hydroponics/grown/broc.dm
index dc78440a15..c00c580f66 100644
--- a/code/modules/hydroponics/grown/broc.dm
+++ b/code/modules/hydroponics/grown/broc.dm
@@ -3,7 +3,7 @@
desc = "These seeds grow into broc flowers."
icon_state = "seed-broc"
species = "broc"
- plantname = "broc flowers"
+ plantname = "Broc Flowers"
product = /obj/item/reagent_containers/food/snacks/grown/broc
lifespan = 25
endurance = 10
@@ -12,22 +12,17 @@
production = 4
maturation = 4
growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
- //mutatelist = list(/obj/item/seeds/geraniumseed, /obj/item/seeds/lilyseed)
+ icon_harvest = "broc-harvest"
+ icon_grow = "broc-grow"
+ icon_dead = "broc-dead"
+ mutatelist = list(/obj/item/seeds/poppy/lily) //spaceman's trumpet
+ reagents_add = list(/datum/reagent/medicine/dexalin = 0.2, /datum/reagent/medicine/salglu_solution = 0.05, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/medicine/bicaridine = 0.1,)
/obj/item/reagent_containers/food/snacks/grown/broc
seed = /obj/item/seeds/poppy/broc
name = "broc flower"
desc = "This vibrant, orange flower grows on tall stalks in the wasteland and exhibits moderate healing properties, even when unprocessed."
icon_state = "broc"
- //slot_flags = SLOT_HEAD
filling_color = "#FF6347"
- juice_results = list(/datum/reagent/broctea = 0)
+ juice_results = list(/datum/reagent/consumable/brocjuice = 0)
distill_reagent = /datum/reagent/consumable/ethanol/brocbrew
-
-
-/obj/item/reagent_containers/food/snacks/grown/broc/add_juice()
- if(..())
- reagents.add_reagent(/datum/reagent/dexalin, 1 + round((seed.potency / 5), 1))
- reagents.add_reagent(/datum/reagent/medicine/salglu_solution, 1 + round((seed.potency / 20), 1))
- reagents.add_reagent(/datum/reagent/consumable/brocjuice, 1 + round((seed.potency / 5), 1))
- bitesize = 1 + round(reagents.total_volume / 3, 1)
diff --git a/code/modules/hydroponics/grown/buffalogourd.dm b/code/modules/hydroponics/grown/buffalogourd.dm
index 2eb1ae0566..1289bba5ec 100644
--- a/code/modules/hydroponics/grown/buffalogourd.dm
+++ b/code/modules/hydroponics/grown/buffalogourd.dm
@@ -1,15 +1,20 @@
+/obj/item/reagent_containers/food/snacks/roastseeds/buffalogourd
+ name = "roasted gourd seeds"
+ desc = "Well prepared crispy buffalo gourd seeds, full of chewy protein."
+ list_reagents = list(/datum/reagent/consumable/cooking_oil = 1, /datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1.5)
+
/obj/item/seeds/buffalogourd
name = "pack of buffalo gourd seeds"
- desc = "These seeds grow into buffalo vines."
+ desc = "These seeds grow into buffalo vines.
they appear to be edible once cooked! "
icon_state = "seed-gourd"
species = "buffalo gourd"
- plantname = "buffalo vines"
+ plantname = "Buffalo Vines"
product = /obj/item/reagent_containers/food/snacks/grown/buffalogourd
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
icon_grow = "gourd-grow"
icon_dead = "gourd-dead"
- icon_harvest = "tato-harvest"
- reagents_add = list(/datum/reagent/water = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.2)
+ icon_harvest = "gourd-harvest"
+ reagents_add = list(/datum/reagent/water = 0.2, /datum/reagent/toxin = 0.1)
lifespan = 50
endurance = 40
maturation = 10
@@ -17,13 +22,23 @@
yield = 3
growthstages = 3
+/obj/item/seeds/buffalogourd/microwave_act(obj/machinery/microwave/MW) //The act allows it to be cooked over a bonfire grille too.
+ ..()
+ new /obj/item/reagent_containers/food/snacks/roastseeds/buffalogourd(drop_location())
+ qdel(src)
+
+/obj/item/reagent_containers/food/snacks/roastseeds/buffalogourd
+ name = "roasted gourd seeds"
+ desc = "Well prepared crispy buffalo gourd seeds, full of chewy protein."
+ list_reagents = list(/datum/reagent/consumable/cooking_oil = 1, /datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1.5)
+
/obj/item/reagent_containers/food/snacks/grown/buffalogourd
seed = /obj/item/seeds/buffalogourd
name = "buffalo gourd"
- desc = "It's full of watery goodness."
- icon_state = "Buffalo Gourd"
- w_class = WEIGHT_CLASS_NORMAL
+ desc = "A bitter tasting vine plant, with a watery fleshy texture."
+ icon_state = "buffalo_gourd"
filling_color = "#008000"
bitesize_mod = 3
- foodtype = FRUIT
+ foodtype = FRUIT | GROSS
+ juice_results = list(/datum/reagent/lye= 0.5) // The oil made from the gourd plant itself is used in Native American soap.
distill_reagent = /datum/reagent/consumable/ethanol/buffalo
diff --git a/code/modules/hydroponics/grown/coyotetobacco.dm b/code/modules/hydroponics/grown/coyotetobacco.dm
index 26d6f40a07..6ad61d1809 100644
--- a/code/modules/hydroponics/grown/coyotetobacco.dm
+++ b/code/modules/hydroponics/grown/coyotetobacco.dm
@@ -15,7 +15,7 @@
icon_grow = "coyote-grow"
icon_dead = "coyote-dead"
icon_harvest = "coyote-harvest"
- reagents_add = list(/datum/reagent/drug/nicotine = 0.03, /datum/reagent/consumable/nutriment = 0.03)
+ reagents_add = list(/datum/reagent/drug/nicotine = 0.1, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/coyotetobacco
seed = /obj/item/seeds/coyotetobacco
@@ -23,5 +23,5 @@
desc = "This tobacco like plant is commonly used by tribals for a great variety of medicinal and ceremonial purposes."
icon_state = "Coyote Tobacco"
filling_color = "#008000"
- juice_results = list(/datum/reagent/consumable/coyotetea = 0)
+ juice_results = list(/datum/reagent/consumable/coyotejuice = 0)
distill_reagent = /datum/reagent/consumable/ethanol/deathroach
diff --git a/code/modules/hydroponics/grown/datura.dm b/code/modules/hydroponics/grown/datura.dm
index 0624e3f3cc..ae7672af79 100644
--- a/code/modules/hydroponics/grown/datura.dm
+++ b/code/modules/hydroponics/grown/datura.dm
@@ -6,23 +6,23 @@
plantname = "Datura"
product = /obj/item/reagent_containers/food/snacks/grown/datura
lifespan = 30
- maturation = 10
- production = 1
+ maturation = 6
+ production = 5
yield = 4
growthstages = 5
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
icon_grow = "datura-grow"
icon_dead = "datura-dead"
icon_harvest = "datura-harvest"
- reagents_add = list(/datum/reagent/medicine/morphine = 0.35, /datum/reagent/drug/mushroomhallucinogen = 0.12, /datum/reagent/toxin = 0.3, /datum/reagent/consumable/nutriment = 0.05)
+ reagents_add = list(/datum/reagent/medicine/morphine = 0.2, /datum/reagent/drug/mushroomhallucinogen = 0.1, /datum/reagent/toxin = 0.05, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/datura
seed = /obj/item/seeds/datura
- name = "datura-harvest"
+ name = "Datura"
desc = "The sacred datura root, useful as an anesthetic for surgery and in healing salves, as well as for rites of passage rituals and ceremonies"
icon_state = "Datura"
filling_color = "#FFA500"
bitesize_mod = 2
foodtype = VEGETABLES
- juice_results = list(/datum/reagent/consumable/ethanol/daturatea = 0)
+ juice_results = list(/datum/reagent/consumable/daturajuice = 0)
distill_reagent = /datum/reagent/consumable/ethanol/daturatea
diff --git a/code/modules/hydroponics/grown/feracactus.dm b/code/modules/hydroponics/grown/feracactus.dm
index 3283256d1d..d2372dc17c 100644
--- a/code/modules/hydroponics/grown/feracactus.dm
+++ b/code/modules/hydroponics/grown/feracactus.dm
@@ -1,3 +1,4 @@
+
/obj/item/seeds/feracactus
name = "pack of barrel cactus seeds"
desc = "These seeds grow into a barrel cactus."
@@ -7,7 +8,7 @@
icon_dead = "feracactus-dead"
icon_harvest = "feracactus-harvest"
species = "barrel cactus"
- plantname = "barrel cactus"
+ plantname = "Barrel Cactus"
product = /obj/item/reagent_containers/food/snacks/grown/feracactus
lifespan = 60
endurance = 20
@@ -15,20 +16,14 @@
growthstages = 2
production = 5
maturation = 5
-
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/medicine/calomel = 0.1,)
/obj/item/reagent_containers/food/snacks/grown/feracactus
seed = /obj/item/seeds/feracactus
name = "barrel cactus fruit"
- desc = "Barrel cactus fruit are found on spherical barrel cacti and are both nutritious and highly toxic."
+ desc = "Carefully harvested spineless barrel-cactus fruit, it feels dry to the touch but appears more than edible."
icon_state = "feracactus"
filling_color = "#FF6347"
- juice_results = list(/datum/reagent/consumable/feratea = 0)
- distill_reagent = /datum/reagent/consumable/yellowpulque
-
-/obj/item/reagent_containers/food/snacks/grown/feracactus/add_juice()
- if(..())
- reagents.add_reagent(/datum/reagent/consumable/nutriment, 3 + round((seed.potency / 20), 1))
- reagents.add_reagent(/datum/reagent/calomel, 3 + round((seed.potency / 20), 1))
- reagents.add_reagent(/datum/reagent/radium, 0 + round((seed.potency / 20), 1))
- bitesize = 3 + round(reagents.total_volume / 3, 1)
+ foodtype = FRUIT
+ juice_results = list(/datum/reagent/consumable/ferajuice = 0)
+ distill_reagent = /datum/reagent/consumable/ethanol/yellowpulque
diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm
index 0cf76479c2..87ca33c22e 100644
--- a/code/modules/hydroponics/grown/flowers.dm
+++ b/code/modules/hydroponics/grown/flowers.dm
@@ -37,6 +37,10 @@
species = "lily"
plantname = "Lily Plants"
product = /obj/item/reagent_containers/food/snacks/grown/poppy/lily
+ growthstages = 3
+ growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
+ icon_grow = "lily-grow"
+ icon_dead = "lily-dead"
mutatelist = list(/obj/item/seeds/bee_balm, /obj/item/seeds/poppy/lily/trumpet)
/obj/item/reagent_containers/food/snacks/grown/poppy/lily
@@ -96,16 +100,45 @@
species = "geranium"
plantname = "Geranium Plants"
product = /obj/item/reagent_containers/food/snacks/grown/poppy/geranium
- mutatelist = list()
+ growthstages = 3
+ growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
+ icon_grow = "geranium-grow"
+ icon_dead = "geranium-dead"
+ mutatelist = list(/obj/item/seeds/poppy/geranium/forgetmenot)
/obj/item/reagent_containers/food/snacks/grown/poppy/geranium
seed = /obj/item/seeds/poppy/geranium
name = "geranium"
- desc = "A beautiful blue flower."
+ desc = "A cluster of small purple geranium flowers. They symbolize happiness, good health, wishes and friendship and are generally associated with positive emotions."
icon_state = "geranium"
filling_color = "#008B8B"
tastes = list("pelts " = 1)
+//Forget-Me-Not
+/obj/item/seeds/poppy/geranium/forgetmenot
+ name = "pack of forget-me-not seeds"
+ desc = "These seeds grow into forget-me-nots."
+ icon_state = "seed-forget_me_not"
+ species = "forget_me_not"
+ plantname = "Forget-Me-Not Plants"
+ product = /obj/item/reagent_containers/food/snacks/grown/poppy/geranium/forgetmenot
+ endurance = 30
+ maturation = 5
+ yield = 4
+ potency = 25
+ icon_grow = "forget_me_not-grow"
+ icon_dead = "forget_me_not-dead"
+ mutatelist = list()
+ reagents_add = list(/datum/reagent/medicine/kelotane = 0.2, /datum/reagent/consumable/nutriment = 0.05)
+
+/obj/item/reagent_containers/food/snacks/grown/poppy/geranium/forgetmenot
+ seed = /obj/item/seeds/poppy/geranium/forgetmenot
+ name = "forget-me-not"
+ desc = "A clump of small blue flowers, they are primarily associated with rememberance, respect and loyalty."
+ icon_state = "forget_me_not"
+ filling_color = "#4466ff"
+ bitesize_mod = 2
+
// Harebell
/obj/item/seeds/harebell
name = "pack of harebell seeds"
@@ -337,3 +370,65 @@
tastes = list("wax" = 1)
foodtype = SUGAR
distill_reagent = /datum/reagent/consumable/ethanol/mead
+
+// Roses
+/obj/item/seeds/rose
+ name = "pack of rose seeds"
+ desc = "These seeds grow into roses."
+ icon_state = "seed-rose"
+ species = "rose"
+ plantname = "Rose Bush"
+ product = /obj/item/grown/rose
+ endurance = 12
+ yield = 6
+ potency = 15
+ instability = 20 //Roses crossbreed easily, and there's many many species of them.
+ growthstages = 3
+ genes = list(/datum/plant_gene/trait/repeated_harvest)
+ growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
+ icon_grow = "rose-grow"
+ icon_dead = "rose-dead"
+ mutatelist = list(/obj/item/seeds/carbon_rose)
+ //Roses are commonly used as herbal medicines (diarrhodons) and for their 'rose oil'.
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.05)
+
+/obj/item/grown/rose
+ seed = /obj/item/seeds/rose
+ name = "\improper rose"
+ desc = "The classic fleur d'amour - flower of love. Watch for its thorns!"
+ icon_state = "rose"
+ lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi'
+ slot_flags = ITEM_SLOT_HEAD|ITEM_SLOT_MASK
+
+// Carbon Roses
+/obj/item/seeds/carbon_rose
+ name = "pack of carbon rose seeds"
+ desc = "These seeds grow into carbon roses."
+ icon_state = "seed-carbonrose"
+ species = "carbonrose"
+ plantname = "Carbon Rose Flower"
+ product = /obj/item/grown/carbon_rose
+ endurance = 12
+ yield = 6
+ potency = 15
+ instability = 3
+ growthstages = 3
+ growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi'
+ icon_grow = "carbonrose-grow"
+ icon_dead = "carbonrose-dead"
+ reagents_add = list(/datum/reagent/carbon = 0.05)
+ rarity = 10
+
+/obj/item/grown/carbon_rose
+ seed = /obj/item/seeds/carbon_rose
+ name = "carbon rose"
+ desc = "The all new fleur d'amour gris - the flower of love, modernized, with no harsh thorns."
+ icon_state = "carbonrose"
+ lefthand_file = 'icons/mob/inhands/weapons/plants_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/plants_righthand.dmi'
+ force = 0
+ throwforce = 0
+ slot_flags = ITEM_SLOT_HEAD
+ throw_speed = 1
+ throw_range = 3
diff --git a/code/modules/hydroponics/grown/horsenettle.dm b/code/modules/hydroponics/grown/horsenettle.dm
index 7c70ee704a..499aba1ef3 100644
--- a/code/modules/hydroponics/grown/horsenettle.dm
+++ b/code/modules/hydroponics/grown/horsenettle.dm
@@ -14,7 +14,7 @@
icon_dead = "horsenettle-dead"
icon_harvest = "horsenettle-harvest"
genes = list(/datum/plant_gene/trait/plant_type/weed_hardy)
- reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
+ reagents_add = list( /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/horsenettle
seed = /obj/item/seeds/horsenettle
diff --git a/code/modules/hydroponics/grown/mesquite.dm b/code/modules/hydroponics/grown/mesquite.dm
index a26c1d0d6e..8afe1ea4fb 100644
--- a/code/modules/hydroponics/grown/mesquite.dm
+++ b/code/modules/hydroponics/grown/mesquite.dm
@@ -1,14 +1,14 @@
/obj/item/seeds/mesquite
name = "pack of honey mesquite seeds"
- desc = "This mycelium grows into tower-cap mushrooms."
+ desc = "These seeds grows into a mesquite plant."
icon_state = "mycelium-tower"
species = "honey mesquite"
- plantname = "honey mesquite"
+ plantname = "Honey Mesquite"
product = /obj/item/reagent_containers/food/snacks/grown/mesquite
lifespan = 80
endurance = 50
- maturation = 15
- production = 1
+ maturation = 6
+ production = 5
yield = 5
potency = 50
growthstages = 4
@@ -17,6 +17,7 @@
icon_dead = "mesquite-dead"
icon_harvest = "mesquite-harvest"
genes = list(/datum/plant_gene/trait/repeated_harvest)
+ reagents_add = list(/datum/reagent/consumable/honey = 0.1, /datum/reagent/consumable/nutriment = 0.05)
/obj/item/reagent_containers/food/snacks/grown/mesquite
seed = /obj/item/seeds/mesquite
@@ -27,6 +28,6 @@
filling_color = "#F0E68C"
bitesize_mod = 2
foodtype = VEGETABLES
- juice_results = list(/datum/reagent/consumable/honey = 0)
+ juice_results = list(/datum/reagent/consumable/honey = 0.1)
tastes = list("crunchy sweetness" = 1)
distill_reagent = /datum/reagent/consumable/ethanol/wastemead
diff --git a/code/modules/hydroponics/grown/mutfruit.dm b/code/modules/hydroponics/grown/mutfruit.dm
index f26e3e41d3..0d3a08b1a5 100644
--- a/code/modules/hydroponics/grown/mutfruit.dm
+++ b/code/modules/hydroponics/grown/mutfruit.dm
@@ -3,7 +3,7 @@
desc = "These seeds grow into a mutfruit sapling."
icon_state = "seed-mutfruit"
species = "mutfruit"
- plantname = "mutfruit sapling"
+ plantname = "Mutfruit Sapling"
growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi'
icon_grow = "mutfruit-grow"
icon_dead = "mutfruit-dead"
@@ -14,6 +14,7 @@
growthstages = 3
production = 5
maturation = 5
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/radium = 0.15)
/obj/item/reagent_containers/food/snacks/grown/mutfruit
seed = /obj/item/seeds/mutfruit
@@ -21,13 +22,5 @@
desc = "Mutfruit provides both hydration and sustenance, but the mutated plant also carries small amounts of radiation."
icon_state = "mutfruit"
filling_color = "#FF6347"
- distill_reagent = /datum/reagent/consumable/purplecider
+ distill_reagent = /datum/reagent/consumable/ethanol/purplecider
juice_results = list(/datum/reagent/consumable/mutjuice = 0)
-
-/obj/item/reagent_containers/food/snacks/grown/mutfruit/add_juice()
- if(..())
- reagents.add_reagent(/datum/reagent/consumable/nutriment, 3 + round((seed.potency / 20), 1))
- reagents.add_reagent(/datum/reagent/radium, 1 + round((seed.potency / 20), 1))
- bitesize = 1 + round(reagents.total_volume / 3, 1)
-
-/*HRP*/
diff --git a/code/modules/hydroponics/grown/pinyon.dm b/code/modules/hydroponics/grown/pinyon.dm
index 6b181a0a85..3ed8c2d57e 100644
--- a/code/modules/hydroponics/grown/pinyon.dm
+++ b/code/modules/hydroponics/grown/pinyon.dm
@@ -7,8 +7,8 @@
product = /obj/item/reagent_containers/food/snacks/grown/pinyon
lifespan = 80
endurance = 50
- maturation = 15
- production = 1
+ maturation = 9
+ production = 6
yield = 5
potency = 50
growthstages = 4
@@ -17,7 +17,7 @@
icon_dead = "pinyon-dead"
icon_harvest = "pinyon-harvest"
genes = list(/datum/plant_gene/trait/repeated_harvest)
- reagents_add = list(/datum/reagent/consumable/nutriment = 0.04)
+ reagents_add = list( /datum/reagent/consumable/nutriment = 0.05)
/obj/item/reagent_containers/food/snacks/grown/pinyon
seed = /obj/item/seeds/pinyon
diff --git a/code/modules/hydroponics/grown/prickly.dm b/code/modules/hydroponics/grown/prickly.dm
index 53d17f3c46..542dbd6ff4 100644
--- a/code/modules/hydroponics/grown/prickly.dm
+++ b/code/modules/hydroponics/grown/prickly.dm
@@ -7,10 +7,10 @@
icon_dead = "prickly-dead"
icon_harvest = "prickly-harvest"
species = "prickly pear"
- plantname = "prickly pear"
+ plantname = "Prickly pear cactus"
genes = list(/datum/plant_gene/trait/repeated_harvest)
product = /obj/item/reagent_containers/food/snacks/grown/pricklypear
- reagents_add = list(/datum/reagent/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.2, /datum/reagent/water = 0.04)
+ reagents_add = list(/datum/reagent/consumable/nutriment = 0.2, /datum/reagent/water = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.05)
lifespan = 60
endurance = 20
yield = 2
@@ -26,7 +26,7 @@
filling_color = "#FF6347"
foodtype = FRUIT
bitesize_mod = 2
- juice_results = list(/datum/reagent/pricklytea = 0)
+ juice_results = list(/datum/reagent/consumable/tea/pricklytea = 0)
tastes = list("sweet cactus" = 1)
distill_reagent = /datum/reagent/consumable/ethanol/pinkpulque
@@ -37,8 +37,6 @@
var/mob/living/carbon/C = user
if(C.gloves)
return FALSE
- if(C.has_trait(TRAIT_PIERCEIMMUNE))
- return FALSE
var/hit_zone = (C.held_index_to_dir(C.active_hand_index) == "l" ? "l_":"r_") + "arm"
var/obj/item/bodypart/affecting = C.get_bodypart(hit_zone)
if(affecting)
diff --git a/code/modules/hydroponics/grown/pumpkin.dm b/code/modules/hydroponics/grown/pumpkin.dm
index 4c2d707da5..9dc24cfb74 100644
--- a/code/modules/hydroponics/grown/pumpkin.dm
+++ b/code/modules/hydroponics/grown/pumpkin.dm
@@ -73,3 +73,13 @@
foodtype = FRUIT
juice_results = list(/datum/reagent/consumable/blumpkinjuice = 0)
wine_power = 50
+
+/obj/item/reagent_containers/food/snacks/grown/blumpkin/attackby(obj/item/W as obj, mob/user as mob, params)
+ if(W.get_sharpness())
+ user.show_message("
You carve a face into [src]! ", MSG_VISUAL)
+ new /obj/item/clothing/head/hardhat/pumpkinhead/blumpkin(user.loc)
+ qdel(src)
+ return
+ else
+ return ..()
+
diff --git a/code/modules/hydroponics/grown/punga.dm b/code/modules/hydroponics/grown/punga.dm
index 314e2ca660..badc996503 100644
--- a/code/modules/hydroponics/grown/punga.dm
+++ b/code/modules/hydroponics/grown/punga.dm
@@ -3,12 +3,12 @@
desc = "These small black pits grow into a punga bush"
icon_state = "seed-punga"
species = "punga"
- plantname = "punga bush"
+ plantname = "Punga Bush"
product = /obj/item/reagent_containers/food/snacks/grown/pungafruit
lifespan = 100
endurance = 30
- maturation = 15
- production = 1
+ maturation = 10
+ production = 5
yield = 3
potency = 30
growthstages = 4
@@ -18,18 +18,12 @@
icon_dead = "punga-dead"
icon_harvest = "punga-harvest"
genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/trait/repeated_harvest)
- reagents_add = list(/datum/reagent/medicine/charcoal = 0.1, /datum/reagent/phosphorus = 0.1, /datum/reagent/consumable/nutriment = 0.04)
+ reagents_add = list(/datum/reagent/medicine/charcoal = 0.1, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/medicine/radaway = 0.05)
/obj/item/reagent_containers/food/snacks/grown/pungafruit
seed = /obj/item/seeds/punga
name = "pungafruit"
- desc = "Punga fruit plants flower at a single point at the terminus of their stems, gradually developing into large, fleshy fruits with a yellow/brown, thick skin. They are common throughout Point Lookout, due to the unique conditions offered by the swamps, and the further unique function of scrubbing radiation from the system"
+ desc = "Punga fruit plants flower at a single point at the terminus of their stems, gradually developing into large, fleshy fruits with a yellow/brown, thick skin. They are common throughout Point Lookout, due to the unique conditions offered by the swamps, and scrub radiation when ingested."
icon_state = "Punga Fruit"
filling_color = "#FF6347"
- distill_reagent = /datum/reagent/consumable/ethanol/pungajuice
-
-/obj/item/reagent_containers/food/snacks/grown/pungafruit/add_juice()
- if(..())
- reagents.add_reagent(/datum/reagent/medicine/charcoal, 1 + round((seed.potency / 20), 1))
- reagents.add_reagent(/datum/reagent/medicine/mutadone, 1 + round((seed.potency / 20), 1))
- bitesize = 1 + round(reagents.total_volume / 3, 1)
+ juice_results = list(/datum/reagent/consumable/ethanol/pungajuice = 0)
diff --git a/code/modules/hydroponics/grown/tato.dm b/code/modules/hydroponics/grown/tato.dm
index e7a5f9de21..14aaf05196 100644
--- a/code/modules/hydroponics/grown/tato.dm
+++ b/code/modules/hydroponics/grown/tato.dm
@@ -6,8 +6,8 @@
plantname = "Tato Plants"
product = /obj/item/reagent_containers/food/snacks/grown/tato
lifespan = 30
- maturation = 10
- production = 1
+ maturation = 7
+ production = 3
yield = 4
growthstages = 4
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
@@ -15,7 +15,7 @@
icon_dead = "tato-dead"
icon_harvest = "tato-harvest"
genes = list(/datum/plant_gene/trait/battery, /datum/plant_gene/trait/repeated_harvest)
- reagents_add = list(/datum/reagent/consumable/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
+ reagents_add = list( /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/tato
seed = /obj/item/seeds/tato
@@ -25,7 +25,7 @@
filling_color = "#E9967A"
bitesize = 100
foodtype = VEGETABLES
- juice_results = list(/datum/reagent/tato = 0)
+ juice_results = list(/datum/reagent/consumable/tato_juice = 0)
distill_reagent = /datum/reagent/consumable/ethanol/tatovodka
/obj/item/reagent_containers/food/snacks/grown/tato/wedges
diff --git a/code/modules/hydroponics/grown/xander.dm b/code/modules/hydroponics/grown/xander.dm
index 8c5370b5ba..e4cbe8cb3d 100644
--- a/code/modules/hydroponics/grown/xander.dm
+++ b/code/modules/hydroponics/grown/xander.dm
@@ -3,17 +3,19 @@
desc = "These seeds grow into xander roots."
icon_state = "seed-xander"
species = "xander"
- plantname = "xander roots"
+ plantname = "Xander Roots"
product = /obj/item/reagent_containers/food/snacks/grown/xander
lifespan = 25
endurance = 10
yield = 3
growthstages = 4
- production = 2
- maturation = 2
+ production = 4
+ maturation = 4
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
- icon_grow = "potato-grow"
- icon_dead = "potato-dead"
+ icon_grow = "xander-grow"
+ icon_harvest = "xander-harvest"
+ icon_dead = "xander-dead"
+ reagents_add = list(/datum/reagent/medicine/antitoxin = 0.2, /datum/reagent/medicine/salglu_solution = 0.05, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/reagent_containers/food/snacks/grown/xander
seed = /obj/item/seeds/xander
@@ -21,14 +23,5 @@
desc = "Xander roots are large, hardy, turnip-like roots with mild healing properties."
icon_state = "xander"
filling_color = "#FF6347"
- juice_results = list(/datum/reagent/xandertea = 0)
+ juice_results = list(/datum/reagent/consumable/xanderjuice = 0)
distill_reagent = /datum/reagent/consumable/ethanol/salgam
-
-/obj/item/reagent_containers/food/snacks/grown/xander/add_juice()
- if(..())
- reagents.add_reagent(/datum/reagent/medicine/antitoxin, 1 + round((seed.potency / 5), 1))
- reagents.add_reagent(/datum/reagent/consumable/xanderjuice, 1 + round((seed.potency/5), 1))
- reagents.add_reagent(/datum/reagent/medicine/salglu, 1 + round((seed.potency / 20), 1))
- bitesize = 1 + round(reagents.total_volume / 3, 1)
-
-/*HRP*/
diff --git a/code/modules/hydroponics/grown/yucca.dm b/code/modules/hydroponics/grown/yucca.dm
index 4a1163c84f..03063fa983 100644
--- a/code/modules/hydroponics/grown/yucca.dm
+++ b/code/modules/hydroponics/grown/yucca.dm
@@ -1,31 +1,31 @@
/obj/item/seeds/yucca
name = "pack of banana yucca seeds"
- desc = "These seeds grow into an agave plant."
+ desc = "These seeds grow into a yucca plant."
icon = 'icons/obj/hydroponics/seeds.dmi'
icon_state = "seed-yucca"
species = "banna yucca"
- plantname = "banana yucca plant"
+ plantname = "Banana Yucca plant"
product = /obj/item/reagent_containers/food/snacks/grown/yucca
lifespan = 50
endurance = 30
yield = 5
growthstages = 4
- production = 2
- maturation = 1
+ maturation = 5
+ production = 4
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
icon_grow = "yucca-grow"
icon_dead = "yucca-dead"
icon_harvest = "yucca-harvest"
genes = list(/datum/plant_gene/trait/repeated_harvest)
- reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.2, /datum/reagent/consumable/sugar = 0.1, /datum/reagent/consumable/nutriment = 0.2)
+ reagents_add = list( /datum/reagent/consumable/nutriment = 0.2, /datum/reagent/consumable/sugar = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.2)
/obj/item/reagent_containers/food/snacks/grown/yucca
seed = /obj/item/seeds/yucca
name = "banana yucca fruit"
- desc = "The fleshy banana banana like fruit, rougly 8 cm long and 6 cm across. It smells tastes similar to a sweet potato."
+ desc = "The fleshy banana like fruit, rougly 8 cm long and 6 cm across. It tastes similar to a sweet potato."
icon_state = "Bannana Yucca"
icon = 'icons/obj/hydroponics/harvest.dmi'
bitesize = 3
- juice_results = list(/datum/reagent/yuccajuice = 0)
+ juice_results = list(/datum/reagent/consumable/yuccajuice = 0)
distill_reagent = /datum/reagent/consumable/yuccajuice
diff --git a/code/modules/jobs/job_types/bos.dm b/code/modules/jobs/job_types/bos.dm
index 27122e1748..7d99f44053 100644
--- a/code/modules/jobs/job_types/bos.dm
+++ b/code/modules/jobs/job_types/bos.dm
@@ -25,7 +25,7 @@ Main doors: ACCESS_CAPTAIN 20
shoes = /obj/item/clothing/shoes/combat/swat
gloves = /obj/item/clothing/gloves/combat
id = /obj/item/card/id/dogtag
- box = /obj/item/storage/survivalkit_adv
+ box = /obj/item/storage/survivalkit/adv
/datum/outfit/job/bos/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
@@ -44,7 +44,6 @@ Main doors: ACCESS_CAPTAIN 20
H.mind.teach_crafting_recipe(/datum/crafting_recipe/boscombathelmetmk2)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/set_vrboard/bos)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/gate_bos)
-
/*
Elder
*/
@@ -111,7 +110,8 @@ Head Paladin
/datum/outfit/loadout/sentvet, //xl70e3
/datum/outfit/loadout/sentheavy, //Gauss + Glock
/datum/outfit/loadout/sentgat, // Gatling
- /datum/outfit/loadout/sentmini // Minigun
+ /datum/outfit/loadout/sentmini, // Minigun
+ /datum/outfit/loadout/senttactical //G11, ammo choice box
)
outfit = /datum/outfit/job/bos/f13sentinel
@@ -151,6 +151,7 @@ Head Paladin
neck = /obj/item/storage/belt/holster
backpack_contents = list(
/obj/item/melee/onehanded/knife/hunting = 1,
+ /obj/item/melee/unarmed/powerfist = 1,
/obj/item/gun/ballistic/automatic/pistol/n99/crusader = 1,
/obj/item/ammo_box/magazine/m10mm_adv/simple = 2,
/obj/item/reagent_containers/hypospray/medipen/stimpak = 3,
@@ -193,6 +194,15 @@ Head Paladin
/obj/item/stock_parts/cell/ammo/ec=2,
)
+/datum/outfit/loadout/senttactical
+ name = "Tactical Head Paladin"
+ backpack_contents = list(
+ /obj/item/gun/ballistic/automatic/g11 = 1,
+ /obj/item/ammo_box/magazine/m473 = 2,
+ /obj/item/ammo_box/magazine/m473/empty = 1,
+ /obj/item/choice_beacon/box/g11ammo = 1,
+ )
+
/*
Head Scribe
@@ -304,6 +314,7 @@ Head Knight
H.mind.teach_crafting_recipe(/datum/crafting_recipe/dks)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/R93)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/rcw)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/plasmasniper)
/datum/outfit/job/bos/f13knightcap
@@ -373,13 +384,14 @@ Star Paladin
loadout_options = list(
/datum/outfit/loadout/spaladina, //R91 Assault Rifle
/datum/outfit/loadout/spaladinb, //AER12
- /datum/outfit/loadout/spaladinc //Minigun
+ /datum/outfit/loadout/spaladinc, //Minigun
+ /datum/outfit/loadout/spaladintactical //WT-550, ammo choice box
)
outfit = /datum/outfit/job/bos/f13seniorpaladin
- access = list(ACCESS_ROBOTICS, ACCESS_BOS, ACCESS_ENGINE_EQUIP, ACCESS_ENGINE, ACCESS_HYDROPONICS, ACCESS_KITCHEN, ACCESS_BAR, ACCESS_SEC_DOORS)
- minimal_access = list(ACCESS_ROBOTICS, ACCESS_BOS, ACCESS_ENGINE_EQUIP, ACCESS_ENGINE, ACCESS_HYDROPONICS, ACCESS_KITCHEN, ACCESS_BAR, ACCESS_SEC_DOORS)
+ access = list(ACCESS_BROTHERHOOD_COMMAND, ACCESS_ROBOTICS, ACCESS_BOS, ACCESS_ENGINE_EQUIP, ACCESS_ENGINE, ACCESS_HYDROPONICS, ACCESS_KITCHEN, ACCESS_BAR, ACCESS_SEC_DOORS)
+ minimal_access = list(ACCESS_BROTHERHOOD_COMMAND, ACCESS_ROBOTICS, ACCESS_BOS, ACCESS_ENGINE_EQUIP, ACCESS_ENGINE, ACCESS_HYDROPONICS, ACCESS_KITCHEN, ACCESS_BAR, ACCESS_SEC_DOORS)
matchmaking_allowed = list(
/datum/matchmaking_pref/friend = list(
/datum/job/bos,
@@ -418,21 +430,20 @@ Star Paladin
backpack_contents = list(
/obj/item/melee/onehanded/knife/hunting = 1,
/obj/item/reagent_containers/hypospray/medipen/stimpak = 2,
- /obj/item/melee/powerfist/f13 = 1,
+ /obj/item/melee/unarmed/powerfist = 1,
/obj/item/tank/internals/oxygen = 1,
)
/datum/outfit/loadout/spaladina
name = "Firesupport Senior Paladin"
backpack_contents = list(
- /obj/item/gun/ballistic/automatic/assault_rifle = 1,
- /obj/item/ammo_box/magazine/m556/rifle/assault = 3,
+ /obj/item/minigunpackbal5mm = 1,
/obj/item/gun/energy/laser/pistol=1,
/obj/item/stock_parts/cell/ammo/ec=2,
)
/datum/outfit/loadout/spaladinb
- name = "Mainline Senior Paladin"
+ name = "Frontline Senior Paladin"
backpack_contents = list(
/obj/item/gun/energy/laser/aer12 = 1,
/obj/item/attachments/scope = 1,
@@ -442,13 +453,23 @@ Star Paladin
)
/datum/outfit/loadout/spaladinc
- name = "Vanguard Senior Paladin"
+ name = "Overwatch Senior Paladin"
backpack_contents = list(
- /obj/item/minigunpackbal5mm = 1,
+ /obj/item/gun/ballistic/automatic/m72 = 1,
+ /obj/item/ammo_box/magazine/m2mm = 3,
/obj/item/gun/energy/laser/pistol=1,
/obj/item/stock_parts/cell/ammo/ec=2,
)
+/datum/outfit/loadout/spaladintactical
+ name = "Tactical Senior Paladin"
+ backpack_contents = list(
+ /obj/item/gun/ballistic/automatic/wt550 = 1,
+ /obj/item/ammo_box/magazine/m473/small = 3,
+ /obj/item/ammo_box/magazine/m473/small/empty = 3,
+ /obj/item/choice_beacon/box/g11ammo = 1,
+ )
+
/*
Paladin
*/
@@ -598,8 +619,8 @@ Senior Scribe
outfit = /datum/outfit/job/bos/f13seniorscribe
- access = list(ACCESS_ROBOTICS, ACCESS_BOS, ACCESS_ENGINE_EQUIP, ACCESS_ENGINE, ACCESS_HYDROPONICS, ACCESS_KITCHEN, ACCESS_BAR, ACCESS_SEC_DOORS)
- minimal_access = list(ACCESS_ROBOTICS, ACCESS_BOS, ACCESS_ENGINE_EQUIP, ACCESS_ENGINE, ACCESS_HYDROPONICS, ACCESS_KITCHEN, ACCESS_BAR, ACCESS_SEC_DOORS)
+ access = list(ACCESS_BROTHERHOOD_COMMAND, ACCESS_ROBOTICS, ACCESS_BOS, ACCESS_ENGINE_EQUIP, ACCESS_ENGINE, ACCESS_HYDROPONICS, ACCESS_KITCHEN, ACCESS_BAR, ACCESS_SEC_DOORS)
+ minimal_access = list(ACCESS_BROTHERHOOD_COMMAND, ACCESS_ROBOTICS, ACCESS_BOS, ACCESS_ENGINE_EQUIP, ACCESS_ENGINE, ACCESS_HYDROPONICS, ACCESS_KITCHEN, ACCESS_BAR, ACCESS_SEC_DOORS)
matchmaking_allowed = list(
/datum/matchmaking_pref/friend = list(
/datum/job/bos,
@@ -719,7 +740,7 @@ Scribe
)
/*
-Senior Knight
+Senior
*/
/datum/job/bos/f13seniorknight
@@ -743,8 +764,8 @@ Senior Knight
outfit = /datum/outfit/job/bos/f13seniorknight
- access = list(ACCESS_ROBOTICS, ACCESS_BOS, ACCESS_ENGINE_EQUIP, ACCESS_ENGINE, ACCESS_HYDROPONICS, ACCESS_KITCHEN, ACCESS_BAR, ACCESS_SEC_DOORS)
- minimal_access = list(ACCESS_ROBOTICS, ACCESS_BOS, ACCESS_ENGINE_EQUIP, ACCESS_ENGINE, ACCESS_HYDROPONICS, ACCESS_KITCHEN, ACCESS_BAR, ACCESS_SEC_DOORS)
+ access = list(ACCESS_BROTHERHOOD_COMMAND, ACCESS_ROBOTICS, ACCESS_BOS, ACCESS_ENGINE_EQUIP, ACCESS_ENGINE, ACCESS_HYDROPONICS, ACCESS_KITCHEN, ACCESS_BAR, ACCESS_SEC_DOORS)
+ minimal_access = list(ACCESS_BROTHERHOOD_COMMAND, ACCESS_ROBOTICS, ACCESS_BOS, ACCESS_ENGINE_EQUIP, ACCESS_ENGINE, ACCESS_HYDROPONICS, ACCESS_KITCHEN, ACCESS_BAR, ACCESS_SEC_DOORS)
matchmaking_allowed = list(
/datum/matchmaking_pref/friend = list(
/datum/job/bos,
@@ -765,6 +786,8 @@ Senior Knight
H.mind.teach_crafting_recipe(/datum/crafting_recipe/AEP7)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/dks)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/R93)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/wattz2ke)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/plasmasniper)
/datum/outfit/job/bos/f13seniorknight
name = "Senior Knight"
@@ -820,7 +843,6 @@ Senior Knight
/datum/outfit/loadout/sknightd
name = "Cavalry"
backpack_contents = list(
- /obj/item/clothing/accessory/bos/knight=1,
/obj/item/melee/powered/ripper/prewar=1,
/obj/item/shield/riot/bullet_proof=1,
)
@@ -876,6 +898,7 @@ Knight
H.mind.teach_crafting_recipe(/datum/crafting_recipe/AER9)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/AEP7)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/dks)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/plasmasniper)
/datum/outfit/job/bos/f13knight
name = "Knight"
diff --git a/code/modules/jobs/job_types/enclave.dm b/code/modules/jobs/job_types/enclave.dm
index 55dc339b77..0e74d5402b 100644
--- a/code/modules/jobs/job_types/enclave.dm
+++ b/code/modules/jobs/job_types/enclave.dm
@@ -11,7 +11,7 @@
/datum/outfit/job/enclave
id = null
ears = /obj/item/radio/headset/headset_enclave
- box = /obj/item/storage/survivalkit_aid
+ box = /obj/item/storage/survivalkit/aid
/datum/outfit/job/enclave/peacekeeper
id = /obj/item/card/id/dogtag/enclave/trooper
diff --git a/code/modules/jobs/job_types/followers.dm b/code/modules/jobs/job_types/followers.dm
index acb26d864f..ad32042807 100644
--- a/code/modules/jobs/job_types/followers.dm
+++ b/code/modules/jobs/job_types/followers.dm
@@ -363,10 +363,10 @@ Follower Volunteer
/datum/outfit/job/followers/f13followerguard
name = "Followers Guard"
jobtype = /datum/job/followers/f13followerguard
- belt = /obj/item/storage/belt/military/followers
+ belt = /obj/item/storage/belt/military/army/military/followers
id = /obj/item/card/id/silver
uniform = /obj/item/clothing/under/f13/bodyguard
- suit = /obj/item/clothing/suit/armor/vest
+ suit = /obj/item/clothing/suit/armor/vest/big
head = /obj/item/clothing/head/helmet/riot/vaultsec
glasses = /obj/item/clothing/glasses/sunglasses
shoes = /obj/item/clothing/shoes/combat
diff --git a/code/modules/jobs/job_types/legion.dm b/code/modules/jobs/job_types/legion.dm
index 7742cfd2fc..a1459e9f40 100644
--- a/code/modules/jobs/job_types/legion.dm
+++ b/code/modules/jobs/job_types/legion.dm
@@ -58,7 +58,7 @@ Weapons Lever shotgun, Grease gun, Repeater carbines, Revolvers, simple guns al
uniform = /obj/item/clothing/under/f13/legskirt
shoes = /obj/item/clothing/shoes/f13/military/legion
gloves = /obj/item/clothing/gloves/legion
- box = /obj/item/storage/survivalkit_tribal
+ box = /obj/item/storage/survivalkit/tribal
/datum/outfit/job/CaesarsLegion/Legionnaire/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
@@ -136,58 +136,13 @@ Weapons Lever shotgun, Grease gun, Repeater carbines, Revolvers, simple guns al
suit_store = /obj/item/gun/ballistic/automatic/pistol/pistol14
r_pocket = /obj/item/storage/bag/money/small/legion
l_pocket = /obj/item/flashlight/lantern
- r_hand = /obj/item/melee/powerfist/f13/goliath
+ r_hand = /obj/item/melee/unarmed/powerfist/goliath
l_hand = /obj/item/tank/internals/oxygen
backpack = null
satchel = null
box = /obj/item/storage/box/legate
-// ORATOR
-
-/datum/job/CaesarsLegion/Legionnaire/f13orator
- title = "Legion Orator"
- flag = F13ORATOR
- supervisors = "Legate"
- selection_color = "#ffdddd"
- req_admin_notify = 1
- total_positions = 0
- spawn_positions = 0
- outfit = /datum/outfit/job/CaesarsLegion/Legionnaire/f13orator
- display_order = JOB_DISPLAY_ORDER_ORATOR
- access = list(ACCESS_LEGION, ACCESS_CHANGE_IDS, ACCESS_LEGION_COMMAND)
- minimal_access = list(ACCESS_LEGION, ACCESS_CHANGE_IDS, ACCESS_LEGION_COMMAND)
-
-/datum/outfit/job/CaesarsLegion/Legionnaire/f13orator // 10mm Revolver, Spatha
- name = "Orator"
- jobtype = /datum/job/CaesarsLegion/Legionnaire/f13orator
- neck = /obj/item/storage/belt/holster
- shoes = /obj/item/clothing/shoes/f13/military/legate
- suit = /obj/item/clothing/suit/armor/f13/legion/legate
- head = null
- id = /obj/item/card/id/dogtag/legcenturion
- gloves = null
- shoes = /obj/item/clothing/shoes/roman
- suit_store = /obj/item/gun/ballistic/revolver/colt6520
- r_pocket = /obj/item/storage/bag/money/small/legofficers
- l_pocket = /obj/item/flashlight/lantern
- l_hand = /obj/item/melee/onehanded/machete/spatha
- backpack_contents = list(
- /obj/item/ammo_box/l10mm = 2,
- /obj/item/reagent_containers/pill/patch/bitterdrink = 1,
- )
-
-/datum/outfit/job/CaesarsLegion/Legionnaire/f13orator/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
- ..()
- if(visualsOnly)
- return
- ADD_TRAIT(H, TRAIT_HARD_YARDS, src)
- ADD_TRAIT(H, TRAIT_LIFEGIVER, src)
- ADD_TRAIT(H, TRAIT_IRONFIST, src)
- ADD_TRAIT(H, TRAIT_BIG_LEAGUES, src)
- if(H.mind)
- var/obj/effect/proc_holder/spell/terrifying_presence/S = new /obj/effect/proc_holder/spell/terrifying_presence
- H.mind.AddSpell(S)
/////////////////
//// Officers ///
@@ -241,7 +196,7 @@ Weapons Lever shotgun, Grease gun, Repeater carbines, Revolvers, simple guns al
shoes = /obj/item/clothing/shoes/f13/military/plated
r_pocket = /obj/item/restraints/handcuffs
l_pocket = /obj/item/flashlight/lantern
- box = /obj/item/storage/survivalkit_tribal/chief
+ box = /obj/item/storage/survivalkit/tribal/adv
backpack_contents = list(
/obj/item/restraints/legcuffs/bola = 1,
/obj/item/storage/bag/money/small/legion = 1,
@@ -258,6 +213,7 @@ Weapons Lever shotgun, Grease gun, Repeater carbines, Revolvers, simple guns al
suit_store = /obj/item/gun/ballistic/automatic/m1919
backpack_contents = list(
/obj/item/melee/onehanded/machete/spatha = 1,
+ /obj/item/melee/unarmed/powerfist/goliath = 1,
/obj/item/ammo_box/magazine/mm762 = 1,
)
@@ -336,7 +292,7 @@ commented out pending rework*/
glasses = /obj/item/clothing/glasses/sunglasses/big
shoes = /obj/item/clothing/shoes/f13/military/plated
r_pocket = /obj/item/flashlight/lantern
- box = /obj/item/storage/survivalkit_tribal/chief
+ box = /obj/item/storage/survivalkit/tribal/adv
backpack_contents = list(
/obj/item/ammo_box/a357 = 1,
/obj/item/gun/ballistic/revolver/colt357 = 1,
@@ -383,6 +339,7 @@ commented out pending rework*/
loadout_options = list(
/datum/outfit/loadout/decprimfront, // Grease Gun, Gladius, Smoke bomb
/datum/outfit/loadout/decprimrear, // Trail carbine, 10mm Revolver, Gladius, Smoke bomb
+ /datum/outfit/loadout/decprimboom, // Grenade rifle, .44 revolver, Gladius
)
matchmaking_allowed = list(
@@ -415,12 +372,12 @@ commented out pending rework*/
shoes = /obj/item/clothing/shoes/f13/military/plated
r_pocket = /obj/item/flashlight/lantern
l_pocket = /obj/item/restraints/handcuffs
- box = /obj/item/storage/survivalkit_tribal/chief
+ box = /obj/item/storage/survivalkit/tribal/adv
backpack_contents = list(
/obj/item/melee/onehanded/machete/gladius = 1,
/obj/item/storage/bag/money/small/legofficers = 1,
/obj/item/grenade/smokebomb = 1,
- /obj/item/binoculars,
+ /obj/item/binoculars = 1,
)
/datum/outfit/loadout/decprimfront
@@ -428,6 +385,8 @@ commented out pending rework*/
suit_store = /obj/item/gun/ballistic/automatic/smg/smg10mm
backpack_contents = list(
/obj/item/ammo_box/magazine/m10mm_adv/ext = 2,
+ /obj/item/gun/ballistic/revolver/colt357 = 1,
+ /obj/item/ammo_box/a357 = 1,
)
/datum/outfit/loadout/decprimrear
@@ -439,6 +398,15 @@ commented out pending rework*/
/obj/item/ammo_box/a357 = 1,
)
+/datum/outfit/loadout/decprimboom
+ name = "Lead from the rubble"
+ suit_store = /obj/item/gun/ballistic/revolver/grenadelauncher
+ backpack_contents = list(
+ /obj/item/ammo_box/a40mm = 2,
+ /obj/item/gun/ballistic/revolver/m29 = 1,
+ /obj/item/ammo_box/m44 = 3,
+ )
+
// RECRUIT DECANUS
@@ -451,6 +419,8 @@ commented out pending rework*/
supervisors = "the Prime/Veteran Decanus and the Centurion"
display_order = JOB_DISPLAY_ORDER_DECANREC
outfit = /datum/outfit/job/CaesarsLegion/Legionnaire/f13decanrec
+ access = list(ACCESS_LEGION, ACCESS_LEGION_COMMAND)
+ minimal_access = list(ACCESS_LEGION, ACCESS_LEGION_COMMAND)
exp_requirements = 600
loadout_options = list(
@@ -485,7 +455,7 @@ commented out pending rework*/
neck = /obj/item/storage/belt/holster
glasses = /obj/item/clothing/glasses/legiongoggles
r_pocket = /obj/item/flashlight/lantern
- l_pocket = /obj/item/storage/survivalkit_tribal
+ l_pocket = /obj/item/storage/survivalkit/tribal
backpack_contents = list(
/obj/item/reagent_containers/pill/patch/healingpowder = 1,
/obj/item/restraints/handcuffs = 1,
@@ -518,6 +488,49 @@ commented out pending rework*/
///Specialist///////
////////////////////
+// ORATOR
+//No longer admin only. This will be great, let's see how this goes.
+//I just want to preface this by saying I have never, and will never play legion.
+// - Kitsunemitsu (Kirie Saito!)
+
+/datum/job/CaesarsLegion/Legionnaire/f13orator
+ title = "Legion Orator"
+ flag = F13ORATOR
+ supervisors = "Centurion"
+ req_admin_notify = 1
+ total_positions = 1
+ spawn_positions = 1
+ outfit = /datum/outfit/job/CaesarsLegion/Legionnaire/f13orator
+ display_order = JOB_DISPLAY_ORDER_ORATOR
+ access = list(ACCESS_LEGION, ACCESS_CHANGE_IDS, ACCESS_LEGION_COMMAND)
+ minimal_access = list(ACCESS_LEGION, ACCESS_CHANGE_IDS, ACCESS_LEGION_COMMAND)
+
+/datum/outfit/job/CaesarsLegion/Legionnaire/f13orator // 10mm Revolver, Spatha
+ name = "Orator"
+ jobtype = /datum/job/CaesarsLegion/Legionnaire/f13orator
+ neck = /obj/item/storage/belt/holster
+ suit = /obj/item/clothing/suit/armor/f13/legion/vet/orator
+ head = null
+ id = /obj/item/card/id/dogtag/legveteran
+ gloves = null
+ shoes = /obj/item/clothing/shoes/roman
+ suit_store = /obj/item/gun/ballistic/automatic/pistol/n99
+ r_pocket = /obj/item/storage/bag/money/small/legofficers
+ l_pocket = /obj/item/flashlight/lantern
+ backpack_contents = list(
+ /obj/item/ammo_box/magazine/m10mm_adv/simple = 2,
+ /obj/item/reagent_containers/pill/patch/bitterdrink = 1,
+ )
+
+/datum/outfit/job/CaesarsLegion/Legionnaire/f13orator/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+ ..()
+ if(visualsOnly)
+ return
+ ADD_TRAIT(H, TRAIT_LIFEGIVER, src)
+ ADD_TRAIT(H, TRAIT_IRONFIST, src)
+ ADD_TRAIT(H, TRAIT_BIG_LEAGUES, src)
+
+
// VEXILLARIUS
/datum/job/CaesarsLegion/Legionnaire/f13vexillarius
@@ -529,6 +542,8 @@ commented out pending rework*/
supervisors = "the Veteran Decanus and Centurion"
display_order = JOB_DISPLAY_ORDER_VEXILLARIUS
outfit = /datum/outfit/job/CaesarsLegion/Legionnaire/f13vexillarius
+ access = list(ACCESS_LEGION, ACCESS_LEGION_COMMAND)
+ minimal_access = list(ACCESS_LEGION, ACCESS_LEGION_COMMAND)
exp_requirements = 720
loadout_options = list(
@@ -587,17 +602,16 @@ commented out pending rework*/
suit_store = /obj/item/gun/ballistic/automatic/smg/smg10mm
backpack_contents = list(
/obj/item/ammo_box/magazine/m10mm_adv/ext = 2,
- /obj/item/melee/onehanded/machete/gladius = 1,
+ /obj/item/melee/onehanded/machete/spatha = 1,
)
-
//EXPLORER
/datum/job/CaesarsLegion/Legionnaire/f13explorer
title = "Legion Explorer"
flag = F13EXPLORER
- total_positions = 2
- spawn_positions = 2
+ total_positions = 3
+ spawn_positions = 3
description = "Scout the area, secure key points, but do not ignore orders or wordlessly die some place. A good explorer helps his unit by taking initiative and helping the commander without needing micro-managment."
supervisors = "the Veteran Decanus and Centurion must be obeyed, and as always, respect must be given to other Decanus. You are not a officer, but you are a specialist."
display_order = JOB_DISPLAY_ORDER_EXPLORER
@@ -655,9 +669,11 @@ commented out pending rework*/
/datum/outfit/loadout/expsniper
name = "Sniper"
glasses = /obj/item/clothing/glasses/sunglasses/big
- suit_store = /obj/item/gun/ballistic/automatic/marksman/sniper
+ suit_store = /obj/item/gun/ballistic/rifle/enfield
backpack_contents = list(
- /obj/item/ammo_box/magazine/w308 = 3,
+ /obj/item/ammo_box/a762 = 3,
+ /obj/item/book/granter/trait/rifleman = 1,
+ /obj/item/attachments/scope = 1,
/obj/item/grenade/smokebomb = 1,
)
@@ -684,6 +700,7 @@ commented out pending rework*/
/datum/outfit/loadout/vetshielder, // .44 DA Revolver, Shield, Gladius, Armor plate
/datum/outfit/loadout/vetrifle, // Trail gun, Gladius
/datum/outfit/loadout/vetberserker, // Lever shotgun, Fireaxe, Bola
+ /datum/outfit/loadout/vetsmg, // Carl Gustaf
)
matchmaking_allowed = list(
/datum/matchmaking_pref/friend = list(
@@ -734,7 +751,7 @@ commented out pending rework*/
suit_store = /obj/item/gun/ballistic/rifle/repeater/trail
backpack_contents = list(
/obj/item/ammo_box/tube/m44 = 3,
- /obj/item/gun/ballistic/revolver/colt357,
+ /obj/item/gun/ballistic/revolver/colt357 = 1,
/obj/item/ammo_box/a357 = 1,
)
@@ -749,7 +766,14 @@ commented out pending rework*/
/obj/item/restraints/legcuffs/bola = 2,
)
-
+/datum/outfit/loadout/vetsmg
+ name = "Flanker"
+ suit_store = /obj/item/gun/ballistic/automatic/smg/cg45
+ backpack_contents = list(
+ /obj/item/ammo_box/magazine/cg45 = 2,
+ /obj/item/gun/ballistic/revolver/colt357 = 1,
+ /obj/item/ammo_box/a357 = 1,
+ )
// PRIME
/datum/job/CaesarsLegion/Legionnaire/f13legionary
@@ -901,48 +925,39 @@ commented out pending rework*/
////Support Roles ////
//////////////////////
-// SLAVEMASTER Kind off duty, camp defender, making sure slaves and prisoners are in order.
+// Immunes are mostly an off-duty role meant to attend to the camp itself and the slaves or prisoners within.
-/datum/job/CaesarsLegion/Legionnaire/f13slavemaster
- title = "Legion Slavemaster"
- flag = F13SLAVEMASTER
- total_positions = 1
+/datum/job/CaesarsLegion/Legionnaire/f13immune
+ title = "Legion Immune"
+ flag = F13IMMUNE
+ total_positions = 5
spawn_positions = 1
- description = " The Slavemaster is a legionnaire temporarily assigned to keeping slaves and prisoners in check."
+ description = " An Immune is a legionnaire temporarily assigned to keeping the camp in order, according to their tasking on any given week."
supervisors = "the Centurion."
- display_order = JOB_DISPLAY_ORDER_SLAVEMASTER
- outfit = /datum/outfit/job/CaesarsLegion/Legionnaire/f13slavemaster
+ display_order = JOB_DISPLAY_ORDER_IMMUNE
+ outfit = /datum/outfit/job/CaesarsLegion/Legionnaire/f13immune
exp_requirements = 300
-/datum/outfit/job/CaesarsLegion/Legionnaire/f13slavemaster
- name = "Slavemaster"
- jobtype = /datum/job/CaesarsLegion/Legionnaire/f13slavemaster
- id = /obj/item/card/id/dogtag/legslavemaster
+/datum/outfit/job/CaesarsLegion/Legionnaire/f13immune
+ name = "Immune"
+ jobtype = /datum/job/CaesarsLegion/Legionnaire/f13immune
+ id = /obj/item/card/id/dogtag/legimmune
mask = /obj/item/clothing/mask/bandana/legion/camp
uniform = /obj/item/clothing/under/f13/legskirt
- suit = /obj/item/clothing/suit/armor/f13/legion/prime/slavemaster
- head = /obj/item/clothing/head/helmet/f13/legion/prime/slavemaster
glasses = /obj/item/clothing/glasses/sunglasses
- shoes = /obj/item/clothing/shoes/roman
- r_pocket = /obj/item/restraints/handcuffs
+ shoes = /obj/item/clothing/shoes/f13/military/leather
l_pocket = /obj/item/flashlight/lantern
suit_store = /obj/item/gun/ballistic/revolver/caravan_shotgun
backpack_contents = list(
/obj/item/storage/bag/money/small/legenlisted = 1,
- /obj/item/melee/onehanded/machete = 1,
- /obj/item/ammo_box/shotgun/bean = 1,
- /obj/item/melee/onehanded/slavewhip = 1,
- /obj/item/razor = 1,
- /obj/item/restraints/legcuffs/bola = 1,
- /obj/item/electropack/shockcollar/explosive = 1,
- /obj/item/warpaint_bowl
+ /obj/item/melee/onehanded/machete/forgedmachete = 1,
+ /obj/item/reagent_containers/pill/patch/healingpowder = 2
)
-/datum/outfit/job/CaesarsLegion/Legionnaire/f13slavemaster/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+/datum/outfit/job/CaesarsLegion/Legionnaire/f13immune/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
if(visualsOnly)
return
- ADD_TRAIT(H, TRAIT_BIG_LEAGUES, src)
ADD_TRAIT(H, TRAIT_MARS_TEACH, src)
// FORGE MASTER
@@ -950,8 +965,8 @@ commented out pending rework*/
/datum/job/CaesarsLegion/Legionnaire/f13campfollower // Chainsaw, Extra materials, Blueprints
title = "Legion Forgemaster"
flag = F13CAMPFOLLOWER
- total_positions = 1
- spawn_positions = 1
+ total_positions = 2
+ spawn_positions = 2
description = "The Forgemaster makes weapons of all sorts and upgrades them, keeping order in the Forge and makes sure the camp is defended."
supervisors = "the Centurion."
display_order = JOB_DISPLAY_ORDER_CAMPFOLLOWER
@@ -992,16 +1007,13 @@ commented out pending rework*/
H.mind.teach_crafting_recipe(/datum/crafting_recipe/lever_action)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/grease_gun)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/brush)
- H.mind.teach_crafting_recipe(/datum/crafting_recipe/colt6520)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/huntingshotgun)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/legionlance)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/concussion)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/strongrocket)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/empgrenade)
- H.mind.teach_crafting_recipe(/datum/crafting_recipe/tribalwar/xbow)
- H.mind.teach_crafting_recipe(/datum/crafting_recipe/tribalwar/cheaparrow)
-
-
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/steeltower)
+
// AUXILIA - Civilians with special training. Can sow new uniforms for soldiers who lost theirs, and are loyal so they would never abuse this.
@@ -1019,6 +1031,7 @@ commented out pending rework*/
loadout_options = list(
/datum/outfit/loadout/auxassist, // Keep track of the money, handle trading beneath the warriors
/datum/outfit/loadout/auxmedicus, // Do surgery, medical tasks.
+ /datum/outfit/loadout/auxopifex, // Build defenses, craft necessary items
)
matchmaking_allowed = list(
@@ -1084,6 +1097,24 @@ commented out pending rework*/
/obj/item/clothing/under/f13/legauxilia = 1,
)
+/datum/outfit/loadout/auxopifex
+ name = "Opifex (Artisan)"
+ neck = /obj/item/clothing/neck/apron/labor/forge
+ gloves = /obj/item/clothing/gloves/legion/forgemaster
+ belt = /obj/item/storage/belt
+ glasses = /obj/item/clothing/glasses/welding
+ shoes = /obj/item/clothing/shoes/f13/military/plated
+ r_pocket = /obj/item/flashlight/lantern
+ backpack_contents = list(
+ /obj/item/storage/bag/money/small/legenlisted = 1,
+ /obj/item/stack/sheet/metal/twenty = 2,
+ /obj/item/stack/sheet/mineral/wood/twenty = 1,
+ /obj/item/stack/sheet/leather/twenty = 1,
+ /obj/item/stack/sheet/cloth/thirty = 1,
+ /obj/item/stack/sheet/prewar/twenty = 1,
+ /obj/item/weldingtool = 1,
+ /obj/item/book/granter/trait/explosives = 1
+ )
// LEGION SLAVES - Servant cook, and assist with medical, low surgery. Worker farm and mine.
// Both get Mars teachings to help out when normal work is done.
diff --git a/code/modules/jobs/job_types/ncr.dm b/code/modules/jobs/job_types/ncr.dm
index 1c952723f6..53c2705b5b 100644
--- a/code/modules/jobs/job_types/ncr.dm
+++ b/code/modules/jobs/job_types/ncr.dm
@@ -10,7 +10,7 @@ Money Commanding Officer (LT and CAP) - "small" money bag
Officers and Rangers - /obj/item/storage/bag/money/small/ncrofficers
Rest - /obj/item/storage/bag/money/small/ncrenlisted
Sidearm Officers & a few specialists - 9mm pistol
-Weapons Service Rifle, Rockwell, 9mm pistol, all good.
+Weapons Service Rifle, Grease Gun, 9mm pistol, all good.
Don't use Greaseguns, Lever shotguns, Police shotguns, Berettas, Hunting knives
*/
@@ -87,11 +87,11 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
uniform = /obj/item/clothing/under/f13/ncr/ncr_officer
shoes = /obj/item/clothing/shoes/f13/military/ncr_officer_boots
accessory = /obj/item/clothing/accessory/ncr
- head = /obj/item/clothing/head/helmet/f13/power_armor/t45d/sierra
+ head = /obj/item/clothing/head/helmet/f13/power_armor/t45d
neck = /obj/item/storage/belt/holster/legholster
glasses = /obj/item/clothing/glasses/sunglasses/big
gloves = /obj/item/clothing/gloves/f13/leather
- suit = /obj/item/clothing/suit/armor/f13/power_armor/t45d/sierra
+ suit = /obj/item/clothing/suit/armor/f13/power_armor/t45d
r_pocket = /obj/item/binoculars
suit_store = /obj/item/gun/ballistic/automatic/pistol/deagle
backpack_contents = list(
@@ -136,7 +136,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
backpack_contents = list(
/obj/item/ammo_box/magazine/m44 = 2,
/obj/item/storage/bag/money/small/ncrenlisted = 1,
- /obj/item/storage/survivalkit_aid = 1,
+ /obj/item/storage/survivalkit/aid = 1,
)
@@ -262,7 +262,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
backpack_contents = list(
/obj/item/melee/onehanded/knife/bayonet = 1, \
/obj/item/gun/ballistic/automatic/pistol/ninemil = 1, \
- /obj/item/ammo_box/magazine/m9mm = 2, \
+ /obj/item/ammo_box/magazine/m9mmds = 2, \
/obj/item/storage/bag/money/small/ncrofficers = 1,
/obj/item/ammo_box/magazine/garand308 = 1,
)
@@ -316,7 +316,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
suit = /obj/item/clothing/suit/armor/f13/ncrarmor/mantle/reinforced
neck = /obj/item/storage/belt/holster/legholster
backpack_contents = list(
- /obj/item/storage/survivalkit_aid = 1,
+ /obj/item/storage/survivalkit/aid = 1,
/obj/item/storage/bag/money/small/ncrofficers = 1,
)
@@ -329,7 +329,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
/obj/item/storage/box/ration/menu_two = 1,
/obj/item/melee/onehanded/knife/bowie = 1,
/obj/item/gun/ballistic/automatic/pistol/ninemil = 1,
- /obj/item/ammo_box/magazine/m9mm = 3,
+ /obj/item/ammo_box/magazine/m9mmds = 3,
/obj/item/flashlight/seclite = 1,
)
@@ -340,7 +340,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
backpack_contents = list(
/obj/item/ammo_box/magazine/m10mm_adv/ext = 2,
/obj/item/gun/ballistic/automatic/pistol/ninemil = 1,
- /obj/item/ammo_box/magazine/m9mm = 3,
+ /obj/item/ammo_box/magazine/m9mmds = 3,
/obj/item/storage/box/ration/menu_eight = 1,
/obj/item/attachments/scope = 1,
/obj/item/book/granter/trait/trekking = 1,
@@ -356,7 +356,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
/obj/item/grenade/smokebomb = 2,
/obj/item/melee/onehanded/knife/bayonet = 1,
/obj/item/gun/ballistic/automatic/pistol/ninemil = 1,
- /obj/item/ammo_box/magazine/m9mm = 3,
+ /obj/item/ammo_box/magazine/m9mmds = 3,
)
/datum/job/ncr/f13representative
@@ -396,7 +396,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
/obj/item/gun/ballistic/revolver/revolver45 = 1,
/obj/item/ammo_box/c45rev = 2,
/obj/item/storage/bag/money/small/ncr = 2,
- /obj/item/storage/survivalkit_aid = 1
+ /obj/item/storage/survivalkit/aid = 1
)
/datum/outfit/loadout/repbrahminbaron
@@ -454,6 +454,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
/datum/outfit/loadout/vrclassic, // AMR, Sequoia
/datum/outfit/loadout/vrlite, // Brush Gun, Sequoia
/datum/outfit/loadout/vrcqc, // 2 x .45 Long colt revolvers
+ /datum/outfit/loadout/vrshotgunner //Riot shotty, Sequoia
)
/datum/outfit/job/ncr/f13vetranger/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
@@ -481,7 +482,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
r_pocket = /obj/item/binoculars
backpack_contents = list(
/obj/item/melee/onehanded/knife/bowie = 1,
- /obj/item/storage/survivalkit_aid_adv = 1,
+ /obj/item/storage/survivalkit/aid/adv = 1,
/obj/item/storage/bag/money/small/ncrofficers = 1,
)
@@ -504,6 +505,16 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
/obj/item/ammo_box/c4570 = 1,
)
+/datum/outfit/loadout/vrshotgunner
+ name = "Veteran Ranger Shotgunner"
+ suit_store = /obj/item/gun/ballistic/automatic/shotgun/riot
+ backpack_contents = list(
+ /obj/item/ammo_box/shotgun/buck = 2,
+ /obj/item/ammo_box/shotgun/slug = 1,
+ /obj/item/gun/ballistic/revolver/sequoia = 1,
+ /obj/item/ammo_box/c4570 = 1,
+ )
+
/datum/outfit/loadout/vrcqc
name = "Gunslinger"
mask = /obj/item/clothing/mask/cigarette/cigar/havana
@@ -520,8 +531,8 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
/datum/job/ncr/f13ranger
title = "NCR Ranger"
flag = F13RANGER
- total_positions = 2
- spawn_positions = 2
+ total_positions = 3
+ spawn_positions = 3
description = "As an NCR Ranger, you are the premier special forces unit of the NCR. You are the forward observations and support the Army in it's campaigns, as well as continuing the tradition of stopping slavery in it's tracks."
supervisors = "Veteran Ranger"
selection_color = "#fff5cc"
@@ -574,7 +585,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
suit_store = /obj/item/gun/ballistic/automatic/marksman/sniper
backpack_contents = list(
/obj/item/ammo_box/magazine/w308 = 3,
- /obj/item/storage/survivalkit_aid = 1,
+ /obj/item/storage/survivalkit/aid = 1,
/obj/item/gun/ballistic/revolver/revolver45 = 1,
/obj/item/ammo_box/c45rev = 2,
)
@@ -588,7 +599,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
backpack_contents = list(
/obj/item/ammo_box/tube/m44 = 3,
/obj/item/melee/classic_baton/telescopic = 1,
- /obj/item/storage/survivalkit_aid = 1,
+ /obj/item/storage/survivalkit/aid = 1,
/obj/item/attachments/scope = 1,
/obj/item/gun/ballistic/revolver/colt357 = 2,
/obj/item/ammo_box/a357=4,
@@ -604,7 +615,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
backpack_contents = list(
/obj/item/ammo_box/magazine/m556/rifle/assault = 1,
/obj/item/clothing/head/helmet/f13/combat/ncr_patrol = 1,
- /obj/item/storage/survivalkit_aid = 1,
+ /obj/item/storage/survivalkit/aid = 1,
/obj/item/attachments/scope = 1,
/obj/item/gun/ballistic/revolver/revolver44 = 1,
/obj/item/ammo_box/m44 = 2,
@@ -621,7 +632,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
/obj/item/ammo_box/shotgun/buck = 1,
/obj/item/ammo_box/shotgun/slug = 1,
/obj/item/clothing/head/helmet/f13/combat/ncr_patrol = 1,
- /obj/item/storage/survivalkit_aid = 1,
+ /obj/item/storage/survivalkit/aid = 1,
/obj/item/gun/ballistic/revolver/m29/snub = 1,
/obj/item/ammo_box/m44box = 1,
)
@@ -664,8 +675,8 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
suit = /obj/item/clothing/suit/armor/f13/power_armor/t45b/ncr
backpack_contents = list(
/obj/item/gun/ballistic/automatic/pistol/ninemil = 1,
- /obj/item/storage/survivalkit_aid = 1,
- /obj/item/ammo_box/magazine/m9mm = 2,
+ /obj/item/storage/survivalkit/aid = 1,
+ /obj/item/ammo_box/magazine/m9mmds = 2,
/obj/item/storage/bag/money/small/ncrenlisted = 1,
)
@@ -690,8 +701,8 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
/datum/job/ncr/f13combatengineer
title = "NCR Combat Engineer"
flag = F13COMBATENGINEER
- total_positions = 1
- spawn_positions = 1
+ total_positions = 2
+ spawn_positions = 2
description = "You are a senior enlisted trooper with an engineering skill set. You work closely with your squad, taking orders from the officers. You have the authority to command troopers if there are no non-commissioned officers present."
supervisors = "Corporals and Above"
access = list(ACCESS_NCR, ACCESS_NCR_ARMORY)
@@ -701,7 +712,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
loadout_options = list( // ALL: Trench tool, Limited blueprints
/datum/outfit/loadout/combatengineerbuilder, // M1/n carbine, X4 explosive, Extra materials
- /datum/outfit/loadout/combatengineertrapper, // Rockwell SMG, Minelaying, Explosive Crafting
+ /datum/outfit/loadout/combatengineertrapper, // Grease Gun, Minelaying, Explosive Crafting
/datum/outfit/loadout/combatengineerflamethrower, // Flamer, M1/n carbine
)
@@ -743,7 +754,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
belt = null
backpack_contents = list(
/obj/item/shovel/trench = 1,
- /obj/item/storage/survivalkit_aid = 1,
+ /obj/item/storage/survivalkit/aid = 1,
/obj/item/storage/bag/money/small/ncrenlisted = 1,
)
@@ -764,9 +775,9 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
name = "Minelayer"
head = /obj/item/clothing/head/f13/ncr
belt = /obj/item/storage/belt/military/assault/ncr/engineer
- suit_store = /obj/item/gun/ballistic/automatic/smg/rockwell
+ suit_store = /obj/item/gun/ballistic/automatic/smg/greasegun
backpack_contents = list(
- /obj/item/ammo_box/magazine/uzim9mm/rockwell = 2,
+ /obj/item/ammo_box/magazine/greasegun = 2,
/obj/item/book/granter/crafting_recipe/blueprint/trapper = 1,
/obj/item/book/granter/trait/explosives = 1
)
@@ -805,14 +816,14 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
accessory = /obj/item/clothing/accessory/armband/black
glasses = /obj/item/clothing/glasses/sunglasses/big
head = /obj/item/clothing/head/f13/ncr/steelpot_mp
- suit = /obj/item/clothing/suit/armor/f13/ncrarmor
+ suit = /obj/item/clothing/suit/armor/f13/ncrarmor/mantle/reinforced
gloves = /obj/item/clothing/gloves/f13/leather/fingerless
backpack = /obj/item/storage/backpack/satchel/trekker
suit_store = /obj/item/melee/classic_baton/militarypolice
backpack_contents = list(
/obj/item/gun/ballistic/automatic/pistol/m1911 = 1,
/obj/item/ammo_box/magazine/m45 = 3,
- /obj/item/storage/survivalkit_aid = 1,
+ /obj/item/storage/survivalkit/aid = 1,
/obj/item/storage/bag/money/small/ncrenlisted = 1,
)
@@ -828,8 +839,8 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
/datum/job/ncr/f13combatmedic
title = "NCR Combat Medic"
flag = F13COMBATMEDIC
- total_positions = 1
- spawn_positions = 1
+ total_positions = 2
+ spawn_positions = 2
description = "You are a senior enlisted with a medical skill set. You work closely with your squad, taking orders from your officers. You have the authority to command troopers if there are no non-commissioned officers present."
supervisors = "Corporals and Above"
selection_color = "#fff5cc"
@@ -858,7 +869,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
backpack_contents = list(
/obj/item/ammo_box/magazine/m10mm_adv/simple = 2,
/obj/item/melee/onehanded/knife/survival = 1,
- /obj/item/storage/survivalkit_aid_adv = 1,
+ /obj/item/storage/survivalkit/aid/adv = 1,
/obj/item/storage/bag/money/small/ncrenlisted = 1,
/obj/item/storage/firstaid/regular = 1,
)
@@ -911,7 +922,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
backpack_contents = list(
/obj/item/melee/onehanded/knife/bayonet = 1,
/obj/item/storage/bag/money/small/ncrenlisted = 1,
- /obj/item/storage/survivalkit_aid = 1,
+ /obj/item/storage/survivalkit/aid = 1,
)
/datum/outfit/loadout/corporaldesignatedmarksman
@@ -924,7 +935,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
/obj/item/attachments/scope = 1,
/obj/item/ammo_box/a762 = 4,
/obj/item/gun/ballistic/automatic/pistol/ninemil = 1,
- /obj/item/ammo_box/magazine/m9mm = 1,
+ /obj/item/ammo_box/magazine/m9mmds = 1,
/obj/item/storage/box/ration/menu_two = 1,
)
@@ -1046,8 +1057,8 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
/obj/item/gun/ballistic/automatic/pistol/m1911/custom = 1,
/obj/item/ammo_box/magazine/m45 = 2,
/obj/item/melee/classic_baton/telescopic = 1,
- /obj/item/storage/survivalkit_aid = 1,
- /obj/item/storage/survivalkit_aid_adv = 1,
+ /obj/item/storage/survivalkit/aid = 1,
+ /obj/item/storage/survivalkit/aid/adv = 1,
/obj/item/storage/bag/money/small/ncrofficers = 1,
/obj/item/storage/firstaid/regular = 1,
)
@@ -1102,9 +1113,10 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
H.mind.teach_crafting_recipe(/datum/crafting_recipe/marksmancarbine)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/servicerifle)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/scoutcarbine)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/plasmasniper)
ADD_TRAIT(H, TRAIT_TECHNOPHREAK, src)
-/datum/outfit/job/ncr/f13logisticsofficer // Rockwell, 9mm sidearm, Survival knife, C-4 bomb, Extra materials, Full blueprints
+/datum/outfit/job/ncr/f13logisticsofficer // Grease Gun, 9mm sidearm, Survival knife, C-4 bomb, Extra materials, Full blueprints
name = "NCR Logistics Officer"
jobtype = /datum/job/ncr/f13logisticsofficer
id = /obj/item/card/id/dogtag/ncrlieutenant
@@ -1116,14 +1128,14 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
glasses = /obj/item/clothing/glasses/welding
belt = /obj/item/storage/belt/military/assault/ncr/engineer
gloves = /obj/item/clothing/gloves/color/yellow
- suit_store = /obj/item/gun/ballistic/automatic/smg/rockwell
+ suit_store = /obj/item/gun/ballistic/automatic/smg/greasegun
backpack_contents = list(
- /obj/item/ammo_box/magazine/uzim9mm/rockwell = 2,
+ /obj/item/ammo_box/magazine/greasegun = 2,
/obj/item/gun/ballistic/automatic/pistol/ninemil = 1,
/obj/item/ammo_box/magazine/m9mm = 2,
/obj/item/grenade/plastic/c4 = 1,
/obj/item/melee/onehanded/knife/survival = 1,
- /obj/item/storage/survivalkit_aid = 1,
+ /obj/item/storage/survivalkit/aid = 1,
/obj/item/storage/bag/money/small/ncrofficers = 1,
/obj/item/stack/sheet/metal/twenty = 2,
/obj/item/stack/sheet/glass/ten = 2,
@@ -1209,7 +1221,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
neck = /obj/item/storage/belt/holster/legholster
backpack_contents = list(
/obj/item/gun/ballistic/automatic/pistol/ninemil = 1,
- /obj/item/ammo_box/magazine/m9mm = 2,
+ /obj/item/ammo_box/magazine/m9mmds = 2,
/obj/item/melee/onehanded/knife/survival = 1,
/obj/item/storage/firstaid/regular = 1,
/obj/item/book/granter/trait/chemistry = 1,
@@ -1224,7 +1236,7 @@ Weapons Service Rifle, Rockwell, 9mm pistol, all good.
belt = /obj/item/storage/belt/military/NCR_Bandolier
backpack_contents = list(
/obj/item/gun/ballistic/automatic/pistol/ninemil = 1,
- /obj/item/ammo_box/magazine/m9mm = 2,
+ /obj/item/ammo_box/magazine/m9mmds = 2,
/obj/item/melee/onehanded/knife/bayonet = 1,
/obj/item/reagent_containers/food/snacks/cheesyburrito = 2,
/obj/item/reagent_containers/food/drinks/bottle/f13nukacola = 1,
diff --git a/code/modules/jobs/job_types/oasis.dm b/code/modules/jobs/job_types/oasis.dm
index 6b9ce2660f..78231e9190 100644
--- a/code/modules/jobs/job_types/oasis.dm
+++ b/code/modules/jobs/job_types/oasis.dm
@@ -1,6 +1,6 @@
/*
Town access doors
-Sheriff/Deputy, Gatehouse etc: 62 ACCESS_GATEWAY
+Chief/Officer, Gatehouse etc: 62 ACCESS_GATEWAY
General access: 25 ACCESS_BAR
Clinic surgery/storage: 68 ACCESS_CLONING
Shopkeeper: 34 ACCESS_CARGO_BOT
@@ -66,14 +66,12 @@ Mayor
satchel = /obj/item/storage/backpack/satchel/explorer
l_pocket = /obj/item/storage/bag/money/small/settler
r_pocket = /obj/item/flashlight/seclite
- belt = /obj/item/gun/ballistic/automatic/wt550
shoes = /obj/item/clothing/shoes/f13/tan
uniform = /obj/item/clothing/under/f13/gentlesuit
head = /obj/item/clothing/head/f13/town/big
backpack_contents = list(
/obj/item/storage/box/citizenship_permits = 1, \
/obj/item/pen/fountain/captain = 1,
- /obj/item/ammo_box/magazine/m473/small = 2,
)
@@ -200,7 +198,7 @@ Mayor
/*--------------------------------------------------------------*/
/datum/job/oasis/f13sheriff
- title = "Sheriff"
+ title = "Chief"
flag = F13SHERIFF
department_flag = DEP_OASIS
head_announce = list("Security")
@@ -230,47 +228,41 @@ Mayor
)
/datum/outfit/job/den/f13sheriff
- name = "Sheriff"
+ name = "Chief"
jobtype = /datum/job/oasis/f13sheriff
id = /obj/item/card/id/dogtag/sheriff
belt = null
backpack = /obj/item/storage/backpack/satchel/explorer
satchel = /obj/item/storage/backpack/satchel/explorer
-
- ears = /obj/item/radio/headset/headset_town
- uniform = /obj/item/clothing/under/f13/sheriff
- belt = /obj/item/storage/belt/military/army
- shoes = /obj/item/clothing/shoes/f13/cowboy
- glasses = /obj/item/clothing/glasses/sunglasses
- l_pocket = /obj/item/storage/bag/money/small/den
+ ears = /obj/item/radio/headset/headset_town
+ uniform = /obj/item/clothing/under/f13/police/formal
+ suit = /obj/item/clothing/suit/armor/f13/town/chief
+ head = /obj/item/clothing/head/f13/town/chief
+ neck = /obj/item/storage/belt/holster/legholster
+ belt = /obj/item/storage/belt/military/army
+ shoes = /obj/item/clothing/shoes/jackboots
+ glasses = /obj/item/clothing/glasses/sunglasses
+ l_pocket = /obj/item/storage/bag/money/small/den
backpack_contents = list(
/obj/item/storage/box/deputy_badges = 1,
- /obj/item/restraints/handcuffs = 1,
+ /obj/item/restraints/handcuffs = 2,
/obj/item/melee/classic_baton = 1,
/obj/item/melee/onehanded/knife/bowie = 1,
)
/datum/outfit/loadout/thelaw
name = "The Law Man"
- suit = /obj/item/clothing/suit/armor/f13/town/sheriff
- head = /obj/item/clothing/head/f13/town/sheriff
- neck = /obj/item/storage/belt/holster
- r_hand = /obj/item/gun/ballistic/rifle/repeater/brush
- belt = /obj/item/gun/ballistic/revolver/m29/peacekeeper
+ suit_store = /obj/item/gun/ballistic/rifle/repeater/brush
backpack_contents = list(
/obj/item/ammo_box/tube/c4570 = 3,
/obj/item/ammo_box/m44 = 2,
+ /obj/item/gun/ballistic/revolver/m29/peacekeeper = 1,
)
/datum/outfit/loadout/thechief
name = "The Chief"
- uniform = /obj/item/clothing/under/f13/police/formal
- suit = /obj/item/clothing/suit/armor/f13/town/chief
- head = /obj/item/clothing/head/f13/town/chief
- neck = /obj/item/storage/belt/holster/legholster
- shoes = /obj/item/clothing/shoes/jackboots
- r_hand = /obj/item/gun/energy/laser/aer9/oasis
+ suit_store = /obj/item/gun/energy/laser/aer9/oasis
backpack_contents = list(
/obj/item/stock_parts/cell/ammo/mfc = 2,
/obj/item/gun/ballistic/automatic/pistol/sig = 1,
@@ -304,11 +296,11 @@ Mayor
/*--------------------------------------------------------------*/
/datum/job/oasis/f13deputy
- title = "Deputy"
+ title = "Officer"
flag = F13DEPUTY
department_flag = DEP_OASIS
- total_positions = 4
- spawn_positions = 4
+ total_positions = 6
+ spawn_positions = 6
supervisors = "Oasis Police Department"
description = "You've passed the training and tests to join the OPD, and your loyalty to the Chief is absolute - this is your new home, your family. This oasis of civilization will not fall as long as you breathe. Protect its citizens and property, for that is your new purpose."
selection_color = "#dcba97"
@@ -317,7 +309,7 @@ Mayor
exp_requirements = 600
loadout_options = list(
- /datum/outfit/loadout/frontierjustice,
+ /datum/outfit/loadout/standardpd,
/datum/outfit/loadout/police,
/datum/outfit/loadout/swat,)
@@ -334,64 +326,61 @@ Mayor
)
/datum/outfit/job/den/f13deputy
- name = "Deputy"
+ name = "Officer"
jobtype = /datum/job/oasis/f13deputy
ears = /obj/item/radio/headset/headset_town
id = /obj/item/card/id/dogtag/deputy
backpack = /obj/item/storage/backpack/satchel/explorer
satchel = /obj/item/storage/backpack/satchel/explorer
- belt = /obj/item/storage/belt/security
+ belt = /obj/item/storage/belt/military/assault
+ suit = /obj/item/clothing/suit/armor/bulletproof
+ neck = /obj/item/storage/belt/holster/legholster
l_pocket = /obj/item/storage/bag/money/small/settler
r_pocket = /obj/item/flashlight/flare
- shoes = /obj/item/clothing/shoes/f13/explorer
- uniform = /obj/item/clothing/under/f13/cowboyb
+ shoes = /obj/item/clothing/shoes/jackboots
+ uniform = /obj/item/clothing/under/f13/police/officer
backpack_contents = list(
- /obj/item/restraints/handcuffs = 1,
+ /obj/item/restraints/handcuffs = 2,
/obj/item/melee/onehanded/knife/bowie = 1,
+ /obj/item/flashlight/seclite = 1,
)
-/datum/outfit/loadout/frontierjustice
- name = "Frontier Justice"
- suit = /obj/item/clothing/suit/armor/f13/town/deputy
- head = /obj/item/clothing/head/f13/town/deputy
- neck = /obj/item/storage/belt/holster
- r_hand = /obj/item/gun/ballistic/rifle/repeater/trail
- backpack_contents = list(
- /obj/item/ammo_box/tube/m44 = 2,
- /obj/item/ammo_box/m44 = 2,
- /obj/item/gun/ballistic/revolver/m29 = 1,
- )
-
-/datum/outfit/loadout/police
- name = "Oasis PD"
- uniform = /obj/item/clothing/under/f13/police/officer
- suit = /obj/item/clothing/suit/armor/bulletproof
+/datum/outfit/loadout/standardpd
+ name = "Standard"
head = /obj/item/clothing/head/f13/town/officer
- neck = /obj/item/storage/belt/holster/legholster
- r_hand = /obj/item/gun/ballistic/shotgun/police
- shoes = /obj/item/clothing/shoes/jackboots
+ suit_store = /obj/item/gun/ballistic/shotgun/police
backpack_contents = list(
/obj/item/ammo_box/shotgun/bean = 1,
/obj/item/ammo_box/shotgun/buck = 1,
/obj/item/ammo_box/a357 = 3,
- /obj/item/flashlight/seclite = 1,
/obj/item/gun/ballistic/revolver/police = 1,
)
+/datum/outfit/loadout/police
+ name = "Police Marksman"
+ head = /obj/item/clothing/head/f13/town/marksman
+ gloves = /obj/item/clothing/gloves/rifleman
+ suit_store = /obj/item/gun/ballistic/rifle/hunting/remington
+ backpack_contents = list(
+ /obj/item/attachments/scope = 1,
+ /obj/item/ammo_box/a762 = 3,
+ /obj/item/gun/ballistic/revolver/police = 1,
+ /obj/item/ammo_box/a357 = 3,
+ /obj/item/book/granter/trait/rifleman = 1,
+ )
+
/datum/outfit/loadout/swat
name = "S.W.A.T. Officer"
uniform = /obj/item/clothing/under/f13/police/swat
- suit = /obj/item/clothing/suit/armor/bulletproof
head = /obj/item/clothing/head/helmet/alt
- neck = /obj/item/storage/belt/holster/legholster
- l_hand = /obj/item/gun/ballistic/automatic/marksman/policerifle
- shoes = /obj/item/clothing/shoes/jackboots
+ mask = /obj/item/clothing/mask/balaclava
+ gloves = /obj/item/clothing/gloves/f13/military
+ suit_store = /obj/item/gun/ballistic/automatic/assault_carbine/policerifle
backpack_contents = list(
- /obj/item/ammo_box/magazine/m556/rifle = 2,
- /obj/item/gun/ballistic/automatic/pistol/mk23=1,
- /obj/item/ammo_box/magazine/m45exp=2,
- /obj/item/flashlight/seclite = 1,
+ /obj/item/ammo_box/magazine/m45exp= 2,
+ /obj/item/gun/ballistic/automatic/pistol/mk23 = 1,
+ /obj/item/ammo_box/magazine/m5mm = 1,
)
/datum/outfit/job/den/f13deputy/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
@@ -418,8 +407,8 @@ Mayor
title = "Farmer"
flag = F13FARMER
department_flag = DEP_OASIS
- total_positions = 4
- spawn_positions = 4
+ total_positions = 0
+ spawn_positions = 0
supervisors = "Oasis Government & Police Department"
description = "Growing up in the Oasis, you have an endless love for the sacred Oak, for nowhere in the valley is the soil as fertile, the bounty as rich. Behind the safety of the walls, you grow crops, medicines, and raise livestock. The community depends on you, you are a manifestation of the Oak’s will."
selection_color = "#dcba97"
@@ -664,8 +653,8 @@ Mayor
title = "Citizen"
flag = F13SETTLER
department_flag = DEP_OASIS
- total_positions = 8
- spawn_positions = 8
+ total_positions = 9
+ spawn_positions = 9
supervisors = "Oasis Government & Police Department"
description = "You are a citizen living in the Town of Oasis - as the name suggests, it is a somewhat safe place amidst the chaos of the continent. Treat it as such, be sure to follow the laws of the land and do not associate with those who have a tendency not to, or you are likely to face exile. Remember that Oasis is your home, DO NOT act in a manner that would threaten it's safety or other citizens."
selection_color = "#dcba97"
@@ -679,6 +668,7 @@ Mayor
/datum/outfit/loadout/outdoorsman,
/datum/outfit/loadout/militia,
/datum/outfit/loadout/singer,
+ /datum/outfit/loadout/ofarmer,
)
access = list(ACCESS_BAR)
minimal_access = list(ACCESS_BAR)
@@ -696,7 +686,6 @@ Mayor
name = "Citizen"
jobtype = /datum/job/oasis/f13settler
ears = /obj/item/radio/headset/headset_town
- belt = null
id = /obj/item/card/id/dogtag/town
ears = /obj/item/radio/headset/headset_town
uniform = /obj/item/clothing/under/f13/settler
@@ -767,6 +756,20 @@ Mayor
gloves = /obj/item/clothing/gloves/f13/leather
backpack_contents = list(/obj/item/ammo_box/a308 = 2,
)
+
+/datum/outfit/loadout/ofarmer
+ name = "Farmer"
+ belt = /obj/item/storage/belt/utility
+ shoes = /obj/item/clothing/shoes/workboots
+ suit = /obj/item/clothing/suit/overalls
+ r_hand = /obj/item/gun/ballistic/automatic/pistol/n99
+ backpack_contents = list(
+ /obj/item/cultivator = 1,
+ /obj/item/hatchet = 1,
+ /obj/item/shovel/spade = 1,
+ /obj/item/storage/bag/plants = 1,
+ /obj/item/ammo_box/magazine/m10mm_adv/simple = 2,
+ )
/*
/datum/outfit/loadout/secretary
name = "Secretary"
@@ -987,6 +990,7 @@ Mayor
H.mind.teach_crafting_recipe(/datum/crafting_recipe/thatgun)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/uzi)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/smg10mm)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/plasmasniper)
/datum/outfit/job/den/f13shopkeeper/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
diff --git a/code/modules/jobs/job_types/tribals.dm b/code/modules/jobs/job_types/tribals.dm
index a9db01088d..4abb83004a 100644
--- a/code/modules/jobs/job_types/tribals.dm
+++ b/code/modules/jobs/job_types/tribals.dm
@@ -66,7 +66,7 @@ Tribal Chief
ADD_TRAIT(H, TRAIT_BIG_LEAGUES, src)
/datum/outfit/job/tribal/f13chief
- name = "Chief"
+ name = "Tribal Chief"
jobtype = /datum/job/tribal/f13chief
head = /obj/item/clothing/head/helmet/f13/wayfarer/chief/green
uniform = /obj/item/clothing/under/f13/wayfarer
diff --git a/code/modules/jobs/job_types/vault.dm b/code/modules/jobs/job_types/vault.dm
index d596eed95d..f63a009d33 100644
--- a/code/modules/jobs/job_types/vault.dm
+++ b/code/modules/jobs/job_types/vault.dm
@@ -114,7 +114,7 @@ Head of Security
head = /obj/item/clothing/head/collectable/police/cos
belt = /obj/item/storage/belt/security
glasses = /obj/item/clothing/glasses/sunglasses
- r_hand = /obj/item/gun/ballistic/revolver/colt6520
+ r_hand = /obj/item/gun/ballistic/automatic/pistol/n99
r_pocket = /obj/item/assembly/flash/handheld
l_pocket = /obj/item/restraints/handcuffs
backpack = /obj/item/storage/backpack/security
diff --git a/code/modules/jobs/job_types/wasteland.dm b/code/modules/jobs/job_types/wasteland.dm
index 01621d3af8..f95d7db103 100644
--- a/code/modules/jobs/job_types/wasteland.dm
+++ b/code/modules/jobs/job_types/wasteland.dm
@@ -257,7 +257,7 @@
uniform = /obj/item/clothing/under/f13/khan
r_hand = /obj/item/book/granter/trait/selection
r_pocket = /obj/item/flashlight/flare
- l_pocket = /obj/item/storage/survivalkit_khan
+ l_pocket = /obj/item/storage/survivalkit/khan
gloves = /obj/item/melee/unarmed/brass/spiked
box = null
backpack_contents = list(
@@ -296,7 +296,7 @@
H.mind.teach_crafting_recipe(/datum/crafting_recipe/thatgun)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/uzi)
H.mind.teach_crafting_recipe(/datum/crafting_recipe/smg10mm)
- H.mind.teach_crafting_recipe(/datum/crafting_recipe/colt6520)
+ H.mind.teach_crafting_recipe(/datum/crafting_recipe/gate_khanate)
/datum/outfit/loadout/enforcer
name = "Enforcer"
@@ -371,7 +371,6 @@ Raider
/datum/outfit/loadout/raider_bos,
/datum/outfit/loadout/quack_doctor,
/datum/outfit/loadout/raider_mobster,
- /datum/outfit/loadout/raider_cannibal,
/datum/outfit/loadout/raider_tribal
)
@@ -379,7 +378,7 @@ Raider
/datum/outfit/job/wasteland/f13raider
name = "Outlaw"
jobtype = /datum/job/wasteland/f13raider
-
+ box = /obj/item/storage/survivalkit/outlaw
id = null
ears = null
belt = null
@@ -436,11 +435,10 @@ Raider
suit_store = pick(
/obj/item/gun/ballistic/revolver/detective, \
- /obj/item/gun/ballistic/rifle/hunting, \
- /obj/item/gun/ballistic/automatic/hobo/zipgun, \
- /obj/item/gun/ballistic/revolver/hobo/pepperbox, \
- /obj/item/gun/ballistic/revolver/caravan_shotgun, \
- /obj/item/gun/ballistic/revolver/single_shotgun)
+ /obj/item/gun/ballistic/automatic/pistol/ninemil,\
+ /obj/item/gun/ballistic/automatic/pistol/m1911, \
+ /obj/item/gun/ballistic/automatic/pistol/type17, \
+ )
/datum/outfit/job/wasteland/f13raider/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
@@ -457,11 +455,13 @@ Raider
suit = /obj/item/clothing/suit/armor/f13/raider/supafly
head = /obj/item/clothing/head/helmet/f13/raider/supafly
backpack_contents = list(
- /obj/item/gun/ballistic/automatic/autopipe = 1,
- /obj/item/ammo_box/magazine/autopipe = 3,
- /obj/item/melee/onehanded/knife/cosmic = 1,
- /obj/item/storage/box/dice = 1,
- /obj/item/storage/fancy/cigarettes/cigpack_cannabis = 1,
+ /obj/item/gun/ballistic/automatic/varmint = 1,
+ /obj/item/ammo_box/magazine/m556/rifle/assault = 1,
+ /obj/item/gun/ballistic/revolver/hobo/knucklegun = 1,
+ /obj/item/ammo_box/c45rev = 2,
+ /obj/item/attachments/scope = 1,
+ /obj/item/reagent_containers/food/drinks/bottle/f13nukacola/radioactive = 1,
+ /obj/item/grenade/smokebomb = 2,
/obj/item/book/granter/trait/trekking = 1
)
@@ -470,10 +470,10 @@ Raider
suit = /obj/item/clothing/suit/armor/f13/raider/yankee
head = /obj/item/clothing/head/helmet/f13/raider/yankee
backpack_contents = list(
- /obj/item/twohanded/fireaxe/bmprsword = 1,
+ /obj/item/shishkebabpack = 1,
/obj/item/storage/fancy/cigarettes/cigpack_cannabis=1,
/obj/item/megaphone=1,
- /obj/item/book/granter/trait/bigleagues = 1)
+ /obj/item/storage/pill_bottle/chem_tin/buffout = 1)
/datum/outfit/loadout/raider_blast
name = "Blastmaster"
@@ -493,9 +493,9 @@ Raider
suit = /obj/item/clothing/suit/armor/f13/raider/sadist
head = /obj/item/clothing/head/helmet/f13/raider/arclight
backpack_contents = list(
- /obj/item/gun/ballistic/revolver/colt357 = 1,
+ /obj/item/melee/onehanded/knife/throwing = 5,
/obj/item/clothing/mask/gas/explorer/folded=1,
- /obj/item/storage/belt/tribe_quiver = 1,
+ /obj/item/storage/belt = 1,
/obj/item/restraints/legcuffs/beartrap = 2,
/obj/item/reverse_bear_trap = 1,
/obj/item/melee/unarmed/lacerator = 1,
@@ -507,6 +507,7 @@ Raider
head = /obj/item/clothing/head/helmet/f13/fiend
backpack_contents = list(
/obj/item/gun/energy/laser/wattz/magneto = 1,
+ /obj/item/gun/energy/laser/wattz = 1,
/obj/item/stock_parts/cell/ammo/ec = 2,
/obj/item/reagent_containers/hypospray/medipen/psycho = 3,
/obj/item/reagent_containers/pill/patch/turbo = 2,
@@ -540,6 +541,7 @@ Raider
/obj/item/storage/pill_bottle/happy = 1,
/obj/item/book/granter/trait/chemistry = 1,
/obj/item/stack/sheet/mineral/silver=2,
+ /obj/item/defibrillator/primitive=1,
)
/datum/outfit/loadout/raider_ncr
@@ -550,6 +552,8 @@ Raider
backpack_contents = list(
/obj/item/gun/ballistic/automatic/service = 1,
/obj/item/ammo_box/magazine/m556/rifle=2,
+ /obj/item/melee/onehanded/knife/bayonet = 1,
+ /obj/item/storage/box/ration/ranger_breakfast = 1,
/obj/item/book/granter/crafting_recipe/blueprint/r82 = 1)
/datum/outfit/loadout/raider_legion
@@ -560,18 +564,21 @@ Raider
backpack_contents = list(
/obj/item/melee/onehanded/machete/gladius = 1,
/obj/item/storage/backpack/spearquiver = 1,
- /obj/item/gun/ballistic/automatic/smg/greasegun/worn = 1,
+ /obj/item/gun/ballistic/automatic/smg/greasegun = 1,
/obj/item/ammo_box/magazine/greasegun = 1,
/obj/item/book/granter/trait/trekking = 1
)
-
+
/datum/outfit/loadout/raider_bos
name = "Brotherhood Exile"
suit = /obj/item/clothing/suit/armor/f13/exile/bosexile
id = /obj/item/card/id/rusted/brokenholodog
backpack_contents = list(
/obj/item/gun/energy/laser/pistol=1,
- /obj/item/stock_parts/cell/ammo/ec=2)
+ /obj/item/stock_parts/cell/ammo/ec = 2,
+ /obj/item/book/granter/crafting_recipe/blueprint/aep7 = 1,
+ /obj/item/grenade/f13/frag = 2,
+ )
/datum/outfit/loadout/raider_sheriff
name = "Desperado"
@@ -579,12 +586,10 @@ Raider
uniform = /obj/item/clothing/under/syndicate/tacticool
head = /obj/item/clothing/head/f13/town/big
backpack_contents = list(
- /obj/item/gun/ballistic/revolver/colt357=1,
- /obj/item/gun/ballistic/revolver/m29/snub=1,
- /obj/item/ammo_box/a357=1,
+ /obj/item/gun/ballistic/revolver/m29/snub=2,
/obj/item/storage/belt/holster=1,
- /obj/item/ammo_box/m44=1,
- /obj/item/book/granter/trait/trekking = 1)
+ /obj/item/ammo_box/m44=3,
+ /obj/item/book/granter/trait/gunslinger = 1)
/datum/outfit/loadout/raider_smith
name = "Raider Smith"
@@ -595,50 +600,38 @@ Raider
backpack_contents = list(
/obj/item/gun/ballistic/automatic/pistol/m1911/custom = 1,
/obj/item/ammo_box/magazine/m45 = 1,
- /obj/item/melee/onehanded/machete/scrapsabre = 1,
+ /obj/item/twohanded/steelsaw = 1,
/obj/item/melee/smith/hammer = 1,
/obj/item/stack/sheet/mineral/sandstone = 50,
/obj/item/book/granter/trait/techno = 1,
+ /obj/item/book/granter/crafting_recipe/scav_one = 1,
)
/datum/outfit/loadout/raider_vault
name = "Vault Renegade"
- suit = /obj/item/clothing/suit/armor/f13/leather_jacket/combat
+ suit = /obj/item/clothing/suit/armor/vest/big
uniform = /obj/item/clothing/under/f13/exile/vault
id = /obj/item/card/id/rusted/fadedvaultid
backpack_contents = list(
- /obj/item/gun/ballistic/automatic/smg/smg10mm/worn = 1,
+ /obj/item/gun/ballistic/automatic/smg/smg10mm = 1,
/obj/item/ammo_box/magazine/m10mm_adv/ext = 1,
/obj/item/reagent_containers/hypospray/medipen/stimpak/imitation = 2,
)
-/datum/outfit/loadout/raider_cannibal
- name = "Humanitarian"
- suit = /obj/item/clothing/suit/armor/bone
- head = /obj/item/clothing/head/helmet/skull
- backpack_contents = list(
- /obj/item/twohanded/fireaxe/boneaxe = 1,
- /obj/item/restraints/legcuffs/bola = 2,
- /obj/item/stack/sheet/sinew = 8,
- /obj/item/stack/sheet/animalhide/human = 10,
- /obj/item/reagent_containers/food/snacks/soup/longpork_stew = 1,
- /obj/item/gun/ballistic/automatic/pistol/n99 = 1,
- /obj/item/ammo_box/magazine/m10mm_adv = 2,
- )
-
/datum/outfit/loadout/raider_tribal
name = "Tribal Outcast"
uniform = /obj/item/clothing/under/f13/exile/tribal
suit = /obj/item/clothing/suit/hooded/tribaloutcast
- suit_store = /obj/item/melee/onehanded/club/warclub
+ suit_store = /obj/item/twohanded/spear/bonespear
shoes = /obj/item/clothing/shoes/sandal
belt = /obj/item/storage/backpack/spearquiver
- box = /obj/item/storage/survivalkit_tribal
- id = /obj/item/card/id/outcasttattoo
+ box = /obj/item/storage/survivalkit/tribal
back = /obj/item/storage/backpack/satchel/explorer
backpack_contents = list(
/obj/item/clothing/mask/cigarette/pipe = 1,
/obj/item/melee/onehanded/knife/bone = 1,
+ /obj/item/radio/tribal = 1,
+ /obj/item/book/granter/trait/bigleagues = 1,
)
/datum/outfit/loadout/raider_mobster
@@ -653,8 +646,9 @@ Raider
backpack_contents = list(
/obj/item/gun/ballistic/shotgun/police = 1,
/obj/item/melee/onehanded/knife/hunting = 1,
- /obj/item/gun/ballistic/automatic/smg/rockwell = 1,
- /obj/item/ammo_box/magazine/uzim9mm/rockwell = 2,
+ /obj/item/gun/ballistic/automatic/smg/greasegun = 1,
+ /obj/item/melee/onehanded/knife/switchblade = 1,
+ /obj/item/ammo_box/magazine/greasegun = 2,
/obj/item/card/id/dogtag/town/mafia=1,
)
@@ -745,7 +739,7 @@ Raider
gloves = /obj/item/clothing/gloves/f13/blacksmith
head = /obj/item/clothing/head/welding
r_hand = /obj/item/weldingtool/largetank
- backpack_contents = list(/obj/item/gun/ballistic/automatic/pistol/m1911/compact=1)
+ backpack_contents = list(/obj/item/gun/ballistic/automatic/pistol/m1911=1)
/datum/outfit/loadout/scavenger
name = "Scavenger"
@@ -756,7 +750,7 @@ Raider
backpack_contents = list(/obj/item/mining_scanner=1,
/obj/item/metaldetector=1,
/obj/item/shovel=1,
- /obj/item/gun/ballistic/automatic/pistol/m1911/compact=1)
+ /obj/item/gun/ballistic/automatic/pistol/m1911=1)
/datum/outfit/loadout/settler
name = "Settler"
@@ -788,7 +782,7 @@ Raider
/obj/item/smelling_salts=1,
/obj/item/healthanalyzer=1,
/obj/item/stack/sheet/mineral/silver=1,
- /obj/item/gun/ballistic/automatic/pistol/m1911/compact=1,
+ /obj/item/gun/ballistic/automatic/pistol/m1911=1,
/obj/item/lighter=1,
/obj/item/screwdriver=1,
/obj/item/wirecutters=1,
@@ -805,7 +799,7 @@ Raider
glasses = /obj/item/clothing/glasses/f13/biker
l_hand = /obj/item/gun/ballistic/revolver/caravan_shotgun
backpack_contents = list(/obj/item/storage/box/vendingmachine=1,
- /obj/item/gun/ballistic/automatic/pistol/m1911/compact=1)
+ /obj/item/gun/ballistic/automatic/pistol/m1911=1)
//end new
@@ -817,7 +811,7 @@ Raider
backpack_contents = list(
/obj/item/gun/ballistic/automatic/pistol/n99=1,
/obj/item/ammo_box/magazine/m10mm_adv/simple=2,
- /obj/item/pda)
+ /obj/item/pda=1,)
/datum/outfit/loadout/warrior
name = "Wasteland Warrior"
@@ -1422,7 +1416,8 @@ datum/job/wasteland/f13dendoctor
/datum/outfit/loadout/eightiesshaman,
/datum/outfit/loadout/rustwalkersscipher,
/datum/outfit/loadout/rustwalkersscrapper,
- /datum/outfit/loadout/rustwalkersshaman
+ /datum/outfit/loadout/rustwalkersshaman,
+ /datum/outfit/loadout/bonedancerexile
)
/datum/outfit/job/wasteland/f13tribal/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
@@ -1433,10 +1428,43 @@ datum/job/wasteland/f13dendoctor
ADD_TRAIT(H, TRAIT_GENERIC, src)
ADD_TRAIT(H, TRAIT_TRAPPER, src)
ADD_TRAIT(H, TRAIT_MACHINE_SPIRITS, src)
+ ADD_TRAIT(H, TRAIT_AUTO_DRAW, src)
+ ADD_TRAIT(H, TRAIT_HARD_YARDS, src)
+ H.grant_language(/datum/language/tribal)
+ var/list/recipes = list(
+ /datum/crafting_recipe/tribal_pa,
+ /datum/crafting_recipe/tribal_pa_helmet,
+ /datum/crafting_recipe/tribal_combat_armor,
+ /datum/crafting_recipe/tribal_combat_armor_helmet,
+ /datum/crafting_recipe/tribal_r_combat_armor,
+ /datum/crafting_recipe/tribal_r_combat_armor_helmet,
+ /datum/crafting_recipe/tribalwar/chitinarmor,
+ /datum/crafting_recipe/tribalwar/deathclawspear,
+ /datum/crafting_recipe/tribalwar/lightcloak,
+ /datum/crafting_recipe/tribalwar/legendaryclawcloak,
+ /datum/crafting_recipe/warpaint,
+ /datum/crafting_recipe/tribalradio,
+ /datum/crafting_recipe/tribalwar/goliathcloak,
+ /datum/crafting_recipe/tribalwar/bonebow,
+ /datum/crafting_recipe/tribalwar/tribe_bow,
+ /datum/crafting_recipe/tribalwar/sturdybow,
+ /datum/crafting_recipe/tribalwar/warclub,
+ /datum/crafting_recipe/tribalwar/silverbow,
+ /datum/crafting_recipe/tribalwar/arrowbone,
+ /datum/crafting_recipe/tribalwar/bonespear,
+ /datum/crafting_recipe/tribalwar/bonecodpiece,
+ /datum/crafting_recipe/tribalwar/bracers,
+ /datum/crafting_recipe/tribal/bonetalisman,
+ /datum/crafting_recipe/tribal/bonebag,
+ /datum/crafting_recipe/tribalwar/spearquiver
+ )
+ for(var/datum/crafting_recipe/recipe as() in recipes)
+ H.mind.teach_crafting_recipe(recipe)
H.grant_language(/datum/language/tribal)
H.social_faction = FACTION_WASTELAND
add_verb(H, /mob/living/proc/create_tribe)
+
/datum/outfit/job/wasteland/f13tribal
name = "Tribal"
jobtype = /datum/job/wasteland/f13tribal
@@ -1445,7 +1473,7 @@ datum/job/wasteland/f13dendoctor
ears = null
belt = /obj/item/melee/onehanded/knife/bone
uniform = /obj/item/clothing/under/f13/settler
- box = /obj/item/storage/survivalkit_tribal
+ box = /obj/item/storage/survivalkit/tribal
shoes = /obj/item/clothing/shoes/sandal
gloves = /obj/item/clothing/gloves/f13/handwraps
r_hand = /obj/item/book/granter/trait/selection/tribal
@@ -1650,7 +1678,7 @@ datum/job/wasteland/f13dendoctor
head = /obj/item/clothing/head/helmet/f13/wayfarer/antler
neck = /obj/item/clothing/neck/mantle/brown
backpack_contents = list(
- /obj/item/gun/ballistic/automatic/sturdybow = 1,
+ /obj/item/gun/ballistic/bow/sturdy = 1,
/obj/item/storage/belt/tribe_quiver/bone = 1,
/obj/item/storage/belt/tribe_quiver = 1,
/obj/item/binoculars = 1,
@@ -1708,37 +1736,17 @@ datum/job/wasteland/f13dendoctor
/obj/item/reagent_containers/pill/patch/healpoultice = 2,
/obj/item/storage/belt/utility/full = 1,
/obj/item/book/granter/crafting_recipe/tribal/rustwalkers = 1
-)
-/datum/outfit/job/wasteland/f13tribal/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
- ..()
- if(visualsOnly)
- return
- ADD_TRAIT(H, TRAIT_GENERIC, src)
- ADD_TRAIT(H, TRAIT_HARD_YARDS, src)
- H.grant_language(/datum/language/tribal)
- var/list/recipes = list(
- /datum/crafting_recipe/punji_sticks,
- /datum/crafting_recipe/tribalwar/chitinarmor,
- /datum/crafting_recipe/tribalwar/deathclawspear,
- /datum/crafting_recipe/tribalwar/lightcloak,
- /datum/crafting_recipe/tribalwar/legendaryclawcloak,
- /datum/crafting_recipe/warpaint,
- /datum/crafting_recipe/tribalradio,
- /datum/crafting_recipe/tribalwar/goliathcloak,
- /datum/crafting_recipe/tribalwar/bonebow,
- /datum/crafting_recipe/tribalwar/tribe_bow,
- /datum/crafting_recipe/tribalwar/sturdybow,
- /datum/crafting_recipe/tribalwar/warclub,
- /datum/crafting_recipe/tribalwar/silverbow,
- /datum/crafting_recipe/tribalwar/arrowbone,
- /datum/crafting_recipe/tribalwar/bonespear,
- /datum/crafting_recipe/tribalwar/bonecodpiece,
- /datum/crafting_recipe/tribalwar/bracers,
- /datum/crafting_recipe/tribal/bonetalisman,
- /datum/crafting_recipe/tribal/bonebag,
- /datum/crafting_recipe/tribalwar/spearquiver
)
+//Bone Dancer
+/datum/outfit/loadout/bonedancerexile
+ name = "Bone Dancer Exile"
+ backpack_contents = list(
+ /obj/item/clothing/under/f13/bone = 1,
+ /obj/item/clothing/head/helmet/skull/bone = 1,
+ /obj/item/book/granter/crafting_recipe/tribal/bone = 1,
+ /obj/item/twohanded/spear/bonespear = 1,
+ /obj/item/warpaint_bowl=1,
+ /obj/item/reagent_containers/pill/patch/healpoultice = 2
- for(var/datum/crafting_recipe/recipe as() in recipes)
- H.mind.teach_crafting_recipe(recipe)
+ )
diff --git a/code/modules/jobs/jobs.dm b/code/modules/jobs/jobs.dm
index 011da3c6ef..744adb5c30 100644
--- a/code/modules/jobs/jobs.dm
+++ b/code/modules/jobs/jobs.dm
@@ -48,21 +48,15 @@ GLOBAL_LIST_INIT(nonhuman_positions, list(
))
GLOBAL_LIST_INIT(command_positions, list(
- "Head Scribe",
"Head Paladin",
"Head Knight",
"NCR Captain",
- "NCR Lieutenant",
"NCR Veteran Ranger",
"Legion Centurion",
- "Legion Veteran Decanus",
- "Mayor",
"Sheriff",
-
- "Followers Administrator",
))
GLOBAL_LIST_INIT(silicon_whitelist_positions, list(
@@ -97,14 +91,14 @@ GLOBAL_LIST_INIT(faction_whitelist_positions, list(
"Legion Slave",
"Mayor",
-"Sheriff",
-"Deputy",
+"Chief",
+"Officer",
"Shopkeeper",
"Doctor",
"Prospector",
"Detective",
-"Chief",
+"Tribal Chief",
"Shaman",
"Head Hunter",
"Druid",
@@ -140,10 +134,10 @@ GLOBAL_LIST_INIT(brotherhood_positions, list(
GLOBAL_LIST_INIT(oasis_positions, list(
"Mayor",
"Secretary",
- "Sheriff",
+ "Chief",
"Doctor",
"Citizen",
- "Deputy",
+ "Officer",
"Shopkeeper",
"Farmer",
"Prospector",
@@ -170,7 +164,7 @@ GLOBAL_LIST_INIT(legion_positions, list(
"Prime Legionnaire",
"Recruit Legionnaire",
"Legion Forgemaster",
- "Legion Slavemaster",
+ "Legion Immune",
"Legion Auxilia",
"Legion Slave",
"Legion Venator",
@@ -237,7 +231,7 @@ GLOBAL_LIST_INIT(silicon_positions, list(
))
GLOBAL_LIST_INIT(tribal_positions, list(
- "Chief",
+ "Tribal Chief",
"Shaman",
"Head Hunter",
"Druid",
diff --git a/code/modules/keybindings/keybind/living.dm b/code/modules/keybindings/keybind/living.dm
index b5921b378a..1bbc5dfef4 100644
--- a/code/modules/keybindings/keybind/living.dm
+++ b/code/modules/keybindings/keybind/living.dm
@@ -25,3 +25,25 @@
/datum/keybinding/living/toggle_resting/down(client/user)
var/mob/living/L = user.mob
L.lay_down()
+
+/datum/keybinding/living/cancel_action
+ hotkey_keys = list("Unbound")
+ name = "cancel_action"
+ full_name = "Cancel Action"
+ description = "Cancel the current action."
+
+/// Technically you shouldn't be doing any actions if you were sleeping either but...
+/datum/keybinding/living/can_use(client/user)
+ . = ..()
+ var/mob/living/mob = user.mob
+ return . && (mob.stat == CONSCIOUS)
+
+/datum/keybinding/living/cancel_action/down(client/user)
+ var/mob/M = user.mob
+ if(length(M.do_afters))
+ var/atom/target = M.do_afters[M.do_afters.len]
+ to_chat(M, "
You stop interacting with \the [target]. ")
+ LAZYREMOVE(M.do_afters, target)
+ else
+ to_chat(M, "
There's nothing that you can cancel right now. ")
+ return TRUE
diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm
index bac5bf8e5a..1fd229a42b 100644
--- a/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/code/modules/mining/equipment/kinetic_crusher.dm
@@ -25,14 +25,14 @@
var/list/trophies = list()
var/charged = TRUE
var/charge_time = 15
- var/detonation_damage = 50
+ var/detonation_damage = 30
var/backstab_bonus = 30
var/wielded = FALSE // track wielded status on item
/obj/item/kinetic_crusher/cyborg //probably give this a unique sprite later
desc = "An integrated version of the standard kinetic crusher with a grinded down axe head to dissuade mis-use against crewmen. Deals damage equal to the standard crusher against creatures, however."
force = 10 //wouldn't want to give a borg a 20 brute melee weapon unemagged now would we
- detonation_damage = 60
+ detonation_damage = 90
wielded = 1
/obj/item/kinetic_crusher/Initialize()
@@ -43,7 +43,7 @@
/obj/item/kinetic_crusher/ComponentInitialize()
. = ..()
AddComponent(/datum/component/butchering, 60, 110) //technically it's huge and bulky, but this provides an incentive to use it
- AddComponent(/datum/component/two_handed, force_unwielded=0, force_wielded=20)
+ AddComponent(/datum/component/two_handed, force_unwielded=0, force_wielded=40)
/obj/item/kinetic_crusher/Destroy()
QDEL_LIST(trophies)
@@ -177,6 +177,7 @@
attack_verb = list("stabbed", "diced", "sliced", "cleaved", "chopped", "lacerated", "cut", "jabbed", "punctured")
icon_state = "crusher-glaive"
item_state = "crusher0-glaive"
+ detonation_damage = 40
block_parry_data = /datum/block_parry_data/crusherglaive
//ideas: altclick that lets you pummel people with the handguard/handle?
//parrying functionality?
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/socks.dm b/code/modules/mob/dead/new_player/sprite_accessories/socks.dm
index a6a270ec2a..59823bb49a 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/socks.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/socks.dm
@@ -114,11 +114,13 @@
/datum/sprite_accessory/underwear/socks/stockings_orange
name = "Stockings - Orange"
icon_state = "stockings_orange"
+*/
/datum/sprite_accessory/underwear/socks/stockings_programmer
name = "Stockings - Programmer"
icon_state = "stockings_lpink"
+/*
/datum/sprite_accessory/underwear/socks/stockings_purple
name = "Stockings - Purple"
icon_state = "stockings_purple"
@@ -156,6 +158,8 @@
name = "Thigh-high - Freedom"
icon_state = "assblastusa_thigh"
+*/
+
/datum/sprite_accessory/underwear/socks/rainbow_thigh
name = "Thigh-high - Rainbow"
icon_state = "rainbow_thigh"
@@ -172,7 +176,7 @@
name = "Thigh-high - Striped"
icon_state = "striped_thigh"
has_color = TRUE
-*/
+
/datum/sprite_accessory/underwear/socks/thin_thigh
name = "Thigh-high - Thin"
diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm
index e7ad67d240..b943ebd1f6 100644
--- a/code/modules/mob/living/carbon/alien/alien.dm
+++ b/code/modules/mob/living/carbon/alien/alien.dm
@@ -19,7 +19,6 @@
/// How much brute damage they do to simple animals
var/meleeSlashSAPower = 35
- var/obj/item/card/id/wear_id = null // Fix for station bounced radios -- Skie
var/has_fine_manipulation = 0
var/move_delay_add = 0 // movement delay to add
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index bdd23c235d..93f02010c9 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -873,16 +873,16 @@
update_inv_handcuffed()
update_hud_handcuffed()
-/mob/living/carbon/proc/can_defib()
+/mob/living/carbon/proc/can_revive(ignore_timelimit = FALSE, maximum_brute_dam = MAX_REVIVE_BRUTE_DAMAGE, maximum_fire_dam = MAX_REVIVE_FIRE_DAMAGE, ignore_heart = FALSE)
var/tlimit = DEFIB_TIME_LIMIT * 10
var/obj/item/organ/heart = getorgan(/obj/item/organ/heart)
if(suiciding || hellbound || HAS_TRAIT(src, TRAIT_HUSK) || AmBloodsucker(src))
return
- if((world.time - timeofdeath) > tlimit)
+ if(!ignore_timelimit && (world.time - timeofdeath) > tlimit)
return
- if((getBruteLoss() >= MAX_REVIVE_BRUTE_DAMAGE) || (getFireLoss() >= MAX_REVIVE_FIRE_DAMAGE))
+ if((getBruteLoss() >= maximum_brute_dam) || (getFireLoss() >= maximum_fire_dam))
return
- if(!heart || (heart.organ_flags & ORGAN_FAILING))
+ if(!ignore_heart && (!heart || (heart.organ_flags & ORGAN_FAILING)))
return
var/obj/item/organ/brain/BR = getorgan(/obj/item/organ/brain)
if(QDELETED(BR) || BR.brain_death || (BR.organ_flags & ORGAN_FAILING) || suiciding)
diff --git a/code/modules/mob/living/carbon/carbon_movement.dm b/code/modules/mob/living/carbon/carbon_movement.dm
index 65e59d0e29..436c0732ba 100644
--- a/code/modules/mob/living/carbon/carbon_movement.dm
+++ b/code/modules/mob/living/carbon/carbon_movement.dm
@@ -29,7 +29,7 @@
var/loss = HUNGER_FACTOR/10
if(m_intent == MOVE_INTENT_RUN)
loss *= 2
- adjust_nutrition(loss)
+ adjust_nutrition(-loss)
/mob/living/carbon/can_move_under_living(mob/living/other)
. = ..()
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 64aa2c3690..22f66399db 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -140,7 +140,7 @@
if(getorgan(/obj/item/organ/brain) && !key && !get_ghost(FALSE, TRUE))
. += "
[t_He] [t_is] limp and unresponsive; there are no signs of life and resuscitation is not possible... "
else
- . += "
[t_He] [t_is] limp and unresponsive; there are no signs of life... "
+ . += "
[t_He] [t_is] limp and unresponsive; there are no signs of life, however resuscitation may be possible... "
if(get_bodypart(BODY_ZONE_HEAD) && !getorgan(/obj/item/organ/brain))
. += "
It appears that [t_his] brain is missing... "
@@ -227,7 +227,7 @@
msg += "
[t_He] [t_has] severe cellular damage! \n"
else
msg += "
[t_He] [t_has] extreme cellular damage! \n"
-
+
if(fire_stacks > 0)
@@ -366,11 +366,15 @@
msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n"
if(InCritical())
msg += "[t_He] [t_is] barely conscious.\n"
- if(getorgan(/obj/item/organ/brain))
+ if(getorgan(/obj/item/organ/brain) && !(living_flags & HIDE_OFFLINE_INDICATOR))
if(!key)
msg += "
[t_He] [t_is] totally catatonic. The stresses of the Wasteland must have been too much for [t_him]. Any recovery is unlikely. \n"
else if(!client)
msg += "[t_He] [t_has] a blank, absent-minded stare and appears completely unresponsive to anything. [t_He] may snap out of it soon.\n"
+ else if(client && ((client.inactivity / 10) / 60 > 10)) //10 Minutes
+ msg += "\[Inactive for [round((client.inactivity/10)/60)] minutes\]"
+ else if(disconnect_time)
+ msg += "\[Disconnected/ghosted [round(((world.realtime - disconnect_time)/10)/60)] minutes ago\]"
if(digitalcamo)
msg += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly inhuman manner.\n"
@@ -446,7 +450,7 @@
"
\[Add comment\] "), "")
else if(isobserver(user) && traitstring)
. += "
Traits: [traitstring]"
-
+
. += "\n[print_special()]\n"
SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user, .) //This also handles flavor texts now
@@ -468,4 +472,4 @@
dat += "[new_text]\n" //dat.Join("\n") doesn't work here, for some reason
if(dat.len)
dat.Join()
- return
+ return
diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm
index 1feddd8fc7..33879d5452 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -53,6 +53,9 @@
var/obj/item/l_store = null
var/obj/item/s_store = null
+/// When an braindead player has their equipment fiddled with, we log that info here for when they come back so they know who took their ID while they were DC'd for 30 seconds
+ var/list/afk_thefts
+
var/special_voice = "" // For changing our voice. Used by a symptom.
var/bleedsuppress = 0 //for stopping bloodloss, eventually this will be limb-based like bleeding
diff --git a/code/modules/mob/living/carbon/human/login.dm b/code/modules/mob/living/carbon/human/login.dm
index a89921143a..ebf76eeafa 100644
--- a/code/modules/mob/living/carbon/human/login.dm
+++ b/code/modules/mob/living/carbon/human/login.dm
@@ -2,3 +2,33 @@
..()
if(dna?.species?.has_field_of_vision && CONFIG_GET(flag/use_field_of_vision))
LoadComponent(/datum/component/field_of_vision, field_of_vision_type)
+
+ if(!LAZYLEN(afk_thefts))
+ return
+
+ var/list/print_msg = list()
+ print_msg += "
*---------* "
+ print_msg += "
As you snap back to consciousness, you recall people messing with your stuff... "
+
+ afk_thefts = reverseRange(afk_thefts)
+
+ for(var/list/iter_theft as anything in afk_thefts)
+ if(!islist(iter_theft) || LAZYLEN(iter_theft) != AFK_THEFT_TIME)
+ stack_trace("[src] ([ckey]) returned to their body and had a null/malformed afk_theft entry. Contents: [json_encode(iter_theft)]")
+ continue
+
+ var/thief_name = iter_theft[AFK_THEFT_NAME]
+ var/theft_message = iter_theft[AFK_THEFT_MESSAGE]
+ var/time_since = world.time - iter_theft[AFK_THEFT_TIME]
+
+ if(time_since > AFK_THEFT_FORGET_DETAILS_TIME)
+ print_msg += "\t
Someone [theft_message], but it was at least [DisplayTimeText(AFK_THEFT_FORGET_DETAILS_TIME)] ago. "
+ else
+ print_msg += "\t
[thief_name] [theft_message] roughly [DisplayTimeText(time_since, 10)] ago. "
+
+ if(LAZYLEN(afk_thefts) >= AFK_THEFT_MAX_MESSAGES)
+ print_msg += "
There may have been more, but that's all you can remember... "
+ print_msg += "
*---------* "
+
+ to_chat(src, print_msg.Join("\n"))
+ LAZYNULL(afk_thefts)
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 6c02e9f8a9..6ac194995e 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1743,12 +1743,10 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
"
[M] attempted to touch you! ", target = M, \
target_message = "
You attempted to touch [H]! ")
return TRUE
+ if(M == H)
+ althelp(M, H, attacker_style)
+ return TRUE
switch(M.a_intent)
- if(INTENT_HELP)
- if(M == H)
- althelp(M, H, attacker_style)
- return TRUE
- return FALSE
if(INTENT_DISARM)
altdisarm(M, H, attacker_style)
return TRUE
diff --git a/code/modules/mob/living/carbon/human/species_types/supermutant.dm b/code/modules/mob/living/carbon/human/species_types/supermutant.dm
index b9c3be84ef..816d9f2f92 100644
--- a/code/modules/mob/living/carbon/human/species_types/supermutant.dm
+++ b/code/modules/mob/living/carbon/human/species_types/supermutant.dm
@@ -3,19 +3,46 @@
id = "smutant"
say_mod = "yells"
limbs_id = "smutant"
- species_traits = list(NOTRANSSTING,NOGENITALS,NOAROUSAL)
- inherent_traits = list(TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE)
+ offset_features = list (
+ OFFSET_HEAD = list(1,5)
+ )
+ // Whitelist for initial release, potential shitters
+ whitelisted = 1
+ // Addself these only ones I know.
+ whitelist = list("ADanimator", "PilotBland", "Cythisia", "Kneesox", "Foxeye", "Oddbomber3768", "Poots13", "Scheveningen", "Akoy")
+ species_traits = list(NOEYES,NO_UNDERWEAR,NOTRANSSTING,NOGENITALS,NOAROUSAL)
+ inherent_traits = list(TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE, TRAIT_HEAVY_SLEEPER, TRAIT_POOR_AIM, TRAIT_STRONG_GRABBER, TRAIT_QUICK_CARRY, TRAIT_UNARMED_WEAPON, TRAIT_IRONFIST,TRAIT_BIG_LEAGUES)
inherent_biotypes = list(MOB_INORGANIC, MOB_HUMANOID)
punchstunthreshold = 20
+ punchdamagelow = 10
+ punchdamagehigh = 20
+ // No jumpsuit cause no armor yet, remove when armor is added.
+ nojumpsuit = 1
use_skintones = 0
sexes = 0
+ armor = 60 // Until armor is added in loot pools, then move down to 20-30
+ speedmod = 0.75
liked_food = JUNKFOOD | FRIED | RAW
+//TODO
+// Disable Prosthetics or make custom ones
+// Armor lootable
+// Helmet sprites variants
+// Whitelist/Blacklist clothes/armor.
+// Changing organs/blood
+// Better NCR Sprites.
+// Nightkin?
+
/datum/species/smutant/on_species_gain(mob/living/carbon/C, datum/species/old_species)
..()
for(var/obj/item/bodypart/b in C.bodyparts)
- b.max_damage += 50
+ b.max_damage += 100 // Pretty sure this just didn't work but like whatever.
C.faction |= "supermutant"
+
+// TODO
+// Someone pls make to add mutie_boots and mutie_shorts on spawn.
+// Look at Plasmaman for refrence
+
/datum/species/smutant/on_species_loss(mob/living/carbon/C)
..()
C.faction -= "supermutant"
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 0c9b5e6740..fc5e6f9e43 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -418,6 +418,30 @@
to_chat(src, "
You have given up life and succumbed to death. ")
death()
+/mob/living/verb/lookup()
+ set name = "Look Up"
+ set category = "IC"
+ if(src.incapacitated())
+ to_chat(src, "
You can't look up right now! ")
+ var/turf/T = SSmapping.get_turf_above(get_turf(src))
+ if(!istype(T, /turf/open/transparent/openspace))
+ if(istype(T, /turf/open) || istype(T, /turf/closed))
+ to_chat(src, "
You look up at the ceiling. You can see ceiling. ")
+ return
+ else
+ src.reset_perspective(T)
+ RegisterSignal(src, COMSIG_MOB_CLIENT_CHANGE_VIEW, .proc/stop_looking_up) //no binos/scops
+ RegisterSignal(src, COMSIG_MOVABLE_MOVED, .proc/stop_looking_up)
+ RegisterSignal(src, COMSIG_LIVING_STATUS_KNOCKDOWN, .proc/stop_looking_up)
+ RegisterSignal(src, COMSIG_LIVING_STATUS_PARALYZE, .proc/stop_looking_up)
+ RegisterSignal(src, COMSIG_LIVING_STATUS_UNCONSCIOUS, .proc/stop_looking_up)
+ RegisterSignal(src, COMSIG_LIVING_STATUS_SLEEP, .proc/stop_looking_up)
+
+/mob/living/proc/stop_looking_up()
+ reset_perspective(null)
+ UnregisterSignal(src, list(COMSIG_LIVING_STATUS_PARALYZE, COMSIG_LIVING_STATUS_UNCONSCIOUS, COMSIG_LIVING_STATUS_SLEEP, COMSIG_LIVING_STATUS_KNOCKDOWN, COMSIG_MOVABLE_MOVED, COMSIG_MOB_CLIENT_CHANGE_VIEW))
+
+
/mob/living/incapacitated(ignore_restraints = FALSE, ignore_grab = FALSE, check_immobilized = FALSE)
if(stat || IsUnconscious() || IsStun() || IsParalyzed() || (combat_flags & COMBAT_FLAG_HARD_STAMCRIT) || (check_immobilized && IsImmobilized()) || (!ignore_restraints && restrained(ignore_grab)))
return TRUE
@@ -865,6 +889,12 @@
"
[src] tries to remove your [what.name]. ", target = src,
target_message = "
You try to remove [who]'s [what.name]. ")
what.add_fingerprint(src)
+ if(ishuman(who))
+ var/mob/living/carbon/human/victim_human = who
+ if(victim_human.key && !victim_human.client) // AKA braindead
+ if(victim_human.stat <= SOFT_CRIT && LAZYLEN(victim_human.afk_thefts) <= AFK_THEFT_MAX_MESSAGES)
+ var/list/new_entry = list(list(src.name, "tried unequipping your [what]", world.time))
+ LAZYADD(victim_human.afk_thefts, new_entry)
else
to_chat(src,"
You try to remove [who]'s [what.name]. ")
what.add_fingerprint(src)
@@ -911,6 +941,13 @@
to_chat(src, "
\The [what.name] doesn't fit in that place! ")
return
+ if(ishuman(who))
+ var/mob/living/carbon/human/victim_human = who
+ if(victim_human.key && !victim_human.client) // AKA braindead
+ if(victim_human.stat <= SOFT_CRIT && LAZYLEN(victim_human.afk_thefts) <= AFK_THEFT_MAX_MESSAGES)
+ var/list/new_entry = list(list(src.name, "tried equipping you with [what]", world.time))
+ LAZYADD(victim_human.afk_thefts, new_entry)
+
who.visible_message("
[src] tries to put [what] on [who]. ",
"
[src] tries to put [what] on you. ", target = src,
target_message = "
You try to put [what] on [who]. ")
diff --git a/code/modules/mob/living/living_blocking_parrying.dm b/code/modules/mob/living/living_blocking_parrying.dm
index 9d39d724a0..090448ec40 100644
--- a/code/modules/mob/living/living_blocking_parrying.dm
+++ b/code/modules/mob/living/living_blocking_parrying.dm
@@ -42,17 +42,17 @@ GLOBAL_LIST_EMPTY(block_parry_data)
/// Amount of "free" damage blocking absorbs
var/block_damage_absorption = 10
- /// Override absorption, list("[ATTACK_TYPE_DEFINE]" = absorption), see [block_damage_absorption]
+ /// Override absorption, list(ATTACK_TYPE_DEFINE_TEXT = absorption), see [block_damage_absorption]
var/list/block_damage_absorption_override
/// Ratio of damage to allow through above absorption and below limit. Multiplied by damage to determine how much to let through. Lower is better.
var/block_damage_multiplier = 0.5
- /// Override damage overrun efficiency, list("[ATTACK_TYPE_DEFINE]" = absorption), see [block_damage_efficiency]
+ /// Override damage overrun efficiency, list(ATTACK_TYPE_DEFINE_TEXT = absorption), see [block_damage_efficiency]
var/list/block_damage_multiplier_override
/// Upper bound of damage block, anything above this will go right through.
var/block_damage_limit = 80
- /// Override upper bound of damage block, list("[ATTACK_TYPE_DEFINE]" = absorption), see [block_damage_limit]
+ /// Override upper bound of damage block, list(ATTACK_TYPE_DEFINE_TEXT = absorption), see [block_damage_limit]
var/list/block_damage_limit_override
/// The blocked variable of on_hit() on projectiles is impacted by this. Higher is better, 0 to 100, percentage.
@@ -67,7 +67,7 @@ GLOBAL_LIST_EMPTY(block_parry_data)
/// Default damage-to-stamina coefficient, higher is better. This is based on amount of damage BLOCKED, not initial damage, to prevent damage from "double dipping".
var/block_stamina_efficiency = 2
- /// Override damage-to-stamina coefficient, see [block_efficiency], this should be list("[ATTACK_TYPE_DEFINE]" = coefficient_number)
+ /// Override damage-to-stamina coefficient, see [block_efficiency], this should be list(ATTACK_TYPE_DEFINE_TEXT = coefficient_number)
var/list/block_stamina_efficiency_override
/// Ratio of stamina incurred by blocking that goes to the arm holding the object instead of the chest. Has no effect if this is not held in hand.
var/block_stamina_limb_ratio = 0.5
@@ -83,7 +83,7 @@ GLOBAL_LIST_EMPTY(block_parry_data)
var/block_resting_attack_types_directional = ATTACK_TYPE_PROJECTILE | ATTACK_TYPE_THROWN
/// Multiplier to stamina damage taken for attacks blocked while downed.
var/block_resting_stamina_penalty_multiplier = 1.5
- /// Override list for multiplier to stamina damage taken for attacks blocked while down. list("[ATTACK_TYPE_DEFINE]" = multiplier_number)
+ /// Override list for multiplier to stamina damage taken for attacks blocked while down. list(ATTACK_TYPE_DEFINE_TEXT = multiplier_number)
var/list/block_resting_stamina_penalty_multiplier_override
/// Sounds for blocking
@@ -118,15 +118,15 @@ GLOBAL_LIST_EMPTY(block_parry_data)
var/parry_time_perfect = 2.5
/// Time on both sides of perfect parry that still counts as part of the perfect window.
var/parry_time_perfect_leeway = 1
- /// [parry_time_perfect_leeway] override for attack types, list("[ATTACK_TYPE_DEFINE]" = deciseconds)
+ /// [parry_time_perfect_leeway] override for attack types, list(ATTACK_TYPE_DEFINE_TEXT = deciseconds)
var/list/parry_time_perfect_leeway_override
/// Parry "efficiency" falloff in percent per decisecond once perfect window is over.
var/parry_imperfect_falloff_percent = 20
- /// [parry_imperfect_falloff_percent] override for attack types, list("[ATTACK_TYPE_DEFINE]" = deciseconds)
+ /// [parry_imperfect_falloff_percent] override for attack types, list(ATTACK_TYPE_DEFINE_TEXT = deciseconds)
var/list/parry_imperfect_falloff_percent_override
/// Efficiency in percent on perfect parry.
var/parry_efficiency_perfect = 120
- /// Override for attack types, list("[ATTACK_TYPE_DEFINE]" = perecntage) for perfect efficiency.
+ /// Override for attack types, list(ATTACK_TYPE_DEFINE_TEXT = perecntage) for perfect efficiency.
var/parry_efficiency_perfect_override
/// Parry effect data.
var/list/parry_data = list(
diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm
index 45f57890c0..299705e704 100644
--- a/code/modules/mob/living/living_defines.dm
+++ b/code/modules/mob/living/living_defines.dm
@@ -30,6 +30,7 @@
var/mobility_flags = MOBILITY_FLAGS_DEFAULT
+ var/living_flags = NONE
// Combat - Blocking/Parrying system
/// Our block_parry_data for unarmed blocks/parries. Currently only used for parrying, as unarmed block isn't implemented yet. YOU MUST RUN [get_block_parry_data(this)] INSTEAD OF DIRECTLY ACCESSING!
var/datum/block_parry_data/block_parry_data = /datum/block_parry_data // defaults to *something* because [combat_flags] dictates whether or not we can unarmed block/parry.
@@ -159,3 +160,5 @@
var/sprint_buffer_regen_last = 0 //last world.time this was regen'd for math.
var/sprint_stamina_cost = 0.70 //stamina loss per tile while insufficient sprint buffer.
//---End
+
+ var/disconnect_time //how long have we been dc'd for
diff --git a/code/modules/mob/living/login.dm b/code/modules/mob/living/login.dm
index 1b7ee4e9c7..81f59302f3 100644
--- a/code/modules/mob/living/login.dm
+++ b/code/modules/mob/living/login.dm
@@ -1,5 +1,6 @@
/mob/living/Login()
..()
+ disconnect_time = null //we are connected
//Mind updates
sync_mind()
mind.show_memory(src, 0)
diff --git a/code/modules/mob/living/logout.dm b/code/modules/mob/living/logout.dm
index 794adfca49..a349750c1e 100644
--- a/code/modules/mob/living/logout.dm
+++ b/code/modules/mob/living/logout.dm
@@ -1,6 +1,7 @@
/mob/living/Logout()
update_z(null)
..()
+ disconnect_time = world.realtime
if(!key && mind) //key and mind have become separated.
mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body.
hud_client_check()
diff --git a/code/modules/mob/living/simple_animal/hostile/f13/eyebot.dm b/code/modules/mob/living/simple_animal/hostile/f13/eyebot.dm
index 4d4965163f..64ff8d219e 100644
--- a/code/modules/mob/living/simple_animal/hostile/f13/eyebot.dm
+++ b/code/modules/mob/living/simple_animal/hostile/f13/eyebot.dm
@@ -8,7 +8,7 @@
icon = 'icons/fallout/mobs/robots/eyebots.dmi'
icon_state = "eyebot"
icon_living = "eyebot"
- icon_dead = "eyebot_d"
+ icon_dead = "robot_dead"
speak_chance = 0
turns_per_move = 6
environment_smash = 0
@@ -38,6 +38,7 @@
vision_range = 7 //reduced from 13 to 7 because who needs that kind of shit in their life
aggro_vision_range = 7 //as above
ranged = 1
+ loot = list(/obj/effect/decal/remains/deadeyebot, /obj/item/clothing/head/helmet/f13/raider/eyebot)
projectiletype = /obj/item/projectile/beam/laser/pistol/wattz
projectilesound = 'sound/weapons/resonator_fire.ogg'
aggrosound = list('sound/f13npc/eyebot/aggro.ogg', )
diff --git a/code/modules/mob/living/simple_animal/hostile/f13/raider.dm b/code/modules/mob/living/simple_animal/hostile/f13/raider.dm
index e1ffcd0190..6b595961e3 100644
--- a/code/modules/mob/living/simple_animal/hostile/f13/raider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/f13/raider.dm
@@ -106,7 +106,7 @@
health = 600
retreat_distance = 1
minimum_distance = 2
- projectiletype = /obj/item/projectile/bullet/m44
+ projectiletype = /obj/item/projectile/bullet/m44/simple
projectilesound = 'sound/f13weapons/44mag.ogg'
extra_projectiles = 1
aggro_vision_range = 15
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index feb8757342..05473a6044 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -3,6 +3,7 @@
stop_automated_movement_when_pulled = 0
obj_damage = 40
environment_smash = ENVIRONMENT_SMASH_STRUCTURES //Bitflags. Set to ENVIRONMENT_SMASH_STRUCTURES to break closets,tables,racks, etc; ENVIRONMENT_SMASH_WALLS for walls; ENVIRONMENT_SMASH_RWALLS for rwalls
+ mob_size = MOB_SIZE_LARGE
var/atom/target
var/ranged = FALSE
var/rapid = 0 //How many shots per volley.
diff --git a/code/modules/projectiles/ammunition/ballistic/pistol.dm b/code/modules/projectiles/ammunition/ballistic/pistol.dm
index 937c41bbd7..56502cc411 100644
--- a/code/modules/projectiles/ammunition/ballistic/pistol.dm
+++ b/code/modules/projectiles/ammunition/ballistic/pistol.dm
@@ -9,31 +9,36 @@
name = "A 10mm rubber bullet casing."
projectile_type = /obj/item/projectile/bullet/c10mm/rubber
-/obj/item/ammo_casing/c10mm/wounding
- name = "A 10mm-wounding bullet casing."
- projectile_type = /obj/item/projectile/bullet/c10mm/wounding
-
/obj/item/ammo_casing/c10mm/incendiary
name = "A 10mm incendiary bullet casing."
projectile_type = /obj/item/projectile/bullet/c10mm/incendiary
-// 9mm
+// 9mm
/obj/item/ammo_casing/c9mm
name = "9mm FMJ bullet casing"
desc = "A 9mm FMJ bullet casing."
caliber = "9mm"
projectile_type = /obj/item/projectile/bullet/c9mm
+/obj/item/ammo_casing/c9mm/improv
+ name = "homemade 9mm bullet casing"
+ desc = "A homemade 9mm bullet casing."
+ projectile_type = /obj/item/projectile/bullet/c9mm/improv
+
/obj/item/ammo_casing/c9mm/rubber
name = "9mm rubber bullet casing"
desc = "A 9mm rubber bullet casing."
projectile_type = /obj/item/projectile/bullet/c9mm/rubber
-/obj/item/ammo_casing/c9mm/wounding
- name = "9mm wounding bullet casing"
- desc = "A 9mm wounding bullet casing."
- projectile_type = /obj/item/projectile/bullet/c9mm/wounding
+/obj/item/ammo_casing/c9mm/acid
+ name = "9mm acid-tipped bullet casing"
+ desc = "A 9mm acid-tipped bullet casing."
+ projectile_type = /obj/item/projectile/bullet/c9mm/acid
+/obj/item/ammo_casing/c9mm/incendiary
+ name = "9mm incendiary bullet casing"
+ desc = "A 9mm incendiary bullet casing."
+ projectile_type = /obj/item/projectile/bullet/c9mm/incendiary
//14mm
/obj/item/ammo_casing/p14mm
name = "14mm FMJ bullet casing"
@@ -41,6 +46,17 @@
caliber = "14"
projectile_type = /obj/item/projectile/bullet/mm14
+/obj/item/ammo_casing/p14mm/contam
+ name = "14mm contaminated bullet casing"
+ desc = "A 14mm contaminated bullet casing."
+ caliber = "14"
+ projectile_type = /obj/item/projectile/bullet/mm14/contam
+
+/obj/item/ammo_casing/p14mm/uraniumtipped
+ name = "14mm uranium-tipped bullet casing"
+ desc = "A 14mm uranium-tipped bullet casing."
+ caliber = "14"
+ projectile_type = /obj/item/projectile/bullet/mm14/uraniumtipped
// 22lr
/obj/item/ammo_casing/a22
@@ -54,6 +70,11 @@
desc = "A .22lr rubber bullet casing."
projectile_type = /obj/item/projectile/bullet/c22/rubber
+/obj/item/ammo_casing/a22/shock
+ name = ".22lr shock bullet casing"
+ desc = "A .22lr shock bullet casing."
+ projectile_type = /obj/item/projectile/bullet/c22/shock
+
// BETA AMMO // Obsolete
/obj/item/ammo_casing/testcasing
name = "casing"
diff --git a/code/modules/projectiles/ammunition/ballistic/revolver.dm b/code/modules/projectiles/ammunition/ballistic/revolver.dm
index 250601d45d..2a56ddaa06 100644
--- a/code/modules/projectiles/ammunition/ballistic/revolver.dm
+++ b/code/modules/projectiles/ammunition/ballistic/revolver.dm
@@ -1,4 +1,4 @@
-// .357
+// .357
/obj/item/ammo_casing/a357
name = ".357 FMJ bullet casing"
desc = "A .357 FMJ bullet casing."
@@ -10,7 +10,20 @@
desc = "A .357 ricochet bullet casing."
projectile_type = /obj/item/projectile/bullet/a357/ricochet
+/obj/item/ammo_casing/a357/incendiary
+ name = ".357 incendiary bullet casing"
+ desc = "A .357 incendiary bullet casing."
+ projectile_type = /obj/item/projectile/bullet/a357/incendiary
+/obj/item/ammo_casing/a357/improv
+ name = ".357 improvised bullet casing"
+ desc = "A .357 bullet casing, made by hand."
+ projectile_type = /obj/item/projectile/bullet/a357/improv
+
+/obj/item/ammo_casing/a357/acid
+ name = ".357 special acid-tipped bullet casing"
+ desc = "A .357 acid-tipped bullet casing."
+ projectile_type = /obj/item/projectile/bullet/a357/acid
// .38 special
/obj/item/ammo_casing/c38
name = ".38 special bullet casing"
@@ -18,11 +31,28 @@
caliber = "38"
projectile_type = /obj/item/projectile/bullet/c38
+/obj/item/ammo_casing/c38/improv
+ name = "homemade .38 special bullet casing"
+ desc = "A .38 special bullet casing."
+ caliber = "38"
+ projectile_type = /obj/item/projectile/bullet/c38/improv
+
/obj/item/ammo_casing/c38/rubber
name = ".38 special rubber bullet casing"
desc = "A .38 specia rubber bullet casing. For when you want to be extra useless."
projectile_type = /obj/item/projectile/bullet/c38/rubber
-
+
+/obj/item/ammo_casing/c38/incendiary
+ name = ".38 special incendiary bullet casing"
+ desc = "A .38 special incendiary bullet casing. For when you want to be slightly less useless."
+ projectile_type = /obj/item/projectile/bullet/c38/incendiary
+
+/obj/item/ammo_casing/c38/acid
+ name = ".38 special acid-tipped bullet casing"
+ desc = "A .38 special acid-tipped bullet casing. For when you want to be slightly less useless."
+ projectile_type = /obj/item/projectile/bullet/c38/acid
+
+
// .44 magnum
/obj/item/ammo_casing/m44
name = ".44 magnum FMJ bullet casing"
@@ -30,6 +60,11 @@
caliber = "44"
projectile_type = /obj/item/projectile/bullet/m44
+/obj/item/ammo_casing/m44/incendiary
+ name = ".44 magnum incendiary bullet casing"
+ desc = "A .44 magnum incendiary bullet casing."
+ projectile_type = /obj/item/projectile/bullet/c45/incendiary
+
// .45-70 Gov't
/obj/item/ammo_casing/c4570
name = ".45-70 FMJ bullet casing"
@@ -42,9 +77,19 @@
desc = "A .45-70 explosive bullet casing."
projectile_type = /obj/item/projectile/bullet/c4570/explosive
+/obj/item/ammo_casing/c4570/acid
+ name = ".45-70 acid-tipped bullet casing"
+ desc = "A .45-70 acid-tipped bullet casing."
+ projectile_type = /obj/item/projectile/bullet/c4570/acid
+
+/obj/item/ammo_casing/c4570/knockback
+ name = ".45-70 ultradense bullet casing"
+ desc = "A .45-70 ultradense bullet casing."
+ projectile_type = /obj/item/projectile/bullet/c4570/knockback
+
//.45 Long Colt bouncing
/obj/item/ammo_casing/a45lc
name = ".45 Long Colt bullet casing"
- desc = "An arcaich .45 long colt bullet casing."
+ desc = "An archaic .45 long colt bullet casing."
caliber = "a45lc"
projectile_type = /obj/item/projectile/bullet/a45lc
diff --git a/code/modules/projectiles/ammunition/ballistic/rifle.dm b/code/modules/projectiles/ammunition/ballistic/rifle.dm
index 0cd71ff7d8..e503e8a7ea 100644
--- a/code/modules/projectiles/ammunition/ballistic/rifle.dm
+++ b/code/modules/projectiles/ammunition/ballistic/rifle.dm
@@ -11,6 +11,11 @@
desc = "A .308 sporting bullet casing."
projectile_type = /obj/item/projectile/bullet/a762/sport
+/obj/item/ammo_casing/a762/microshrapnel
+ name = "7.62mm microshrapnel bullet casing"
+ desc = "Like shrapnel, but smaller, and thus more annoying."
+ projectile_type = /obj/item/projectile/bullet/a762/microshrapnel
+
/obj/item/ammo_casing/a762/uraniumtipped
name = "7.62 uranium tipped bullet casing"
desc = "Not depleted uranium. Regular uranium."
@@ -33,10 +38,10 @@
desc = "A 5.56mm rubber bullet casing, for training purposes."
projectile_type = /obj/item/projectile/bullet/a556/rubber
-/obj/item/ammo_casing/a556/uraniumtipped
- name = "5.56mm uranium-tipped bullet casing"
- desc = "Not depleted uranium. Regular uranium."
- projectile_type = /obj/item/projectile/bullet/a556/uraniumtipped
+/obj/item/ammo_casing/a556/microshrapnel
+ name = "5.56mm microshrapnel bullet casing"
+ desc = "Like shrapnel, but smaller, and thus more annoying."
+ projectile_type = /obj/item/projectile/bullet/a556/microshrapnel
/obj/item/ammo_casing/a556/sport //.223
name = ".223 bullet casing"
@@ -51,6 +56,12 @@
caliber = "m5mm"
projectile_type = /obj/item/projectile/bullet/m5mm
+
+/obj/item/ammo_casing/m5mm/shock
+ name = "5mm shock bullet casing"
+ desc = "A 5mm shock bullet casing."
+ projectile_type = /obj/item/projectile/bullet/m5mm/shock
+
// 40mm (Grenade Launcher)
/obj/item/ammo_casing/a40mm
name = "40mm HE shell"
@@ -65,3 +76,9 @@
desc = "A 2mm gauss projectile casing."
caliber = "2mm"
projectile_type = /obj/item/projectile/bullet/c2mm
+
+/obj/item/ammo_casing/c2mm/blender
+ name = "2mm gauss blender projectile casing"
+ desc = "A 2mm gauss projectile casing, \"Blender\" variant. Bounces off walls at hypersonic speeds."
+ caliber = "2mm"
+ projectile_type = /obj/item/projectile/bullet/c2mm/blender
diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
index c43f4aca99..f94a541b73 100644
--- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm
+++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
@@ -32,7 +32,7 @@
icon_state = "bshell"
projectile_type = /obj/item/projectile/bullet/shotgun_beanbag
custom_materials = list(/datum/material/iron=250, /datum/material/blackpowder=70)
-
+
obj/item/ammo_casing/shotgun/executioner
name = "executioner slug"
@@ -175,6 +175,14 @@ obj/item/ammo_casing/shotgun/executioner
pellets = 7
variance = 15
+/obj/item/ammo_casing/shotgun/trainshot
+ name = "12 gauge trainshot shell"
+ desc = "It's a 12-gauge, 3-pellet tungsten trainshot shotgun shell. Sometimes referred to as the tungsten trinity."
+ icon_state = "magshell"
+ projectile_type = /obj/item/projectile/bullet/pellet/trainshot
+ pellets = 3
+ variance = 15
+
// BETA STUFF // Obsolete
/obj/item/ammo_casing/shotgun/buckshot/test
diff --git a/code/modules/projectiles/ammunition/ballistic/sniper.dm b/code/modules/projectiles/ammunition/ballistic/sniper.dm
index 1eb265a169..b3c7786a6e 100644
--- a/code/modules/projectiles/ammunition/ballistic/sniper.dm
+++ b/code/modules/projectiles/ammunition/ballistic/sniper.dm
@@ -32,3 +32,15 @@
desc = "This titanium-reinforced highpower bullet will penetrate anything. Yes. Anything."
projectile_type = /obj/item/projectile/bullet/a50MG/penetrator
icon_state = "50ap2"
+
+/obj/item/ammo_casing/a50MG/contam
+ name = "12.7mm contaminated bullet casing"
+ desc = "A 12.7mm explosive round where the explosive has been replaced with a chemical smoke payload."
+ icon_state = "50ex2"
+ projectile_type = /obj/item/projectile/bullet/a50MG/contam
+
+/obj/item/ammo_casing/a50MG/uraniumtipped
+ name = "12.7mm uranium-tipped bullet casing"
+ desc = "Enriched uranium-tipped 12.7mm rifle rounds."
+ projectile_type = /obj/item/projectile/bullet/a50MG/uraniumtipped
+ icon_state = "50ap2"
diff --git a/code/modules/projectiles/ammunition/caseless/_caseless.dm b/code/modules/projectiles/ammunition/caseless/_caseless.dm
index 213777744d..74ce85472c 100644
--- a/code/modules/projectiles/ammunition/caseless/_caseless.dm
+++ b/code/modules/projectiles/ammunition/caseless/_caseless.dm
@@ -43,3 +43,11 @@
icon_state = "plasmacan"
projectile_type = /obj/item/projectile/f13plasma/plasmacaster
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/energy
+
+/obj/item/ammo_casing/caseless/plasmamusket
+ name = "Plasma can"
+ desc = "A single use can of plasma for the plasma musket."
+ caliber = "plasmacaster"
+ icon_state = "plasmacan"
+ projectile_type = /obj/item/projectile/f13plasma/plasmamusket
+ firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/energy
diff --git a/code/modules/projectiles/ammunition/caseless/arrow.dm b/code/modules/projectiles/ammunition/caseless/arrow.dm
index 51a1e9000e..bd6c265dff 100644
--- a/code/modules/projectiles/ammunition/caseless/arrow.dm
+++ b/code/modules/projectiles/ammunition/caseless/arrow.dm
@@ -37,6 +37,20 @@
projectile_type = /obj/item/projectile/bullet/reusable/arrow/burning
icon_state = "arrow_burning"
+/obj/item/ammo_casing/caseless/arrow/broadhead
+ name = "broadhead arrow"
+ desc = "A sharp metal arrow with a broad head. Likely to stick in a wound."
+ icon = 'icons/fallout/objects/guns/ammo.dmi'
+ icon_state = "arrow_broadhead"
+ projectile_type = /obj/item/projectile/bullet/reusable/arrow/broadhead
+
+/obj/item/ammo_casing/caseless/arrow/serrated
+ name = "serrated arrow"
+ icon = 'icons/fallout/objects/guns/ammo.dmi'
+ desc = "A sharp metal arrow with a wicked sharp serrated teeth. Likely to shred an artery."
+ icon_state = "arrow_serrated"
+ projectile_type = /obj/item/projectile/bullet/reusable/arrow/serrated
+
//CIT ARROWS
/obj/item/ammo_casing/caseless/arrow/wood
name = "wooden arrow"
@@ -50,7 +64,7 @@
/obj/item/ammo_casing/caseless/arrow/bone
name = "bone arrow"
- desc = "An arrow made of bone and sinew. The tip is sharp enough to pierce through a goliath plate."
+ desc = "An arrow made of bone and sinew. The tip is sharp enough to pierce through deathclaw hide."
icon_state = "bonearrow"
projectile_type = /obj/item/projectile/bullet/reusable/arrow/bone
diff --git a/code/modules/projectiles/ammunition/caseless/ballistic.dm b/code/modules/projectiles/ammunition/caseless/ballistic.dm
index 791a1f9165..7e911c9e02 100644
--- a/code/modules/projectiles/ammunition/caseless/ballistic.dm
+++ b/code/modules/projectiles/ammunition/caseless/ballistic.dm
@@ -12,11 +12,11 @@
/obj/item/ammo_casing/caseless/g11/incendiary
name = "4.73mm tracer cartridge"
projectile_type = /obj/item/projectile/bullet/a473/incendiary
-
+
/obj/item/ammo_casing/caseless/g11/uraniumtipped
name = "4.73mm U-235 cartridge"
projectile_type = /obj/item/projectile/bullet/a473/uraniumtipped
-
+
/obj/item/ammo_casing/caseless/g11/dumdum
name = "4.73mm flat-nose cartridge"
projectile_type = /obj/item/projectile/bullet/a473/dumdum
@@ -27,3 +27,11 @@
caliber = "473mm"
icon_state = "762-casing"
projectile_type = /obj/item/projectile/bullet/a473/explosive
+
+/obj/item/ammo_casing/caseless/g11/shock
+ name = "4.73mm electro-static discharge cartridge"
+ projectile_type = /obj/item/projectile/bullet/a473/shock
+
+/obj/item/ammo_casing/caseless/g11/hv
+ name = "4.73mm highvelocity cartridge"
+ projectile_type = /obj/item/projectile/bullet/a473/hv
diff --git a/code/modules/projectiles/ammunition/caseless/misc.dm b/code/modules/projectiles/ammunition/caseless/misc.dm
index c184895c53..14076a6bde 100644
--- a/code/modules/projectiles/ammunition/caseless/misc.dm
+++ b/code/modules/projectiles/ammunition/caseless/misc.dm
@@ -4,9 +4,21 @@
projectile_type = /obj/item/projectile/bullet/reusable/magspear
caliber = "speargun"
icon_state = "magspear"
- throwforce = 15 //still deadly when thrown
+ throwforce = 30 //still deadly when thrown
throw_speed = 3
+/obj/item/ammo_casing/caseless/magspear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
+ if(!ishuman(hit_atom))
+ return ..()
+ var/mob/living/carbon/human/H = hit_atom
+ if(istype(H.get_active_held_item(), /obj/item/gun/ballistic/automatic/speargun))
+ var/obj/item/gun/ballistic/automatic/speargun/SG = H.get_active_held_item()
+ if(LAZYLEN(SG.magazine.stored_ammo))
+ return ..()
+ SG.magazine.give_round(src)
+ SG.chamber_round()
+ to_chat(H, "
[src] magnetically loads itself into the [SG]! ")
+
/obj/item/ammo_casing/caseless/laser
name = "laser casing"
desc = "You shouldn't be seeing this."
diff --git a/code/modules/projectiles/ammunition/energy/plasma.dm b/code/modules/projectiles/ammunition/energy/plasma.dm
index d104cb490d..0dd2d7c2cf 100644
--- a/code/modules/projectiles/ammunition/energy/plasma.dm
+++ b/code/modules/projectiles/ammunition/energy/plasma.dm
@@ -55,3 +55,15 @@
icon_state = "ion"
fire_sound = 'sound/f13weapons/plasma_pistol.ogg'
e_cost = 1000 //four shots and you're out. use them wisely.
+
+/obj/item/ammo_casing/energy/plasma/miner
+ projectile_type = /obj/item/projectile/f13plasma/repeater/mining
+ select_name = "mining plasma stream"
+ fire_sound = 'sound/f13weapons/plasma_rifle.ogg'
+ e_cost = 2.4 //this seems very low but the weapon fires 5 5-damage shots per burst and only fires in bursts
+
+/obj/item/ammo_casing/energy/plasma/sniper
+ projectile_type = /obj/item/projectile/f13plasma/plasmasniper
+ select_name = "plasma bolt"
+ fire_sound = 'sound/f13weapons/lasmusket_fire.ogg'
+ e_cost = 1000
diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
index 14843bde77..60b582dade 100644
--- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
+++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
@@ -6,14 +6,14 @@
////////////////////
-//Shotguns
+//Shotguns
/obj/item/ammo_box/shotgun
icon = 'icons/fallout/objects/guns/ammo.dmi'
max_ammo = 12
custom_materials = list(/datum/material/iron = 6000, /datum/material/blackpowder = 1000)
ammo_type = /obj/item/ammo_casing/shotgun
multiple_sprites = 1
-
+
/obj/item/ammo_box/shotgun/slug
name = "Slug shotgun ammo box"
desc = "A box full of shotgun shells."
@@ -44,13 +44,11 @@
ammo_type = /obj/item/ammo_casing/shotgun/rubbershot
icon_state = "stunbox"
-/obj/item/ammo_box/shotgun/improvised
+/obj/item/ammo_box/shotgun/improvised
name = "homemade shotgun shells"
desc = "Recycled paper, plastic, little pieces of metal and gunpowder. Loud but not very effective."
- w_class = WEIGHT_CLASS_SMALL
max_ammo = 8
multiple_sprites = 1
- custom_materials = list(/datum/material/iron = 2000, /datum/material/blackpowder = 500)
ammo_type = /obj/item/ammo_casing/shotgun/improvised
icon_state = "improvshotbag"
@@ -60,6 +58,11 @@
ammo_type = /obj/item/ammo_casing/shotgun/incendiary
icon_state = "mbox"
+/obj/item/ammo_box/shotgun/trainshot
+ name = "trainshot shotshell ammo box"
+ desc = "A box full of trainshot shells. For hunting trains, you suppose."
+ ammo_type = /obj/item/ammo_casing/shotgun/trainshot
+ icon_state = "trainshotbox"
//.22 LR
/obj/item/ammo_box/m22
@@ -77,6 +80,13 @@
desc = "A box of .22 rubber rounds. For when you want to be useless."
ammo_type = /obj/item/ammo_casing/a22/rubber
+/obj/item/ammo_box/m22/shock
+ name = "ammo box (.22lr electroshock)"
+ icon_state = "22shockbox"
+ multiple_sprites = 1
+ desc = "A box of .22 electroshock rounds."
+ ammo_type = /obj/item/ammo_casing/a22/shock
+
//9mm and .38
/obj/item/ammo_box/c9mm
name = "ammo box (9mm)"
@@ -88,15 +98,6 @@
max_ammo = 30
custom_materials = list(/datum/material/iron = 15000, /datum/material/blackpowder = 1000)
-/obj/item/ammo_box/c9mm/wounding
- name = "ammo box (9mm wounding)"
- icon = 'icons/fallout/objects/guns/ammo.dmi'
- icon_state = "9mmbox"
- multiple_sprites = 2
- caliber = "9mm"
- desc = "A box full of 9mm wounding bullets. They do more damage the closer you are."
- ammo_type = /obj/item/ammo_casing/c9mm/wounding
-
/obj/item/ammo_box/c9mm/rubber
name = "ammo box (9mm rubber)"
icon = 'icons/fallout/objects/guns/ammo.dmi'
@@ -105,6 +106,24 @@
caliber = "9mm"
ammo_type = /obj/item/ammo_casing/c9mm/rubber
+/obj/item/ammo_box/c9mm/acid
+ name = "ammo box (9mm acid-tipped)"
+ desc = "A box of 9mm acid-tipped rounds. This'll sting."
+ ammo_type = /obj/item/ammo_casing/c9mm/acid
+
+/obj/item/ammo_box/c9mm/incendiary
+ name = "ammo box (9mm incendiary-tipped)"
+ desc = "A box of 9mm incendiary-tipped rounds. This'll burn."
+ ammo_type = /obj/item/ammo_casing/c9mm/incendiary
+
+/obj/item/ammo_box/c9mm/improv
+ name = "bag with reloaded 9mm bullets"
+ desc = "The casings are worn, the gunpowder some homebrew mix of dubious quality. At least it goes bang."
+ icon_state = "improvshotbag"
+ multiple_sprites = 1
+ custom_materials = list(/datum/material/iron = 10000, /datum/material/blackpowder = 1000)
+ ammo_type = /obj/item/ammo_casing/c9mm/improv
+
/obj/item/ammo_box/c38box
name = "ammo box (.38)"
icon = 'icons/fallout/objects/guns/ammo.dmi'
@@ -122,14 +141,22 @@
multiple_sprites = 2
ammo_type = /obj/item/ammo_casing/c38/rubber
+/obj/item/ammo_box/c38box/acid
+ name = "ammo box (.38 acid-tipped)"
+ desc = "A box of .38 acid-tipped rounds. This'll sting."
+ ammo_type = /obj/item/ammo_casing/c38/acid
+
+/obj/item/ammo_box/c38box/incendiary
+ name = "ammo box (.38 incendiary-tipped)"
+ desc = "A box of .38 incendiary-tipped rounds. This'll burn."
+ ammo_type = /obj/item/ammo_casing/c38/incendiary
+
/obj/item/ammo_box/c38box/improvised
name = "bag with reloaded .38 bullets"
desc = "The casings are worn, the gunpowder some homebrew mix of dubious quality. At least it goes bang."
icon_state = "improvshotbag"
- w_class = WEIGHT_CLASS_SMALL
- max_ammo = 8
multiple_sprites = 1
- custom_materials = list(/datum/material/iron = 2000, /datum/material/blackpowder = 500)
+ ammo_type = /obj/item/ammo_casing/c38/improv
//10mm
@@ -145,36 +172,20 @@
/obj/item/ammo_box/c10mm/fire
- name = "ammo box (10mm Incendiary)"
- icon_state = "10mmbox"
- max_ammo = 20
+ name = "ammo box (10mm incendiary-tipped)"
+ desc = "A box of 10mm incendiary-tipped rounds. This'll burn."
icon = 'icons/fallout/objects/guns/ammo.dmi'
- icon_state = "10mmbox"
- multiple_sprites = 2
ammo_type = /obj/item/ammo_casing/c10mm/incendiary
/obj/item/ammo_box/c10mm/rubber
name = "ammo box (10mm rubber)"
- icon = 'icons/fallout/objects/guns/ammo.dmi'
- icon_state = "10mmbox"
- multiple_sprites = 2
ammo_type = /obj/item/ammo_casing/c10mm/rubber
-/obj/item/ammo_box/c10mm/wounding
- name = "ammo box (10mm wounding)"
- icon = 'icons/fallout/objects/guns/ammo.dmi'
- icon_state = "10mmbox"
- multiple_sprites = 2
- ammo_type = /obj/item/ammo_casing/c10mm/wounding
-
/obj/item/ammo_box/c10mm/improvised
name = "bag with reloaded 10mm bullets"
desc = "The casings are worn, the gunpowder some homebrew mix of dubious quality. At least it goes bang."
icon_state = "improvshotbag"
- w_class = WEIGHT_CLASS_SMALL
- max_ammo = 8
multiple_sprites = 1
- custom_materials = list(/datum/material/iron = 2000, /datum/material/blackpowder = 500)
//.357 Magnum
/obj/item/ammo_box/a357box
@@ -190,13 +201,27 @@
/obj/item/ammo_box/a357box/ricochet
name = "ammo box (.357 Magnum ricochet)"
- max_ammo = 6
- icon = 'icons/fallout/objects/guns/ammo.dmi'
- icon_state = "357box"
- multiple_sprites = 2
- desc = "Six shots...more than enough to kill anything that moves."
+ desc = "Six shots...more than enough to kill anything that moves. This box has thirty, so you can kill five things."
ammo_type = /obj/item/ammo_casing/a357/ricochet
+
+/obj/item/ammo_box/a357box/incendiary
+ name = "ammo box (.357 magnum incendiary-tipped)"
+ desc = ".357 incendiary-tipped ammo. There's not much else to it."
+ ammo_type = /obj/item/ammo_casing/a357/incendiary
+
+/obj/item/ammo_box/a357box/acid
+ name = "ammo box (.357 magnum acid-tipped)"
+ desc = ".357 acid-tipped ammo. There's not much else to it, really."
+ ammo_type = /obj/item/ammo_casing/a357/acid
+
+/obj/item/ammo_box/a357box/improvised
+ name = "bag with reloaded .357 bullets"
+ desc = "The casings are worn, the gunpowder some homebrew mix of dubious quality. At least it goes bang."
+ ammo_type = /obj/item/ammo_casing/a357/improv
+ icon_state = "improvshotbag"
+ multiple_sprites = 1
+
//.44 Magnum
/obj/item/ammo_box/m44box
name = "ammo box (.44 Magnum FMJ)"
@@ -209,6 +234,12 @@
w_class = WEIGHT_CLASS_NORMAL
custom_materials = list(/datum/material/iron = 14000, /datum/material/blackpowder = 1000)
+/obj/item/ammo_box/m44box/incendiary
+ name = "ammo box (.44 magnum incendiary-tipped)"
+ desc = "A box of .44 (not 10mm) incendiary-tipped rounds. Filled with a safe homemade naplam made from phosphorus, welding fuel, thickened with abraxo cleaner."
+ icon = 'icons/fallout/objects/guns/ammo.dmi'
+ ammo_type = /obj/item/ammo_casing/m44/incendiary
+
/obj/item/ammo_box/a45lcbox
name = "ammo box (.45 Long Colt)"
icon = 'icons/fallout/objects/guns/ammo.dmi'
@@ -223,10 +254,7 @@
name = "bag with reloaded .44 bullets"
desc = "The casings are worn, the gunpowder some homebrew mix of dubious quality. At least it goes bang."
icon_state = "improvshotbag"
- w_class = WEIGHT_CLASS_SMALL
- max_ammo = 8
multiple_sprites = 1
- custom_materials = list(/datum/material/iron = 2000, /datum/material/blackpowder = 500)
// .45 ACP
@@ -249,22 +277,15 @@
ammo_type = /obj/item/ammo_casing/c45/rubber
/obj/item/ammo_box/c45/incendiary
- name = "ammo box (.45 incendiary)"
+ name = "ammo box (.45 incendiary-tipped)"
ammo_type = /obj/item/ammo_casing/c45/incendiary
- icon = 'icons/fallout/objects/guns/ammo.dmi'
- caliber = ".45"
- multiple_sprites = 2
- icon_state = "45box"
desc = "It's a completely safe idea to fill up a .45 pistol with napalm cartridges. This will not backfire." //it's telling the truth
/obj/item/ammo_box/c45/improvised
name = "bag with reloaded .45 ACP bullets"
desc = "The casings are worn, the gunpowder some homebrew mix of dubious quality. At least it goes bang."
icon_state = "improvshotbag"
- w_class = WEIGHT_CLASS_SMALL
- max_ammo = 8
multiple_sprites = 1
- custom_materials = list(/datum/material/iron = 2000, /datum/material/blackpowder = 500)
//.45-70 Gov't
@@ -279,6 +300,21 @@
w_class = WEIGHT_CLASS_NORMAL
custom_materials = list(/datum/material/iron = 16000, /datum/material/blackpowder = 1500)
+/obj/item/ammo_box/c4570box/explosive
+ name = "ammo box (.45-70 HE)"
+ desc = ".45-70 Goverment rounds with explosive tips. Surely an archaic blackpowder cartridge with an explosive payload is completely safe."
+ ammo_type = /obj/item/ammo_casing/c4570/explosive
+
+/obj/item/ammo_box/c4570box/acid
+ name = "ammo box (.45-70 acid-tip)"
+ desc = ".45-70 Goverment rounds with acid tips. Surely an archaic blackpowder cartridge with an acid tip is completely safe."
+ ammo_type = /obj/item/ammo_casing/c4570/acid
+
+/obj/item/ammo_box/c4570box/knockback
+ name = "ammo box (.45-70 ultradense)"
+ desc = ".45-70 Goverment rounds with heavy, blunt bullets. Sure to knock even an elephant off their footing."
+ ammo_type = /obj/item/ammo_casing/c4570/knockback
+
//5mm
/obj/item/ammo_box/m5mmbox
@@ -292,6 +328,11 @@
w_class = WEIGHT_CLASS_NORMAL
custom_materials = list(/datum/material/iron = 24000, /datum/material/blackpowder = 1500)
+/obj/item/ammo_box/m5mmbox/shock
+ name = "ammo box (5mm ESD)"
+ desc = "Advanced 5mm bullets with electrostatic discharger tips."
+ ammo_type = /obj/item/ammo_casing/m5mm/shock
+ custom_materials = list(/datum/material/iron = 24000, /datum/material/blackpowder = 1500, /datum/material/glass = 8000)
//5.56x45
/obj/item/ammo_box/a556
name = "ammo box (5.56 FMJ)"
@@ -317,28 +358,17 @@
caliber = "a556"
ammo_type = /obj/item/ammo_casing/a556/rubber
-/obj/item/ammo_box/a556/uraniumtipped
- name = "ammo box (5.56 uranium)"
- ammo_type = /obj/item/ammo_casing/a556/uraniumtipped
- desc = "Even the box is glowing!"
-
-/obj/item/ammo_box/a556/uraniumtipped/Initialize()
- . = ..()
- AddComponent(/datum/component/radioactive, 5, src, 0, TRUE, TRUE) //half-life of 0 because we keep on going.
- START_PROCESSING(SSradiation,src)
-
-/obj/item/ammo_box/a556/uraniumtipped/Destroy()
- STOP_PROCESSING(SSradiation,src)
- ..()
-
+/obj/item/ammo_box/a556/microshrapnel
+ name = "ammo box (5.56 microshrapnel)"
+ desc = "Now with fragments!"
+ ammo_type = /obj/item/ammo_casing/a556/microshrapnel
+ custom_materials = list(/datum/material/iron = 20000, /datum/material/blackpowder = 1000)
/obj/item/ammo_box/a556/sport/improvised
name = "bag with reloaded .223 bullets"
desc = "The casings are worn, the gunpowder some homebrew mix of dubious quality. At least it goes bang."
- w_class = WEIGHT_CLASS_SMALL
- max_ammo = 8
multiple_sprites = 1
- custom_materials = list(/datum/material/iron = 2000, /datum/material/blackpowder = 500)
+ custom_materials = list(/datum/material/iron = 2000, /datum/material/blackpowder = 500)
icon_state = "improvshotbag"
@@ -379,13 +409,17 @@
STOP_PROCESSING(SSradiation,src)
..()
+/obj/item/ammo_box/a762box/microshrapnel
+ name = "ammo box (7.62x51 microshrapnel)"
+ desc = "Now with EVEN MORE fragments!"
+ ammo_type = /obj/item/ammo_casing/a762/microshrapnel
+
/obj/item/ammo_box/a762box/rubber
name = "ammo box (7.62x51 rubber)"
icon = 'icons/fallout/objects/guns/ammo.dmi'
icon_state = "762box"
multiple_sprites = 2
caliber = "a762"
- ammo_type = /obj/item/ammo_casing/a762
ammo_type = /obj/item/ammo_casing/a762/rubber
@@ -409,6 +443,17 @@
caliber = "a50MG"
ammo_type = /obj/item/ammo_casing/a50MG/rubber
+/obj/item/ammo_box/a50MGbox/contam
+ name = "ammo box (12.7mm contaminated)"
+ max_ammo = 15
+ desc = "12.7mm bullets loaded with a gaseous hepatoxic payload, which reduces the effectiveness of medicine and toxins."
+ ammo_type = /obj/item/ammo_casing/a50MG/contam
+
+/obj/item/ammo_box/a50MGbox/uraniumtipped
+ name = "ammo box (12.7mm uranium-tipped)"
+ max_ammo = 15
+ desc = "12.7mm bullets loaded with enriched-uranium penetrators."
+ ammo_type = /obj/item/ammo_casing/a50MG/uraniumtipped
/obj/item/ammo_box/m14mm
name = "ammo box (14mm)"
@@ -421,7 +466,21 @@
w_class = WEIGHT_CLASS_NORMAL
custom_materials = list(/datum/material/iron = 11000, /datum/material/blackpowder = 1500)
+/obj/item/ammo_box/m14mm/contam
+ name = "ammo box (14mm contaminated)"
+ desc = "14mm bullets loaded with a gaseous hepatoxic payload, which reduces the effectiveness of medicine and toxins."
+ ammo_type = /obj/item/ammo_casing/p14mm/contam
+/obj/item/ammo_box/m14mm/uraniumtipped
+ name = "ammo box (14mm contaminated)"
+ desc = "14mm cartridges loaded with enriched uranium bullets."
+ ammo_type = /obj/item/ammo_casing/p14mm/uraniumtipped
+
+/obj/item/ammo_box/m14mm/improv
+ name = "bag with reloaded 14mm bullets"
+ desc = "The casings are worn, the gunpowder some homebrew mix of dubious quality. At least it goes bang. Should you really be handloading 14mm like this?"
+ icon_state = "improvshotbag"
+ multiple_sprites = 1
//Misc.
/obj/item/ammo_box/m473
@@ -432,6 +491,35 @@
ammo_type = /obj/item/ammo_casing/caseless/g11
max_ammo = 50
+/obj/item/ammo_box/m473/rubber
+ name = "ammo box (4.73mm less-than-lethal)"
+ ammo_type = /obj/item/ammo_casing/caseless/g11/rubber
+
+/obj/item/ammo_box/m473/incendiary
+ name = "ammo box (4.73mm incendiary)"
+ ammo_type = /obj/item/ammo_casing/caseless/g11/incendiary
+
+/obj/item/ammo_box/m473/uraniumtipped
+ name = "ammo box (4.73mm uranium-tipped)"
+ ammo_type = /obj/item/ammo_casing/caseless/g11/uraniumtipped
+
+/obj/item/ammo_box/m473/dumdum
+ name = "ammo box (4.73mm flat-nose)"
+ ammo_type = /obj/item/ammo_casing/caseless/g11/dumdum
+
+/obj/item/ammo_box/m473/explosive
+ name = "ammo box (4.73mm explosive)"
+ desc = "Explosive caseless rounds. Very safe."
+ ammo_type = /obj/item/ammo_casing/caseless/g11/explosive
+
+/obj/item/ammo_box/m473/shock
+ name = "ammo box (4.73mm ESD)"
+ ammo_type = /obj/item/ammo_casing/caseless/g11/shock
+
+/obj/item/ammo_box/m473/hv
+ name = "ammo box (4.73mm high-velocity)"
+ ammo_type = /obj/item/ammo_casing/caseless/g11/hv
+
/obj/item/ammo_box/lasmusket
name = "Battery box (Laser musket)"
icon = 'icons/fallout/objects/guns/ammo.dmi'
@@ -447,7 +535,7 @@
icon = 'icons/fallout/objects/guns/ammo.dmi'
icon_state = "plasmusketbox"
multiple_sprites = 2
- ammo_type = /obj/item/ammo_casing/caseless/plasmacaster
+ ammo_type = /obj/item/ammo_casing/caseless/plasmamusket
max_ammo = 6
custom_materials = list(MAT_METAL = 1000)
w_class = WEIGHT_CLASS_NORMAL
@@ -588,7 +676,7 @@
/obj/item/ammo_box/a45lcrev/empty
start_empty = 1
-
+
//.45-70 Gov't
/obj/item/ammo_box/c4570
name = "speed loader (.45-70)"
@@ -678,6 +766,9 @@
custom_materials = list(/datum/material/iron = 2000)
w_class = WEIGHT_CLASS_SMALL
+/obj/item/ammo_box/a762/empty
+ start_empty = 1
+
/obj/item/ammo_box/a308
name = "stripper clip (.308)"
desc = "A stripper clip."
@@ -689,6 +780,9 @@
custom_materials = list(/datum/material/iron = 2000)
w_class = WEIGHT_CLASS_SMALL
+/obj/item/ammo_box/a308/empty
+ start_empty = 1
+
/obj/item/ammo_box/a762/doublestacked
name = "double stack stripper clip (.308)"
desc = "A stripper clip."
@@ -700,6 +794,9 @@
custom_materials = list(/datum/material/iron = 2000)
w_class = WEIGHT_CLASS_SMALL
+/obj/item/ammo_box/a762/doublestacked/empty
+ start_empty = 1
+
//5.56x45mm
/obj/item/ammo_box/a556/stripper
name = "stripper clip (5.56x45mm)"
@@ -758,6 +855,11 @@
ammo_type = /obj/item/ammo_casing/a50MG/penetrator
icon_state = "50ap"
+/obj/item/ammo_box/a50MG/uraniumtipped
+ name = "anti-materiel uranium-tipped ammo rack (.50MG)"
+ desc = "5 rounds of uranium-tipped .50 MG, when you really want something to remember what it was like back in '77.'"
+ ammo_type = /obj/item/ammo_casing/a50MG/uraniumtipped
+ icon_state = "50ap"
////////////////////////////////
// FLAMER FUEL AND OTHER MISC //
diff --git a/code/modules/projectiles/boxes_magazines/external/lmg.dm b/code/modules/projectiles/boxes_magazines/external/lmg.dm
index 7d587ac045..91973467be 100644
--- a/code/modules/projectiles/boxes_magazines/external/lmg.dm
+++ b/code/modules/projectiles/boxes_magazines/external/lmg.dm
@@ -70,14 +70,6 @@
/obj/item/ammo_box/magazine/mg34/empty
start_empty = 1
-/obj/item/ammo_box/magazine/m2mm
- name = "2mm electromagnetic magazine"
- icon_state = "2mm"
- ammo_type = /obj/item/ammo_casing/c2mm
- caliber = "2mm"
- max_ammo = 10
- multiple_sprites = 2
-
/obj/item/ammo_box/magazine/mm762
name = "ammo belt (.308)"
icon_state = "762belt"
diff --git a/code/modules/projectiles/boxes_magazines/external/pistol.dm b/code/modules/projectiles/boxes_magazines/external/pistol.dm
index 08adcd679c..3e5f06c992 100644
--- a/code/modules/projectiles/boxes_magazines/external/pistol.dm
+++ b/code/modules/projectiles/boxes_magazines/external/pistol.dm
@@ -53,7 +53,7 @@
icon_state = "m9mmds"
ammo_type = /obj/item/ammo_casing/c9mm
caliber = "9mm"
- max_ammo = 15
+ max_ammo = 13
multiple_sprites = 2
diff --git a/code/modules/projectiles/boxes_magazines/external/rifle.dm b/code/modules/projectiles/boxes_magazines/external/rifle.dm
index b1302966a7..84b9f9bc3b 100644
--- a/code/modules/projectiles/boxes_magazines/external/rifle.dm
+++ b/code/modules/projectiles/boxes_magazines/external/rifle.dm
@@ -148,6 +148,14 @@
max_ammo = 50
multiple_sprites = 2
+/obj/item/ammo_box/magazine/m473
+ name = "g11 magazine (4.73mm)"
+ icon_state = "473mm"
+ caliber = "473mm"
+ ammo_type = /obj/item/ammo_casing/caseless/g11
+ max_ammo = 50
+ multiple_sprites = 2
+
/obj/item/ammo_box/magazine/m473/explosive
name = "g11 magazine (4.73mm explosive)"
icon_state = "473mm"
@@ -164,3 +172,19 @@
icon_state = "473small"
max_ammo = 20
+/obj/item/ammo_box/magazine/m473/small/empty
+ start_empty = 1
+
+/obj/item/ammo_box/magazine/m2mm
+ name = "2mm electromagnetic magazine"
+ icon_state = "2mm"
+ ammo_type = /obj/item/ammo_casing/c2mm
+ caliber = "2mm"
+ max_ammo = 10
+ multiple_sprites = 2
+
+/obj/item/ammo_box/magazine/m2mm/blender
+ name = "2mm \"Blender\" electromagnetic magazine"
+ ammo_type = /obj/item/ammo_casing/c2mm/blender
+ max_ammo = 10
+ multiple_sprites = 2
diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm
index 93f515ab00..27c60d021a 100644
--- a/code/modules/projectiles/boxes_magazines/external/smg.dm
+++ b/code/modules/projectiles/boxes_magazines/external/smg.dm
@@ -16,11 +16,11 @@
start_empty = TRUE
/obj/item/ammo_box/magazine/greasegun
- name = "Grease gun magazine (9mm)"
+ name = "SMG magazine (.45)"
icon = 'icons/fallout/objects/guns/ammo.dmi'
icon_state = "grease"
- ammo_type = /obj/item/ammo_casing/c9mm
- caliber = "9mm"
+ ammo_type = /obj/item/ammo_casing/c45
+ caliber = ".45"
max_ammo = 30
multiple_sprites = 2
diff --git a/code/modules/projectiles/boxes_magazines/internal/bow.dm b/code/modules/projectiles/boxes_magazines/internal/bow.dm
index 26ee2db20f..9f9f0ef219 100644
--- a/code/modules/projectiles/boxes_magazines/internal/bow.dm
+++ b/code/modules/projectiles/boxes_magazines/internal/bow.dm
@@ -1,11 +1,30 @@
/obj/item/ammo_box/magazine/internal/bow
- name = "bow... magazine?" //shouldn't be seeing this
+ name = "bow internal magazine"
ammo_type = /obj/item/ammo_casing/caseless/arrow
caliber = "arrow"
max_ammo = 1
- start_empty = 1
+
/obj/item/ammo_box/magazine/internal/bow/xbow
- name = "crossbow magazine" //shouldn't be seeing this
+ name = "crossbow magazine"
max_ammo = 4
start_empty = 1
+
+//Deathclaw Bow Ammo
+/obj/item/ammo_box/magazine/internal/bow/claw
+ name = "bow internal magazine"
+ ammo_type = /obj/item/ammo_casing/caseless/arrow
+ caliber = "arrow"
+ max_ammo = 7 // 8 shots in total
+
+//Sturdy Bow Ammo
+/obj/item/ammo_box/magazine/internal/bow/sturdy
+ max_ammo = 2 // 3 shots in total
+
+//Silver Bow Ammo
+/obj/item/ammo_box/magazine/internal/bow/silver
+ max_ammo = 5 // 6 shots in total
+
+//Crossbow Ammo
+/obj/item/ammo_box/magazine/internal/bow/cross
+ max_ammo = 3 // 4 shots in total
diff --git a/code/modules/projectiles/boxes_magazines/internal/misc.dm b/code/modules/projectiles/boxes_magazines/internal/misc.dm
index fca4e7c518..90303bcac1 100644
--- a/code/modules/projectiles/boxes_magazines/internal/misc.dm
+++ b/code/modules/projectiles/boxes_magazines/internal/misc.dm
@@ -22,40 +22,6 @@
caliber = "m5mm"
max_ammo = 480
-//Basic Bow Ammo
-/obj/item/ammo_box/magazine/internal/tribalbow
- name = "bow internal magazine"
- ammo_type = /obj/item/ammo_casing/caseless/arrow
- caliber = "arrow"
- max_ammo = 1 // 2 shots in total
-
-//Deathclaw Bow Ammo
-/obj/item/ammo_box/magazine/internal/bonebow
- name = "bow internal magazine"
- ammo_type = /obj/item/ammo_casing/caseless/arrow
- caliber = "arrow"
- max_ammo = 7 // 8 shots in total
-
-//Sturdy Bow Ammo
-/obj/item/ammo_box/magazine/internal/sturdybow
- name = "bow internal magazine"
- ammo_type = /obj/item/ammo_casing/caseless/arrow
- caliber = "arrow"
- max_ammo = 2 // 3 shots in total
-
-//Silver Bow Ammo
-/obj/item/ammo_box/magazine/internal/silverbow
- name = "bow internal magazine"
- ammo_type = /obj/item/ammo_casing/caseless/arrow
- caliber = "arrow"
- max_ammo = 5 // 6 shots in total
-
-//Crossbow Ammo
-/obj/item/ammo_box/magazine/internal/crossbow
- name = "bow internal magazine"
- ammo_type = /obj/item/ammo_casing/caseless/arrow
- caliber = "arrow"
- max_ammo = 3 // 4 shots in total
/obj/item/ammo_box/magazine/internal/m2flamethrower
name = "m2 flamethower fuel tank"
ammo_type = /obj/item/ammo_casing/caseless/flamethrower
diff --git a/code/modules/projectiles/boxes_magazines/internal/shotgun.dm b/code/modules/projectiles/boxes_magazines/internal/shotgun.dm
index f05b05ce3a..87ad6cccea 100644
--- a/code/modules/projectiles/boxes_magazines/internal/shotgun.dm
+++ b/code/modules/projectiles/boxes_magazines/internal/shotgun.dm
@@ -100,3 +100,11 @@
caliber = "plasmacaster"
max_ammo = 2
multiload = 1
+
+/obj/item/ammo_box/magazine/internal/plasmamusket
+ name = "plasmamusket magazine"
+ desc = "Oh god, this shouldn't be here"
+ ammo_type = /obj/item/ammo_casing/caseless/plasmamusket
+ caliber = "plasmacaster"
+ max_ammo = 2
+ multiload = 1
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 8cc7101712..d444c746f1 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -17,11 +17,11 @@ KEYWORDS
spread = 1
DOUBLE ACTION REVOLVER
- fire_delay = 5
+ fire_delay = 5
spread = 1
SEMI-AUTOMATIC PISTOL
- fire_delay = 3-5
+ fire_delay = 3-5
spread = 2
SEMI-AUTOMATIC RIFLE
@@ -38,7 +38,7 @@ KEYWORDS
burst_shot_delay = 3
spread = 7-12
- REPEATER
+ REPEATER
fire_delay = 6
spread = 0
@@ -86,14 +86,14 @@ GENERAL RULES
SMALL GUNS
slowdown = 0.1-0.2
w_class = WEIGHT_CLASS_SMALL
- weapon_weight = WEAPON_LIGHT - MEDIUM
+ weapon_weight = WEAPON_LIGHT - MEDIUM
MEDIUM GUNS
slowdown = 0.3-0.4
w_class = WEIGHT_CLASS_NORMAL - BULKY
- weapon_weight = WEAPON_MEDIUM - HEAVY
+ weapon_weight = WEAPON_MEDIUM - HEAVY
- RIFLES
+ RIFLES
slowdown = 0.5
w_class = WEIGHT_CLASS_BULKY
weapon_weight = WEAPON_HEAVY
@@ -235,8 +235,6 @@ ATTACHMENTS
var/suppressor_y_offset = 0
var/equipsound = 'sound/f13weapons/equipsounds/pistolequip.ogg'
- var/isenergy = null
- var/isbow = null
var/extra_damage = 0 //Number to add to individual bullets.
var/extra_penetration = 0 //Number to add to armor penetration of individual bullets.
@@ -252,8 +250,10 @@ ATTACHMENTS
var/worn_out = FALSE //If true adds overlay with suffix _worn, and a slight malus to stats
/// Just 'slightly' snowflakey way to modify projectile damage for projectiles fired from this gun.
// var/projectile_damage_multiplier = 1
+ var/dryfire_sound = "gun_dry_fire"
+ var/dryfire_text = "*click*"
- var/automatic = 0 //can gun use it, 0 is no, anything above 0 is the delay between clicks in ds
+ var/automatic = 0 //can gun use it, 0 is no, anything above 0 is the delay between clicks in ds
/obj/item/gun/Initialize()
. = ..()
@@ -319,15 +319,8 @@ ATTACHMENTS
return TRUE
/obj/item/gun/proc/shoot_with_empty_chamber(mob/living/user as mob|obj)
- if (isenergy == TRUE)
- to_chat(user, "
*power failure* ")
- playsound(src, 'sound/f13weapons/noammoenergy.ogg', 30, 1)
- return
- if (isbow == TRUE)
- to_chat(user, "
*no arrows* ") //Insert cool plink plink sound here
- return
- to_chat(user, "
*click* ")
- playsound(src, "gun_dry_fire", 30, 1)
+ to_chat(user, "
[dryfire_text] ")
+ playsound(src, dryfire_sound, 30, 1)
/obj/item/gun/proc/shoot_live_shot(mob/living/user, pointblank = FALSE, mob/pbtarget, message = 1, stam_cost = 0)
if(recoil)
@@ -455,6 +448,7 @@ ATTACHMENTS
addtimer(CALLBACK(G, /obj/item/gun.proc/process_fire, target, user, TRUE, params, null, bonus_spread, stam_cost), loop_counter)
var/stam_cost = getstamcost(user)
+
process_fire(target, user, TRUE, params, null, bonus_spread, stam_cost)
/obj/item/gun/can_trigger_gun(mob/living/user)
@@ -529,7 +523,9 @@ ATTACHMENTS
else if(burst_size > 1 && burst_spread)
randomized_gun_spread = rand(0, burst_spread)
var/randomized_bonus_spread = rand(0, bonus_spread)
-
+ if(HAS_TRAIT(user, SPREAD_CONTROL))
+ randomized_gun_spread = max(0, randomized_gun_spread-8)
+ randomized_bonus_spread = max(0, randomized_bonus_spread-8)
if(burst_size > 1)
do_burst_shot(user, target, message, params, zone_override, sprd, randomized_gun_spread, randomized_bonus_spread, rand_spr, 1)
for(var/i in 2 to burst_size)
@@ -680,7 +676,7 @@ ATTACHMENTS
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return
-
+
if(can_flashlight && gun_light)
I.play_tool_sound(src)
var/obj/item/flashlight/seclite/S = gun_light
@@ -820,7 +816,7 @@ ATTACHMENTS
. += knife_overlay
else
knife_overlay = null
-
+
if(scope)
if(scope.icon_state in icon_states('icons/fallout/objects/guns/attachments.dmi'))
scope_overlay = scope.icon_state
@@ -964,7 +960,7 @@ ATTACHMENTS
UnregisterSignal(user, COMSIG_MOVABLE_MOVED)
user.client.change_view(CONFIG_GET(string/default_view))
user.client.pixel_x = 0
- user.client.pixel_y = 0
+ user.client.pixel_y = 0
/obj/item/gun/proc/rotate(mob/living/user, old_dir, direction = FALSE)
var/_x = 0
@@ -981,7 +977,7 @@ ATTACHMENTS
user.client.change_view(zoom_out_amt)
user.client.pixel_x = world.icon_size*_x
user.client.pixel_y = world.icon_size*_y
-
+
//Proc, so that gun accessories/scopes/etc. can easily add zooming.
/obj/item/gun/proc/build_zooming()
if(azoom)
@@ -1260,4 +1256,3 @@ ICON UPDATE FOR GRADUAL DEPLETION, PLASTIC MAGS ETC
/obj/item/gun/ballistic/automatic/wt550/update_icon_state()
icon_state = "wt550[magazine ? "-[CEILING(((get_ammo(FALSE) / magazine.max_ammo) * 20) /4, 1)*4]" : "-0"]" //Sprites only support up to 20.
*/
-
diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm
index 462af0b365..220fe1d26a 100644
--- a/code/modules/projectiles/guns/ballistic/automatic.dm
+++ b/code/modules/projectiles/guns/ballistic/automatic.dm
@@ -16,7 +16,7 @@
weapon_weight = WEAPON_HEAVY
slot_flags = 0
force = 15
- burst_size = 2
+ burst_size = 1
burst_shot_delay = 3
var/automatic_burst_overlay = TRUE
var/semi_auto = FALSE
@@ -24,6 +24,7 @@
var/auto_eject_sound = null
var/alarmed = 0
var/select = 1
+ var/is_automatic = FALSE
can_suppress = FALSE
equipsound = 'sound/f13weapons/equipsounds/riflequip.ogg'
@@ -85,7 +86,10 @@
/obj/item/gun/ballistic/automatic/ui_action_click(mob/user, action)
if(istype(action, /datum/action/item_action/toggle_firemode))
- burst_select()
+ if(is_automatic == FALSE)
+ burst_select()
+ if(is_automatic == TRUE)
+ auto_select()
else
return ..()
@@ -108,6 +112,25 @@
var/datum/action/A = X
A.UpdateButtonIcon()
+/obj/item/gun/ballistic/automatic/proc/auto_select()
+ var/mob/living/carbon/human/user = usr
+ if(semi_auto)
+ to_chat(user, "
This weapon is semi-automatic only. ")
+ return
+ else
+ select = !select
+ if(!select)
+ disable_auto()
+ to_chat(user, "
You switch to semi-automatic. ")
+ else
+ enable_auto()
+ to_chat(user, "
You switch to automatic fire. ")
+ playsound(user, 'sound/weapons/empty.ogg', 100, 1)
+ update_icon()
+ for(var/X in actions)
+ var/datum/action/A = X
+ A.UpdateButtonIcon()
+
/obj/item/gun/ballistic/automatic/proc/enable_burst()
burst_size = initial(burst_size)
if(auto_sear)
@@ -120,6 +143,12 @@
/obj/item/gun/ballistic/automatic/proc/disable_burst()
burst_size = initial(burst_size)
+/obj/item/gun/ballistic/automatic/proc/enable_auto()
+ automatic = 1
+
+/obj/item/gun/ballistic/automatic/proc/disable_auto()
+ automatic = 0
+
/obj/item/gun/ballistic/automatic/can_shoot()
return get_ammo()
@@ -169,22 +198,6 @@
force = 12
actions_types = list(/datum/action/item_action/toggle_firemode)
-
-//Rockwell gun Keywords: 9mm, Automatic, 20/32 rounds. Special modifiers: damage -2
-/obj/item/gun/ballistic/automatic/smg/rockwell
- name = "Rockwell gun"
- desc = "Post-war submachine gun in 9mm, based on old schematics by T.G. Rockwell for home-made weapons if under enemy occupation. The Rockwell is basically a toploaded sten gun with a pistol grip, allowing makeshift magazines without a spring."
- icon_state = "rockwell"
- item_state = "rockwell"
- mag_type = /obj/item/ammo_box/magazine/uzim9mm
- init_mag_type = /obj/item/ammo_box/magazine/uzim9mm/rockwell
- burst_shot_delay = 2.75
- recoil = 0.1
- spread = 12
- extra_damage = 18
- can_attachments = TRUE
- actions_types = null
-
//American 180 Keywords: .22 LR, Automatic, 180 rounds
/obj/item/gun/ballistic/automatic/smg/american180
name = "American 180"
@@ -195,8 +208,12 @@
w_class = WEIGHT_CLASS_BULKY
mag_type = /obj/item/ammo_box/magazine/m22smg
can_unsuppress = FALSE
- burst_shot_delay = 1.5 //rapid fire
- extra_damage = 16
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 1.75
+ spread = 18
+ burst_shot_delay = 1.5
+ extra_damage = 11
suppressed = 1
actions_types = null
fire_sound = 'sound/f13weapons/american180.ogg'
@@ -205,13 +222,17 @@
//Greasegun Keywords: 9mm, Automatic, 30 rounds
/obj/item/gun/ballistic/automatic/smg/greasegun
name = "Grease Gun"
- desc = "An inexpensive submachine gun, downscaled and rechambered in 9mm. Very high rate of fire in bursts."
+ desc = "An inexpensive submachine gun. Has a relatively tame rate of fire."
icon_state = "grease_gun"
item_state = "smg9mm"
mag_type = /obj/item/ammo_box/magazine/greasegun
- spread = 8
- extra_damage = 19
- burst_shot_delay = 2.75
+ spread = 6
+ extra_damage = 20
+ burst_shot_delay = 3.25
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 3.25 //barely faster than semi-auto
+ spread = 14
can_attachments = TRUE
suppressor_state = "uzi_suppressor"
suppressor_x_offset = 26
@@ -219,13 +240,13 @@
actions_types = list(/datum/action/item_action/toggle_firemode)
fire_sound = 'sound/f13weapons/greasegun.ogg'
-/obj/item/gun/ballistic/automatic/smg/greasegun/burst_select()
+/obj/item/gun/ballistic/automatic/smg/greasegun/auto_select()
var/mob/living/carbon/human/user = usr
switch(select)
if(0)
select += 1
- burst_size = 2
- spread = 8
+ automatic = 1
+ spread = 14
fire_delay = 3.25
recoil = 0.1
weapon_weight = WEAPON_HEAVY
@@ -233,7 +254,7 @@
enable_burst()
if(1)
select = 0
- burst_size = 1
+ automatic = 0
fire_delay = 3.25
spread = 2
weapon_weight = WEAPON_MEDIUM
@@ -246,16 +267,17 @@
name = "beat up M3A1 Grease Gun"
desc = "What was once an inexpensive, but reliable submachine gun is now an inexpensive piece of shit. It's impressive this thing still fires at all."
can_attachments = FALSE
+ spread = 16.5
recoil = 0.3
- extra_damage = 17
+ extra_damage = 19
-/obj/item/gun/ballistic/automatic/smg/greasegun/worn/burst_select()
+/obj/item/gun/ballistic/automatic/smg/greasegun/worn/auto_select()
var/mob/living/carbon/human/user = usr
switch(select)
if(0)
select += 1
- burst_size = 2
- spread = 12.5
+ automatic = 1
+ spread = 16.5
fire_delay = 3.75
recoil = 0.3
weapon_weight = WEAPON_HEAVY
@@ -263,7 +285,7 @@
enable_burst()
if(1)
select = 0
- burst_size = 1
+ automatic = 0
fire_delay = 3.75
spread = 2
weapon_weight = WEAPON_HEAVY
@@ -282,6 +304,10 @@
icon_prefix = "smg10mm"
mag_type = /obj/item/ammo_box/magazine/m10mm_adv
init_mag_type = /obj/item/ammo_box/magazine/m10mm_adv/ext
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 2.25
+ spread = 12
extra_damage = 20
extra_penetration = 0.1
recoil = 0.05
@@ -302,13 +328,13 @@
extra_damage = 18
spread = 10
-/obj/item/gun/ballistic/automatic/smg/smg10mm/burst_select()
+/obj/item/gun/ballistic/automatic/smg/smg10mm/auto_select()
var/mob/living/carbon/human/user = usr
switch(select)
if(0)
select += 1
- burst_size = 2
- spread = 9
+ automatic = 1
+ spread = 12
fire_delay = 3.25
recoil = 0.1
weapon_weight = WEAPON_HEAVY
@@ -316,7 +342,7 @@
enable_burst()
if(1)
select = 0
- burst_size = 1
+ automatic = 0
fire_delay = 3.25
spread = 2
weapon_weight = WEAPON_MEDIUM
@@ -334,7 +360,11 @@
mag_type = /obj/item/ammo_box/magazine/uzim9mm
fire_delay = 3
burst_shot_delay = 2.5
- extra_damage = 18
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 2
+ spread = 18
+ extra_damage = 15
can_suppress = TRUE
can_attachments = TRUE
spread = 10
@@ -343,21 +373,21 @@
suppressor_y_offset = 16
actions_types = list(/datum/action/item_action/toggle_firemode)
-/obj/item/gun/ballistic/automatic/smg/mini_uzi/burst_select()
+/obj/item/gun/ballistic/automatic/smg/mini_uzi/auto_select()
var/mob/living/carbon/human/user = usr
switch(select)
if(0)
select += 1
- burst_size = 2
- spread = 11
+ automatic = 1
+ spread = 16
fire_delay = 3
- recoil = 0.1
+ recoil = 0.2
weapon_weight = WEAPON_HEAVY
to_chat(user, "
You switch to automatic fire. ")
enable_burst()
if(1)
select = 0
- burst_size = 1
+ automatic = 0
fire_delay = 3
spread = 3
weapon_weight = WEAPON_MEDIUM
@@ -374,9 +404,12 @@
icon_state = "cg45"
item_state = "cg45"
mag_type = /obj/item/ammo_box/magazine/cg45
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 2.25
+ spread = 12
fire_delay = 3.5
extra_damage = 20
- spread = 8
recoil = 0.1
can_attachments = TRUE
fire_sound = 'sound/f13weapons/10mm_fire_03.ogg'
@@ -393,7 +426,9 @@
mag_type = /obj/item/ammo_box/magazine/tommygunm45
init_mag_type = /obj/item/ammo_box/magazine/tommygunm45/stick
fire_sound = 'sound/weapons/gunshot_smg.ogg'
- burst_size = 3
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 2.25
burst_shot_delay = 2.75
fire_delay = 3.75
extra_damage = 25
@@ -405,11 +440,9 @@
name = "Storm Drum"
desc = "A recovered ancient Thompson from an armory far up North. Commonly used by raiders of the White Legs tribe."
mag_type = /obj/item/ammo_box/magazine/tommygunm45/stick
- semi_auto = TRUE
fire_delay = 3.75
extra_damage = 23
- burst_size = 2
- spread = 10
+ spread = 19
//P90 Keywords: 10mm, Automatic, 50 rounds. Special modifiers: damage +1
/obj/item/gun/ballistic/automatic/smg/p90
@@ -421,9 +454,12 @@
mag_type = /obj/item/ammo_box/magazine/m10mm_p90
extra_damage = 22
extra_penetration = 0.15
- burst_size = 3
+ burst_size = 1
fire_delay = 3
- spread = 7
+ spread = 14
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 2
burst_shot_delay = 2.5
extra_damage = 1
recoil = 0.25
@@ -436,8 +472,8 @@
/obj/item/gun/ballistic/automatic/smg/p90/worn
name = "Worn FN P90c"
desc = "A FN P90 manufactured by Fabrique Nationale. This one is beat to hell but still works."
- fire_delay = 4
- burst_size = 2
+ autofire_shot_delay = 2.25
+ spread = 16
extra_damage = 20
@@ -448,8 +484,11 @@
icon_state = "mp5"
item_state = "fnfal"
mag_type = /obj/item/ammo_box/magazine/uzim9mm
- spread = 8
+ spread = 10
fire_delay = 3.5
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 2
burst_shot_delay = 2
extra_damage = 18
suppressed = 1
@@ -469,8 +508,10 @@
w_class = WEIGHT_CLASS_BULKY
mag_type = /obj/item/ammo_box/magazine/pps9mm
spread = 20
- burst_size = 3
fire_delay = 6
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 2.25
burst_shot_delay = 1.5
extra_damage = 18
extra_penetration = 0.05
@@ -564,23 +605,25 @@
icon_state = "[initial(icon_state)][magazine ? "-[magazine.max_ammo]" : ""][chambered ? "" : "-e"][stock ? "" : "-f"]"
-//WT-550 4.7mm, 20 round magazine, low damage/low AP
+//WT-550 4.7mm, 20 round magazine
/obj/item/gun/ballistic/automatic/wt550
- name = "Prototype Carbine"
- desc = "A carbine made by vault-tec, chambered in a curious caseless round and designed to fire a multitude of bullets. It has 'WT-550' on the side. This one looks like it was repaired by the Oasis citizenry."
- item_state = "wt550"
+ name = "WT-550"
+ desc = "A compact PDW derived from the G11, firing the same 4.73mm rounds."
+ item_state = "WT550"
mag_type = /obj/item/ammo_box/magazine/m473/small
- semi_auto = TRUE
burst_size = 1
- extra_damage = 15
+ is_automatic = TRUE
+ automatic = TRUE
+ extra_damage = 20
+ autofire_shot_delay = 1.75
extra_penetration = 0.2
w_class = WEIGHT_CLASS_NORMAL
weapon_weight = WEAPON_MEDIUM
- spread = 0 //low-recoil + forward grip
- fire_delay = 3
-
-
-
+ spread = 0
+ fire_delay = 1
+ can_bayonet = TRUE
+ knife_x_offset = 25
+ knife_y_offset = 12
////////////////////
//SEMI-AUTO RIFLES//
@@ -645,6 +688,23 @@
scope_x_offset = 6
scope_y_offset = 14
+//'Verminkiller' Keywords: 5.56, 10/20/30 round magazine, Suppressed, Scoped, 25 damage
+//Basically an obtainable ratslayer
+/obj/item/gun/ballistic/automatic/varmint/verminkiller
+ name = "verminkiller rifle"
+ desc = "Legends are told of the \"Ratslayer\", a custom-made souped-up varmint rifle with a sick paintjob. This is a pale imitation, made of chopped-up bits of other guns."
+ icon_state = "verminrifle"
+ item_state = "ratslayer"
+ extra_damage = 25
+ suppressed = 1
+ zoomable = TRUE
+ zoom_amt = 10
+ zoom_out_amt = 13
+ can_scope = FALSE
+ can_unsuppress = FALSE
+ suppressor_state = "none"
+ fire_sound = 'sound/weapons/Gunshot_large_silenced.ogg'
+
//Ratslayer Keywords: UNIQUE, 5.56, 10/20/30 round magazine, Suppressed, Scoped, Extra damage +3
/obj/item/gun/ballistic/automatic/varmint/ratslayer
name = "Ratslayer"
@@ -669,7 +729,7 @@
icon_prefix = "servicerifle"
mag_type = /obj/item/ammo_box/magazine/m556/rifle
slowdown = 0.45
- fire_delay = 3.5
+ fire_delay = 3
burst_size = 1
spread = 1
extra_damage = 25
@@ -708,9 +768,8 @@
name = "scout carbine"
desc = "A cut down version of the standard-issue service rifle tapped with mounting holes for a scope. Shorter barrel, lower muzzle velocity."
icon_state = "scout_carbine"
- fire_delay = 4
- spread = 1.1
- slowdown = 0.4
+ spread = 1.2
+ slowdown = 0.3
extra_damage = 25
can_scope = TRUE
scope_state = "scope_short"
@@ -723,7 +782,7 @@
//Police rifle Keywords: OASIS, 5.56mm, Semi-auto, 20 (10-50) round magazine
/obj/item/gun/ballistic/automatic/marksman/policerifle
name = "Police Rifle"
- desc = "A pre-war Rifle that has been constantly repaired and rebuilt by the Oasis Police Department. Held together by duct tape and prayers, it somehow still shoots."
+ desc = "A pre-war Rifle that has been constantly repaired and rebuilt by the Oasis Police Department. Held together by duct tape and prayers, it somehow still shoots. This one is chambered in 5.56."
icon = 'icons/fallout/objects/guns/ballistic.dmi'
lefthand_file = 'icons/fallout/onmob/weapons/guns_lefthand.dmi'
righthand_file = 'icons/fallout/onmob/weapons/guns_righthand.dmi'
@@ -769,6 +828,23 @@
suppressor_y_offset = 15
fire_sound = 'sound/f13weapons/marksman_rifle.ogg'
+/obj/item/gun/ballistic/automatic/marksman/policerifle
+ name = "Police Rifle"
+ desc = "A pre-war Rifle that has been constantly repaired and rebuilt by the Oasis Police Department. Held together by duct tape and prayers, it somehow still shoots. This one has been re-chambered to 5.56"
+ icon = 'icons/fallout/objects/guns/ballistic.dmi'
+ lefthand_file = 'icons/fallout/onmob/weapons/guns_lefthand.dmi'
+ righthand_file = 'icons/fallout/onmob/weapons/guns_righthand.dmi'
+ icon_prefix = "assault_carbine"
+ icon_state = "rifle-police"
+ item_state = "assault_carbine"
+ init_mag_type = /obj/item/ammo_box/magazine/m556/rifle
+ extra_damage = 25
+ extra_penetration = 0.1
+ spread = 1.1
+ fire_delay = 4.5
+ can_suppress = FALSE
+ can_scope = TRUE
+ zoomable = FALSE
//Colt Rangemaster Keywords: 7.62mm, Semi-auto, 10/20 round magazine, 35dmg
/obj/item/gun/ballistic/automatic/rangemaster
@@ -906,7 +982,7 @@
fire_sound = 'sound/f13weapons/hunting_rifle.ogg'
-//DKS 501 sniper rifle Keywords: .308, Semi-auto, 7 round magazine, Scoped, Extra speed +500, Fire delay +1, 45dmg
+//DKS 501 sniper rifle Keywords: .308, Semi-auto, 7 round magazine, Scoped, Extra speed +500, Fire delay +1, 45dmg
/obj/item/gun/ballistic/automatic/marksman/sniper
name = "sniper rifle"
desc = "A DKS 501, chambered in .308 Winchester. With a light polymer body, it's suited for long treks through the desert."
@@ -917,8 +993,8 @@
fire_delay = 8
burst_size = 1
extra_speed = 800
- extra_penetration = 0.25
- extra_damage = 45
+ extra_penetration = 0.2
+ extra_damage = 35
zoom_amt = 10
zoom_out_amt = 13
semi_auto = TRUE
@@ -946,8 +1022,12 @@
icon_state = "R82"
item_state = "R84"
icon_prefix = "r82"
- extra_damage = 28
+ extra_damage = 25
fire_delay = 2.5
+ is_automatic = TRUE
+ automatic = 1 //pseudo-automatic
+ autofire_shot_delay = 4
+ spread = 1.5
can_suppress = TRUE
suppressor_state = "rifle_suppressor"
suppressor_x_offset = 27
@@ -961,10 +1041,14 @@
icon_state = "assault_rifle"
item_state = "fnfal"
mag_type = /obj/item/ammo_box/magazine/m556/rifle
- fire_delay = 4
- spread = 8
+ fire_delay = 2.5
+ slowdown = 0.45
+ spread = 12
extra_damage = 23
- recoil = 0.1
+ recoil = 0.15
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 2.5
can_attachments = TRUE
can_bayonet = FALSE
bayonet_state = "rifles"
@@ -989,6 +1073,9 @@
spread = 9
fire_delay = 3.5
burst_shot_delay = 2
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 3
recoil = 0.6
can_suppress = FALSE
can_unsuppress = FALSE
@@ -1023,7 +1110,7 @@
can_bayonet = FALSE
fire_sound = 'sound/weapons/Gunshot_large_silenced.ogg'
-//Type 93 Chinese rifle Keywords: 5.56mm, Automatic, 20 (10-50) round magazine, 26dmg
+//Type 93 Chinese rifle Keywords: 5.56mm, Automatic, 20 (10-50) round magazine
/obj/item/gun/ballistic/automatic/type93
name = "type 93 assault rifle"
desc = "The Type 93 Chinese assault rifle was designed and manufactured by a Chinese industrial conglomerate for the People's Liberation Army during the Resource Wars, for the purpose of equipping the Chinese infiltrators and American fifth-columnists. Chambered in 5.56x45."
@@ -1032,10 +1119,13 @@
icon_prefix = "handmade_rifle"
mag_type = /obj/item/ammo_box/magazine/m556/rifle
fire_delay = 4
- spread = 10
+ spread = 14
extra_damage = 23
extra_penetration = 0.05
- recoil = 0.1
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 3
+ recoil = 0.2
can_suppress = TRUE
suppressor_state = "rifle_suppressor"
suppressor_x_offset = 27
@@ -1063,11 +1153,13 @@
item_state = "sniper"
slot_flags = SLOT_BACK
mag_type = /obj/item/ammo_box/magazine/m556/rifle
- burst_size = 3
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 2
burst_shot_delay = 1.5
extra_damage = 25
fire_delay = 3
- spread = 4
+ spread = 10
recoil = 0.1
can_attachments = FALSE
zoomable = TRUE
@@ -1078,7 +1170,7 @@
fire_sound = 'sound/f13weapons/bozar_fire.ogg'
-//Assault Carbine Keywords: 5mm, Automatic, 30 round magazine, Flashlight, 19dmg/0.15AP
+//Assault Carbine Keywords: 5mm, Automatic, 30 round magazine, Flashlight, 20dmg/0.25AP
/obj/item/gun/ballistic/automatic/assault_carbine
name = "assault carbine"
desc = "The U.S. army carbine version of the R91, made by Colt and issued to special forces."
@@ -1089,9 +1181,12 @@
mag_type = /obj/item/ammo_box/magazine/m5mm
fire_delay = 3
burst_shot_delay = 2.0
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 2.2
extra_damage = 20
extra_penetration = 0.25
- spread = 6 //high-velocity
+ spread = 10 //high-velocity
can_attachments = TRUE
can_scope = TRUE
scope_state = "scope_short"
@@ -1107,16 +1202,29 @@
flight_y_offset = 21
actions_types = list(/datum/action/item_action/toggle_firemode)
fire_sound = 'sound/f13weapons/assault_carbine.ogg'
-
-/obj/item/gun/ballistic/automatic/assault_carbine/worn
+
+ //Police rifle Keywords: OASIS, 5mm, Semi-auto, 30 round magazine
+/obj/item/gun/ballistic/automatic/assault_carbine/policerifle
+ name = "Police Rifle"
+ desc = "A pre-war Rifle that has been constantly repaired and rebuilt by the Oasis Police Department. Held together by duct tape and prayers, it somehow still shoots."
+ icon = 'icons/fallout/objects/guns/ballistic.dmi'
+ lefthand_file = 'icons/fallout/onmob/weapons/guns_lefthand.dmi'
+ righthand_file = 'icons/fallout/onmob/weapons/guns_righthand.dmi'
+ icon_state = "rifle-police"
+ autofire_shot_delay = 3.5 //not a real auto-gun
+ extra_damage = 22
+ spread = 9 //longer barrel
+ can_scope = TRUE
+
+/obj/item/gun/ballistic/automatic/assault_carbine/worn
name = "worn assault carbine"
desc = "The U.S. army carbine version of the R91, made by Colt and issued to special forces. This one is beat-up and falling apart."
icon_state = "assault_carbine"
fire_delay = 3.5
- burst_shot_delay = 2.5
- extra_penetration = 0.15
- spread = 10
- extra_damage = 18
+ burst_shot_delay = 2.2
+ spread = 14
+ extra_damage = 17
+ extra_penetration = 0.2
//FN-FAL Keywords: 7.62mm, Automatic, 10/20 round magazine
/obj/item/gun/ballistic/automatic/fnfal
@@ -1127,35 +1235,100 @@
force = 20
extra_damage = 30
fire_delay = 3.5
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 3
mag_type = /obj/item/ammo_box/magazine/m762
spread = 12
recoil = 0.25
actions_types = list(/datum/action/item_action/toggle_firemode)
fire_sound = 'sound/f13weapons/assaultrifle_fire.ogg'
+/obj/item/gun/ballistic/automatic/bar
+ name = "automatic rifle (.308)"
+ desc = "An ancient machine gun that looks like outdated even by pre-war standards. It has Colt etched on one-side and Sierra Madre on the other. It is alarmingly heavy for a rifle."
+ icon = 'icons/fallout/objects/guns/bar.dmi'
+ slot_flags = ITEM_SLOT_BACK
+ icon_state = "BAR"
+ item_state = "BAR"
+ icon_prefix = "BAR"
+ automatic = 1
+ force = 24 //club
+ slowdown = 1.25 //really goddamn big
+ autofire_shot_delay = 2.75
+ extra_damage = 28
+ spread = 12
+ recoil = 0.3
+ actions_types = list(/datum/action/item_action/toggle_firemode)
+ fire_sound = 'sound/f13weapons/assaultrifle_fire.ogg'
//H&K G11 Keywords: 4.73mm, Automatic, 50 round magazine
/obj/item/gun/ballistic/automatic/g11
name = "g11"
- desc = "This experimental german gun fires a caseless cartridge consisting of a block of propellant with a bullet buried inside. The weight and space savings allows for a very high magazine capacity. Chambered in 4.73mm."
+ desc = "This experimental gun fires a caseless cartridge consisting of a block of propellant with a bullet buried inside. The weight and space savings allows for a very high magazine capacity. Chambered in 4.73mm."
icon_state = "g11"
item_state = "g11"
mag_type = /obj/item/ammo_box/magazine/m473
- extra_damage = 23
- fire_delay = 2.5
- burst_shot_delay = 1.5
+ burst_size = 1
+ extra_damage = 22.5
+ fire_delay = 2
+ is_automatic = TRUE
+ automatic = FALSE
extra_penetration = 0.1
- extra_damage = 3
+ autofire_shot_delay = 1.75
+ burst_shot_delay = 0.5
can_attachments = TRUE
- can_automatic = TRUE
semi_auto = TRUE
can_scope = FALSE
- spread = 8
+ spread = 0
zoomable = TRUE
zoom_amt = 10
zoom_out_amt = 13
+ actions_types = list(/datum/action/item_action/toggle_firemode)
+ select = 0
+/obj/item/gun/ballistic/automatic/g11/ui_action_click(mob/user, action)
+ if(istype(action, /datum/action/item_action/toggle_firemode))
+ burst_select()
+ else
+ return ..()
+/obj/item/gun/ballistic/automatic/g11/burst_select()
+ var/mob/living/carbon/human/user = usr
+ switch(select)
+ if(0)
+ select += 1
+ if(burst_improvement)
+ burst_size = 5
+ else
+ burst_size = 3
+ automatic = FALSE
+ if(recoil_decrease)
+ burst_spread = 5.5
+ else
+ burst_spread = 7.5
+ recoil = 0.25
+ to_chat(user, "
You switch to burst fire. ")
+ if(1)
+ select += 1
+ burst_size = 1
+ automatic = TRUE
+ if(recoil_decrease)
+ burst_spread = 8.5
+ else
+ burst_spread = 12.5
+ recoil = 0.5
+ to_chat(user, "
You switch to full-auto. ")
+ if(2)
+ select = 0
+ burst_size = 1
+ automatic = FALSE
+ spread = 0
+ recoil = 0
+ to_chat(user, "
You switch to semi-auto. ")
+ playsound(user, 'sound/weapons/empty.ogg', 100, 1)
+ update_icon()
+ return
////////////////
//MACHINE-GUNS//
@@ -1171,35 +1344,16 @@
slowdown = 1
mag_type = /obj/item/ammo_box/magazine/lmg
extra_damage = 23
- burst_size = 1
fire_delay = 6
burst_shot_delay = 2.5
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 3
+ spread = 11
can_attachments = FALSE
- actions_types = list(/datum/action/item_action/toggle_firemode)
+ actions_types = null
fire_sound = 'sound/f13weapons/assaultrifle_fire.ogg'
-/obj/item/gun/ballistic/automatic/r84/burst_select()
- var/mob/living/carbon/human/user = usr
- switch(select)
- if(0)
- select += 1
- burst_size = 2
- spread = 8
- extra_damage = 23
- recoil = 0.25
- to_chat(user, "
You switch to burst fire. ")
- if(1)
- select = 0
- burst_size = 5
- spread = 14
- extra_damage = 23
- recoil = 0.75
- to_chat(user, "
You switch to full auto. ")
- playsound(user, 'sound/weapons/empty.ogg', 100, 1)
- update_icon()
- return
-
-
//LSW squad support weapon Keywords: 5.56mm, Automatic, 20 (10-50) round magazine, Scoped, Damage decrease (bullethose)
/obj/item/gun/ballistic/automatic/lsw
name = "LSW (Light Support Weapon)"
@@ -1255,15 +1409,18 @@
slot_flags = 0
slowdown = 1.25
mag_type = /obj/item/ammo_box/magazine/mm762
- burst_size = 1
burst_shot_delay = 1.5
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 3.25
fire_delay = 4
extra_damage = 28
- spread = 8
+ extra_penetration = 0.05
+ spread = 14 //open bolt machine gun with no stock
can_attachments = FALSE
var/cover_open = FALSE
var/require_twohands = FALSE
- actions_types = list(/datum/action/item_action/toggle_firemode)
+ actions_types = null
fire_sound = 'sound/f13weapons/assaultrifle_fire.ogg'
/obj/item/gun/ballistic/automatic/m1919/update_icon()
@@ -1313,27 +1470,6 @@
return
..()
-/obj/item/gun/ballistic/automatic/m1919/burst_select()
- var/mob/living/carbon/human/user = usr
- switch(select)
- if(0)
- select += 1
- burst_size = 2
- spread = 8
- extra_damage = 28
- recoil = 0.25
- to_chat(user, "
You switch to burst fire. ")
- if(1)
- select = 0
- burst_size = 4
- spread = 18
- extra_damage = 28
- recoil = 1
- to_chat(user, "
You switch to full auto. ")
- playsound(user, 'sound/weapons/empty.ogg', 100, 1)
- update_icon()
- return
-
////////
@@ -1366,9 +1502,12 @@
mag_type = /obj/item/ammo_box/magazine/m556/rifle
fire_delay = 2
burst_shot_delay = 2
+ is_automatic = TRUE
+ automatic = 1
+ autofire_shot_delay = 2.5
spawnwithmagazine = TRUE
extra_damage = 25
- spread = 4
+ spread = 8
can_attachments = TRUE
zoomable = TRUE
zoom_amt = 10
diff --git a/code/modules/projectiles/guns/ballistic/bow.dm b/code/modules/projectiles/guns/ballistic/bow.dm
index b482212d21..c3e5939bf2 100644
--- a/code/modules/projectiles/guns/ballistic/bow.dm
+++ b/code/modules/projectiles/guns/ballistic/bow.dm
@@ -1,69 +1,81 @@
/obj/item/gun/ballistic/bow
- name = "wooden bow"
- desc = "Some sort of primitive projectile weapon. Used to fire arrows."
+ name = "base bow"
+ desc = "base type of bow used to define features for multiple-loading bows"
icon_state = "bow"
item_state = "bow"
icon_prefix = "bow"
- w_class = WEIGHT_CLASS_BULKY
+ w_class = WEIGHT_CLASS_NORMAL
weapon_weight = WEAPON_HEAVY //need both hands to fire
force = 5
mag_type = /obj/item/ammo_box/magazine/internal/bow
fire_sound = 'sound/weapons/bowfire.wav'
slot_flags = ITEM_SLOT_BACK
item_flags = NONE
- casing_ejector = FALSE
inaccuracy_modifier = 0 //to counteract the innaccuracy from WEAPON_HEAVY, bows are supposed to be accurate but only able to be fired with both hands
pin = null
no_pin_required = TRUE
trigger_guard = TRIGGER_GUARD_NONE //so ashwalkers can use it
spawnwithmagazine = TRUE
+ var/recentdraw
+ var/draw_sound = 'sound/weapons/bowdraw.wav'
+ dryfire_text = "*no arrows*"
+ dryfire_sound = ""
-/obj/item/gun/ballistic/bow/shoot_with_empty_chamber()
- return
-
-/obj/item/gun/ballistic/bow/chamber_round()
- chambered = magazine.get_round(1)
+/obj/item/gun/ballistic/bow/process_chamber(mob/living/user, empty_chamber = 0)
+ var/obj/item/ammo_casing/AC = chambered //Find chambered round
+ if(istype(AC)) //there's a chambered round
+ if(casing_ejector)
+ AC.forceMove(drop_location()) //Eject casing onto ground.
+ AC.bounce_away(TRUE)
+ chambered = null
+ else if(empty_chamber)
+ chambered = null
-/obj/item/gun/ballistic/bow/process_chamber()
- chambered = null
- magazine.get_round(0)
- update_icon()
+/obj/item/gun/ballistic/bow/can_shoot()
+ return chambered
/obj/item/gun/ballistic/bow/attack_self(mob/living/user)
- if (chambered)
+ if(chambered)
user.put_in_hands(chambered)
chambered = null
+ update_icon()
to_chat(user, "
You gently release the bowstring, removing the arrow. ")
- else if (get_ammo())
- to_chat(user, "
You draw back the bowstring. ")
- playsound(src, 'sound/weapons/bowdraw.wav', 75, 0) //gets way too high pitched if the freq varies
- chamber_round()
+ return
+ if(recentdraw > world.time || !get_ammo(FALSE))
+ return
+ draw(user, TRUE)
+ recentdraw = world.time + 2
+ return
+
+/obj/item/gun/ballistic/bow/proc/draw(mob/M, visible = TRUE)
+ if(visible)
+ M.visible_message("
[M] draws the string on [src]! ", "
You draw the string on [src]! ")
+ playsound(M, draw_sound, 60, 1)
+ draw_load(M)
update_icon()
+ return 1
+
+/obj/item/gun/ballistic/bow/proc/draw_load(mob/M)
+ if(!magazine.ammo_count())
+ return 0
+ var/obj/item/ammo_casing/AC = magazine.get_round() //load next casing.
+ chambered = AC
-/obj/item/gun/ballistic/bow/attackby(obj/item/I, mob/user, params)
- if (magazine.attackby(I, user, params, 1))
- to_chat(user, "
You notch the arrow. ")
+/obj/item/gun/ballistic/bow/attackby(obj/item/A, mob/user, params)
+ if(magazine.attackby(A, user, params, 1))
+ to_chat(user, "
You load [A] into \the [src]. ")
update_icon()
-/obj/item/gun/ballistic/bow/update_icon_state()
+/obj/item/gun/ballistic/bow/update_icon()
icon_state = "[initial(icon_state)]_[get_ammo() ? (chambered ? "firing" : "loaded") : "unloaded"]"
-/obj/item/gun/ballistic/bow/can_shoot()
- return chambered
-
-/obj/item/gun/ballistic/bow/ashen
- name = "bone bow"
- desc = "Some sort of primitive projectile weapon made of bone and sinew. Used to fire arrows."
- icon_state = "ashenbow"
- item_state = "ashenbow"
- force = 8
-/obj/item/gun/ballistic/bow/pipe
- name = "pipe bow"
- desc = "Some sort of pipe-based projectile weapon made of string and lots of bending. Used to fire arrows."
- icon_state = "pipebow"
- item_state = "pipebow"
- force = 2
+/obj/item/gun/ballistic/bow/do_fire(atom/target, mob/living/user, message = TRUE, params, zone_override = "", bonus_spread = 0, stam_cost = 0)
+ ..()
+ if(HAS_TRAIT(user, TRAIT_AUTO_DRAW) && !chambered && get_ammo(FALSE))
+ user.visible_message("
[user] instinctively draws the string on [src]! ", "
You instinctively draw the string on [src]! ")
+ draw(user, FALSE)
+ recentdraw = world.time + 2
/obj/item/gun/ballistic/bow/xbow
name = "magazine-fed crossbow"
@@ -73,9 +85,63 @@
icon_prefix = "xbow"
extra_damage = 3 //generally won't reduce TTK, but does increase performance against armor, especially with AP arrows
mag_type = /obj/item/ammo_box/magazine/internal/bow/xbow
+ extra_speed = 400
-/obj/item/gun/ballistic/bow/xbow/attackby(obj/item/I, mob/user, params)
- if (magazine.attackby(I, user, params, 1))
- to_chat(user, "
You slide the arrow into the magazine. ")
- update_icon()
+//Regular Bow
+/obj/item/gun/ballistic/bow/tribal
+ name = "short bow"
+ desc = "A simple wooden bow with small pieces of turquiose, cheaply made and small enough to fit most bags, better then nothing I guess."
+ icon_state = "tribalbow"
+ item_state = "tribalbow"
+ icon_prefix = "tribalbow"
+ w_class = WEIGHT_CLASS_NORMAL
+ force = 10
+
+
+//Bone Bow
+/obj/item/gun/ballistic/bow/claw
+ name = "deathclaw bow"
+ desc = "A bone bow, made of pieces of sinew and deathclaw skin for extra structure, it is a fierce weapon that all expert hunters and bowmen carry, allowing for ease of firing many arrows."
+ icon_state = "ashenbow"
+ item_state = "ashenbow"
+ icon_prefix = "ashenbow"
+ force = 20
+ mag_type = /obj/item/ammo_box/magazine/internal/bow/claw
+ fire_delay = 2
+ extra_speed = 100
+
+//Sturdy Bow
+/obj/item/gun/ballistic/bow/sturdy
+ name = "sturdy bow"
+ desc = "A firm sturdy wooden bow with leather handles and sinew wrapping, for extra stopping power in the shot speed of the arrows."
+ force = 15
+ mag_type = /obj/item/ammo_box/magazine/internal/bow/sturdy
+ extra_speed = 300
+
+//Silver Bow
+/obj/item/gun/ballistic/bow/silver
+ name = "silver bow"
+ desc = "A firm sturdy silver bow created by the earth, its durability and rather strong material allow it to be an excellent option for those looking for the ability to fire more arrows than normally."
+ icon_state = "pipebow"
+ item_state = "pipebow"
+ icon_prefix = "pipebow"
+ force = 15
+ mag_type = /obj/item/ammo_box/magazine/internal/bow/silver
+ fire_delay = 1.5
+
+//Crossbow
+/obj/item/gun/ballistic/bow/crossbow
+ name = "crossbow"
+ desc = "A crossbow."
+ icon_state = "crossbow"
+ item_state = "crossbow"
+ icon_prefix = "crossbow"
+ force = 10
+ mag_type = /obj/item/ammo_box/magazine/internal/bow/cross
+ fire_delay = 1.5
+ extra_speed = 400
+ zoomable = TRUE
+ zoom_amt = 10
+ zoom_out_amt = 13
+ can_scope = FALSE
diff --git a/code/modules/projectiles/guns/ballistic/launchers.dm b/code/modules/projectiles/guns/ballistic/launchers.dm
index f085afbd4e..dc8764142d 100644
--- a/code/modules/projectiles/guns/ballistic/launchers.dm
+++ b/code/modules/projectiles/guns/ballistic/launchers.dm
@@ -56,8 +56,12 @@
burst_size = 1
fire_delay = 0
select = 0
- actions_types = list()
+ zoomable = TRUE
+ zoom_amt = 10
+ zoom_out_amt = 13
+ actions_types = list(/datum/action/item_action/retract_spears)
casing_ejector = FALSE
+ var/list/ourcasings = list()
/obj/item/gun/ballistic/automatic/speargun/ComponentInitialize()
. = ..()
@@ -73,6 +77,27 @@
update_icon()
chamber_round()
+/datum/action/item_action/retract_spears
+ name = "Magentize Spears"
+ desc = "Magnetically re-attract all your launched spears!"
+ check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_RESTRAINED|AB_CHECK_STUN|AB_CHECK_LYING
+ icon_icon = 'icons/mob/actions/actions_items.dmi'
+ button_icon_state = "recall_spear"
+
+/datum/action/item_action/retract_spears/Trigger()
+ var/obj/item/gun/ballistic/automatic/speargun/SG = target
+ var/obj/item/thethrown
+ for(var/i in SG.ourcasings)
+ thethrown = i
+ thethrown.safe_throw_at(owner, 50, 2)
+ SG.ourcasings.Cut()
+
+/datum/action/item_action/retract_spears/IsAvailable()
+ . = ..()
+ var/obj/item/gun/ballistic/automatic/speargun/SG = target
+ if(!LAZYLEN(SG.ourcasings))
+ return FALSE
+
/obj/item/gun/ballistic/rocketlauncher
name = "\improper rocket launcher"
desc = "Technically, this is actually a rocket propelled grenade launcher, rather than a true rocket launcher. The person you shot is unlikely to care much, though."
@@ -157,165 +182,3 @@
"
You look around after realizing you're still here, then proceed to choke yourself to death with [src]! ")
sleep(20)
return OXYLOSS
-
-//Regular Bow
-/obj/item/gun/ballistic/automatic/tribalbow
- name = "short bow"
- desc = "A simple wooden bow with small pieces of turquiose, cheaply made and small enough to fit most bags, better then nothing I guess."
- icon_state = "tribalbow"
- item_state = "tribalbow"
- w_class = WEIGHT_CLASS_NORMAL
- force = 10
- can_suppress = FALSE
- mag_type = /obj/item/ammo_box/magazine/internal/tribalbow
- fire_sound = 'sound/weapons/grenadelaunch.ogg'
- burst_size = 1
- fire_delay = 0.5
- select = 0
- actions_types = list()
- casing_ejector = FALSE
- isbow = TRUE
-
-/obj/item/gun/ballistic/automatic/tribalbow/update_icon()
- return
-
-/obj/item/gun/ballistic/automatic/tribalbow/attack_self()
- return
-
-/obj/item/gun/ballistic/automatic/tribalbow/attackby(obj/item/A, mob/user, params)
- var/num_loaded = magazine.attackby(A, user, params, 1)
- if(num_loaded)
- to_chat(user, "
You load [num_loaded] arrow\s into \the [src]. ")
- update_icon()
- chamber_round()
-
-//Bone Bow
-/obj/item/gun/ballistic/automatic/bonebow
- name = "deathclaw bow"
- desc = "A bone bow, made of pieces of sinew and deathclaw skin for extra structure, it is a fierce weapon that all expert hunters and bowmen carry, allowing for ease of firing many arrows."
- icon_state = "ashenbow_unloaded"
- item_state = "ashenbow"
- w_class = WEIGHT_CLASS_BULKY
- force = 20
- can_suppress = FALSE
- mag_type = /obj/item/ammo_box/magazine/internal/bonebow
- fire_sound = 'sound/weapons/grenadelaunch.ogg'
- burst_size = 1
- fire_delay = 2
- select = 0
- extra_speed = 100
- actions_types = list()
- casing_ejector = FALSE
- isbow = TRUE
-
-/obj/item/gun/ballistic/automatic/bonebow/update_icon()
- return
-
-/obj/item/gun/ballistic/automatic/bonebow/attack_self()
- return
-
-/obj/item/gun/ballistic/automatic/bonebow/attackby(obj/item/A, mob/user, params)
- var/num_loaded = magazine.attackby(A, user, params, 1)
- if(num_loaded)
- to_chat(user, "
You load [num_loaded] arrow\s into \the [src]. ")
- update_icon()
- chamber_round()
-
-//Sturdy Bow
-/obj/item/gun/ballistic/automatic/sturdybow
- name = "sturdy bow"
- desc = "A firm sturdy wooden bow with leather handles and sinew wrapping, for extra stopping power in the shot speed of the arrows."
- icon_state = "bow_unloaded"
- item_state = "bow"
- w_class = WEIGHT_CLASS_NORMAL
- force = 15
- can_suppress = FALSE
- mag_type = /obj/item/ammo_box/magazine/internal/sturdybow
- fire_sound = 'sound/weapons/grenadelaunch.ogg'
- burst_size = 1
- fire_delay = 1
- select = 0
- extra_speed = 300
- actions_types = list()
- casing_ejector = FALSE
- isbow = TRUE
-
-/obj/item/gun/ballistic/automatic/sturdybow/update_icon()
- return
-
-/obj/item/gun/ballistic/automatic/sturdybow/attack_self()
- return
-
-/obj/item/gun/ballistic/automatic/sturdybow/attackby(obj/item/A, mob/user, params)
- var/num_loaded = magazine.attackby(A, user, params, 1)
- if(num_loaded)
- to_chat(user, "
You load [num_loaded] arrow\s into \the [src]. ")
- update_icon()
- chamber_round()
-
-//Silver Bow
-/obj/item/gun/ballistic/automatic/silverbow
- name = "silver bow"
- desc = "A firm sturdy silver bow created by the earth, its durability and rather strong material allow it to be an excellent option for those looking for the ability to fire more arrows than normally."
- icon_state = "pipebow_unloaded"
- item_state = "pipebow"
- w_class = WEIGHT_CLASS_BULKY
- force = 15
- can_suppress = FALSE
- mag_type = /obj/item/ammo_box/magazine/internal/silverbow
- fire_sound = 'sound/weapons/grenadelaunch.ogg'
- burst_size = 1
- fire_delay = 1.5
- select = 0
- actions_types = list()
- casing_ejector = FALSE
- isbow = TRUE
-
-/obj/item/gun/ballistic/automatic/silverbow/update_icon()
- return
-
-/obj/item/gun/ballistic/automatic/silverbow/attack_self()
- return
-
-/obj/item/gun/ballistic/automatic/silverbow/attackby(obj/item/A, mob/user, params)
- var/num_loaded = magazine.attackby(A, user, params, 1)
- if(num_loaded)
- to_chat(user, "
You load [num_loaded] arrow\s into \the [src]. ")
- update_icon()
- chamber_round()
-
-//Crossbow
-/obj/item/gun/ballistic/automatic/crossbow
- name = "crossbow"
- desc = "A crossbow."
- icon_state = "crossbow"
- item_state = "crossbow"
- w_class = WEIGHT_CLASS_NORMAL
- force = 10
- can_suppress = FALSE
- mag_type = /obj/item/ammo_box/magazine/internal/crossbow
- fire_sound = 'sound/weapons/grenadelaunch.ogg'
- burst_size = 1
- fire_delay = 1.5
- select = 0
- extra_speed = 400
- actions_types = list()
- casing_ejector = FALSE
- isbow = TRUE
- zoomable = TRUE
- zoom_amt = 10
- zoom_out_amt = 13
- can_scope = FALSE
-
-/obj/item/gun/ballistic/automatic/crossbow/update_icon()
- return
-
-/obj/item/gun/ballistic/automatic/crossbow/attack_self()
- return
-
-/obj/item/gun/ballistic/automatic/crossbow/attackby(obj/item/A, mob/user, params)
- var/num_loaded = magazine.attackby(A, user, params, 1)
- if(num_loaded)
- to_chat(user, "
You load [num_loaded] arrow\s into \the [src]. ")
- update_icon()
- chamber_round()
diff --git a/code/modules/projectiles/guns/ballistic/minigun.dm b/code/modules/projectiles/guns/ballistic/minigun.dm
index 820bafe91d..634363007c 100644
--- a/code/modules/projectiles/guns/ballistic/minigun.dm
+++ b/code/modules/projectiles/guns/ballistic/minigun.dm
@@ -94,11 +94,13 @@
slowdown = 2
slot_flags = null
w_class = WEIGHT_CLASS_HUGE
- burst_size = 5
+ burst_size = 1
+ automatic = 1
+ autofire_shot_delay = 1.25
burst_shot_delay = 1
fire_delay = 1
ranged_attack_speed = CLICK_CD_RAPID
- spread = 10
+ spread = 12
weapon_weight = WEAPON_HEAVY
extra_penetration = 0
extra_damage = 10
diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm
index 1e634dc0f6..788a251420 100644
--- a/code/modules/projectiles/guns/ballistic/pistol.dm
+++ b/code/modules/projectiles/guns/ballistic/pistol.dm
@@ -118,13 +118,14 @@
fire_sound = 'sound/f13weapons/10mm_fire_02.ogg'
-//Browning Hi-power Keywords: 9mm, Semi-auto, 10 round magazine
+//Browning Hi-power Keywords: 9mm, Semi-auto
/obj/item/gun/ballistic/automatic/pistol/ninemil
name = "Browning Hi-power"
desc = "A mass produced pre-war Browning Hi-power 9mm pistol."
icon_state = "ninemil"
- mag_type = /obj/item/ammo_box/magazine/m9mm
+ mag_type = /obj/item/ammo_box/magazine/m9mmds
weapon_weight = WEAPON_LIGHT
+ w_class = WEIGHT_CLASS_SMALL
extra_damage = 20
fire_delay = 2.5
can_attachments = TRUE
@@ -159,24 +160,15 @@
suppressor_y_offset = 20
fire_sound = 'sound/f13weapons/9mm.ogg'
-//side grade to the peacemaker Keywords: OASIS, 9mm, Semi-auto, 10 round magazine, 0 spread, faster rate of fire, bullet speed +100, probably needs a new sprite
-/obj/item/gun/ballistic/automatic/pistol/sig/commissioner
- name = "The Defender"
- desc = "A modified Sig P225 salvaged from the boneyard. Boasts a faster rate of fire and laser-like accuracy. It has 'To Protect and Serve' etched on the side."
- w_class = WEIGHT_CLASS_SMALL
- extra_damage = 30
- fire_delay = 1.7
- extra_speed = 100
- spread = 0
-
-//Beretta M9FS Keywords: 9mm, Semi-auto, 15 round magazine. Special modifiers: spread -1
+//Beretta M9FS Keywords: 9mm, Semi-auto. Special modifiers: spread -1
/obj/item/gun/ballistic/automatic/pistol/beretta
name = "Beretta M9FS"
desc = "One of the more common 9mm pistols, the Beretta is popular due to its reliability, 15 round magazine and good looks."
icon_state = "beretta"
mag_type = /obj/item/ammo_box/magazine/m9mmds
fire_delay = 3.5
+ weapon_weight = WEAPON_LIGHT
extra_damage = 20
spread = 1
can_attachments = TRUE
@@ -246,21 +238,6 @@
recoil = 0.05
fire_delay = 4
-//M1911 compact Keywords: .45 ACP, Semi-auto, Short barrel, 8 round magazine. Special modifiers: damage +1
-/obj/item/gun/ballistic/automatic/pistol/m1911/compact
- name = "M1911 compact"
- desc = "The compact version of the classic .45 handgun."
- icon_state = "c1911"
- w_class = WEIGHT_CLASS_SMALL
- weapon_weight = WEAPON_LIGHT
- extra_damage = 28
- spread = 4
- suppressor_x_offset = 29
- suppressor_y_offset = 21
-
-/obj/item/gun/ballistic/automatic/pistol/m1911/no_mag
- spawnwithmagazine = FALSE
-
//Mk. 23 Keywords: .45 ACP, Semi-auto, Long barrel (lasersight), 12 round magazine, Flashlight
/obj/item/gun/ballistic/automatic/pistol/mk23
diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm
index b64ed171da..9deb7a080b 100644
--- a/code/modules/projectiles/guns/ballistic/revolver.dm
+++ b/code/modules/projectiles/guns/ballistic/revolver.dm
@@ -7,7 +7,7 @@
desc = "should not exist."
icon_state = "revolver"
mag_type = /obj/item/ammo_box/magazine/internal/cylinder
- fire_delay = 4.5
+ fire_delay = 4.5
spread = 1
force = 12 // Pistol whip
casing_ejector = FALSE
@@ -139,27 +139,10 @@
obj_flags = UNIQUE_RENAME
var/list/safe_calibers
-/////////////////////
-// 10 MM REVOLVERS //
-/////////////////////
-
-//Colt 6520 Keywords: 10mm, Double action, 12 rounds cylinder
-/obj/item/gun/ballistic/revolver/colt6520
- name = "Colt 6520"
- desc = "The Colt 6520 10mm double action revolver is a highly durable weapon developed by Colt Firearms prior to the Great War. It proved to be resistant to the desert-like conditions of the post-nuclear wasteland and is a fine example of workmanship and quality construction."
- icon_state = "colt6520"
- extra_damage = 24
- extra_penetration = 0.1
- fire_delay = 4.5
- recoil = 0.05
- mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev6520
- fire_sound = 'sound/f13weapons/10mm_fire_02.ogg'
-
-
-
-///////////////////////
+///////////////////
// .45 ACP REVOLVERS //
-///////////////////////
+///////////////////
+
//S&W 45 Keywords: .45, Single action, 7 rounds cylinder, Long barrel
/obj/item/gun/ballistic/revolver/revolver45
@@ -202,8 +185,8 @@
extra_damage = 40
fire_delay = 3
block_chance = 20
-
-//Police revolver Keywords: .357, Double action, 6 rounds cylinder, Pocket Pistol
+
+//Police revolver Keywords: .357, Double action, 6 rounds cylinder, Pocket Pistol
/obj/item/gun/ballistic/revolver/police
name = "police revolver"
desc = "Pre-war double action police revolver chambered in .357 magnum."
@@ -389,6 +372,7 @@
desc = "A strange pistol firing rifle ammunition, possibly damaging the users wrist and with poor accuracy."
icon_state = "thatgun"
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/thatgun
+ weapon_weight = WEAPON_MEDIUM
extra_damage = 33
extra_penetration = 0.2
spread = 4
diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm
index 16f819df6b..c7ce0d52b7 100644
--- a/code/modules/projectiles/guns/ballistic/rifle.dm
+++ b/code/modules/projectiles/guns/ballistic/rifle.dm
@@ -31,6 +31,7 @@
spawnwithmagazine = TRUE
var/pump_sound = 'sound/weapons/shotgunpump.ogg'
fire_sound = 'sound/f13weapons/shotgun.ogg'
+ var/pump_stam_cost = 2
/obj/item/gun/ballistic/rifle/process_chamber(mob/living/user, empty_chamber = 0)
return ..() //changed argument value
@@ -50,7 +51,7 @@
else
recentpump = world.time + 10
if(istype(user))//CIT CHANGE - makes pumping shotguns cost a lil bit of stamina.
- user.adjustStaminaLossBuffered(2) //CIT CHANGE - DITTO. make this scale inversely to the strength stat when stats/skills are added
+ user.adjustStaminaLossBuffered(pump_stam_cost) //CIT CHANGE - DITTO. make this scale inversely to the strength stat when stats/skills are added
return
/obj/item/gun/ballistic/rifle/blow_up(mob/user)
@@ -98,6 +99,7 @@
can_scope = TRUE
scope_state = "scope_long"
fire_delay = 5
+ slowdown = 0.35
scope_x_offset = 5
scope_y_offset = 13
pump_sound = 'sound/f13weapons/cowboyrepeaterreload.ogg'
@@ -115,7 +117,7 @@
item_state = "cowboyrepeater"
mag_type = /obj/item/ammo_box/magazine/internal/shot/tube357
extra_damage = 35
- fire_delay = 4.5
+ extra_speed = 300
fire_sound = 'sound/f13weapons/cowboyrepeaterfire.ogg'
@@ -127,6 +129,7 @@
item_state = "trailcarbine"
mag_type = /obj/item/ammo_box/magazine/internal/shot/tube44
extra_damage = 40
+ extra_speed = 200
fire_sound = 'sound/f13weapons/44mag.ogg'
@@ -139,6 +142,7 @@
mag_type = /obj/item/ammo_box/magazine/internal/shot/tube4570
extra_damage = 50
extra_penetration = 0.05
+ extra_speed = 100
fire_delay = 5.1
recoil = 0.15
fire_sound = 'sound/f13weapons/brushgunfire.ogg'
@@ -248,16 +252,16 @@
pump_sound = 'sound/weapons/boltpump.ogg'
fire_sound = 'sound/f13weapons/boltfire.ogg'
-//Lee-Enfield,SMLE Keywords: 7.62, Bolt-action, 5 rounds internal, short barrel (-2 damage, -100 velocity, -2 melee, less slowdown), faster firing rate
+//Lee-Enfield,SMLE Keywords: 7.62, Bolt-action, 5 rounds internal, very fast firing rate, high stamina cost on working bolt
/obj/item/gun/ballistic/rifle/enfield
name = "Lee-Enfield rifle"
desc = "A british rifle sometimes known as the SMLE. It seems to have been re-chambered in .308."
icon_state = "enfield2"
item_state = "308"
mag_type = /obj/item/ammo_box/magazine/internal/boltaction
- extra_damage = 35
- extra_speed = 500
- fire_delay = 10
+ extra_damage = 40
+ extra_speed = 600
+ fire_delay = 6
slowdown = 0.35
force = 16
can_scope = TRUE
@@ -270,6 +274,7 @@
knife_y_offset = 21
pump_sound = 'sound/weapons/boltpump.ogg'
fire_sound = 'sound/f13weapons/boltfire.ogg'
+ pump_stam_cost = 15
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index 41a783d7ed..b6946f3987 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -39,7 +39,8 @@
/// SET THIS TO TRUE IF YOU OVERRIDE altafterattack() or ANY right click action! If this is FALSE, the gun will show in examine its default right click behavior, which is to switch modes.
var/right_click_overridden = FALSE
- isenergy = TRUE
+ dryfire_sound = 'sound/f13weapons/noammoenergy.ogg'
+ dryfire_text = "*power failure*"
/obj/item/gun/energy/emp_act(severity)
. = ..()
@@ -105,12 +106,6 @@
recharge_newshot(TRUE)
update_icon()
-// ATTACK SELF IGNORING PARENT RETURN VALUE
-/obj/item/gun/energy/attack_self(mob/living/user)
- . = ..()
- if(can_select_fire(user))
- select_fire(user)
-
/obj/item/gun/energy/can_shoot()
var/obj/item/ammo_casing/energy/shot = ammo_type[current_firemode_index]
return !QDELETED(cell) ? (cell.charge >= shot.e_cost) : FALSE
@@ -204,7 +199,7 @@
return user_set_firemode_to_next(user)
/obj/item/gun/energy/proc/can_select_fire(mob/living/user)
- return TRUE
+ return (length(ammo_type) > 1)
#define INCREMENT_OR_WRAP(i) i = (i >= length(ammo_type))? 1 : (i + 1)
#define DECREMENT_OR_WRAP(i) i = (i <= 1)? length(ammo_type) : (i - 1)
@@ -361,25 +356,14 @@
else
to_chat(user, "
There's no cell in \the [src]. ")
return
- else
+ else
return
/obj/item/gun/energy/attack_self(mob/living/user)
- if (!ishuman(user))
+ . = ..()
+ if(can_select_fire(user))
+ select_fire(user)
return
- if(cell)
- if(can_charge == 0 && can_remove == 0)
- to_chat(user, "
You can't remove the cell from \the [src]. ")
- return
- cell.forceMove(drop_location())
- user.put_in_hands(cell)
- cell.update_icon()
- cell = null
- to_chat(user, "
You pull the cell out of \the [src]. ")
- playsound(src, 'sound/f13weapons/equipsounds/laserreload.ogg', 50, 1)
- else
- to_chat(user, "
There's no cell in \the [src]. ")
- return
/obj/item/gun/energy/attackby(obj/item/A, mob/user, params)
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index 48202255f2..ae3c577ef4 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -206,7 +206,7 @@
fire_delay = 0
slowdown = 0.2
w_class = WEIGHT_CLASS_NORMAL
- weapon_weight = WEAPON_LIGHT
+ weapon_weight = WEAPON_MEDIUM
slot_flags = ITEM_SLOT_BELT
ammo_type = list(/obj/item/ammo_casing/energy/laser/pistol/wattz/hitscan)
cell_type = /obj/item/stock_parts/cell/ammo/ec
@@ -227,8 +227,9 @@
can_remove = 0
can_charge = 0
selfcharge = 1
+ icon_state = "rechargerpistol"
w_class = WEIGHT_CLASS_SMALL
- weapon_weight = WEAPON_LIGHT
+ weapon_weight = WEAPON_MEDIUM
slot_flags = ITEM_SLOT_BELT
ammo_type = list(/obj/item/ammo_casing/energy/laser/pistol/recharger/hitscan)
cell_type = /obj/item/stock_parts/cell/ammo/breeder
@@ -242,7 +243,7 @@
icon_state = "AEP7"
item_state = "laser-pistol"
w_class = WEIGHT_CLASS_NORMAL
- weapon_weight = WEAPON_LIGHT
+ weapon_weight = WEAPON_MEDIUM
slot_flags = ITEM_SLOT_BELT
ammo_type = list(/obj/item/ammo_casing/energy/laser/pistol/hitscan)
cell_type = /obj/item/stock_parts/cell/ammo/ec
@@ -450,7 +451,10 @@
icon_state = "lasercw"
item_state = "rcw"
fire_delay = 3
- burst_size = 2
+ burst_size = 1
+ automatic = 1
+ autofire_shot_delay = 2
+ spread = 14
ammo_type = list(/obj/item/ammo_casing/energy/laser/rcw/hitscan)
cell_type = /obj/item/stock_parts/cell/ammo/ecp
equipsound = 'sound/f13weapons/equipsounds/RCWequip.ogg'
@@ -476,7 +480,7 @@
icon_state = "alienblaster"
desc = "This weapon is unlike any other you've ever seen before, and appears to be made out of metals not usually found on Earth. It certainly packs a punch, though."
w_class = WEIGHT_CLASS_NORMAL
- weapon_weight = WEAPON_LIGHT
+ weapon_weight = WEAPON_MEDIUM
slot_flags = ITEM_SLOT_BELT
can_charge = FALSE
ammo_type = list(/obj/item/ammo_casing/energy/plasma/pistol/alien)
@@ -490,7 +494,7 @@
icon_state = "gammagun"
item_state = "gammagun"
w_class = WEIGHT_CLASS_NORMAL
- weapon_weight = WEAPON_LIGHT
+ weapon_weight = WEAPON_MEDIUM
slot_flags = ITEM_SLOT_BELT
ammo_type = list(/obj/item/ammo_casing/energy/gammagun)
cell_type = /obj/item/stock_parts/cell/ammo/mfc
@@ -596,9 +600,11 @@
slot_flags = null
w_class = WEIGHT_CLASS_HUGE
custom_materials = null
- burst_size = 5
+ burst_size = 1
burst_shot_delay = 1
- ranged_attack_speed = CLICK_CD_RAPID
+ automatic = 1
+ autofire_shot_delay = 1.8
+ spread = 6
fire_delay = 1
weapon_weight = WEAPON_HEAVY
fire_sound = 'sound/weapons/laser.ogg'
diff --git a/code/modules/projectiles/guns/energy/plasmaf13.dm b/code/modules/projectiles/guns/energy/plasmaf13.dm
index 570e6d0dd3..4d3b775807 100644
--- a/code/modules/projectiles/guns/energy/plasmaf13.dm
+++ b/code/modules/projectiles/guns/energy/plasmaf13.dm
@@ -11,7 +11,7 @@
icon_state = "plasma-pistol"
desc = "A pistol-sized miniaturized plasma caster built by REPCONN. It fires a bolt of superhot ionized gas."
w_class = WEIGHT_CLASS_NORMAL
- weapon_weight = WEAPON_LIGHT
+ weapon_weight = WEAPON_MEDIUM
slot_flags = ITEM_SLOT_BELT
ammo_type = list(/obj/item/ammo_casing/energy/plasma/pistol)
cell_type = /obj/item/stock_parts/cell/ammo/ec
@@ -103,3 +103,74 @@
equipsound = 'sound/f13weapons/equipsounds/plasequip.ogg'
ammo_type = list(/obj/item/ammo_casing/energy/plasma/scatter)
cell_type = /obj/item/stock_parts/cell/ammo/mfc
+
+
+/obj/item/gun/energy/laser/plasma/spear
+ name = "ergonomic plasmacaster"
+ icon = 'icons/fallout/objects/melee/twohanded.dmi'
+ lefthand_file = 'icons/fallout/onmob/weapons/melee2h_lefthand.dmi'
+ righthand_file = 'icons/fallout/onmob/weapons/melee2h_righthand.dmi'
+ mob_overlay_icon = 'icons/fallout/onmob/backslot_weapon.dmi'
+ item_state = "plasma"
+ icon_state = "plasma"
+ w_class = WEIGHT_CLASS_BULKY
+ weapon_weight = WEAPON_LIGHT //you need to wield it to fire it
+ slot_flags = ITEM_SLOT_BACK
+ desc = "An ergonomic pre-war plasmacaster designed for precision mining work. This one appears to be built into a single thick staff, with a bulbous hilt and sharp saturnite alloy blades ringing the caster assembly- strongly resembling sort of spear."
+ ammo_type = list(/obj/item/ammo_casing/energy/plasma/miner)
+ cell_type = /obj/item/stock_parts/cell/ammo/ecp
+ sharpness = SHARP_EDGED
+ max_reach = 2
+ force = 20
+ burst_size = 5
+ burst_shot_delay = 0.5
+ fire_delay = 10
+ scope_y_offset = 16
+ equipsound = 'sound/f13weapons/equipsounds/plasequip.ogg'
+ var/twohands = FALSE
+
+/obj/item/gun/energy/laser/plasma/spear/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/two_handed, force_unwielded=20, force_wielded=40, icon_wielded="[item_state]2")
+ AddElement(/datum/element/update_icon_updates_onmob)
+ RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/allow_fire)
+ RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/deny_fire)
+
+/obj/item/gun/energy/laser/plasma/spear/proc/allow_fire()
+ twohands = TRUE
+/obj/item/gun/energy/laser/plasma/spear/proc/deny_fire()
+ twohands = FALSE
+
+/obj/item/gun/energy/laser/plasma/spear/Destroy()
+ ..()
+ UnregisterSignal(src, list(COMSIG_TWOHANDED_WIELD,
+ COMSIG_TWOHANDED_UNWIELD))
+
+/obj/item/gun/energy/laser/plasma/spear/can_shoot()
+ . = ..()
+ if(!twohands)
+ return FALSE
+
+
+//Plasma Cannon.
+/obj/item/gun/energy/laser/plasma/sniper
+ name = "Plasma Cannon"
+ desc = "A refined design, taking the common wasteland plasma musket and improving upon it. Trash parts and safety hazards give way to proper stamped and machined construction. It's even been fitted with a scope and designed to take MFCs rather than shoddy plasma cans."
+ icon = 'icons/fallout/objects/guns/energy.dmi'
+ icon_state = "plasmasniper"
+ item_state = "plasmamusket"
+ slowdown = 0.3
+ ammo_type = list(/obj/item/ammo_casing/energy/plasma/sniper)
+ cell_type = /obj/item/stock_parts/cell/ammo/mfc
+ fire_delay = 30
+ dryfire_sound = 'sound/f13weapons/noammoenergy.ogg'
+ dryfire_text = "*power failure*"
+ can_bayonet = TRUE
+ knife_x_offset = 22
+ knife_y_offset = 20
+ bayonet_state = "bayonet"
+ zoomable = TRUE
+ zoom_amt = 10
+ zoom_out_amt = 13
+ fire_sound = 'sound/f13weapons/lasmusket_fire.ogg'
+ equipsound = 'sound/f13weapons/equipsounds/plasequip.ogg'
diff --git a/code/modules/projectiles/guns/hoboguns.dm b/code/modules/projectiles/guns/hoboguns.dm
index eb5bf3e90a..8c665f92c2 100644
--- a/code/modules/projectiles/guns/hoboguns.dm
+++ b/code/modules/projectiles/guns/hoboguns.dm
@@ -176,7 +176,7 @@
item_state = "knucklegun"
w_class = WEIGHT_CLASS_SMALL
weapon_weight = WEAPON_LIGHT
- slot_flags = ITEM_SLOT_GLOVES
+ slot_flags = ITEM_SLOT_GLOVES
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/improvised45
force = 24
fire_delay = 0.25
@@ -224,13 +224,14 @@
item_state = "lasmusket"
mag_type = /obj/item/ammo_box/magazine/internal/shot/lasmusket
fire_delay = 15
- isenergy = TRUE
+ dryfire_sound = 'sound/f13weapons/noammoenergy.ogg'
+ dryfire_text = "*power failure*"
var/bolt_open = FALSE
can_bayonet = TRUE
knife_x_offset = 22
knife_y_offset = 20
bayonet_state = "bayonet"
- scope_state = "scope_long"
+ scope_state = "scope_short"
scope_x_offset = 11
scope_y_offset = 14
fire_sound = 'sound/f13weapons/lasmusket_fire.ogg'
@@ -244,13 +245,12 @@
desc = "The cooling looks dubious and is that a empty can of beans used as a safety valve? Pray the plasma goes towards the enemy and not your face when you pull the trigger."
icon_state = "plasmamusket"
item_state = "plasmamusket"
- mag_type = /obj/item/ammo_box/magazine/internal/plasmacaster
+ mag_type = /obj/item/ammo_box/magazine/internal/plasmamusket
fire_delay = 20
var/bolt_open = FALSE
- isenergy = TRUE
- scope_state = "scope_medium"
- scope_x_offset = 9
- scope_y_offset = 20
+ dryfire_sound = 'sound/f13weapons/noammoenergy.ogg'
+ dryfire_text = "*power failure*"
+ can_scope = FALSE
fire_sound = 'sound/f13weapons/lasmusket_fire.ogg'
pump_sound = 'sound/f13weapons/lasmusket_crank.ogg'
equipsound = 'sound/f13weapons/equipsounds/aep7equip.ogg'
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 8e5104f8d2..76825bbdeb 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -147,10 +147,11 @@
var/impact_effect_type //what type of impact effect to show when hitting something
var/log_override = FALSE //is this type spammed enough to not log? (KAs)
+ var/supereffective_damage = 0
+ var/list/supereffective_faction //Any mob with a faction that exists in this list will take bonus damage
+
var/temporary_unstoppable_movement = FALSE
- ///If defined, on hit we create an item of this type then call hitby() on the hit target with this, mainly used for embedding items (bullets) in targets
- var/shrapnel_type
///If TRUE, hit mobs even if they're on the floor and not our target
var/hit_stunned_targets = FALSE
@@ -166,7 +167,7 @@
. = ..()
permutated = list()
decayedRange = range
- if(embedding)
+ if(LAZYLEN(embedding))
updateEmbedding()
/**
@@ -178,7 +179,7 @@
if(wound_bonus != CANT_WOUND)
wound_bonus += wound_falloff_tile
bare_wound_bonus = max(0, bare_wound_bonus + wound_falloff_tile)
- if(embedding)
+ if(LAZYLEN(embedding))
embedding["embed_chance"] += embed_falloff_tile
if(range <= 0 && loc)
on_range()
@@ -359,6 +360,12 @@
#define FORCE_QDEL 3 //Force deletion.
/obj/item/projectile/proc/process_hit(turf/T, atom/target, qdel_self, hit_something = FALSE) //probably needs to be reworked entirely when pixel movement is done.
+ if(isliving(target) && LAZYLEN(supereffective_faction))
+ var/mob/living/L = target
+ for(var/F in L.faction)
+ if(F in supereffective_faction)
+ damage += supereffective_damage
+ break
if(QDELETED(src) || !T || !target) //We're done, nothing's left.
if((qdel_self == FORCE_QDEL) || ((qdel_self == QDEL_SELF) && !temporary_unstoppable_movement && !CHECK_BITFIELD(movement_type, UNSTOPPABLE)))
qdel(src)
@@ -480,8 +487,8 @@
/obj/item/projectile/proc/fire(angle, atom/direct_target)
if(fired_from)
SEND_SIGNAL(fired_from, COMSIG_PROJECTILE_BEFORE_FIRE, src, original) //If no angle needs to resolve it from xo/yo!
- if(shrapnel_type)
- AddElement(/datum/element/embed, projectile_payload = shrapnel_type)
+ if(LAZYLEN(embedding))//our embedding stats change, possibly
+ updateEmbedding()
if(!log_override && firer && original)
log_combat(firer, original, "fired at", src, "from [get_area_name(src, TRUE)]")
if(direct_target)
diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm
index 3ee0f975a6..43dc39f32c 100644
--- a/code/modules/projectiles/projectile/beams.dm
+++ b/code/modules/projectiles/projectile/beams.dm
@@ -272,7 +272,29 @@
icon_state = "plasma_clot"
damage_type = BURN
damage = 60
- flag = "laser"
+ flag = "energy"
+ eyeblur = 0
+ is_reflectable = TRUE
+ pixels_per_second = TILES_TO_PIXELS(50)
+
+//plasma musket
+/obj/item/projectile/f13plasma/plasmamusket
+ name = "plasma bolt"
+ icon_state = "plasma_clot"
+ damage_type = BURN
+ damage = 50
+ flag = "energy"
+ eyeblur = 0
+ is_reflectable = TRUE
+ pixels_per_second = TILES_TO_PIXELS(50)
+
+//plasma cannon
+/obj/item/projectile/f13plasma/plasmasniper
+ name = "plasma bolt"
+ icon_state = "plasma_clot"
+ damage_type = BURN
+ damage = 53
+ flag = "energy"
eyeblur = 0
is_reflectable = TRUE
pixels_per_second = TILES_TO_PIXELS(50)
@@ -326,7 +348,7 @@
/obj/item/projectile/beam/laser/pistol/hitscan //hitscan AEP7
name = "laser beam"
- damage = 19
+ damage = 20
hitscan = TRUE
armour_penetration = 0.02
tracer_type = /obj/effect/projectile/tracer/laser
@@ -377,7 +399,7 @@
/obj/item/projectile/beam/laser/pistol/wattz/hitscan //hitscan wattz
name = "weak laser beam"
- damage = 15
+ damage = 17
hitscan = TRUE
tracer_type = /obj/effect/projectile/tracer/laser
muzzle_type = /obj/effect/projectile/muzzle/laser
@@ -390,9 +412,9 @@
/obj/item/projectile/beam/laser/pistol/wattz/magneto/hitscan
name = "penetrating laser beam"
- damage = 15
+ damage = 17
hitscan = TRUE
- armour_penetration = 0.2 //rare laser to keep its AP, since base model is so bad
+ armour_penetration = 0.22 //rare laser to keep its AP, since base model is so bad
tracer_type = /obj/effect/projectile/tracer/laser
muzzle_type = /obj/effect/projectile/muzzle/laser
impact_type = /obj/effect/projectile/impact/laser
@@ -453,6 +475,21 @@
eyeblur = 0
is_reflectable = FALSE
+/obj/item/projectile/f13plasma/repeater/mining
+ name = "mining plasma stream"
+ icon_state = "plasma_clot"
+ damage_type = BURN
+ damage = 5
+ flag = "energy"
+ eyeblur = 0
+ is_reflectable = FALSE
+
+/obj/item/projectile/f13plasma/repeater/mining/on_hit(atom/target)
+ . = ..()
+ if(ismineralturf(target))
+ var/turf/closed/mineral/M = target
+ M.gets_drilled(firer)
+
/obj/item/projectile/f13plasma/pistol //Plasma pistol
damage = 33
@@ -475,7 +512,7 @@
/obj/item/projectile/beam/laser/rcw/hitscan //RCW
name = "rapidfire beam"
icon_state = "emitter"
- damage = 25 //ALWAYS does 50, this is a burstfire hitscan weapon that fires in bursts of 2.
+ damage = 15
hitscan = TRUE
muzzle_type = /obj/effect/projectile/muzzle/laser/emitter
tracer_type = /obj/effect/projectile/tracer/laser/emitter
@@ -568,6 +605,7 @@
damage = 25
wound_bonus = 10
bare_wound_bonus = 20
+ armour_penetration = 0
tracer_type = /obj/effect/projectile/tracer/heavy_laser
muzzle_type = /obj/effect/projectile/muzzle/heavy_laser
impact_type = /obj/effect/projectile/impact/heavy_laser
diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm
index b408957aa7..117e6bfe7d 100644
--- a/code/modules/projectiles/projectile/bullets.dm
+++ b/code/modules/projectiles/projectile/bullets.dm
@@ -9,10 +9,6 @@
hitsound_wall = "ricochet"
impact_effect_type = /obj/effect/temp_visual/impact_effect
sharpness = SHARP_POINTY
- shrapnel_type = /obj/item/shrapnel/bullet
- embedding = list(embed_chance=15, fall_chance=2, jostle_chance=0, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.5, pain_mult=3, rip_time=10)
- wound_falloff_tile = -5
- embed_falloff_tile = -5
/obj/item/projectile/bullet/smite
name = "divine retribution"
diff --git a/code/modules/projectiles/projectile/bullets/pistol.dm b/code/modules/projectiles/projectile/bullets/pistol.dm
index e95264fb4b..5fb7dcbe15 100644
--- a/code/modules/projectiles/projectile/bullets/pistol.dm
+++ b/code/modules/projectiles/projectile/bullets/pistol.dm
@@ -5,12 +5,27 @@
//////////////////////
/*
FMJ (full metal jacket) = Baseline
-AP (armor piercing) = -20% damage. AP increased by 0.2. Wound bonus -50%
-JHP (jacketed hollow point) = +15% damage. AP reduced by 0.2 (not below zero). Wound bonus + 50%
-SWC (semi wadcutter) = AP reduced by 0.1. Wound bonus +50%
-P+ (overpressure) = extra speed 500. AP +25%
-Match = extra speed 200. AP +10%. Wound bonus -10%
-Civilian round = -10% damage. AP reduced by 50%
++P/+P+ = used by simplemobs
+SHOCK = low-severity emp, -damage base, bonus burn damage (5-10)
+Incin = -damage, sets target on fire
+Acid = Heavy -damage, coats target in small amount of acid (1-5u)
+Uranium = Irradiates, high AP, lower damage
+Micro-Shrapnel = Wound bonus, embed bonus, high falloff for both
+Contaminated = -damage, spawns a gas cloud that heavily reduces healing efficiency
+Improvised = -1 to -4 damage
+Civilian round = -10% damage. AP reduced by 50%
+*/
+
+/*
+Ammo groupings for specialty:
+5mm/22lr: Shock
+Small Pistol calibers (38 357 9mm): Acid/Incin
+Large Pistol Calibers (44 45 10mm): Incin
+Very Large pistol (45-70): Knockback, Acid
+autorifle calibers (5.56 7.62):
+Micro-Shrapnel (wound/embed)
+heavy rifle calibers (12.7, 14mm, 7.62):
+Uranium, Contaminated
*/
// Explanation: Two major ammo stats, AP and Damage. Bullets placed in classes. Light rounds for example balanced with each other, one more AP, one more Damage.
@@ -32,6 +47,21 @@ Civilian round = -10% damage. AP reduced by 50%
wound_bonus = 0
sharpness = SHARP_NONE
+/obj/item/projectile/bullet/c22/shock
+ name = ".22lr shock bullet"
+ damage = -8 //about -50% damage
+ wound_bonus = 0
+ sharpness = SHARP_NONE
+ var/energy_damage = 5
+
+/obj/item/projectile/bullet/c22/shock/on_hit(atom/target, blocked = FALSE)
+ ..()
+ target.emp_act(5)//5 severity is very, very low
+ if(blocked != 100 && isliving(target))
+ var/mob/living/L = target
+ L.electrocute_act(energy_damage, "shock bullet", 1, SHOCK_NOGLOVES | SHOCK_NOSTUN) //this might be spammy todo: check
+ //if it is, use O.take_damage(energy_damage, BURN, "energy", FALSE)
+
/////////////////
// .38 SPECIAL //
///////////////// -Light round, damage focus
@@ -48,6 +78,42 @@ Civilian round = -10% damage. AP reduced by 50%
wound_bonus = 0
sharpness = SHARP_NONE
+/obj/item/projectile/bullet/c38/improv
+ damage = -3
+
+/obj/item/projectile/bullet/c38/acid
+ name = ".38 acid-tipped bullet"
+ damage = -5
+ wound_bonus = 0
+ sharpness = SHARP_NONE
+ var/acid_type = /datum/reagent/toxin/acid/fluacid
+
+/obj/item/projectile/bullet/c38/acid/Initialize()
+ . = ..()
+ create_reagents(5, NO_REACT, NO_REAGENTS_VALUE)
+ reagents.add_reagent(acid_type, 5)
+
+/obj/item/projectile/bullet/c38/acid/on_hit(atom/target, blocked = FALSE)
+ ..()
+ if(isliving(target))
+ var/mob/living/M = target
+ reagents.reaction(M, TOUCH)
+ reagents.trans_to(M, reagents.total_volume)
+
+
+/obj/item/projectile/bullet/c38/incendiary
+ name = ".38 incendiary bullet"
+ damage = -5
+ var/fire_stacks = 1
+
+/obj/item/projectile/bullet/c38/incendiary/on_hit(atom/target, blocked = FALSE)
+ . = ..()
+ if(iscarbon(target))
+ var/mob/living/carbon/M = target
+ M.adjust_fire_stacks(fire_stacks)
+ M.IgniteMob()
+
+
//////////
// 9 MM //
@@ -70,14 +136,39 @@ Civilian round = -10% damage. AP reduced by 50%
wound_bonus = 0
sharpness = SHARP_NONE
-/obj/item/projectile/bullet/c9mm/wounding
- name = "9mm wounding bullet"
- damage = 0
- ricochets_max = 0
- sharpness = SHARP_EDGED
- wound_bonus = 25
- bare_wound_bonus = 25
- wound_falloff_tile = -8
+/obj/item/projectile/bullet/c9mm/acid
+ name = "9mm acid-tipped bullet"
+ damage = -10
+ wound_bonus = 0
+ sharpness = SHARP_NONE
+ var/acid_type = /datum/reagent/toxin/acid/fluacid
+
+/obj/item/projectile/bullet/c9mm/acid/Initialize()
+ . = ..()
+ create_reagents(2.5, NO_REACT, NO_REAGENTS_VALUE)
+ reagents.add_reagent(acid_type, 2.5)
+
+/obj/item/projectile/bullet/c9mm/acid/on_hit(atom/target, blocked = FALSE)
+ . = ..()
+ if(isliving(target))
+ var/mob/living/M = target
+ reagents.reaction(M, TOUCH)
+ reagents.trans_to(M, reagents.total_volume)
+
+/obj/item/projectile/bullet/c9mm/incendiary
+ name = "9mm incendiary bullet"
+ damage = -8
+ var/fire_stacks = 1
+
+/obj/item/projectile/bullet/c9mm/incendiary/on_hit(atom/target, blocked = FALSE)
+ . = ..()
+ if(iscarbon(target))
+ var/mob/living/carbon/M = target
+ M.adjust_fire_stacks(fire_stacks)
+ M.IgniteMob()
+
+/obj/item/projectile/bullet/c9mm/improv
+ damage = -3
/obj/item/projectile/bullet/c9mm/simple //for simple mobs, separate to allow balancing
name = "9mm bullet"
@@ -106,18 +197,9 @@ Civilian round = -10% damage. AP reduced by 50%
wound_bonus = 0
sharpness = SHARP_NONE
-/obj/item/projectile/bullet/c10mm/wounding
- name = "10mm wounding bullet"
- damage = 0
- ricochets_max = 0
- sharpness = SHARP_EDGED
- wound_bonus = 33
- bare_wound_bonus = 33
- wound_falloff_tile = -8
-
/obj/item/projectile/bullet/c10mm/incendiary
name = "10mm incendiary bullet"
- damage = -5
+ damage = -8
var/fire_stacks = 1
/obj/item/projectile/bullet/c10mm/incendiary/on_hit(atom/target, blocked = FALSE)
@@ -156,9 +238,9 @@ Civilian round = -10% damage. AP reduced by 50%
/obj/item/projectile/bullet/c45/incendiary
name = ".45 incendiary bullet"
- damage = 0
+ damage = -8
var/fire_stacks = 1
-
+
/obj/item/projectile/bullet/c45/incendiary/on_hit(atom/target, blocked = FALSE)
. = ..()
if(iscarbon(target))
@@ -186,6 +268,40 @@ Civilian round = -10% damage. AP reduced by 50%
ricochet_auto_aim_range = 6
ricochet_incidence_leeway = 80
+/obj/item/projectile/bullet/a357/acid
+ name = ".357 acid-tipped bullet"
+ damage = -10
+ wound_bonus = 0
+ sharpness = SHARP_NONE
+ var/acid_type = /datum/reagent/toxin/acid/fluacid
+
+/obj/item/projectile/bullet/a357/acid/Initialize()
+ . = ..()
+ create_reagents(5, NO_REACT, NO_REAGENTS_VALUE)
+ reagents.add_reagent(acid_type, 5)
+
+/obj/item/projectile/bullet/a357/acid/on_hit(atom/target, blocked = FALSE)
+ . = ..()
+ if(isliving(target))
+ var/mob/living/M = target
+ reagents.reaction(M, TOUCH)
+ reagents.trans_to(M, reagents.total_volume)
+
+/obj/item/projectile/bullet/a357/incendiary
+ name = ".357 incendiary bullet"
+ damage = -8
+ var/fire_stacks = 2
+
+/obj/item/projectile/bullet/a357/incendiary/on_hit(atom/target, blocked = FALSE)
+ . = ..()
+ if(iscarbon(target))
+ var/mob/living/carbon/M = target
+ M.adjust_fire_stacks(fire_stacks)
+ M.IgniteMob()
+
+/obj/item/projectile/bullet/a357/improv
+ name = "poor .357 bullet"
+ damage = -2
////////////////
// .44 MAGNUM //
//////////////// - Higher power round
@@ -201,6 +317,18 @@ Civilian round = -10% damage. AP reduced by 50%
name = ".44 bullet"
damage = 40
+/obj/item/projectile/bullet/m44/incendiary
+ name = ".44 incendiary bullet"
+ damage = -8
+ var/fire_stacks = 3
+
+/obj/item/projectile/bullet/m44/incendiary/on_hit(atom/target, blocked = FALSE)
+ . = ..()
+ if(iscarbon(target))
+ var/mob/living/carbon/M = target
+ M.adjust_fire_stacks(fire_stacks)
+ M.IgniteMob()
+
////////////
// .45-70 //
//////////// -very heavy round
@@ -220,17 +348,78 @@ Civilian round = -10% damage. AP reduced by 50%
..()
explosion(target, 0, 0, 1, 1, flame_range = 1)
+/obj/item/projectile/bullet/c4570/acid
+ name = ".45-70 acid-tipped bullet"
+ damage = -10
+ wound_bonus = 0
+ sharpness = SHARP_NONE
+ var/acid_type = /datum/reagent/toxin/acid/fluacid
+
+/obj/item/projectile/bullet/c4570/acid/Initialize()
+ . = ..()
+ create_reagents(10, NO_REACT, NO_REAGENTS_VALUE)
+ reagents.add_reagent(acid_type, 10)
+
+/obj/item/projectile/bullet/c4570/acid/on_hit(atom/target, blocked = FALSE)
+ . = ..()
+ if(isliving(target))
+ var/mob/living/M = target
+ reagents.reaction(M, TOUCH)
+ reagents.trans_to(M, reagents.total_volume)
+
+/obj/item/projectile/bullet/c4570/knockback
+ name = ".45-70 ultradense bullet"
+ damage = -15
+ wound_bonus = 0
+ sharpness = SHARP_NONE
+ pixels_per_second = TILES_TO_PIXELS(500)
+
+/obj/item/projectile/bullet/c4570/knockback/on_hit(atom/target, blocked = FALSE)
+ . = ..()
+ if(isliving(target) && prob(50))
+ var/atom/movable/M = target
+ var/atom/throw_target = get_edge_target_turf(M, get_dir(src, get_step_away(M, src)))
+ M.safe_throw_at(throw_target, 2, 3)
+
///////////
// 14 MM //
/////////// -very heavy round, AP (reference to FO1/2)
/obj/item/projectile/bullet/mm14
- name = "14mm AP bullet"
+ name = "14mm FMJ bullet"
damage = 0
wound_bonus = 25
bare_wound_bonus = -28
+/obj/item/projectile/bullet/mm14/contam
+ name = "14mm contaiminated bullet"
+ damage = -10
+ var/smoke_radius = 1
+
+/obj/item/projectile/bullet/mm14/contam/Initialize()
+ . = ..()
+ create_reagents(15, NO_REACT, NO_REAGENTS_VALUE)
+ reagents.add_reagent(/datum/reagent/toxin/metabtoxin, 15)
+
+/obj/item/projectile/bullet/mm14/contam/on_hit(atom/target, blocked = FALSE)
+ . = ..()
+ var/location = get_turf(src)
+ var/datum/effect_system/smoke_spread/chem/S = new
+ S.attach(location)
+ playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3)
+ if(S)
+ S.set_up(src.reagents, smoke_radius, location, 0)
+ S.start()
+
+
+/obj/item/projectile/bullet/mm14/uraniumtipped
+ name = "14mm uranium-tipped bullet"
+ damage = -5
+ armour_penetration = 0.1
+ irradiate = 300
+
+
//////////////////////
diff --git a/code/modules/projectiles/projectile/bullets/rifle.dm b/code/modules/projectiles/projectile/bullets/rifle.dm
index db0c5ca39f..9ffbaccba1 100644
--- a/code/modules/projectiles/projectile/bullets/rifle.dm
+++ b/code/modules/projectiles/projectile/bullets/rifle.dm
@@ -5,14 +5,31 @@
//////////////////////
/*
FMJ (full metal jacket) = Baseline
-AP (armor piercing) = -20% damage. AP increased by 0.2. Wound bonus -50%
-JHP (jacketed hollow point) = +15% damage. AP reduced by 0.2 (not below zero). Wound bonus + 50%
-SWC (semi wadcutter) = AP reduced by 0.1. Wound bonus +50%
-P+ (overpressure) = extra speed 500. AP +25%
-Match = extra speed 200. AP +10%. Wound bonus -10%
-Civilian round = -10% damage for .223. AP reduced by 50%
++P/+P+ = used by simplemobs
+SHOCK = low-severity emp, -damage base, bonus burn damage (5-10)
+Incin = -damage, sets target on fire
+Acid = Heavy -damage, coats target in small amount of acid (1-5u)
+Uranium = Irradiates, high AP, lower damage
+Micro-Shrapnel = Wound bonus, embed bonus, high falloff for both
+Contaminated = -damage, spawns a gas cloud that heavily reduces healing efficiency
+Improvised = -1 to -4 damage
+Civilian round = -10% damage. AP reduced by 50%
*/
+/*
+Ammo groupings for specialty:
+5mm/22lr: Shock
+Small Pistol calibers (38 357 9mm): Acid/Incin
+Large Pistol Calibers (44 45 10mm): Incin
+Very Large pistol (45-70): Knockback, Acid
+autorifle calibers (5.56 7.62): Micro-Shrapnel (wound/embed)
+heavy rifle calibers (12.7, 14mm, 7.62): Uranium, Contaminated, Incin
+*/
+
+// Explanation: Two major ammo stats, AP and Damage. Bullets placed in classes. Light rounds for example balanced with each other, one more AP, one more Damage.
+// Balance between classes mostly done on the gun end, bigger rounds typically fire slower and have more recoil. They are not supposed to be totally equal either.
+
+
// Explanation: Two major ammo stats, AP and Damage. Bullets placed in classes. Light rounds for example balanced with each other, one more AP, one more Damage.
// Balance between classes mostly done on the gun end, bigger rounds typically fire slower and have more recoil. They are not supposed to be totally equal either.
@@ -49,11 +66,14 @@ Civilian round = -10% damage for .223. AP reduced by 50%
wound_bonus = 0
bare_wound_bonus = 0
-/obj/item/projectile/bullet/a556/uraniumtipped
- name = "5.56 uranium-tipped bullet"
+/obj/item/projectile/bullet/a556/microshrapnel
+ name = "5.56 microshrapnel bullet"
damage = -5
- armour_penetration = 0.1
- irradiate = 300
+ wound_bonus = 15
+ bare_wound_bonus = 15
+ wound_falloff_tile = 0.5
+ embed_falloff_tile = 0.5
+ embedding = list(embed_chance=5, fall_chance=1, jostle_chance=1, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.5, pain_mult=5, jostle_pain_mult=6, rip_time=10, embed_chance_turf_mod=100, projectile_payload = /obj/item/shrapnel/bullet/a556/microshrapnel)
/obj/item/projectile/bullet/a556/simple //for simple mobs, separate to allow balancing
name = "5.56 bullet"
@@ -99,6 +119,15 @@ Civilian round = -10% damage for .223. AP reduced by 50%
armour_penetration = 0.18
irradiate = 300
+/obj/item/projectile/bullet/a762/microshrapnel
+ name = "7.62 microshrapnel bullet"
+ damage = -7
+ wound_bonus = 15
+ bare_wound_bonus = 15
+ wound_falloff_tile = 0.5
+ embed_falloff_tile = 0.5
+ embedding = list(embed_chance=12, fall_chance=1, jostle_chance=1, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.3, pain_mult=5, jostle_pain_mult=6, rip_time=10, embed_chance_turf_mod=100, projectile_payload = /obj/item/shrapnel/bullet/a762/microshrapnel)
+
/////////
// .50 //
///////// -Very heavy rifle round.
@@ -139,6 +168,31 @@ Civilian round = -10% damage for .223. AP reduced by 50%
damage = -10
movement_type = FLYING | UNSTOPPABLE
+/obj/item/projectile/bullet/a50MG/uraniumtipped
+ name = "12.7mm uranium-tipped bullet"
+ damage = -15
+ armour_penetration = 0.2
+ irradiate = 500
+
+/obj/item/projectile/bullet/a50MG/contam
+ name = "12.7mm contaminated bullet"
+ damage = -10
+ var/smoke_radius = 1
+
+/obj/item/projectile/bullet/a50MG/contam/Initialize()
+ . = ..()
+ create_reagents(15, NO_REACT, NO_REAGENTS_VALUE)
+ reagents.add_reagent(/datum/reagent/toxin/metabtoxin, 15)
+
+/obj/item/projectile/bullet/a50MG/contam/on_hit(atom/target, blocked = FALSE)
+ var/location = get_turf(src)
+ var/datum/effect_system/smoke_spread/chem/S = new
+ S.attach(location)
+ playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3)
+ if(S)
+ S.set_up(src.reagents, smoke_radius, location, 0)
+ S.start()
+ ..()
//////////////////////
// 4.73 MM CASELESS //
@@ -151,8 +205,8 @@ Civilian round = -10% damage for .223. AP reduced by 50%
bare_wound_bonus = -10
/obj/item/projectile/bullet/a473/rubber
- name = "4.73 polyurethane bullet "
- damage = 5
+ name = "4.73 polyurethane bullet"
+ damage = -20
stamina = 18
sharpness = SHARP_NONE
armour_penetration = 0.05
@@ -161,21 +215,30 @@ Civilian round = -10% damage for .223. AP reduced by 50%
/obj/item/projectile/bullet/a473/incendiary
name = "4.73 tracer bullet"
- damage = 15
+ damage = -10
armour_penetration = 0.1
var/fire_stacks = 3
zone_accuracy_factor = 100
+/obj/item/projectile/bullet/a473/incendiary/on_hit(atom/target, blocked = FALSE)
+ . = ..()
+ if(iscarbon(target))
+ var/mob/living/carbon/M = target
+ M.adjust_fire_stacks(fire_stacks)
+ M.IgniteMob()
+
/obj/item/projectile/bullet/a473/uraniumtipped
name = "4.73 U-235 bullet"
- damage = 15
+ damage = -10
armour_penetration = 0.3
irradiate = 300
/obj/item/projectile/bullet/a473/dumdum
name = "4.73 flat-nose bullet"
- damage = 20
- armour_penetration = 0.1
+ damage = 5
+ supereffective_damage = 10
+ supereffective_faction = list("hostile", "ant", "supermutant", "deathclaw", "cazador", "raider", "china", "gecko", "wastebot")
+ armour_penetration = -0.2
wound_bonus = 20
bare_wound_bonus = 30
@@ -184,7 +247,31 @@ Civilian round = -10% damage for .223. AP reduced by 50%
/obj/item/projectile/bullet/a473/explosive/on_hit(atom/target, blocked = FALSE)
..()
- explosion(target, 0, 0, 1, 0, adminlog = FALSE, flame_range = 1)
+ if(prob(10))
+ explosion(target, 0, 0, 1, 1, adminlog = FALSE, flame_range = 0)
+ else
+ explosion(target, 0, 0, 0, 1, adminlog = FALSE, flame_range = 1) //no boom, just flame and flash
+
+/obj/item/projectile/bullet/a473/shock
+ name = "4.73mm shock bullet"
+ damage = -12 // -50% damage
+ wound_bonus = 0
+ sharpness = SHARP_NONE
+ var/energy_damage = 4
+
+/obj/item/projectile/bullet/a473/shock/on_hit(atom/target, blocked = FALSE)
+ ..()
+ target.emp_act(5)//5 severity is very, very low
+ if(blocked != 100 && isliving(target))
+ var/mob/living/L = target
+ L.electrocute_act(energy_damage, "shock bullet", 1, SHOCK_NOGLOVES | SHOCK_NOSTUN)
+
+/obj/item/projectile/bullet/a473/hv
+ name = "4.73mm highvelocity bullet"
+ damage = -14 //about -60% damage for hitscan
+ hitscan = TRUE
+ wound_bonus = 0
+
//////////////////////////
@@ -202,6 +289,21 @@ Civilian round = -10% damage for .223. AP reduced by 50%
damage = 19
armour_penetration = 0.19
+/obj/item/projectile/bullet/m5mm/shock
+ name = "5mm shock bullet"
+ damage = -9 //about -50% damage
+ wound_bonus = 0
+ sharpness = SHARP_NONE
+ var/energy_damage = 5
+
+/obj/item/projectile/bullet/m5mm/shock/on_hit(atom/target, blocked = FALSE)
+ ..()
+ target.emp_act(5)//5 severity is very, very low
+ if(blocked != 100 && isliving(target))
+ var/mob/living/L = target
+ L.electrocute_act(energy_damage, "shock bullet", 1, SHOCK_NOGLOVES | SHOCK_NOSTUN) //this might be spammy todo: check
+ //if it is, use O.take_damage(energy_damage, BURN, "energy", FALSE)
+
//////////////////////////
// 5 MM minigun special //
//////////////////////////
@@ -219,3 +321,24 @@ Civilian round = -10% damage for .223. AP reduced by 50%
damage = 0
armour_penetration = 0.9 //if only one bullet has built in AP, its this one
pixels_per_second = TILES_TO_PIXELS(100)
+
+
+/obj/item/projectile/bullet/c2mm/blender //welcome to pain town
+ name = "2mm blender projectile"
+ damage = -20
+ hitscan = TRUE
+ pass_flags = PASSTABLE
+ armour_penetration = 1
+ ricochets_max = 9 //ain't called the 'blender' for nothin'
+ ricochet_incidence_leeway = 130
+ ricochet_decay_damage = 1
+ ricochet_decay_chance = 11
+ ricochet_chance = 100
+ var/collats = 3
+
+/obj/item/projectile/bullet/c2mm/blender/process_hit(turf/T, atom/target, qdel_self, hit_something = FALSE)
+ if(isliving(target) && collats)
+ collats--
+ temporary_unstoppable_movement = TRUE
+ ENABLE_BITFIELD(movement_type, UNSTOPPABLE)
+ ..()
diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm
index a91d050b7c..9cc79b79dc 100644
--- a/code/modules/projectiles/projectile/bullets/shotgun.dm
+++ b/code/modules/projectiles/projectile/bullets/shotgun.dm
@@ -47,7 +47,7 @@
. = ..()
if(iscarbon(target))
var/mob/living/carbon/M = target
- M.adjust_fire_stacks(3)
+ M.adjust_fire_stacks(3)
M.IgniteMob()
/obj/item/projectile/bullet/shotgun_stunslug
@@ -146,6 +146,23 @@
do_sparks(1, TRUE, src)
..()
+/obj/item/projectile/bullet/pellet/trainshot
+ damage = 15
+ stamina = 10
+ armour_penetration = 0.45
+ wound_bonus = 10
+ bare_wound_bonus = 10
+ sharpness = SHARP_NONE //crunch
+ tile_dropoff = 0
+ tile_dropoff_s = 0
+
+/obj/item/projectile/bullet/pellet/trainshot/on_hit(atom/target)
+ . = ..()
+ if(isliving(target) && prob(8))
+ var/mob/living/M = target
+ var/atom/throw_target = get_edge_target_turf(M, get_dir(src, get_step_away(M, src)))
+ M.safe_throw_at(throw_target, 2, 3)
+
// Mech Scattershots
/obj/item/projectile/bullet/scattershot
@@ -166,7 +183,7 @@
armour_penetration = 0.15
wound_bonus = 10
bare_wound_bonus = 10
-
+
// BETA STUFF // Obsolete
/obj/item/projectile/bullet/pellet/shotgun_buckshot/test
name = "buckshot pellet"
diff --git a/code/modules/projectiles/projectile/reusable/arrow.dm b/code/modules/projectiles/projectile/reusable/arrow.dm
index 648520e341..2229c0c5a4 100644
--- a/code/modules/projectiles/projectile/reusable/arrow.dm
+++ b/code/modules/projectiles/projectile/reusable/arrow.dm
@@ -13,17 +13,20 @@
damage = 0.5
ammo_type = /obj/item/ammo_casing/caseless/arrow/ash
-/obj/item/projectile/bullet/reusable/arrow/bone //AP for ashwalkers
+/obj/item/projectile/bullet/reusable/arrow/bone //extra mob damage
name = "bone arrow"
desc = "Arrow made of bone and sinew."
- damage = 30
- armour_penetration = 0.35
+ damage = 20
+ armour_penetration = 0.10
+ supereffective_damage = 40
+ supereffective_faction = list("hostile", "ant", "supermutant", "deathclaw", "cazador", "raider", "china", "gecko", "wastebot")
ammo_type = /obj/item/ammo_casing/caseless/arrow/bone
/obj/item/projectile/bullet/reusable/arrow/bronze //Just some AP shots
name = "bronze arrow"
desc = "Bronze tipped arrow."
- armour_penetration = 0.2
+ damage = 30
+ armour_penetration = 0.35
ammo_type = /obj/item/ammo_casing/caseless/arrow/bronze
//FO13 ARROWS
@@ -71,3 +74,28 @@
var/mob/living/carbon/human/targetHuman = target
targetHuman.adjust_fire_stacks(5)
targetHuman.IgniteMob() //you just got burned!
+
+
+/obj/item/projectile/bullet/reusable/arrow/broadhead
+ name = "broadhead arrow"
+ desc = "An arrow that sticks in wounds. Badly."
+ armour_penetration = 0.1
+ damage = 20
+ sharpness = SHARP_EDGED
+ ammo_type = /obj/item/ammo_casing/caseless/arrow/broadhead
+ embedding = list(embed_chance=100, fall_chance=0, jostle_chance=3, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.2, pain_mult=3, jostle_pain_mult=5, rip_time=25, projectile_payload = /obj/item/ammo_casing/caseless/arrow/broadhead)
+
+/obj/item/projectile/bullet/reusable/arrow/broadhead/on_hit(atom/target, blocked)
+ if(iscarbon(target))
+ dropped = TRUE
+ ..()
+
+/obj/item/projectile/bullet/reusable/arrow/serrated
+ name = "serrated arrow"
+ desc = "An arrow that can sever arteries!"
+ wound_bonus = 25
+ bare_wound_bonus = 20
+ sharpness = SHARP_EDGED
+ armour_penetration = 0.05
+ damage = 30
+ ammo_type = /obj/item/ammo_casing/caseless/arrow/serrated
diff --git a/code/modules/projectiles/projectile/reusable/magspear.dm b/code/modules/projectiles/projectile/reusable/magspear.dm
index 9c7c7d201c..a7b91b88bf 100644
--- a/code/modules/projectiles/projectile/reusable/magspear.dm
+++ b/code/modules/projectiles/projectile/reusable/magspear.dm
@@ -1,6 +1,18 @@
/obj/item/projectile/bullet/reusable/magspear
name = "magnetic spear"
desc = "WHITE WHALE, HOLY GRAIL"
- damage = 30 //takes 3 spears to kill a mega carp, one to kill a normal carp
+ damage = 35 //it's single-firing and pretty wierd so it gets good damage
+ supereffective_damage = 45 //it's for hunting
+ supereffective_faction = list("hostile", "ant", "supermutant", "deathclaw", "cazador", "raider", "china", "gecko", "wastebot")
+ armour_penetration = 0.5
icon_state = "magspear"
ammo_type = /obj/item/ammo_casing/caseless/magspear
+
+/obj/item/projectile/bullet/reusable/magspear/handle_drop()
+ if(!dropped)
+ var/turf/T = get_turf(src)
+ var/obj/item/ammo_casing/caseless/magspear/MS = new ammo_type(T)
+ if(istype(fired_from, /obj/item/gun/ballistic/automatic/speargun))
+ var/obj/item/gun/ballistic/automatic/speargun/SG = fired_from
+ SG.ourcasings += MS
+ dropped = TRUE
diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm
index 49ce14b53b..f64b8dd4a2 100644
--- a/code/modules/reagents/chemistry/holder.dm
+++ b/code/modules/reagents/chemistry/holder.dm
@@ -198,6 +198,7 @@
var/transfer_amount = T.volume * part
if(preserve_data)
trans_data = copy_data(T)
+ post_copy_data(T)
transferred += "[T] - [transfer_amount]"
R.add_reagent(T.type, transfer_amount * multiplier, trans_data, chem_temp, T.purity, pH, no_react = TRUE, ignore_pH = TRUE) //we only handle reaction after every reagent has been transfered.
@@ -1087,6 +1088,9 @@
return trans_data
+/datum/reagents/proc/post_copy_data(datum/reagent/current_reagent)
+ return current_reagent.post_copy_data()
+
/datum/reagents/proc/get_reagent(type)
var/list/cached_reagents = reagent_list
. = locate(type) in cached_reagents
diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm
index 28f0b2366a..7f56d2b38f 100644
--- a/code/modules/reagents/chemistry/machinery/chem_heater.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm
@@ -83,6 +83,15 @@
updateUsrDialog()
update_icon()
return
+ if(beaker)
+ if(istype(I, /obj/item/reagent_containers/dropper))
+ var/obj/item/reagent_containers/dropper/D = I
+ D.afterattack(beaker, user, 1)
+ return
+ if(istype(I, /obj/item/reagent_containers/syringe))
+ var/obj/item/reagent_containers/syringe/S = I
+ S.afterattack(beaker, user, 1)
+ return
return ..()
/obj/machinery/chem_heater/on_deconstruction()
diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm
index aa7ceb6973..3684dc7969 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -11,6 +11,7 @@
resistance_flags = FIRE_PROOF | ACID_PROOF
circuit = /obj/item/circuitboard/machine/chem_master
+ var/basereagents = 100
var/obj/item/reagent_containers/beaker = null
var/obj/item/storage/pill_bottle/bottle = null
var/mode = 1
@@ -25,7 +26,7 @@
var/fermianalyze //Give more detail on fermireactions on analysis
/obj/machinery/chem_master/Initialize()
- create_reagents(100)
+ create_reagents(basereagents)
//Calculate the span tags and ids fo all the available pill icons
var/datum/asset/spritesheet/simple/assets = get_asset_datum(/datum/asset/spritesheet/simple/pills)
@@ -529,6 +530,7 @@
idle_power_usage = 0
flags_1 = NODECONSTRUCT_1
can_be_unanchored = TRUE
+ basereagents = 240
/obj/machinery/chem_master/primitive/update_icon_state()
if(beaker)
@@ -536,6 +538,28 @@
else
icon_state = "alchemy_table"
+/obj/machinery/chem_master/primitive/attackby(obj/item/I, mob/user, params)
+ if(default_unfasten_wrench(user, I))
+ return
+ if(istype(I, /obj/item/reagent_containers) && !(I.item_flags & ABSTRACT) && I.is_open_container())
+ . = TRUE // no afterattack
+ var/obj/item/reagent_containers/B = I
+ if(!user.transferItemToLoc(B, src))
+ return
+ replace_beaker(user, B)
+ to_chat(user, "
You add [B] to [src]. ")
+ updateUsrDialog()
+ update_icon()
+ else if(!condi && istype(I, /obj/item/storage/pill_bottle))
+ . = TRUE // no afterattack
+ if(!user.transferItemToLoc(I, src))
+ return
+ replace_pillbottle(user, I)
+ to_chat(user, "
You add [I] into the dispenser slot. ")
+ updateUsrDialog()
+ else
+ return ..()
+
/obj/machinery/chem_master/primitive/ui_interact(mob/living/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(istype(user, /mob/dead/observer))
diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
index a53c57a3e7..6d6e6900f2 100644
--- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
+++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
@@ -15,7 +15,7 @@
resistance_flags = ACID_PROOF
var/operating = FALSE
var/obj/item/reagent_containers/beaker = null
- var/limit = 10
+ var/limit = 20
var/speed = 1
var/list/holdingitems
diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm
index 958c0365be..8ae8ec0698 100644
--- a/code/modules/reagents/chemistry/reagents.dm
+++ b/code/modules/reagents/chemistry/reagents.dm
@@ -182,6 +182,10 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
/datum/reagent/proc/on_update(atom/A)
return
+//Ran by a reagent holder on a specific reagent after copying its data.
+/datum/reagent/proc/post_copy_data()
+ return
+
// Called when the reagent container is hit by an explosion
/datum/reagent/proc/on_ex_act(severity)
return
diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm
index 14c3e40b47..e594f40bf1 100644
--- a/code/modules/reagents/chemistry/reagents/food_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm
@@ -382,18 +382,98 @@
/datum/reagent/consumable/brocjuice
name = "Broc Flower Juice"
- description = "The juice of a ground-up broc flower."
+ description = "The juice of a ground-up broc flower. Heals mild hypoxia."
nutriment_factor = 1 * REAGENTS_METABOLISM
color = "#302000" // rgb: 48, 32, 0
taste_description = "flowers"
+/datum/reagent/consumable/brocjuice/on_mob_life(mob/living/carbon/M)
+ M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER, 0)
+ ..()
+
/datum/reagent/consumable/xanderjuice
name = "Xander Root Juice"
- description = "Ground up xander root, mashed into juicy pulp."
+ description = "Ground up xander root, mashed into juicy pulp. Stimulates blood production."
nutriment_factor = 1 * REAGENTS_METABOLISM
color = "#302000" // rgb: 48, 32, 0
taste_description = "dirt"
+/datum/reagent/consumable/xanderjuice/on_mob_life(mob/living/carbon/M)
+ if(M.blood_volume < BLOOD_VOLUME_NORMAL)
+ M.blood_volume = min(BLOOD_VOLUME_NORMAL, M.blood_volume + 1)
+ ..()
+
+/datum/reagent/consumable/agavejuice
+ name = "Agave Leaf Juice"
+ description = "Ground up agave leaf, mashed into juicy pulp. Heals minor burns."
+ nutriment_factor = 1 * REAGENTS_METABOLISM
+ color = "#BAE3B4"
+ taste_description = "plants"
+
+/datum/reagent/consumable/agavejuice/on_mob_life(mob/living/carbon/M)
+ M.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0)
+ ..()
+
+/datum/reagent/consumable/ferajuice
+ name = "Barrel Fruit Juice"
+ description = "Squeezed barrelfruit juice. Heals damage caused by poisons and venoms."
+ nutriment_factor = 1 * REAGENTS_METABOLISM
+ color = "#E8E67E"
+ taste_description = "bitter"
+
+/datum/reagent/consumable/ferajuice/on_mob_life(mob/living/carbon/M)
+ if(M.health > 20)
+ M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, 0)
+ ..()
+
+/datum/reagent/consumable/daturajuice
+ name = "Datura Juice"
+ description = "Ground up bits of the datura plant. Mildly hallucinogenic."
+ nutriment_factor = 1 * REAGENTS_METABOLISM
+ color = "#ACDFCE"
+ taste_description = "bitter leaves"
+
+/datum/reagent/consumable/daturajuice/on_mob_life(mob/living/carbon/M)
+ M.set_drugginess(5)
+ M.hallucination += 2
+ ..()
+
+/datum/reagent/consumable/coyotejuice
+ name = "Coyote Leaf Juice"
+ description = "Juiced coyote tobacco leaves. Stimulates the nervous system."
+ nutriment_factor = 1 * REAGENTS_METABOLISM
+ color = "#168B64"
+ taste_description = "leaves"
+
+/datum/reagent/consumable/coyotejuice/on_mob_life(mob/living/carbon/M)
+ if(prob(10))
+ var/smoke_message = pick("You feel relaxed.", "You feel calmed.","You feel alert.","You feel rugged.")
+ to_chat(M, "
[smoke_message] ")
+ M.AdjustStun(-4, 0)
+ M.AdjustKnockdown(-4, 0)
+ M.AdjustUnconscious(-4, 0)
+ ..()
+
+/datum/reagent/consumable/cavefungusjuice
+ name = "Cave Fungus Juice"
+ description = "Juiced cave fungus fruiting bodies."
+ nutriment_factor = 1 * REAGENTS_METABOLISM
+ color = "#274E13"
+ taste_description = "nuts"
+
+/datum/reagent/consumable/cavefungusjuice/on_mob_life(mob/living/carbon/M)
+ M.adjustToxLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, 0)
+ ..()
+
+/datum/reagent/consumable/tato_juice
+ name = "Tato Juice"
+ description = "Juiced tatos."
+ nutriment_factor = 1 * REAGENTS_METABOLISM
+ color = "#274E13"
+ taste_description = "tato"
+
+
+
/datum/reagent/consumable/blackpepper
name = "Black Pepper"
description = "A powder ground from peppercorns. *AAAACHOOO*"
@@ -889,4 +969,3 @@
taste_mult = 2
taste_description = "fizzy sweetness"
value = REAGENT_VALUE_COMMON
-
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index d077d2aebc..d914c2b270 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -910,7 +910,7 @@
/datum/reagent/aslimetoxin/reaction_mob(mob/living/L, method=TOUCH, reac_volume)
if(method != TOUCH)
L.ForceContractDisease(new /datum/disease/transformation/slime(), FALSE, TRUE)
-*/
+*/
/datum/reagent/gluttonytoxin
name = "Gluttony's Blessing"
@@ -2594,6 +2594,11 @@ datum/reagent/eldritch
color = "#E6E6DA"
taste_mult = 0
+/datum/reagent/celugel
+ name = "Plasticized Cellulose"
+ description = "A plastic formed from esterized cellulose fibers. Organic!"
+ reagent_state = SOLID
+ color = "#E6E6DA"
/datum/reagent/hairball
name = "Hairball"
diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
index 9852216422..5ef7dfe3dd 100644
--- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
@@ -1101,3 +1101,31 @@
to_chat(M, "
Ah, what was that? You thought you heard something... ")
M.confused += 5
return ..()
+
+/datum/reagent/toxin/metabtoxin
+ name = "metabolism-inhibiting toxin"
+ description = "A mix of hepatoxic and nephrotoxic chemicals that cause the liver and kidneys to process medicine less effectively."
+ reagent_state = SOLID
+ color = "#30ff21" // rgb: 0 132 0
+ toxpwr = 0.1
+ metabolization_rate = 0.07 * REAGENTS_METABOLISM
+ taste_mult = 1.3
+ taste_description = "bitter sludge"
+ var/metab_inibition = 0.75
+
+/datum/reagent/toxin/metabtoxin/on_mob_metabolize(mob/living/L)
+ ..()
+ var/obj/item/organ/liver/liber = L.getorganslot(ORGAN_SLOT_LIVER)
+ if(liber)
+ liber.applyOrganDamage(5)
+ liber.filterToxins = FALSE
+ L.metabolism_efficiency -= metab_inibition
+
+/datum/reagent/toxin/metabtoxin/on_mob_end_metabolize(mob/living/L)
+ ..()
+ var/obj/item/organ/liver/liber = L.getorganslot(ORGAN_SLOT_LIVER)
+ if(liber)
+ liber.applyOrganDamage(5)
+ if(initial(liber.filterToxins))
+ liber.filterToxins = TRUE
+ L.metabolism_efficiency += metab_inibition
diff --git a/code/modules/reagents/chemistry/recipes/drugs.dm b/code/modules/reagents/chemistry/recipes/drugs.dm
index a1c0e0c0b9..ce2ea11883 100644
--- a/code/modules/reagents/chemistry/recipes/drugs.dm
+++ b/code/modules/reagents/chemistry/recipes/drugs.dm
@@ -12,7 +12,6 @@
mix_message = "The mixture violently reacts, leaving behind a few crystalline shards."
required_temp = 390
-
/datum/chemical_reaction/krokodil
name = "Krokodil"
id = /datum/reagent/drug/krokodil
@@ -70,3 +69,75 @@
results = list(/datum/reagent/moonsugar = 1, /datum/reagent/medicine/morphine = 2.5)
required_temp = 315 //a little above normal body temperature
required_reagents = list(/datum/reagent/drug/skooma = 1)
+
+/datum/chemical_reaction/jet
+ name = "Jet"
+ id = /datum/reagent/drug/jet
+ results = list(/datum/reagent/drug/jet = 5)
+ required_reagents = list(/datum/reagent/drug/nicotine = 2, /datum/reagent/consumable/milk = 2, /datum/reagent/fuel = 1, /datum/reagent/consumable/ethanol = 1)
+ OptimalTempMin = 600
+ OptimalTempMax = 675
+ ExplodeTemp = 700
+ OptimalpHMin = 7
+ OptimalpHMax = 10
+ ReactpHLim = 2
+ CurveSharpT = 5
+ CurveSharppH = 0.7
+ ThermicConstant = -6
+ HIonRelease = -0.5
+ RateUpLim = 10
+ FermiChem = TRUE
+
+/datum/chemical_reaction/turbo
+ name = "Turbo"
+ id = /datum/reagent/drug/turbo
+ results = list(/datum/reagent/drug/turbo = 4)
+ required_reagents = list(/datum/reagent/cellulose = 1, /datum/reagent/toxin/cyanide = 1, /datum/reagent/consumable/brocjuice = 1, /datum/reagent/drug/jet = 1) //fairly close to the ingame recipe
+ OptimalTempMin = 410
+ OptimalTempMax = 525
+ ExplodeTemp = 585
+ OptimalpHMin = 4
+ OptimalpHMax = 7
+ ReactpHLim = 2
+ CurveSharpT = 5
+ CurveSharppH = 0.7
+ ThermicConstant = 8
+ HIonRelease = 0.5
+ RateUpLim = 7
+ FermiChem = TRUE
+
+/datum/chemical_reaction/psycho
+ name = "Psycho"
+ id = /datum/reagent/drug/psycho
+ results = list(/datum/reagent/drug/psycho = 3)
+ required_reagents = list(/datum/reagent/toxin/acid = 1, /datum/reagent/consumable/cavefungusjuice = 1, /datum/reagent/ash = 1, /datum/reagent/drug/methamphetamine = 1)
+ OptimalTempMin = 223
+ OptimalTempMax = 303
+ ExplodeTemp = 323
+ OptimalpHMin = 3
+ OptimalpHMax = 6
+ ReactpHLim = 1
+ CurveSharpT = 5
+ CurveSharppH = 0.7
+ ThermicConstant = 5
+ HIonRelease = 0.5
+ RateUpLim = 5
+ FermiChem = TRUE
+
+/datum/chemical_reaction/buffout
+ name = "Buffout"
+ id = /datum/reagent/drug/buffout
+ results = list(/datum/reagent/drug/buffout = 10)
+ required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/phosphorus = 1, /datum/reagent/sulfur = 1, /datum/reagent/drug/crank = 1, /datum/reagent/carbondioxide = 1, /datum/reagent/nitrous_oxide = 1, /datum/reagent/consumable/yuccajuice = 1)
+ OptimalTempMin = 165
+ OptimalTempMax = 215
+ ExplodeTemp = 223
+ OptimalpHMin = 8
+ OptimalpHMax = 11
+ ReactpHLim = 1
+ CurveSharpT = 5
+ CurveSharppH = 0.7
+ ThermicConstant = 2
+ HIonRelease = 0.25
+ RateUpLim = 3
+ FermiChem = TRUE
diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm
index 0e22bf81f5..005c8ebda7 100644
--- a/code/modules/reagents/chemistry/recipes/medicine.dm
+++ b/code/modules/reagents/chemistry/recipes/medicine.dm
@@ -152,7 +152,7 @@ datum/chemical_reaction/rezadone
name = "Pentetic Jelly"
id = /datum/reagent/medicine/pen_acid/pen_jelly
results = list(/datum/reagent/medicine/pen_acid/pen_jelly = 2)
- required_reagents = list(/datum/reagent/medicine/pen_acid = 1, /datum/reagent/toxin/slimejelly = 1)
+ required_reagents = list(/datum/reagent/medicine/pen_acid = 1, /datum/reagent/celugel = 1)
/datum/chemical_reaction/sal_acid
name = "Salicyclic Acid"
@@ -260,7 +260,7 @@ datum/chemical_reaction/rezadone
name = "Pyroxadone"
id = /datum/reagent/medicine/pyroxadone
results = list(/datum/reagent/medicine/pyroxadone = 2)
- required_reagents = list(/datum/reagent/medicine/cryoxadone = 1, /datum/reagent/toxin/slimejelly = 1)
+ required_reagents = list(/datum/reagent/medicine/cryoxadone = 1, /datum/reagent/celugel = 1)
/datum/chemical_reaction/clonexadone
name = "Clonexadone"
@@ -303,7 +303,7 @@ datum/chemical_reaction/rezadone
name = "Regenerative Jelly"
id = /datum/reagent/medicine/regen_jelly
results = list(/datum/reagent/medicine/regen_jelly = 2)
- required_reagents = list(/datum/reagent/medicine/tricordrazine = 1, /datum/reagent/toxin/slimejelly = 1)
+ required_reagents = list(/datum/reagent/medicine/tricordrazine = 1, /datum/reagent/celugel = 1)
/datum/chemical_reaction/jelly_convert
name = "Blood Jelly Conversion"
@@ -338,7 +338,7 @@ datum/chemical_reaction/rezadone
required_reagents = list( /datum/reagent/medicine/mannitol = 2, /datum/reagent/water = 2, /datum/reagent/impedrezene = 1)
/datum/chemical_reaction/medsuture
- required_reagents = list(/datum/reagent/cellulose = 10, /datum/reagent/toxin/formaldehyde = 20, /datum/reagent/medicine/polypyr = 15) //This might be a bit much, reagent cost should be reviewed after implementation.
+ required_reagents = list(/datum/reagent/cellulose = 10, /datum/reagent/toxin/formaldehyde = 20, /datum/reagent/medicine/polypyr = 10) //This might be a bit much, reagent cost should be reviewed after implementation.
/datum/chemical_reaction/medsuture/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
@@ -346,7 +346,7 @@ datum/chemical_reaction/rezadone
new /obj/item/stack/medical/suture/medicated(location)
/datum/chemical_reaction/medmesh
- required_reagents = list(/datum/reagent/cellulose = 20, /datum/reagent/consumable/aloejuice = 20, /datum/reagent/abraxo_cleaner/sterilizine = 10)
+ required_reagents = list(/datum/reagent/cellulose = 10, /datum/reagent/consumable/aloejuice = 10, /datum/reagent/abraxo_cleaner/sterilizine = 10)
/datum/chemical_reaction/medmesh/on_reaction(datum/reagents/holder, created_volume)
var/location = get_turf(holder.my_atom)
@@ -391,8 +391,8 @@ datum/chemical_reaction/rezadone
/datum/chemical_reaction/stimpak2
name = "Imitation Stimpak Fluid"
id = /datum/reagent/medicine/stimpakimitation
- results = list(/datum/reagent/medicine/stimpakimitation = 1)
- required_reagents = list(/datum/reagent/consumable/brocjuice = 3, /datum/reagent/consumable/xanderjuice = 3)
+ results = list(/datum/reagent/medicine/stimpakimitation = 2)
+ required_reagents = list(/datum/reagent/consumable/brocjuice = 1, /datum/reagent/consumable/xanderjuice = 1)
OptimalTempMin = 500 // Lower area of bell curve for determining heat based rate reactions
OptimalTempMax = 650 // Upper end for above
ExplodeTemp = 9999 //Temperature at which reaction explodes
@@ -407,6 +407,43 @@ datum/chemical_reaction/rezadone
FermiChem = TRUE//If the chemical uses the Fermichem reaction mechanics
FermiExplode = FALSE //If the chemical explodes in a special way
+/datum/chemical_reaction/superstimpak
+ name = "Super Stimpak Fluid"
+ id = /datum/reagent/medicine/super_stimpak
+ results = list(/datum/reagent/medicine/super_stimpak = 5)
+ required_reagents = list(/datum/reagent/blood/synthetics = 1, /datum/reagent/medicine/stimpak = 1, /datum/reagent/consumable/mutjuice = 1) //1 mutfruit at 50 potency yields 6 mutfruit juice
+ OptimalTempMin = 65
+ OptimalTempMax = 95
+ ExplodeTemp = 100
+ OptimalpHMin = 0.5
+ OptimalpHMax = 3
+ ReactpHLim = 1
+ CurveSharpT = 1 //flat tcurve
+ CurveSharppH = 0.5
+ ThermicConstant = 1.5
+ HIonRelease = 0.1
+ RateUpLim = 50 //this seems quite high but 1. runaway thermals 2. it's very slow since it's 100K
+ FermiChem = TRUE
+ FermiExplode = FALSE
+
+/datum/chemical_reaction/medx
+ name = "Med-X"
+ id = /datum/reagent/medicine/medx
+ results = list(/datum/reagent/medicine/medx = 4)
+ required_reagents = list(/datum/reagent/drug/aranesp = 1, /datum/reagent/phenol = 1, /datum/reagent/drug/heroin = 1, /datum/reagent/medicine/stimpakimitation = 1)
+ OptimalTempMin = 780
+ OptimalTempMax = 821
+ ExplodeTemp = 824
+ OptimalpHMin = 10
+ OptimalpHMax = 14
+ ReactpHLim = 1
+ CurveSharpT = 10
+ CurveSharppH = 0.5
+ ThermicConstant = 8
+ HIonRelease = -0.5
+ RateUpLim = 40
+ FermiChem = TRUE
+
/datum/chemical_reaction/mentats
name = "mentats"
diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm
index 1a4d48787a..93217920af 100644
--- a/code/modules/reagents/chemistry/recipes/others.dm
+++ b/code/modules/reagents/chemistry/recipes/others.dm
@@ -850,6 +850,28 @@
required_reagents = list(/datum/reagent/cellulose = 1)
required_temp = 512
+
+/datum/chemical_reaction/celugel
+ name = "Cellulose Plasticization"
+ id = /datum/reagent/celugel
+ required_catalysts = list(/datum/reagent/lithium = 5, /datum/reagent/chlorine = 5)
+ results = list(/datum/reagent/celugel = 4)
+ required_reagents = list(/datum/reagent/cellulose = 1, /datum/reagent/diethylamine = 1, /datum/reagent/fermi/acidic_buffer = 0.5, /datum/reagent/acetone = 1, /datum/reagent/carbondioxide = 1) //not a super easy recipe as it replaces a hard-to-get chemical
+ OptimalTempMin = 430
+ OptimalTempMax = 520
+ ExplodeTemp = 9999
+ OptimalpHMin = 3
+ OptimalpHMax = 6
+ ReactpHLim = 2
+ CurveSharpT = 5
+ CurveSharppH = 0.5
+ ThermicConstant = 4
+ HIonRelease = 0.1
+ RateUpLim = 6
+ FermiChem = TRUE
+ FermiExplode = FALSE
+
+
/datum/chemical_reaction/nutracid_reaction
name = "Nutracid Nutriment Reaction"
id = "nutracid"
diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
index 0c954c0450..8a758ed252 100644
--- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
+++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
@@ -417,8 +417,8 @@
name = "Energized Jelly"
id = /datum/reagent/teslium/energized_jelly
results = list(/datum/reagent/teslium/energized_jelly = 2)
- required_reagents = list(/datum/reagent/toxin/slimejelly = 1, /datum/reagent/teslium = 1)
- mix_message = "
The slime jelly starts glowing intermittently. "
+ required_reagents = list(/datum/reagent/celugel = 1, /datum/reagent/teslium = 1)
+ mix_message = "
The cellulose gel starts glowing intermittently. "
/datum/chemical_reaction/reagent_explosion/teslium_lightning
name = "Teslium Destabilization"
diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm
index ec734af764..4cd79a1306 100644
--- a/code/modules/reagents/reagent_containers/blood_pack.dm
+++ b/code/modules/reagents/reagent_containers/blood_pack.dm
@@ -155,3 +155,10 @@
labelled = 1
blood_type = null
list_reagents = list(/datum/reagent/medicine/radaway = 200)
+
+
+/obj/item/reagent_containers/blood/small
+ name = "small blood pack"
+ volume = 150 //same as plasbucket
+ w_class = WEIGHT_CLASS_SMALL
+ reagent_flags = INJECTABLE | DRAINABLE | AMOUNT_VISIBLE
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 2a6b7d3395..49a5c0b2be 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -337,6 +337,7 @@
desc = "An ancient, simple tool used in conjunction with a mortar to grind or juice items."
icon = 'icons/obj/chemical.dmi'
icon_state = "bone_pestle"
+ w_class = WEIGHT_CLASS_SMALL
force = 6
/obj/item/reagent_containers/glass/mortar
@@ -344,67 +345,112 @@
desc = "A specially formed bowl of ancient design. It is possible to crush or juice items placed in it using a pestle; however the process, unlike modern methods, is slow and physically exhausting."
icon_state = "bone_mortar"
amount_per_transfer_from_this = 10
- possible_transfer_amounts = list(5, 10, 15, 20, 25, 30, 50)
+ possible_transfer_amounts = list(5, 10, 15, 20, 25, 30, 50, 60, 120)
+ volume = 120
item_flags = NO_MAT_REDEMPTION
reagent_flags = OPENCONTAINER
spillable = TRUE
- var/obj/item/grinded
+ var/list/holdingitems
var/mortar_mode = MORTAR_JUICE
var/blacklistchems = list(
/obj/item/reagent_containers/pill/patch/turbo,
/obj/item/reagent_containers/pill/buffout,
/obj/item/reagent_containers/pill/patch/jet,
)
-
+/obj/item/reagent_containers/glass/mortar/Initialize()
+ . = ..()
+ holdingitems = list()
/obj/item/reagent_containers/glass/mortar/examine(mob/user)
. = ..()
. += "
Alt-click to eject any item put inside. "
. += "
Alt-click while the mortar is empty to change between grind/juice mode. "
/obj/item/reagent_containers/glass/mortar/AltClick(mob/user)
- if(grinded)
- grinded.forceMove(drop_location())
- grinded = null
- to_chat(user, "
You eject the item inside. ")
- return TRUE
+ if(LAZYLEN(holdingitems))
+ eject()
else
mortar_mode = !mortar_mode
- to_chat(user, "
You decide to hold [src] differently to [mortar_mode == MORTAR_JUICE ? "juice the harvest" : "grind the harvest"]. ")
+ to_chat(user, "
You decide to [mortar_mode == MORTAR_JUICE ? "juice the harvest" : "grind the harvest"]. ")
/obj/item/reagent_containers/glass/mortar/attackby(obj/item/I, mob/living/carbon/human/user)
- if (is_type_in_list(I, blacklistchems))
+ if(is_type_in_list(I, blacklistchems))
return
- ..()
if(istype(I,/obj/item/pestle))
- if(grinded)
+ if(LAZYLEN(holdingitems))
if(IS_STAMCRIT(user))
to_chat(user, "
You are too tired to work! ")
return
- to_chat(user, "
You start grinding... ")
- if((do_after(user, 25, target = src)))
- user.adjustStaminaLoss(15)
- if(grinded.juice_results && (mortar_mode== MORTAR_JUICE)) // will prioritize juicing IF the Mortar's toggled to juice.
- grinded.on_juice()
- reagents.add_reagent_list(grinded.juice_results)
- to_chat(user, "
You juice [grinded] into a fine liquid. ")
- QDEL_NULL(grinded)
- return
- grinded.on_grind()
- reagents.add_reagent_list(grinded.grind_results)
- if(grinded.reagents && (mortar_mode== MORTAR_GRIND)) //food and pills
- grinded.reagents.trans_to(src, grinded.reagents.total_volume, log = "mortar powdering")
- to_chat(user, "
You grind [grinded] into a fine powder. ")
- QDEL_NULL(grinded)
+ user.adjustStaminaLoss(2 * holdingitems.len) //max 40
+ if(mortar_mode== MORTAR_JUICE)
+ juice()
+ return
+ else
+ grind()
return
- return
else
to_chat(user, "
There is nothing to grind! ")
return
- if(grinded)
- to_chat(user, "
There is something inside already! ")
+ if(holdingitems.len >= 10)
+ to_chat(user, "
The [src] is full! ")
+ return
+ if(istype(I, /obj/item/storage/bag))
+ var/list/inserted = list()
+ if(SEND_SIGNAL(I, COMSIG_TRY_STORAGE_TAKE_TYPE, /obj/item/reagent_containers/food/snacks/grown, src, 10 - length(holdingitems), null, null, user, inserted))
+ for(var/i in inserted)
+ holdingitems[i] = TRUE
+ if(!I.contents.len)
+ to_chat(user, "
You empty [I] into [src]. ")
+ else
+ to_chat(user, "
You fill [src] to the brim. ")
+ return TRUE
+ if(!I.grind_requirements(src)) //Error messages should be in the objects' definitions
return
if(I.juice_results || I.grind_results)
- I.forceMove(src)
- grinded = I
+ if(user.transferItemToLoc(I, src))
+ to_chat(user, "
You add [I] to [src]. ")
+ holdingitems[I] = TRUE
+ return FALSE
+ to_chat(user, "
You can't put this in the mortar! ")
+ ..()
+
+/obj/item/reagent_containers/glass/mortar/proc/eject(mob/user)
+ for(var/i in holdingitems)
+ var/obj/item/O = i
+ O.forceMove(drop_location())
+ holdingitems -= O
+
+/obj/item/reagent_containers/glass/mortar/proc/remove_object(obj/item/O)
+ holdingitems -= O
+ qdel(O)
+
+/obj/item/reagent_containers/glass/mortar/proc/juice()
+ for(var/obj/item/i in holdingitems)
+ if(reagents.total_volume >= reagents.maximum_volume)
+ break
+ var/obj/item/I = i
+ if(I.juice_results)
+ juice_item(I)
+
+/obj/item/reagent_containers/glass/mortar/proc/juice_item(obj/item/I) //Juicing results can be found in respective object definitions
+ if(I.on_juice(src) == -1)
+ to_chat(usr, "
[src] cannot juice [I]. ")
+ return
+ reagents.add_reagent_list(I.juice_results)
+ remove_object(I)
+
+/obj/item/reagent_containers/glass/mortar/proc/grind()
+ for(var/i in holdingitems)
+ if(reagents.total_volume >= reagents.maximum_volume)
+ break
+ var/obj/item/I = i
+ if(I.grind_results)
+ grind_item(i)
+
+/obj/item/reagent_containers/glass/mortar/proc/grind_item(obj/item/I) //Grind results can be found in respective object definitions
+ if(I.on_grind(src) == -1) //Call on_grind() to change amount as needed, and stop grinding the item if it returns -1
+ to_chat(usr, "
[src] cannot grind [I]. ")
return
- to_chat(user, "
You can't grind this! ")
+ reagents.add_reagent_list(I.grind_results)
+ if(I.reagents)
+ I.reagents.trans_to(reagents, I.reagents.total_volume)
+ remove_object(I)
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index 7685150530..ffb65eff87 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -485,7 +485,7 @@
return
var/fp_verb = mode == HYPO_SPRAY ? "spray" : "inject"
- var/method = mode == HYPO_SPRAY ? TOUCH : INJECT
+ var/method = mode == HYPO_SPRAY ? PATCH : INJECT
if(L != user)
L.visible_message("
[user] is trying to [fp_verb] [L] with [src]! ", \
diff --git a/code/modules/research/designs/ammolathe_designs.dm b/code/modules/research/designs/ammolathe_designs.dm
index 189c236fc2..2027749c3e 100644
--- a/code/modules/research/designs/ammolathe_designs.dm
+++ b/code/modules/research/designs/ammolathe_designs.dm
@@ -97,6 +97,20 @@
build_path = /obj/item/ammo_box/magazine/m556/rifle/small/empty
category = list("initial", "Simple Magazines")
+/datum/design/ammolathe/m762_rifle_small
+ name = "empty stripper clip (7.62mm)"
+ id = "m762_rifle_small"
+ materials = list(/datum/material/iron = 3000)
+ build_path = /obj/item/ammo_box/a762/empty
+ category = list("initial", "Simple Magazines")
+
+/datum/design/ammolathe/m762_rifle_small
+ name = "empty stripper clip (.308)"
+ id = "ma762_rifle_small"
+ materials = list(/datum/material/iron = 3000)
+ build_path = /obj/item/ammo_box/a308/empty
+ category = list("initial", "Simple Magazines")
+
/datum/design/ammolathe/m45magazine
name = "empty handgun magazine (.45)"
id = "m45magazine"
@@ -226,6 +240,12 @@
build_path = /obj/item/ammo_box/magazine/uzim9mm/empty
category = list("initial", "Basic Magazines")
+/datum/design/ammolathe/carl_gustafmag
+ name = "empty carl gustaf magazine (10mm)"
+ id = "carl_gustafmag"
+ materials = list(/datum/material/iron = 4000)
+ build_path = /obj/item/ammo_box/magazine/cg45/empty
+ category = list("initial", "Basic Magazines")
/datum/design/ammolathe/pistol22mag
name = "empty pistol magazine (.22lr)"
@@ -371,6 +391,13 @@
build_path = /obj/item/ammo_box/c4570/empty
category = list("initial", "Intermediate Magazines")
+/datum/design/ammolathe/m762_rifle_doublestack
+ name = "empty double stack stripper clip (7.62mm)"
+ id = "m762_rifle_doublestack"
+ materials = list(/datum/material/iron = 5000)
+ build_path = /obj/item/ammo_box/a762/doublestacked/empty
+ category = list("initial", "Intermediate Magazines")
+
/datum/design/ammolathe/tube4570
name = "empty speed loader tube (.45-70)"
id = "tube4570"
@@ -456,7 +483,6 @@
build_path = /obj/item/ammo_box/c4570box
category = list("initial", "Intermediate Ammo")
-
/datum/design/ammolathe/lc45
name = ".45 LC ammo box"
id = "c45lc"
@@ -478,27 +504,6 @@
materials = list(/datum/material/iron = 15000, /datum/material/blackpowder = 2000)
category = list("initial", "Intermediate Ammo")
-/datum/design/ammolathe/a10mmwounding
- name = "10mm wounding ammo box"
- id = "a10mmwound"
- build_path = /obj/item/ammo_box/c10mm/wounding
- materials = list(/datum/material/iron = 15000, /datum/material/blackpowder = 5000)
- category = list("initial", "Intermediate Ammo")
-
-/datum/design/ammolathe/a10mmfire
- name = "10mm incendiary ammo box"
- id = "10mmincend"
- build_path = /obj/item/ammo_box/c10mm/fire
- materials = list(/datum/material/iron = 15000, /datum/material/blackpowder = 10000)
- category = list("initial", "Intermediate Ammo")
-
-/datum/design/ammolathe/a9mmwounding
- name = "9mm wounding ammo box"
- id = "9mmincend"
- build_path = /obj/item/ammo_box/c9mm/wounding
- materials = list(/datum/material/iron = 15000, /datum/material/blackpowder = 5000)
- category = list("initial", "Intermediate Ammo")
-
/*/datum/design/ammolathe/a45op
name = ".45 ACP +P ammo box"
id = "a45op"
@@ -551,6 +556,14 @@
build_path = /obj/item/ammo_box/magazine/m473/empty
category = list("initial", "Advanced Magazines")
+/datum/design/ammolathe/m473s
+ name = "empty wt550 magazine (4.73mm)"
+ id = "m473s"
+ materials = list(/datum/material/iron = 2000)
+ build_path = /obj/item/ammo_box/magazine/m473/small/empty
+ category = list("initial", "Advanced Magazines")
+
+
/datum/design/ammolathe/m762ext
name = "empty extended rifle magazine (7.62x51)"
id = "m762ext"
@@ -598,31 +611,65 @@
/datum/design/ammolathe/m473fmj
name = "4.73mm caseless ammo box"
id = "m473fmj"
- materials = list(/datum/material/iron = 25000, /datum/material/blackpowder = 2000)
+ materials = list(/datum/material/iron = 20000, /datum/material/blackpowder = 2000)
build_path = /obj/item/ammo_box/m473
category = list("initial", "Advanced Ammo")
-/datum/design/ammolathe/a556uraniumtipped
- name = "5.56mm uranium-tipped ammo box"
- id = "a556uranium"
- materials = list(/datum/material/iron = 40000, /datum/material/titanium = 15000, /datum/material/blackpowder = 5000, /datum/material/uranium = 4000)
- build_path = /obj/item/ammo_box/a556/uraniumtipped
+/datum/design/ammolathe/m473rubber
+ name = "4.73mm caseless rubber ammo box"
+ id = "m473rubber"
+ materials = list(/datum/material/plastic = 12000, /datum/material/blackpowder = 1000)
+ build_path = /obj/item/ammo_box/m473/rubber
+ category = list("initial", "Advanced Ammo")
+
+/datum/design/ammolathe/m473incin
+ name = "4.73mm incendiary caseless ammo box"
+ id = "m473incin"
+ materials = list(/datum/material/iron = 20000, /datum/material/blackpowder = 3000)
+ build_path = /obj/item/ammo_box/m473/incendiary
+ category = list("initial", "Advanced Ammo")
+
+/datum/design/ammolathe/m473u235
+ name = "4.73mm uranium-tipped caseless ammo box"
+ id = "m473u235"
+ materials = list(/datum/material/titanium = 10000, /datum/material/uranium = 4000, /datum/material/blackpowder = 2000)
+ build_path = /obj/item/ammo_box/m473/uraniumtipped
+ category = list("initial", "Advanced Ammo")
+
+/datum/design/ammolathe/m473wound
+ name = "4.73mm flat-nose caseless ammo box"
+ id = "m473wound"
+ materials = list(/datum/material/iron = 12000,/datum/material/titanium = 2000, /datum/material/blackpowder = 2000)
+ build_path = /obj/item/ammo_box/m473/dumdum
category = list("initial", "Advanced Ammo")
-/datum/design/ammolathe/a762uraniumtipped
- name = "7.62 uranium-tipped ammo box"
- id = "a762uranium"
- materials = list(/datum/material/iron = 40000, /datum/material/titanium = 15000, /datum/material/blackpowder = 5000, /datum/material/uranium = 4000)
- build_path = /obj/item/ammo_box/a762box/uraniumtipped
+/datum/design/ammolathe/m473explosive
+ name = "4.73mm explosive caseless ammo box"
+ id = "m473explosive"
+ materials = list(/datum/material/iron = 24000, /datum/material/titanium = 10000, /datum/material/blackpowder = 10000)
+ build_path = /obj/item/ammo_box/m473/explosive
category = list("initial", "Advanced Ammo")
-/datum/design/ammolathe/a45incendiary
- name = ".45 incendiary ammo box"
- id = "45incend"
- materials = list(/datum/material/iron = 20000, /datum/material/blackpowder = 15000)
- build_path = /obj/item/ammo_box/c45/incendiary
+/datum/design/ammolathe/m473esd
+ name = "4.73mm ESD caseless ammo box"
+ id = "m473esd"
+ materials = list(/datum/material/iron = 12000, /datum/material/gold = 2000, /datum/material/silver = 2000, /datum/material/titanium = 2000, /datum/material/blackpowder = 2000)
+ build_path = /obj/item/ammo_box/m473/shock
category = list("initial", "Advanced Ammo")
+/datum/design/ammolathe/m473hv
+ name = "4.73mm high-velocity caseless ammo box"
+ id = "m473hv"
+ materials = list(/datum/material/iron = 12000, /datum/material/titanium = 8000, /datum/material/blackpowder = 3000)
+ build_path = /obj/item/ammo_box/m473/hv
+ category = list("initial", "Advanced Ammo")
+
+
+
+
+
+
+
/datum/design/ammolathe/a357ricochet
name = ".357 ricochet ammo"
id = "357ricochet"
diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm
index a639f71c13..face6d75b2 100644
--- a/code/modules/research/designs/autolathe_designs.dm
+++ b/code/modules/research/designs/autolathe_designs.dm
@@ -421,6 +421,14 @@
build_path = /obj/item/reagent_containers/glass/beaker/large
category = list("initial", "Medical")
+/datum/design/xl_beaker
+ name = "Extra-Large Beaker"
+ id = "xl_beaker"
+ build_type = AUTOLATHE
+ materials = list(MAT_GLASS = 2500, /datum/material/plastic = 3000)
+ build_path = /obj/item/reagent_containers/glass/beaker/plastic
+ category = list("initial", "Medical")
+
/datum/design/solids
name = "Solid Beaker"
id = "solids"
diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.dm b/code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.dm
index 8f8500e69f..21a3474b94 100644
--- a/code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.dm
+++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.dm
@@ -172,6 +172,23 @@
category = list("initial", "Medical","Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_SCIENCE
+/datum/design/xl_beaker
+ name = "Extra-Large Beaker"
+ id = "xl_beaker"
+ build_type = AUTOLATHE
+ materials = list(/datum/material/glass = 2500, /datum/material/plastic = 3000)
+ build_path = /obj/item/reagent_containers/glass/beaker/plastic
+ category = list("initial", "Medical")
+
+/datum/design/blood_bag_s
+ name = "Empty Small Blood Bag"
+ desc = "A small sterilized plastic bag for blood."
+ id = "blood_bag_s"
+ build_path = /obj/item/reagent_containers/blood/small
+ build_type = AUTOLATHE
+ materials = list(/datum/material/glass = 1500, /datum/material/plastic = 3500)
+ category = list("initial", "Medical")
+
/datum/design/healthanalyzer
name = "Health Analyzer"
id = "healthanalyzer"
diff --git a/code/modules/research/designs/autoylathe_designs.dm b/code/modules/research/designs/autoylathe_designs.dm
index 354fbfe53d..f7ff0208fc 100644
--- a/code/modules/research/designs/autoylathe_designs.dm
+++ b/code/modules/research/designs/autoylathe_designs.dm
@@ -437,13 +437,6 @@
build_path = /obj/item/toy/figure/wizard
category = list("hacked", "Figurines")
-/datum/design/autoylathe/dildo
- name = "Customizable Dildo"
- id = "dildo"
- materials = list(/datum/material/plastic = 2000)
- build_path = /obj/item/dildo/custom
- category = list("initial", "Adult")
-
/datum/design/autoylathe/collar
name = "Collar"
id = "collar"
diff --git a/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm b/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm
index 99caa5b480..8ea883edf1 100644
--- a/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm
+++ b/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm
@@ -21,14 +21,6 @@
category = list("Computer Boards")
departmental_flags = DEPARTMENTAL_FLAG_ALL
-/datum/design/board/minesweeper
- name = "Computer Design (Minesweeper Arcade Machine)"
- desc = "Allows for the construction of circuit boards used to build a new Minesweeper machine."
- id = "arcade_minesweeper"
- build_path = /obj/item/circuitboard/computer/arcade/minesweeper
- category = list("Computer Boards")
- departmental_flags = DEPARTMENTAL_FLAG_ALL
-
/datum/design/board/slot_machine
name = "Computer Design (Slot Machine)"
desc = "Allows for the construction of circuit boards used to build a new slot machine."
diff --git a/code/modules/research/nanites/nanite_programs/healing.dm b/code/modules/research/nanites/nanite_programs/healing.dm
index 18307ce2c5..b00554e52c 100644
--- a/code/modules/research/nanites/nanite_programs/healing.dm
+++ b/code/modules/research/nanites/nanite_programs/healing.dm
@@ -230,7 +230,7 @@
var/mob/living/carbon/C = host_mob
if(C.get_ghost())
return FALSE
- return C.can_defib()
+ return C.can_revive()
/datum/nanite_program/defib/proc/zap()
var/mob/living/carbon/C = host_mob
@@ -247,4 +247,3 @@
log_game("[C] has been successfully defibrillated by nanites.")
else
playsound(C, 'sound/machines/defib_failed.ogg', 50, FALSE)
-
diff --git a/code/modules/research/techweb/_techweb.dm b/code/modules/research/techweb/_techweb.dm
index c1fde62cdf..9992c6b2fd 100644
--- a/code/modules/research/techweb/_techweb.dm
+++ b/code/modules/research/techweb/_techweb.dm
@@ -404,6 +404,10 @@
design_autounlock_buildtypes = AUTOLATHE
allowed_buildtypes = AUTOLATHE|TOYLATHE|AMMOLATHE
+/datum/techweb/specialized/autounlocking/basiclathe
+ design_autounlock_buildtypes = BASIC
+ allowed_buildtypes = BASIC
+
/datum/techweb/specialized/autounlocking/autolathe/public
design_autounlock_skip_types = NO_PUBLIC_LATHE
diff --git a/code/modules/research/techweb/nodes/computer_hud_nodes.dm b/code/modules/research/techweb/nodes/computer_hud_nodes.dm
index 1c83ddd4c6..02c1606e71 100644
--- a/code/modules/research/techweb/nodes/computer_hud_nodes.dm
+++ b/code/modules/research/techweb/nodes/computer_hud_nodes.dm
@@ -60,5 +60,5 @@
display_name = "Games and Toys"
description = "For the slackers on the station."
prereq_ids = list("comptech")
- design_ids = list("arcade_battle", "arcade_orion", "arcade_minesweeper", "slotmachine", "autoylathe")
+ design_ids = list("arcade_battle", "arcade_orion", "slotmachine", "autoylathe")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000)
diff --git a/code/modules/smithing/anvil.dm b/code/modules/smithing/anvil.dm
index c43ecacb32..0fd16dd9fd 100644
--- a/code/modules/smithing/anvil.dm
+++ b/code/modules/smithing/anvil.dm
@@ -47,7 +47,7 @@
var/rng = FALSE
var/debug = FALSE //vv this if you want an artifact
var/artifactrolled = FALSE
- var/itemqualitymax = 20
+ var/itemqualitymax = 8
var/list/smithrecipes = list(RECIPE_HAMMER = /obj/item/smithing/hammerhead,
RECIPE_SCYTHE = /obj/item/smithing/scytheblade,
RECIPE_SHOVEL = /obj/item/smithing/shovelhead,
@@ -305,7 +305,6 @@
icon_state = "ratvaranvil"
anvilquality = 1
itemqualitymax = 8
-
/obj/structure/anvil/obtainable/ratvar/attackby(obj/item/I, mob/user)
if(is_servant_of_ratvar(user))
return ..()
diff --git a/code/modules/smithing/finished_items.dm b/code/modules/smithing/finished_items.dm
index 6c2a048e53..ff7fa90a7c 100644
--- a/code/modules/smithing/finished_items.dm
+++ b/code/modules/smithing/finished_items.dm
@@ -8,8 +8,9 @@
material_flags = MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
total_mass = TOTAL_MASS_MEDIEVAL_WEAPON //yeah ok
slot_flags = ITEM_SLOT_BELT
+ obj_flags = UNIQUE_RENAME
w_class = WEIGHT_CLASS_NORMAL
- force = 6
+ force = 5
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
var/quality
@@ -32,7 +33,7 @@
/obj/item/melee/smith/twohand
item_flags = NEEDS_PERMIT //it's a bigass sword/spear. beepsky is going to give you shit for it.
sharpness = SHARP_EDGED
- obj_flags = UNIQUE_RENAME
+ attack_speed = CLICK_CD_MELEE * 1.1
material_flags = MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
force = 10
wielded_mult = 1.75
@@ -116,10 +117,10 @@
icon_state = "halberd"
w_class = WEIGHT_CLASS_HUGE
overlay_state = "spearhandle"
+ attack_speed = CLICK_CD_MELEE * 1.25
max_reach = 2
slot_flags = ITEM_SLOT_BACK
- obj_flags = UNIQUE_RENAME
- wielded_mult = 1.8
+ wielded_mult = 1.75
/obj/item/melee/smith/twohand/halberd/ComponentInitialize()
. = ..()
@@ -130,9 +131,9 @@
name = "javelin"
icon_state = "javelin"
overlay_state = "longhandle"
- wielded_mult = 1.5
+ wielded_mult = 1.25
+ armour_penetration = 0.2
slot_flags = ITEM_SLOT_BACK
- obj_flags = UNIQUE_RENAME
sharpness = SHARP_POINTY
@@ -146,8 +147,7 @@
overlay_state = "longhandle"
max_reach = 2
slot_flags = ITEM_SLOT_BACK
- obj_flags = UNIQUE_RENAME
- wielded_mult = 1.5
+ wielded_mult = 1.45
/obj/item/melee/smith/twohand/glaive/ComponentInitialize()
. = ..()
@@ -158,10 +158,9 @@
name = "pike"
icon_state = "pike"
overlay_state = "longhandle"
- max_reach = 2 //yeah ok
- wielded_mult = 1.3
+ max_reach = 3 //yeah ok
+ wielded_mult = 1.25
slot_flags = ITEM_SLOT_BACK
- obj_flags = UNIQUE_RENAME
sharpness = SHARP_POINTY
//////////////////////////
@@ -176,7 +175,6 @@
var/qualitymod = 0
/obj/item/scythe/smithed //we need to inherit scythecode, but that's about it.
- obj_flags = UNIQUE_RENAME
material_flags = MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
@@ -184,14 +182,14 @@
name = "coghead club"
icon_state = "coghead"
item_flags = NEEDS_PERMIT
- obj_flags = UNIQUE_RENAME
overlay_state = "stick"
+ bare_wound_bonus = 5
+ wound_bonus = 5
/obj/item/melee/smith/shortsword
name = "gladius"
- force = 9
+ force = 4
item_flags = NEEDS_PERMIT
- obj_flags = UNIQUE_RENAME
sharpness = SHARP_EDGED
icon_state = "gladius"
overlay_state = "gladiushilt"
@@ -199,16 +197,14 @@
/obj/item/melee/smith/shortsword/scimitar
name = "scimitar"
sharpness = SHARP_EDGED
- obj_flags = UNIQUE_RENAME
icon_state = "scimitar"
overlay_state = "scimitarhilt"
/obj/item/melee/smith/wakizashi
name = "wakizashi"
sharpness = SHARP_EDGED
- force = 7
+ force = 3
item_flags = NEEDS_PERMIT | ITEM_CAN_PARRY
- obj_flags = UNIQUE_RENAME
icon_state = "waki"
overlay_state = "wakihilt"
block_parry_data = /datum/block_parry_data/waki
@@ -225,33 +221,45 @@
parry_efficiency_considered_successful = 80
parry_efficiency_perfect = 120
parry_failed_stagger_duration = 3 SECONDS
+ parry_efficiency_perfect_override = list(
+ ATTACK_TYPE_PROJECTILE_TEXT = 10,
+ )
parry_data = list(PARRY_COUNTERATTACK_MELEE_ATTACK_CHAIN = 1.9)
/obj/item/melee/smith/twohand/broadsword
name = "broadsword"
icon_state = "broadsword"
overlay_state = "broadhilt"
- obj_flags = UNIQUE_RENAME
wielded_mult = 1.8
/obj/item/melee/smith/twohand/zweihander
name = "zweihander"
icon_state = "zwei"
overlay_state = "zweihilt"
- total_mass = TOTAL_MASS_MEDIEVAL_WEAPON * 2
- force = 4
- obj_flags = UNIQUE_RENAME
- wielded_mult = 2 //affected more by quality. a -1 is 25% less damage, a +1 is 25% more. These bonuses are tripled when wielded.
+ attack_speed = CLICK_CD_MELEE * 1.2
+ wielded_mult = 3.5 //affected more by quality due to its high wielded mult
/obj/item/melee/smith/twohand/katana
name = "katana"
icon_state = "katana"
overlay_state = "katanahilt"
- force = 7
- wielded_mult = 2
- item_flags = ITEM_CAN_PARRY | NEEDS_PERMIT //want to name your katana "DEMON BLADE" or some shit? go ahead, idiot.
- obj_flags = UNIQUE_RENAME
- block_parry_data = /datum/block_parry_data/captain_saber //todo
+ wielded_mult = 1.25
+ item_flags = ITEM_CAN_PARRY | NEEDS_PERMIT
+ block_parry_data = /datum/block_parry_data/katana
+
+/datum/block_parry_data/katana
+ parry_time_windup = 0.5
+ parry_time_active = 4
+ parry_time_spindown = 1
+ parry_time_perfect = 0.75
+ parry_time_perfect_leeway = 0.75
+ parry_imperfect_falloff_percent = 30
+ parry_efficiency_perfect = 100
+ parry_failed_stagger_duration = 3 SECONDS
+ parry_failed_clickcd_duration = 2 SECONDS
+ parry_efficiency_perfect_override = list(
+ ATTACK_TYPE_PROJECTILE_TEXT = 10,
+ )
/obj/item/melee/smith/sabre
name = "sabre"
@@ -259,27 +267,25 @@
sharpness = SHARP_EDGED
overlay_state = "sabrehilt"
armour_penetration = 0.3
- force = 9
+ force = 3
hitsound = 'sound/weapons/rapierhit.ogg'
item_flags = NEEDS_PERMIT | ITEM_CAN_PARRY
- obj_flags = UNIQUE_RENAME
- block_parry_data = /datum/block_parry_data/captain_saber //yeah this is fine i guess
+ block_parry_data = /datum/block_parry_data/katana //yeah this is fine i guess
/obj/item/melee/smith/sabre/rapier
name = "rapier"
icon_state = "rapier"
sharpness = SHARP_EDGED
overlay_state = "rapierhilt"
- force = 6 //less force, stronger parry
+ force = 2 //less force, stronger parry
sharpness = SHARP_POINTY
armour_penetration = 0.6
- obj_flags = UNIQUE_RENAME
block_parry_data = /datum/block_parry_data/smithrapier
-/datum/block_parry_data/smithrapier //parry into riposte. i am pretty sure this is going to be nearly fucking impossible to land.
- parry_stamina_cost = 12 //dont miss
- parry_time_active = 4
- parry_time_perfect = 2
+/datum/block_parry_data/smithrapier
+ parry_stamina_cost = 20 //dont miss
+ parry_time_active = 3
+ parry_time_perfect = 1
parry_time_perfect_leeway = 2
parry_failed_stagger_duration = 3 SECONDS
parry_failed_clickcd_duration = 3 SECONDS
@@ -289,6 +295,9 @@
parry_efficiency_to_counterattack = 100
parry_efficiency_considered_successful = 120
parry_efficiency_perfect = 120
+ parry_efficiency_perfect_override = list(
+ ATTACK_TYPE_PROJECTILE_TEXT = 10,
+ )
parry_data = list(PARRY_COUNTERATTACK_MELEE_ATTACK_CHAIN = 4)
//unique hammers
diff --git a/code/modules/smithing/smithed_items.dm b/code/modules/smithing/smithed_items.dm
index fb78f564b5..c2a884b383 100644
--- a/code/modules/smithing/smithed_items.dm
+++ b/code/modules/smithing/smithed_items.dm
@@ -164,8 +164,8 @@
/obj/item/smithing/scytheblade/startfinish()
finalitem = new /obj/item/scythe/smithed(src)
- finalitem.force += quality*2.5
- //finalitem.armour_penetration += quality*0.0375
+ finalitem.force = quality*4.5 //36 at 8 quality
+
..()
/obj/item/smithing/shovelhead
@@ -189,7 +189,7 @@
/obj/item/smithing/cogheadclubhead/startfinish()
finalitem = new /obj/item/melee/smith/cogheadclub(src)
- finalitem.force += quality*3.4
+ finalitem.force += quality*3.5 //33 at 8 quality, 38 for wounding, and 43 for bare wounding
..()
/obj/item/smithing/javelinhead
@@ -199,11 +199,11 @@
/obj/item/smithing/javelinhead/startfinish()
var/obj/item/melee/smith/twohand/javelin/finalforreal = new /obj/item/melee/smith/twohand/javelin(src)
- finalforreal.force += quality*2.5
- //finalforreal.armour_penetration += quality*0.0375
+ finalforreal.force += quality*2 //26 at 8 quality
+
finalforreal.wield_force = finalforreal.force*finalforreal.wielded_mult
- finalforreal.AddComponent(/datum/component/two_handed, force_unwielded=finalforreal.force, force_wielded=finalforreal.wield_force, icon_wielded="[icon_state]")
- finalforreal.throwforce = finalforreal.force*2
+ finalforreal.AddComponent(/datum/component/two_handed, force_unwielded=finalforreal.force, force_wielded=finalforreal.wield_force, icon_wielded="[icon_state]") //32.5 at 8 quality, wielded
+ finalforreal.throwforce = finalforreal.force*2 //52 at 8 quality, but no embed
finalitem = finalforreal
..()
@@ -214,10 +214,10 @@
/obj/item/smithing/pikehead/startfinish()
var/obj/item/melee/smith/twohand/pike/finalforreal = new /obj/item/melee/smith/twohand/pike(src)
- finalforreal.force += quality*2.5
- //finalforreal.armour_penetration += quality*0.0375
+ finalforreal.force += quality*2//26 at 8 quality
+
finalforreal.wield_force = finalforreal.force*finalforreal.wielded_mult
- finalforreal.AddComponent(/datum/component/two_handed, force_unwielded=finalforreal.force, force_wielded=finalforreal.wield_force, icon_wielded="[icon_state]")
+ finalforreal.AddComponent(/datum/component/two_handed, force_unwielded=finalforreal.force, force_wielded=finalforreal.wield_force, icon_wielded="[icon_state]")//32.5 at 8 quality, wielded
finalforreal.throwforce = finalforreal.force/10 //its a pike not a javelin
finalitem = finalforreal
..()
@@ -269,8 +269,8 @@
/obj/item/smithing/shortswordblade/startfinish()
finalitem = new /obj/item/melee/smith/shortsword(src)
- finalitem.force += quality*2.5
- //finalitem.armour_penetration += quality*0.0375
+ finalitem.force += quality*4 //36 at 8 quality
+
..()
/obj/item/smithing/scimitarblade
@@ -281,8 +281,8 @@
/obj/item/smithing/scimitarblade/startfinish()
finalitem = new /obj/item/melee/smith/shortsword/scimitar(src)
- finalitem.force += quality*2.5
- //finalitem.armour_penetration += quality*0.0025
+ finalitem.force += quality*4 //36 at 8 quality
+
..()
/obj/item/smithing/wakiblade
@@ -293,8 +293,8 @@
/obj/item/smithing/wakiblade/startfinish()
finalitem = new /obj/item/melee/smith/wakizashi(src)
- finalitem.force += quality*2.5
- //finalitem.armour_penetration += quality*0.0375
+ finalitem.force += quality*3.5 //31 at 8 quality
+
..()
/obj/item/smithing/sabreblade
@@ -305,8 +305,8 @@
/obj/item/smithing/sabreblade/startfinish()
finalitem = new /obj/item/melee/smith/sabre(src)
- finalitem.force += quality*2.5
- //finalitem.armour_penetration += quality*0.0375
+ finalitem.force += quality*3.5 //31 at 8 quality
+
..()
/obj/item/smithing/rapierblade
@@ -317,8 +317,8 @@
/obj/item/smithing/rapierblade/startfinish()
finalitem = new /obj/item/melee/smith/sabre/rapier(src)
- finalitem.force += quality*2.5
- //finalitem.armour_penetration += quality*0.0375
+ finalitem.force += quality*3 //26 at 8 quality, but 0.6 ap
+
..()
/obj/item/smithing/knifeblade
@@ -328,9 +328,8 @@
icon_state = "dagger"
/obj/item/smithing/knifeblade/startfinish()
- finalitem = new /obj/item/kitchen/knife(src)
- finalitem.force = 4 + quality/2
- finalitem.armour_penetration += quality*0.0375
+ finalitem = new /obj/item/melee/onehanded/knife/survival(src)
+ finalitem.force = 3 + quality*3.5//31 at 8 quality
finalitem.icon = 'icons/obj/smith.dmi'
finalitem.icon_state = "dagger"
finalitem.name = "dagger"
@@ -351,10 +350,9 @@
/obj/item/smithing/broadblade/startfinish()
var/obj/item/melee/smith/twohand/broadsword/finalforreal = new /obj/item/melee/smith/twohand/broadsword(src)
- finalforreal.force += quality*2.5
- //finalforreal.armour_penetration += quality*0.0375
+ finalforreal.force += quality*2.5//30 force onehanded 8 quality
finalforreal.wield_force = finalforreal.force*finalforreal.wielded_mult
- finalforreal.AddComponent(/datum/component/two_handed, force_unwielded=finalforreal.force, force_wielded=finalforreal.wield_force, icon_wielded="[icon_state]")
+ finalforreal.AddComponent(/datum/component/two_handed, force_unwielded=finalforreal.force, force_wielded=finalforreal.wield_force, icon_wielded="[icon_state]")//54 force twohanded at 8 quality
finalitem = finalforreal
..()
@@ -366,10 +364,9 @@
/obj/item/smithing/zweiblade/startfinish()
var/obj/item/melee/smith/twohand/zweihander/finalforreal = new /obj/item/melee/smith/twohand/zweihander(src)
- finalforreal.force += quality*2.5
- //finalforreal.armour_penetration += quality*0.0375
+ finalforreal.force += quality //18 force onehanded 8 quality
finalforreal.wield_force = finalforreal.force*finalforreal.wielded_mult
- finalforreal.AddComponent(/datum/component/two_handed, force_unwielded=finalforreal.force, force_wielded=finalforreal.wield_force, icon_wielded="[icon_state]")
+ finalforreal.AddComponent(/datum/component/two_handed, force_unwielded=finalforreal.force, force_wielded=finalforreal.wield_force, icon_wielded="[icon_state]")//63 force wielded at 8 quality
finalitem = finalforreal
..()
@@ -380,11 +377,10 @@
/obj/item/smithing/halberdhead/startfinish()
var/obj/item/melee/smith/twohand/halberd/finalforreal = new /obj/item/melee/smith/twohand/halberd(src)
- finalforreal.force += quality*2.5
- //finalforreal.armour_penetration += quality*0.025
+ finalforreal.force += quality*2 //26 force onehanded, which is impossible
finalforreal.wield_force = finalforreal.force*finalforreal.wielded_mult
finalforreal.throwforce = finalforreal.force/3
- finalforreal.AddComponent(/datum/component/two_handed, force_unwielded=finalforreal.force, force_wielded=finalforreal.wield_force, icon_wielded="[icon_state]")
+ finalforreal.AddComponent(/datum/component/two_handed, force_unwielded=finalforreal.force, force_wielded=finalforreal.wield_force, icon_wielded="[icon_state]") //50.7 force twohanded
finalitem = finalforreal
..()
@@ -395,11 +391,10 @@
/obj/item/smithing/glaivehead/startfinish()
var/obj/item/melee/smith/twohand/glaive/finalforreal = new /obj/item/melee/smith/twohand/glaive(src)
- finalforreal.force += quality*2.5
- //finalforreal.armour_penetration += quality*0.0025
+ finalforreal.force += quality*2
finalforreal.wield_force = finalforreal.force*finalforreal.wielded_mult
finalforreal.throwforce = finalforreal.force
- finalforreal.AddComponent(/datum/component/two_handed, force_unwielded=finalforreal.force, force_wielded=finalforreal.wield_force, icon_wielded="[icon_state]")
+ finalforreal.AddComponent(/datum/component/two_handed, force_unwielded=finalforreal.force, force_wielded=finalforreal.wield_force, icon_wielded="[icon_state]")//37.7 force wielded at 8 quality
finalitem = finalforreal
..()
@@ -412,10 +407,9 @@
/obj/item/smithing/katanablade/startfinish()
var/obj/item/melee/smith/twohand/katana/finalforreal = new /obj/item/melee/smith/twohand/katana(src)
- finalforreal.force += quality*2.5
- //finalforreal.armour_penetration += quality*0.0375
+ finalforreal.force += quality*2.5 //30 force onehanded at 8 quality
finalforreal.wield_force = finalforreal.force*finalforreal.wielded_mult
- finalforreal.AddComponent(/datum/component/two_handed, force_unwielded=finalforreal.force, force_wielded=finalforreal.wield_force, icon_wielded="[icon_state]")
+ finalforreal.AddComponent(/datum/component/two_handed, force_unwielded=finalforreal.force, force_wielded=finalforreal.wield_force, icon_wielded="[icon_state]") //37.5 force twohanded. low for a 2h, but it gets parry to make up for it
finalitem = finalforreal
..()
diff --git a/code/modules/surgery/burn_dressing.dm b/code/modules/surgery/burn_dressing.dm
index 6af9ebf731..789da6ee7a 100644
--- a/code/modules/surgery/burn_dressing.dm
+++ b/code/modules/surgery/burn_dressing.dm
@@ -48,8 +48,8 @@
"
[user] successfully excises some of the infected flesh from [target]'s [parse_zone(target_zone)]! ")
log_combat(user, target, "excised infected flesh in", addition="INTENT: [uppertext(user.a_intent)]")
surgery.operated_bodypart.receive_damage(brute=3, wound_bonus=CANT_WOUND)
- burn_wound.infestation -= 0.5
- burn_wound.sanitization += 0.5
+ burn_wound.infestation -= 0.85
+ burn_wound.sanitization += 0.75
if(burn_wound.infestation <= 0)
repeatable = FALSE
else
diff --git a/code/modules/vehicles/rubbish.dm b/code/modules/vehicles/rubbish.dm
index 0ba92cb6a3..70607d7f17 100644
--- a/code/modules/vehicles/rubbish.dm
+++ b/code/modules/vehicles/rubbish.dm
@@ -27,14 +27,14 @@
resistance_flags = INDESTRUCTIBLE
bound_height = 64
bound_width = 64
- var/uses_left = 5
+ var/uses_left = 2
var/inuse = FALSE
/obj/structure/car/welder_act(mob/living/user, obj/item/I)
. = TRUE
- var/obj/item/l = user.get_inactive_held_item()
+
if(inuse || uses_left <= 0) //this means that if mappers or admins want an nonharvestable version, set the uses_left to 0
return
inuse = TRUE //one at a time boys, this isn't some kind of weird party
@@ -43,32 +43,32 @@
return //the tool fails this check, so stop
user.visible_message("[user] starts disassembling [src].")
for(var/i1 in 1 to 2)
- if(!I.use_tool(src, user, 100, volume=100))
+ if(!I.use_tool(src, user, 75, volume=100))
user.visible_message("[user] stops disassembling [src].")
- if(l && l.name == "weldingâ €tool") //Checks for the off-hand welding tool to make welding faster
- var/a = input(user, "") as text
- var/s = text2path(a)
- if(s) new s(get_turf(user))
inuse = FALSE
return //you did something, like moving, so stop
-
var/fake_dismantle = pick("plating", "rod", "rim", "part of the frame")
user.visible_message("[user] slices through a [fake_dismantle].")
var/turf/usr_turf = get_turf(user) //Bellow are the changes made by PR#256
var/modifier = 0
if(HAS_TRAIT(user,TRAIT_TECHNOPHREAK))
- modifier = rand(1,3)
- for(var/i2 in 1 to (3+modifier))
- if(prob(25))
- if(prob(50))
- new /obj/item/salvage/crafting(usr_turf)
- else if(prob(30))
- new /obj/item/salvage/tool(usr_turf)
- else
- new /obj/item/salvage/low(usr_turf)
+ modifier += rand(1,3)
+ var/obj/item/l = user.get_inactive_held_item()
+ if(istype(l,/obj/item/weldingtool))
+ var/obj/item/weldingtool/WO = l
+ if(WO.tool_start_check(user, amount=3))
+ WO.use(3)
+ modifier++
+ for(var/i2 in 1 to (2+modifier))
+ if(prob(50))
+ new /obj/item/salvage/low(usr_turf)
+ else if(prob(40))
+ new /obj/item/salvage/tool(usr_turf)
+ else
+ new /obj/item/salvage/crafting(usr_turf)
for(var/i3 in 1 to (1+modifier)) //this is just less lines for the same thing
- if(prob(5))
+ if(prob(7.5))
new /obj/item/salvage/high(usr_turf)
uses_left--
inuse = FALSE //putting this after the -- because the first check prevents cheesing
diff --git a/code/modules/vending/megaseed.dm b/code/modules/vending/megaseed.dm
index 5ddd49e7ad..4dee459e49 100644
--- a/code/modules/vending/megaseed.dm
+++ b/code/modules/vending/megaseed.dm
@@ -33,7 +33,9 @@
/obj/item/seeds/potato = 3,
/obj/item/seeds/poppy = 3,
/obj/item/seeds/pumpkin = 3,
+ /obj/item/seeds/rainbow_bunch = 3,
/obj/item/seeds/wheat/rice = 3,
+ /obj/item/seeds/rose = 3,
/obj/item/seeds/soya = 3,
/obj/item/seeds/sugarcane = 3,
/obj/item/seeds/sunflower = 3,
@@ -48,6 +50,7 @@
contraband = list(/obj/item/seeds/amanita = 2,
/obj/item/seeds/glowshroom = 2,
/obj/item/seeds/liberty = 2,
+ /obj/item/seeds/poppy/lily = 2,
/obj/item/seeds/nettle = 2,
/obj/item/seeds/plump = 2,
/obj/item/seeds/reishi = 2,
diff --git a/config/game_options.txt b/config/game_options.txt
index 2d86f8b230..92ff13caa6 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -446,6 +446,7 @@ SILICON_MAX_LAW_AMOUNT 12
## You probably want humans on your space station, but technically speaking you can turn them off without any ill effect
ROUNDSTART_RACES human
ROUNDSTART_RACES ghoul
+ROUNDSTART_RACES smutant
## Races that are strictly worse than humans that could probably be turned on without balance concerns
#ROUNDSTART_RACES lizard
diff --git a/fortune13.dme b/fortune13.dme
index 91ff9f269b..97d639cf42 100644
--- a/fortune13.dme
+++ b/fortune13.dme
@@ -881,7 +881,6 @@
#include "code\game\machinery\computer\teleporter.dm"
#include "code\game\machinery\computer\terminal.dm"
#include "code\game\machinery\computer\arcade\battle.dm"
-#include "code\game\machinery\computer\arcade\minesweeper.dm"
#include "code\game\machinery\computer\arcade\misc_arcade.dm"
#include "code\game\machinery\computer\arcade\orion_trail.dm"
#include "code\game\machinery\computer\prisoner\_prisoner.dm"
@@ -1745,7 +1744,6 @@
#include "code\modules\arousal\organs\testicles.dm"
#include "code\modules\arousal\organs\vagina.dm"
#include "code\modules\arousal\organs\womb.dm"
-#include "code\modules\arousal\toys\dildos.dm"
#include "code\modules\assembly\assembly.dm"
#include "code\modules\assembly\bomb.dm"
#include "code\modules\assembly\doorcontrol.dm"
@@ -2244,11 +2242,14 @@
#include "code\modules\hydroponics\beekeeping\beekeeper_suit.dm"
#include "code\modules\hydroponics\beekeeping\honey_frame.dm"
#include "code\modules\hydroponics\beekeeping\honeycomb.dm"
+#include "code\modules\hydroponics\grown\agave.dm"
#include "code\modules\hydroponics\grown\ambrosia.dm"
#include "code\modules\hydroponics\grown\apple.dm"
#include "code\modules\hydroponics\grown\banana.dm"
#include "code\modules\hydroponics\grown\beans.dm"
#include "code\modules\hydroponics\grown\berries.dm"
+#include "code\modules\hydroponics\grown\broc.dm"
+#include "code\modules\hydroponics\grown\buffalogourd.dm"
#include "code\modules\hydroponics\grown\cannabis.dm"
#include "code\modules\hydroponics\grown\cereals.dm"
#include "code\modules\hydroponics\grown\chili.dm"
@@ -2256,29 +2257,41 @@
#include "code\modules\hydroponics\grown\cocoa_vanilla.dm"
#include "code\modules\hydroponics\grown\corn.dm"
#include "code\modules\hydroponics\grown\cotton.dm"
+#include "code\modules\hydroponics\grown\coyotetobacco.dm"
+#include "code\modules\hydroponics\grown\datura.dm"
#include "code\modules\hydroponics\grown\eggplant.dm"
+#include "code\modules\hydroponics\grown\feracactus.dm"
#include "code\modules\hydroponics\grown\flowers.dm"
#include "code\modules\hydroponics\grown\garlic.dm"
#include "code\modules\hydroponics\grown\grass_carpet.dm"
+#include "code\modules\hydroponics\grown\horsenettle.dm"
#include "code\modules\hydroponics\grown\melon.dm"
+#include "code\modules\hydroponics\grown\mesquite.dm"
#include "code\modules\hydroponics\grown\misc.dm"
#include "code\modules\hydroponics\grown\mushrooms.dm"
+#include "code\modules\hydroponics\grown\mutfruit.dm"
#include "code\modules\hydroponics\grown\nettle.dm"
#include "code\modules\hydroponics\grown\onion.dm"
#include "code\modules\hydroponics\grown\peach.dm"
#include "code\modules\hydroponics\grown\peanuts.dm"
#include "code\modules\hydroponics\grown\peas.dm"
#include "code\modules\hydroponics\grown\pineapple.dm"
+#include "code\modules\hydroponics\grown\pinyon.dm"
#include "code\modules\hydroponics\grown\potato.dm"
+#include "code\modules\hydroponics\grown\prickly.dm"
#include "code\modules\hydroponics\grown\pumpkin.dm"
+#include "code\modules\hydroponics\grown\punga.dm"
#include "code\modules\hydroponics\grown\rainbow_bunch.dm"
#include "code\modules\hydroponics\grown\random.dm"
#include "code\modules\hydroponics\grown\replicapod.dm"
#include "code\modules\hydroponics\grown\root.dm"
+#include "code\modules\hydroponics\grown\tato.dm"
#include "code\modules\hydroponics\grown\tea_coffee.dm"
#include "code\modules\hydroponics\grown\tobacco.dm"
#include "code\modules\hydroponics\grown\tomato.dm"
#include "code\modules\hydroponics\grown\towercap.dm"
+#include "code\modules\hydroponics\grown\xander.dm"
+#include "code\modules\hydroponics\grown\yucca.dm"
#include "code\modules\instruments\instrument_data\_instrument_data.dm"
#include "code\modules\instruments\instrument_data\_instrument_key.dm"
#include "code\modules\instruments\instrument_data\brass.dm"
diff --git a/icons/fallout/UI/buttons_fallout2.dmi b/icons/fallout/UI/buttons_fallout2.dmi
index 5f03c465a2..7baa9b069f 100644
Binary files a/icons/fallout/UI/buttons_fallout2.dmi and b/icons/fallout/UI/buttons_fallout2.dmi differ
diff --git a/icons/fallout/clothing/armored_heavy.dmi b/icons/fallout/clothing/armored_heavy.dmi
index 6115078e15..fc7d59284c 100644
Binary files a/icons/fallout/clothing/armored_heavy.dmi and b/icons/fallout/clothing/armored_heavy.dmi differ
diff --git a/icons/fallout/clothing/armored_light.dmi b/icons/fallout/clothing/armored_light.dmi
index b636404987..5da36ecb37 100644
Binary files a/icons/fallout/clothing/armored_light.dmi and b/icons/fallout/clothing/armored_light.dmi differ
diff --git a/icons/fallout/clothing/armored_medium.dmi b/icons/fallout/clothing/armored_medium.dmi
index ec1db934b5..a79cd7faf5 100644
Binary files a/icons/fallout/clothing/armored_medium.dmi and b/icons/fallout/clothing/armored_medium.dmi differ
diff --git a/icons/fallout/clothing/hats.dmi b/icons/fallout/clothing/hats.dmi
index 2eef1bc1cb..d1817805a6 100644
Binary files a/icons/fallout/clothing/hats.dmi and b/icons/fallout/clothing/hats.dmi differ
diff --git a/icons/fallout/objects/guns/ammo.dmi b/icons/fallout/objects/guns/ammo.dmi
index 375b320af9..878fcd2570 100644
Binary files a/icons/fallout/objects/guns/ammo.dmi and b/icons/fallout/objects/guns/ammo.dmi differ
diff --git a/icons/fallout/objects/guns/ballistic.dmi b/icons/fallout/objects/guns/ballistic.dmi
index 4dff22d2e7..fa829b3fa1 100644
Binary files a/icons/fallout/objects/guns/ballistic.dmi and b/icons/fallout/objects/guns/ballistic.dmi differ
diff --git a/icons/fallout/objects/guns/bar.dmi b/icons/fallout/objects/guns/bar.dmi
new file mode 100644
index 0000000000..f23f6e675c
Binary files /dev/null and b/icons/fallout/objects/guns/bar.dmi differ
diff --git a/icons/fallout/objects/guns/energy.dmi b/icons/fallout/objects/guns/energy.dmi
index a08d87c731..d3bed683ad 100644
Binary files a/icons/fallout/objects/guns/energy.dmi and b/icons/fallout/objects/guns/energy.dmi differ
diff --git a/icons/fallout/objects/melee/shields.dmi b/icons/fallout/objects/melee/shields.dmi
index 63b9a40568..d8462a4d7a 100644
Binary files a/icons/fallout/objects/melee/shields.dmi and b/icons/fallout/objects/melee/shields.dmi differ
diff --git a/icons/fallout/objects/melee/twohanded.dmi b/icons/fallout/objects/melee/twohanded.dmi
index 6bbb40cb71..a936f6c0e8 100644
Binary files a/icons/fallout/objects/melee/twohanded.dmi and b/icons/fallout/objects/melee/twohanded.dmi differ
diff --git a/icons/fallout/onmob/backslot_weapon.dmi b/icons/fallout/onmob/backslot_weapon.dmi
index 416231766e..1b281a3cdd 100644
Binary files a/icons/fallout/onmob/backslot_weapon.dmi and b/icons/fallout/onmob/backslot_weapon.dmi differ
diff --git a/icons/fallout/onmob/clothes/armor_heavy.dmi b/icons/fallout/onmob/clothes/armor_heavy.dmi
index 4ef19254a6..2acef409b5 100644
Binary files a/icons/fallout/onmob/clothes/armor_heavy.dmi and b/icons/fallout/onmob/clothes/armor_heavy.dmi differ
diff --git a/icons/fallout/onmob/clothes/armor_light.dmi b/icons/fallout/onmob/clothes/armor_light.dmi
index cc7bdbc2c1..32c8d92408 100644
Binary files a/icons/fallout/onmob/clothes/armor_light.dmi and b/icons/fallout/onmob/clothes/armor_light.dmi differ
diff --git a/icons/fallout/onmob/clothes/armor_medium.dmi b/icons/fallout/onmob/clothes/armor_medium.dmi
index 0aa3cb1848..e55c5ed7ef 100644
Binary files a/icons/fallout/onmob/clothes/armor_medium.dmi and b/icons/fallout/onmob/clothes/armor_medium.dmi differ
diff --git a/icons/fallout/onmob/clothes/head.dmi b/icons/fallout/onmob/clothes/head.dmi
index 4a6986322c..8a954805dc 100644
Binary files a/icons/fallout/onmob/clothes/head.dmi and b/icons/fallout/onmob/clothes/head.dmi differ
diff --git a/icons/fallout/onmob/weapons/melee2h_lefthand.dmi b/icons/fallout/onmob/weapons/melee2h_lefthand.dmi
index f862577a6e..d8ef717ec7 100644
Binary files a/icons/fallout/onmob/weapons/melee2h_lefthand.dmi and b/icons/fallout/onmob/weapons/melee2h_lefthand.dmi differ
diff --git a/icons/fallout/onmob/weapons/melee2h_righthand.dmi b/icons/fallout/onmob/weapons/melee2h_righthand.dmi
index 1f22533c7c..af6d8b973e 100644
Binary files a/icons/fallout/onmob/weapons/melee2h_righthand.dmi and b/icons/fallout/onmob/weapons/melee2h_righthand.dmi differ
diff --git a/icons/fallout/onmob/weapons/shields_lefthand.dmi b/icons/fallout/onmob/weapons/shields_lefthand.dmi
index 577812f1c9..65075a124a 100644
Binary files a/icons/fallout/onmob/weapons/shields_lefthand.dmi and b/icons/fallout/onmob/weapons/shields_lefthand.dmi differ
diff --git a/icons/fallout/onmob/weapons/shields_righthand.dmi b/icons/fallout/onmob/weapons/shields_righthand.dmi
index 043cc4c498..c6aa4bbdb6 100644
Binary files a/icons/fallout/onmob/weapons/shields_righthand.dmi and b/icons/fallout/onmob/weapons/shields_righthand.dmi differ
diff --git a/icons/mob/actions/actions_items.dmi b/icons/mob/actions/actions_items.dmi
index 252536b063..14be7cf2da 100644
Binary files a/icons/mob/actions/actions_items.dmi and b/icons/mob/actions/actions_items.dmi differ
diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi
index 4bfea2f9c8..7cadecdd41 100644
Binary files a/icons/mob/clothing/back.dmi and b/icons/mob/clothing/back.dmi differ
diff --git a/icons/mob/clothing/belt_mirror.dmi b/icons/mob/clothing/belt_mirror.dmi
index db59536900..ecdb6cb8b7 100644
Binary files a/icons/mob/clothing/belt_mirror.dmi and b/icons/mob/clothing/belt_mirror.dmi differ
diff --git a/icons/mob/clothing/feet.dmi b/icons/mob/clothing/feet.dmi
index e1b0df446f..d568a57acb 100644
Binary files a/icons/mob/clothing/feet.dmi and b/icons/mob/clothing/feet.dmi differ
diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi
index db70f2ce42..ecbb58e013 100644
Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ
diff --git a/icons/mob/clothing/mask.dmi b/icons/mob/clothing/mask.dmi
index 192f7c1139..b04878cee1 100644
Binary files a/icons/mob/clothing/mask.dmi and b/icons/mob/clothing/mask.dmi differ
diff --git a/icons/mob/clothing/suit.dmi b/icons/mob/clothing/suit.dmi
index 85d5c86b3d..da2b52c676 100644
Binary files a/icons/mob/clothing/suit.dmi and b/icons/mob/clothing/suit.dmi differ
diff --git a/icons/mob/clothing/uniform.dmi b/icons/mob/clothing/uniform.dmi
index 465b22eb01..f3bd1abca6 100644
Binary files a/icons/mob/clothing/uniform.dmi and b/icons/mob/clothing/uniform.dmi differ
diff --git a/icons/mob/human_parts.dmi b/icons/mob/human_parts.dmi
index 685b910b34..a5b3e496e9 100644
Binary files a/icons/mob/human_parts.dmi and b/icons/mob/human_parts.dmi differ
diff --git a/icons/mob/inhands/misc/food_lefthand.dmi b/icons/mob/inhands/misc/food_lefthand.dmi
index 19e0706d01..305c11dc5c 100644
Binary files a/icons/mob/inhands/misc/food_lefthand.dmi and b/icons/mob/inhands/misc/food_lefthand.dmi differ
diff --git a/icons/mob/inhands/misc/food_righthand.dmi b/icons/mob/inhands/misc/food_righthand.dmi
index da8eda329d..17803d1161 100644
Binary files a/icons/mob/inhands/misc/food_righthand.dmi and b/icons/mob/inhands/misc/food_righthand.dmi differ
diff --git a/icons/mob/inhands/weapons/guns_lefthand.dmi b/icons/mob/inhands/weapons/guns_lefthand.dmi
index b114d1c4c8..9563a8c4b3 100644
Binary files a/icons/mob/inhands/weapons/guns_lefthand.dmi and b/icons/mob/inhands/weapons/guns_lefthand.dmi differ
diff --git a/icons/mob/inhands/weapons/guns_righthand.dmi b/icons/mob/inhands/weapons/guns_righthand.dmi
index 48e725de54..cf940b4e6a 100644
Binary files a/icons/mob/inhands/weapons/guns_righthand.dmi and b/icons/mob/inhands/weapons/guns_righthand.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index 9c82f53339..fa8e618879 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index ff599310fd..43fb699076 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi
index 045a927ad3..2ee9f90c62 100644
Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ
diff --git a/icons/obj/food/containers.dmi b/icons/obj/food/containers.dmi
index a6ea323551..933682ac7c 100644
Binary files a/icons/obj/food/containers.dmi and b/icons/obj/food/containers.dmi differ
diff --git a/icons/obj/food/soupsalad.dmi b/icons/obj/food/soupsalad.dmi
index b39bec3b0d..8d83970507 100644
Binary files a/icons/obj/food/soupsalad.dmi and b/icons/obj/food/soupsalad.dmi differ
diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi
index 032f728d08..183721af5d 100644
Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ
diff --git a/icons/obj/hydroponics/growing_flowers.dmi b/icons/obj/hydroponics/growing_flowers.dmi
index ac72b19385..c863886916 100644
Binary files a/icons/obj/hydroponics/growing_flowers.dmi and b/icons/obj/hydroponics/growing_flowers.dmi differ
diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi
index ad6ecdc628..ba86600e6e 100644
Binary files a/icons/obj/hydroponics/harvest.dmi and b/icons/obj/hydroponics/harvest.dmi differ
diff --git a/icons/obj/hydroponics/seeds.dmi b/icons/obj/hydroponics/seeds.dmi
index 71ea68a0ab..de2bcec3bc 100644
Binary files a/icons/obj/hydroponics/seeds.dmi and b/icons/obj/hydroponics/seeds.dmi differ
diff --git a/icons/obj/stairs.dmi b/icons/obj/stairs.dmi
index 615e88f684..5c3f378ced 100644
Binary files a/icons/obj/stairs.dmi and b/icons/obj/stairs.dmi differ
diff --git a/icons/turf/floors/carpet_vault.dmi b/icons/turf/floors/carpet_vault.dmi
new file mode 100644
index 0000000000..fab890d7be
Binary files /dev/null and b/icons/turf/floors/carpet_vault.dmi differ
diff --git a/modular_citadel/code/modules/client/loadout/backpack.dm b/modular_citadel/code/modules/client/loadout/backpack.dm
index d879e28f70..54769b42c0 100644
--- a/modular_citadel/code/modules/client/loadout/backpack.dm
+++ b/modular_citadel/code/modules/client/loadout/backpack.dm
@@ -46,3 +46,40 @@
name = "Taperecorder"
path = /obj/item/taperecorder
cost = 2
+
+/datum/gear/backpack/razor
+ name = "electric razor"
+ path = /obj/item/razor
+ cost = 2
+
+/datum/gear/backpack/donuts
+ name = "donut box"
+ path = /obj/item/storage/fancy/donut_box
+ cost = 2
+
+/datum/gear/backpack/cigarettes/cigpack_bigboss
+ name = "Big Boss Smokes"
+ path = /obj/item/storage/fancy/cigarettes/cigpack_bigboss
+
+/datum/gear/backpack/cigarettes/cigpack_pyramid
+ name = "Pyramid Smokes"
+ path = /obj/item/storage/fancy/cigarettes/cigpack_pyramid
+
+/datum/gear/backpack/cigarettes/cigpack_greytort
+ name = "Grey Tortoise Smokes"
+ path = /obj/item/storage/fancy/cigarettes/cigpack_greytort
+
+/datum/gear/backpack/cigarettes/cigars
+ name = "Premium cigar case"
+ path = /obj/item/storage/fancy/cigarettes/cigars
+ cost = 2
+
+/datum/gear/backpack/cigarettes/cigars/cohiba
+ name = "Cohiba Robusto cigar case"
+ path = /obj/item/storage/fancy/cigarettes/cigars/cohiba
+ cost = 2
+
+/datum/gear/backpack/cigarettes/cigars/havana
+ name = "Havanian cigar case"
+ path = /obj/item/storage/fancy/cigarettes/cigars/havana
+ cost = 2
diff --git a/modular_citadel/code/modules/client/loadout/hands.dm b/modular_citadel/code/modules/client/loadout/hands.dm
index e95f658411..a104e44355 100644
--- a/modular_citadel/code/modules/client/loadout/hands.dm
+++ b/modular_citadel/code/modules/client/loadout/hands.dm
@@ -59,18 +59,6 @@
name = "cigarette pack"
path = /obj/item/storage/fancy/cigarettes
-/datum/gear/hands/cigarettes/cigpack_bigboss
- name = "\improper Big Boss Smokes"
- path = /obj/item/storage/fancy/cigarettes/cigpack_bigboss
-
-/datum/gear/hands/cigarettes/cigpack_pyramid
- name = "\improper Pyramid Smokes"
- path = /obj/item/storage/fancy/cigarettes/cigpack_pyramid
-
-/datum/gear/hands/cigarettes/cigpack_greytort
- name = "\improper Grey Tortoise Smokes"
- path = /obj/item/storage/fancy/cigarettes/cigpack_greytort
-
/datum/gear/hands/dice
name = "dice bag"
path = /obj/item/storage/box/dice
diff --git a/modular_citadel/code/modules/client/loadout/head.dm b/modular_citadel/code/modules/client/loadout/head.dm
index ad67afd9ed..6171c94b68 100644
--- a/modular_citadel/code/modules/client/loadout/head.dm
+++ b/modular_citadel/code/modules/client/loadout/head.dm
@@ -34,6 +34,10 @@
/datum/gear/head/beret
name = "black beret"
path = /obj/item/clothing/head/beret/black
+
+/datum/gear/head/medicalberet
+ name = "medical beret"
+ path = /obj/item/clothing/head/beret/med
/datum/gear/head/flatcap
name = "flat cap"
diff --git a/modular_citadel/code/modules/client/loadout/suit.dm b/modular_citadel/code/modules/client/loadout/suit.dm
index 48e0680ae0..fece38c6a7 100644
--- a/modular_citadel/code/modules/client/loadout/suit.dm
+++ b/modular_citadel/code/modules/client/loadout/suit.dm
@@ -109,6 +109,35 @@
path = /obj/item/clothing/suit/f13/autumn
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
cost = 3
+
+/datum/gear/suit/ncrcfjacket
+ name = "NCRCF jacket"
+ path = /obj/item/clothing/suit/armor/f13/ncrcfjacket
+ cost = 1
+
+/datum/gear/suit/NCRutilityvest
+ name = "Utility Vest"
+ path = /obj/item/clothing/suit/armor/f13/utilityvest
+ subcategory = LOADOUT_SUBCATEGORY_SUIT_JOBS
+ cost = 4
+ restricted_desc = "NCR"
+ restricted_roles = list("NCR Captain",
+ "NCR Lieutenant",
+ "NCR Medical Officer",
+ "NCR Veteran Ranger",
+ "NCR Lieutenant",
+ "NCR Heavy Trooper",
+ "NCR Sergeant First Class",
+ "NCR Sergeant",
+ "NCR Corporal",
+ "NCR Combat Engineer",
+ "NCR Combat Medic",
+ "NCR Trooper",
+ "NCR Rear Echelon",
+ "NCR Off-Duty",
+ "NCR Ranger"
+ )
+
/datum/gear/suit/fieldscribe
name = "Fieldscribe suit"
@@ -150,6 +179,18 @@
"Detective",
"Barkeep",
)
+
+/datum/gear/suit/deputyvest
+ name = "OPD armor vest"
+ path = /obj/item/clothing/suit/armor/vest/oasis
+ subcategory = LOADOUT_SUBCATEGORY_SUIT_JOBS
+ cost = 5
+ restricted_desc = "Oasis Police"
+ restricted_roles = list("Sheriff",
+ "Deputy",
+ "Detective",
+ )
+
/datum/gear/suit/hazardvest
name = "Hazard Vest"
path = /obj/item/clothing/suit/hazardvest
diff --git a/modular_citadel/code/modules/client/loadout/uniform.dm b/modular_citadel/code/modules/client/loadout/uniform.dm
index 4b1e9ffa8d..a0365f9a9d 100644
--- a/modular_citadel/code/modules/client/loadout/uniform.dm
+++ b/modular_citadel/code/modules/client/loadout/uniform.dm
@@ -10,6 +10,10 @@
/datum/gear/uniform/caravaneer
name = "caravaneer outfit"
path = /obj/item/clothing/under/f13/caravaneer
+
+/datum/gear/uniform/ncrcf
+ name = "NCRCF outfit"
+ path = /obj/item/clothing/under/f13/ncrcf
/datum/gear/uniform/brahminskin
name = "brahmin skin outfit"
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm
index badb0aff65..f63133773c 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm
@@ -98,8 +98,8 @@
description = "Synthetic tissue used for grafting onto damaged organs during surgery, or for treating limb damage. Has a very tight growth window between 305-320, any higher and the temperature will cause the cells to die. Additionally, growth time is considerably long, so chemists are encouraged to leave beakers with said reaction ongoing, while they tend to their other duties."
pH = 7.6
metabolization_rate = 0.05 //Give them time to graft
- data = list("grown_volume" = 0, "injected_vol" = 0)
- var/borrowed_health
+ data = list("grown_volume" = 0, "injected_vol" = 0, "borrowed_health" = 0)
+ var/borrowed_health = 0
color = "#FFDADA"
value = REAGENT_VALUE_COMMON
@@ -107,31 +107,51 @@
if(iscarbon(M))
var/mob/living/carbon/C = M
var/healing_factor = (((data["grown_volume"] / 100) + 1)*reac_volume)
- if(method in list(PATCH, TOUCH))
- if (M.stat == DEAD)
- M.visible_message("The synthetic tissue rapidly grafts into [M]'s wounds, attemping to repair the damage as quickly as possible.")
- borrowed_health += healing_factor
- M.adjustBruteLoss(-healing_factor*2)
- M.adjustFireLoss(-healing_factor*2)
- M.adjustToxLoss(-healing_factor)
- M.adjustCloneLoss(-healing_factor)
- M.updatehealth()
+ if(method == PATCH) //Needs to actually be applied via patch / hypo / medspray and not just beakersplashed.
+ if (C.stat == DEAD)
+ C.visible_message("The synthetic tissue rapidly grafts into [M]'s wounds, attempting to repair the damage as quickly as possible.")
+ var/preheal_brute = C.getBruteLoss()
+ var/preheal_burn = C.getFireLoss()
+ var/preheal_tox = C.getToxLoss()
+ var/preheal_oxy = C.getOxyLoss()
+ C.adjustBruteLoss(-healing_factor*2)
+ C.adjustFireLoss(-healing_factor*2)
+ C.adjustToxLoss(-healing_factor)
+ C.adjustCloneLoss(-healing_factor)
+ borrowed_health += (preheal_brute - C.getBruteLoss()) + (preheal_burn - C.getFireLoss()) + (preheal_tox - C.getToxLoss()) + ((preheal_oxy - C.getOxyLoss()) / 2) //Ironically this means that while slimes get damaged by the toxheal, it will reduce borrowed health and longterm effects. Funky!
+ C.updatehealth()
if(data["grown_volume"] > 135 && ((C.health + C.oxyloss)>=80))
- if(M.revive())
- M.emote("gasp")
+ var/tplus = world.time - M.timeofdeath
+ if(C.can_revive(ignore_timelimit = TRUE, maximum_brute_dam = MAX_REVIVE_BRUTE_DAMAGE / 2, maximum_fire_dam = MAX_REVIVE_FIRE_DAMAGE / 2, ignore_heart = TRUE) && C.revive())
+ C.grab_ghost()
+ C.emote("gasp")
borrowed_health *= 2
if(borrowed_health < 100)
borrowed_health = 100
log_combat(M, M, "revived", src)
+ var/list/policies = CONFIG_GET(keyed_list/policy)
+ var/policy = policies[POLICYCONFIG_ON_DEFIB_LATE] //Always causes memory loss due to the nature of synthtissue
+ if(policy)
+ to_chat(C, policy)
+ C.log_message("revived using synthtissue, [tplus] deciseconds from time of death, considered late revival due to usage of synthtissue.", LOG_GAME)
else
+ var/preheal_brute = C.getBruteLoss()
+ var/preheal_burn = C.getFireLoss()
M.adjustBruteLoss(-healing_factor)
M.adjustFireLoss(-healing_factor)
- to_chat(M, "
You feel your flesh merge with the synthetic tissue! It stings like hell! ")
+ var/datum/reagent/synthtissue/active_tissue = M.reagents.has_reagent(/datum/reagent/synthtissue)
+ var/imperfect = FALSE //Merging with synthtissue that has borrowed health
+ if(active_tissue && active_tissue.borrowed_health)
+ borrowed_health += (preheal_brute - C.getBruteLoss()) + (preheal_burn - C.getFireLoss())
+ imperfect = TRUE
+ to_chat(M, "
You feel your flesh [imperfect ? "partially and painfully" : ""] merge with the synthetic tissue! It stings like hell[imperfect ? " and is making you feel terribly sick" : ""]! ")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine)
+ data["borrowed_health"] += borrowed_health //Preserve health offset
+ borrowed_health = 0 //We are applying this to someone else, so this info will be transferred via data.
if(method==INJECT)
data["injected_vol"] = reac_volume
var/obj/item/organ/heart/H = C.getorganslot(ORGAN_SLOT_HEART)
- if(data["grown_volume"] > 50 && H.organ_flags & ORGAN_FAILING)
+ if(H && data["grown_volume"] > 50 && H.organ_flags & ORGAN_FAILING)
H.applyOrganDamage(-20)
..()
@@ -145,16 +165,19 @@
C.reagents.remove_reagent(type, 15)
to_chat(C, "
You feel something reform inside of you! ")
- data["injected_vol"] -= metabolization_rate
+ data["injected_vol"] = max(0, data["injected_vol"] - metabolization_rate * C.metabolism_efficiency) //No negatives.
if(borrowed_health)
- C.adjustToxLoss(1)
- C.adjustCloneLoss(1)
- borrowed_health -= 1
+ var/ratio = (current_cycle > SYNTHTISSUE_DAMAGE_FLIP_CYCLES) ? 0 : (1 - (current_cycle / SYNTHTISSUE_DAMAGE_FLIP_CYCLES))
+ var/payback = 2 * C.metabolism_efficiency //How much borrowed health we are paying back. Starts as cloneloss, slowly flips over to toxloss.
+ C.adjustToxLoss((1 - ratio) * payback * REAGENTS_EFFECT_MULTIPLIER, forced = TRUE)
+ C.adjustCloneLoss(ratio * payback * REAGENTS_EFFECT_MULTIPLIER)
+ borrowed_health = max(borrowed_health - payback, 0)
..()
/datum/reagent/synthtissue/on_merge(passed_data)
if(!passed_data)
return ..()
+ borrowed_health += max(0, passed_data["borrowed_health"])
if(passed_data["grown_volume"] > data["grown_volume"])
data["grown_volume"] = passed_data["grown_volume"]
if(iscarbon(holder.my_atom))
@@ -166,11 +189,16 @@
/datum/reagent/synthtissue/on_new(passed_data)
if(!passed_data)
return ..()
+ borrowed_health = min(passed_data["borrowed_health"] + borrowed_health, SYNTHTISSUE_BORROW_CAP)
if(passed_data["grown_volume"] > data["grown_volume"])
data["grown_volume"] = passed_data["grown_volume"]
update_name()
..()
+/datum/reagent/synthtissue/post_copy_data()
+ data["borrowed_health"] = 0 //We passed this along to something that needed it, set it back to 0 so we don't do it twice.
+ return ..()
+
/datum/reagent/synthtissue/proc/update_name() //They are but babes on creation and have to grow unto godhood
switch(data["grown_volume"])
if(-INFINITY to 50)
@@ -193,9 +221,9 @@
C.adjustCloneLoss(borrowed_health*1.25)
C.adjustAllOrganLoss(borrowed_health*0.25)
M.updatehealth()
- if(borrowed_health && C.health < -20)
- M.set_stat(DEAD)
- M.visible_message("The synthetic tissue degrades off [M]'s wounds as they collapse to the floor.")
+ if(C.stat != DEAD && borrowed_health && C.health < -20)
+ M.visible_message("The synthetic tissue sloughs off [M]'s wounds as they collapse to the floor.")
+ M.death()
//NEEDS ON_MOB_DEAD()
/datum/reagent/fermi/zeolites
diff --git a/testing.dmm b/testing.dmm
index 853a8003c3..f498bd8bd0 100644
--- a/testing.dmm
+++ b/testing.dmm
@@ -98,7 +98,7 @@
"cG" = (/obj/structure/chair/wood,/turf/open/floor/wood/f13/old,/area/space)
"cI" = (/obj/structure/rack,/obj/item/stack/sheet/glass/fifty,/obj/item/stack/sheet/glass/fifty,/obj/item/stack/sheet/glass/fifty,/obj/item/stack/sheet/glass/fifty,/obj/item/stack/sheet/glass/fifty,/obj/item/stack/sheet/glass/fifty,/obj/item/stack/sheet/glass/fifty,/turf/open/floor/wood/f13/old,/area/space)
"cK" = (/obj/structure/chair/comfy/shuttle,/obj/effect/landmark/start/f13/followersadministrator,/turf/open/floor/f13{icon_state = "bluerustysolid"},/area/space)
-"cL" = (/obj/structure/rack,/obj/item/camera,/obj/item/camera_film,/obj/item/crafting/abraxo,/obj/item/crafting/sensor,/obj/item/flashlight/seclite,/obj/item/flashlight,/obj/item/flashlight,/obj/item/radio,/obj/effect/spawner/lootdrop/f13/resourcespawner,/obj/effect/spawner/lootdrop/f13/resourcespawner,/obj/effect/spawner/lootdrop/f13/crafting,/obj/effect/spawner/lootdrop/f13/crafting,/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust,/area/space)
+"cL" = (/obj/structure/rack,/obj/item/camera,/obj/item/camera_film,/obj/item/crafting/abraxo,/obj/item/assembly/prox_sensor,/obj/item/flashlight/seclite,/obj/item/flashlight,/obj/item/flashlight,/obj/item/radio,/obj/effect/spawner/lootdrop/f13/resourcespawner,/obj/effect/spawner/lootdrop/f13/resourcespawner,/obj/effect/spawner/lootdrop/f13/crafting,/obj/effect/spawner/lootdrop/f13/crafting,/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust,/area/space)
"cM" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/open/indestructible/ground/outside/sidewalk{dir = 9; icon_state = "outerpavement"},/area/space)
"cP" = (/obj/structure/rack,/obj/item/stack/f13Cash/random/denarius/high,/obj/item/stack/f13Cash/random/denarius/high,/obj/item/stack/f13Cash/random/denarius/high,/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust,/area/space)
"cQ" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/oil{icon_state = "floor6"; pixel_x = -28},/obj/machinery/autolathe,/turf/open/floor/plasteel/f13/vault_floor/misc/vaultrust,/area/space)
diff --git a/tgui/packages/tgui/interfaces/Crayon.js b/tgui/packages/tgui/interfaces/Crayon.js
index 05191f8c66..568e02667b 100644
--- a/tgui/packages/tgui/interfaces/Crayon.js
+++ b/tgui/packages/tgui/interfaces/Crayon.js
@@ -1,11 +1,18 @@
import { useBackend } from '../backend';
-import { Button, LabeledList, Section } from '../components';
+import { Button, LabeledList, Section, Slider } from '../components';
import { Window } from '../layouts';
export const Crayon = (props, context) => {
const { act, data } = useBackend(context);
const capOrChanges = data.has_cap || data.can_change_colour;
const drawables = data.drawables || [];
+ const {
+ precision_mode,
+ x,
+ y,
+ min_offset,
+ max_offset,
+ } = data;
return (
{
onClick={() => act('select_colour')} />
)}
+
+
+
+ act('toggle_precision')} />
+
+ {!!precision_mode && (
+ <>
+
+ act('set_precision_x', {
+ x: value,
+ })} />
+
+
+ act('set_precision_y', {
+ y: value,
+ })} />
+
+ >
+ )}
+
+
{drawables.map(drawable => {
diff --git a/tgui/public/tgui.bundle.js b/tgui/public/tgui.bundle.js
index a722f83e7b..93a8acbe34 100644
--- a/tgui/public/tgui.bundle.js
+++ b/tgui/public/tgui.bundle.js
@@ -1 +1 @@
-!function(){var e,t={60121:function(e,t,n){"use strict";var o=n(39812);n(56285),n(58602),n(92433),n(35070),n(86455),n(41821),n(83243),n(97585),n(87266),n(99195),n(72916),n(20459);var r,a,c=n(84877),i=(n(25059),n(18874)),l=n(25697),d=n(75682),u=n(69913),s=n(74360);c.perf.mark("inception",null==(r=window.performance)||null==(a=r.timing)?void 0:a.navigationStart),c.perf.mark("init");var m=(0,u.configureStore)(),p=(0,d.createRenderer)((function(){var e=(0,n(73218).getRoutedComponent)(m);return(0,o.createComponentVNode)(2,u.StoreProvider,{store:m,children:(0,o.createComponentVNode)(2,e)})}));!function C(){if("loading"!==document.readyState){for((0,s.setupGlobalEvents)(),(0,i.setupHotKeys)(),(0,l.captureExternalLinks)(),m.subscribe(p),window.update=function(e){return m.dispatch(Byond.parseJson(e))};;){var e=window.__updateQueue__.shift();if(!e)break;window.update(e)}0}else document.addEventListener("DOMContentLoaded",C)}()},37905:function(e,t,n){"use strict";t.__esModule=!0,t.AbductorConsole=void 0;var o=n(39812),r=n(89761),a=n(71494),c=n(74814),i=n(85952);t.AbductorConsole=function(e,t){var n=(0,a.useSharedState)(t,"tab",1),r=n[0],s=n[1];return(0,o.createComponentVNode)(2,i.Window,{theme:"abductor",width:600,height:532,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:1===r,onClick:function(){return s(1)},children:"Abductsoft 3000"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:2===r,onClick:function(){return s(2)},children:"Mission Settings"})]}),1===r&&(0,o.createComponentVNode)(2,l),2===r&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,u)],4)]})})};var l=function(e,t){var n=(0,a.useBackend)(t),i=(n.act,n.data),l=i.experiment,d=i.points,u=i.credits;return l?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Collected Samples",children:d})})}),(0,o.createComponentVNode)(2,r.GenericUplink,{currencyAmount:u,currencySymbol:"Credits"})],4):(0,o.createComponentVNode)(2,c.NoticeBox,{danger:!0,children:"No Experiment Machine Detected"})},d=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.pad,d=i.gizmo;return l?(0,o.createComponentVNode)(2,c.Section,{title:"Emergency Teleport",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"exclamation-circle",content:"Activate",color:"bad",onClick:function(){return r("teleporter_send")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mark Retrieval",children:(0,o.createComponentVNode)(2,c.Button,{icon:d?"user-plus":"user-slash",content:d?"Retrieve":"No Mark",disabled:!d,onClick:function(){return r("teleporter_retrieve")}})})})}):(0,o.createComponentVNode)(2,c.NoticeBox,{danger:!0,children:"No Telepad Detected"})},u=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.vest,d=i.vest_mode,u=i.vest_lock;return l?(0,o.createComponentVNode)(2,c.Section,{title:"Agent Vest Settings",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:u?"lock":"unlock",content:u?"Locked":"Unlocked",onClick:function(){return r("toggle_vest")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:(0,o.createComponentVNode)(2,c.Button,{icon:1===d?"eye-slash":"fist-raised",content:1===d?"Stealth":"Combat",onClick:function(){return r("flip_vest")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Disguise",children:(0,o.createComponentVNode)(2,c.Button,{icon:"user-secret",content:"Select",onClick:function(){return r("select_disguise")}})})]})}):(0,o.createComponentVNode)(2,c.NoticeBox,{danger:!0,children:"No Agent Vest Detected"})}},16804:function(e,t,n){"use strict";t.__esModule=!0,t.Achievements=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Achievements=function(e,t){var n=(0,r.useBackend)(t).data,l=n.categories,u=(0,r.useLocalState)(t,"category",l[0]),s=u[0],m=u[1],p=n.achievements.filter((function(e){return e.category===s}));return(0,o.createComponentVNode)(2,c.Window,{title:"Achievements",width:540,height:680,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[l.map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:s===e,onClick:function(){return m(e)},children:e},e)})),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:"High Scores"===s,onClick:function(){return m("High Scores")},children:"High Scores"})]}),"High Scores"===s&&(0,o.createComponentVNode)(2,d)||(0,o.createComponentVNode)(2,i,{achievements:p})]})})};var i=function(e,t){var n=e.achievements;return(0,o.createComponentVNode)(2,a.Table,{children:n.map((function(e){return(0,o.createComponentVNode)(2,l,{achievement:e},e.name)}))})},l=function(e){var t=e.achievement,n=t.name,r=t.desc,c=t.icon_class,i=t.value,l=t.score;return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Box,{m:1,className:c})}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",children:[(0,o.createVNode)(1,"h1",null,n,0),r,l&&(0,o.createComponentVNode)(2,a.Box,{color:i>0?"good":"bad",children:i>0?"Earned "+i+" times":"Locked"})||(0,o.createComponentVNode)(2,a.Box,{color:i?"good":"bad",children:i?"Unlocked":"Locked"})]})]},n)},d=function(e,t){var n=(0,r.useBackend)(t).data,c=n.highscore,i=n.user_ckey,l=(0,r.useLocalState)(t,"highscore",0),d=l[0],u=l[1],s=c[d];if(!s)return null;var m=Object.keys(s.scores).map((function(e){return{ckey:e,value:s.scores[e]}}));return(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:c.map((function(e,t){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:d===t,onClick:function(){return u(t)},children:e.name},e.name)}))})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:"#"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:"Key"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:"Score"})]}),m.map((function(e,t){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",m:2,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:t+1}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:e.ckey===i&&"green",textAlign:"center",children:[0===t&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"yellow",mr:2}),e.ckey,0===t&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"yellow",ml:2})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:e.value})]},e.ckey)}))]})})]})}},47330:function(e,t,n){"use strict";t.__esModule=!0,t.AiAirlock=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i={2:{color:"good",localStatusText:"Offline"},1:{color:"average",localStatusText:"Caution"},0:{color:"bad",localStatusText:"Optimal"}};t.AiAirlock=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=i[d.power.main]||i[0],s=i[d.power.backup]||i[0],m=i[d.shock]||i[0];return(0,o.createComponentVNode)(2,c.Window,{width:500,height:390,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main",color:u.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!d.power.main,content:"Disrupt",onClick:function(){return l("disrupt-main")}}),children:[d.power.main?"Online":"Offline"," ",d.wires.main_1&&d.wires.main_2?d.power.main_timeleft>0&&"["+d.power.main_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Backup",color:s.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!d.power.backup,content:"Disrupt",onClick:function(){return l("disrupt-backup")}}),children:[d.power.backup?"Online":"Offline"," ",d.wires.backup_1&&d.wires.backup_2?d.power.backup_timeleft>0&&"["+d.power.backup_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Electrify",color:m.color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",disabled:!(d.wires.shock&&0===d.shock),content:"Restore",onClick:function(){return l("shock-restore")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!d.wires.shock,content:"Temporary",onClick:function(){return l("shock-temp")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!d.wires.shock,content:"Permanent",onClick:function(){return l("shock-perm")}})],4),children:[2===d.shock?"Safe":"Electrified"," ",(d.wires.shock?d.shock_timeleft>0&&"["+d.shock_timeleft+"s]":"[Wires have been cut!]")||-1===d.shock_timeleft&&"[Permanent]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Access and Door Control",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID Scan",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.id_scanner?"power-off":"times",content:d.id_scanner?"Enabled":"Disabled",selected:d.id_scanner,disabled:!d.wires.id_scanner,onClick:function(){return l("idscan-toggle")}}),children:!d.wires.id_scanner&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Access",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.emergency?"power-off":"times",content:d.emergency?"Enabled":"Disabled",selected:d.emergency,onClick:function(){return l("emergency-toggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolts",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.locked?"lock":"unlock",content:d.locked?"Lowered":"Raised",selected:d.locked,disabled:!d.wires.bolts,onClick:function(){return l("bolt-toggle")}}),children:!d.wires.bolts&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolt Lights",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.lights?"power-off":"times",content:d.lights?"Enabled":"Disabled",selected:d.lights,disabled:!d.wires.lights,onClick:function(){return l("light-toggle")}}),children:!d.wires.lights&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Force Sensors",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.safe?"power-off":"times",content:d.safe?"Enabled":"Disabled",selected:d.safe,disabled:!d.wires.safe,onClick:function(){return l("safe-toggle")}}),children:!d.wires.safe&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Timing Safety",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.speed?"power-off":"times",content:d.speed?"Enabled":"Disabled",selected:d.speed,disabled:!d.wires.timing,onClick:function(){return l("speed-toggle")}}),children:!d.wires.timing&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Control",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.opened?"sign-out-alt":"sign-in-alt",content:d.opened?"Open":"Closed",selected:d.opened,disabled:d.locked||d.welded,onClick:function(){return l("open-close")}}),children:!(!d.locked&&!d.welded)&&(0,o.createVNode)(1,"span",null,[(0,o.createTextVNode)("[Door is "),d.locked?"bolted":"",d.locked&&d.welded?" and ":"",d.welded?"welded":"",(0,o.createTextVNode)("!]")],0)})]})})]})})}},33084:function(e,t,n){"use strict";t.__esModule=!0,t.AiRestorerContent=t.AiRestorer=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.AiRestorer=function(){return(0,o.createComponentVNode)(2,c.Window,{width:370,height:360,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.AI_present,d=i.error,u=i.name,s=i.laws,m=i.isDead,p=i.restoring,C=i.health,h=i.ejectable;return(0,o.createFragment)([d&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:d}),!!h&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:l?u:"----------",disabled:!l,onClick:function(){return c("PRG_eject")}}),!!l&&(0,o.createComponentVNode)(2,a.Section,{title:h?"System Status":u,buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:m?"bad":"good",children:m?"Nonfunctional":"Functional"}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:C,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})})}),!!p&&(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"20px",color:"good",mt:1,children:"RECONSTRUCTION IN PROGRESS"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"plus",content:"Begin Reconstruction",disabled:p,mt:1,onClick:function(){return c("PRG_beginReconstruction")}}),(0,o.createComponentVNode)(2,a.Section,{title:"Laws",level:2,children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{className:"candystripe",children:e},e)}))})]})],0)};t.AiRestorerContent=i},58444:function(e,t,n){"use strict";t.__esModule=!0,t.AirAlarm=void 0;var o=n(39812),r=n(41860),a=(n(2497),n(71494)),c=n(74814),i=(n(76270),n(85952)),l=n(21451),d=n(71739);t.AirAlarm=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data),c=r.locked&&!r.siliconUser;return(0,o.createComponentVNode)(2,i.Window,{width:440,height:650,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,u),!c&&(0,o.createComponentVNode)(2,m)]})})};var u=function(e,t){var n=(0,a.useBackend)(t).data,i=(n.environment_data||[]).filter((function(e){return e.value>=.01})),l={0:{color:"good",localStatusText:"Optimal"},1:{color:"average",localStatusText:"Caution"},2:{color:"bad",localStatusText:"Danger (Internals Required)"}},d=l[n.danger_level]||l[0];return(0,o.createComponentVNode)(2,c.Section,{title:"Air Status",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[i.length>0&&(0,o.createFragment)([i.map((function(e){var t=l[e.danger_level]||l[0];return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,color:t.color,children:[(0,r.toFixed)(e.value,2),e.unit]},e.name)})),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Local status",color:d.color,children:d.localStatusText}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Area status",color:n.atmos_alarm||n.fire_alarm?"bad":"good",children:(n.atmos_alarm?"Atmosphere Alarm":n.fire_alarm&&"Fire Alarm")||"Nominal"})],0)||(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Cannot obtain air sample for analysis."}),!!n.emagged&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Safety measures offline. Device may exhibit abnormal behavior."})]})})},s={home:{title:"Air Controls",component:function(){return p}},vents:{title:"Vent Controls",component:function(){return C}},scrubbers:{title:"Scrubber Controls",component:function(){return h}},modes:{title:"Operating Mode",component:function(){return N}},thresholds:{title:"Alarm Thresholds",component:function(){return V}}},m=function(e,t){var n=(0,a.useLocalState)(t,"screen"),r=n[0],i=n[1],l=s[r]||s.home,d=l.component();return(0,o.createComponentVNode)(2,c.Section,{title:l.title,buttons:r&&(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-left",content:"Back",onClick:function(){return i()}}),children:(0,o.createComponentVNode)(2,d)})},p=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=(0,a.useLocalState)(t,"screen"),d=(l[0],l[1]),u=i.mode,s=i.atmos_alarm;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:s?"exclamation-triangle":"exclamation",color:s&&"caution",content:"Area Atmosphere Alarm",onClick:function(){return r(s?"reset":"alarm")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:3===u?"exclamation-triangle":"exclamation",color:3===u&&"danger",content:"Panic Siphon",onClick:function(){return r("mode",{mode:3===u?1:3})}}),(0,o.createComponentVNode)(2,c.Box,{mt:2}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"Vent Controls",onClick:function(){return d("vents")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"filter",content:"Scrubber Controls",onClick:function(){return d("scrubbers")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"cog",content:"Operating Mode",onClick:function(){return d("modes")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"chart-bar",content:"Alarm Thresholds",onClick:function(){return d("thresholds")}})],4)},C=function(e,t){var n=(0,a.useBackend)(t).data.vents;return n&&0!==n.length?n.map((function(e){return(0,o.createComponentVNode)(2,d.Vent,{vent:e},e.id_tag)})):"Nothing to show"},h=function(e,t){var n=(0,a.useBackend)(t).data.scrubbers;return n&&0!==n.length?n.map((function(e){return(0,o.createComponentVNode)(2,d.Scrubber,{scrubber:e},e.id_tag)})):"Nothing to show"},N=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.modes;return i&&0!==i.length?i.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:e.selected?"check-square-o":"square-o",selected:e.selected,color:e.selected&&e.danger&&"danger",content:e.name,onClick:function(){return r("mode",{mode:e.mode})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1})],4,e.mode)})):"Nothing to show"},V=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data.thresholds;return(0,o.createVNode)(1,"table","LabeledList",[(0,o.createVNode)(1,"thead",null,(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","color-bad","min2",16),(0,o.createVNode)(1,"td","color-average","min1",16),(0,o.createVNode)(1,"td","color-average","max1",16),(0,o.createVNode)(1,"td","color-bad","max2",16)],4),2),(0,o.createVNode)(1,"tbody",null,l.map((function(e){return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","LabeledList__label",e.name,0),e.settings.map((function(e){return(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,c.Button,{content:(0,r.toFixed)(e.selected,2),onClick:function(){return i("threshold",{env:e.env,"var":e.val})}}),2,null,e.val)}))],0,null,e.name)})),0)],4,{style:{width:"100%"}})}},54370:function(e,t,n){"use strict";t.__esModule=!0,t.AirlockAccessList=t.AirlockElectronics=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=n(64499);function l(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return d(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=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.")}return(n=e[Symbol.iterator]()).next.bind(n)}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=n.length?e=t?e-1:0:e<0&&(e=t?0:n.length-1);var o=this.buttonRefs[e].current;o&&setTimeout((function(){return o.focus()}),1),this.setState({current:e})},u.render=function(){var e=this,t=(0,a.useBackend)(this.context),n=t.act,r=t.data,d=r.title,u=r.message,m=r.buttons,p=r.timeout,C=this.state.current,h=function(){return e.setCurrent(C,!1)};return(0,o.createComponentVNode)(2,i.Window,{title:d,width:350,height:150,canClose:p>0,children:[p&&(0,o.createComponentVNode)(2,s,{value:p}),(0,o.createComponentVNode)(2,i.Window.Content,{onFocus:h,onClick:h,children:(0,o.createComponentVNode)(2,c.Section,{fill:!0,children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",className:"AlertModal__Message",height:"100%",children:(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Box,{m:1,children:u})})})}),(0,o.createComponentVNode)(2,c.Flex.Item,{my:2,children:(0,o.createComponentVNode)(2,c.Flex,{className:"AlertModal__Buttons",children:m.map((function(t,r){return(0,o.createComponentVNode)(2,c.Flex.Item,{mx:1,children:(0,o.createVNode)(1,"div","Button Button--color--default",t,0,{px:3,onClick:function(){return n("choose",{choice:t})},onKeyDown:function(o){var r=window.event?o.which:o.keyCode;r===l.KEY_SPACE||r===l.KEY_ENTER?n("choose",{choice:t}):r===l.KEY_LEFT||o.shiftKey&&r===l.KEY_TAB?e.setCurrent(C-1,r===l.KEY_LEFT):r!==l.KEY_RIGHT&&r!==l.KEY_TAB||e.setCurrent(C+1,r===l.KEY_RIGHT)}},null,e.buttonRefs[r])},r)}))})})]})})})]})},r}(o.Component);t.AlertModal=u;var s=function(e){var t=e.value;return(0,o.createVNode)(1,"div","AlertModal__Loader",(0,o.createComponentVNode)(2,c.Box,{className:"AlertModal__LoaderProgress",style:{width:100*(0,r.clamp01)(t)+"%"}}),2)};t.Loader=s},93749:function(e,t,n){"use strict";t.__esModule=!0,t.Apc=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=n(21451);t.Apc=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:450,height:445,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,u)})})};var l={2:{color:"good",externalPowerText:"External Power",chargingText:"Fully Charged"},1:{color:"average",externalPowerText:"Low External Power",chargingText:"Charging"},0:{color:"bad",externalPowerText:"No External Power",chargingText:"Not Charging"}},d={1:{icon:"terminal",content:"Override Programming",action:"hack"},2:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"},3:{icon:"caret-square-left",content:"Return to Main Core",action:"deoccupy"},4:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"}},u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,u=n.data,s=u.locked&&!u.siliconUser,m=l[u.externalPower]||l[0],p=l[u.chargingStatus]||l[0],C=u.powerChannels||[],h=d[u.malfStatus]||d[0],N=u.powerCellStatus/100;return u.failTime>0?(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createVNode)(1,"b",null,(0,o.createVNode)(1,"h3",null,"SYSTEM FAILURE",16),2),(0,o.createVNode)(1,"i",null,"I/O regulators malfunction detected! Waiting for system reboot...",16),(0,o.createVNode)(1,"br"),"Automatic reboot in ",u.failTime," seconds...",(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Reboot Now",onClick:function(){return c("reboot")}})]}):(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main Breaker",color:m.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.isOperating?"power-off":"times",content:u.isOperating?"On":"Off",selected:u.isOperating&&!s,disabled:s,onClick:function(){return c("breaker")}}),children:["[ ",m.externalPowerText," ]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power Cell",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:"good",value:N})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",color:p.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.chargeMode?"sync":"close",content:u.chargeMode?"Auto":"Off",disabled:s,onClick:function(){return c("charge")}}),children:["[ ",p.chargingText," ]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Channels",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[C.map((function(e){var t=e.topicParams;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.title,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,mx:2,color:e.status>=2?"good":"bad",children:e.status>=2?"On":"Off"}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:!s&&(1===e.status||3===e.status),disabled:s,onClick:function(){return c("channel",t.auto)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"On",selected:!s&&2===e.status,disabled:s,onClick:function(){return c("channel",t.on)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:!s&&0===e.status,disabled:s,onClick:function(){return c("channel",t.off)}})],4),children:e.powerLoad},e.title)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Load",children:(0,o.createVNode)(1,"b",null,u.totalLoad,0)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Misc",buttons:!!u.siliconUser&&(0,o.createFragment)([!!u.malfStatus&&(0,o.createComponentVNode)(2,a.Button,{icon:h.icon,content:h.content,color:"bad",onClick:function(){return c(h.action)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:"Overload",onClick:function(){return c("overload")}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cover Lock",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.coverLocked?"lock":"unlock",content:u.coverLocked?"Engaged":"Disengaged",disabled:s,onClick:function(){return c("cover")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:u.emergencyLights?"Enabled":"Disabled",disabled:s,onClick:function(){return c("emergency_lighting")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Night Shift Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:u.nightshiftLights?"Enabled":"Disabled",onClick:function(){return c("toggle_nightshift")}})})]})})],4)}},78645:function(e,t,n){"use strict";t.__esModule=!0,t.ApcControl=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(34380),i=n(71494),l=n(74814),d=n(85952),u=n(89793);t.ApcControl=function(e,t){var n=(0,i.useBackend)(t).data;return(0,o.createComponentVNode)(2,d.Window,{title:"APC Controller",width:550,height:500,resizable:!0,children:[1===n.authenticated&&(0,o.createComponentVNode)(2,m),0===n.authenticated&&(0,o.createComponentVNode)(2,s)]})};var s=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data.emagged,c=1===a?"Open":"Log In";return(0,o.createComponentVNode)(2,d.Window.Content,{children:(0,o.createComponentVNode)(2,l.Button,{fluid:!0,color:1===a?"":"good",content:c,onClick:function(){return r("log-in")}})})},m=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data.restoring,c=(0,i.useLocalState)(t,"tab-index",1),u=c[0],s=c[1];return(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Tabs,{children:[(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:1===u,onClick:function(){s(1),r("check-apcs")},children:"APC Control Panel"}),(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:2===u,onClick:function(){s(2),r("check-logs")},children:"Log View Panel"})]}),1===a&&(0,o.createComponentVNode)(2,l.Dimmer,{fontSize:"32px",children:[(0,o.createComponentVNode)(2,l.Icon,{name:"cog",spin:!0})," Resetting..."]}),1===u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,l.Box,{fillPositionedParent:!0,top:"53px",children:(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,C)})})],4),2===u&&(0,o.createComponentVNode)(2,l.Box,{fillPositionedParent:!0,top:"20px",children:(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,h)})})],0)},p=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data,c=a.emagged,d=a.logging,u=(0,i.useLocalState)(t,"sortByField",null),s=u[0],m=u[1];return(0,o.createComponentVNode)(2,l.Flex,{children:[(0,o.createComponentVNode)(2,l.Flex.Item,{children:[(0,o.createComponentVNode)(2,l.Box,{inline:!0,mr:2,color:"label",children:"Sort by:"}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"name"===s,content:"Name",onClick:function(){return m("name"!==s&&"name")}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"charge"===s,content:"Charge",onClick:function(){return m("charge"!==s&&"charge")}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"draw"===s,content:"Draw",onClick:function(){return m("draw"!==s&&"draw")}})]}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1}),(0,o.createComponentVNode)(2,l.Flex.Item,{children:[1===c&&(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Button,{color:1===d?"bad":"good",content:1===d?"Stop Logging":"Restore Logging",onClick:function(){return r("toggle-logs")}}),(0,o.createComponentVNode)(2,l.Button,{content:"Reset Console",onClick:function(){return r("restore-console")}})],4),(0,o.createComponentVNode)(2,l.Button,{color:"bad",content:"Log Out",onClick:function(){return r("log-out")}})]})]})},C=function(e,t){var n=(0,i.useBackend)(t),c=n.data,d=n.act,s=(0,i.useLocalState)(t,"sortByField",null)[0],m=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.name+t})})),"name"===s&&(0,r.sortBy)((function(e){return e.name})),"charge"===s&&(0,r.sortBy)((function(e){return-e.charge})),"draw"===s&&(0,r.sortBy)((function(e){return-(0,u.powerRank)(e.load)}),(function(e){return-parseFloat(e.load)}))])(c.apcs);return(0,o.createComponentVNode)(2,l.Table,{children:[(0,o.createComponentVNode)(2,l.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:"On/Off"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Area"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:"Charge"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,textAlign:"right",children:"Draw"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Equipment",children:"Eqp"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Lighting",children:"Lgt"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Environment",children:"Env"})]}),m.map((function(e,t){return(0,o.createVNode)(1,"tr","Table__row candystripe",[(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,l.Button,{icon:e.operating?"power-off":"times",color:e.operating?"good":"bad",onClick:function(){return d("breaker",{ref:e.ref})}}),2),(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,l.Button,{onClick:function(){return d("access-apc",{ref:e.ref})},children:e.name}),2),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",(0,o.createComponentVNode)(2,u.AreaCharge,{charging:e.charging,charge:e.charge}),2),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",e.load,0),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,N,{target:"equipment",status:e.eqp,apc:e,act:d}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,N,{target:"lighting",status:e.lgt,apc:e,act:d}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,N,{target:"environ",status:e.env,apc:e,act:d}),2)],4,null,e.id)}))]})},h=function(e,t){var n=(0,i.useBackend)(t).data,c=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.entry+t})})),function(e){return e.reverse()}])(n.logs);return(0,o.createComponentVNode)(2,l.Box,{m:-.5,children:c.map((function(e){return(0,o.createComponentVNode)(2,l.Box,{p:.5,className:"candystripe",bold:!0,children:e.entry},e.id)}))})},N=function(e){var t=e.target,n=e.status,r=e.apc,a=e.act,c=Boolean(2&n),i=Boolean(1&n);return(0,o.createComponentVNode)(2,l.Button,{icon:i?"sync":"power-off",color:c?"good":"bad",onClick:function(){return a("toggle-minor",{type:t,value:V(n),ref:r.ref})}})},V=function(e){return 0===e?2:2===e?3:0};N.defaultHooks=c.pureComponentHooks},38531:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosAlertConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.AtmosAlertConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.priority||[],u=l.minor||[];return(0,o.createComponentVNode)(2,c.Window,{width:350,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Alarms",children:(0,o.createVNode)(1,"ul",null,[0===d.length&&(0,o.createVNode)(1,"li","color-good","No Priority Alerts",16),d.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"bad",onClick:function(){return i("clear",{zone:e})}}),2,null,e)})),0===u.length&&(0,o.createVNode)(1,"li","color-good","No Minor Alerts",16),u.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"average",onClick:function(){return i("clear",{zone:e})}}),2,null,e)}))],0)})})})}},4852:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosControlConsole=void 0;var o=n(39812),r=n(64499),a=n(41860),c=n(71494),i=n(74814),l=n(85952);t.AtmosControlConsole=function(e,t){var n,d=(0,c.useBackend)(t),u=d.act,s=d.data,m=s.sensors||[];return(0,o.createComponentVNode)(2,l.Window,{width:500,height:315,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:!!s.tank&&(null==(n=m[0])?void 0:n.long_name),children:m.map((function(e){var t=e.gases||{};return(0,o.createComponentVNode)(2,i.Section,{title:!s.tank&&e.long_name,level:2,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure",children:(0,a.toFixed)(e.pressure,2)+" kPa"}),!!e.temperature&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Temperature",children:(0,a.toFixed)(e.temperature,2)+" K"}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:t,children:(0,a.toFixed)(e,2)+"%"})}))(t)]})},e.id_tag)}))}),s.tank&&(0,o.createComponentVNode)(2,i.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"undo",content:"Reconnect",onClick:function(){return u("reconnect")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Input Injector",children:(0,o.createComponentVNode)(2,i.Button,{icon:s.inputting?"power-off":"times",content:s.inputting?"Injecting":"Off",selected:s.inputting,onClick:function(){return u("input")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Input Rate",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:s.inputRate,unit:"L/s",width:"63px",minValue:0,maxValue:200,suppressFlicker:2e3,onChange:function(e,t){return u("rate",{rate:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output Regulator",children:(0,o.createComponentVNode)(2,i.Button,{icon:s.outputting?"power-off":"times",content:s.outputting?"Open":"Closed",selected:s.outputting,onClick:function(){return u("output")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output Pressure",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:parseFloat(s.outputPressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,suppressFlicker:2e3,onChange:function(e,t){return u("pressure",{pressure:t})}})})]})})]})})}},40948:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosControlPanel=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(71494),i=n(74814),l=n(85952);t.AtmosControlPanel=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.area+t})})),(0,r.sortBy)((function(e){return e.id}))])(u.excited_groups);return(0,o.createComponentVNode)(2,l.Window,{title:"SSAir Control Panel",width:900,height:500,resizable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{m:1,children:(0,o.createComponentVNode)(2,i.Flex,{justify:"space-between",align:"baseline",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return d("toggle-freeze")},color:1===u.frozen?"good":"bad",children:1===u.frozen?"Freeze Subsystem":"Unfreeze Subsystem"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Fire Cnt: ",u.fire_count]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Active Turfs: ",u.active_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Excited Groups: ",u.excited_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Hotspots: ",u.hotspots_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Superconductors: ",u.conducting_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:u.showing_user,onClick:function(){return d("toggle_user_display")},children:"Personal View"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:u.show_all,onClick:function(){return d("toggle_show_all")},children:"Display all"})})]})}),(0,o.createComponentVNode)(2,i.Box,{fillPositionedParent:!0,top:"45px",children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Area Name"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Breakdown"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Dismantle"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Turfs"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:1===u.display_max&&"Max Share"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Display"})]}),s.map((function(e){return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,i.Button,{content:e.area,onClick:function(){return d("move-to-target",{spot:e.jump_to})}}),2),(0,o.createVNode)(1,"td",null,e.breakdown,0),(0,o.createVNode)(1,"td",null,e.dismantle,0),(0,o.createVNode)(1,"td",null,e.size,0),(0,o.createVNode)(1,"td",null,1===u.display_max&&e.max_share,0),(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:e.should_show,onClick:function(){return d("toggle_show_group",{group:e.group})}}),2)],4,null,e.id)}))]})})})})]})}},2726:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosFilter=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(76270),i=n(85952);t.AtmosFilter=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.filter_types||[];return(0,o.createComponentVNode)(2,i.Window,{width:390,height:187,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:d.on?"power-off":"times",content:d.on?"On":"Off",selected:d.on,onClick:function(){return l("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(d.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onDrag:function(e,t){return l("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:d.rate===d.max_rate,onClick:function(){return l("rate",{rate:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Filter",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:e.selected,content:(0,c.getGasLabel)(e.id,e.name),onClick:function(){return l("filter",{mode:e.id})}},e.id)}))})]})})})})}},61505:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosMixer=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.AtmosMixer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:370,height:165,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.set_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return i("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.set_pressure===l.max_pressure,onClick:function(){return i("pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 1",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:l.node1_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return i("node1",{concentration:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 2",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:l.node2_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return i("node2",{concentration:t})}})})]})})})})}},30255:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosPump=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.AtmosPump=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:335,height:115,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,onClick:function(){return i("power")}})}),l.max_rate?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onChange:function(e,t){return i("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.rate===l.max_rate,onClick:function(){return i("rate",{rate:"max"})}})]}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return i("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.pressure===l.max_pressure,onClick:function(){return i("pressure",{pressure:"max"})}})]})]})})})})}},78598:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosRelief=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.AtmosRelief=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:335,height:115,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Open Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.open_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:l.max_pressure||4500,step:10,onChange:function(e,t){return i("open_pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.open_pressure===l.max_pressure,onClick:function(){return i("open_pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Close Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.close_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:l.max_pressure||4500,step:10,onChange:function(e,t){return i("close_pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.close_pressure===l.max_pressure,onClick:function(){return i("close_pressure",{pressure:"max"})}})]})]})})})})}},33106:function(e,t,n){"use strict";t.__esModule=!0,t.AutomatedAnnouncement=void 0;var o=n(39812),r=(n(2497),n(71494)),a=n(74814),c=n(85952),i="%PERSON will be replaced with their name.\n%RANK with their job.";t.AutomatedAnnouncement=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.arrivalToggle,s=d.arrival,m=d.newheadToggle,p=d.newhead;return(0,o.createComponentVNode)(2,c.Window,{title:"Automated Announcement System",width:500,height:225,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Arrival Announcement",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",selected:u,content:u?"On":"Off",onClick:function(){return l("ArrivalToggle")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"info",tooltip:i,tooltipPosition:"left"}),children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:s,onChange:function(e,t){return l("ArrivalText",{newText:t})}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Departmental Head Announcement",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",selected:m,content:m?"On":"Off",onClick:function(){return l("NewheadToggle")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"info",tooltip:i,tooltipPosition:"left"}),children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:p,onChange:function(e,t){return l("NewheadText",{newText:t})}})})})})]})})}},57554:function(e,t,n){"use strict";t.__esModule=!0,t.BankMachine=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(58083),i=n(85952);t.BankMachine=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.current_balance,s=d.siphoning,m=d.station_name;return(0,o.createComponentVNode)(2,i.Window,{width:350,height:155,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:"Authorized personnel only"}),(0,o.createComponentVNode)(2,a.Section,{title:m+" Vault",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Balance",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:s?"times":"sync",content:s?"Stop Siphoning":"Siphon Credits",selected:s,onClick:function(){return l(s?"halt":"siphon")}}),children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u,format:function(e){return(0,c.formatMoney)(e)}})," cr"]})})})]})})}},51723:function(e,t,n){"use strict";t.__esModule=!0,t.Bepis=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Bepis=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.amount;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:480,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Business Exploration Protocol Incubation Sink",children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",backgroundColor:"#450F44",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:l.manual_power?"Off":"On",selected:!l.manual_power,onClick:function(){return i("toggle_power")}}),children:"All you need to know about the B.E.P.I.S. and you! The B.E.P.I.S. performs hundreds of tests a second using electrical and financial resources to invent new products, or discover new technologies otherwise overlooked for being too risky or too niche to produce!"}),(0,o.createComponentVNode)(2,a.Section,{title:"Payer's Account",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"redo-alt",content:"Reset Account",onClick:function(){return i("account_reset")}}),children:["Console is currently being operated by ",l.account_owner?l.account_owner:"no one","."]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored Data and Statistics",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposited Credits",children:l.stored_cash}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Investment Variability",children:[l.accuracy_percentage,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Innovation Bonus",children:l.positive_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Risk Offset",color:"bad",children:l.negative_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposit Amount",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:d,unit:"Credits",minValue:100,maxValue:3e4,step:100,stepPixelSize:2,onChange:function(e,t){return i("amount",{amount:t})}})})]})}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"donate",content:"Deposit Credits",disabled:1===l.manual_power||1===l.silicon_check,onClick:function(){return i("deposit_cash")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Withdraw Credits",disabled:1===l.manual_power,onClick:function(){return i("withdraw_cash")}})]})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Market Data and Analysis",children:[(0,o.createComponentVNode)(2,a.Box,{children:["Average technology cost: ",l.mean_value]}),(0,o.createComponentVNode)(2,a.Box,{children:["Current chance of Success: Est. ",l.success_estimate,"%"]}),l.error_name&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Previous Failure Reason: Deposited cash value too low. Please insert more money for future success."}),(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"microscope",disabled:1===l.manual_power,onClick:function(){return i("begin_experiment")},content:"Begin Testing"})]})})]})]})})})}},20813:function(e,t,n){"use strict";t.__esModule=!0,t.BiogeneratorContent=t.Biogenerator=void 0;var o=n(39812),r=n(34380),a=n(2497),c=n(71494),i=n(74814),l=n(58083),d=n(85952);t.Biogenerator=function(e,t){var n=(0,c.useBackend)(t).data,r=n.beaker,a=n.processing;return(0,o.createComponentVNode)(2,d.Window,{width:550,height:380,resizable:!0,children:[!!a&&(0,o.createComponentVNode)(2,i.Dimmer,{fontSize:"32px",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"cog",spin:1})," Processing..."]}),(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:[!r&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No Container"}),!!r&&(0,o.createComponentVNode)(2,u)]})]})};var u=function(e,t){var n,r,d=(0,c.useBackend)(t),u=d.act,m=d.data,p=m.biomass,C=m.can_process,h=m.categories,N=void 0===h?[]:h,V=(0,c.useLocalState)(t,"searchText",""),b=V[0],f=V[1],g=(0,c.useLocalState)(t,"category",null==(n=N[0])?void 0:n.name),v=g[0],k=g[1],x=(0,a.createSearch)(b,(function(e){return e.name})),B=b.length>0&&N.flatMap((function(e){return e.items||[]})).filter(x).filter((function(e,t){return t<25}))||(null==(r=N.find((function(e){return e.name===v})))?void 0:r.items)||[];return(0,o.createComponentVNode)(2,i.Section,{title:(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:p>0?"good":"bad",children:[(0,l.formatMoney)(p)," Biomass"]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,i.Input,{autoFocus:!0,value:b,onInput:function(e,t){return f(t)},mx:1}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",onClick:function(){return u("detach")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"cog",content:"Activate",disabled:!C,onClick:function(){return u("activate")}})],4),children:(0,o.createComponentVNode)(2,i.Flex,{children:[0===b.length&&(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:N.map((function(e){var t;return(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:e.name===v,onClick:function(){return k(e.name)},children:[e.name," (",(null==(t=e.items)?void 0:t.length)||0,")"]},e.name)}))})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,basis:0,children:[0===B.length&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:0===b.length?"No items in this category.":"No results found."}),(0,o.createComponentVNode)(2,i.Table,{children:(0,o.createComponentVNode)(2,s,{biomass:p,items:B})})]})]})})};t.BiogeneratorContent=u;var s=function(e,t){var n=(0,c.useBackend)(t).act,a=(0,c.useLocalState)(t,"hoveredItem",{}),l=a[0],d=a[1],u=l&&l.cost||0;return e.items.map((function(n){var o=(0,c.useLocalState)(t,"amount"+n.name,1),r=o[0],a=o[1],i=l&&l.name!==n.name,d=e.biomass-u*l.amountV,onClick:function(){return d("select",{item:e.id})}})})]}),e.desc]},e.name)}))})]})]})]})};var l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.buying,u=l.ltsrbt_built,s=l.money;if(!d)return null;var m=l.delivery_methods.map((function(e){var t=l.delivery_method_description[e.name];return Object.assign({},e,{description:t})}));return(0,o.createComponentVNode)(2,a.Modal,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Flex,{mb:1,children:m.map((function(e){return"LTSRBT"!==e.name||u?(0,o.createComponentVNode)(2,a.Flex.Item,{mx:1,width:"250px",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"30px",children:e.name}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:e.description}),(0,o.createComponentVNode)(2,a.Button,{mt:2,content:(0,c.formatMoney)(e.price)+" cr",disabled:s=0||(r[n]=e[n]);return r}(t,["res","value"]),a=d(n),c=a[0],i=a[1];return(0,o.normalizeProps)((0,o.createVNode)(1,"canvas",null,"Canvas failed to render.",16,Object.assign({width:28*c||300,height:28*i||300},r,{onClick:function(t){return e.clickwrapper(t)}}),null,this.canvasRef))},r}(o.Component),d=function(e){var t=e.length;return[t,0!==t?e[0].length:0]};t.Canvas=function(e,t){var n=(0,r.useBackend)(t),i=n.act,u=n.data,s=d(u.grid),m=s[0],p=s[1];return(0,o.createComponentVNode)(2,c.Window,{width:Math.min(400,28*m*32+24),height:Math.min(400,28*p*32+24),resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,l,{value:u.grid,onCanvasClick:function(e,t){return i("paint",{x:e,y:t})}}),(0,o.createComponentVNode)(2,a.Box,{children:[!u.finalized&&(0,o.createComponentVNode)(2,a.Button.Confirm,{onClick:function(){return i("finalize")},content:"Finalize"}),u.name]})]})})})}},5758:function(e,t,n){"use strict";t.__esModule=!0,t.CargoCatalog=t.Cargo=void 0;var o=n(39812),r=n(64499),a=n(71494),c=n(74814),i=n(58083),l=n(85952);t.Cargo=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data),i=(0,a.useSharedState)(t,"tab","catalog"),m=i[0],C=i[1],h=r.requestonly,N=r.cart||[],V=r.requests||[];return(0,o.createComponentVNode)(2,l.Window,{width:780,height:750,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,c.Section,{fitted:!0,children:(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"list",selected:"catalog"===m,onClick:function(){return C("catalog")},children:"Catalog"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"envelope",textColor:"requests"!==m&&V.length>0&&"yellow",selected:"requests"===m,onClick:function(){return C("requests")},children:["Requests (",V.length,")"]}),!h&&(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"shopping-cart",textColor:"cart"!==m&&N.length>0&&"yellow",selected:"cart"===m,onClick:function(){return C("cart")},children:["Checkout (",N.length,")"]})]})}),"catalog"===m&&(0,o.createComponentVNode)(2,u),"requests"===m&&(0,o.createComponentVNode)(2,s),"cart"===m&&(0,o.createComponentVNode)(2,p)]})})};var d=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.away,u=l.docked,s=l.loan,m=l.loan_dispatched,p=l.location,C=l.message,h=l.points,N=l.requestonly;return(0,o.createComponentVNode)(2,c.Section,{title:"Cargo",buttons:(0,o.createComponentVNode)(2,c.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:h,format:function(e){return(0,i.formatMoney)(e)}})," credits"]}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Shuttle",children:u&&!N&&(0,o.createComponentVNode)(2,c.Button,{content:p,onClick:function(){return r("send")}})||p}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"CentCom Message",children:C}),!!s&&!N&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Loan",children:!m&&(0,o.createComponentVNode)(2,c.Button,{content:"Loan Shuttle",disabled:!(d&&u),onClick:function(){return r("loan")}})||(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Loaned to Centcom"})})]})})},u=function(e,t){var n,l=e.express,d=(0,a.useBackend)(t),u=d.act,s=d.data,p=s.self_paid,C=(0,r.toArray)(s.supplies),h=(0,a.useSharedState)(t,"supply",null==(n=C[0])?void 0:n.name),N=h[0],V=h[1],b=C.find((function(e){return e.name===N}));return(0,o.createComponentVNode)(2,c.Section,{title:"Catalog",buttons:!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,m),(0,o.createComponentVNode)(2,c.Button.Checkbox,{ml:2,content:"Buy Privately",checked:p,onClick:function(){return u("toggleprivate")}})],4),children:(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{ml:-1,mr:1,children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:C.map((function(e){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:e.name===N,onClick:function(){return V(e.name)},children:[e.name," (",e.packs.length,")"]},e.name)}))})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,c.Table,{children:null==b?void 0:b.packs.map((function(e){var t=[];return e.small_item&&t.push("Small"),e.access&&t.push("Restricted"),(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,color:"label",textAlign:"right",children:t.join(", ")}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,tooltip:e.desc,tooltipPosition:"left",onClick:function(){return u("add",{id:e.id})},children:[(0,i.formatMoney)(p&&!e.goody?Math.round(1.1*e.cost):e.cost)," cr"]})})]},e.name)}))})})]})})};t.CargoCatalog=u;var s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.requestonly,u=l.requests||[];return(0,o.createComponentVNode)(2,c.Section,{title:"Active Requests",buttons:!d&&(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Clear",color:"transparent",onClick:function(){return r("denyall")}}),children:[0===u.length&&(0,o.createComponentVNode)(2,c.Box,{color:"good",children:"No Requests"}),u.length>0&&(0,o.createComponentVNode)(2,c.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,color:"label",children:["#",e.id]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.object}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createVNode)(1,"b",null,e.orderer,0)}),(0,o.createComponentVNode)(2,c.Table.Cell,{width:"25%",children:(0,o.createVNode)(1,"i",null,e.reason,0)}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:[(0,i.formatMoney)(e.cost)," cr"]}),!d&&(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,c.Button,{icon:"check",color:"good",onClick:function(){return r("approve",{id:e.id})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"times",color:"bad",onClick:function(){return r("deny",{id:e.id})}})]})]},e.id)}))})]})},m=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.requestonly,u=l.cart||[],s=u.reduce((function(e,t){return e+t.cost}),0);return d?null:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{inline:!0,mx:1,children:[0===u.length&&"Cart is empty",1===u.length&&"1 item",u.length>=2&&u.length+" items"," ",s>0&&"("+(0,i.formatMoney)(s)+" cr)"]}),(0,o.createComponentVNode)(2,c.Button,{icon:"times",color:"transparent",content:"Clear",onClick:function(){return r("clear")}})],4)},p=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.requestonly,u=l.away,s=l.docked,p=l.location,C=l.cart||[];return(0,o.createComponentVNode)(2,c.Section,{title:"Current Cart",buttons:(0,o.createComponentVNode)(2,m),children:[0===C.length&&(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"Nothing in cart"}),C.length>0&&(0,o.createComponentVNode)(2,c.Table,{children:C.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,color:"label",children:["#",e.id]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.object}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:!!e.paid&&(0,o.createVNode)(1,"b",null,"[Paid Privately]",16)}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:[(0,i.formatMoney)(e.cost)," cr"]}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,c.Button,{icon:"minus",onClick:function(){return r("remove",{id:e.id})}})})]},e.id)}))}),C.length>0&&!d&&(0,o.createComponentVNode)(2,c.Box,{mt:2,children:1===u&&1===s&&(0,o.createComponentVNode)(2,c.Button,{color:"green",style:{"line-height":"28px",padding:"0 12px"},content:"Confirm the order",onClick:function(){return r("send")}})||(0,o.createComponentVNode)(2,c.Box,{opacity:.5,children:["Shuttle in ",p,"."]})})]})}},96291:function(e,t,n){"use strict";t.__esModule=!0,t.CargoBountyConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(58083),i=n(85952);t.CargoBountyConsole=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data.bountydata,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,i.Window,{width:750,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,l),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print Bounty List",onClick:function(){return c("Print")}}),children:(0,o.createComponentVNode)(2,a.Table,{border:!0,children:[(0,o.createComponentVNode)(2,a.Table.Row,{bold:!0,italic:!0,color:"label",fontSize:1.25,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Bounty Object"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Description"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Progress"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Value"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Claim"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{backgroundColor:1===e.priority?"rgba(252, 152, 3, 0.25)":"",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{italic:!0,textAlign:"center",p:1,children:e.description}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:[1===e.priority?(0,o.createComponentVNode)(2,a.Box,{children:"High Priority"}):"",e.completion_string]}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:e.reward_string}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:1===e.claimed?"check":"",content:1===e.claimed?"Claimed":"Claim",disabled:1===e.claimed,color:1===e.can_claim?"green":"red",onClick:function(){return c("ClaimBounty",{bounty:e.bounty_ref})}})})]},e.name)}))]})})})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.stored_cash);return(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i,format:function(e){return(0,c.formatMoney)(e)}})," credits"]})}},69941:function(e,t,n){"use strict";t.__esModule=!0,t.CargoExpress=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=n(5758),l=n(21451);t.CargoExpress=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data);return(0,o.createComponentVNode)(2,c.Window,{width:600,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.InterfaceLockNoticeBox,{accessText:"a QM-level ID card"}),!a.locked&&(0,o.createComponentVNode)(2,d)]})})};var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Cargo Express",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:Math.round(l.points)})," credits"]}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Landing Location",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Cargo Bay",selected:!l.usingBeacon,onClick:function(){return c("LZCargo")}}),(0,o.createComponentVNode)(2,a.Button,{selected:l.usingBeacon,disabled:!l.hasBeacon,onClick:function(){return c("LZBeacon")},children:[l.beaconzone," (",l.beaconName,")"]}),(0,o.createComponentVNode)(2,a.Button,{content:l.printMsg,disabled:!l.canBuyBeacon,onClick:function(){return c("printBeacon")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Notice",children:l.message})]})}),(0,o.createComponentVNode)(2,i.CargoCatalog,{express:!0})],4)}},62292:function(e,t,n){"use strict";t.__esModule=!0,t.CargoHoldTerminal=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.CargoHoldTerminal=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.points,u=l.pad,s=l.sending,m=l.status_report;return(0,o.createComponentVNode)(2,c.Window,{width:600,height:230,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Cargo Value",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:Math.round(d)})," credits"]})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cargo Pad",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Recalculate Value",disabled:!u,onClick:function(){return i("recalc")}}),(0,o.createComponentVNode)(2,a.Button,{icon:s?"times":"arrow-up",content:s?"Stop Sending":"Send Goods",selected:s,disabled:!u,onClick:function(){return i(s?"stop":"send")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:u?"good":"bad",children:u?"Online":"Not Found"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cargo Report",children:m})]})})]})})}},27173:function(e,t,n){"use strict";t.__esModule=!0,t.CellularEmporium=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.CellularEmporium=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.abilities;return(0,o.createComponentVNode)(2,c.Window,{width:900,height:480,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Genetic Points",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"Readapt",disabled:!l.can_readapt,onClick:function(){return i("readapt")}}),children:l.genetic_points_remaining})})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{className:"candystripe",label:e.name,buttons:(0,o.createFragment)([e.dna_cost," ",(0,o.createComponentVNode)(2,a.Button,{content:e.owned?"Evolved":"Evolve",selected:e.owned,onClick:function(){return i("evolve",{name:e.name})}})],0),children:[e.desc,(0,o.createComponentVNode)(2,a.Box,{color:"good",children:e.helptext})]},e.name)}))})})]})})}},26726:function(e,t,n){"use strict";t.__esModule=!0,t.CentcomPodLauncherContent=t.CentcomPodLauncher=void 0;var o=n(39812),r=(n(2497),n(71494)),a=n(74814),c=n(85952);t.CentcomPodLauncher=function(){return(0,o.createComponentVNode)(2,c.Window,{title:"Config/Launch Supply Pod",width:700,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:"To use this, simply spawn the atoms you want in one of the five Centcom Supplypod Bays. Items in the bay will then be launched inside your supplypod, one turf-full at a time! You can optionally use the following buttons to configure how the supplypod acts."}),(0,o.createComponentVNode)(2,a.Section,{title:"Centcom Pod Customization (To be used against Helen Weinstein)",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Supply Bay",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Bay #1",selected:1===i.bayNumber,onClick:function(){return c("bay1")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #2",selected:2===i.bayNumber,onClick:function(){return c("bay2")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #3",selected:3===i.bayNumber,onClick:function(){return c("bay3")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #4",selected:4===i.bayNumber,onClick:function(){return c("bay4")}}),(0,o.createComponentVNode)(2,a.Button,{content:"ERT Bay",selected:5===i.bayNumber,tooltip:"This bay is located on the western edge of CentCom. Its the\nglass room directly west of where ERT spawn, and south of the\nCentCom ferry. Useful for launching ERT/Deathsquads/etc. onto\nthe station via drop pods.",onClick:function(){return c("bay5")}})]}),!!i.effectReverse&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Reverse Drop",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Pick Dropoff Location",selected:i.picking_dropoff_turf,disabled:!i.effectReverse,tooltip:"[NOTE: ONLY WORKS WHEN REVERSE MODE IS ACTIVE]\nThis will allow you to select a dropoff turf. After\nselecting a turf, any pod in 'Reverse Mode' will drop off\nit's newly gotten cargo on this turf. Can be used to\ntransport things or people around the station in a neat,\nIC way. Try doing this with the 'Seethrough Pod' style\nenabled for extra fun!",onClick:function(){return c("pickDropoffTurf")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Clear Dropoff Location",disabled:!i.dropoff_turf,tooltip:"Clears the selected dropoff turf for reverse mode.",onClick:function(){return c("clearDropoffTurf")}}),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Reverse Drop-off Location:"),i.dropoff_turf?i.dropoff_turf:"None"],0)]}),!i.effectReverse&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Reverse Drop",children:(0,o.createVNode)(1,"p",null,"[Enable Reverse Mode for this feature]",16)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleport to",children:[(0,o.createComponentVNode)(2,a.Button,{content:i.bay,onClick:function(){return c("teleportCentcom")}}),(0,o.createComponentVNode)(2,a.Button,{content:i.oldArea?i.oldArea:"Where you were",disabled:!i.oldArea,onClick:function(){return c("teleportBack")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Item Mode",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Clone Items",selected:i.launchClone,tooltip:"Choosing this will create a duplicate of the item to be\nlaunched in Centcom, allowing you to send one type of item\nmultiple times. Either way, the atoms are forceMoved into\nthe supplypod after it lands (but before it opens).",onClick:function(){return c("launchClone")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Random Items",selected:i.launchRandomItem,tooltip:"Choosing this will pick a random item from the selected turf\ninstead of the entire turfs contents. Best combined with\nsingle/random turf.",onClick:function(){return c("launchRandomItem")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Launch style",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Ordered",selected:1===i.launchChoice,tooltip:'Instead of launching everything in the bay at once, this\nwill "scan" things (one turf-full at a time) in order, left\nto right and top to bottom. undoing will reset the "scanner"\nto the top-leftmost position.',onClick:function(){return c("launchOrdered")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Random Turf",selected:2===i.launchChoice,tooltip:"Instead of launching everything in the bay at once, this\nwill launch one random turf of items at a time.",onClick:function(){return c("launchRandomTurf")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Explosion",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Size",selected:1===i.explosionChoice,tooltip:"This will cause an explosion of whatever size you like\n(including flame range) to occur as soon as the supplypod\nlands. Dont worry, supply-pods are explosion-proof!",onClick:function(){return c("explosionCustom")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Adminbus",selected:2===i.explosionChoice,tooltip:"This will cause a maxcap explosion (dependent on server\nconfig) to occur as soon as the supplypod lands. Dont worry,\nsupply-pods are explosion-proof!",onClick:function(){return c("explosionBus")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Damage",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Damage",selected:1===i.damageChoice,tooltip:"Anyone caught under the pod when it lands will be dealt\nthis amount of brute damage. Sucks to be them!",onClick:function(){return c("damageCustom")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Gib",selected:2===i.damageChoice,tooltip:"This will attempt to gib any mob caught under the pod when\nit lands, as well as dealing a nice 5000 brute damage. Ya\nknow, just to be sure!",onClick:function(){return c("damageGib")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Effects",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Projectile Cloud",selected:i.effectShrapnel,tooltip:"This will create a cloud of shrapnel on landing,\nof any projectile you'd like!",onClick:function(){return c("effectShrapnel")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Stun",selected:i.effectStun,tooltip:"Anyone who is on the turf when the supplypod is launched\nwill be stunned until the supplypod lands. They cant get\naway that easy!",onClick:function(){return c("effectStun")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Delimb",selected:i.effectLimb,tooltip:"This will cause anyone caught under the pod to lose a limb,\nexcluding their head.",onClick:function(){return c("effectLimb")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Yeet Organs",selected:i.effectOrgans,tooltip:"This will cause anyone caught under the pod to lose all\ntheir limbs and organs in a spectacular fashion.",onClick:function(){return c("effectOrgans")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Movement",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Bluespace",selected:i.effectBluespace,tooltip:"Gives the supplypod an advanced Bluespace Recyling Device.\nAfter opening, the supplypod will be warped directly to the\nsurface of a nearby NT-designated trash planet (/r/ss13).",onClick:function(){return c("effectBluespace")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Stealth",selected:i.effectStealth,tooltip:'This hides the red target icon from appearing when you\nlaunch the supplypod. Combos well with the "Invisible"\nstyle. Sneak attack, go!',onClick:function(){return c("effectStealth")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Quiet",selected:i.effectQuiet,tooltip:"This will keep the supplypod from making any sounds, except\nfor those specifically set by admins in the Sound section.",onClick:function(){return c("effectQuiet")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Reverse Mode",selected:i.effectReverse,tooltip:"This pod will not send any items. Instead, after landing,\nthe supplypod will close (similar to a normal closet closing),\nand then launch back to the right centcom bay to drop off any\nnew contents.",onClick:function(){return c("effectReverse")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Missile Mode",selected:i.effectMissile,tooltip:"This pod will not send any items. Instead, it will immediately\ndelete after landing (Similar visually to setting openDelay\n& departDelay to 0, but this looks nicer). Useful if you just\nwanna fuck some shit up. Combos well with the Missile style.",onClick:function(){return c("effectMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Any Descent Angle",selected:i.effectCircle,tooltip:"This will make the supplypod come in from any angle. Im not\nsure why this feature exists, but here it is.",onClick:function(){return c("effectCircle")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Machine Gun Mode",selected:i.effectBurst,tooltip:"This will make each click launch 5 supplypods inaccuratly\naround the target turf (a 3x3 area). Combos well with the\nMissile Mode if you dont want shit lying everywhere after.",onClick:function(){return c("effectBurst")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Specific Target",selected:i.effectTarget,tooltip:"This will make the supplypod target a specific atom, instead\nof the mouses position. Smiting does this automatically!",onClick:function(){return c("effectTarget")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name/Desc",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Name/Desc",selected:i.effectName,tooltip:"Allows you to add a custom name and description.",onClick:function(){return c("effectName")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Alert Ghosts",selected:i.effectAnnounce,tooltip:"Alerts ghosts when a pod is launched. Useful if some dumb\nshit is aboutta come outta the pod.",onClick:function(){return c("effectAnnounce")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sound",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Falling Sound",selected:i.fallingSound,tooltip:"Choose a sound to play as the pod falls. Note that for this\nto work right you should know the exact length of the sound,\nin seconds.",onClick:function(){return c("fallSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Landing Sound",selected:i.landingSound,tooltip:"Choose a sound to play when the pod lands.",onClick:function(){return c("landingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Opening Sound",selected:i.openingSound,tooltip:"Choose a sound to play when the pod opens.",onClick:function(){return c("openingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Leaving Sound",selected:i.leavingSound,tooltip:"Choose a sound to play when the pod departs (whether that be\ndelection in the case of a bluespace pod, or leaving for\ncentcom for a reversing pod).",onClick:function(){return c("leavingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Admin Sound Volume",selected:i.soundVolume,tooltip:"Choose the volume for the sound to play at. Default values\nare between 1 and 100, but hey, do whatever. Im a tooltip,\nnot a cop.",onClick:function(){return c("soundVolume")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Timers",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Falling Duration",selected:4!==i.fallDuration,tooltip:"Set how long the animation for the pod falling lasts. Create\ndramatic, slow falling pods!",onClick:function(){return c("fallDuration")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Landing Time",selected:20!==i.landingDelay,tooltip:"Choose the amount of time it takes for the supplypod to hit\nthe station. By default this value is 0.5 seconds.",onClick:function(){return c("landingDelay")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Opening Time",selected:30!==i.openingDelay,tooltip:"Choose the amount of time it takes for the supplypod to open\nafter landing. Useful for giving whatevers inside the pod a\nnice dramatic entrance! By default this value is 3 seconds.",onClick:function(){return c("openingDelay")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Leaving Time",selected:30!==i.departureDelay,tooltip:"Choose the amount of time it takes for the supplypod to leave\nafter landing. By default this value is 3 seconds.",onClick:function(){return c("departureDelay")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Style",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.styleChoice,tooltip:"Same color scheme as the normal station-used supplypods",onClick:function(){return c("styleStandard")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.styleChoice,tooltip:"The same as the stations upgraded blue-and-white\nBluespace Supplypods",onClick:function(){return c("styleBluespace")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Syndicate",selected:4===i.styleChoice,tooltip:"A menacing black and blood-red. Great for sending meme-ops\nin style!",onClick:function(){return c("styleSyndie")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Deathsquad",selected:5===i.styleChoice,tooltip:"A menacing black and dark blue. Great for sending deathsquads\nin style!",onClick:function(){return c("styleBlue")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Cult Pod",selected:6===i.styleChoice,tooltip:"A blood and rune covered cult pod!",onClick:function(){return c("styleCult")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Missile",selected:7===i.styleChoice,tooltip:"A large missile. Combos well with a missile mode, so the\nmissile doesnt stick around after landing.",onClick:function(){return c("styleMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Syndicate Missile",selected:8===i.styleChoice,tooltip:"A large blood-red missile. Combos well with missile mode,\nso the missile doesnt stick around after landing.",onClick:function(){return c("styleSMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Supply Crate",selected:9===i.styleChoice,tooltip:"A large, dark-green military supply crate.",onClick:function(){return c("styleBox")}}),(0,o.createComponentVNode)(2,a.Button,{content:"HONK",selected:10===i.styleChoice,tooltip:"A colorful, clown inspired look.",onClick:function(){return c("styleHONK")}}),(0,o.createComponentVNode)(2,a.Button,{content:"~Fruit",selected:11===i.styleChoice,tooltip:"For when an orange is angry",onClick:function(){return c("styleFruit")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Invisible",selected:12===i.styleChoice,tooltip:'Makes the supplypod invisible! Useful for when you want to\nuse this feature with a gateway or something. Combos well\nwith the "Stealth" and "Quiet Landing" effects.',onClick:function(){return c("styleInvisible")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Show Contents (See Through Pod)",selected:14===i.styleChoice,tooltip:"By selecting this, the pod will instead look like whatevers\ninside it (as if it were the contents falling by themselves,\nwithout a pod). Useful for launching mechs at the station\nand standing tall as they soar in from the heavens.",onClick:function(){return c("styleSeeThrough")}})]})]})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:i.numObjects+" turfs in "+i.bay,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"undo Pod Bay",tooltip:"Manually undoes the possible things to launch in the\npod bay.",onClick:function(){return c("undo")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Enter Launch Mode",selected:i.giveLauncher,tooltip:"THE CODEX ASTARTES CALLS THIS MANEUVER: STEEL RAIN",onClick:function(){return c("giveLauncher")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Clear Selected Bay",color:"bad",tooltip:"This will delete all objs and mobs from the selected bay.",tooltipPosition:"left",onClick:function(){return c("clearBay")}})],4)})})})],4)};t.CentcomPodLauncherContent=i},8663:function(e,t,n){"use strict";t.__esModule=!0,t.ChemAcclimator=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ChemAcclimator=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:320,height:271,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Acclimator",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:[l.chem_temp," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l.target_temperature,unit:"K",width:"59px",minValue:0,maxValue:1e3,step:5,stepPixelSize:2,onChange:function(e,t){return i("set_target_temperature",{temperature:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Acceptable Temp. Difference",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l.allowed_temperature_difference,unit:"K",width:"59px",minValue:1,maxValue:l.target_temperature,stepPixelSize:2,onChange:function(e,t){i("set_allowed_temperature_difference",{temperature:t})}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:l.enabled?"On":"Off",selected:l.enabled,onClick:function(){return i("toggle_power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l.max_volume,unit:"u",width:"50px",minValue:l.reagent_volume,maxValue:200,step:2,stepPixelSize:2,onChange:function(e,t){return i("change_volume",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Operation",children:l.acclimate_state}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current State",children:l.emptying?"Emptying":"Filling"})]})})]})})}},76900:function(e,t,n){"use strict";t.__esModule=!0,t.ChemDebugSynthesizer=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ChemDebugSynthesizer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.amount,u=l.beakerCurrentVolume,s=l.beakerMaxVolume,m=l.isBeakerLoaded,p=l.beakerContents,C=void 0===p?[]:p;return(0,o.createComponentVNode)(2,c.Window,{width:390,height:330,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Recipient",buttons:m?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return i("ejectBeaker")}}),(0,o.createComponentVNode)(2,a.NumberInput,{value:d,unit:"u",minValue:1,maxValue:s,step:1,stepPixelSize:2,onChange:function(e,t){return i("amount",{amount:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Input",onClick:function(){return i("input")}})],4):(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Create Beaker",onClick:function(){return i("makecup")}}),children:m?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})," / "+s+" u"]}),C.length>0?(0,o.createComponentVNode)(2,a.LabeledList,{children:C.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[e.volume," u"]},e.name)}))}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Recipient Empty"})],0):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No Recipient"})})})})}},22223:function(e,t,n){"use strict";t.__esModule=!0,t.ChemDispenser=void 0;var o=n(39812),r=n(41860),a=n(2497),c=n(71494),i=n(74814),l=n(85952);t.ChemDispenser=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=!!u.recordingRecipe,m=Object.keys(u.recipes).map((function(e){return{name:e,contents:u.recipes[e]}})),p=u.beakerTransferAmounts||[],C=s&&Object.keys(u.recordingRecipe).map((function(e){return{id:e,name:(0,a.toTitleCase)(e.replace(/_/," ")),volume:u.recordingRecipe[e]}}))||u.beakerContents||[];return(0,o.createComponentVNode)(2,l.Window,{width:565,height:620,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:s&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:1,color:"red",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"circle",mr:1}),"Recording"]}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Energy",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:u.energy/u.maxEnergy,children:(0,r.toFixed)(u.energy)+" units"})})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Recipes",buttons:(0,o.createFragment)([!s&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:1,children:(0,o.createComponentVNode)(2,i.Button,{color:"transparent",content:"Clear recipes",onClick:function(){return d("clear_recipes")}})}),!s&&(0,o.createComponentVNode)(2,i.Button,{icon:"circle",disabled:!u.isBeakerLoaded,content:"Record",onClick:function(){return d("record_recipe")}}),s&&(0,o.createComponentVNode)(2,i.Button,{icon:"ban",color:"transparent",content:"Discard",onClick:function(){return d("cancel_recording")}}),s&&(0,o.createComponentVNode)(2,i.Button,{icon:"save",color:"green",content:"Save",onClick:function(){return d("save_recording")}})],0),children:(0,o.createComponentVNode)(2,i.Box,{mr:-1,children:[m.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"tint",width:"129.5px",lineHeight:1.75,content:e.name,onClick:function(){return d("dispense_recipe",{recipe:e.name})}},e.name)})),0===m.length&&(0,o.createComponentVNode)(2,i.Box,{color:"light-gray",children:"No recipes."})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Dispense",buttons:p.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"plus",selected:e===u.amount,content:e,onClick:function(){return d("amount",{target:e})}},e)})),children:(0,o.createComponentVNode)(2,i.Box,{mr:-1,children:u.chemicals.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"tint",width:"129.5px",lineHeight:1.75,content:e.title,onClick:function(){return d("dispense",{reagent:e.id})}},e.id)}))})}),(0,o.createComponentVNode)(2,i.Section,{title:"Beaker",buttons:p.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"minus",disabled:s,content:e,onClick:function(){return d("remove",{amount:e})}},e)})),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Beaker",buttons:!!u.isBeakerLoaded&&(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",disabled:!u.isBeakerLoaded,onClick:function(){return d("eject")}}),children:(s?"Virtual beaker":u.isBeakerLoaded&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.AnimatedNumber,{initial:0,value:u.beakerCurrentVolume}),(0,o.createTextVNode)("/"),u.beakerMaxVolume,(0,o.createTextVNode)(" units")],0))||"No beaker"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Contents",children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",children:u.isBeakerLoaded||s?0===C.length&&"Nothing":"N/A"}),C.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{color:"label",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{initial:0,value:e.volume})," ","units of ",e.name]},e.name)}))]})]})})]})})}},16610:function(e,t,n){"use strict";t.__esModule=!0,t.ChemFilter=t.ChemFilterPane=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=function(e,t){var n=(0,r.useBackend)(t).act,c=e.title,i=e.list,l=e.reagentName,d=e.onReagentInput,u=c.toLowerCase();return(0,o.createComponentVNode)(2,a.Section,{title:c,minHeight:"240px",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Input,{placeholder:"Reagent",width:"140px",onInput:function(e,t){return d(t)}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",onClick:function(){return n("add",{which:u,name:l})}})],4),children:i.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"minus",content:e,onClick:function(){return n("remove",{which:u,reagent:e})}})],4,e)}))})};t.ChemFilterPane=i;t.ChemFilter=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data),d=l.left,u=void 0===d?[]:d,s=l.right,m=void 0===s?[]:s,p=(0,r.useLocalState)(t,"leftName",""),C=p[0],h=p[1],N=(0,r.useLocalState)(t,"rightName",""),V=N[0],b=N[1];return(0,o.createComponentVNode)(2,c.Window,{width:500,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i,{title:"Left",list:u,reagentName:C,onReagentInput:function(e){return h(e)}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i,{title:"Right",list:m,reagentName:V,onReagentInput:function(e){return b(e)}})})]})})})}},96479:function(e,t,n){"use strict";t.__esModule=!0,t.ChemHeater=void 0;var o=n(39812),r=n(41860),a=n(71494),c=n(74814),i=n(85952),l=n(48229);t.ChemHeater=function(e,t){var n=(0,a.useBackend)(t),d=n.act,u=n.data,s=u.targetTemp,m=u.isActive,p=u.isBeakerLoaded,C=u.currentTemp,h=u.beakerCurrentVolume,N=u.beakerMaxVolume,V=u.beakerContents,b=void 0===V?[]:V;u.currentpH;return(0,o.createComponentVNode)(2,i.Window,{width:300,height:320,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{title:"Thermostat",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:m?"power-off":"times",selected:m,content:m?"On":"Off",onClick:function(){return d("power")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,c.NumberInput,{width:"65px",unit:"K",step:10,stepPixelSize:3,value:(0,r.round)(s),minValue:0,maxValue:1e3,onDrag:function(e,t){return d("temperature",{target:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Reading",children:(0,o.createComponentVNode)(2,c.Box,{width:"60px",textAlign:"right",children:p&&(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:C,format:function(e){return(0,r.toFixed)(e)+" K"}})||"\u2014"})})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Beaker",buttons:!!p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"label",mr:2,children:[h," / ",N," units,",u.currentpH," pH"]}),(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",onClick:function(){return d("eject")}})],4),children:(0,o.createComponentVNode)(2,l.BeakerContents,{beakerLoaded:p,beakerContents:b})})]})})}},34859:function(e,t,n){"use strict";t.__esModule=!0,t.ChemMaster=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ChemMaster=function(e,t){var n=(0,r.useBackend)(t).data.screen;return(0,o.createComponentVNode)(2,c.Window,{width:465,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:"analyze"===n&&(0,o.createComponentVNode)(2,m)||(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,u=i.screen,p=i.beakerContents,C=void 0===p?[]:p,h=i.bufferContents,N=void 0===h?[]:h,V=i.beakerCurrentVolume,b=i.beakerMaxVolume,f=i.isBeakerLoaded,g=i.isPillBottleLoaded,v=i.pillBottleCurrentAmount,k=i.pillBottleMaxAmount;return"analyze"===u?(0,o.createComponentVNode)(2,m):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",buttons:!!i.isBeakerLoaded&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:V,initial:0})," / "+b+" units"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("eject")}})],4),children:[!f&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"No beaker loaded."}),!!f&&0===C.length&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"Beaker is empty."}),(0,o.createComponentVNode)(2,l,{children:C.map((function(e){return(0,o.createComponentVNode)(2,d,{chemical:e,transferTo:"buffer"},e.id)}))})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Buffer",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:1,children:"Mode:"}),(0,o.createComponentVNode)(2,a.Button,{color:i.mode?"good":"bad",icon:i.mode?"exchange-alt":"times",content:i.mode?"Transfer":"Destroy",onClick:function(){return c("toggleMode")}})],4),children:[0===N.length&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"Buffer is empty."}),(0,o.createComponentVNode)(2,l,{children:N.map((function(e){return(0,o.createComponentVNode)(2,d,{chemical:e,transferTo:"beaker"},e.id)}))})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Packaging",children:(0,o.createComponentVNode)(2,s)}),!!g&&(0,o.createComponentVNode)(2,a.Section,{title:"Pill Bottle",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[v," / ",k," pills"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("ejectPillBottle")}})],4)})],0)},l=a.Table,d=function(e,t){var n=(0,r.useBackend)(t).act,c=e.chemical,i=e.transferTo;return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.volume,initial:0})," units of "+c.name]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,a.Button,{content:"1",onClick:function(){return n("transfer",{id:c.id,amount:1,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"5",onClick:function(){return n("transfer",{id:c.id,amount:5,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"10",onClick:function(){return n("transfer",{id:c.id,amount:10,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"All",onClick:function(){return n("transfer",{id:c.id,amount:1e3,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"ellipsis-h",title:"Custom amount",onClick:function(){return n("transfer",{id:c.id,amount:-1,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"question",title:"Analyze",onClick:function(){return n("analyze",{id:c.id})}})]})]},c.id)},u=function(e){var t=e.label,n=e.amountUnit,r=e.amount,c=e.onChangeAmount,i=e.onCreate,l=e.sideNote;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:t,children:[(0,o.createComponentVNode)(2,a.NumberInput,{width:"84px",unit:n,step:1,stepPixelSize:15,value:r,minValue:1,maxValue:10,onChange:c}),(0,o.createComponentVNode)(2,a.Button,{ml:1,content:"Create",onClick:i}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,ml:1,color:"label",children:l})]})},s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=(0,r.useSharedState)(t,"pillAmount",1),d=l[0],s=l[1],m=(0,r.useSharedState)(t,"patchAmount",1),p=m[0],C=m[1],h=(0,r.useSharedState)(t,"bottleAmount",1),N=h[0],V=h[1],b=(0,r.useSharedState)(t,"packAmount",1),f=b[0],g=b[1],v=(0,r.useSharedState)(t,"setstimpakAmount",1),k=v[0],x=v[1],B=(0,r.useSharedState)(t,"setsuperstimpakAmount",1),_=B[0],w=B[1],L=(0,r.useSharedState)(t,"setPowderbagAmount",1),y=L[0],S=L[1],I=(0,r.useSharedState)(t,"setprimitiveBottleAmount",1),T=I[0],A=I[1],P=i.condi,R=i.advanced,M=i.primitive,F=i.chosenPillStyle,D=i.pillStyles,j=void 0===D?[]:D;return(0,o.createComponentVNode)(2,a.LabeledList,{children:[!P&&!M&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill type",children:j.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:"30px",selected:e.id===F,textAlign:"center",color:"transparent",onClick:function(){return c("pillStyle",{id:e.id})},children:(0,o.createComponentVNode)(2,a.Box,{mx:-1,className:e.className})},e.id)}))}),!P&&!M&&(0,o.createComponentVNode)(2,u,{label:"Pills",amount:d,amountUnit:"pills",sideNote:"max 50u",onChangeAmount:function(e,t){return s(t)},onCreate:function(){return c("create",{type:"pill",amount:d,volume:"auto"})}}),!P&&!!R&&!M&&(0,o.createComponentVNode)(2,u,{label:"Patches",amount:p,amountUnit:"patches",sideNote:"max 40u",onChangeAmount:function(e,t){return C(t)},onCreate:function(){return c("create",{type:"patch",amount:p,volume:"auto"})}}),!P&&!M&&(0,o.createComponentVNode)(2,u,{label:"Bottles",amount:N,amountUnit:"bottles",sideNote:"max 30u",onChangeAmount:function(e,t){return V(t)},onCreate:function(){return c("create",{type:"bottle",amount:N,volume:"auto"})}}),!P&&!M&&(0,o.createComponentVNode)(2,u,{label:"Stimpaks",amount:k,amountUnit:"stimpaks",sideNote:"max 10u",onChangeAmount:function(e,t){return x(t)},onCreate:function(){return c("create",{type:"stimPak",amount:k,volume:"auto"})}}),!P&&!!R&&!M&&(0,o.createComponentVNode)(2,u,{label:"Super Stimpaks",amount:_,amountUnit:"super stimpaks",sideNote:"max 20u",onChangeAmount:function(e,t){return w(t)},onCreate:function(){return c("create",{type:"superStimpak",amount:_,volume:"auto"})}}),!!P&&(0,o.createComponentVNode)(2,u,{label:"Packs",amount:f,amountUnit:"packs",sideNote:"max 10u",onChangeAmount:function(e,t){return g(t)},onCreate:function(){return c("create",{type:"condimentPack",amount:f,volume:"auto"})}}),!!P&&(0,o.createComponentVNode)(2,u,{label:"Bottles",amount:N,amountUnit:"bottles",sideNote:"max 50u",onChangeAmount:function(e,t){return V(t)},onCreate:function(){return c("create",{type:"condimentBottle",amount:N,volume:"auto"})}}),!!M&&(0,o.createComponentVNode)(2,u,{label:"Powder Bag",amount:p,amountUnit:"powderbags",sideNote:"max 40u",onChangeAmount:function(e,t){return S(t)},onCreate:function(){return c("create",{type:"bag",amount:y,volume:"auto"})}}),!!M&&(0,o.createComponentVNode)(2,u,{label:"Primitive Bottles",amount:N,amountUnit:"bottles",sideNote:"max 60u",onChangeAmount:function(e,t){return A(t)},onCreate:function(){return c("create",{type:"bottle_primitive",amount:T,volume:"auto"})}})]})},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=e.fermianalyze,d=i.analyzeVars;return(0,o.createComponentVNode)(2,a.Section,{title:"Analysis Results",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return c("goScreen",{screen:"home"})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",children:d.state}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Color",children:[(0,o.createComponentVNode)(2,a.ColorBox,{color:d.color,mr:1}),d.color]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:d.description}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Metabolization Rate",children:[d.metaRate," u/minute"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Overdose Threshold",children:d.overD}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Addiction Threshold",children:d.addicD}),!!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Purity",children:d.purityF}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Inverse Ratio",children:d.inverseRatioF}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Purity E",children:d.purityE}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Lower Optimal Temperature",children:d.minTemp}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Upper Optimal Temperature",children:d.maxTemp}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Explosive Temperature",children:d.eTemp}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"pH Peak",children:d.pHpeak})],4)]})})}},56320:function(e,t,n){"use strict";t.__esModule=!0,t.ChemPress=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ChemPress=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.current_volume,u=l.product_name,s=l.pill_style,m=l.pill_styles,p=void 0===m?[]:m,C=l.product,h=l.min_volume,N=l.max_volume;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:227,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Product",children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Pills",checked:"pill"===C,onClick:function(){return i("change_product",{product:"pill"})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Patches",checked:"patch"===C,onClick:function(){return i("change_product",{product:"patch"})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Bottles",checked:"bottle"===C,onClick:function(){return i("change_product",{product:"bottle"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:d,unit:"u",width:"43px",minValue:h,maxValue:N,step:1,stepPixelSize:2,onChange:function(e,t){return i("change_current_volume",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:[(0,o.createComponentVNode)(2,a.Input,{value:u,placeholder:u,onChange:function(e,t){return i("change_product_name",{name:t})}}),(0,o.createComponentVNode)(2,a.Box,{as:"span",children:C})]}),"pill"===C&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Style",children:p.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:"30px",selected:e.id===s,textAlign:"center",color:"transparent",onClick:function(){return i("change_pill_style",{id:e.id})},children:(0,o.createComponentVNode)(2,a.Box,{mx:-1,className:e.class_name})},e.id)}))})]})})})})}},52592:function(e,t,n){"use strict";t.__esModule=!0,t.ChemReactionChamber=void 0;var o=n(39812),r=n(64499),a=n(34380),c=n(71494),i=n(74814),l=n(85952);t.ChemReactionChamber=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=(0,c.useLocalState)(t,"reagentName",""),m=s[0],p=s[1],C=(0,c.useLocalState)(t,"reagentQuantity",1),h=C[0],N=C[1],V=u.emptying,b=u.reagents||[];return(0,o.createComponentVNode)(2,l.Window,{width:250,height:225,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Reagents",buttons:(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,color:V?"bad":"good",children:V?"Emptying":"Filling"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createVNode)(1,"tr","LabledList__row",[(0,o.createVNode)(1,"td","LabeledList__cell",(0,o.createComponentVNode)(2,i.Input,{fluid:!0,value:"",placeholder:"Reagent Name",onInput:function(e,t){return p(t)}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td",(0,a.classes)(["LabeledList__buttons","LabeledList__cell"]),[(0,o.createComponentVNode)(2,i.NumberInput,{value:h,minValue:1,maxValue:100,step:1,stepPixelSize:3,width:"39px",onDrag:function(e,t){return N(t)}}),(0,o.createComponentVNode)(2,i.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return d("add",{chem:m,amount:h})}})],4)],4),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:t,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"minus",color:"bad",onClick:function(){return d("remove",{chem:t})}}),children:e},t)}))(b)]})})})})}},68502:function(e,t,n){"use strict";t.__esModule=!0,t.ChemSplitter=void 0;var o=n(39812),r=n(41860),a=n(71494),c=n(74814),i=n(85952);t.ChemSplitter=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.straight,s=d.side,m=d.max_transfer;return(0,o.createComponentVNode)(2,i.Window,{width:220,height:105,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Straight",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:u,unit:"u",width:"55px",minValue:1,maxValue:m,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return l("set_amount",{target:"straight",amount:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Side",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:s,unit:"u",width:"55px",minValue:1,maxValue:m,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return l("set_amount",{target:"side",amount:t})}})})]})})})})}},77508:function(e,t,n){"use strict";t.__esModule=!0,t.ChemSynthesizer=void 0;var o=n(39812),r=n(41860),a=n(71494),c=n(74814),i=n(85952);t.ChemSynthesizer=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.amount,s=d.current_reagent,m=d.chemicals,p=void 0===m?[]:m,C=d.possible_amounts,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,i.Window,{width:300,height:375,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Box,{children:h.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"plus",content:(0,r.toFixed)(e,0),selected:e===u,onClick:function(){return l("amount",{target:e})}},(0,r.toFixed)(e,0))}))}),(0,o.createComponentVNode)(2,c.Box,{mt:1,children:p.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"tint",content:e.title,width:"129px",selected:e.id===s,onClick:function(){return l("select",{reagent:e.id})}},e.id)}))})]})})})}},30733:function(e,t,n){"use strict";t.__esModule=!0,t.CivCargoHoldTerminal=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.CivCargoHoldTerminal=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.pad,s=d.sending,m=d.status_report,p=d.id_inserted,C=d.id_bounty_info;d.id_bounty_value,d.id_bounty_num;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,width:500,height:375,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{color:p?"blue":"default",children:p?"Welcome valued employee.":"To begin, insert your ID into the console."}),(0,o.createComponentVNode)(2,a.Section,{title:"Cargo Pad",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:u?"good":"bad",children:u?"Online":"Not Found"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cargo Report",children:m})]})}),(0,o.createComponentVNode)(2,i)]}),(0,o.createComponentVNode)(2,a.Flex.Item,{m:1,children:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"sync",content:"Check Contents",disabled:!u||!p,onClick:function(){return l("recalc")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:s?"times":"arrow-up",content:s?"Stop Sending":"Send Goods",selected:s,disabled:!u||!p,onClick:function(){return l(s?"stop":"send")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:C?"recycle":"pen",color:C?"green":"default",content:C?"Replace Bounty":"New Bounty",disabled:!p,onClick:function(){return l("bounty")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Eject",disabled:!p,onClick:function(){return l("eject")}})],4)})]})})})};var i=function(e,t){var n=(0,r.useBackend)(t).data,c=n.id_bounty_info,i=n.id_bounty_value,l=n.id_bounty_num;return(0,o.createComponentVNode)(2,a.Section,{title:"Bounty Info",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:c||"N/A, please add a new bounty."}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Quantity",children:c?l:"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Value",children:c?i:"N/A"})]})})}},14319:function(e,t,n){"use strict";t.__esModule=!0,t.ClockworkSlab=void 0;for(var o=n(39812),r=n(71494),a=n(64499),c=n(74814),i=n(85952),l="",d=0;d=w,tooltip:e.tip,tooltipPosition:"left",onClick:function(){return d("recite",{script:e.type})},children:"Recite "+e.required})}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,disabled:!e.quickbind,onClick:function(){return d("bind",{script:e.type})},children:["content=",e.bound?"Unbind "+e.bound:"Quickbind"]})})]},e.name)}))})]})]})})})}},28408:function(e,t,n){"use strict";t.__esModule=!0,t.CodexGigas=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=["Dark","Hellish","Fallen","Fiery","Sinful","Blood","Fluffy"],l=["Lord","Prelate","Count","Viscount","Vizier","Elder","Adept"],d=["hal","ve","odr","neit","ci","quon","mya","folth","wren","geyr","hil","niet","twou","phi","coa"],u=["the Red","the Soulless","the Master","the Lord of all things","Jr."];t.CodexGigas=function(e,t){var n=(0,r.useBackend)(t),s=n.act,m=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:450,height:450,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[m.name,(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prefix",children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:1!==m.currentSection,onClick:function(){return s(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Title",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:m.currentSection>2,onClick:function(){return s(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:m.currentSection>4,onClick:function(){return s(e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suffix",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:4!==m.currentSection,onClick:function(){return s(" "+e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Submit",children:(0,o.createComponentVNode)(2,a.Button,{content:"Search",disabled:m.currentSection<4,onClick:function(){return s("search")}})})]})]})})})}},67649:function(e,t,n){"use strict";t.__esModule=!0,t.ColormateMatrix=t.ColormateNoMatrix=t.Colormate=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Colormate=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.matrixactive,m=u.temp,p=u.item||[];return(0,o.createComponentVNode)(2,c.Window,{width:"980",height:"720",resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{overflow:"auto",children:[m?(0,o.createComponentVNode)(2,a.NoticeBox,{children:m}):null,Object.keys(p).length?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Flex,{fill:!0,children:[(0,o.createComponentVNode)(2,a.Section,{width:"50%",height:"20%",children:[(0,o.createVNode)(1,"center",null,"Item:",16),(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/jpeg;base64, "+p.sprite,width:"100%",height:"100%",style:{"-ms-interpolation-mode":"nearest-neighbor"}})]}),(0,o.createComponentVNode)(2,a.Section,{width:"50%",height:"20%",children:[(0,o.createVNode)(1,"center",null,"Preview:",16),(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/jpeg;base64, "+p.preview,width:"100%",height:"100%",style:{"-ms-interpolation-mode":"nearest-neighbor"}})]})]}),(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Tabs,{fluid:!0,children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:!s,onClick:function(){return d("switch_modes",{mode:"0"})},children:"Regular coloring"},"0"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:s,onClick:function(){return d("switch_modes",{mode:"1"})},children:"Matrixed coloring"},"1")]}),s?(0,o.createFragment)([(0,o.createVNode)(1,"center",null,[(0,o.createTextVNode)("Coloring: "),p.name],0),(0,o.createComponentVNode)(2,l)],4):(0,o.createFragment)([(0,o.createVNode)(1,"center",null,[(0,o.createTextVNode)("Coloring: "),p.name],0),(0,o.createComponentVNode)(2,i)],4)]})],4):(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createVNode)(1,"center",null,"No item inserted.",16)})]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act;n.data;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{grow:1,fill:!0,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"33%",children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Paint",icon:"fill",onClick:function(){return c("paint")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Clear",icon:"eraser",onClick:function(){return c("clear")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Eject",icon:"eject",onClick:function(){return c("drop")}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"66%",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,height:"100%",content:"Select new color",icon:"paint-brush",onClick:function(){return c("choose_color")}})})]})})};t.ColormateNoMatrix=i;var l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.matrixcolors||[];return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"33%",children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Paint",icon:"fill",onClick:function(){return c("matrix_paint")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Clear",icon:"eraser",onClick:function(){return c("clear")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Eject",icon:"eject",onClick:function(){return c("drop")}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:["RR: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.rr,onChange:function(e,t){return c("set_matrix_color",{color:1,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["GR: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.gr,onChange:function(e,t){return c("set_matrix_color",{color:4,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["BR: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.br,onChange:function(e,t){return c("set_matrix_color",{color:7,value:t})}})]})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:["RG: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.rg,onChange:function(e,t){return c("set_matrix_color",{color:2,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["GG: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.gg,onChange:function(e,t){return c("set_matrix_color",{color:5,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["BG: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.bg,onChange:function(e,t){return c("set_matrix_color",{color:8,value:t})}})]})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:["RB: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.rb,onChange:function(e,t){return c("set_matrix_color",{color:3,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["GB: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.gb,onChange:function(e,t){return c("set_matrix_color",{color:6,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["BB: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.bb,onChange:function(e,t){return c("set_matrix_color",{color:9,value:t})}})]})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:["CR: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.cr,onChange:function(e,t){return c("set_matrix_color",{color:10,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["CG: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.cg,onChange:function(e,t){return c("set_matrix_color",{color:11,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["CB: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.cb,onChange:function(e,t){return c("set_matrix_color",{color:12,value:t})}})]})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"33%",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"question-circle",color:"blue"})," RG means red will become this much green.",(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Icon,{name:"question-circle",color:"blue"})," CR means that red will have this much constrast applied to it."]})]})})};t.ColormateMatrix=l},2174:function(e,t,n){"use strict";t.__esModule=!0,t.ComputerFabricator=void 0;var o=n(39812),r=(n(2497),n(71494)),a=n(74814),c=n(85952);t.ComputerFabricator=function(e,t){var n=(0,r.useBackend)(t),s=n.act,m=n.data;return(0,o.createComponentVNode)(2,c.Window,{title:"Personal Computer Vendor",width:500,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{italic:!0,fontSize:"20px",children:"Your perfect device, only three steps away..."}),0!==m.state&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mb:1,icon:"circle",content:"Clear Order",onClick:function(){return s("clean_order")}}),0===m.state&&(0,o.createComponentVNode)(2,i),1===m.state&&(0,o.createComponentVNode)(2,l),2===m.state&&(0,o.createComponentVNode)(2,d),3===m.state&&(0,o.createComponentVNode)(2,u)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act;n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Step 1",minHeight:"306px",children:[(0,o.createComponentVNode)(2,a.Box,{mt:5,bold:!0,textAlign:"center",fontSize:"40px",children:"Choose your Device"}),(0,o.createComponentVNode)(2,a.Box,{mt:3,children:(0,o.createComponentVNode)(2,a.Grid,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"laptop",content:"Laptop",textAlign:"center",fontSize:"30px",lineHeight:2,onClick:function(){return c("pick_device",{pick:"1"})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"tablet-alt",content:"Tablet",textAlign:"center",fontSize:"30px",lineHeight:2,onClick:function(){return c("pick_device",{pick:"2"})}})})]})})]})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Step 2: Customize your device",minHeight:"282px",buttons:(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"good",children:[i.totalprice," cr"]}),children:[(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Battery:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to operate without external utility power\nsource. Advanced batteries increase battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_battery,onClick:function(){return c("hw_battery",{battery:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_battery,onClick:function(){return c("hw_battery",{battery:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_battery,onClick:function(){return c("hw_battery",{battery:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Hard Drive:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Stores file on your device. Advanced drives can store more\nfiles, but use more power, shortening battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_disk,onClick:function(){return c("hw_disk",{disk:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_disk,onClick:function(){return c("hw_disk",{disk:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_disk,onClick:function(){return c("hw_disk",{disk:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Network Card:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to wirelessly connect to stationwide NTNet\nnetwork. Basic cards are limited to on-station use, while\nadvanced cards can operate anywhere near the station, which\nincludes asteroid outposts",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_netcard,onClick:function(){return c("hw_netcard",{netcard:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_netcard,onClick:function(){return c("hw_netcard",{netcard:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_netcard,onClick:function(){return c("hw_netcard",{netcard:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Nano Printer:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A device that allows for various paperwork manipulations,\nsuch as, scanning of documents or printing new ones.\nThis device was certified EcoFriendlyPlus and is capable of\nrecycling existing paper for printing purposes.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_nanoprint,onClick:function(){return c("hw_nanoprint",{print:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_nanoprint,onClick:function(){return c("hw_nanoprint",{print:"1"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Secondary Card Reader:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Adds a secondary RFID card reader, for manipulating or\nreading from a second standard RFID card.\nPlease note that a primary card reader is necessary to\nallow the device to read your identification, but one\nis included in the base price.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_card,onClick:function(){return c("hw_card",{card:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_card,onClick:function(){return c("hw_card",{card:"1"})}})})]}),2!==i.devtype&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Processor Unit:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A component critical for your device's functionality.\nIt allows you to run programs from your hard drive.\nAdvanced CPUs use more power, but allow you to run\nmore programs on background at once.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_cpu,onClick:function(){return c("hw_cpu",{cpu:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_cpu,onClick:function(){return c("hw_cpu",{cpu:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Tesla Relay:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"An advanced wireless power relay that allows your device\nto connect to nearby area power controller to provide\nalternative power source. This component is currently\nunavailable on tablet computers due to size restrictions.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_tesla,onClick:function(){return c("hw_tesla",{tesla:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_tesla,onClick:function(){return c("hw_tesla",{tesla:"1"})}})})]})],4)]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mt:3,content:"Confirm Order",color:"good",textAlign:"center",fontSize:"18px",lineHeight:2,onClick:function(){return c("confirm_order")}})]})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Step 3: Payment",minHeight:"282px",children:[(0,o.createComponentVNode)(2,a.Box,{italic:!0,textAlign:"center",fontSize:"20px",children:"Your device is ready for fabrication..."}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:2,textAlign:"center",fontSize:"16px",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:"Please insert the required"})," ",(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:[i.totalprice," cr"]})]}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:1,textAlign:"center",fontSize:"18px",children:"Current:"}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:.5,textAlign:"center",fontSize:"18px",color:i.credits>=i.totalprice?"good":"bad",children:[i.credits," cr"]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Purchase",disabled:i.credits=10&&e<20?c.COLORS.department.security:e>=20&&e<30?c.COLORS.department.medbay:e>=30&&e<40?c.COLORS.department.science:e>=40&&e<50?c.COLORS.department.engineering:e>=50&&e<60?c.COLORS.department.cargo:e>=200&&e<230?c.COLORS.department.centcom:c.COLORS.department.other},u=function(e){var t=e.type,n=e.value;return(0,o.createComponentVNode)(2,a.Box,{inline:!0,width:2,color:c.COLORS.damageType[t],textAlign:"center",children:n})};t.CrewConsole=function(){return(0,o.createComponentVNode)(2,i.Window,{title:"Crew Monitor",width:800,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{minHeight:"540px",children:(0,o.createComponentVNode)(2,s)})})})};var s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,s=i.sensors||[];return(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,textAlign:"center",children:"Vitals"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Position"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,children:"Tracking"})]}),s.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:(C=e.ijob,C%10==0),color:d(e.ijob),children:[e.name," (",e.assignment,")"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,a.ColorBox,{color:(t=e.oxydam,n=e.toxdam,r=e.burndam,s=e.brutedam,m=t+n+r+s,p=Math.min(Math.max(Math.ceil(m/25),0),5),l[p])})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:null!==e.oxydam?(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:[(0,o.createComponentVNode)(2,u,{type:"oxy",value:e.oxydam}),"/",(0,o.createComponentVNode)(2,u,{type:"toxin",value:e.toxdam}),"/",(0,o.createComponentVNode)(2,u,{type:"burn",value:e.burndam}),"/",(0,o.createComponentVNode)(2,u,{type:"brute",value:e.brutedam})]}):e.life_status?"Alive":"Dead"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:null!==e.pos_x?e.area:"N/A"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{content:"Track",disabled:!e.can_track,onClick:function(){return c("select_person",{name:e.name})}})})]},e.name);var t,n,r,s,m,p,C}))]})}},99798:function(e,t,n){"use strict";t.__esModule=!0,t.Cryo=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(48229),i=n(85952),l=[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}];t.Cryo=function(){return(0,o.createComponentVNode)(2,i.Window,{width:400,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,d)})})};var d=function(e,t){var n=(0,r.useBackend)(t),i=n.act,d=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",children:d.occupant.name||"No Occupant"}),!!d.hasOccupant&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:d.occupant.statstate,children:d.occupant.stat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",color:d.occupant.temperaturestatus,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.occupant.bodyTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.occupant.health/d.occupant.maxHealth,color:d.occupant.health>0?"good":"average",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.occupant.health})})}),l.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.occupant[e.type]/100,children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.occupant[e.type]})})},e.id)}))],0)]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cell",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:d.isOperating?"power-off":"times",disabled:d.isOpen,onClick:function(){return i("power")},color:d.isOperating&&"green",children:d.isOperating?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.cellTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:[(0,o.createComponentVNode)(2,a.Button,{icon:d.isOpen?"unlock":"lock",onClick:function(){return i("door")},content:d.isOpen?"Open":"Closed"}),(0,o.createComponentVNode)(2,a.Button,{icon:d.autoEject?"sign-out-alt":"sign-in-alt",onClick:function(){return i("autoeject")},content:d.autoEject?"Auto":"Manual"})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!d.isBeakerLoaded,onClick:function(){return i("ejectbeaker")},content:"Eject"}),children:(0,o.createComponentVNode)(2,c.BeakerContents,{beakerLoaded:d.isBeakerLoaded,beakerContents:d.beakerContents})})],4)}},17785:function(e,t,n){"use strict";t.__esModule=!0,t.DecalPainter=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.DecalPainter=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.decal_list||[],u=l.color_list||[],s=l.dir_list||[];return(0,o.createComponentVNode)(2,c.Window,{width:500,height:400,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Decal Type",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name,selected:e.decal===l.decal_style,onClick:function(){return i("select decal",{decals:e.decal})}},e.decal)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Color",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:"red"===e.colors?"Red":"white"===e.colors?"White":"Yellow",selected:e.colors===l.decal_color,onClick:function(){return i("select color",{colors:e.colors})}},e.colors)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Direction",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:1===e.dirs?"North":2===e.dirs?"South":4===e.dirs?"East":"West",selected:e.dirs===l.decal_direction,onClick:function(){return i("selected direction",{dirs:e.dirs})}},e.dirs)}))})]})})}},95877:function(e,t,n){"use strict";t.__esModule=!0,t.DisposalUnit=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.DisposalUnit=function(e,t){var n,i,l=(0,r.useBackend)(t),d=l.act,u=l.data;return u.full_pressure?(n="good",i="Ready"):u.panel_open?(n="bad",i="Power Disabled"):u.pressure_charging?(n="average",i="Pressurizing"):(n="bad",i="Off"),(0,o.createComponentVNode)(2,c.Window,{width:300,height:180,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:n,children:i}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.per,color:"good"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Handle",children:(0,o.createComponentVNode)(2,a.Button,{icon:u.flush?"toggle-on":"toggle-off",disabled:u.isai||u.panel_open,content:u.flush?"Disengage":"Engage",onClick:function(){return d(u.flush?"handle-0":"handle-1")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Eject",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sign-out-alt",disabled:u.isai,content:"Eject Contents",onClick:function(){return d("eject")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",disabled:u.panel_open,selected:u.pressure_charging,onClick:function(){return d(u.pressure_charging?"pump-0":"pump-1")}})})]})})})})}},43928:function(e,t,n){"use strict";t.__esModule=!0,t.DnaConsoleCommands=t.DnaConsole=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(34380),i=n(2497),l=n(5908),d=n(71494),u=n(74814),s=n(85952);var m=["A","T","C","G"],p={A:"green",T:"green",G:"blue",C:"blue",X:"grey"},C="storage",h="sequencer",N="enzymes",V="console",b="disk",f="injector",g="mutations",v="chromosomes",k="mutations",x="diskenzymes",B={1:"good",2:"bad",4:"average"},_=function(e,t){return e.Alias===t.Alias&&e.AppliedChromo===t.AppliedChromo};t.DnaConsole=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=(n.act,r.isPulsingRads),c=r.radPulseSeconds,i=r.view.consoleMode;return(0,o.createComponentVNode)(2,s.Window,{title:"DNA Console",width:539,height:710,resizable:!0,children:[!!a&&(0,o.createComponentVNode)(2,u.Dimmer,{fontSize:"14px",textAlign:"center",children:[(0,o.createComponentVNode)(2,u.Icon,{mr:1,name:"spinner",spin:!0}),"Radiation pulse in progress...",(0,o.createComponentVNode)(2,u.Box,{mt:1}),c,"s"]}),(0,o.createComponentVNode)(2,s.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,w),(0,o.createComponentVNode)(2,I),i===C&&(0,o.createComponentVNode)(2,A),i===h&&(0,o.createComponentVNode)(2,D),i===N&&(0,o.createComponentVNode)(2,O)]})]})};var w=function(e,t){return(0,o.createComponentVNode)(2,u.Section,{title:"DNA Scanner",buttons:(0,o.createComponentVNode)(2,L),children:(0,o.createComponentVNode)(2,S)})},L=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.hasDelayedAction,i=r.isPulsingRads,l=r.isScannerConnected,s=r.isScrambleReady,m=r.isViableSubject,p=r.scannerLocked,C=r.scannerOpen,h=r.scrambleSeconds;return l?(0,o.createFragment)([!!c&&(0,o.createComponentVNode)(2,u.Button,{content:"Cancel Delayed Action",onClick:function(){return a("cancel_delay")}}),!!m&&(0,o.createComponentVNode)(2,u.Button,{disabled:!s||i,onClick:function(){return a("scramble_dna")},children:["Scramble DNA",!s&&" ("+h+"s)"]}),(0,o.createComponentVNode)(2,u.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,u.Button,{icon:p?"lock":"lock-open",color:p&&"bad",disabled:C,content:p?"Locked":"Unlocked",onClick:function(){return a("toggle_lock")}}),(0,o.createComponentVNode)(2,u.Button,{disabled:p,content:C?"Close":"Open",onClick:function(){return a("toggle_door")}})],0):(0,o.createComponentVNode)(2,u.Button,{content:"Connect Scanner",onClick:function(){return a("connect_scanner")}})},y=function(e,t){var n=e.status;return 0===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"good",children:"Conscious"}):2===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"average",children:"Unconscious"}):1===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"average",children:"Critical"}):3===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"bad",children:"Dead"}):4===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"bad",children:"Transforming"}):(0,o.createComponentVNode)(2,u.Box,{inline:!0,children:"Unknown"})},S=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=(n.act,r.subjectName),c=r.isScannerConnected,i=r.isViableSubject,l=r.subjectHealth,s=r.subjectRads,m=r.subjectStatus;return c?i?(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Status",children:[a,(0,o.createComponentVNode)(2,u.Icon,{mx:1,color:"label",name:"long-arrow-alt-right"}),(0,o.createComponentVNode)(2,y,{status:m})]}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,u.ProgressBar,{value:l,minValue:0,maxValue:100,ranges:{olive:[101,Infinity],good:[70,101],average:[30,70],bad:[-Infinity,30]},children:[l,"%"]})}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Radiation",children:(0,o.createComponentVNode)(2,u.ProgressBar,{value:s,minValue:0,maxValue:100,ranges:{bad:[71,Infinity],average:[30,71],good:[0,30],olive:[-Infinity,0]},children:[s,"%"]})})]}):(0,o.createComponentVNode)(2,u.Box,{color:"average",children:"No viable subject found in DNA Scanner."}):(0,o.createComponentVNode)(2,u.Box,{color:"bad",children:"DNA Scanner is not connected."})},I=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.hasDisk,i=r.isInjectorReady,l=r.injectorSeconds,s=r.view.consoleMode;return(0,o.createComponentVNode)(2,u.Section,{title:"DNA Console",buttons:!i&&(0,o.createComponentVNode)(2,u.Box,{lineHeight:"20px",color:"label",children:["Injector on cooldown (",l,"s)"]}),children:(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Mode",children:[(0,o.createComponentVNode)(2,u.Button,{content:"Storage",selected:s===C,onClick:function(){return a("set_view",{consoleMode:C})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Sequencer",disabled:!r.isViableSubject,selected:s===h,onClick:function(){return a("set_view",{consoleMode:h})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Enzymes",selected:s===N,onClick:function(){return a("set_view",{consoleMode:N})}})]}),!!c&&(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Disk",children:(0,o.createComponentVNode)(2,u.Button,{icon:"eject",content:"Eject",onClick:function(){a("eject_disk"),a("set_view",{storageMode:V})}})})]})})};t.DnaConsoleCommands=I;var T=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.hasDisk,i=r.view,l=i.storageMode,s=i.storageConsSubMode,m=i.storageDiskSubMode;return(0,o.createFragment)([l===V&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Button,{selected:s===g,content:"Mutations",onClick:function(){return a("set_view",{storageConsSubMode:g})}}),(0,o.createComponentVNode)(2,u.Button,{selected:s===v,content:"Chromosomes",onClick:function(){return a("set_view",{storageConsSubMode:v})}})],4),l===b&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Button,{selected:m===g,content:"Mutations",onClick:function(){return a("set_view",{storageDiskSubMode:g})}}),(0,o.createComponentVNode)(2,u.Button,{selected:m===x,content:"Enzymes",onClick:function(){return a("set_view",{storageDiskSubMode:x})}})],4),(0,o.createComponentVNode)(2,u.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,u.Button,{content:"Console",selected:l===V,onClick:function(){return a("set_view",{storageMode:V,storageConsSubMode:g})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Disk",disabled:!c,selected:l===b,onClick:function(){return a("set_view",{storageMode:b,storageDiskSubMode:k})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Adv. Injector",selected:l===f,onClick:function(){return a("set_view",{storageMode:f})}})],0)},A=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.view,i=c.storageMode,l=c.storageConsSubMode,s=c.storageDiskSubMode,m=r.diskMakeupBuffer,p=r.diskHasMakeup,C=r.storage[i];return(0,o.createComponentVNode)(2,u.Section,{title:"Storage",buttons:(0,o.createComponentVNode)(2,T),children:[i===V&&l===g&&(0,o.createComponentVNode)(2,P,{mutations:C}),i===V&&l===v&&(0,o.createComponentVNode)(2,R),i===b&&s===k&&(0,o.createComponentVNode)(2,P,{mutations:C}),i===b&&s===x&&(0,o.createFragment)([(0,o.createComponentVNode)(2,U,{makeup:m}),(0,o.createComponentVNode)(2,u.Button,{icon:"times",color:"red",disabled:!p,content:"Delete",onClick:function(){return a("del_makeup_disk")}})],4),i===f&&(0,o.createComponentVNode)(2,Y)]})},P=function(e,t){var n=e.customMode,r=void 0===n?"":n,a=(0,d.useBackend)(t),c=a.data,l=a.act,s=e.mutations||[],m=c.view.storageMode+r,p=c.view["storage"+m+"MutationRef"],C=s.find((function(e){return e.ByondRef===p}));return!C&&s.length>0&&(C=s[0],p=C.ByondRef),(0,o.createComponentVNode)(2,u.Flex,{children:[(0,o.createComponentVNode)(2,u.Flex.Item,{width:"140px",children:(0,o.createComponentVNode)(2,u.Section,{title:(0,i.capitalize)(c.view.storageMode)+" Storage",level:2,children:s.map((function(e){return(0,o.createComponentVNode)(2,u.Button,{fluid:!0,ellipsis:!0,color:"transparent",selected:e.ByondRef===p,content:e.Name,onClick:function(){var t;return l("set_view",((t={})["storage"+m+"MutationRef"]=e.ByondRef,t))}},e.ByondRef)}))})}),(0,o.createComponentVNode)(2,u.Flex.Item,{children:(0,o.createComponentVNode)(2,u.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,u.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,u.Section,{title:"Mutation Info",level:2,children:(0,o.createComponentVNode)(2,M,{mutation:C})})})]})},R=function(e,t){var n,a=(0,d.useBackend)(t),c=a.data,i=a.act,l=null!=(n=c.chromoStorage)?n:[],s=(0,r.uniqBy)((function(e){return e.Name}))(l),m=c.view.storageChromoName,p=l.find((function(e){return e.Name===m}));return(0,o.createComponentVNode)(2,u.Flex,{children:[(0,o.createComponentVNode)(2,u.Flex.Item,{width:"140px",children:(0,o.createComponentVNode)(2,u.Section,{title:"Console Storage",level:2,children:s.map((function(e){return(0,o.createComponentVNode)(2,u.Button,{fluid:!0,ellipsis:!0,color:"transparent",selected:e.Name===m,content:e.Name,onClick:function(){return i("set_view",{storageChromoName:e.Name})}},e.Index)}))})}),(0,o.createComponentVNode)(2,u.Flex.Item,{children:(0,o.createComponentVNode)(2,u.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,u.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,u.Section,{title:"Chromosome Info",level:2,children:!p&&(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"Nothing to show."})||(0,o.createFragment)([(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Name",children:p.Name}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Description",children:p.Description}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Amount",children:l.filter((function(e){return e.Name===p.Name})).length})]}),(0,o.createComponentVNode)(2,u.Button,{mt:2,icon:"eject",content:"Eject Chromosome",onClick:function(){return i("eject_chromo",{chromo:p.Name})}})],4)})})]})},M=function(e,t){var n,c,i,l=e.mutation,s=(0,d.useBackend)(t),m=s.data,p=s.act,C=m.diskCapacity,h=m.diskReadOnly,N=m.hasDisk,V=m.isInjectorReady,b=null!=(n=m.storage.disk)?n:[],f=null!=(c=m.storage.console)?c:[],g=null!=(i=m.storage.injector)?i:[];if(!l)return(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"Nothing to show."});if("occupant"===l.Source&&!l.Discovered)return(0,o.createComponentVNode)(2,u.LabeledList,{children:(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Name",children:l.Alias})});var v=f.find((function(e){return _(e,l)})),k=b.find((function(e){return _(e,l)})),x=(0,a.flow)([(0,r.uniqBy)((function(e){return e.Name})),(0,r.filter)((function(e){return e.Name!==l.Name}))])([].concat(b,f));return(0,o.createFragment)([(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Name",children:(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:B[l.Quality],children:l.Name})}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Description",children:l.Description}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Instability",children:l.Instability})]}),(0,o.createComponentVNode)(2,u.Divider),(0,o.createComponentVNode)(2,u.Box,{children:["disk"===l.Source&&(0,o.createComponentVNode)(2,Q,{disabled:!N||C<=0||h,mutations:x,source:l}),"console"===l.Source&&(0,o.createComponentVNode)(2,Q,{mutations:x,source:l}),["occupant","disk","console"].includes(l.Source)&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Dropdown,{width:"240px",options:g.map((function(e){return e.name})),disabled:0===g.length||!l.Active,selected:"Add to advanced injector",onSelected:function(e){return p("add_advinj_mut",{mutref:l.ByondRef,advinj:e,source:l.Source})}}),(0,o.createComponentVNode)(2,u.Button,{icon:"syringe",disabled:!V||!l.Active,content:"Print Activator",onClick:function(){return p("print_injector",{mutref:l.ByondRef,is_activator:1,source:l.Source})}}),(0,o.createComponentVNode)(2,u.Button,{icon:"syringe",disabled:!V||!l.Active,content:"Print Mutator",onClick:function(){return p("print_injector",{mutref:l.ByondRef,is_activator:0,source:l.Source})}})],4)]}),["disk","occupant"].includes(l.Source)&&(0,o.createComponentVNode)(2,u.Button,{icon:"save",disabled:v||!l.Active,content:"Save to Console",onClick:function(){return p("save_console",{mutref:l.ByondRef,source:l.Source})}}),["console","occupant"].includes(l.Source)&&(0,o.createComponentVNode)(2,u.Button,{icon:"save",disabled:k||!N||C<=0||h||!l.Active,content:"Save to Disk",onClick:function(){return p("save_disk",{mutref:l.ByondRef,source:l.Source})}}),["console","disk","injector"].includes(l.Source)&&(0,o.createComponentVNode)(2,u.Button,{icon:"times",color:"red",content:"Delete from "+l.Source,onClick:function(){return p("delete_"+l.Source+"_mut",{mutref:l.ByondRef})}}),(2===l.Class||!!l.Scrambled&&"occupant"===l.Source)&&(0,o.createComponentVNode)(2,u.Button,{content:"Nullify",onClick:function(){return p("nullify",{mutref:l.ByondRef})}}),(0,o.createComponentVNode)(2,u.Divider),(0,o.createComponentVNode)(2,F,{disabled:"occupant"!==l.Source,mutation:l})],0)},F=function(e,t){var n=e.mutation,r=e.disabled,a=(0,d.useBackend)(t),c=(a.data,a.act);return 0===n.CanChromo?(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"No compatible chromosomes"}):1===n.CanChromo?r?(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"No chromosome applied."}):(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Dropdown,{width:"240px",options:n.ValidStoredChromos,disabled:0===n.ValidStoredChromos.length,selected:0===n.ValidStoredChromos.length?"No Suitable Chromosomes":"Select a chromosome",onSelected:function(e){return c("apply_chromo",{chromo:e,mutref:n.ByondRef})}}),(0,o.createComponentVNode)(2,u.Box,{color:"label",mt:1,children:["Compatible with: ",n.ValidChromos]})],4):2===n.CanChromo?(0,o.createComponentVNode)(2,u.Box,{color:"label",children:["Applied chromosome: ",n.AppliedChromo]}):null},D=function(e,t){var n,r,a=(0,d.useBackend)(t),c=a.data,i=a.act,s=null!=(n=null==(r=c.storage)?void 0:r.occupant)?n:[],m=c.isJokerReady,p=c.isMonkey,C=c.jokerSeconds,h=c.subjectStatus,N=c.view,V=N.sequencerMutation,b=N.jokerActive,f=s.find((function(e){return e.Alias===V}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Flex,{spacing:1,mb:1,children:[(0,o.createComponentVNode)(2,u.Flex.Item,{width:s.length<=8?"154px":"174px",children:(0,o.createComponentVNode)(2,u.Section,{title:"Sequences",height:"214px",overflowY:s.length>8&&"scroll",children:s.map((function(e){return(0,o.createComponentVNode)(2,j,{url:(0,l.resolveAsset)(e.Image),selected:e.Alias===V,onClick:function(){i("set_view",{sequencerMutation:e.Alias}),i("check_discovery",{alias:e.Alias})}},e.Alias)}))})}),(0,o.createComponentVNode)(2,u.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,u.Section,{title:"Sequence Info",minHeight:"100%",children:(0,o.createComponentVNode)(2,M,{mutation:f})})})]}),3===h&&(0,o.createComponentVNode)(2,u.Section,{color:"bad",children:"Genetic sequence corrupted. Subject diagnostic report: DECEASED."})||p&&"Monkified"!==(null==f?void 0:f.Name)&&(0,o.createComponentVNode)(2,u.Section,{color:"bad",children:"Genetic sequence corrupted. Subject diagnostic report: MONKEY."})||4===h&&(0,o.createComponentVNode)(2,u.Section,{color:"bad",children:"Genetic sequence corrupted. Subject diagnostic report: TRANSFORMING."})||(0,o.createComponentVNode)(2,u.Section,{title:"Genome Sequencer\u2122",buttons:!m&&(0,o.createComponentVNode)(2,u.Box,{lineHeight:"20px",color:"label",children:["Joker on cooldown (",C,"s)"]})||b&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Box,{mr:1,inline:!0,color:"label",children:"Click on a gene to reveal it."}),(0,o.createComponentVNode)(2,u.Button,{content:"Cancel Joker",onClick:function(){return i("set_view",{jokerActive:""})}})],4)||(0,o.createComponentVNode)(2,u.Button,{icon:"crown",color:"purple",content:"Use Joker",onClick:function(){return i("set_view",{jokerActive:"1"})}}),children:(0,o.createComponentVNode)(2,E,{mutation:f})})],0)},j=function(e,t){var n,r=e.url,a=e.selected,c=e.onClick;return a&&(n="2px solid #22aa00"),(0,o.createComponentVNode)(2,u.Box,{as:"img",src:r,style:{width:"64px",margin:"2px","margin-left":"4px",outline:n},onClick:c})},W=function(e,t){var n=e.gene,r=e.onChange,a=e.disabled,c=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,["gene","onChange","disabled"]),i=m.length,l=m.indexOf(n),d=a&&p.X||p[n];return(0,o.normalizeProps)((0,o.createComponentVNode)(2,u.Button,Object.assign({},c,{color:d,onClick:function(e){if(e.preventDefault(),r)if(-1!==l){var t=m[(l+1)%i];r(e,t)}else r(e,m[0])},oncontextmenu:function(e){if(e.preventDefault(),r)if(-1!==l){var t=m[(l-1+i)%i];r(e,t)}else r(e,m[i-1])},children:n})))},E=function(e,t){var n=e.mutation,r=(0,d.useBackend)(t),a=r.data,i=r.act,l=a.view.jokerActive;if(!n)return(0,o.createComponentVNode)(2,u.Box,{color:"average",children:"No genome selected for sequencing."});if(n.Scrambled)return(0,o.createComponentVNode)(2,u.Box,{color:"average",children:"Sequence unreadable due to unpredictable mutation."});for(var s=n.Sequence,m=n.DefaultSeq,p=[],C=function(e){var t=s.charAt(e),r=(0,o.createComponentVNode)(2,W,{width:"22px",textAlign:"center",disabled:!!n.Scrambled||1!==n.Class,className:"X"===(null==m?void 0:m.charAt(e))&&!n.Active&&(0,c.classes)(["outline-solid","outline-color-orange"]),gene:t,onChange:function(t,o){if(!t.ctrlKey)return l?(i("pulse_gene",{pos:e+1,gene:"J",alias:n.Alias}),void i("set_view",{jokerActive:""})):void i("pulse_gene",{pos:e+1,gene:o,alias:n.Alias});i("pulse_gene",{pos:e+1,gene:"X",alias:n.Alias})}});p.push(r)},h=0;h=3){var r=(0,o.createComponentVNode)(2,u.Box,{inline:!0,width:"22px",mx:"1px",children:s});l.push(r),s=[]}},p=0;p=i,onCommit:function(e,t){return a("new_adv_inj",{name:t})}})})]})},Q=function(e,t){var n=e.mutations,r=void 0===n?[]:n,a=e.source,c=(0,d.useBackend)(t),i=c.act;c.data;return(0,o.createComponentVNode)(2,u.Dropdown,{width:"240px",options:r.map((function(e){return e.Name})),disabled:0===r.length,selected:"Combine mutations",onSelected:function(e){return i("combine_"+a.Source,{firstref:(t=e,null==(n=r.find((function(e){return e.Name===t})))?void 0:n.ByondRef),secondref:a.ByondRef});var t,n}},a.ByondRef)}},89817:function(e,t,n){"use strict";t.__esModule=!0,t.DnaVault=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.DnaVault=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.completed,u=l.used,s=l.choiceA,m=l.choiceB,p=l.dna,C=l.dna_max,h=l.plants,N=l.plants_max,V=l.animals,b=l.animals_max;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:400,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"DNA Vault Database",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Human DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:p/C,children:p+" / "+C+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Plant DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:h/N,children:h+" / "+N+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Animal DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:V/V,children:V+" / "+b+" Samples"})})]})}),!(!d||u)&&(0,o.createComponentVNode)(2,a.Section,{title:"Personal Gene Therapy",children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",mb:1,children:"Applicable Gene Therapy Treatments"}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:s,textAlign:"center",onClick:function(){return i("gene",{choice:s})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:m,textAlign:"center",onClick:function(){return i("gene",{choice:m})}})})]})]})]})})}},41284:function(e,t,n){"use strict";t.__esModule=!0,t.EightBallVote=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(2497),i=n(85952);t.EightBallVote=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.shaking);return(0,o.createComponentVNode)(2,i.Window,{width:400,height:600,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No question is currently being asked."})||(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.question,u=l.answers,s=void 0===u?[]:u;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"16px",m:1,children:['"',d,'"']}),(0,o.createComponentVNode)(2,a.Grid,{children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:(0,c.toTitleCase)(e.answer),selected:e.selected,fontSize:"16px",lineHeight:"24px",textAlign:"center",mb:1,onClick:function(){return i("vote",{answer:e.answer})}}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"30px",children:e.amount})]},e.answer)}))})]})}},31342:function(e,t,n){"use strict";t.__esModule=!0,t.Electrolyzer=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Electrolyzer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Power",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Cell",disabled:!l.hasPowercell||!l.open,onClick:function(){return i("eject")}}),(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,disabled:!l.hasPowercell,onClick:function(){return i("power")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell",color:!l.hasPowercell&&"bad",children:l.hasPowercell&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.powerLevel/100,content:l.powerLevel+"%",ranges:{good:[.6,Infinity],average:[.3,.6],bad:[-Infinity,.3]}})||"None"})})})})})}},53586:function(e,t,n){"use strict";t.__esModule=!0,t.Electropack=void 0;var o=n(39812),r=n(41860),a=n(71494),c=n(74814),i=n(85952);t.Electropack=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.power,s=d.code,m=d.frequency,p=d.minFrequency,C=d.maxFrequency;return(0,o.createComponentVNode)(2,i.Window,{width:260,height:137,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,c.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return l("power")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Frequency",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"freq"})}}),children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:p/10,maxValue:C/10,value:m/10,format:function(e){return(0,r.toFixed)(e,1)},width:"80px",onDrag:function(e,t){return l("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Code",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"code"})}}),children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:s,width:"80px",onDrag:function(e,t){return l("code",{code:t})}})})]})})})})}},47453:function(e,t,n){"use strict";t.__esModule=!0,t.EmergencyShuttleConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.EmergencyShuttleConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.timer_str,u=l.enabled,s=l.emagged,m=l.engines_started,p=l.authorizations_remaining,C=l.authorizations,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:350,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,fontSize:"40px",textAlign:"center",fontFamily:"monospace",children:d}),(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",fontSize:"16px",mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:"ENGINES:"}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:m?"good":"average",ml:1,children:m?"Online":"Idle"})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Early Launch Authorization",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Repeal All",color:"bad",disabled:!u,onClick:function(){return i("abort")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"exclamation-triangle",color:"good",content:"AUTHORIZE",disabled:!u,onClick:function(){return i("authorize")}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"minus",content:"REPEAL",disabled:!u,onClick:function(){return i("repeal")}})})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Authorizations",level:3,minHeight:"150px",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:s?"bad":"good",children:s?"ERROR":"Remaining: "+p}),children:h.length>0?h.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{bold:!0,fontSize:"16px",className:"candystripe",children:[e.name," (",e.job,")"]},e.name)})):(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"16px",color:"average",children:"No Active Authorizations"})})]})]})})})}},11715:function(e,t,n){"use strict";t.__esModule=!0,t.EngravedMessage=void 0;var o=n(39812),r=n(2497),a=n(71494),c=n(74814),i=n(85952);t.EngravedMessage=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.admin_mode,s=d.creator_key,m=d.creator_name,p=d.has_liked,C=d.has_disliked,h=d.hidden_message,N=d.is_creator,V=d.num_likes,b=d.num_dislikes,f=d.realdate;return(0,o.createComponentVNode)(2,i.Window,{width:600,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Box,{bold:!0,textAlign:"center",fontSize:"20px",mb:2,children:(0,r.decodeHtmlEntities)(h)}),(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"arrow-up",content:" "+V,disabled:N,selected:p,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return l("like")}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"circle",disabled:N,selected:!C&&!p,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return l("neutral")}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"arrow-down",content:" "+b,disabled:N,selected:C,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return l("dislike")}})})]})]}),(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Created On",children:f})})}),(0,o.createComponentVNode)(2,c.Section),!!u&&(0,o.createComponentVNode)(2,c.Section,{title:"Admin Panel",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Delete",color:"bad",onClick:function(){return l("delete")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Creator Ckey",children:s}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Creator Character Name",children:m})]})})]})})}},8077:function(e,t,n){"use strict";t.__esModule=!0,t.ExosuitControlConsole=void 0;var o=n(39812),r=n(41860),a=n(71494),c=n(74814),i=n(85952);t.ExosuitControlConsole=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data.mechs,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,i.Window,{width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[0===u.length&&(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No exosuits detected"}),u.map((function(e){return(0,o.createComponentVNode)(2,c.Section,{title:e.name,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"envelope",content:"Send Message",disabled:!e.pilot,onClick:function(){return l("send_message",{tracker_ref:e.tracker_ref})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"wifi",content:e.emp_recharging?"Recharging...":"EMP Burst",color:"bad",disabled:e.emp_recharging,onClick:function(){return l("shock",{tracker_ref:e.tracker_ref})}})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,c.Box,{color:(e.integrity<=30?"bad":e.integrity<=70&&"average")||"good",children:[e.integrity,"%"]})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,c.Box,{color:(e.charge<=30?"bad":e.charge<=70&&"average")||"good",children:"number"==typeof e.charge&&e.charge+"%"||"Not Found"})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Airtank",children:"number"==typeof e.airtank&&(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:e.airtank,format:function(e){return(0,r.toFixed)(e,2)+" kPa"}})||"Not Equipped"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pilot",children:e.pilot||"None"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Location",children:e.location||"Unknown"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Active Equipment",children:e.active_equipment||"None"}),e.cargo_space>=0&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Used Cargo Space",children:(0,o.createComponentVNode)(2,c.Box,{color:(e.cargo_space<=30?"good":e.cargo_space<=70&&"average")||"bad",children:[e.cargo_space,"%"]})})]})},e.tracker_ref)}))]})})}},95481:function(e,t,n){"use strict";t.__esModule=!0,t.ExosuitFabricator=void 0;var o,r=n(39812),a=n(34380),c=n(64499),i=n(71494),l=n(58083),d=n(74814),u=n(85952),s=n(2497);function m(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return p(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=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.")}return(n=e[Symbol.iterator]()).next.bind(n)}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);nn?{color:2,deficit:e-n}:t>n?{color:1,deficit:e}:e+t>n?{color:1,deficit:e+t-n}:{color:0,deficit:0}},V=function(e,t,n){var o={textColor:0};return Object.keys(n.cost).forEach((function(r){o[r]=N(n.cost[r],t[r],e[r]),o[r].color>o.textColor&&(o.textColor=o[r].color)})),o};t.ExosuitFabricator=function(e,t){var n,o,a=(0,i.useBackend)(t),c=a.act,l=a.data,s=l.queue||[],m=(n=l.materials||[],o={},n.forEach((function(e){o[e.name]=e.amount})),o),p=function(e,t){var n={},o={},r={},a={};return t.forEach((function(t,c){a[c]=0,Object.keys(t.cost).forEach((function(i){n[i]=n[i]||0,r[i]=r[i]||0,o[i]=N(t.cost[i],n[i],e[i]),0!==o[i].color?a[c]1&&l=0&&m+"s"||"Dispensing..."})]})})})}}},1005:function(e,t,n){"use strict";t.__esModule=!0,t.ForbiddenLore=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(71494),i=n(74814),l=n(85952);t.ForbiddenLore=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=u.charges,m=(0,a.flow)([(0,r.sortBy)((function(e){return"Research"!==e.state}),(function(e){return"Side"===e.path}))])(u.to_know||[]);return(0,o.createComponentVNode)(2,l.Window,{width:500,height:900,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Research Eldritch Knowledge",children:["Charges left : ",s,null!==m?m.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,children:[(0,o.createComponentVNode)(2,i.Box,{bold:!0,my:1,children:[e.path," path"]}),(0,o.createComponentVNode)(2,i.Box,{my:1,children:[(0,o.createComponentVNode)(2,i.Button,{content:e.state,disabled:e.disabled,onClick:function(){return d("research",{name:e.name,cost:e.cost})}})," ","Cost : ",e.cost]}),(0,o.createComponentVNode)(2,i.Box,{italic:!0,my:1,children:e.flavour}),(0,o.createComponentVNode)(2,i.Box,{my:1,children:e.desc})]},e.name)})):(0,o.createComponentVNode)(2,i.Box,{children:"No more knowledge can be found"})]})})})}},64831:function(e,t,n){"use strict";t.__esModule=!0,t.Gateway=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Gateway=function(){return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.gateway_present,d=void 0!==l&&l,u=i.gateway_status,s=void 0!==u&&u,m=i.current_target,p=void 0===m?null:m,C=i.destinations,h=void 0===C?[]:C;return d?p?(0,o.createComponentVNode)(2,a.Section,{title:p.name,children:[(0,o.createComponentVNode)(2,a.Icon,{name:"rainbow",size:4,color:"green"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return c("deactivate")},children:"Deactivate"})]}):h.length?(0,o.createFragment)([!s&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Gateway Unpowered"}),h.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:e.available&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return c("activate",{destination:e.ref})},children:"Activate"})||(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{m:1,textColor:"bad",children:e.reason}),!!e.timeout&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:e.timeout,children:"Calibrating..."})],0)},e.ref)}))],0):(0,o.createComponentVNode)(2,a.Section,{children:"No gateway nodes detected."}):(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No linked gateway"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return c("linkup")},children:"Linkup"})]})}},8098:function(e,t,n){"use strict";t.__esModule=!0,t.GhostPoolProtection=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.GhostPoolProtection=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.events_or_midrounds,u=l.spawners,s=l.station_sentience,m=l.silicons,p=l.minigames;return(0,o.createComponentVNode)(2,c.Window,{title:"Ghost Pool Protection",width:400,height:270,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Flex,{grow:1,height:"100%",children:(0,o.createComponentVNode)(2,a.Section,{title:"Options",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{color:"good",icon:"plus-circle",content:"Enable Everything",onClick:function(){return i("all_roles")}}),(0,o.createComponentVNode)(2,a.Button,{color:"bad",icon:"minus-circle",content:"Disable Everything",onClick:function(){return i("no_roles")}})],4),children:[(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:"For people creating a sneaky event: If you toggle Station Created Sentience, people may catch on that admins have disabled roles for your event..."}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:d?"good":"bad",icon:"meteor",content:"Events and Midround Rulesets",onClick:function(){return i("toggle_events_or_midrounds")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:u?"good":"bad",icon:"pastafarianism",content:"Ghost Role Spawners",onClick:function(){return i("toggle_spawners")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:s?"good":"bad",icon:"user-astronaut",content:"Station Created Sentience",onClick:function(){return i("toggle_station_sentience")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:m?"good":"bad",icon:"robot",content:"Silicons",onClick:function(){return i("toggle_silicons")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:p?"good":"bad",icon:"gamepad",content:"Minigames",onClick:function(){return i("toggle_minigames")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:"orange",icon:"check",content:"Apply Changes",onClick:function(){return i("apply_settings")}})})]})})})})}},25313:function(e,t,n){"use strict";t.__esModule=!0,t.GlandDispenser=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.GlandDispenser=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.glands,d=void 0===l?[]:l;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:338,theme:"abductor",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:"60px",height:"60px",m:.75,textAlign:"center",lineHeight:"55px",icon:"eject",backgroundColor:e.color,content:e.amount||"0",disabled:!e.amount,onClick:function(){return i("dispense",{gland_id:e.id})}},e.id)}))})})})}},25230:function(e,t,n){"use strict";t.__esModule=!0,t.Gps=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(41860),i=n(51961),l=n(71494),d=n(74814),u=n(85952),s=function(e){return(0,r.map)(parseFloat)(e.split(", "))};t.Gps=function(e,t){var n=(0,l.useBackend)(t),m=n.act,p=n.data,C=p.currentArea,h=p.currentCoords,N=p.globalmode,V=p.power,b=p.tag,f=p.updating,g=(0,a.flow)([(0,r.map)((function(e,t){var n=e.dist&&Math.round((0,i.vecLength)((0,i.vecSubtract)(s(h),s(e.coords))));return Object.assign({},e,{dist:n,index:t})})),(0,r.sortBy)((function(e){return e.dist===undefined}),(function(e){return e.entrytag}))])(p.signals||[]);return(0,o.createComponentVNode)(2,u.Window,{title:"Global Positioning System",width:470,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,u.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d.Section,{title:"Control",buttons:(0,o.createComponentVNode)(2,d.Button,{icon:"power-off",content:V?"On":"Off",selected:V,onClick:function(){return m("power")}}),children:(0,o.createComponentVNode)(2,d.LabeledList,{children:[(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Tag",children:(0,o.createComponentVNode)(2,d.Button,{icon:"pencil-alt",content:b,onClick:function(){return m("rename")}})}),(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,d.Button,{icon:f?"unlock":"lock",content:f?"AUTO":"MANUAL",color:!f&&"bad",onClick:function(){return m("updating")}})}),(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Range",children:(0,o.createComponentVNode)(2,d.Button,{icon:"sync",content:N?"MAXIMUM":"LOCAL",selected:!N,onClick:function(){return m("globalmode")}})})]})}),!!V&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d.Section,{title:"Current Location",children:(0,o.createComponentVNode)(2,d.Box,{fontSize:"18px",children:[C," (",h,")"]})}),(0,o.createComponentVNode)(2,d.Section,{title:"Detected Signals",children:(0,o.createComponentVNode)(2,d.Table,{children:[(0,o.createComponentVNode)(2,d.Table.Row,{bold:!0,children:[(0,o.createComponentVNode)(2,d.Table.Cell,{content:"Name"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,content:"Direction"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,content:"Coordinates"})]}),g.map((function(e){return(0,o.createComponentVNode)(2,d.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,d.Table.Cell,{bold:!0,color:"label",children:e.entrytag}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,opacity:e.dist!==undefined&&(0,c.clamp)(1.2/Math.log(Math.E+e.dist/20),.4,1),children:[e.degrees!==undefined&&(0,o.createComponentVNode)(2,d.Icon,{mr:1,size:1.2,name:"arrow-up",rotation:e.degrees}),e.dist!==undefined&&e.dist+"m"]}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,children:e.coords})]},e.entrytag+e.coords+e.index)}))]})})],4)]})})}},4475:function(e,t,n){"use strict";t.__esModule=!0,t.GravityGenerator=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.GravityGenerator=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data),d=l.charging_state,u=l.operational;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:155,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!u&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No data available"}),!!u&&0!==d&&(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:"WARNING - Radiation detected"}),!!u&&0===d&&(0,o.createComponentVNode)(2,a.NoticeBox,{success:!0,children:"No radiation detected"}),!!u&&(0,o.createComponentVNode)(2,i)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.breaker,d=i.charge_count,u=i.charging_state,s=i.on,m=i.operational;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:l?"power-off":"times",content:l?"On":"Off",selected:l,disabled:!m,onClick:function(){return c("gentoggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Gravity Charge",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d/100,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",children:[0===u&&(s&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Fully Charged"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Not Charging"})),1===u&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Charging"}),2===u&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Discharging"})]})]})})}},83366:function(e,t,n){"use strict";t.__esModule=!0,t.GulagItemReclaimer=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.GulagItemReclaimer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.mobs,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,c.Window,{width:325,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[0===u.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No stored items"}),u.length>0&&(0,o.createComponentVNode)(2,a.Section,{title:"Stored Items",children:(0,o.createComponentVNode)(2,a.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:(0,o.createComponentVNode)(2,a.Button,{content:"Retrieve Items",disabled:!l.can_reclaim,onClick:function(){return i("release_items",{mobref:e.mob})}})})]},e.mob)}))})})]})})}},72263:function(e,t,n){"use strict";t.__esModule=!0,t.GulagTeleporterConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.GulagTeleporterConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.teleporter,u=l.teleporter_lock,s=l.teleporter_state_open,m=l.teleporter_location,p=l.beacon,C=l.beacon_location,h=l.id,N=l.id_name,V=l.can_teleport,b=l.goal,f=void 0===b?0:b,g=l.prisoner,v=void 0===g?{}:g;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:295,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Teleporter Console",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:s?"Open":"Closed",disabled:u,selected:s,onClick:function(){return i("toggle_open")}}),(0,o.createComponentVNode)(2,a.Button,{icon:u?"lock":"unlock",content:u?"Locked":"Unlocked",selected:u,disabled:s,onClick:function(){return i("teleporter_lock")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleporter Unit",color:d?"good":"bad",buttons:!d&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return i("scan_teleporter")}}),children:d?m:"Not Connected"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Receiver Beacon",color:p?"good":"bad",buttons:!p&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return i("scan_beacon")}}),children:p?C:"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Prisoner Details",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prisoner ID",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:h?N:"No ID",onClick:function(){return i("handle_id")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Point Goal",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:f,width:"48px",minValue:1,maxValue:1e3,onChange:function(e,t){return i("set_goal",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",children:v.name||"No Occupant"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Criminal Status",children:v.crimstat||"No Status"})]})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Process Prisoner",disabled:!V,textAlign:"center",color:"bad",onClick:function(){return i("teleport")}})]})})}},7908:function(e,t,n){"use strict";t.__esModule=!0,t.Holodeck=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Holodeck=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.can_toggle_safety,u=l.default_programs,s=void 0===u?[]:u,m=l.emag_programs,p=void 0===m?[]:m,C=l.emagged,h=l.program;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Default Programs",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:C?"unlock":"lock",content:"Safeties",color:"bad",disabled:!d,selected:!C,onClick:function(){return i("safety")}}),children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.split(" - ")[1],textAlign:"center",selected:e.type===h,onClick:function(){return i("load_program",{type:e.type})}},e.type)}))}),!!C&&(0,o.createComponentVNode)(2,a.Section,{title:"Dangerous Programs",children:p.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.split(" - ")[1],color:"bad",textAlign:"center",selected:e.type===h,onClick:function(){return i("load_program",{type:e.type})}},e.type)}))})]})})}},84283:function(e,t,n){"use strict";t.__esModule=!0,t.Holopad=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Holopad=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data.calling;return(0,o.createComponentVNode)(2,c.Window,{width:440,height:245,resizable:!0,children:[!!d&&(0,o.createComponentVNode)(2,a.Modal,{fontSize:"36px",fontFamily:"monospace",children:[(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,mt:2,children:(0,o.createComponentVNode)(2,a.Icon,{name:"phone-alt",rotation:25})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,children:"Dialing..."})]}),(0,o.createComponentVNode)(2,a.Box,{mt:2,textAlign:"center",fontSize:"24px",children:(0,o.createComponentVNode)(2,a.Button,{lineHeight:"40px",icon:"times",content:"Hang Up",color:"bad",onClick:function(){return l("hang_up")}})})]}),(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})]})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.on_network,d=i.on_cooldown,u=i.allowed,s=i.disk,m=i.disk_record,p=i.replay_mode,C=i.loop_mode,h=i.record_mode,N=i.holo_calls,V=void 0===N?[]:N;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Holopad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"bell",content:d?"AI Presence Requested":"Request AI Presence",disabled:!l||d,onClick:function(){return c("AIrequest")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Communicator",children:(0,o.createComponentVNode)(2,a.Button,{icon:"phone-alt",content:u?"Connect To Holopad":"Call Holopad",disabled:!l,onClick:function(){return c("holocall",{headcall:u})}})}),V.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.connected?"Current Call":"Incoming Call",children:(0,o.createComponentVNode)(2,a.Button,{icon:e.connected?"phone-slash":"phone-alt",content:e.connected?"Disconnect call from "+e.caller:"Answer call from "+e.caller,color:e.connected?"bad":"good",disabled:!l,onClick:function(){return c(e.connected?"disconnectcall":"connectcall",{holopad:e.ref})}})},e.ref)}))]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holodisk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!s||p||h,onClick:function(){return c("disk_eject")}}),children:!s&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No holodisk"})||(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk Player",children:[(0,o.createComponentVNode)(2,a.Button,{icon:p?"pause":"play",content:p?"Stop":"Replay",selected:p,disabled:h||!m,onClick:function(){return c("replay_mode")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:C?"Looping":"Loop",selected:C,disabled:h||!m,onClick:function(){return c("loop_mode")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"exchange-alt",content:"Change Offset",disabled:!p,onClick:function(){return c("offset")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Recorder",children:[(0,o.createComponentVNode)(2,a.Button,{icon:h?"pause":"video",content:h?"End Recording":"Record",selected:h,disabled:m&&!h||p,onClick:function(){return c("record_mode")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:"Clear Recording",color:"bad",disabled:!m||p||h,onClick:function(){return c("record_clear")}})]})]})})],4)}},12708:function(e,t,n){"use strict";t.__esModule=!0,t.HypnoChair=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.HypnoChair=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:480,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",backgroundColor:"#450F44",children:"The Enhanced Interrogation Chamber is designed to induce a deep-rooted trance trigger into the subject. Once the procedure is complete, by using the implanted trigger phrase, the authorities are able to ensure immediate and complete obedience and truthfulness."}),(0,o.createComponentVNode)(2,a.Section,{title:"Occupant Information",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l.occupant.name?l.occupant.name:"No Occupant"}),!!l.occupied&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:0===l.occupant.stat?"good":1===l.occupant.stat?"average":"bad",children:0===l.occupant.stat?"Conscious":1===l.occupant.stat?"Unconcious":"Dead"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Operations",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.open?"unlock":"lock",color:l.open?"default":"red",content:l.open?"Open":"Closed",onClick:function(){return i("door")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Phrase",children:(0,o.createComponentVNode)(2,a.Input,{value:l.trigger,onChange:function(e,t){return i("set_phrase",{phrase:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Interrogate Occupant",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"code-branch",content:l.interrogating?"Interrupt Interrogation":"Begin Enhanced Interrogation",onClick:function(){return i("interrogate")}}),1===l.interrogating&&(0,o.createComponentVNode)(2,a.Icon,{name:"cog",color:"orange",spin:!0})]})]})})]})})}},1473:function(e,t,n){"use strict";t.__esModule=!0,t.ImplantChair=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ImplantChair=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:280,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Occupant Information",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l.occupant.name||"No Occupant"}),!!l.occupied&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:0===l.occupant.stat?"good":1===l.occupant.stat?"average":"bad",children:0===l.occupant.stat?"Conscious":1===l.occupant.stat?"Unconcious":"Dead"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Operations",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.open?"unlock":"lock",color:l.open?"default":"red",content:l.open?"Open":"Closed",onClick:function(){return i("door")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implant Occupant",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"code-branch",content:l.ready?l.special_name||"Implant":"Recharging",onClick:function(){return i("implant")}}),0===l.ready&&(0,o.createComponentVNode)(2,a.Icon,{name:"cog",color:"orange",spin:!0})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implants Remaining",children:[l.ready_implants,1===l.replenishing&&(0,o.createComponentVNode)(2,a.Icon,{name:"sync",color:"red",spin:!0})]})]})})]})})}},87522:function(e,t,n){"use strict";t.__esModule=!0,t.InfraredEmitter=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.InfraredEmitter=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.on,u=l.visible;return(0,o.createComponentVNode)(2,c.Window,{width:225,height:110,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",content:d?"On":"Off",selected:d,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Visibility",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"eye":"eye-slash",content:u?"Visible":"Invisible",selected:u,onClick:function(){return i("visibility")}})})]})})})})}},28549:function(e,t,n){"use strict";t.__esModule=!0,t.Intellicard=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Intellicard=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.name,u=l.isDead,s=l.isBraindead,m=l.health,p=l.wireless,C=l.radio,h=l.wiping,N=l.laws,V=void 0===N?[]:N,b=u||s;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:d||"Empty Card",buttons:!!d&&(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:h?"Stop Wiping":"Wipe",disabled:u,onClick:function(){return i("wipe")}}),children:!!d&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:b?"bad":"good",children:b?"Offline":"Operation"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Software Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Settings",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"Wireless Activity",selected:p,onClick:function(){return i("wireless")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"microphone",content:"Subspace Radio",selected:C,onClick:function(){return i("radio")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laws",children:V.map((function(e){return(0,o.createComponentVNode)(2,a.BlockQuote,{children:e},e)}))})]})})})})}},68741:function(e,t,n){"use strict";t.__esModule=!0,t.Jukebox=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(71494),i=n(74814),l=n(85952);t.Jukebox=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=u.active,m=u.track_selected,p=u.track_length,C=u.track_beat,h=u.volume,N=(0,a.flow)([(0,r.sortBy)((function(e){return e.name}))])(u.songs||[]);return(0,o.createComponentVNode)(2,l.Window,{width:370,height:313,children:(0,o.createComponentVNode)(2,l.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Song Player",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:s?"pause":"play",content:s?"Stop":"Play",selected:s,onClick:function(){return d("toggle")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Track Selected",children:(0,o.createComponentVNode)(2,i.Dropdown,{"overflow-y":"scroll",width:"240px",options:N.map((function(e){return e.name})),disabled:s,selected:m||"Select a Track",onSelected:function(e){return d("select_track",{track:e})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Track Length",children:m?p:"No Track Selected"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Track Beat",children:[m?C:"No Track Selected",1===C?" beat":" beats"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Machine Settings",children:(0,o.createComponentVNode)(2,i.LabeledControls,{justify:"center",children:(0,o.createComponentVNode)(2,i.LabeledControls.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,i.Box,{position:"relative",children:[(0,o.createComponentVNode)(2,i.Knob,{size:3.2,color:h>=50?"red":"green",value:h,unit:"%",minValue:0,maxValue:100,step:1,stepPixelSize:1,disabled:s,onDrag:function(e,t){return d("set_volume",{volume:t})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,position:"absolute",top:"-2px",right:"-22px",color:"transparent",icon:"fast-backward",onClick:function(){return d("set_volume",{volume:"min"})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,position:"absolute",top:"16px",right:"-22px",color:"transparent",icon:"fast-forward",onClick:function(){return d("set_volume",{volume:"max"})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,position:"absolute",top:"34px",right:"-22px",color:"transparent",icon:"undo",onClick:function(){return d("set_volume",{volume:"reset"})}})]})})})})]})})}},36597:function(e,t,n){"use strict";t.__esModule=!0,t.KeycardAuth=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.KeycardAuth=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:125,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{children:1===l.waiting&&(0,o.createVNode)(1,"span",null,"Waiting for another device to confirm your request...",16)}),(0,o.createComponentVNode)(2,a.Box,{children:0===l.waiting&&(0,o.createFragment)([!!l.auth_required&&(0,o.createComponentVNode)(2,a.Button,{icon:"check-square",color:"red",textAlign:"center",lineHeight:"60px",fluid:!0,onClick:function(){return i("auth_swipe")},content:"Authorize"}),0===l.auth_required&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",fluid:!0,onClick:function(){return i("red_alert")},content:"Red Alert"}),(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",fluid:!0,onClick:function(){return i("emergency_maint")},content:"Emergency Maintenance Access"}),(0,o.createComponentVNode)(2,a.Button,{icon:"meteor",fluid:!0,onClick:function(){return i("bsa_unlock")},content:"Bluespace Artillery Unlock"})],4)],0)})]})})})}},52169:function(e,t,n){"use strict";t.__esModule=!0,t.LaborClaimConsole=void 0;var o=n(39812),r=n(2497),a=n(71494),c=n(74814),i=n(85952);t.LaborClaimConsole=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.can_go_home,s=d.id_points,m=d.ores,p=d.status_info,C=d.unclaimed_points;return(0,o.createComponentVNode)(2,i.Window,{width:315,height:440,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:p}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Shuttle controls",children:(0,o.createComponentVNode)(2,c.Button,{content:"Move shuttle",disabled:!u,onClick:function(){return l("move_shuttle")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Points",children:s}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Unclaimed points",buttons:(0,o.createComponentVNode)(2,c.Button,{content:"Claim points",disabled:!C,onClick:function(){return l("claim_points")}}),children:C})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Material values",children:(0,o.createComponentVNode)(2,c.Table,{children:[(0,o.createComponentVNode)(2,c.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Material"}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:"Value"})]}),m.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,r.toTitleCase)(e.ore)}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Box,{color:"label",inline:!0,children:e.value})})]},e.ore)}))]})})]})})}},83577:function(e,t,n){"use strict";t.__esModule=!0,t.LanguageMenu=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.LanguageMenu=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.admin_mode,u=l.is_living,s=l.omnitongue,m=l.languages,p=void 0===m?[]:m,C=l.unknown_languages,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.Window,{title:"Language Menu",width:700,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Known Languages",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:p.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createFragment)([!!u&&(0,o.createComponentVNode)(2,a.Button,{content:e.is_default?"Default Language":"Select as Default",disabled:!e.can_speak,selected:e.is_default,onClick:function(){return i("select_default",{language_name:e.name})}}),!!d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return i("grant_language",{language_name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Remove",onClick:function(){return i("remove_language",{language_name:e.name})}})],4)],0),children:[e.desc," ","Key: ,",e.key," ",e.can_understand?"Can understand.":"Cannot understand."," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})}),!!d&&(0,o.createComponentVNode)(2,a.Section,{title:"Unknown Languages",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Omnitongue "+(s?"Enabled":"Disabled"),selected:s,onClick:function(){return i("toggle_omnitongue")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:h.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return i("grant_language",{language_name:e.name})}}),children:[e.desc," ","Key: ,",e.key," ",!!e.shadow&&"(gained from mob)"," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})})]})})}},79381:function(e,t,n){"use strict";t.__esModule=!0,t.LaunchpadConsole=t.LaunchpadControl=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createComponentVNode)(2,a.Grid,{width:"1px",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:-1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",mb:1,onClick:function(){return n("move_pos",{x:-1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:-1,y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",mb:1,onClick:function(){return n("move_pos",{y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"R",mb:1,onClick:function(){return n("set_pos",{x:0,y:0})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",mb:1,onClick:function(){return n("move_pos",{y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",mb:1,onClick:function(){return n("move_pos",{x:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:1,y:-1})}})]})]})},l=function(e,t){var n=e.topLevel,c=(0,r.useBackend)(t),l=c.act,d=c.data,u=d.x,s=d.y,m=d.pad_name,p=d.range;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Input,{value:m,width:"170px",onChange:function(e,t){return l("rename",{name:t})}}),level:n?1:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Remove",color:"bad",onClick:function(){return l("remove")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Controls",level:2,children:(0,o.createComponentVNode)(2,i)})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Target",level:2,children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"26px",children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"X:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:u,minValue:-p,maxValue:p,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",stepPixelSize:10,onChange:function(e,t){return l("set_pos",{x:t})}})]}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"Y:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:s,minValue:-p,maxValue:p,stepPixelSize:10,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",onChange:function(e,t){return l("set_pos",{y:t})}})]})]})})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"upload",content:"Launch",textAlign:"center",onClick:function(){return l("launch")}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Pull",textAlign:"center",onClick:function(){return l("pull")}})})]})]})};t.LaunchpadControl=l;t.LaunchpadConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,d=n.data,u=d.launchpads,s=void 0===u?[]:u,m=d.selected_id;return(0,o.createComponentVNode)(2,c.Window,{width:475,height:260,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:0===s.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Pads Connected"})||(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{minHeight:"190px",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"140px",minHeight:"190px",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,ellipsis:!0,content:e.name,selected:m===e.id,color:"transparent",onClick:function(){return i("select_pad",{id:e.id})}},e.name)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{minHeight:"100%",children:(0,o.createComponentVNode)(2,a.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,minHeight:"100%",children:m&&(0,o.createComponentVNode)(2,l)||(0,o.createComponentVNode)(2,a.Box,{children:"Please select a pad"})})]})})})})}},59955:function(e,t,n){"use strict";t.__esModule=!0,t.LaunchpadRemote=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=n(79381);t.LaunchpadRemote=function(e,t){var n=(0,r.useBackend)(t).data,l=n.has_pad,d=n.pad_closed;return(0,o.createComponentVNode)(2,c.Window,{title:"Briefcase Launchpad Remote",width:300,height:240,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Launchpad Connected"})||d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Launchpad Closed"})||(0,o.createComponentVNode)(2,i.LaunchpadControl,{topLevel:!0})})})}},71293:function(e,t,n){"use strict";t.__esModule=!0,t.LoadoutSelect=void 0;var o=n(39812),r=n(71494),a=n(85952),c=n(74814);t.LoadoutSelect=function(e,t){var n,i,l=(0,r.useBackend)(t),d=l.act,u=l.data;return(0,o.createComponentVNode)(2,a.Window,{width:500,height:450,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Tabs,{style:{"vertical-align":"top",flex:"initial"},children:null!=(n=u.outfits)&&n.length?u.outfits.map((function(e){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:u.selected===e,onClick:function(){return d("loadout_select",{name:e})},children:e},e)})):"No loadout options."}),(0,o.createComponentVNode)(2,c.Flex,{direction:"row",width:"100%",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{width:"50%",height:"100%",style:{"vertical-align":"top"},children:(0,o.createComponentVNode)(2,c.Section,{title:"Contents",fill:!0,fitted:!0,children:null!=(i=u.items)&&i.length?u.items.map((function(e){return(0,o.createVNode)(1,"div",null,[(0,o.createVNode)(1,"div",e.icon,null,1,{style:{transform:"scale(1.5)","vertical-align":"middle",float:"left",clear:"left",height:"32px",width:"32px"}}),(0,o.createVNode)(1,"div",null,[e.name,(0,o.createTextVNode)(" "),e.quantity>1&&"x"+e.quantity,(0,o.createVNode)(1,"br")],0,{style:{display:"block","vertical-align":"middle",float:"left",width:"calc(100% - 32px)","line-height":"32px",margin:"auto"}})],4,{style:{margin:"10px 10px","text-align":"center"}},""+e.name)})):"No outfit selected."})}),(0,o.createComponentVNode)(2,c.Flex.Item,{height:"100%",width:"50%",style:{"vertical-align":"top"},children:(0,o.createComponentVNode)(2,c.Section,{title:"Preview",fill:!0,children:u.preview?(0,o.createVNode)(1,"div",null,[(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/jpeg;base64,"+u.preview,style:{"image-rendering":"pixelated","-ms-interpolation-mode":"nearest-neighbor"},width:220,height:220}),(0,o.createVNode)(1,"br"),(0,o.createVNode)(1,"br"),(0,o.createVNode)(1,"div",null,[(0,o.createComponentVNode)(2,c.Button,{style:{display:"table-cell","text-align":"center"},content:"<<",onClick:function(){return d("loadout_preview_direction",{direction:-1})}}),(0,o.createComponentVNode)(2,c.Button,{style:{display:"table-cell","text-align":"center"},content:">>",onClick:function(){return d("loadout_preview_direction",{direction:1})}})],4,{style:{display:"table",width:"100%","text-align":"center"}}),(0,o.createComponentVNode)(2,c.Button,{style:{margin:"auto",display:"block","text-align":"center"},content:"Finished",onClick:function(){return d("loadout_confirm")}})],4,{style:{"text-align":"center"}}):"No outfit selected."})})]})]})})}},5568:function(e,t,n){"use strict";t.__esModule=!0,t.MafiaPanel=void 0;var o=n(39812),r=n(34380),a=(n(2497),n(71494)),c=n(74814),i=n(85952);t.MafiaPanel=function(e,t){var n=(0,a.useBackend)(t),d=n.act,u=n.data,s=u.lobbydata,m=u.players,p=u.actions,C=u.phase,h=u.roleinfo,N=u.role_theme,V=u.admin_controls,b=u.judgement_phase,f=u.timeleft,g=u.all_roles,v=h?30*m.length:7,k=s?s.filter((function(e){return"Ready"===e.status})):null;return(0,o.createComponentVNode)(2,i.Window,{title:"Mafia",theme:N,width:650,height:293+v,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:V,children:[!h&&(0,o.createComponentVNode)(2,c.Flex,{scrollable:!0,overflowY:"scroll",direction:"column",height:"100%",grow:1,children:(0,o.createComponentVNode)(2,c.Section,{title:"Lobby",mb:1,buttons:(0,o.createComponentVNode)(2,l,{phase:C,timeleft:f,admin_controls:V}),children:(0,o.createComponentVNode)(2,c.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,c.NoticeBox,{info:!0,children:["The lobby currently has ",k.length,"/12 valid players signed up."]}),(0,o.createComponentVNode)(2,c.Flex,{direction:"column",children:!!s&&s.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{basis:2,className:"Section__title candystripe",children:(0,o.createComponentVNode)(2,c.Flex,{height:2,align:"center",justify:"space-between",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{basis:0,children:e.name}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:"STATUS:"}),(0,o.createComponentVNode)(2,c.Flex.Item,{width:"30%",children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Box,{color:"Ready"===e.status?"green":"red",textAlign:"center",children:[e.status," ",e.spectating]})})})]})},e)}))})]})})}),!!h&&(0,o.createComponentVNode)(2,c.Section,{title:C,minHeight:"100px",maxHeight:"50px",buttons:(0,o.createComponentVNode)(2,c.Box,{children:[!!V&&(0,o.createComponentVNode)(2,c.Button,{color:"red",icon:"gavel",tooltipPosition:"bottom-left",tooltip:"Hello admin! If it is the admin controls you seek,\nplease notice the extra scrollbar you have that players\ndo not!"})," ",(0,o.createComponentVNode)(2,c.TimeDisplay,{auto:"down",value:f})]}),children:(0,o.createComponentVNode)(2,c.Flex,{justify:"space-between",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{align:"center",textAlign:"center",maxWidth:"500px",children:[(0,o.createVNode)(1,"b",null,[(0,o.createTextVNode)("You are the "),h.role],0),(0,o.createVNode)(1,"br"),(0,o.createVNode)(1,"b",null,h.desc,0)]}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:[(0,o.createComponentVNode)(2,c.Box,{className:(0,r.classes)(["mafia32x32",h.revealed_icon]),style:{transform:"scale(2) translate(0px, 10%)","vertical-align":"middle"}}),(0,o.createComponentVNode)(2,c.Box,{className:(0,r.classes)(["mafia32x32",h.hud_icon]),style:{transform:"scale(2) translate(-5px, -5px)","vertical-align":"middle"}})]})]})}),(0,o.createComponentVNode)(2,c.Flex,{children:!!p&&p.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return d("mf_action",{atype:e})},children:e})},e)}))}),!!h&&(0,o.createComponentVNode)(2,c.Section,{title:"Judgement",buttons:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"info",tooltipPosition:"left",tooltip:"When someone is on trial, you are in charge of their fate.\nInnocent winning means the person on trial can live to see\nanother day... and in losing they do not. You can go back\nto abstaining with the middle button if you reconsider."}),children:[(0,o.createComponentVNode)(2,c.Flex,{justify:"space-around",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"smile-beam",content:"INNOCENT!",color:"good",disabled:!b,onClick:function(){return d("vote_innocent")}}),!b&&(0,o.createComponentVNode)(2,c.Box,{children:"There is nobody on trial at the moment."}),!!b&&(0,o.createComponentVNode)(2,c.Box,{children:"It is now time to vote, vote the accused innocent or guilty!"}),(0,o.createComponentVNode)(2,c.Button,{icon:"angry",content:"GUILTY!",color:"bad",disabled:!b,onClick:function(){return d("vote_guilty")}})]}),(0,o.createComponentVNode)(2,c.Flex,{justify:"center",children:(0,o.createComponentVNode)(2,c.Button,{icon:"meh",content:"Abstain",color:"white",disabled:!b,onClick:function(){return d("vote_abstain")}})})]}),"No Game"!==C&&(0,o.createComponentVNode)(2,c.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:2,children:(0,o.createComponentVNode)(2,c.Section,{title:"Players",buttons:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"info",tooltip:"This is the list of all the players in\nthe game, during the day phase you may vote on them and,\ndepending on your role, select players\nat certain phases to use your ability."}),children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",children:!!m&&m.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{height:"30px",className:"Section__title candystripe",children:(0,o.createComponentVNode)(2,c.Flex,{height:"18px",justify:"space-between",align:"center",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{basis:16,children:[!!e.alive&&(0,o.createComponentVNode)(2,c.Box,{children:e.name}),!e.alive&&(0,o.createComponentVNode)(2,c.Box,{color:"red",children:e.name})]}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:!e.alive&&(0,o.createComponentVNode)(2,c.Box,{color:"red",children:"DEAD"})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:e.votes!==undefined&&!!e.alive&&(0,o.createFragment)([(0,o.createTextVNode)("Votes : "),e.votes,(0,o.createTextVNode)(" ")],0)}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:!!e.actions&&e.actions.map((function(t){return(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return d("mf_targ_action",{atype:t,target:e.ref})},children:t},t)}))})]})},e.ref)}))})})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:2,children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,c.Section,{title:"Roles and Notes",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"address-book",tooltipPosition:"bottom-left",tooltip:"The top section is the roles in the game. You can\npress the question mark to get a quick blurb\nabout the role itself."}),(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"edit",tooltipPosition:"bottom-left",tooltip:"The bottom section are your notes. on some roles this\nwill just be an empty box, but on others it records the\nactions of your abilities (so for example, your\ndetective work revealing a changeling)."})],4),children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",children:!!g&&g.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{height:"30px",className:"Section__title candystripe",children:(0,o.createComponentVNode)(2,c.Flex,{height:"18px",align:"center",justify:"space-between",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{children:e}),(0,o.createComponentVNode)(2,c.Flex.Item,{textAlign:"right",children:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"question",onClick:function(){return d("mf_lookup",{atype:e.slice(0,-3)})}})})]})},e)}))})}),!!h&&(0,o.createComponentVNode)(2,c.Flex.Item,{height:0,grow:1,children:(0,o.createComponentVNode)(2,c.Section,{scrollable:!0,fill:!0,overflowY:"scroll",children:h!==undefined&&!!h.action_log&&h.action_log.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:e},e)}))})})]})})]}),(0,o.createComponentVNode)(2,c.Flex,{mt:1,direction:"column",children:(0,o.createComponentVNode)(2,c.Flex.Item,{children:!!V&&(0,o.createComponentVNode)(2,c.Section,{textAlign:"center",children:(0,o.createComponentVNode)(2,c.Collapsible,{title:"ADMIN CONTROLS",color:"red",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"exclamation-triangle",color:"black",tooltipPosition:"top",tooltip:"Almost all of these are all built to help me debug\nthe game (ow, debugging a 12 player game!) So they are\nrudamentary and prone to breaking at the drop of a hat.\nMake sure you know what you're doing when you press one.\nAlso because an admin did it: do not gib/delete/dust\nanyone! It will runtime the game to death!",content:"A Kind, Coder Warning",onClick:function(){return d("next_phase")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-right",tooltipPosition:"top",tooltip:"This will advance the game to the next phase\n(day talk > day voting, day voting > night/trial)\npretty fun to just spam this and freak people out,\ntry that roundend!",content:"Next Phase",onClick:function(){return d("next_phase")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"home",tooltipPosition:"top",tooltip:"Hopefully you won't use this button\noften, it's a safety net just in case\nmafia players somehow escape (nullspace\nredirects to the error room then station)\nEither way, VERY BAD IF THAT HAPPENS as\ngodmoded assistants will run free. Use\nthis to recollect them then make a bug report.",content:"Send All Players Home",onClick:function(){return d("players_home")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sync-alt",tooltipPosition:"top",tooltip:"This immediately ends the game, and attempts to start\nanother. Nothing will happen if another\ngame fails to start!",content:"New Game",onClick:function(){return d("new_game")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"skull",tooltipPosition:"top",tooltip:"Deletes the datum, clears all landmarks, makes mafia\nas it was roundstart: nonexistant. Use this if you\nreally mess things up. You did mess things up, didn't you.",content:"Nuke",onClick:function(){return d("nuke")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Button,{icon:"paint-brush",tooltipPosition:"top",tooltip:"This is the custom game creator, it is... simple.\nYou put in roles and until you press CANCEL or FINISH\nit will keep letting you add more roles. Assitants\non the bottom because of pathing stuff. Resets after\nthe round finishes back to 12 player random setups.",content:"Create Custom Setup",onClick:function(){return d("debug_setup")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"paint-roller",tooltipPosition:"top",tooltip:"If you messed up and accidently didn't make it how\nyou wanted, simply just press this to reset it. The game\nwill auto reset after each game as well.",content:"Reset Custom Setup",onClick:function(){return d("cancel_setup")}})]})})})})]})})};var l=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.phase,d=i.timeleft,u=i.admin_controls;return(0,o.createComponentVNode)(2,c.Box,{children:["[Phase = ",l," | ",(0,o.createComponentVNode)(2,c.TimeDisplay,{auto:"down",value:d}),"]"," ",(0,o.createComponentVNode)(2,c.Button,{icon:"clipboard-check",tooltipPosition:"bottom-left",tooltip:"Signs you up for the next game. If there\nis an ongoing one, you will be signed up\nfor the next.",content:"Sign Up",onClick:function(){return r("mf_signup")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"eye",tooltipPosition:"bottom-left",tooltip:"Spectates games until you turn it off.\nAutomatically enabled when you die in game,\nbecause I assumed you would want to see the\nconclusion. You won't get messages if you\nrejoin SS13.",content:"Spectate",onClick:function(){return r("mf_spectate")}}),!!u&&(0,o.createComponentVNode)(2,c.Button,{color:"red",icon:"gavel",tooltipPosition:"bottom-left",tooltip:"Hello admin! If it is the admin controls you seek,\nplease notice the scrollbar you have that players\ndo not!"})]})}},42159:function(e,t,n){"use strict";t.__esModule=!0,t.MalfunctionModulePicker=void 0;var o=n(39812),r=n(71494),a=n(85952),c=n(89761);t.MalfunctionModulePicker=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.processingTime);return(0,o.createComponentVNode)(2,a.Window,{width:620,height:525,theme:"malfunction",resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.GenericUplink,{currencyAmount:i,currencySymbol:"PT"})})})}},80881:function(e,t,n){"use strict";t.__esModule=!0,t.MechBayPowerConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.MechBayPowerConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.recharge_port,d=l&&l.mech,u=d&&d.cell;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:200,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Mech status",textAlign:"center",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Sync",onClick:function(){return i("reconnect")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.health/d.maxhealth,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||!u&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cell is installed."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.charge/u.maxcharge,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u.charge})," / "+u.maxcharge]})})]})})})})}},37305:function(e,t,n){"use strict";t.__esModule=!0,t.MechpadConsole=t.MechpadControl=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=function(e,t){var n=e.topLevel,c=(0,r.useBackend)(t),i=c.act,l=c.data,d=l.pad_name,u=l.connected_mechpad;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Input,{value:d,width:"170px",onChange:function(e,t){return i("rename",{name:t})}}),level:n?1:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Remove",color:"bad",onClick:function(){return i("remove")}}),children:!u&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",textAlign:"center",children:"No Pad Connected."})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"upload",content:"Launch",textAlign:"center",onClick:function(){return i("launch")}})})};t.MechpadControl=i;t.MechpadConsole=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.mechpads,s=void 0===u?[]:u,m=d.selected_id;return(0,o.createComponentVNode)(2,c.Window,{width:475,height:130,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:0===s.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Pads Connected"})||(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{minHeight:"70px",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"140px",minHeight:"70px",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,ellipsis:!0,content:e.name,selected:m===e.id,color:"transparent",onClick:function(){return l("select_pad",{id:e.id})}},e.name)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{minHeight:"100%",children:(0,o.createComponentVNode)(2,a.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,minHeight:"100%",children:m&&(0,o.createComponentVNode)(2,i)||(0,o.createComponentVNode)(2,a.Box,{children:"Please select a pad"})})]})})})})}},74702:function(e,t,n){"use strict";t.__esModule=!0,t.MedicalKiosk=void 0;var o=n(39812),r=(n(2497),n(71494)),a=n(74814),c=n(85952);t.MedicalKiosk=function(e,t){var n=(0,r.useBackend)(t),p=(n.act,n.data),C=(0,r.useSharedState)(t,"scanIndex")[0],h=p.active_status_1,N=p.active_status_2,V=p.active_status_3,b=p.active_status_4;return(0,o.createComponentVNode)(2,c.Window,{width:575,height:420,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Flex,{mb:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:1,children:(0,o.createComponentVNode)(2,a.Section,{minHeight:"100%",children:[(0,o.createComponentVNode)(2,i,{index:1,icon:"procedures",name:"General Health Scan",description:"Reads back exact values of your general health scan."}),(0,o.createComponentVNode)(2,i,{index:2,icon:"heartbeat",name:"Symptom Based Checkup",description:"Provides information based on various non-obvious symptoms,\nlike blood levels or disease status."}),(0,o.createComponentVNode)(2,i,{index:3,icon:"radiation-alt",name:"Neurological/Radiological Scan",description:"Provides information about brain trauma and radiation."}),(0,o.createComponentVNode)(2,i,{index:4,icon:"mortar-pestle",name:"Chemical and Psychoactive Scan",description:"Provides a list of consumed chemicals, as well as potential\nside effects."})]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,l)})]}),!!h&&1===C&&(0,o.createComponentVNode)(2,d),!!N&&2===C&&(0,o.createComponentVNode)(2,u),!!V&&3===C&&(0,o.createComponentVNode)(2,s),!!b&&4===C&&(0,o.createComponentVNode)(2,m)]})})};var i=function(e,t){var n=e.index,c=e.name,i=e.description,l=e.icon,d=(0,r.useBackend)(t),u=d.act,s=d.data,m=(0,r.useSharedState)(t,"scanIndex"),p=m[0],C=m[1],h=s["active_status_"+n];return(0,o.createComponentVNode)(2,a.Flex,{spacing:1,align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"16px",textAlign:"center",children:(0,o.createComponentVNode)(2,a.Icon,{name:h?"check":"dollar-sign",color:h?"green":"grey"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:l,selected:h&&p===n,tooltip:i,tooltipPosition:"right",content:c,onClick:function(){h||u("beginScan_"+n),C(n)}})})]})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.kiosk_cost,d=i.patient_name;return(0,o.createComponentVNode)(2,a.Section,{minHeight:"100%",children:[(0,o.createComponentVNode)(2,a.Box,{italic:!0,children:["Greetings Valued Employee! Please select a desired automatic health check procedure. Diagnosis costs ",(0,o.createVNode)(1,"b",null,[l,(0,o.createTextVNode)(" credits.")],0)]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:1,children:"Patient:"}),d]}),(0,o.createComponentVNode)(2,a.Button,{mt:1,tooltip:"Resets the current scanning target, cancelling current scans.",icon:"sync",color:"average",onClick:function(){return c("clearTarget")},content:"Reset Scanner"})]})},d=function(e,t){var n=(0,r.useBackend)(t).data,c=n.patient_health,i=n.brute_health,l=n.burn_health,d=n.suffocation_health,u=n.toxin_health;return(0,o.createComponentVNode)(2,a.Section,{title:"Patient Health",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c/100,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c}),"%"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brute Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Burn Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:l})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Oxygen Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Toxin Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})})})]})})},u=function(e,t){var n=(0,r.useBackend)(t).data,c=n.patient_status,i=n.patient_illness,l=n.illness_info,d=n.bleed_status,u=n.blood_levels,s=n.blood_status;return(0,o.createComponentVNode)(2,a.Section,{title:"Symptom Based Checkup",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Patient Status",color:"good",children:c}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disease Status",children:i}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disease information",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Levels",children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:u/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})}),(0,o.createComponentVNode)(2,a.Box,{mt:1,color:"label",children:d})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Information",children:s})]})})},s=function(e,t){var n=(0,r.useBackend)(t).data,c=n.clone_health,i=n.brain_damage,l=n.brain_health,d=n.rad_contamination_status,u=n.rad_contamination_value,s=n.rad_sickness_status,m=n.rad_sickness_value,p=n.trauma_status;return(0,o.createComponentVNode)(2,a.Section,{title:"Patient Neurological and Radiological Health",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cellular Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c/100,color:"good",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c})})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i/100,color:"good",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Status",color:"health-0",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Trauma Status",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Sickness Status",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Sickness Percentage",children:[m,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Contamination Status",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Contamination Percentage",children:[u,"%"]})]})})},m=function(e,t){var n=(0,r.useBackend)(t).data,c=n.chemical_list,i=void 0===c?[]:c,l=n.overdose_list,d=void 0===l?[]:l,u=n.addict_list,s=void 0===u?[]:u,m=n.hallucinating_status;return(0,o.createComponentVNode)(2,a.Section,{title:"Chemical and Psychoactive Analysis",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Chemical Contents",children:[0===i.length&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No reagents detected."}),i.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[e.volume," units of ",e.name]},e.id)}))]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Overdose Status",color:"bad",children:[0===d.length&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Patient is not overdosing."}),d.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["Overdosing on ",e.name]},e.id)}))]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Addiction Status",color:"bad",children:[0===s.length&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Patient has no addictions."}),s.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["Addicted to ",e.name]},e.id)}))]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Psychoactive Status",children:m})]})})}},61443:function(e,t,n){"use strict";t.__esModule=!0,t.Microscope=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Microscope=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=(0,r.useSharedState)(t,"tab",1),m=s[0],p=s[1],C=u.has_dish,h=u.cell_lines,N=void 0===h?[]:h,V=u.viruses,b=void 0===V?[]:V;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Dish Sample",children:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!C,onClick:function(){return d("eject_petridish")}})})})}),(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"microscope",lineHeight:"23px",selected:1===m,onClick:function(){return p(1)},children:["Micro-Organisms (",N.length,")"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"microscope",lineHeight:"23px",selected:2===m,onClick:function(){return p(2)},children:["Viruses (",b.length,")"]})]}),1===m&&(0,o.createComponentVNode)(2,i,{cell_lines:N}),2===m&&(0,o.createComponentVNode)(2,l,{viruses:b})]})})};var i=function(e,t){var n=e.cell_lines,c=(0,r.useBackend)(t);c.act,c.data;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.desc,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Growth Rate",children:e.growth_rate}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Virus Suspectibility",children:e.suspectibility}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Required Reagents",children:e.requireds}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Supplementary Reagents",children:e.supplementaries}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suppresive reagents",children:e.suppressives})]})},e.desc)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No micro-organisms found"})},l=function(e,t){var n=e.viruses;(0,r.useBackend)(t).act;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.desc},e.desc)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No viruses found"})}},62012:function(e,t,n){"use strict";t.__esModule=!0,t.MiningVendor=void 0;var o=n(39812),r=n(34380),a=n(71494),c=n(74814),i=n(85952);t.MiningVendor=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=[].concat(d.product_records);return(0,o.createComponentVNode)(2,i.Window,{width:425,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{title:"User",children:d.user&&(0,o.createComponentVNode)(2,c.Box,{children:["Welcome, ",(0,o.createVNode)(1,"b",null,d.user.name||"Unknown",0),","," ",(0,o.createVNode)(1,"b",null,d.user.job||"Unemployed",0),"!",(0,o.createVNode)(1,"br"),"Your balance is ",(0,o.createVNode)(1,"b",null,[d.user.points,(0,o.createTextVNode)(" mining points")],0),"."]})||(0,o.createComponentVNode)(2,c.Box,{color:"light-gray",children:["No registered ID card!",(0,o.createVNode)(1,"br"),"Please contact your local HoP!"]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Equipment",children:(0,o.createComponentVNode)(2,c.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:[(0,o.createVNode)(1,"span",(0,r.classes)(["vending32x32",e.path]),null,1,{style:{"vertical-align":"middle"}})," ",(0,o.createVNode)(1,"b",null,e.name,0)]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{style:{"min-width":"95px","text-align":"center"},disabled:!d.user||e.price>d.user.points,content:e.price+" points",onClick:function(){return l("purchase",{ref:e.ref})}})})]},e.name)}))})})]})})}},83413:function(e,t,n){"use strict";t.__esModule=!0,t.Mint=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Mint=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.inserted_materials||[];return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Materials",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l.processing?"times":"power-off",content:l.processing?"Stop":"Start",selected:l.processing,onClick:function(){return i(l.processing?"stoppress":"startpress")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.material,buttons:(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:l.chosen_material===e.material,onClick:function(){return i("changematerial",{material_name:e.material})}}),children:[e.amount," cm\xb3"]},e.material)}))})}),(0,o.createComponentVNode)(2,a.Section,{children:["Pressed ",l.produced_coins," coins this cycle."]})]})})}},97397:function(e,t,n){"use strict";t.__esModule=!0,t.Mule=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=n(21451);t.Mule=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.on,s=d.cell,m=d.cellPercent,p=d.load,C=d.mode,h=d.modeStatus,N=d.haspai,V=d.autoReturn,b=d.autoPickup,f=d.reportDelivery,g=d.destination,v=d.home,k=d.id,x=d.destinations,B=void 0===x?[]:x,_=d.locked&&!d.siliconUser;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:425,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,a.Section,{title:"Status",minHeight:"110px",buttons:!_&&(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return l("power")}}),children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:s?m/100:0,color:s?"good":"bad"}),(0,o.createComponentVNode)(2,a.Flex,{mt:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",color:h,children:C})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Load",color:p?"good":"average",children:p||"None"})})})]})]}),!_&&(0,o.createComponentVNode)(2,a.Section,{title:"Controls",buttons:(0,o.createFragment)([!!p&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Unload",onClick:function(){return l("unload")}}),!!N&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject PAI",onClick:function(){return l("ejectpai")}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID",children:(0,o.createComponentVNode)(2,a.Input,{value:k,onChange:function(e,t){return l("setid",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:[(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:g||"None",options:B,width:"150px",onSelected:function(e){return l("destination",{value:e})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"stop",content:"Stop",onClick:function(){return l("stop")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"play",content:"Go",onClick:function(){return l("go")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Home",children:[(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:v,options:B,width:"150px",onSelected:function(e){return l("destination",{value:e})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"home",content:"Go Home",onClick:function(){return l("home")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Settings",children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:V,content:"Auto-Return",onClick:function(){return l("autored")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:b,content:"Auto-Pickup",onClick:function(){return l("autopick")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:f,content:"Report Delivery",onClick:function(){return l("report")}})]})]})})]})})}},42370:function(e,t,n){"use strict";t.__esModule=!0,t.NaniteChamberControlContent=t.NaniteChamberControl=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NaniteChamberControl=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:380,height:570,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.status_msg,d=i.locked,u=i.occupant_name,s=i.has_nanites,m=i.nanite_volume,p=i.regen_rate,C=i.safety_threshold,h=i.cloud_id,N=i.scan_level;if(l)return(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:l});var V=i.mob_programs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Chamber: "+u,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d?"lock":"lock-open",content:d?"Locked":"Unlocked",color:d?"bad":"default",onClick:function(){return c("toggle_lock")}}),children:s?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",content:"Destroy Nanites",color:"bad",onClick:function(){return c("remove_nanites")}}),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nanite Volume",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Growth Rate",children:p})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Safety Threshold",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:C,minValue:0,maxValue:500,width:"39px",onChange:function(e,t){return c("set_safety",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloud ID",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:h,minValue:0,maxValue:100,step:1,stepPixelSize:3,width:"39px",onChange:function(e,t){return c("set_cloud",{value:t})}})})]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Programs",level:2,children:V.map((function(e){var t=e.extra_settings||[],n=e.rules||[];return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.name,children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:e.desc}),N>=2&&(0,o.createComponentVNode)(2,a.Grid.Column,{size:.6,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.activated?"good":"bad",children:e.activated?"Active":"Inactive"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nanites Consumed",children:[e.use_rate,"/s"]})]})})]}),N>=2&&(0,o.createComponentVNode)(2,a.Grid,{children:[!!e.can_trigger&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Triggers",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:e.trigger_cost}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:e.trigger_cooldown}),!!e.timer_trigger_delay&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[e.timer_trigger_delay," s"]}),!!e.timer_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:[e.timer_trigger," s"]})]})})}),!(!e.timer_restart&&!e.timer_shutdown)&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[e.timer_restart&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:[e.timer_restart," s"]}),e.timer_shutdown&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:[e.timer_shutdown," s"]})]})})})]}),N>=3&&!!e.has_extra_settings&&(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:t.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:e.value},e.name)}))})}),N>=4&&(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[!!e.activation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:e.activation_code}),!!e.deactivation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:e.deactivation_code}),!!e.kill_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:e.kill_code}),!!e.can_trigger&&!!e.trigger_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:e.trigger_code})]})})}),e.has_rules&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Rules",level:2,children:n.map((function(e){return(0,o.createFragment)([e.display,(0,o.createVNode)(1,"br")],0,e.display)}))})})]})]})},e.name)}))})],4):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",textAlign:"center",fontSize:"30px",mb:1,children:"No Nanites Detected"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,icon:"syringe",content:" Implant Nanites",color:"green",textAlign:"center",fontSize:"30px",lineHeight:"50px",onClick:function(){return c("nanite_injection")}})],4)})};t.NaniteChamberControlContent=i},93623:function(e,t,n){"use strict";t.__esModule=!0,t.NaniteCloudControl=t.NaniteCloudBackupDetails=t.NaniteCloudBackupList=t.NaniteInfoBox=t.NaniteDiskBox=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=function(e,t){var n=(0,r.useBackend)(t).data,c=n.has_disk,i=n.has_program,d=n.disk;return c?i?(0,o.createComponentVNode)(2,l,{program:d}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Inserted disk has no program"}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No disk inserted"})};t.NaniteDiskBox=i;var l=function(e,t){var n=e.program,r=n.name,c=n.desc,i=n.activated,l=n.use_rate,d=n.can_trigger,u=n.trigger_cost,s=n.trigger_cooldown,m=n.activation_code,p=n.deactivation_code,C=n.kill_code,h=n.trigger_code,N=n.timer_restart,V=n.timer_shutdown,b=n.timer_trigger,f=n.timer_trigger_delay,g=n.extra_settings||[];return(0,o.createComponentVNode)(2,a.Section,{title:r,level:2,buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:i?"good":"bad",children:i?"Activated":"Deactivated"}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{mr:1,children:c}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:l}),!!d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:u}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:s})],4)]})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:C}),!!d&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:h})]})})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart",children:[N," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown",children:[V," s"]}),!!d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:[b," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[f," s"]})],4)]})})})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:g.map((function(e){var t={number:(0,o.createFragment)([e.value,e.unit],0),text:e.value,type:e.value,boolean:e.value?e.true_text:e.false_text};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:t[e.type]},e.name)}))})})]})};t.NaniteInfoBox=l;var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act;return(n.data.cloud_backups||[]).map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Backup #"+e.cloud_id,textAlign:"center",onClick:function(){return c("set_view",{view:e.cloud_id})}},e.cloud_id)}))};t.NaniteCloudBackupList=d;var u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,d=i.current_view,u=i.disk,s=i.has_program,m=i.cloud_backup,p=u&&u.can_rule||!1;if(!m)return(0,o.createComponentVNode)(2,a.NoticeBox,{children:"ERROR: Backup not found"});var C=i.cloud_programs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Backup #"+d,level:2,buttons:!!s&&(0,o.createComponentVNode)(2,a.Button,{icon:"upload",content:"Upload From Disk",color:"good",onClick:function(){return c("upload_program")}}),children:C.map((function(e){var t=e.rules||[];return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return c("remove_program",{program_id:e.id})}}),children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,l,{program:e}),(!!p||!!e.has_rules)&&(0,o.createComponentVNode)(2,a.Section,{mt:-2,title:"Rules",level:2,buttons:!!p&&(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Add Rule from Disk",color:"good",onClick:function(){return c("add_rule",{program_id:e.id})}}),children:e.has_rules?t.map((function(t){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return c("remove_rule",{program_id:e.id,rule_id:t.id})}})," "+t.display]},t.display)})):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No Active Rules"})})]})},e.name)}))})};t.NaniteCloudBackupDetails=u;t.NaniteCloudControl=function(e,t){var n=(0,r.useBackend)(t),l=n.act,s=n.data,m=s.has_disk,p=s.current_view,C=s.new_backup_id;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Program Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!m,onClick:function(){return l("eject")}}),children:(0,o.createComponentVNode)(2,i)}),(0,o.createComponentVNode)(2,a.Section,{title:"Cloud Storage",buttons:p?(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Return",onClick:function(){return l("set_view",{view:0})}}):(0,o.createFragment)(["New Backup: ",(0,o.createComponentVNode)(2,a.NumberInput,{value:C,minValue:1,maxValue:100,stepPixelSize:4,width:"39px",onChange:function(e,t){return l("update_new_backup_value",{value:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return l("create_backup")}})],0),children:s.current_view?(0,o.createComponentVNode)(2,u):(0,o.createComponentVNode)(2,d)})]})})}},22682:function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgramHub=void 0;var o=n(39812),r=n(64499),a=n(71494),c=n(74814),i=n(85952);t.NaniteProgramHub=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.detail_view,s=d.disk,m=d.has_disk,p=d.has_program,C=d.programs,h=void 0===C?{}:C,N=(0,a.useSharedState)(t,"category"),V=N[0],b=N[1],f=h&&h[V]||[];return(0,o.createComponentVNode)(2,i.Window,{width:500,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{title:"Program Disk",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",onClick:function(){return l("eject")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"minus-circle",content:"Delete Program",onClick:function(){return l("clear")}})],4),children:m?p?(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Program Name",children:s.name}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",children:s.desc})]}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No Program Installed"}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"Insert Disk"})}),(0,o.createComponentVNode)(2,c.Section,{title:"Programs",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:u?"info":"list",content:u?"Detailed":"Compact",onClick:function(){return l("toggle_details")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Sync Research",onClick:function(){return l("refresh")}})],4),children:null!==h?(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{minWidth:"110px",children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:(0,r.map)((function(e,t){var n=t.substring(0,t.length-8);return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:t===V,onClick:function(){return b(t)},children:n},t)}))(h)})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:u?f.map((function(e){return(0,o.createComponentVNode)(2,c.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"download",content:"Download",disabled:!m,onClick:function(){return l("download",{program_id:e.id})}}),children:e.desc},e.id)})):(0,o.createComponentVNode)(2,c.LabeledList,{children:f.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"download",content:"Download",disabled:!m,onClick:function(){return l("download",{program_id:e.id})}})},e.id)}))})})]}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No nanite programs are currently researched."})})]})})}},87554:function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgrammerContent=t.NaniteProgrammer=t.NaniteExtraBoolean=t.NaniteExtraType=t.NaniteExtraText=t.NaniteExtraNumber=t.NaniteExtraEntry=t.NaniteDelays=t.NaniteCodes=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.activation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"activation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.deactivation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"deactivation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.kill_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"kill",code:t})}})}),!!i.can_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.trigger_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"trigger",code:t})}})})]})})};t.NaniteCodes=i;var l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,ml:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_restart,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_restart_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_shutdown,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_shutdown_timer",{delay:t})}})}),!!i.can_trigger&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_trigger_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger_delay,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_timer_trigger_delay",{delay:t})}})})],4)]})})};t.NaniteDelays=l;var d=function(e,t){var n=e.extra_setting,r=n.name,c=n.type,i={number:(0,o.createComponentVNode)(2,u,{extra_setting:n}),text:(0,o.createComponentVNode)(2,s,{extra_setting:n}),type:(0,o.createComponentVNode)(2,m,{extra_setting:n}),boolean:(0,o.createComponentVNode)(2,p,{extra_setting:n})};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:r,children:i[c]})};t.NaniteExtraEntry=d;var u=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value,d=n.min,u=n.max,s=n.unit;return(0,o.createComponentVNode)(2,a.NumberInput,{value:l,width:"64px",minValue:d,maxValue:u,unit:s,onChange:function(e,t){return c("set_extra_setting",{target_setting:i,value:t})}})};t.NaniteExtraNumber=u;var s=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value;return(0,o.createComponentVNode)(2,a.Input,{value:l,width:"200px",onInput:function(e,t){return c("set_extra_setting",{target_setting:i,value:t})}})};t.NaniteExtraText=s;var m=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value,d=n.types;return(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:l,width:"150px",options:d,onSelected:function(e){return c("set_extra_setting",{target_setting:i,value:e})}})};t.NaniteExtraType=m;var p=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value,d=n.true_text,u=n.false_text;return(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:l?d:u,checked:l,onClick:function(){return c("set_extra_setting",{target_setting:i})}})};t.NaniteExtraBoolean=p;t.NaniteProgrammer=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:420,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,C)})})};var C=function(e,t){var n=(0,r.useBackend)(t),c=n.act,u=n.data,s=u.has_disk,m=u.has_program,p=u.name,C=u.desc,h=u.use_rate,N=u.can_trigger,V=u.trigger_cost,b=u.trigger_cooldown,f=u.activated,g=u.has_extra_settings,v=u.extra_settings,k=void 0===v?{}:v;return s?m?(0,o.createComponentVNode)(2,a.Section,{title:p,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("eject")}}),children:[(0,o.createComponentVNode)(2,a.Section,{title:"Info",level:2,children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:C}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.7,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:h}),!!N&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:V}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:b})],4)]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Settings",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:f?"power-off":"times",content:f?"Active":"Inactive",selected:f,color:"bad",bold:!0,onClick:function(){return c("toggle_active")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,i)}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,l)})]}),!!g&&(0,o.createComponentVNode)(2,a.Section,{title:"Special",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:k.map((function(e){return(0,o.createComponentVNode)(2,d,{extra_setting:e},e.name)}))})})]})]}):(0,o.createComponentVNode)(2,a.Section,{title:"Blank Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("eject")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Insert a nanite program disk"})};t.NaniteProgrammerContent=C},73708:function(e,t,n){"use strict";t.__esModule=!0,t.NaniteRemoteContent=t.NaniteRemote=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NaniteRemote=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:420,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.code,d=i.locked,u=i.mode,s=i.program_name,m=i.relay_code,p=i.comms,C=i.message,h=i.saved_settings,N=void 0===h?[]:h;return d?(0,o.createComponentVNode)(2,a.NoticeBox,{children:"This interface is locked."}):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Nanite Control",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lock",content:"Lock Interface",onClick:function(){return c("lock")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:[(0,o.createComponentVNode)(2,a.Input,{value:s,maxLength:14,width:"130px",onChange:function(e,t){return c("update_name",{name:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"save",content:"Save",onClick:function(){return c("save")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:p?"Comm Code":"Signal Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return c("set_code",{code:t})}})}),!!p&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",children:(0,o.createComponentVNode)(2,a.Input,{value:C,width:"270px",onChange:function(e,t){return c("set_message",{value:t})}})}),"Relay"===u&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Relay Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:m,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return c("set_relay_code",{code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Signal Mode",children:["Off","Local","Targeted","Area","Relay"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,selected:u===e,onClick:function(){return c("select_mode",{mode:e})}},e)}))})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Saved Settings",children:N.length>0?(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{width:"35%",children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"20%",children:"Mode"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Code"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Relay"})]}),N.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:"label",children:[e.name,":"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.mode}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.code}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Relay"===e.mode&&e.relay_code}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"upload",color:"good",onClick:function(){return c("load",{save_id:e.id})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"minus",color:"bad",onClick:function(){return c("remove_save",{save_id:e.id})}})]})]},e.id)}))]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No settings currently saved"})})],4)};t.NaniteRemoteContent=i},15394:function(e,t,n){"use strict";t.__esModule=!0,t.NotificationPreferences=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NotificationPreferences=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=(n.data.ignore||[]).sort((function(e,t){var n=e.desc.toLowerCase(),o=t.desc.toLowerCase();return no?1:0}));return(0,o.createComponentVNode)(2,c.Window,{title:"Notification Preferences",width:270,height:360,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Ghost Role Notifications",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:e.enabled?"times":"check",content:e.desc,color:e.enabled?"bad":"good",onClick:function(){return i("toggle_ignore",{key:e.key})}},e.key)}))})})})}},53158:function(e,t,n){"use strict";t.__esModule=!0,t.NtnetRelay=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtnetRelay=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.enabled,u=l.dos_capacity,s=l.dos_overload,m=l.dos_crashed;return(0,o.createComponentVNode)(2,c.Window,{title:"NtNet Quantum Relay",width:400,height:300,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Network Buffer",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",selected:d,content:d?"ENABLED":"DISABLED",onClick:function(){return i("toggle")}}),children:m?(0,o.createComponentVNode)(2,a.Box,{fontFamily:"monospace",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",children:"NETWORK BUFFER OVERFLOW"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",children:"OVERLOAD RECOVERY MODE"}),(0,o.createComponentVNode)(2,a.Box,{children:"This system is suffering temporary outage due to overflow of traffic buffers. Until buffered traffic is processed, all further requests will be dropped. Frequent occurences of this error may indicate insufficient hardware capacity of your network. Please contact your network planning department for instructions on how to resolve this issue."}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",color:"bad",children:"ADMINISTRATOR OVERRIDE"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",color:"bad",children:"CAUTION - DATA LOSS MAY OCCUR"}),(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"PURGE BUFFER",mt:1,color:"bad",onClick:function(){return i("restart")}})]}):(0,o.createComponentVNode)(2,a.ProgressBar,{value:s,minValue:0,maxValue:u,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:s})," GQ"," / ",u," GQ"]})})})})}},86156:function(e,t,n){"use strict";t.__esModule=!0,t.NtosAiRestorer=void 0;var o=n(39812),r=n(85952),a=n(33084);t.NtosAiRestorer=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:370,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.AiRestorerContent)})})}},79760:function(e,t,n){"use strict";t.__esModule=!0,t.NtosArcade=void 0;var o=n(39812),r=n(5908),a=n(71494),c=n(74814),i=n(85952);t.NtosArcade=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:450,height:350,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,c.Section,{title:"Outbomb Cuban Pete Ultra",textAlign:"center",children:[(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:2,children:[(0,o.createComponentVNode)(2,c.Box,{m:1}),(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Player Health",children:(0,o.createComponentVNode)(2,c.ProgressBar,{value:d.PlayerHitpoints,minValue:0,maxValue:30,ranges:{olive:[31,Infinity],good:[20,31],average:[10,20],bad:[-Infinity,10]},children:[d.PlayerHitpoints,"HP"]})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Player Magic",children:(0,o.createComponentVNode)(2,c.ProgressBar,{value:d.PlayerMP,minValue:0,maxValue:10,ranges:{purple:[11,Infinity],violet:[3,11],bad:[-Infinity,3]},children:[d.PlayerMP,"MP"]})})]}),(0,o.createComponentVNode)(2,c.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,c.Section,{backgroundColor:1===d.PauseState?"#1b3622":"#471915",children:d.Status})]}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:[(0,o.createComponentVNode)(2,c.ProgressBar,{value:d.Hitpoints,minValue:0,maxValue:45,ranges:{good:[30,Infinity],average:[5,30],bad:[-Infinity,5]},children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:d.Hitpoints}),"HP"]}),(0,o.createComponentVNode)(2,c.Box,{m:1}),(0,o.createComponentVNode)(2,c.Section,{inline:!0,width:"156px",textAlign:"center",children:(0,o.createVNode)(1,"img",null,null,1,{src:(0,r.resolveAsset)(d.BossID)})})]})]}),(0,o.createComponentVNode)(2,c.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,c.Button,{icon:"fist-raised",tooltip:"Go in for the kill!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("Attack")},content:"Attack!"}),(0,o.createComponentVNode)(2,c.Button,{icon:"band-aid",tooltip:"Heal yourself!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("Heal")},content:"Heal!"}),(0,o.createComponentVNode)(2,c.Button,{icon:"magic",tooltip:"Recharge your magic!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("Recharge_Power")},content:"Recharge!"})]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Button,{icon:"sync-alt",tooltip:"One more game couldn't hurt.",tooltipPosition:"top",disabled:1===d.GameActive,onClick:function(){return l("Start_Game")},content:"Begin Game"}),(0,o.createComponentVNode)(2,c.Button,{icon:"ticket-alt",tooltip:"Claim at your local Arcade Computer for Prizes!",tooltipPosition:"top",disabled:1===d.GameActive,onClick:function(){return l("Dispense_Tickets")},content:"Claim Tickets"})]}),(0,o.createComponentVNode)(2,c.Box,{color:d.TicketCount>=1?"good":"normal",children:["Earned Tickets: ",d.TicketCount]})]})})})}},5313:function(e,t,n){"use strict";t.__esModule=!0,t.NtosAtmos=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(41860),i=n(71494),l=n(74814),d=n(76270),u=n(85952);t.NtosAtmos=function(e,t){var n=(0,i.useBackend)(t),s=(n.act,n.data),m=s.AirTemp,p=s.AirPressure,C=(0,a.flow)([(0,r.filter)((function(e){return e.percentage>=.01})),(0,r.sortBy)((function(e){return-e.percentage}))])(s.AirData||[]),h=Math.max.apply(Math,[1].concat(C.map((function(e){return e.percentage}))));return(0,o.createComponentVNode)(2,u.NtosWindow,{width:300,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,u.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.Section,{children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Temperature",children:[m,"\xb0C"]}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Pressure",children:[p," kPa"]})]})}),(0,o.createComponentVNode)(2,l.Section,{children:(0,o.createComponentVNode)(2,l.LabeledList,{children:C.map((function(e){return(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:(0,d.getGasLabel)(e.name),children:(0,o.createComponentVNode)(2,l.ProgressBar,{color:(0,d.getGasColor)(e.name),value:e.percentage,minValue:0,maxValue:h,children:(0,c.toFixed)(e.percentage,2)+"%"})},e.name)}))})})]})})}},78502:function(e,t,n){"use strict";t.__esModule=!0,t.NtosBountyConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(58083),i=n(85952);t.NtosBountyConsole=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data.bountydata,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:750,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,l),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print Bounty List",onClick:function(){return c("Print")}}),children:(0,o.createComponentVNode)(2,a.Table,{border:!0,children:[(0,o.createComponentVNode)(2,a.Table.Row,{bold:!0,italic:!0,color:"label",fontSize:1.25,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Bounty Object"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Description"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Progress"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Value"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Claim"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{backgroundColor:1===e.priority?"rgba(252, 152, 3, 0.25)":"",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{italic:!0,textAlign:"center",p:1,children:e.description}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:[1===e.priority?(0,o.createComponentVNode)(2,a.Box,{children:"High Priority"}):"",e.completion_string]}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:e.reward_string}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:1===e.claimed?"check":"",content:1===e.claimed?"Claimed":"Claim",disabled:1===e.claimed,color:1===e.can_claim?"green":"red",onClick:function(){return c("ClaimBounty",{bounty:e.bounty_ref})}})})]},e.name)}))]})})})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.stored_cash);return(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i,format:function(e){return(0,c.formatMoney)(e)}})," credits"]})}},30495:function(e,t,n){"use strict";t.__esModule=!0,t.NtosCardContent=t.NtosCard=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=n(5665);t.NtosCard=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:450,height:520,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=(0,r.useLocalState)(t,"tab",1),u=d[0],s=d[1],m=l.authenticated,p=l.regions,C=void 0===p?[]:p,h=l.access_on_card,N=void 0===h?[]:h,V=l.jobs,b=void 0===V?{}:V,f=l.id_rank,g=l.id_owner,v=l.has_id,k=l.have_printer,x=l.have_id_slot,B=l.id_name,_=(0,r.useLocalState)(t,"department",Object.keys(b)[0]),w=_[0],L=_[1];if(!x)return(0,o.createComponentVNode)(2,a.NoticeBox,{children:"This program requires an ID slot in order to function"});var y=b[w]||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:v&&m?(0,o.createComponentVNode)(2,a.Input,{value:g,width:"250px",onInput:function(e,t){return c("PRG_edit",{name:t})}}):g||"No Card Inserted",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print",disabled:!k||!v,onClick:function(){return c("PRG_print")}}),(0,o.createComponentVNode)(2,a.Button,{icon:m?"sign-out-alt":"sign-in-alt",content:m?"Log Out":"Log In",color:m?"bad":"good",onClick:function(){c(m?"PRG_logout":"PRG_authenticate")}})],4),children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:B,onClick:function(){return c("PRG_eject")}})}),!!v&&!!m&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===u,onClick:function(){return s(1)},children:"Access"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===u,onClick:function(){return s(2)},children:"Jobs"})]}),1===u&&(0,o.createComponentVNode)(2,i.AccessList,{accesses:C,selectedList:N,accessMod:function(e){return c("PRG_access",{access_target:e})},grantAll:function(){return c("PRG_grantall")},denyAll:function(){return c("PRG_denyall")},grantDep:function(e){return c("PRG_grantregion",{region:e})},denyDep:function(e){return c("PRG_denyregion",{region:e})}}),2===u&&(0,o.createComponentVNode)(2,a.Section,{title:f,buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"exclamation-triangle",content:"Terminate",color:"bad",onClick:function(){return c("PRG_terminate")}}),children:[(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Custom...",onCommit:function(e,t){return c("PRG_assign",{assign_target:"Custom",custom_name:t})}}),(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:Object.keys(b).map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:e===w,onClick:function(){return L(e)},children:e},e)}))})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:y.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.display_name,onClick:function(){return c("PRG_assign",{assign_target:e.job})}},e.job)}))})]})]})]})],0)};t.NtosCardContent=l},55513:function(e,t,n){"use strict";t.__esModule=!0,t.NtosConfiguration=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosConfiguration=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.PC_device_theme,u=l.power_usage,s=l.battery_exists,m=l.battery,p=void 0===m?{}:m,C=l.disk_size,h=l.disk_used,N=l.hardware,V=void 0===N?[]:N;return(0,o.createComponentVNode)(2,c.NtosWindow,{theme:d,width:420,height:630,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Power Supply",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Draw: ",u,"W"]}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Battery Status",color:!s&&"average",children:s?(0,o.createComponentVNode)(2,a.ProgressBar,{value:p.charge,minValue:0,maxValue:p.max,ranges:{good:[p.max/2,Infinity],average:[p.max/4,p.max/2],bad:[-Infinity,p.max/4]},children:[p.charge," / ",p.max]}):"Not Available"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"File System",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:h,minValue:0,maxValue:C,color:"good",children:[h," GQ / ",C," GQ"]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Hardware Components",children:V.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,buttons:(0,o.createFragment)([!e.critical&&(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Enabled",checked:e.enabled,mr:1,onClick:function(){return i("PC_toggle_component",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Usage: ",e.powerusage,"W"]})],0),children:e.desc},e.name)}))})]})})}},48791:function(e,t,n){"use strict";t.__esModule=!0,t.NtosCrewManifest=void 0;var o=n(39812),r=n(64499),a=n(71494),c=n(74814),i=n(85952);t.NtosCrewManifest=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.have_printer,s=d.manifest,m=void 0===s?{}:s;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:400,height:480,resizable:!0,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.Section,{title:"Crew Manifest",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"print",content:"Print",disabled:!u,onClick:function(){return l("PRG_print")}}),children:(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.Section,{level:2,title:t,children:(0,o.createComponentVNode)(2,c.Table,{children:e.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{bold:!0,children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:["(",e.rank,")"]})]},e.name)}))})},t)}))(m)})})})}},77426:function(e,t,n){"use strict";t.__esModule=!0,t.NtosCyborgRemoteMonitorContent=t.NtosCyborgRemoteMonitor=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosCyborgRemoteMonitor=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:600,height:800,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.card,d=i.cyborgs,u=void 0===d?[]:d;return u.length?(0,o.createFragment)([!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Certain features require an ID card login."}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:"Send Message",color:"blue",disabled:!l,onClick:function(){return c("messagebot",{ref:e.ref})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":e.locked_down?"average":"good",children:e.status?"Not Responding":e.locked_down?"Locked Down":e.shell_discon?"Nominal/Disconnected":"Nominal"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,a.Box,{color:e.charge<=30?"bad":e.charge<=70?"average":"good",children:"number"==typeof e.charge?e.charge+"%":"Not Found"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Module",children:e.module}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Upgrades",children:e.upgrades})]})},e.ref)}))],0):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cyborg units detected."})};t.NtosCyborgRemoteMonitorContent=i},71854:function(e,t,n){"use strict";t.__esModule=!0,t.NtosCyborgRemoteMonitorSyndicate=void 0;var o=n(39812),r=n(85952),a=n(77426);t.NtosCyborgRemoteMonitorSyndicate=function(e,t){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:600,height:800,theme:"syndicate",children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.NtosCyborgRemoteMonitorContent)})})}},86441:function(e,t,n){"use strict";t.__esModule=!0,t.NtosFileManager=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosFileManager=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.PC_device_theme,s=d.usbconnected,m=d.files,p=void 0===m?[]:m,C=d.usbfiles,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.NtosWindow,{resizable:!0,theme:u,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,i,{files:p,usbconnected:s,onUpload:function(e){return l("PRG_copytousb",{name:e})},onDelete:function(e){return l("PRG_deletefile",{name:e})},onRename:function(e,t){return l("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return l("PRG_clone",{file:e})}})}),s&&(0,o.createComponentVNode)(2,a.Section,{title:"Data Disk",children:(0,o.createComponentVNode)(2,i,{usbmode:!0,files:h,usbconnected:s,onUpload:function(e){return l("PRG_copyfromusb",{name:e})},onDelete:function(e){return l("PRG_deletefile",{name:e})},onRename:function(e,t){return l("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return l("PRG_clone",{file:e})}})})]})})};var i=function(e){var t=e.files,n=void 0===t?[]:t,r=e.usbconnected,c=e.usbmode,i=e.onUpload,l=e.onDelete,d=e.onRename;return(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"File"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Type"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Size"})]}),n.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.undeletable?e.name:(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:e.name,currentValue:e.name,tooltip:"Rename",onCommit:function(t,n){return d(e.name,n)}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.type}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.size}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:!e.undeletable&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"trash",confirmIcon:"times",confirmContent:"",tooltip:"Delete",onClick:function(){return l(e.name)}}),!!r&&(c?(0,o.createComponentVNode)(2,a.Button,{icon:"download",tooltip:"Download",onClick:function(){return i(e.name)}}):(0,o.createComponentVNode)(2,a.Button,{icon:"upload",tooltip:"Upload",onClick:function(){return i(e.name)}}))],0)})]},e.name)}))]})}},38773:function(e,t,n){"use strict";t.__esModule=!0,t.NtosJobManagerContent=t.NtosJobManager=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosJobManager=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:400,height:620,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.authed,d=i.cooldown,u=i.slots,s=void 0===u?[]:u,m=i.prioritized,p=void 0===m?[]:m;return l?(0,o.createComponentVNode)(2,a.Section,{children:[d>0&&(0,o.createComponentVNode)(2,a.Dimmer,{children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"20px",children:["On Cooldown: ",d,"s"]})}),(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Prioritized"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Slots"})]}),s.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:e.title,disabled:e.total<=0,checked:e.total>0&&p.includes(e.title),onClick:function(){return c("PRG_priority",{target:e.title})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[e.current," / ",e.total]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,a.Button,{content:"Open",disabled:!e.status_open,onClick:function(){return c("PRG_open_job",{target:e.title})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Close",disabled:!e.status_close,onClick:function(){return c("PRG_close_job",{target:e.title})}})]})]},e.title)}))]})]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Current ID does not have access permissions to change job slots."})};t.NtosJobManagerContent=i},59543:function(e,t,n){"use strict";t.__esModule=!0,t.NtosMain=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i={compconfig:"cog",ntndownloader:"download",filemanager:"folder",smmonitor:"radiation",alarmmonitor:"bell",cardmod:"id-card",arcade:"gamepad",ntnrc_client:"comment-alt",nttransfer:"exchange-alt",powermonitor:"plug",job_manage:"address-book",crewmani:"clipboard-list",robocontrol:"robot",atmosscan:"thermometer-half",shipping:"tags"};t.NtosMain=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.device_theme,s=d.programs,m=void 0===s?[]:s,p=d.has_light,C=d.light_on,h=d.comp_light_color,N=d.removable_media,V=void 0===N?[]:N,b=d.login,f=void 0===b?[]:b;return(0,o.createComponentVNode)(2,c.NtosWindow,{title:"syndicate"===u?"Syndix Main Menu":"NtOS Main Menu",theme:u,width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[!!p&&(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Button,{width:"144px",icon:"lightbulb",selected:C,onClick:function(){return l("PC_toggle_light")},children:["Flashlight: ",C?"ON":"OFF"]}),(0,o.createComponentVNode)(2,a.Button,{ml:1,onClick:function(){return l("PC_light_color")},children:["Color:",(0,o.createComponentVNode)(2,a.ColorBox,{ml:1,color:h})]})]}),(0,o.createComponentVNode)(2,a.Section,{title:"User Login",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject ID",disabled:!f.IDName,onClick:function(){return l("PC_Eject_Disk",{name:"ID"})}}),children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:["ID Name: ",f.IDName]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:["Assignment: ",f.IDJob]})]})}),!!V.length&&(0,o.createComponentVNode)(2,a.Section,{title:"Media Eject",children:(0,o.createComponentVNode)(2,a.Table,{children:V.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"transparent",icon:"eject",content:e,onClick:function(){return l("PC_Eject_Disk",{name:e})}})})},e)}))})}),(0,o.createComponentVNode)(2,a.Section,{title:"Programs",children:(0,o.createComponentVNode)(2,a.Table,{children:m.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"transparent",icon:i[e.name]||"window-maximize-o",content:e.desc,onClick:function(){return l("PC_runprogram",{name:e.name})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,width:"18px",children:!!e.running&&(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"times",tooltip:"Close program",tooltipPosition:"left",onClick:function(){return l("PC_killprogram",{name:e.name})}})})]},e.name)}))})})]})})}},73883:function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetChat=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosNetChat=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.can_admin,u=l.adminmode,s=l.authed,m=l.username,p=l.active_channel,C=l.is_operator,h=l.all_channels,N=void 0===h?[]:h,V=l.clients,b=void 0===V?[]:V,f=l.messages,g=void 0===f?[]:f,v=null!==p,k=s||u;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:900,height:675,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,a.Section,{height:"600px",children:(0,o.createComponentVNode)(2,a.Table,{height:"580px",children:(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"200px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"537px",overflowY:"scroll",children:[(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"New Channel...",onCommit:function(e,t){return i("PRG_newchannel",{new_channel_name:t})}}),N.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.chan,selected:e.id===p,color:"transparent",onClick:function(){return i("PRG_joinchannel",{id:e.id})}},e.chan)}))]}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,mt:1,content:m+"...",currentValue:m,onCommit:function(e,t){return i("PRG_changename",{new_name:t})}}),!!d&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:"ADMIN MODE: "+(u?"ON":"OFF"),color:u?"bad":"good",onClick:function(){return i("PRG_toggleadmin")}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Box,{height:"560px",overflowY:"scroll",children:v&&(k?g.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.msg},e.msg)})):(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",mt:4,fontSize:"40px"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,fontSize:"18px",children:"THIS CHANNEL IS PASSWORD PROTECTED"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:"INPUT PASSWORD TO ACCESS"})]}))}),(0,o.createComponentVNode)(2,a.Input,{fluid:!0,selfClear:!0,mt:1,onEnter:function(e,t){return i("PRG_speak",{message:t})}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"150px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"477px",overflowY:"scroll",children:b.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.name},e.name)}))}),v&&k&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Save log...",defaultValue:"new_log",onCommit:function(e,t){return i("PRG_savelog",{log_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Leave Channel",onClick:function(){return i("PRG_leavechannel")}})],4),!!C&&s&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Delete Channel",onClick:function(){return i("PRG_deletechannel")}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Rename Channel...",onCommit:function(e,t){return i("PRG_renamechannel",{new_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Set Password...",onCommit:function(e,t){return i("PRG_setpassword",{new_password:t})}})],4)]})]})})})})})}},83908:function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDosContent=t.NtosNetDos=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosNetDos=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:400,height:250,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.relays,d=void 0===l?[]:l,u=i.focus,s=i.target,m=i.speed,p=i.overload,C=i.capacity,h=i.error;if(h)return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:h}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Reset",textAlign:"center",onClick:function(){return c("PRG_reset")}})],4);var N=function(e){for(var t="",n=p/C;t.lengthn?t+="0":t+="1";return t};return s?(0,o.createComponentVNode)(2,a.Section,{fontFamily:"monospace",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Box,{children:["CURRENT SPEED: ",m," GQ/s"]}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)})]}):(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.id,selected:u===e.id,onClick:function(){return c("PRG_target_relay",{targid:e.id})}},e.id)}))})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:"EXECUTE",color:"bad",textAlign:"center",disabled:!u,mt:1,onClick:function(){return c("PRG_execute")}})]})};t.NtosNetDosContent=i},83305:function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDownloader=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosNetDownloader=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.PC_device_theme,s=d.disk_size,m=d.disk_used,p=d.downloadable_programs,C=void 0===p?[]:p,h=d.error,N=d.hacked_programs,V=void 0===N?[]:N,b=d.hackedavailable;return(0,o.createComponentVNode)(2,c.NtosWindow,{theme:u,width:480,height:735,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[!!h&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:h}),(0,o.createComponentVNode)(2,a.Button,{content:"Reset",onClick:function(){return l("PRG_reseterror")}})]}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk usage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m,minValue:0,maxValue:s,children:m+" GQ / "+s+" GQ"})})})}),(0,o.createComponentVNode)(2,a.Section,{children:C.map((function(e){return(0,o.createComponentVNode)(2,i,{program:e},e.filename)}))}),!!b&&(0,o.createComponentVNode)(2,a.Section,{title:"UNKNOWN Software Repository",children:[(0,o.createComponentVNode)(2,a.NoticeBox,{mb:1,children:"Please note that Nanotrasen does not recommend download of software from non-official servers."}),V.map((function(e){return(0,o.createComponentVNode)(2,i,{program:e},e.filename)}))]})]})})};var i=function(e,t){var n=e.program,c=(0,r.useBackend)(t),i=c.act,l=c.data,d=l.disk_size,u=l.disk_used,s=l.downloadcompletion,m=l.downloading,p=l.downloadname,C=l.downloadsize,h=d-u;return(0,o.createComponentVNode)(2,a.Box,{mb:3,children:[(0,o.createComponentVNode)(2,a.Flex,{align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,grow:1,children:n.filedesc}),(0,o.createComponentVNode)(2,a.Flex.Item,{color:"label",nowrap:!0,children:[n.size," GQ"]}),(0,o.createComponentVNode)(2,a.Flex.Item,{ml:2,width:"94px",textAlign:"center",children:n.filename===p&&(0,o.createComponentVNode)(2,a.ProgressBar,{color:"green",minValue:0,maxValue:C,value:s})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Download",disabled:m||n.size>h,onClick:function(){return i("PRG_downloadfile",{filename:n.filename})}})})]}),"Compatible"!==n.compatibility&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Incompatible!"]}),n.size>h&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Not enough disk space!"]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,color:"label",fontSize:"12px",children:n.fileinfo})]})}},6806:function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetMonitor=void 0;var o=n(39812),r=n(74814),a=n(71494),c=n(85952);t.NtosNetMonitor=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.ntnetrelays,u=l.ntnetstatus,s=l.config_softwaredownload,m=l.config_peertopeer,p=l.config_communication,C=l.config_systemcontrol,h=l.idsalarm,N=l.idsstatus,V=l.ntnetmaxlogs,b=l.maxlogs,f=l.minlogs,g=l.ntnetlogs,v=void 0===g?[]:g;return(0,o.createComponentVNode)(2,c.NtosWindow,{resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,r.NoticeBox,{children:"WARNING: Disabling wireless transmitters when using a wireless device may prevent you from reenabling them!"}),(0,o.createComponentVNode)(2,r.Section,{title:"Wireless Connectivity",buttons:(0,o.createComponentVNode)(2,r.Button.Confirm,{icon:u?"power-off":"times",content:u?"ENABLED":"DISABLED",selected:u,onClick:function(){return i("toggleWireless")}}),children:d?(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Active NTNet Relays",children:d})}):"No Relays Connected"}),(0,o.createComponentVNode)(2,r.Section,{title:"Firewall Configuration",children:(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Software Downloads",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:s?"power-off":"times",content:s?"ENABLED":"DISABLED",selected:s,onClick:function(){return i("toggle_function",{id:"1"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Peer to Peer Traffic",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:m?"power-off":"times",content:m?"ENABLED":"DISABLED",selected:m,onClick:function(){return i("toggle_function",{id:"2"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Communication Systems",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:p?"power-off":"times",content:p?"ENABLED":"DISABLED",selected:p,onClick:function(){return i("toggle_function",{id:"3"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Remote System Control",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:C?"power-off":"times",content:C?"ENABLED":"DISABLED",selected:C,onClick:function(){return i("toggle_function",{id:"4"})}})})]})}),(0,o.createComponentVNode)(2,r.Section,{title:"Security Systems",children:[!!h&&(0,o.createFragment)([(0,o.createComponentVNode)(2,r.NoticeBox,{children:"NETWORK INCURSION DETECTED"}),(0,o.createComponentVNode)(2,r.Box,{italics:!0,children:"Abnormal activity has been detected in the network. Check system logs for more information"})],4),(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"IDS Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Button,{icon:N?"power-off":"times",content:N?"ENABLED":"DISABLED",selected:N,onClick:function(){return i("toggleIDS")}}),(0,o.createComponentVNode)(2,r.Button,{icon:"sync",content:"Reset",color:"bad",onClick:function(){return i("resetIDS")}})],4)}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Max Log Count",buttons:(0,o.createComponentVNode)(2,r.NumberInput,{value:V,minValue:f,maxValue:b,width:"39px",onChange:function(e,t){return i("updatemaxlogs",{new_number:t})}})})]}),(0,o.createComponentVNode)(2,r.Section,{title:"System Log",level:2,buttons:(0,o.createComponentVNode)(2,r.Button.Confirm,{icon:"trash",content:"Clear Logs",onClick:function(){return i("purgelogs")}}),children:v.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{className:"candystripe",children:e.entry},e.entry)}))})]})]})})}},54698:function(e,t,n){"use strict";t.__esModule=!0,t.NtosPowerMonitor=void 0;var o=n(39812),r=n(85952),a=n(89793);t.NtosPowerMonitor=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:550,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.PowerMonitorContent)})})}},49413:function(e,t,n){"use strict";t.__esModule=!0,t.NtosRadarContent=t.NtosRadar=void 0;var o=n(39812),r=n(34380),a=n(5908),c=n(71494),i=n(74814),l=n(85952);t.NtosRadar=function(e,t){return(0,o.createComponentVNode)(2,l.NtosWindow,{width:800,height:600,theme:"ntos",children:(0,o.createComponentVNode)(2,d,{sig_err:"Signal Lost"})})};var d=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=u.selected,m=u.object,p=void 0===m?[]:m,C=u.target,h=void 0===C?[]:C,N=u.scanning,V=e.sig_err;return(0,o.createComponentVNode)(2,i.Flex,{direction:"row",hight:"100%",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{position:"relative",width:20.5,hight:"100%",children:(0,o.createComponentVNode)(2,l.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"redo-alt",content:N?"Scanning...":"Scan",color:"blue",disabled:N,onClick:function(){return d("scan")}}),!p.length&&!N&&(0,o.createVNode)(1,"div",null,"No trackable signals found",16),!N&&p.map((function(e){return(0,o.createVNode)(1,"div",(0,r.classes)(["Button","Button--fluid","Button--color--transparent","Button--ellipsis",e.ref===s&&"Button--selected"]),e.name,0,{title:e.name,onClick:function(){d("selecttarget",{ref:e.ref})}},e.dev)}))]})})}),(0,o.createComponentVNode)(2,i.Flex.Item,{style:{"background-image":'url("'+(0,a.resolveAsset)("ntosradarbackground.png")+'")',"background-position":"center","background-repeat":"no-repeat",top:"20px"},position:"relative",m:1.5,width:45,height:45,children:0===Object.keys(h).length?!!s&&(0,o.createComponentVNode)(2,i.NoticeBox,{position:"absolute",top:20.6,left:1.35,width:42,fontSize:"30px",textAlign:"center",children:V}):!!h.userot&&(0,o.createComponentVNode)(2,i.Box,{as:"img",src:(0,a.resolveAsset)(h.arrowstyle),position:"absolute",top:"20px",left:"243px",style:{transform:"rotate("+h.rot+"deg)"}})||(0,o.createComponentVNode)(2,i.Icon,{name:h.pointer,position:"absolute",size:2,color:h.color,top:10*h.locy+19+"px",left:10*h.locx+16+"px"})})]})};t.NtosRadarContent=d},41935:function(e,t,n){"use strict";t.__esModule=!0,t.NtosRadarSyndicate=void 0;var o=n(39812),r=n(85952),a=n(49413);t.NtosRadarSyndicate=function(e,t){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:800,height:600,theme:"syndicate",children:(0,o.createComponentVNode)(2,a.NtosRadarContent,{sig_err:"Out of Range"})})}},60839:function(e,t,n){"use strict";t.__esModule=!0,t.NtosRequestKiosk=void 0;var o=n(39812),r=n(18374),a=n(85952);t.NtosRequestKiosk=function(e,t){return(0,o.createComponentVNode)(2,a.NtosWindow,{width:550,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,r.RequestKioskContent)})})}},69480:function(e,t,n){"use strict";t.__esModule=!0,t.NtosRevelation=void 0;var o=n(39812),r=n(74814),a=n(71494),c=n(85952);t.NtosRevelation=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:400,height:250,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Button.Input,{fluid:!0,content:"Obfuscate Name...",onCommit:function(e,t){return i("PRG_obfuscate",{new_name:t})},mb:1}),(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Payload Status",buttons:(0,o.createComponentVNode)(2,r.Button,{content:l.armed?"ARMED":"DISARMED",color:l.armed?"bad":"average",onClick:function(){return i("PRG_arm")}})})}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,bold:!0,content:"ACTIVATE",textAlign:"center",color:"bad",disabled:!l.armed})]})})})}},36888:function(e,t,n){"use strict";t.__esModule=!0,t.NtosRoboControl=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosRoboControl=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.bots,s=d.id_owner,m=d.has_id;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:550,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Robot Control Console",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Id Card",children:[s,!!m&&(0,o.createComponentVNode)(2,a.Button,{ml:2,icon:"eject",content:"Eject",onClick:function(){return l("ejectcard")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Bots in range",children:d.botcount})]})}),null==u?void 0:u.map((function(e){return(0,o.createComponentVNode)(2,i,{robot:e},e.bot_ref)}))]})})};var i=function(e,t){var n=e.robot,c=(0,r.useBackend)(t),i=c.act,l=c.data,d=l.mules||[],u=!!n.mule_check&&function(e,t){return null==e?void 0:e.find((function(e){return e.mule_ref===t}))}(d,n.bot_ref),s=1===n.mule_check?"rgba(110, 75, 14, 1)":"rgba(74, 59, 140, 1)";return(0,o.createComponentVNode)(2,a.Section,{title:n.name,style:{border:"4px solid "+s},buttons:u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"play",tooltip:"Go to Destination.",onClick:function(){return i("go",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"pause",tooltip:"Stop Moving.",onClick:function(){return i("stop",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"home",tooltip:"Travel Home.",tooltipPosition:"bottom-left",onClick:function(){return i("home",{robot:u.mule_ref})}})],4),children:(0,o.createComponentVNode)(2,a.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Model",children:n.model}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:n.locat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:n.mode}),u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Loaded Cargo",children:l.load||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Home",children:u.home}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:u.dest||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.power,minValue:0,maxValue:100,ranges:{good:[60,Infinity],average:[20,60],bad:[-Infinity,20]}})})],4)]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"150px",children:[u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Set Destination",onClick:function(){return i("destination",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Set ID",onClick:function(){return i("setid",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Set Home",onClick:function(){return i("sethome",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Unload Cargo",onClick:function(){return i("unload",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:"Auto Return",checked:u.autoReturn,onClick:function(){return i("autoret",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:"Auto Pickup",checked:u.autoPickup,onClick:function(){return i("autopick",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:"Delivery Report",checked:u.reportDelivery,onClick:function(){return i("report",{robot:u.mule_ref})}})],4),!u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Stop Patrol",onClick:function(){return i("patroloff",{robot:n.bot_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Start Patrol",onClick:function(){return i("patrolon",{robot:n.bot_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Summon",onClick:function(){return i("summon",{robot:n.bot_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Eject PAi",onClick:function(){return i("ejectpai",{robot:n.bot_ref})}})],4)]})]})})}},55431:function(e,t,n){"use strict";t.__esModule=!0,t.NtosShipping=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosShipping=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:450,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"NTOS Shipping Hub.",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Id",onClick:function(){return i("ejectid")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current User",children:l.current_user||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Inserted Card",children:l.card_owner||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available Paper",children:l.has_printer?l.paperamt:"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Profit on Sale",children:[l.barcode_split,"%"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Shipping Options",children:[(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"id-card",tooltip:"The currently ID card will become the current user.",tooltipPosition:"right",disabled:!l.has_id_slot,onClick:function(){return i("selectid")},content:"Set Current ID"})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"print",tooltip:"Print a barcode to use on a wrapped package.",tooltipPosition:"right",disabled:!l.has_printer||!l.current_user,onClick:function(){return i("print")},content:"Print Barcode"})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"tags",tooltip:"Set how much profit you'd like on your package.",tooltipPosition:"right",onClick:function(){return i("setsplit")},content:"Set Profit Margin"})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"sync-alt",content:"Reset ID",onClick:function(){return i("resetid")}})})]})]})})}},76124:function(e,t,n){"use strict";t.__esModule=!0,t.NtosStationAlertConsole=void 0;var o=n(39812),r=n(85952),a=n(32015);t.NtosStationAlertConsole=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:315,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.StationAlertConsoleContent)})})}},22475:function(e,t,n){"use strict";t.__esModule=!0,t.NtosSupermatterMonitorContent=t.NtosSupermatterMonitor=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(41860),i=n(71494),l=n(74814),d=n(76270),u=n(85952),s=function(e){return Math.log2(16+Math.max(0,e))-4};t.NtosSupermatterMonitor=function(e,t){return(0,o.createComponentVNode)(2,u.NtosWindow,{width:600,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,u.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,m)})})};var m=function(e,t){var n=(0,i.useBackend)(t),u=n.act,m=n.data,C=m.active,h=m.SM_integrity,N=m.SM_power,V=m.SM_ambienttemp,b=m.SM_ambientpressure;if(!C)return(0,o.createComponentVNode)(2,p);var f=(0,a.flow)([function(e){return e.filter((function(e){return e.amount>=.01}))},(0,r.sortBy)((function(e){return-e.amount}))])(m.gases||[]),g=Math.max.apply(Math,[1].concat(f.map((function(e){return e.amount}))));return(0,o.createComponentVNode)(2,l.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,l.Flex.Item,{width:"270px",children:(0,o.createComponentVNode)(2,l.Section,{title:"Metrics",children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:h/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Relative EER",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:N,minValue:0,maxValue:5e3,ranges:{good:[-Infinity,5e3],average:[5e3,7e3],bad:[7e3,Infinity]},children:(0,c.toFixed)(N)+" MeV/cm3"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:s(V),minValue:0,maxValue:s(1e4),ranges:{teal:[-Infinity,s(80)],good:[s(80),s(373)],average:[s(373),s(1e3)],bad:[s(1e3),Infinity]},children:(0,c.toFixed)(V)+" K"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:s(b),minValue:0,maxValue:s(5e4),ranges:{good:[s(1),s(300)],average:[-Infinity,s(1e3)],bad:[s(1e3),+Infinity]},children:(0,c.toFixed)(b)+" kPa"})})]})})}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,l.Section,{title:"Gases",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"arrow-left",content:"Back",onClick:function(){return u("PRG_clear")}}),children:(0,o.createComponentVNode)(2,l.LabeledList,{children:f.map((function(e){return(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:(0,d.getGasLabel)(e.name),children:(0,o.createComponentVNode)(2,l.ProgressBar,{color:(0,d.getGasColor)(e.name),value:e.amount,minValue:0,maxValue:g,children:(0,c.toFixed)(e.amount,2)+"%"})},e.name)}))})})})]})};t.NtosSupermatterMonitorContent=m;var p=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data.supermatters,c=void 0===a?[]:a;return(0,o.createComponentVNode)(2,l.Section,{title:"Detected Supermatters",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"sync",content:"Refresh",onClick:function(){return r("PRG_refresh")}}),children:(0,o.createComponentVNode)(2,l.Table,{children:c.map((function(e){return(0,o.createComponentVNode)(2,l.Table.Row,{children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.uid+". "+e.area_name}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,color:"label",children:"Integrity:"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,width:"120px",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:e.integrity/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,l.Button,{content:"Details",onClick:function(){return r("PRG_set",{target:e.uid})}})})]},e.uid)}))})})}},78467:function(e,t,n){"use strict";t.__esModule=!0,t.NuclearBomb=void 0;var o=n(39812),r=n(34380),a=n(71494),c=n(74814),i=n(85952),l=function(e,t){var n=(0,a.useBackend)(t).act;return(0,o.createComponentVNode)(2,c.Box,{width:"185px",children:(0,o.createComponentVNode)(2,c.Grid,{width:"1px",children:[["1","4","7","C"],["2","5","8","0"],["3","6","9","E"]].map((function(e){return(0,o.createComponentVNode)(2,c.Grid.Column,{children:e.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,mb:"6px",content:e,textAlign:"center",fontSize:"40px",lineHeight:1.25,width:"55px",className:(0,r.classes)(["NuclearBomb__Button","NuclearBomb__Button--keypad","NuclearBomb__Button--"+e]),onClick:function(){return n("keypad",{digit:e})}},e)}))},e[0])}))})})};t.NuclearBomb=function(e,t){var n=(0,a.useBackend)(t),r=n.act,d=n.data,u=(d.anchored,d.disk_present,d.status1),s=d.status2;return(0,o.createComponentVNode)(2,i.Window,{width:350,height:442,theme:"retro",children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Box,{m:"6px",children:[(0,o.createComponentVNode)(2,c.Box,{mb:"6px",className:"NuclearBomb__displayBox",children:u}),(0,o.createComponentVNode)(2,c.Flex,{mb:1.5,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Box,{className:"NuclearBomb__displayBox",children:s})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Button,{icon:"eject",fontSize:"24px",lineHeight:1,textAlign:"center",width:"43px",ml:"6px",mr:"3px",mt:"3px",className:"NuclearBomb__Button NuclearBomb__Button--keypad",onClick:function(){return r("eject_disk")}})})]}),(0,o.createComponentVNode)(2,c.Flex,{ml:"3px",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,l)}),(0,o.createComponentVNode)(2,c.Flex.Item,{ml:"6px",width:"129px",children:(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"ARM",textAlign:"center",fontSize:"28px",lineHeight:1.1,mb:"6px",className:"NuclearBomb__Button NuclearBomb__Button--C",onClick:function(){return r("arm")}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"ANCHOR",textAlign:"center",fontSize:"28px",lineHeight:1.1,className:"NuclearBomb__Button NuclearBomb__Button--E",onClick:function(){return r("anchor")}}),(0,o.createComponentVNode)(2,c.Box,{textAlign:"center",color:"#9C9987",fontSize:"80px",children:(0,o.createComponentVNode)(2,c.Icon,{name:"radiation"})}),(0,o.createComponentVNode)(2,c.Box,{height:"80px",className:"NuclearBomb__NTIcon"})]})})]})]})})})}},48826:function(e,t,n){"use strict";t.__esModule=!0,t.OperatingComputer=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Respiratory",type:"oxyLoss"}];t.OperatingComputer=function(e,t){var n=(0,r.useSharedState)(t,"tab",1),i=n[0],u=n[1];return(0,o.createComponentVNode)(2,c.Window,{width:350,height:470,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===i,onClick:function(){return u(1)},children:"Patient State"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===i,onClick:function(){return u(2)},children:"Surgery Procedures"})]}),1===i&&(0,o.createComponentVNode)(2,l),2===i&&(0,o.createComponentVNode)(2,d)]})})};var l=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),l=c.table,d=c.procedures,u=void 0===d?[]:d,s=c.patient,m=void 0===s?{}:s;return l?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Patient State",children:m&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:m.statstate,children:m.stat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Type",children:m.blood_type}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m.health,minValue:m.minHealth,maxValue:m.maxHealth,color:m.health>=0?"good":"average",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m.health})})}),i.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m[e.type]/m.maxHealth,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m[e.type]})})},e.type)}))]})||"No Patient Detected"}),0===u.length&&(0,o.createComponentVNode)(2,a.Section,{children:"No Active Procedures"}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Next Step",children:[e.next_step,e.chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.chems_needed],0)]}),!!c.alternative_step&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Alternative Step",children:[e.alternative_step,e.alt_chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.alt_chems_needed],0)]})]})},e.name)}))],0):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Table Detected"})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.surgeries,l=void 0===i?[]:i;return(0,o.createComponentVNode)(2,a.Section,{title:"Advanced Surgery Procedures",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"download",content:"Sync Research Database",onClick:function(){return c("sync")}}),l.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,children:e.desc},e.name)}))]})}},36983:function(e,t,n){"use strict";t.__esModule=!0,t.Orbit=void 0;var o=n(39812),r=n(2497),a=n(5908),c=n(71494),i=n(74814),l=n(85952);function d(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=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.")}return(n=e[Symbol.iterator]()).next.bind(n)}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);nt},h=function(e,t){var n=e.name,o=t.name,r=n.match(m),a=o.match(m);return r&&a&&n.replace(m,"")===o.replace(m,"")?parseInt(r[1],10)-parseInt(a[1],10):C(n,o)},N=function(e,t){var n=(0,c.useBackend)(t).act,r=e.searchText,a=e.source,l=e.title,d=a.filter(p(r));return d.sort(h),a.length>0&&(0,o.createComponentVNode)(2,i.Section,{title:l+" - ("+a.length+")",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.name.replace(s,""),onClick:function(){return n("orbit",{ref:e.ref})}},e.name)}))})},V=function(e,t){var n=(0,c.useBackend)(t).act,r=e.color,l=e.thing;return(0,o.createComponentVNode)(2,i.Button,{color:r,onClick:function(){return n("orbit",{ref:l.ref})},children:[l.name,l.orbiters&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,ml:1,children:["(",l.orbiters," ",(0,o.createComponentVNode)(2,i.Box,{as:"img",src:(0,a.resolveAsset)("ghost.png"),opacity:.7}),")"]})]})};t.Orbit=function(e,t){for(var n,r=(0,c.useBackend)(t),a=r.act,u=r.data,s=u.alive,m=u.antagonists,b=u.dead,f=u.ghosts,g=u.misc,v=u.npcs,k=(0,c.useLocalState)(t,"searchText",""),x=k[0],B=k[1],_={},w=d(m);!(n=w()).done;){var L=n.value;_[L.antag]===undefined&&(_[L.antag]=[]),_[L.antag].push(L)}var y=Object.entries(_);y.sort((function(e,t){return C(e[0],t[0])}));return(0,o.createComponentVNode)(2,l.Window,{title:"Orbit",width:350,height:700,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Flex,{children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Icon,{name:"search",mr:1})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Input,{placeholder:"Search...",autoFocus:!0,fluid:!0,value:x,onInput:function(e,t){return B(t)},onEnter:function(e,t){return function(e){for(var t=0,n=[y.map((function(e){return e[0],e[1]})),s,f,b,v,g];t0&&(0,o.createComponentVNode)(2,i.Section,{title:"Ghost-Visible Antagonists",children:y.map((function(e){var t=e[0],n=e[1];return(0,o.createComponentVNode)(2,i.Section,{title:t,level:2,children:n.filter(p(x)).sort(h).map((function(e){return(0,o.createComponentVNode)(2,V,{color:"bad",thing:e},e.name)}))},t)}))}),(0,o.createComponentVNode)(2,i.Section,{title:"Alive",children:s.filter(p(x)).sort(h).map((function(e){return(0,o.createComponentVNode)(2,V,{color:"good",thing:e},e.name)}))}),(0,o.createComponentVNode)(2,N,{title:"Ghosts",source:f,searchText:x}),(0,o.createComponentVNode)(2,N,{title:"Dead",source:b,searchText:x}),(0,o.createComponentVNode)(2,N,{title:"NPCs",source:v,searchText:x}),(0,o.createComponentVNode)(2,N,{title:"Misc",source:g,searchText:x})]})})}},57800:function(e,t,n){"use strict";t.__esModule=!0,t.OreBox=void 0;var o=n(39812),r=n(2497),a=n(74814),c=n(71494),i=n(85952);t.OreBox=function(e,t){var n=(0,c.useBackend)(t),l=n.act,d=n.data.materials;return(0,o.createComponentVNode)(2,i.Window,{width:335,height:415,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Ores",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Empty",onClick:function(){return l("removeall")}}),children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Ore"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"right",children:"Amount"})]}),d.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,r.toTitleCase)(e.name)}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,a.Box,{color:"label",inline:!0,children:e.amount})})]},e.type)}))]})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Box,{children:["All ores will be placed in here when you are wearing a mining stachel on your belt or in a pocket while dragging the ore box.",(0,o.createVNode)(1,"br"),"Gibtonite is not accepted."]})})]})})}},72938:function(e,t,n){"use strict";t.__esModule=!0,t.OreRedemptionMachine=void 0;var o=n(39812),r=n(2497),a=n(71494),c=n(74814),i=n(85952);t.OreRedemptionMachine=function(e,t){var n=(0,a.useBackend)(t),r=n.act,d=n.data,u=d.unclaimedPoints,s=d.materials,m=d.alloys,p=d.diskDesigns,C=d.hasDisk;return(0,o.createComponentVNode)(2,i.Window,{title:"Ore Redemption Machine",width:440,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.BlockQuote,{mb:1,children:["This machine only accepts ore.",(0,o.createVNode)(1,"br"),"Gibtonite and Slag are not accepted."]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"label",mr:1,children:"Unclaimed points:"}),u,(0,o.createComponentVNode)(2,c.Button,{ml:2,content:"Claim",disabled:0===u,onClick:function(){return r("Claim")}})]})]}),(0,o.createComponentVNode)(2,c.Section,{children:C&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{mb:1,children:(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject design disk",onClick:function(){return r("diskEject")}})}),(0,o.createComponentVNode)(2,c.Table,{children:p.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:["File ",e.index,": ",e.name]}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,c.Button,{disabled:!e.canupload,content:"Upload",onClick:function(){return r("diskUpload",{design:e.index})}})})]},e.index)}))})],4)||(0,o.createComponentVNode)(2,c.Button,{icon:"save",content:"Insert design disk",onClick:function(){return r("diskInsert")}})}),(0,o.createComponentVNode)(2,c.Section,{title:"Materials",children:(0,o.createComponentVNode)(2,c.Table,{children:s.map((function(e){return(0,o.createComponentVNode)(2,l,{material:e,onRelease:function(t){return r("Release",{id:e.id,sheets:t})}},e.id)}))})}),(0,o.createComponentVNode)(2,c.Section,{title:"Alloys",children:(0,o.createComponentVNode)(2,c.Table,{children:m.map((function(e){return(0,o.createComponentVNode)(2,l,{material:e,onRelease:function(t){return r("Smelt",{id:e.id,sheets:t})}},e.id)}))})})]})})};var l=function(e,t){var n=e.material,i=e.onRelease,l=(0,a.useLocalState)(t,"amount"+n.name,1),d=l[0],u=l[1],s=Math.floor(n.amount);return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,r.toTitleCase)(n.name).replace("Alloy","")}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Box,{mr:2,color:"label",inline:!0,children:n.value&&n.value+" cr"})}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Box,{mr:2,color:"label",inline:!0,children:[s," sheets"]})}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,c.NumberInput,{width:"32px",step:1,stepPixelSize:5,minValue:1,maxValue:50,value:d,onChange:function(e,t){return u(t)}}),(0,o.createComponentVNode)(2,c.Button,{disabled:s<1,content:"Release",onClick:function(){return i(d)}})]})]})}},47944:function(e,t,n){"use strict";t.__esModule=!0,t.Pandemic=t.PandemicAntibodyDisplay=t.PandemicSymptomDisplay=t.PandemicDiseaseDisplay=t.PandemicBeakerDisplay=void 0;var o=n(39812),r=n(64499),a=n(71494),c=n(74814),i=n(85952),l=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.has_beaker,d=i.beaker_empty,u=i.has_blood,s=i.blood,m=!l||d;return(0,o.createComponentVNode)(2,c.Section,{title:"Beaker",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Empty and Eject",color:"bad",disabled:m,onClick:function(){return r("empty_eject_beaker")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"trash",content:"Empty",disabled:m,onClick:function(){return r("empty_beaker")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",disabled:!l,onClick:function(){return r("eject_beaker")}})],4),children:l?d?(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Beaker is empty"}):u?(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Blood DNA",children:s&&s.dna||"Unknown"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Blood Type",children:s&&s.type||"Unknown"})]}):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"No blood detected"}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No beaker loaded"})})};t.PandemicBeakerDisplay=l;var d=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.is_ready;return(i.viruses||[]).map((function(e){var t=e.symptoms||[];return(0,o.createComponentVNode)(2,c.Section,{title:e.can_rename?(0,o.createComponentVNode)(2,c.Input,{value:e.name,onChange:function(t,n){return r("rename_disease",{index:e.index,name:n})}}):e.name,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"flask",content:"Create culture bottle",disabled:!l,onClick:function(){return r("create_culture_bottle",{index:e.index})}}),children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:e.description}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Agent",children:e.agent}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Spread",children:e.spread}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Possible Cure",children:e.cure})]})})]}),!!e.is_adv&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"Statistics",level:2,children:(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Resistance",children:e.resistance}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stealth",children:e.stealth})]})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stage speed",children:e.stage_speed}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Transmissibility",children:e.transmission})]})})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Symptoms",level:2,children:t.map((function(e){return(0,o.createComponentVNode)(2,c.Collapsible,{title:e.name,children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,u,{symptom:e})})},e.name)}))})],4)]},e.name)}))};t.PandemicDiseaseDisplay=d;var u=function(e,t){var n=e.symptom,a=n.name,i=n.desc,l=n.stealth,d=n.resistance,u=n.stage_speed,s=n.transmission,m=n.level,p=n.neutered,C=(0,r.map)((function(e,t){return{desc:e,label:t}}))(n.threshold_desc||{});return(0,o.createComponentVNode)(2,c.Section,{title:a,level:2,buttons:!!p&&(0,o.createComponentVNode)(2,c.Box,{bold:!0,color:"bad",children:"Neutered"}),children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:2,children:i}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Level",children:m}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Resistance",children:d}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stealth",children:l}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stage Speed",children:u}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Transmission",children:s})]})})]}),C.length>0&&(0,o.createComponentVNode)(2,c.Section,{title:"Thresholds",level:3,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:C.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.label,children:e.desc},e.label)}))})})]})};t.PandemicSymptomDisplay=u;var s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.resistances||[];return(0,o.createComponentVNode)(2,c.Section,{title:"Antibodies",children:l.length>0?(0,o.createComponentVNode)(2,c.LabeledList,{children:l.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,c.Button,{icon:"eye-dropper",content:"Create vaccine bottle",disabled:!i.is_ready,onClick:function(){return r("create_vaccine_bottle",{index:e.id})}})},e.name)}))}):(0,o.createComponentVNode)(2,c.Box,{bold:!0,color:"bad",mt:1,children:"No antibodies detected."})})};t.PandemicAntibodyDisplay=s;t.Pandemic=function(e,t){var n=(0,a.useBackend)(t).data;return(0,o.createComponentVNode)(2,i.Window,{width:520,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l),!!n.has_blood&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,s)],4)]})})}},52472:function(e,t,n){"use strict";t.__esModule=!0,t.PaperSheet=void 0;var o=n(39812),r=n(34380),a=n(51961),c=s(n(65054)),i=s(n(76756)),l=n(71494),d=n(74814),u=n(85952);function s(e){return e&&e.__esModule?e:{"default":e}}function m(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,v(e,t)}function p(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}function C(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return h(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return h(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=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.")}return(n=e[Symbol.iterator]()).next.bind(n)}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n]+)>/g,(function(e,t){return"$"+n[t]})))}if("function"==typeof t){var a=this;return o[Symbol.replace].call(this,e,(function(){var e=[];return e.push.apply(e,arguments),"object"!=typeof e[e.length-1]&&e.push(c(e,a)),t.apply(this,e)}))}return o[Symbol.replace].call(this,e,t)},N.apply(this,arguments)}function V(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&v(e,t)}function b(e){var t="function"==typeof Map?new Map:undefined;return(b=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,o)}function o(){return f(e,arguments,k(this).constructor)}return o.prototype=Object.create(e.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),v(o,e)})(e)}function f(e,t,n){return(f=g()?Reflect.construct:function(e,t,n){var o=[null];o.push.apply(o,t);var r=new(Function.bind.apply(e,o));return n&&v(r,n.prototype),r}).apply(null,arguments)}function g(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function v(e,t){return(v=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function k(e){return(k=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var x=5e3,B=function(e,t,n,o){return void 0===o&&(o=!1),"'+e+" "},_=/\[(_+)\]/g,w=N(/\[ \]/gm,{id:2}),L=/%s(?:ign)?(?=\\s|$)/gim,y=function(e,t,n,o,r){var a=e.replace(_,(function(e,a,c,i){var l=function(e,t,n){t=n+"x "+t;var o=document.createElement("canvas").getContext("2d");return o.font=t,o.measureText(e).width}(e,t,n)+"px";return function(e,t,n,o,r,a){return'[ '+(n=a,r=l,(r?n.replace(/ ")};return(0,o.createComponentVNode)(2,d.Box,{position:"relative",backgroundColor:i,width:"100%",height:"100%",children:[(0,o.createComponentVNode)(2,d.Box,{fillPositionedParent:!0,width:"100%",height:"100%",dangerouslySetInnerHTML:s,p:"10px"}),u.map((function(e,t){return(0,o.createComponentVNode)(2,I,{image:{sprite:e[0],x:e[1],y:e[2],rotate:e[3]}},e[0]+t)}))]})},A=function(e){function t(t,n){var o;return(o=e.call(this,t,n)||this).state={x:0,y:0,rotate:0},o}m(t,e);var n=t.prototype;return n.findStampPosition=function(e){for(var t=event.pageX,n=event.pageY,o={left:e.target.offsetLeft,top:e.target.offsetTop},r=e.target.offsetParent;r;)o.left+=r.offsetLeft,o.top+=r.offsetTop,r=r.offsetParent;var c=[t-o.left,n-o.top],i=(0,a.vecScale)([121,51],.5);return(0,a.vecSubtract)(c,i)},n.componentDidMount=function(){document.onwheel=this.handleWheel.bind(this)},n.handleMouseMove=function(e){var t=this.findStampPosition(e);S(e),this.setState({x:t[0],y:t[1]})},n.handleMouseClick=function(e){var t=this.findStampPosition(e),n=(0,l.useBackend)(this.context),o=n.act,r=n.data;o("stamp",{x:t[0],y:t[1],r:this.state.rotate,stamp_class:this.props.stamp_class,stamp_icon_state:r.stamp_icon_state}),this.setState({x:t[0],y:t[1]})},n.handleWheel=function(e){var t=e.deltaY>0?15:-15;if(e.deltaY<0&&0===this.state.rotate)this.setState({rotate:360+t});else if(e.deltaY>0&&360===this.state.rotate)this.setState({rotate:t});else{var n={rotate:t+this.state.rotate};this.setState((function(){return n}))}S(e)},n.render=function(){var e=this.props,t=e.value,n=e.stamp_class,r=e.stamps,a=p(e,["value","stamp_class","stamps"]),c=r||[],i={sprite:n,x:this.state.x,y:this.state.y,rotate:this.state.rotate};return(0,o.normalizeProps)((0,o.createComponentVNode)(2,d.Box,Object.assign({onClick:this.handleMouseClick.bind(this),onMouseMove:this.handleMouseMove.bind(this),onwheel:this.handleWheel.bind(this)},a,{children:[(0,o.createComponentVNode)(2,T,{readOnly:!0,value:t,stamps:c}),(0,o.createComponentVNode)(2,I,{opacity:.5,image:i})]})))},t}(o.Component),P=function(e){function t(t,n){var o;return(o=e.call(this,t,n)||this).state={previewSelected:"Preview",old_text:t.value||"",textarea_text:"",combined_text:t.value||""},o}m(t,e);var n=t.prototype;return n.createPreview=function(e,t){void 0===t&&(t=!1);var n,o,r=(0,l.useBackend)(this.context).data,a=r.text,d=r.pen_color,u=r.pen_font,s=r.is_crayon,m=r.field_counter,p=r.edit_usr,h={text:a};if((e=e.trim()).length>0){var N=function(e){return c["default"].sanitize(e,{FORBID_ATTR:["class","style"],ALLOWED_TAGS:["br","code","li","p","pre","span","table","td","tr","th","ul","ol","menu","font","b","center","table","tr","th"]})}(e+="\n"===e[e.length]?" \n":"\n \n"),V=(n=d,o=p,N.replace(L,(function(){return B(o,"Times New Roman",n,!0)}))),b=y(V,u,12,d,m),f=function(e){return(0,i["default"])(e,{breaks:!0,smartypants:!0,smartLists:!0,walkTokens:function(e){switch(e.type){case"url":case"autolink":case"reflink":case"link":case"image":e.type="text",e.href=""}},baseUrl:"thisshouldbreakhttp"})}(b.text),g=B(f,u,d,s);h.text+=g,h.field_counter=b.counter}if(t){var v=function(e,t,n,o,r){var a;void 0===r&&(r=!1);for(var i={},l=[];null!==(a=w.exec(e));){var d=a[0],u=a.groups.id;if(u){var s=document.getElementById(u);if(0===(s&&s.value?s.value:"").length)continue;var m=c["default"].sanitize(s.value.trim(),{ALLOWED_TAGS:[]});if(0===m.length)continue;var p=s.cloneNode(!0);m.match(L)?(p.style.fontFamily="Times New Roman",r=!0,p.defaultValue=o):(p.style.fontFamily=t,p.defaultValue=m),r&&(p.style.fontWeight="bold"),p.style.color=n,p.disabled=!0;var h=document.createElement("div");h.appendChild(p),i[u]=m,l.push({value:"["+h.innerHTML+"]",raw_text:d})}}if(l.length>0)for(var N,V=C(l);!(N=V()).done;){var b=N.value;e=e.replace(b.raw_text,b.value)}return{text:e,fields:i}}(h.text,u,d,p,s);h.text=v.text,h.form_fields=v.fields}return h},n.onInputHandler=function(e,t){var n=this;if(t!==this.state.textarea_text){var o=this.state.old_text.length+this.state.textarea_text.length;if(o>x&&(t=o-x>=t.length?"":t.substr(0,t.length-(o-x)))===this.state.textarea_text)return;this.setState((function(){return{textarea_text:t,combined_text:n.createPreview(t)}}))}},n.finalUpdate=function(e){var t=(0,l.useBackend)(this.context).act,n=this.createPreview(e,!0);t("save",n),this.setState((function(){return{textarea_text:"",previewSelected:"save",combined_text:n.text}}))},n.render=function(){var e=this,t=this.props,n=(t.value,t.textColor),r=t.fontFamily,a=t.stamps,c=t.backgroundColor;return p(t,["value","textColor","fontFamily","stamps","backgroundColor"]),(0,o.createComponentVNode)(2,d.Flex,{direction:"column",fillPositionedParent:!0,children:[(0,o.createComponentVNode)(2,d.Flex.Item,{children:(0,o.createComponentVNode)(2,d.Tabs,{children:[(0,o.createComponentVNode)(2,d.Tabs.Tab,{textColor:"black",backgroundColor:"Edit"===this.state.previewSelected?"grey":"white",selected:"Edit"===this.state.previewSelected,onClick:function(){return e.setState({previewSelected:"Edit"})},children:"Edit"},"marked_edit"),(0,o.createComponentVNode)(2,d.Tabs.Tab,{textColor:"black",backgroundColor:"Preview"===this.state.previewSelected?"grey":"white",selected:"Preview"===this.state.previewSelected,onClick:function(){return e.setState((function(){return{previewSelected:"Preview",textarea_text:e.state.textarea_text,combined_text:e.createPreview(e.state.textarea_text).text}}))},children:"Preview"},"marked_preview"),(0,o.createComponentVNode)(2,d.Tabs.Tab,{textColor:"black",backgroundColor:"confirm"===this.state.previewSelected?"red":"save"===this.state.previewSelected?"grey":"white",selected:"confirm"===this.state.previewSelected||"save"===this.state.previewSelected,onClick:function(){"confirm"===e.state.previewSelected?e.finalUpdate(e.state.textarea_text):"Edit"===e.state.previewSelected?e.setState((function(){return{previewSelected:"confirm",textarea_text:e.state.textarea_text,combined_text:e.createPreview(e.state.textarea_text).text}})):e.setState({previewSelected:"confirm"})},children:"confirm"===this.state.previewSelected?"confirm":"save"},"marked_done")]})}),(0,o.createComponentVNode)(2,d.Flex.Item,{grow:1,basis:1,children:"Edit"===this.state.previewSelected&&(0,o.createComponentVNode)(2,d.TextArea,{value:this.state.textarea_text,textColor:n,fontFamily:r,height:window.innerHeight-80+"px",backgroundColor:c,onInput:this.onInputHandler.bind(this)})||(0,o.createComponentVNode)(2,T,{value:this.state.combined_text,stamps:a,fontFamily:r,textColor:n})})]})},t}(o.Component);t.PaperSheet=function(e,t){var n=(0,l.useBackend)(t).data,r=n.edit_mode,a=n.text,c=n.paper_color,i=n.pen_color,s=void 0===i?"black":i,m=n.pen_font,p=void 0===m?"Verdana":m,C=n.stamps,h=n.stamp_class,N=(n.stamped,c&&"white"!==c?c:"#FFFFFF"),V=C&&null!==C?C:[];return(0,o.createComponentVNode)(2,u.Window,{theme:"paper",width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,u.Window.Content,{children:(0,o.createComponentVNode)(2,d.Box,{fillPositionedParent:!0,backgroundColor:N,children:function(e){switch(e){case 0:return(0,o.createComponentVNode)(2,T,{value:a,stamps:V,readOnly:!0});case 1:return(0,o.createComponentVNode)(2,P,{value:a,textColor:s,fontFamily:p,stamps:V,backgroundColor:N});case 2:return(0,o.createComponentVNode)(2,A,{value:a,stamps:V,stamp_class:h});default:return"ERROR ERROR WE CANNOT BE HERE!!"}}(r)})})})}},57966:function(e,t,n){"use strict";t.__esModule=!0,t.ParticleAccelerator=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ParticleAccelerator=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.assembled,u=l.power,s=l.strength;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:185,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Run Scan",onClick:function(){return i("scan")}}),children:(0,o.createComponentVNode)(2,a.Box,{color:d?"good":"bad",children:d?"Ready - All parts in place":"Unable to detect all parts"})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Particle Accelerator Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,disabled:!d,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Particle Strength",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:!d,onClick:function(){return i("remove_strength")}})," ",String(s).padStart(1,"0")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:!d,onClick:function(){return i("add_strength")}})]})]})})]})})}},67589:function(e,t,n){"use strict";t.__esModule=!0,t.PersonalCrafting=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);function i(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=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.")}return(n=e[Symbol.iterator]()).next.bind(n)}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n50?"good":d>15&&"average")||"bad";return(0,o.createComponentVNode)(2,c.Window,{width:450,height:340,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[!l.anchored&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Generator not anchored."}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power switch",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.active?"power-off":"times",onClick:function(){return i("toggle_power")},disabled:!l.ready_to_boot,children:l.active?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:l.sheet_name+" sheets",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:u,children:l.sheets}),l.sheets>=1&&(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"eject",disabled:l.active,onClick:function(){return i("eject")},children:"Eject"})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current sheet level",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.stack_percent/100,ranges:{good:[.1,Infinity],average:[.01,.1],bad:[-Infinity,.01]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Heat level",children:l.current_heat<100?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:"Nominal"}):l.current_heat<200?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"average",children:"Caution"}):(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"bad",children:"DANGER"})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current output",children:l.power_output}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Adjust output",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",onClick:function(){return i("lower_power")},children:l.power_generated}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return i("higher_power")},children:l.power_generated})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power available",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:!l.connected&&"bad",children:l.connected?l.power_available:"Unconnected"})})]})})]})})}},82564:function(e,t,n){"use strict";t.__esModule=!0,t.PortablePump=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=n(34227);t.PortablePump=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.direction,s=(d.holding,d.target_pressure),m=d.default_pressure,p=d.min_pressure,C=d.max_pressure;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:315,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,i.PortableBasicInfo),(0,o.createComponentVNode)(2,a.Section,{title:"Pump",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"sign-in-alt":"sign-out-alt",content:u?"In":"Out",selected:u,onClick:function(){return l("direction")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:s,unit:"kPa",width:"75px",minValue:p,maxValue:C,step:10,onChange:function(e,t){return l("pressure",{pressure:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Presets",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",disabled:s===p,onClick:function(){return l("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",disabled:s===m,onClick:function(){return l("pressure",{pressure:"reset"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",disabled:s===C,onClick:function(){return l("pressure",{pressure:"max"})}})]})]})})]})})}},24901:function(e,t,n){"use strict";t.__esModule=!0,t.PortableScrubber=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(76270),i=n(85952),l=n(34227);t.PortableScrubber=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data.filter_types||[];return(0,o.createComponentVNode)(2,i.Window,{width:320,height:350,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,l.PortableBasicInfo),(0,o.createComponentVNode)(2,a.Section,{title:"Filters",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,c.getGasLabel)(e.gas_id,e.gas_name),selected:e.enabled,onClick:function(){return d("toggle_filter",{val:e.gas_id})}},e.id)}))})]})})}},31695:function(e,t,n){"use strict";t.__esModule=!0,t.PortableTurret=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.PortableTurret=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.silicon_user,u=l.locked,s=l.on,m=l.check_weapons,p=l.neutralize_criminals,C=l.neutralize_all,h=l.neutralize_unidentified,N=l.neutralize_nonmindshielded,V=l.neutralize_cyborgs,b=l.neutralize_heads,f=l.manual_control,g=l.allow_manual_control,v=l.lasertag_turret;return(0,o.createComponentVNode)(2,c.Window,{width:310,height:v?110:292,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{children:["Swipe an ID card to ",u?"unlock":"lock"," this interface."]}),(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",buttons:!v&&(!!g||!!f&&!!d)&&(0,o.createComponentVNode)(2,a.Button,{icon:f?"wifi":"terminal",content:f?"Remotely Controlled":"Manual Control",disabled:f,color:"bad",onClick:function(){return i("manual")}}),children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"power-off":"times",content:s?"On":"Off",selected:s,disabled:u,onClick:function(){return i("power")}})})})}),!v&&(0,o.createComponentVNode)(2,a.Section,{title:"Target Settings",buttons:(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:!b,content:"Ignore Command",disabled:u,onClick:function(){return i("shootheads")}}),children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:C,content:"Non-Security and Non-Command",disabled:u,onClick:function(){return i("shootall")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:m,content:"Unauthorized Weapons",disabled:u,onClick:function(){return i("authweapon")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:h,content:"Unidentified Life Signs",disabled:u,onClick:function(){return i("checkxenos")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:N,content:"Non-Mindshielded",disabled:u,onClick:function(){return i("checkloyal")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:p,content:"Wanted Criminals",disabled:u,onClick:function(){return i("shootcriminals")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:V,content:"Cyborgs",disabled:u,onClick:function(){return i("shootborgs")}})]})],0)]})})}},89793:function(e,t,n){"use strict";t.__esModule=!0,t.AreaCharge=t.PowerMonitorContent=t.PowerMonitor=t.powerRank=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(41860),i=n(34380),l=n(71494),d=n(74814),u=n(85952),s=5e5,m=function(e){var t=String(e.split(" ")[1]).toLowerCase();return["w","kw","mw","gw"].indexOf(t)};t.powerRank=m;t.PowerMonitor=function(){return(0,o.createComponentVNode)(2,u.Window,{width:550,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,u.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,p)})})};var p=function(e,t){var n=(0,l.useBackend)(t).data,i=n.history,u=(0,l.useLocalState)(t,"sortByField",null),p=u[0],N=u[1],V=i.supply[i.supply.length-1]||0,b=i.demand[i.demand.length-1]||0,f=i.supply.map((function(e,t){return[t,e]})),g=i.demand.map((function(e,t){return[t,e]})),v=Math.max.apply(Math,[s].concat(i.supply,i.demand)),k=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.name+t})})),"name"===p&&(0,r.sortBy)((function(e){return e.name})),"charge"===p&&(0,r.sortBy)((function(e){return-e.charge})),"draw"===p&&(0,r.sortBy)((function(e){return-m(e.load)}),(function(e){return-parseFloat(e.load)}))])(n.areas);return(0,o.createFragment)([(0,o.createComponentVNode)(2,d.Flex,{mx:-.5,mb:1,children:[(0,o.createComponentVNode)(2,d.Flex.Item,{mx:.5,width:"200px",children:(0,o.createComponentVNode)(2,d.Section,{children:(0,o.createComponentVNode)(2,d.LabeledList,{children:[(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Supply",children:(0,o.createComponentVNode)(2,d.ProgressBar,{value:V,minValue:0,maxValue:v,color:"teal",children:(0,c.toFixed)(V/1e3)+" kW"})}),(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Draw",children:(0,o.createComponentVNode)(2,d.ProgressBar,{value:b,minValue:0,maxValue:v,color:"pink",children:(0,c.toFixed)(b/1e3)+" kW"})})]})})}),(0,o.createComponentVNode)(2,d.Flex.Item,{mx:.5,grow:1,children:(0,o.createComponentVNode)(2,d.Section,{position:"relative",height:"100%",children:[(0,o.createComponentVNode)(2,d.Chart.Line,{fillPositionedParent:!0,data:f,rangeX:[0,f.length-1],rangeY:[0,v],strokeColor:"rgba(0, 181, 173, 1)",fillColor:"rgba(0, 181, 173, 0.25)"}),(0,o.createComponentVNode)(2,d.Chart.Line,{fillPositionedParent:!0,data:g,rangeX:[0,g.length-1],rangeY:[0,v],strokeColor:"rgba(224, 57, 151, 1)",fillColor:"rgba(224, 57, 151, 0.25)"})]})})]}),(0,o.createComponentVNode)(2,d.Section,{children:[(0,o.createComponentVNode)(2,d.Box,{mb:1,children:[(0,o.createComponentVNode)(2,d.Box,{inline:!0,mr:2,color:"label",children:"Sort by:"}),(0,o.createComponentVNode)(2,d.Button.Checkbox,{checked:"name"===p,content:"Name",onClick:function(){return N("name"!==p&&"name")}}),(0,o.createComponentVNode)(2,d.Button.Checkbox,{checked:"charge"===p,content:"Charge",onClick:function(){return N("charge"!==p&&"charge")}}),(0,o.createComponentVNode)(2,d.Button.Checkbox,{checked:"draw"===p,content:"Draw",onClick:function(){return N("draw"!==p&&"draw")}})]}),(0,o.createComponentVNode)(2,d.Table,{children:[(0,o.createComponentVNode)(2,d.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,d.Table.Cell,{children:"Area"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,children:"Charge"}),(0,o.createComponentVNode)(2,d.Table.Cell,{textAlign:"right",children:"Draw"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,title:"Equipment",children:"Eqp"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,title:"Lighting",children:"Lgt"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,title:"Environment",children:"Env"})]}),k.map((function(e,t){return(0,o.createVNode)(1,"tr","Table__row candystripe",[(0,o.createVNode)(1,"td",null,e.name,0),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",(0,o.createComponentVNode)(2,C,{charging:e.charging,charge:e.charge}),2),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",e.load,0),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,h,{status:e.eqp}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,h,{status:e.lgt}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,h,{status:e.env}),2)],4,null,e.id)}))]})]})],4)};t.PowerMonitorContent=p;var C=function(e){var t=e.charging,n=e.charge;return(0,o.createFragment)([(0,o.createComponentVNode)(2,d.Icon,{width:"18px",textAlign:"center",name:0===t&&(n>50?"battery-half":"battery-quarter")||1===t&&"bolt"||2===t&&"battery-full",color:0===t&&(n>50?"yellow":"red")||1===t&&"yellow"||2===t&&"green"}),(0,o.createComponentVNode)(2,d.Box,{inline:!0,width:"36px",textAlign:"right",children:(0,c.toFixed)(n)+"%"})],4)};t.AreaCharge=C,C.defaultHooks=i.pureComponentHooks;var h=function(e){var t=e.status,n=Boolean(2&t),r=Boolean(1&t),a=(n?"On":"Off")+" ["+(r?"auto":"manual")+"]";return(0,o.createComponentVNode)(2,d.ColorBox,{color:n?"good":"bad",content:r?undefined:"M",title:a})};h.defaultHooks=i.pureComponentHooks},49081:function(e,t,n){"use strict";t.__esModule=!0,t.ProbingConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ProbingConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.open,u=l.feedback,s=l.occupant,m=l.occupant_name,p=l.occupant_status;return(0,o.createComponentVNode)(2,c.Window,{width:330,height:207,theme:"abductor",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Machine Report",children:u})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Scanner",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d?"sign-out-alt":"sign-in-alt",content:d?"Close":"Open",onClick:function(){return i("door")}}),children:s&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:3===p?"bad":2===p?"average":"good",children:3===p?"Deceased":2===p?"Unconscious":"Conscious"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Experiments",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"thermometer",content:"Probe",onClick:function(){return i("experiment",{experiment_type:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"brain",content:"Dissect",onClick:function(){return i("experiment",{experiment_type:2})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"search",content:"Analyze",onClick:function(){return i("experiment",{experiment_type:3})}})]})]})||(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Subject"})})]})})}},33642:function(e,t,n){"use strict";t.__esModule=!0,t.ProximitySensor=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ProximitySensor=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.minutes,u=l.seconds,s=l.timing,m=l.scanning,p=l.sensitivity;return(0,o.createComponentVNode)(2,c.Window,{width:250,height:185,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:m?"lock":"unlock",content:m?"Armed":"Not Armed",selected:m,onClick:function(){return i("scanning")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Detection Range",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:m,onClick:function(){return i("sense",{range:-1})}})," ",String(p).padStart(1,"1")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:m,onClick:function(){return i("sense",{range:1})}})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Auto Arm",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:s?"Stop":"Start",selected:s,disabled:m,onClick:function(){return i("time")}}),children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:m||s,onClick:function(){return i("input",{adjust:-30})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:m||s,onClick:function(){return i("input",{adjust:-1})}})," ",String(d).padStart(2,"0"),":",String(u).padStart(2,"0")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:m||s,onClick:function(){return i("input",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:m||s,onClick:function(){return i("input",{adjust:30})}})]})]})})}},17481:function(e,t,n){"use strict";t.__esModule=!0,t.Radio=void 0;var o=n(39812),r=n(64499),a=n(41860),c=n(71494),i=n(74814),l=n(76270),d=n(85952);t.Radio=function(e,t){var n=(0,c.useBackend)(t),u=n.act,s=n.data,m=s.freqlock,p=s.frequency,C=s.minFrequency,h=s.maxFrequency,N=s.listening,V=s.broadcasting,b=s.command,f=s.useCommand,g=s.subspace,v=s.subspaceSwitchable,k=l.RADIO_CHANNELS.find((function(e){return e.freq===p})),x=(0,r.map)((function(e,t){return{name:t,status:!!e}}))(s.channels),B=106;return g&&(x.length>0?B+=21*x.length+6:B+=24),(0,o.createComponentVNode)(2,d.Window,{width:360,height:B,children:(0,o.createComponentVNode)(2,d.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Frequency",children:[m&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"light-gray",children:(0,a.toFixed)(p/10,1)+" kHz"})||(0,o.createComponentVNode)(2,i.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:10,minValue:C/10,maxValue:h/10,value:p/10,format:function(e){return(0,a.toFixed)(e,1)},onDrag:function(e,t){return u("frequency",{adjust:t-p/10})}}),k&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:k.color,ml:2,children:["[",k.name,"]"]})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Audio",children:[(0,o.createComponentVNode)(2,i.Button,{textAlign:"center",width:"37px",icon:N?"volume-up":"volume-mute",selected:N,onClick:function(){return u("listen")}}),(0,o.createComponentVNode)(2,i.Button,{textAlign:"center",width:"37px",icon:V?"microphone":"microphone-slash",selected:V,onClick:function(){return u("broadcast")}}),!!b&&(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"bullhorn",selected:f,content:"High volume "+(f?"ON":"OFF"),onClick:function(){return u("command")}}),!!v&&(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"bullhorn",selected:g,content:"Subspace Tx "+(g?"ON":"OFF"),onClick:function(){return u("subspace")}})]}),!!g&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Channels",children:[0===x.length&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"bad",children:"No encryption keys installed."}),x.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:e.status?"check-square-o":"square-o",selected:e.status,content:e.name,onClick:function(){return u("channel",{channel:e.name})}})},e.name)}))]})]})})})})}},8324:function(e,t,n){"use strict";t.__esModule=!0,t.RadioactiveMicrolaser=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.RadioactiveMicrolaser=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.irradiate,u=l.stealth,s=l.scanmode,m=l.intensity,p=l.wavelength,C=l.on_cooldown,h=l.cooldown;return(0,o.createComponentVNode)(2,c.Window,{title:"Radioactive Microlaser",width:320,height:335,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laser Status",children:(0,o.createComponentVNode)(2,a.Box,{color:C?"average":"good",children:C?"Recharging":"Ready"})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Scanner Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Irradiation",children:(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",content:d?"On":"Off",selected:d,onClick:function(){return i("irradiate")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stealth Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"eye-slash":"eye",content:u?"On":"Off",disabled:!d,selected:u,onClick:function(){return i("stealth")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"mortar-pestle":"heartbeat",content:s?"Scan Reagents":"Scan Health",disabled:d&&u,onClick:function(){return i("scanmode")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Laser Settings",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Intensity",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return i("radintensity",{adjust:-5})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return i("radintensity",{adjust:-1})}})," ",(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(m),width:"40px",minValue:1,maxValue:20,onChange:function(e,t){return i("radintensity",{target:t})}})," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return i("radintensity",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return i("radintensity",{adjust:5})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Wavelength",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return i("radwavelength",{adjust:-5})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return i("radwavelength",{adjust:-1})}})," ",(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(p),width:"40px",minValue:0,maxValue:120,onChange:function(e,t){return i("radwavelength",{target:t})}})," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return i("radwavelength",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return i("radwavelength",{adjust:5})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laser Cooldown",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:h})})]})})]})})}},29509:function(e,t,n){"use strict";t.__esModule=!0,t.RapidPipeDispenser=void 0;var o=n(39812),r=n(34380),a=n(71494),c=n(74814),i=n(85952),l=["Atmospherics","Disposals","Transit Tubes"],d={Atmospherics:"wrench",Disposals:"trash-alt","Transit Tubes":"bus",Pipes:"grip-lines","Disposal Pipes":"grip-lines",Devices:"microchip","Heat Exchange":"thermometer-half","Station Equipment":"microchip"},u={grey:"#bbbbbb",amethyst:"#a365ff",blue:"#4466ff",brown:"#b26438",cyan:"#48eae8",dark:"#808080",green:"#1edd00",orange:"#ffa030",purple:"#b535ea",red:"#ff3333",violet:"#6e00f6",yellow:"#ffce26"},s=[{name:"Dispense",bitmask:1},{name:"Connect",bitmask:2},{name:"Destroy",bitmask:4},{name:"Paint",bitmask:8}];t.RapidPipeDispenser=function(e,t){var n=(0,a.useBackend)(t),m=n.act,p=n.data,C=p.category,h=p.categories,N=void 0===h?[]:h,V=p.selected_color,b=p.piping_layer,f=p.mode,g=p.preview_rows.flatMap((function(e){return e.previews})),v=(0,a.useLocalState)(t,"categoryName"),k=v[0],x=v[1],B=N.find((function(e){return e.cat_name===k}))||N[0];return(0,o.createComponentVNode)(2,i.Window,{width:425,height:515,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Category",children:l.map((function(e,t){return(0,o.createComponentVNode)(2,c.Button,{selected:C===t,icon:d[e],color:"transparent",content:e,onClick:function(){return m("category",{category:t})}},e)}))}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Modes",children:s.map((function(e){return(0,o.createComponentVNode)(2,c.Button.Checkbox,{checked:f&e.bitmask,content:e.name,onClick:function(){return m("mode",{mode:e.bitmask})}},e.bitmask)}))}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Color",children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,width:"64px",color:u[V],children:V}),Object.keys(u).map((function(e){return(0,o.createComponentVNode)(2,c.ColorBox,{ml:1,color:u[e],onClick:function(){return m("color",{paint_color:e})}},e)}))]})]})}),(0,o.createComponentVNode)(2,c.Flex,{m:-.5,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{m:.5,children:(0,o.createComponentVNode)(2,c.Section,{children:[0===C&&(0,o.createComponentVNode)(2,c.Box,{mb:1,children:[1,2,3].map((function(e){return(0,o.createComponentVNode)(2,c.Button.Checkbox,{fluid:!0,checked:e===b,content:"Layer "+e,onClick:function(){return m("piping_layer",{piping_layer:e})}},e)}))}),(0,o.createComponentVNode)(2,c.Box,{width:"108px",children:g.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{title:e.dir_name,selected:e.selected,style:{width:"48px",height:"48px",padding:0},onClick:function(){return m("setdir",{dir:e.dir,flipped:e.flipped})},children:(0,o.createComponentVNode)(2,c.Box,{className:(0,r.classes)(["pipes32x32",e.dir+"-"+e.icon_state]),style:{transform:"scale(1.5) translate(17%, 17%)"}})},e.dir)}))})]})}),(0,o.createComponentVNode)(2,c.Flex.Item,{m:.5,grow:1,children:(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Tabs,{children:N.map((function(e,t){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{fluid:!0,icon:d[e.cat_name],selected:e.cat_name===B.cat_name,onClick:function(){return x(e.cat_name)},children:e.cat_name},e.cat_name)}))}),null==B?void 0:B.recipes.map((function(e){return(0,o.createComponentVNode)(2,c.Button.Checkbox,{fluid:!0,ellipsis:!0,checked:e.selected,content:e.pipe_name,title:e.pipe_name,onClick:function(){return m("pipe_type",{pipe_type:e.pipe_index,category:B.cat_name})}},e.pipe_index)}))]})})]})]})})}},14265:function(e,t,n){"use strict";t.__esModule=!0,t.RemoteRobotControlContent=t.RemoteRobotControl=void 0;var o=n(39812),r=n(2497),a=n(71494),c=n(74814),i=n(85952);t.RemoteRobotControl=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{title:"Remote Robot Control",width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data.robots,d=void 0===l?[]:l;return d.length?d.map((function(e){return(0,o.createComponentVNode)(2,c.Section,{title:e.name+" ("+e.model+")",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"tools",content:"Interface",onClick:function(){return i("interface",{ref:e.ref})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"phone-alt",content:"Call",onClick:function(){return i("callbot",{ref:e.ref})}})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"Inactive"===(0,r.decodeHtmlEntities)(e.mode)?"bad":"Idle"===(0,r.decodeHtmlEntities)(e.mode)?"average":"good",children:(0,r.decodeHtmlEntities)(e.mode)})," ",e.hacked&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"bad",children:"(HACKED)"})||""]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Location",children:e.location})]})},e.ref)})):(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.NoticeBox,{textAlign:"center",children:"No robots detected"})})};t.RemoteRobotControlContent=l},18374:function(e,t,n){"use strict";t.__esModule=!0,t.RequestKioskContent=t.RequestKiosk=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(58083),i=n(85952);t.RequestKiosk=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{width:550,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.accountName,u=l.requests,s=void 0===u?[]:u,m=l.applicants,p=void 0===m?[]:m,C=l.bountyValue;l.bountyText;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Account",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"Log out",onClick:function(){return i("clear")}}),children:d||"N/A"})})}),(0,o.createComponentVNode)(2,a.Flex,{mb:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:null==s?void 0:s.map((function(e){return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.owner,width:"300px",children:(0,o.createComponentVNode)(2,a.Section,{width:"300px",children:[(0,o.createComponentVNode)(2,a.Flex,{spacing:1,align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,width:"310px",children:e.owner}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"100px",children:(0,c.formatMoney)(e.value)+" cr"}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"pen-fancy",content:"Apply",onClick:function(){return i("apply",{request:e.acc_number})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"trash-alt",content:"Delete",color:"red",onClick:function(){return i("deleteRequest",{request:e.acc_number})}})]})]}),(0,o.createComponentVNode)(2,a.Section,{align:"center",children:(0,o.createVNode)(1,"i",null,[(0,o.createTextVNode)('"'),e.description,(0,o.createTextVNode)('"')],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Request Applicants",children:null==p?void 0:p.map((function(t){return t.request_id===e.acc_number&&(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,p:.5,backgroundColor:"rgba(0, 0, 69, 0.5)",width:"510px",style:{border:"2px solid rgba(13, 13, 213, 0.7)"},children:t.name}),(0,o.createComponentVNode)(2,a.Flex.Item,{align:"end",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"cash-register",onClick:function(){return i("payApplicant",{applicant:t.requestee_id,request:e.acc_number})}})})]})}))})]},e.name)},e.name)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Collapsible,{title:"New Bounty",width:"220px",color:"green",children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.TextArea,{fluid:!0,height:"250px",width:"200px",backgroundColor:"black",textColor:"white",onChange:function(e,t){return i("bountyText",{bountytext:t})}}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.NumberInput,{animate:!0,unit:"cr",minValue:1,maxValue:1e3,value:C,width:"80px",onChange:function(e,t){return i("bountyVal",{bountyval:t})}})}),(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Submit bounty",onClick:function(){return i("createBounty")}})]})})})]})],4)};t.RequestKioskContent=l},24455:function(e,t,n){"use strict";t.__esModule=!0,t.RoboticsControlConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.RoboticsControlConsole=function(e,t){var n=(0,r.useBackend)(t),d=(n.act,n.data),u=(0,r.useSharedState)(t,"tab",1),s=u[0],m=u[1],p=d.can_hack,C=d.cyborgs,h=void 0===C?[]:C,N=d.drones,V=void 0===N?[]:N;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:460,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:1===s,onClick:function(){return m(1)},children:["Cyborgs (",h.length,")"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:2===s,onClick:function(){return m(2)},children:["Drones (",V.length,")"]})]}),1===s&&(0,o.createComponentVNode)(2,i,{cyborgs:h,can_hack:p}),2===s&&(0,o.createComponentVNode)(2,l,{drones:V})]})})};var i=function(e,t){var n=e.cyborgs,c=e.can_hack,i=(0,r.useBackend)(t),l=i.act;i.data;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createFragment)([!!c&&!e.emagged&&(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:"Hack",color:"bad",onClick:function(){return l("magbot",{ref:e.ref})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:e.locked_down?"unlock":"lock",color:e.locked_down?"good":"default",content:e.locked_down?"Release":"Lockdown",onClick:function(){return l("stopbot",{ref:e.ref})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"bomb",content:"Detonate",color:"bad",onClick:function(){return l("killbot",{ref:e.ref})}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":e.locked_down?"average":"good",children:e.status?"Not Responding":e.locked_down?"Locked Down":"Nominal"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,a.Box,{color:e.charge<=30?"bad":e.charge<=70?"average":"good",children:"number"==typeof e.charge?e.charge+"%":"Not Found"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Module",children:e.module}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Master AI",children:(0,o.createComponentVNode)(2,a.Box,{color:e.synchronization?"default":"average",children:e.synchronization||"None"})})]})},e.ref)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cyborg units detected within access parameters"})},l=function(e,t){var n=e.drones,c=(0,r.useBackend)(t).act;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"bomb",content:"Detonate",color:"bad",onClick:function(){return c("killdrone",{ref:e.ref})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":"good",children:e.status?"Not Responding":"Nominal"})})})},e.ref)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No drone units detected within access parameters"})}},90910:function(e,t,n){"use strict";t.__esModule=!0,t.Roulette=t.RouletteBetTable=t.RouletteBoard=t.RouletteNumberButton=void 0;var o=n(39812),r=n(34380),a=n(71494),c=n(74814),i=n(85952),l=function(e){if(0===e)return"green";for(var t=[[1,10],[19,28]],n=!0,o=0;o=r[0]&&e<=r[1]){n=!1;break}}var a=e%2==0;return(n?a:!a)?"red":"black"},d=function(e,t){var n=e.number,r=(0,a.useBackend)(t).act;return(0,o.createComponentVNode)(2,c.Button,{bold:!0,content:n,color:l(n),width:"40px",height:"28px",fontSize:"20px",textAlign:"center",mb:0,className:"Roulette__board-extrabutton",onClick:function(){return r("ChangeBetType",{type:n})}})};t.RouletteNumberButton=d;var u=function(e,t){var n=(0,a.useBackend)(t).act;return(0,o.createVNode)(1,"table","Table",[(0,o.createVNode)(1,"tr","Roulette__board-row",[(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{content:"0",color:"transparent",height:"88px",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:0})}}),2,{rowSpan:"3"}),[3,6,9,12,15,18,21,24,27,30,33,36].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s3rd col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[[2,5,8,11,14,17,20,23,26,29,32,35].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s2nd col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[[1,4,7,10,13,16,19,22,25,28,31,34].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1st col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"1st 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1-12"})}}),2,{colSpan:"4"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2nd 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s13-24"})}}),2,{colSpan:"4"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"3rd 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s25-36"})}}),2,{colSpan:"4"})],4),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"1-18",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1-18"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Even",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"even"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Black",color:"black",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"black"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Red",color:"red",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"red"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Odd",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"odd"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"19-36",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s19-36"})}}),2,{colSpan:"2"})],4)],4,{style:{width:"1px"}})};t.RouletteBoard=u;var s=function(e,t){var n=(0,a.useBackend)(t),i=n.act,d=n.data,u=(0,a.useLocalState)(t,"customBet",500),s=u[0],m=u[1],p=d.BetType;return p.startsWith("s")&&(p=p.substring(1,p.length)),(0,o.createVNode)(1,"table","Roulette__lowertable",[(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"th",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--header"]),"Last Spun:",16),(0,o.createVNode)(1,"th",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--header"]),"Current Bet:",16)],4),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--spinresult","Roulette__lowertable--spinresult-"+l(d.LastSpin)]),d.LastSpin,0),(0,o.createVNode)(1,"td",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--betscell"]),[(0,o.createComponentVNode)(2,c.Box,{bold:!0,mt:1,mb:1,fontSize:"25px",textAlign:"center",children:[d.BetAmount," cr on ",p]}),(0,o.createComponentVNode)(2,c.Box,{ml:1,mr:1,children:[(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 10 cr",onClick:function(){return i("ChangeBetAmount",{amount:10})}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 50 cr",onClick:function(){return i("ChangeBetAmount",{amount:50})}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 100 cr",onClick:function(){return i("ChangeBetAmount",{amount:100})}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 500 cr",onClick:function(){return i("ChangeBetAmount",{amount:500})}}),(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet custom amount...",onClick:function(){return i("ChangeBetAmount",{amount:s})}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{size:.1,children:(0,o.createComponentVNode)(2,c.NumberInput,{value:s,minValue:0,maxValue:1e3,step:10,stepPixelSize:4,width:"40px",onChange:function(e,t){return m(t)}})})]})]})],4)],4),(0,o.createVNode)(1,"tr",null,(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,c.Box,{bold:!0,m:1,fontSize:"14px",textAlign:"center",children:"Swipe an ID card with a connected account to spin!"}),2,{colSpan:"2"}),2),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","Roulette__lowertable--cell",[(0,o.createComponentVNode)(2,c.Box,{inline:!0,bold:!0,mr:1,children:"House Balance:"}),(0,o.createComponentVNode)(2,c.Box,{inline:!0,children:d.HouseBalance?d.HouseBalance+" cr":"None"})],4),(0,o.createVNode)(1,"td","Roulette__lowertable--cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:d.IsAnchored?"Bolted":"Unbolted",m:1,color:"transparent",textAlign:"center",onClick:function(){return i("anchor")}}),2)],4)],4)};t.RouletteBetTable=s;t.Roulette=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{width:603,height:475,theme:"cardtable",children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,s)]})})}},14317:function(e,t,n){"use strict";t.__esModule=!0,t.SatelliteControl=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(60929),i=n(85952);t.SatelliteControl=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.satellites||[];return(0,o.createComponentVNode)(2,i.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[d.meteor_shield&&(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledListItem,{label:"Coverage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.meteor_shield_coverage/d.meteor_shield_coverage_max,content:100*d.meteor_shield_coverage/d.meteor_shield_coverage_max+"%",ranges:{good:[1,Infinity],average:[.3,1],bad:[-Infinity,.3]}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Satellite Controls",children:(0,o.createComponentVNode)(2,a.Box,{mr:-1,children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.active,content:"#"+e.id+" "+e.mode,onClick:function(){return l("toggle",{id:e.id})}},e.id)}))})})]})})}},55666:function(e,t,n){"use strict";t.__esModule=!0,t.ScannerGate=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(21451),i=n(85952),l=["Positive","Harmless","Minor","Medium","Harmful","Dangerous","BIOHAZARD"],d=[{name:"Human",value:"human"},{name:"Lizardperson",value:"lizard"},{name:"Flyperson",value:"fly"},{name:"Felinid",value:"felinid"},{name:"Plasmaman",value:"plasma"},{name:"Mothperson",value:"moth"},{name:"Jellyperson",value:"jelly"},{name:"Podperson",value:"pod"},{name:"Golem",value:"golem"},{name:"Zombie",value:"zombie"}],u=[{name:"Starving",value:150},{name:"Obese",value:600}];t.ScannerGate=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data;return(0,o.createComponentVNode)(2,i.Window,{width:400,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.InterfaceLockNoticeBox,{onLockedStatusChange:function(){return a("toggle_lock")}}),!l.locked&&(0,o.createComponentVNode)(2,m)]})})};var s={Off:{title:"Scanner Mode: Off",component:function(){return p}},Wanted:{title:"Scanner Mode: Wanted",component:function(){return C}},Guns:{title:"Scanner Mode: Guns",component:function(){return h}},Mindshield:{title:"Scanner Mode: Mindshield",component:function(){return N}},Disease:{title:"Scanner Mode: Disease",component:function(){return V}},Species:{title:"Scanner Mode: Species",component:function(){return b}},Nutrition:{title:"Scanner Mode: Nutrition",component:function(){return f}},Nanites:{title:"Scanner Mode: Nanites",component:function(){return g}}},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.scan_mode,l=s[i]||s.off,d=l.component();return(0,o.createComponentVNode)(2,a.Section,{title:l.title,buttons:"Off"!==i&&(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"back",onClick:function(){return c("set_mode",{new_mode:"Off"})}}),children:(0,o.createComponentVNode)(2,d)})},p=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:"Select a scanning mode below."}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Wanted",onClick:function(){return n("set_mode",{new_mode:"Wanted"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Guns",onClick:function(){return n("set_mode",{new_mode:"Guns"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Mindshield",onClick:function(){return n("set_mode",{new_mode:"Mindshield"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Disease",onClick:function(){return n("set_mode",{new_mode:"Disease"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Species",onClick:function(){return n("set_mode",{new_mode:"Species"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nutrition",onClick:function(){return n("set_mode",{new_mode:"Nutrition"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nanites",onClick:function(){return n("set_mode",{new_mode:"Nanites"})}})]})],4)},C=function(e,t){var n=(0,r.useBackend)(t).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any warrants for their arrest."]}),(0,o.createComponentVNode)(2,v)],4)},h=function(e,t){var n=(0,r.useBackend)(t).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any guns."]}),(0,o.createComponentVNode)(2,v)],4)},N=function(e,t){var n=(0,r.useBackend)(t).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","a mindshield."]}),(0,o.createComponentVNode)(2,v)],4)},V=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,d=i.reverse,u=i.disease_threshold;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",d?"does not have":"has"," ","a disease equal or worse than ",u,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e===u,content:e,onClick:function(){return c("set_disease_threshold",{new_threshold:e})}},e)}))}),(0,o.createComponentVNode)(2,v)],4)},b=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.reverse,u=i.target_species,s=d.find((function(e){return e.value===u}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned is ",l?"not":""," ","of the ",s.name," species.","zombie"===u&&" All zombie types will be detected, including dormant zombies."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===u,content:e.name,onClick:function(){return c("set_target_species",{new_species:e.value})}},e.value)}))}),(0,o.createComponentVNode)(2,v)],4)},f=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.reverse,d=i.target_nutrition,s=u.find((function(e){return e.value===d}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","the ",s.name," nutrition level."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===d,content:e.name,onClick:function(){return c("set_target_nutrition",{new_nutrition:e.name})}},e.name)}))}),(0,o.createComponentVNode)(2,v)],4)},g=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.reverse,d=i.nanite_cloud;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","nanite cloud ",d,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloud ID",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:d,width:"65px",minValue:1,maxValue:100,stepPixelSize:2,onChange:function(e,t){return c("set_nanite_cloud",{new_cloud:t})}})})})}),(0,o.createComponentVNode)(2,v)],4)},v=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.reverse;return(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scanning Mode",children:(0,o.createComponentVNode)(2,a.Button,{content:i?"Inverted":"Default",icon:i?"random":"long-arrow-alt-right",onClick:function(){return c("toggle_reverse")},color:i?"bad":"good"})})})}},53480:function(e,t,n){"use strict";t.__esModule=!0,t.SeedExtractor=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(2497),i=n(71494),l=n(74814),d=n(85952);t.SeedExtractor=function(e,t){var n,u,s=(0,i.useBackend)(t),m=s.act,p=s.data,C=(n=p.seeds,u=Object.keys(n).map((function(e){var t=function(e){var t,n=/([^;=]+)=([^;]+)/g,o={};do{(t=n.exec(e))&&(o[t[1]]=t[2]+"")}while(t);return o}(e);return t.amount=n[e],t.key=e,t.name=(0,c.toTitleCase)(t.name.replace("pack of ","")),t})),(0,a.flow)([(0,r.sortBy)((function(e){return e.name}))])(u));return(0,o.createComponentVNode)(2,d.Window,{width:1e3,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l.Section,{title:"Stored seeds:",children:(0,o.createComponentVNode)(2,l.Table,{cellpadding:"3",textAlign:"center",children:[(0,o.createComponentVNode)(2,l.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Name"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Lifespan"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Endurance"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Maturation"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Production"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Yield"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Potency"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Instability"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Stock"})]}),C.map((function(e){return(0,o.createComponentVNode)(2,l.Table.Row,{children:[(0,o.createComponentVNode)(2,l.Table.Cell,{bold:!0,children:e.name}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.lifespan}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.endurance}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.maturation}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.production}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.yield}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.potency}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.instability}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:[(0,o.createComponentVNode)(2,l.Button,{content:"Vend",onClick:function(){return m("select",{item:e.key})}}),"(",e.amount," left)"]})]},e.key)}))]})})})})}},41125:function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ShuttleConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.authorization_required;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:230,children:[!!l&&(0,o.createComponentVNode)(2,a.Modal,{ml:1,mt:1,width:26,height:12,fontSize:"28px",fontFamily:"monospace",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mt:2,children:(0,o.createComponentVNode)(2,a.Icon,{name:"minus-circle"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mt:2,ml:2,color:"bad",children:"SHUTTLE LOCKED"})]}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"18px",mt:4,children:(0,o.createComponentVNode)(2,a.Button,{lineHeight:"40px",icon:"arrow-circle-right",content:"Request Authorization",color:"bad",onClick:function(){return i("request")}})})]}),(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,d)})]})};var i=function(e,t){var n;return null==e||null==(n=e.find((function(e){return e.id===t})))?void 0:n.name},l=function(e,t){var n;return null==e||null==(n=e.find((function(e){return e.name===t})))?void 0:n.id},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data,u=d.status,s=d.locked,m=d.authorization_required,p=d.destination,C=d.docked_location,h=d.timer_str,N=d.locations,V=void 0===N?[]:N;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,fontSize:"26px",textAlign:"center",fontFamily:"monospace",children:h||"00:00"}),(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",fontSize:"14px",mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:"STATUS:"}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"In Transit"===u?"good":"Idle"===u||"Igniting"===u?"average":"bad",ml:1,children:u||"Not Available"})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Shuttle Controls",level:2,children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:C||"Not Available"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:0===V.length&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Not Available"})||1===V.length&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:i(V,p)})||(0,o.createComponentVNode)(2,a.Dropdown,{mb:1.7,over:!0,width:"240px",options:V.map((function(e){return e.name})),disabled:s||m,selected:i(V,p)||"Select a Destination",onSelected:function(e){return c("set_destination",{destination:l(V,e)})}})})]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Depart",disabled:!i(V,p)||s||m,mt:1.5,icon:"arrow-up",textAlign:"center",onClick:function(){return c("move",{shuttle_id:p})}})]})]})}},93138:function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleManipulatorModification=t.ShuttleManipulatorTemplates=t.ShuttleManipulatorStatus=t.ShuttleManipulator=void 0;var o=n(39812),r=n(64499),a=n(71494),c=n(74814),i=n(85952);t.ShuttleManipulator=function(e,t){var n=(0,a.useLocalState)(t,"tab",1),r=n[0],s=n[1];return(0,o.createComponentVNode)(2,i.Window,{title:"Shuttle Manipulator",width:800,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:1===r,onClick:function(){return s(1)},children:"Status"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:2===r,onClick:function(){return s(2)},children:"Templates"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:3===r,onClick:function(){return s(3)},children:"Modification"})]}),1===r&&(0,o.createComponentVNode)(2,l),2===r&&(0,o.createComponentVNode)(2,d),3===r&&(0,o.createComponentVNode)(2,u)]})})};var l=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.shuttles||[];return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Table,{children:i.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{content:"JMP",onClick:function(){return r("jump_to",{type:"mobile",id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{content:"Fly",disabled:!e.can_fly,onClick:function(){return r("fly",{id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.id}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.status}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:[e.mode,!!e.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),e.timeleft,(0,o.createTextVNode)(")"),(0,o.createComponentVNode)(2,c.Button,{content:"Fast Travel",disabled:!e.can_fast_travel,onClick:function(){return r("fast_travel",{id:e.id})}},e.id)],0)]})]},e.id)}))})})};t.ShuttleManipulatorStatus=l;var d=function(e,t){var n,i=(0,a.useBackend)(t),l=i.act,d=i.data,u=d.templates||{},s=d.selected||{},m=(0,a.useLocalState)(t,"templateId",Object.keys(u)[0]),p=m[0],C=m[1],h=null==(n=u[p])?void 0:n.templates;return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:p===t,onClick:function(){return C(t)},children:e.port_id},t)}))(u)})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:h.map((function(e){var t=e.shuttle_id===s.shuttle_id;return(0,o.createComponentVNode)(2,c.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,c.Button,{content:t?"Selected":"Select",selected:t,onClick:function(){return l("select_template",{shuttle_id:e.shuttle_id})}}),children:(!!e.description||!!e.admin_notes)&&(0,o.createComponentVNode)(2,c.LabeledList,{children:[!!e.description&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",children:e.description}),!!e.admin_notes&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Admin Notes",children:e.admin_notes})]})},e.shuttle_id)}))})]})})};t.ShuttleManipulatorTemplates=d;var u=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.selected||{},d=i.existing_shuttle||{};return(0,o.createComponentVNode)(2,c.Section,{children:l?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{level:2,title:l.name,children:(!!l.description||!!l.admin_notes)&&(0,o.createComponentVNode)(2,c.LabeledList,{children:[!!l.description&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",children:l.description}),!!l.admin_notes&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Admin Notes",children:l.admin_notes})]})}),d?(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Existing Shuttle: "+d.name,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",buttons:(0,o.createComponentVNode)(2,c.Button,{content:"Jump To",onClick:function(){return r("jump_to",{type:"mobile",id:d.id})}}),children:[d.status,!!d.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),d.timeleft,(0,o.createTextVNode)(")")],0)]})})}):(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Existing Shuttle: None"}),(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Status",children:[(0,o.createComponentVNode)(2,c.Button,{content:"Preview",onClick:function(){return r("preview",{shuttle_id:l.shuttle_id})}}),(0,o.createComponentVNode)(2,c.Button,{content:"Load",color:"bad",onClick:function(){return r("load",{shuttle_id:l.shuttle_id})}})]})],0):"No shuttle selected"})};t.ShuttleManipulatorModification=u},32325:function(e,t,n){"use strict";t.__esModule=!0,t.Signaler=void 0;var o=n(39812),r=n(41860),a=n(71494),c=n(74814),i=n(85952);t.Signaler=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.code,s=d.frequency,m=d.minFrequency,p=d.maxFrequency;return(0,o.createComponentVNode)(2,i.Window,{width:280,height:132,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:1.4,color:"label",children:"Frequency:"}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:m/10,maxValue:p/10,value:s/10,format:function(e){return(0,r.toFixed)(e,1)},width:"80px",onDrag:function(e,t){return l("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"freq"})}})})]}),(0,o.createComponentVNode)(2,c.Grid,{mt:.6,children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:1.4,color:"label",children:"Code:"}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:u,width:"80px",onDrag:function(e,t){return l("code",{code:t})}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"code"})}})})]}),(0,o.createComponentVNode)(2,c.Grid,{mt:.8,children:(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{mb:-.1,fluid:!0,icon:"arrow-up",content:"Send Signal",textAlign:"center",onClick:function(){return l("signal")}})})})]})})})}},52757:function(e,t,n){"use strict";t.__esModule=!0,t.SkillPanel=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i={color:"lightgreen",fontWeight:"bold"},l={color:"#FFDB58",fontWeight:"bold"};t.SkillPanel=function(e,t){var n=(0,r.useBackend)(t),u=n.act,s=n.data,m=s.skills||[];return(0,o.createComponentVNode)(2,c.Window,{title:"Manage Skills",width:600,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:m.playername,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:m.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[(0,o.createVNode)(1,"span",null,e.desc,0,{style:l}),(0,o.createVNode)(1,"br"),!!e.level_based&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d,{skill_lvl_num:e.lvl_base_num,skill_lvl:e.lvl_base}),(0,o.createVNode)(1,"br")],4),"Total Experience: [",e.value_base," XP]",(0,o.createVNode)(1,"br"),"XP To Next Level:",e.level_based?(0,o.createVNode)(1,"span",null,e.xp_next_lvl_base,0):(0,o.createVNode)(1,"span",null,"[MAXXED]",16,{style:i}),(0,o.createVNode)(1,"br"),e.base_readout,(0,o.createComponentVNode)(2,a.ProgressBar,{value:e.percent_base,color:"good"}),(0,o.createVNode)(1,"br"),!!s.admin&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Adjust Exp",onClick:function(){return u("adj_exp",{skill:e.path})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Set Exp",onClick:function(){return u("set_exp",{skill:e.path})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Set Level",onClick:function(){return u("set_lvl",{skill:e.path})}}),(0,o.createVNode)(1,"br"),(0,o.createVNode)(1,"br")],4)]},e.name)}))})})})})};var d=function(e){var t=e.skill_lvl_num,n=e.skill_lvl;return(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:["Level: [",(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,textColor:"hsl("+50*t+", 50%, 50%)",children:n}),"]"]})}},43078:function(e,t,n){"use strict";t.__esModule=!0,t.SkillStation=t.TimeFormat=t.ImplantedSkillchips=t.InsertedSkillchip=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=n(41860),l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.skillchip_ready,d=i.slot_use,u=i.slots_used,s=i.slots_max,m=i.implantable_reason,p=i.implantable,C=i.complexity,h=i.skill_name,N=i.skill_desc,V=i.skill_icon,b=i.working;return l?(0,o.createComponentVNode)(2,a.Section,{title:"Inserted Skillchip",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"syringe",disabled:!p||!!b,color:p?"good":"default",onClick:function(){return c("implant")},content:"Implant",tooltip:m}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!!b,onClick:function(){return c("eject")},content:"Eject"})],4),children:(0,o.createComponentVNode)(2,a.Flex,{spacing:2,height:"100%",width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{height:"100%",align:"center",children:(0,o.createComponentVNode)(2,a.Icon,{size:3,name:V})}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"100%",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Skillchip",children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,children:h})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:(0,o.createComponentVNode)(2,a.Box,{italic:!0,children:N})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Complexity",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"brain",width:"15px",textAlign:"center"})," ",C]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Slot Size",children:(0,o.createComponentVNode)(2,a.Box,{color:u+d>s&&"red",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"save",width:"15px",textAlign:"center"})," ",d]})}),!!m&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Error",color:p?"good":"bad",children:m})]})})]})}):!b&&(0,o.createComponentVNode)(2,a.NoticeBox,{info:!0,children:"Please insert a skillchip."})};t.InsertedSkillchip=l;var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.slots_used,d=i.slots_max,u=i.complexity_used,s=i.complexity_max,m=i.working,p=i.current||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Implanted Skillchips",children:[!p.length&&"No skillchips detected.",!!p.length&&(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Chip"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"brain",tooltip:"Complexity",tooltipPosition:"top",content:u+"/"+s})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"save",tooltip:"Slot Size",tooltipPosition:"top",content:l+"/"+d})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"check",tooltip:"Is Active",tooltipPosition:"top"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"hourglass-half",tooltip:"Cooldown",tooltipPosition:"top"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"tasks",tooltip:"Actions",tooltipPosition:"top"})})]}),p.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Icon,{textAlign:"center",width:"18px",mr:1,name:e.icon}),e.name]}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:(!e.active?e.complexity+u>s&&"bad":"good")||"grey",textAlign:"center",children:e.complexity}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:"good",textAlign:"center",children:e.slot_use}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Icon,{name:e.active?"check":"times",color:e.active?"good":"bad"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:e.cooldown>0&&Math.ceil(e.cooldown/10)+"s"||"0s"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("remove",{ref:e.ref})},icon:e.removable?"eject":"trash",color:e.removable?"good":"bad",tooltip:e.removable?"Extract":"Destroy",tooltipPosition:"left",disabled:e.cooldown||m}),(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("toggle_activate",{ref:e.ref})},icon:e.active?"check-square-o":"square-o",color:e.active?"good":"default",tooltip:!!e.active_error&&!e.active&&e.active_error||e.active&&"Deactivate"||"Activate",tooltipPosition:"left",disabled:e.cooldown||m||!e.active&&e.complexity+u>s})]})]},e.ref)}))]})]})};t.ImplantedSkillchips=d;var u=function(e,t){var n=e.value,o=(0,i.toFixed)(Math.floor(n/10%60)).padStart(2,"0"),r=(0,i.toFixed)(Math.floor(n/600%60)).padStart(2,"0");return(0,i.toFixed)(Math.floor(n/36e3%24)).padStart(2,"0")+":"+r+":"+o};t.TimeFormat=u;t.SkillStation=function(e,t){var n=(0,r.useBackend)(t).data,i=n.working,s=n.timeleft,m=n.error;return(0,o.createComponentVNode)(2,c.Window,{title:"Skillsoft Station",width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!!m&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:m}),!!i&&(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mb:.5,children:"Operation in progress. Please do not leave the chamber."}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["Time Left: ",(0,o.createComponentVNode)(2,u,{value:s})]})]})}),(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,d)]})})}},80646:function(e,t,n){"use strict";t.__esModule=!0,t.Sleeper=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Oxygen",type:"oxyLoss"}];t.Sleeper=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.open,s=d.occupant,m=void 0===s?{}:s,p=d.occupied,C=(d.chems||[]).sort((function(e,t){var n=e.name.toLowerCase(),o=t.name.toLowerCase();return no?1:0}));return(0,o.createComponentVNode)(2,c.Window,{width:310,height:465,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:m.name?m.name:"No Occupant",minHeight:"210px",buttons:!!m.stat&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:m.statstate,children:m.stat}),children:!!p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.ProgressBar,{value:m.health,minValue:m.minHealth,maxValue:m.maxHealth,ranges:{good:[50,Infinity],average:[0,50],bad:[-Infinity,0]}}),(0,o.createComponentVNode)(2,a.Box,{mt:1}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[i.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m[e.type],minValue:0,maxValue:m.maxHealth,color:"bad"})},e.type)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cells",color:m.cloneLoss?"bad":"good",children:m.cloneLoss?"Damaged":"Healthy"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain",color:m.brainLoss?"bad":"good",children:m.brainLoss?"Abnormal":"Healthy"})]})],4)}),(0,o.createComponentVNode)(2,a.Section,{title:"Medicines",minHeight:"205px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"door-open":"door-closed",content:u?"Open":"Closed",onClick:function(){return l("door")}}),children:C.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"flask",content:e.name,disabled:!p||!e.allowed,width:"140px",onClick:function(){return l("inject",{chem:e.id})}},e.name)}))})]})})}},97700:function(e,t,n){"use strict";t.__esModule=!0,t.SlimeBodySwapper=t.BodyEntry=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i={Dead:"bad",Unconscious:"average",Conscious:"good"},l={owner:"You Are Here",stranger:"Occupied",available:"Swap"},d=function(e,t){var n=e.body,r=e.swapFunc;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:n.htmlcolor,children:n.name}),level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{content:l[n.occupied],selected:"owner"===n.occupied,color:"stranger"===n.occupied&&"bad",onClick:function(){return r()}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",bold:!0,color:i[n.status],children:n.status}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Jelly",children:n.exoticblood}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:n.area})]})})};t.BodyEntry=d;t.SlimeBodySwapper=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.bodies,u=void 0===l?[]:l;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:400,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{children:u.map((function(e){return(0,o.createComponentVNode)(2,d,{body:e,swapFunc:function(){return i("swap",{ref:e.ref})}},e.name)}))})})})}},55896:function(e,t,n){"use strict";t.__esModule=!0,t.SmartVend=void 0;var o=n(39812),r=n(64499),a=n(71494),c=n(74814),i=n(85952);t.SmartVend=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data;return(0,o.createComponentVNode)(2,i.Window,{width:440,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.Section,{title:"Storage",buttons:!!d.isdryer&&(0,o.createComponentVNode)(2,c.Button,{icon:d.drying?"stop":"tint",onClick:function(){return l("Dry")},children:d.drying?"Stop drying":"Dry"}),children:0===d.contents.length&&(0,o.createComponentVNode)(2,c.NoticeBox,{children:["Unfortunately, this ",d.name," is empty."]})||(0,o.createComponentVNode)(2,c.Table,{children:[(0,o.createComponentVNode)(2,c.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Item"}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"center",children:d.verb?d.verb:"Dispense"})]}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:e.amount}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,c.Button,{content:"One",disabled:e.amount<1,onClick:function(){return l("Release",{name:e.name,amount:1})}}),(0,o.createComponentVNode)(2,c.Button,{content:"Many",disabled:e.amount<=1,onClick:function(){return l("Release",{name:e.name})}})]})]},t)}))(d.contents)]})})})})}},20561:function(e,t,n){"use strict";t.__esModule=!0,t.Smes=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(58083),i=n(85952),l=1e3;t.Smes=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.capacityPercent,m=(u.capacity,u.charge),p=u.inputAttempt,C=u.inputting,h=u.inputLevel,N=u.inputLevelMax,V=u.inputAvailable,b=u.outputAttempt,f=u.outputting,g=u.outputLevel,v=u.outputLevelMax,k=u.outputUsed,x=(s>=100?"good":C&&"average")||"bad",B=(f?"good":m>0&&"average")||"bad";return(0,o.createComponentVNode)(2,i.Window,{width:340,height:350,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored Energy",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:.01*s,ranges:{good:[.5,Infinity],average:[.15,.5],bad:[-Infinity,.15]}})}),(0,o.createComponentVNode)(2,a.Section,{title:"Input",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:p?"sync-alt":"times",selected:p,onClick:function(){return d("tryinput")},children:p?"Auto":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:x,children:(s>=100?"Fully Charged":C&&"Charging")||"Not Charging"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Input",children:(0,o.createComponentVNode)(2,a.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===h,onClick:function(){return d("input",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===h,onClick:function(){return d("input",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,a.Slider,{value:h/l,fillValue:V/l,minValue:0,maxValue:N/l,step:5,stepPixelSize:4,format:function(e){return(0,c.formatPower)(e*l,1)},onDrag:function(e,t){return d("input",{target:t*l})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:h===N,onClick:function(){return d("input",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:h===N,onClick:function(){return d("input",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available",children:(0,c.formatPower)(V)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:b?"power-off":"times",selected:b,onClick:function(){return d("tryoutput")},children:b?"On":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:B,children:f?"Sending":m>0?"Not Sending":"No Charge"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Output",children:(0,o.createComponentVNode)(2,a.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===g,onClick:function(){return d("output",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===g,onClick:function(){return d("output",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,a.Slider,{value:g/l,minValue:0,maxValue:v/l,step:5,stepPixelSize:4,format:function(e){return(0,c.formatPower)(e*l,1)},onDrag:function(e,t){return d("output",{target:t*l})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:g===v,onClick:function(){return d("output",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:g===v,onClick:function(){return d("output",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Outputting",children:(0,c.formatPower)(k)})]})})]})})}},93267:function(e,t,n){"use strict";t.__esModule=!0,t.SmokeMachine=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.SmokeMachine=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.TankContents,u=(l.isTankLoaded,l.TankCurrentVolume),s=l.TankMaxVolume,m=l.active,p=l.setting,C=(l.screen,l.maxSetting),h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:350,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Dispersal Tank",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",selected:m,content:m?"On":"Off",onClick:function(){return i("power")}}),children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:u/s,ranges:{bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{initial:0,value:u||0})," / "+s]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Range",children:[1,2,3,4,5].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:p===e,icon:"plus",content:3*e,disabled:h0?"good":"bad",children:h})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power output",children:(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[.66,Infinity],average:[.33,.66],bad:[-Infinity,.33]},minValue:0,maxValue:1,value:u,children:d+" W"})})})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tracking",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:0===C,onClick:function(){return i("tracking",{mode:0})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:"Timed",selected:1===C,onClick:function(){return i("tracking",{mode:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:2===C,disabled:!N,onClick:function(){return i("tracking",{mode:2})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Azimuth",children:[(0===C||1===C)&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"52px",unit:"\xb0",step:1,stepPixelSize:2,minValue:-360,maxValue:720,value:s,onDrag:function(e,t){return i("azimuth",{value:t})}}),1===C&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"80px",unit:"\xb0/m",step:.01,stepPixelSize:1,minValue:-p-.01,maxValue:p+.01,value:m,format:function(e){return(Math.sign(e)>0?"+":"-")+Math.abs(e)},onDrag:function(e,t){return i("azimuth_rate",{value:t})}}),2===C&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mt:"3px",children:[s+" \xb0"," (auto)"]})]})]})})]})})}},57762:function(e,t,n){"use strict";t.__esModule=!0,t.SpaceHeater=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.SpaceHeater=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Power",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Cell",disabled:!l.hasPowercell||!l.open,onClick:function(){return i("eject")}}),(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,disabled:!l.hasPowercell,onClick:function(){return i("power")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell",color:!l.hasPowercell&&"bad",children:l.hasPowercell&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.powerLevel/100,ranges:{good:[.6,Infinity],average:[.3,.6],bad:[-Infinity,.3]},children:l.powerLevel+"%"})||"None"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Thermostat",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"18px",color:Math.abs(l.targetTemp-l.currentTemp)>50?"bad":Math.abs(l.targetTemp-l.currentTemp)>20?"average":"good",children:[l.currentTemp,"\xb0C"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:l.open&&(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.targetTemp),width:"65px",unit:"\xb0C",minValue:l.minTemp,maxValue:l.maxTemp,onChange:function(e,t){return i("target",{target:t})}})||l.targetTemp+"\xb0C"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",children:l.open?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"thermometer-half",content:"Auto",selected:"auto"===l.mode,onClick:function(){return i("mode",{mode:"auto"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fire-alt",content:"Heat",selected:"heat"===l.mode,onClick:function(){return i("mode",{mode:"heat"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fan",content:"Cool",selected:"cool"===l.mode,onClick:function(){return i("mode",{mode:"cool"})}})],4):"Auto"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider)]})})]})})}},46810:function(e,t,n){"use strict";t.__esModule=!0,t.SpawnersMenu=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.SpawnersMenu=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.spawners||[];return(0,o.createComponentVNode)(2,c.Window,{title:"Spawners Menu",width:700,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name+" ("+e.amount_left+" left)",level:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Jump",onClick:function(){return i("jump",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Spawn",onClick:function(){return i("spawn",{name:e.name})}})],4),children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,mb:1,fontSize:"20px",children:e.short_desc}),(0,o.createComponentVNode)(2,a.Box,{children:e.flavor_text}),!!e.important_info&&(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,color:"bad",fontSize:"26px",children:e.important_info})]},e.name)}))})})})}},32015:function(e,t,n){"use strict";t.__esModule=!0,t.StationAlertConsoleContent=t.StationAlertConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.StationAlertConsole=function(){return(0,o.createComponentVNode)(2,c.Window,{width:325,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t).data.alarms||[],c=n.Fire||[],i=n.Atmosphere||[],l=n.Power||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Fire Alarms",children:(0,o.createVNode)(1,"ul",null,[0===c.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),c.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Atmospherics Alarms",children:(0,o.createVNode)(1,"ul",null,[0===i.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),i.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Alarms",children:(0,o.createVNode)(1,"ul",null,[0===l.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),l.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)})],4)};t.StationAlertConsoleContent=i},80748:function(e,t,n){"use strict";t.__esModule=!0,t.SuitStorageUnit=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.SuitStorageUnit=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.locked,u=l.open,s=l.safeties,m=l.uv_active,p=l.occupied,C=l.suit,h=l.helmet,N=l.mask,V=l.storage;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!(!p||!s)&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Biological entity detected in suit chamber. Please remove before continuing with operation."}),m&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Contents are currently being decontaminated. Please wait."})||(0,o.createComponentVNode)(2,a.Section,{title:"Storage",minHeight:"260px",buttons:(0,o.createFragment)([!u&&(0,o.createComponentVNode)(2,a.Button,{icon:d?"unlock":"lock",content:d?"Unlock":"Lock",onClick:function(){return i("lock")}}),!d&&(0,o.createComponentVNode)(2,a.Button,{icon:u?"sign-out-alt":"sign-in-alt",content:u?"Close":"Open",onClick:function(){return i("door")}})],0),children:d&&(0,o.createComponentVNode)(2,a.Box,{mt:6,bold:!0,textAlign:"center",fontSize:"40px",children:[(0,o.createComponentVNode)(2,a.Box,{children:"Unit Locked"}),(0,o.createComponentVNode)(2,a.Icon,{name:"lock"})]})||u&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Helmet",children:(0,o.createComponentVNode)(2,a.Button,{icon:h?"square":"square-o",content:h||"Empty",disabled:!h,onClick:function(){return i("dispense",{item:"helmet"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suit",children:(0,o.createComponentVNode)(2,a.Button,{icon:C?"square":"square-o",content:C||"Empty",disabled:!C,onClick:function(){return i("dispense",{item:"suit"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mask",children:(0,o.createComponentVNode)(2,a.Button,{icon:N?"square":"square-o",content:N||"Empty",disabled:!N,onClick:function(){return i("dispense",{item:"mask"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Storage",children:(0,o.createComponentVNode)(2,a.Button,{icon:V?"square":"square-o",content:V||"Empty",disabled:!V,onClick:function(){return i("dispense",{item:"storage"})}})})]})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"recycle",content:"Decontaminate",disabled:p&&s,textAlign:"center",onClick:function(){return i("uv")}})})]})})}},37162:function(e,t,n){"use strict";t.__esModule=!0,t.SyndPane=t.StatusPane=t.SyndContractorContent=t.SyndContractor=t.FakeTerminal=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);function i(e,t){return(i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var l=function(e){var t,n;function r(t){var n;return(n=e.call(this,t)||this).timer=null,n.state={currentIndex:0,currentDisplay:[]},n}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,i(t,n);var c=r.prototype;return c.tick=function(){var e=this.props,t=this.state;t.currentIndex<=e.allMessages.length?(this.setState((function(e){return{currentIndex:e.currentIndex+1}})),t.currentDisplay.push(e.allMessages[t.currentIndex])):(clearTimeout(this.timer),setTimeout(e.onFinished,e.finishedTimeout))},c.componentDidMount=function(){var e=this,t=this.props.linesPerSecond,n=void 0===t?2.5:t;this.timer=setInterval((function(){return e.tick()}),1e3/n)},c.componentWillUnmount=function(){clearTimeout(this.timer)},c.render=function(){return(0,o.createComponentVNode)(2,a.Box,{m:1,children:this.state.currentDisplay.map((function(e){return(0,o.createFragment)([e,(0,o.createVNode)(1,"br")],0,e)}))})},r}(o.Component);t.FakeTerminal=l;t.SyndContractor=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:500,height:600,theme:"syndicate",resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,d)})})};var d=function(e,t){var n=(0,r.useBackend)(t),c=n.data,i=n.act,d=["Recording biometric data...","Analyzing embedded syndicate info...","STATUS CONFIRMED","Contacting syndicate database...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Response received, ack 4851234...","CONFIRM ACC "+Math.round(2e4*Math.random()),"Setting up private accounts...","CONTRACTOR ACCOUNT CREATED","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","CONTRACTS FOUND","WELCOME, AGENT"],u=!!c.error&&(0,o.createComponentVNode)(2,a.Modal,{backgroundColor:"red",children:(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,children:(0,o.createComponentVNode)(2,a.Icon,{size:4,name:"exclamation-triangle"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,grow:1,textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Box,{width:"260px",textAlign:"left",minHeight:"80px",children:c.error}),(0,o.createComponentVNode)(2,a.Button,{content:"Dismiss",onClick:function(){return i("PRG_clear_error")}})]})]})});return c.logged_in?c.logged_in&&c.first_load?(0,o.createComponentVNode)(2,a.Box,{backgroundColor:"rgba(0, 0, 0, 0.8)",minHeight:"525px",children:(0,o.createComponentVNode)(2,l,{allMessages:d,finishedTimeout:3e3,onFinished:function(){return i("PRG_set_first_load_finished")}})}):c.info_screen?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{backgroundColor:"rgba(0, 0, 0, 0.8)",minHeight:"500px",children:(0,o.createComponentVNode)(2,l,{allMessages:["SyndTract v2.0","","We've identified potentional high-value targets that are","currently assigned to your mission area. They are believed","to hold valuable information which could be of immediate","importance to our organisation.","","Listed below are all of the contracts available to you. You","are to bring the specified target to the designated","drop-off, and contact us via this uplink. We will send","a specialised extraction unit to put the body into.","","We want targets alive - but we will sometimes pay slight","amounts if they're not, you just won't recieve the shown","bonus. You can redeem your payment through this uplink in","the form of raw telecrystals, which can be put into your","regular Syndicate uplink to purchase whatever you may need.","We provide you with these crystals the moment you send the","target up to us, which can be collected at anytime through","this system.","","Targets extracted will be ransomed back to the station once","their use to us is fulfilled, with us providing you a small","percentage cut. You may want to be mindful of them","identifying you when they come back. We provide you with","a standard contractor loadout, which will help cover your","identity."],linesPerSecond:10})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"CONTINUE",color:"transparent",textAlign:"center",onClick:function(){return i("PRG_toggle_info")}})],4):(0,o.createFragment)([u,(0,o.createComponentVNode)(2,s)],0):(0,o.createComponentVNode)(2,a.Section,{minHeight:"525px",children:[(0,o.createComponentVNode)(2,a.Box,{width:"100%",textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{content:"REGISTER USER",color:"transparent",onClick:function(){return i("PRG_login")}})}),!!c.error&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:c.error})]})};t.SyndContractorContent=d;var u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createFragment)([(0,o.createTextVNode)("Contractor Status"),(0,o.createComponentVNode)(2,a.Button,{content:"View Information Again",color:"transparent",mb:0,ml:1,onClick:function(){return c("PRG_toggle_info")}})],4),buttons:(0,o.createComponentVNode)(2,a.Box,{bold:!0,mr:1,children:[i.contract_rep," Rep"]}),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:.85,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"TC Available",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Claim",disabled:i.redeemable_tc<=0,onClick:function(){return c("PRG_redeem_TC")}}),children:i.redeemable_tc}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"TC Earned",children:i.earned_tc})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Contracts Completed",children:i.contracts_completed}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Status",children:"ACTIVE"})]})})]})})};t.StatusPane=u;var s=function(e,t){var n=(0,r.useLocalState)(t,"tab",1),c=n[0],i=n[1];return(0,o.createFragment)([(0,o.createComponentVNode)(2,u,{state:e.state}),(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===c,onClick:function(){return i(1)},children:"Contracts"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===c,onClick:function(){return i(2)},children:"Hub"})]}),1===c&&(0,o.createComponentVNode)(2,m),2===c&&(0,o.createComponentVNode)(2,p)],0)};t.SyndPane=s;var m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.contracts||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Available Contracts",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Call Extraction",disabled:!i.ongoing_contract||i.extraction_enroute,onClick:function(){return c("PRG_call_extraction")}}),children:l.map((function(e){if(!i.ongoing_contract||2===e.status){var t=e.status>1;if(!(e.status>=5))return(0,o.createComponentVNode)(2,a.Section,{title:e.target?e.target+" ("+e.target_rank+")":"Invalid Target",level:t?1:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:[e.payout," (+",e.payout_bonus,") TC"]}),(0,o.createComponentVNode)(2,a.Button,{content:t?"Abort":"Accept",disabled:e.extraction_enroute,color:t&&"bad",onClick:function(){return c("PRG_contract"+(t?"_abort":"-accept"),{contract_id:e.id})}})],4),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:e.message}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.5,children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,mb:1,children:"Dropoff Location:"}),(0,o.createComponentVNode)(2,a.Box,{children:e.dropoff})]})]})},e.target)}}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Dropoff Locator",textAlign:"center",opacity:i.ongoing_contract?100:0,children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,children:i.dropoff_direction})})],4)},p=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.contractor_hub_items||[];return(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){var t=e.cost?e.cost+" Rep":"FREE",n=-1!==e.limited;return(0,o.createComponentVNode)(2,a.Section,{title:e.name+" - "+t,level:2,buttons:(0,o.createFragment)([n&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:[e.limited," remaining"]}),(0,o.createComponentVNode)(2,a.Button,{content:"Purchase",disabled:i.contract_rep0&&g.flatMap((function(e){return e.items||[]})).filter(L).filter((function(e,t){return t<25}))||(null==(l=g.find((function(e){return e.name===_})))?void 0:l.items)||[];return(0,o.createComponentVNode)(2,c.Section,{title:(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:s>0?"good":"bad",children:[(0,i.formatMoney)(s)," ",p]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,c.Input,{autoFocus:!0,value:k,onInput:function(e,t){return x(t)},mx:1}),(0,o.createComponentVNode)(2,c.Button,{icon:V?"list":"info",content:V?"Compact":"Detailed",onClick:function(){return h("compact_toggle")}}),!!b&&(0,o.createComponentVNode)(2,c.Button,{icon:"lock",content:"Lock",onClick:function(){return h("lock")}})],0),children:(0,o.createComponentVNode)(2,c.Flex,{children:[0===k.length&&(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:g.map((function(e){var t;return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:e.name===_,onClick:function(){return w(e.name)},children:[e.name," (",(null==(t=e.items)?void 0:t.length)||0,")"]},e.name)}))})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:[0===y.length&&(0,o.createComponentVNode)(2,c.NoticeBox,{children:0===k.length?"No items in this category.":"No results found."}),(0,o.createComponentVNode)(2,u,{compactMode:k.length>0||V,currencyAmount:s,currencySymbol:p,items:y})]})]})})};t.GenericUplink=d;var u=function(e,t){var n=e.compactMode,l=e.currencyAmount,d=e.currencySymbol,u=(0,a.useBackend)(t).act,s=(0,a.useLocalState)(t,"hoveredItem",{}),m=s[0],p=s[1],C=m&&m.cost||0,h=e.items.map((function(e){var t=m&&m.name!==e.name,n=l-Cl.user.cash),content:h?"FREE":d.price+" cr",onClick:function(){return i("vend",{ref:d.ref})}})})]})};t.Vending=function(e,t){var n,r=(0,a.useBackend)(t),d=(r.act,r.data),u=d.user,s=d.onstation,m=d.product_records,p=void 0===m?[]:m,C=d.coin_records,h=void 0===C?[]:C,N=d.hidden_records,V=void 0===N?[]:N,b=d.stock,f=!1;return d.vending_machine_input?(n=d.vending_machine_input||[],f=!0):(n=[].concat(p,h),d.extended_inventory&&(n=[].concat(n,V))),n=n.filter((function(e){return!!e})),(0,o.createComponentVNode)(2,i.Window,{title:"Vending Machine",width:450,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[!!s&&(0,o.createComponentVNode)(2,c.Section,{title:"User",children:u&&(0,o.createComponentVNode)(2,c.Box,{children:["Welcome, ",(0,o.createVNode)(1,"b",null,u.name,0),","," ",(0,o.createVNode)(1,"b",null,u.job||"Unemployed",0),"!",(0,o.createVNode)(1,"br"),"Your balance is ",(0,o.createVNode)(1,"b",null,[u.cash,(0,o.createTextVNode)(" credits")],0),"."]})||(0,o.createComponentVNode)(2,c.Box,{color:"light-grey",children:["No registered ID card!",(0,o.createVNode)(1,"br"),"Please contact your local HoP!"]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Products",children:(0,o.createComponentVNode)(2,c.Table,{children:n.map((function(e){return(0,o.createComponentVNode)(2,l,{custom:f,product:e,productStock:b[e.name]},e.name)}))})})]})})}},44952:function(e,t,n){"use strict";t.__esModule=!0,t.VrSleeper=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.VrSleeper=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:475,height:340,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!!l.emagged&&(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Safety restraints disabled."})}),(0,o.createComponentVNode)(2,a.Section,{title:"Virtual Avatar",children:l.vr_avatar?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l.vr_avatar.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:l.vr_avatar.status}),!!l.vr_avatar&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.vr_avatar.health/l.vr_avatar.maxhealth,ranges:{good:[.9,Infinity],average:[.7,.8],bad:[-Infinity,.5]}})})]}):"No Virtual Avatar detected"}),(0,o.createComponentVNode)(2,a.Section,{title:"VR Commands",children:[(0,o.createComponentVNode)(2,a.Button,{icon:l.toggle_open?"unlock":"lock",disabled:l.stored0&&S[t]&&S[t]!==i,r=!S[t]&&C.includes(t)?e.desc:e.desc+" ("+b[N[t]]+")";return(0,o.createComponentVNode)(2,c.Button.Checkbox,{ml:1,fluid:!0,content:r,disabled:n,checked:s.includes(e.ref),onClick:function(){return m(e.ref,"None"===i?null:i)}},e.desc)}))}},71739:function(e,t,n){"use strict";t.__esModule=!0,t.Scrubber=t.Vent=void 0;var o=n(39812),r=n(2497),a=n(71494),c=n(74814),i=n(76270);t.Vent=function(e,t){var n=e.vent,i=(0,a.useBackend)(t).act,l=n.id_tag,d=n.long_name,u=n.power,s=n.checks,m=n.excheck,p=n.incheck,C=n.direction,h=n.external,N=n.internal,V=n.extdefault,b=n.intdefault;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,r.decodeHtmlEntities)(d),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:u?"power-off":"times",selected:u,content:u?"On":"Off",onClick:function(){return i("power",{id_tag:l,val:Number(!u)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:(0,o.createComponentVNode)(2,c.Button,{icon:"sign-in-alt",content:C?"Pressurizing":"Scrubbing",color:!C&&"danger",onClick:function(){return i("direction",{id_tag:l,val:Number(!C)})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"sign-in-alt",content:"Internal",selected:p,onClick:function(){return i("incheck",{id_tag:l,val:s})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"External",selected:m,onClick:function(){return i("excheck",{id_tag:l,val:s})}})]}),!!p&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Internal Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(N),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,t){return i("set_internal_pressure",{id_tag:l,value:t})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:b,content:"Reset",onClick:function(){return i("reset_internal_pressure",{id_tag:l})}})]}),!!m&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"External Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(h),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,t){return i("set_external_pressure",{id_tag:l,value:t})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:V,content:"Reset",onClick:function(){return i("reset_external_pressure",{id_tag:l})}})]})]})})};t.Scrubber=function(e,t){var n=e.scrubber,l=(0,a.useBackend)(t).act,d=n.long_name,u=n.power,s=n.scrubbing,m=n.id_tag,p=n.widenet,C=n.filter_types;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,r.decodeHtmlEntities)(d),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return l("power",{id_tag:m,val:Number(!u)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:[(0,o.createComponentVNode)(2,c.Button,{icon:s?"filter":"sign-in-alt",color:s||"danger",content:s?"Scrubbing":"Siphoning",onClick:function(){return l("scrubbing",{id_tag:m,val:Number(!s)})}}),(0,o.createComponentVNode)(2,c.Button,{icon:p?"expand":"compress",selected:p,content:p?"Expanded range":"Normal range",onClick:function(){return l("widenet",{id_tag:m,val:Number(!p)})}})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Filters",children:s&&C.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,i.getGasLabel)(e.gas_id,e.gas_name),title:e.gas_name,selected:e.enabled,onClick:function(){return l("toggle_filter",{id_tag:m,val:e.gas_id})}},e.gas_id)}))||"N/A"})]})})}},48229:function(e,t,n){"use strict";t.__esModule=!0,t.BeakerContents=void 0;var o=n(39812),r=n(74814);t.BeakerContents=function(e){var t=e.beakerLoaded,n=e.beakerContents;return(0,o.createComponentVNode)(2,r.Box,{children:[!t&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"No beaker loaded."})||0===n.length&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"Beaker is empty."}),n.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{color:"label",children:[(0,o.createComponentVNode)(2,r.AnimatedNumber,{initial:0,value:e.volume})," units of "+e.name]},e.name)}))]})}},21451:function(e,t,n){"use strict";t.__esModule=!0,t.InterfaceLockNoticeBox=void 0;var o=n(39812),r=n(71494),a=n(74814);t.InterfaceLockNoticeBox=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=e.siliconUser,d=void 0===l?i.siliconUser:l,u=e.locked,s=void 0===u?i.locked:u,m=e.onLockStatusChange,p=void 0===m?function(){return c("lock")}:m,C=e.accessText,h=void 0===C?"an ID card":C;return d?(0,o.createComponentVNode)(2,a.NoticeBox,{color:"grey",children:(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:"Interface lock status:"}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{m:0,color:s?"red":"green",icon:s?"lock":"unlock",content:s?"Locked":"Unlocked",onClick:function(){p&&p(!s)}})})]})}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:["Swipe ",h," ","to ",s?"unlock":"lock"," this interface."]})}},34227:function(e,t,n){"use strict";t.__esModule=!0,t.PortableBasicInfo=void 0;var o=n(39812),r=n(71494),a=n(74814);t.PortableBasicInfo=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.connected,d=i.holding,u=i.on,s=i.pressure;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return c("power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:s})," kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Port",color:l?"good":"average",children:l?"Connected":"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holding Tank",minHeight:"82px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!d,onClick:function(){return c("eject")}}),children:d?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Label",children:d.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.pressure})," kPa"]})]}):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No holding tank"})})],4)}},73218:function(e,t,n){"use strict";t.__esModule=!0,t.getRoutedComponent=void 0;var o=n(39812),r=n(71494),a=(n(30098),n(85952)),c=n(8156),i=function(e,t){return function(){return(0,o.createComponentVNode)(2,a.Window,{children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:["notFound"===e&&(0,o.createVNode)(1,"div",null,[(0,o.createTextVNode)("Interface "),(0,o.createVNode)(1,"b",null,t,0),(0,o.createTextVNode)(" was not found.")],4),"missingExport"===e&&(0,o.createVNode)(1,"div",null,[(0,o.createTextVNode)("Interface "),(0,o.createVNode)(1,"b",null,t,0),(0,o.createTextVNode)(" is missing an export.")],4)]})})}},l=function(){return(0,o.createComponentVNode)(2,a.Window,{children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0})})};t.getRoutedComponent=function(e){var t=e.getState(),n=(0,r.selectBackend)(t),o=n.suspended,a=n.config;if(o)return l;for(var d,u=null==a?void 0:a["interface"],s=[function(e){return"./"+e+".tsx"},function(e){return"./"+e+".js"},function(e){return"./"+e+"/index.tsx"},function(e){return"./"+e+"/index.js"}];!d&&s.length>0;){var m=s.shift()(u);try{d=c(m)}catch(C){if("MODULE_NOT_FOUND"!==C.code)throw C}}if(!d)return i("notFound",u);var p=d[u];return p||i("missingExport",u)}},56285:function(){},58602:function(){},92433:function(){},20459:function(){},35070:function(){},86455:function(){},41821:function(){},83243:function(){},97585:function(){},87266:function(){},99195:function(){},72916:function(){},8156:function(e,t,n){var o={"./AbductorConsole":37905,"./AbductorConsole.js":37905,"./Achievements":16804,"./Achievements.js":16804,"./AiAirlock":47330,"./AiAirlock.js":47330,"./AiRestorer":33084,"./AiRestorer.js":33084,"./AirAlarm":58444,"./AirAlarm.js":58444,"./AirlockElectronics":54370,"./AirlockElectronics.js":54370,"./AlertModal":24053,"./AlertModal.js":24053,"./Apc":93749,"./Apc.js":93749,"./ApcControl":78645,"./ApcControl.js":78645,"./AtmosAlertConsole":38531,"./AtmosAlertConsole.js":38531,"./AtmosControlConsole":4852,"./AtmosControlConsole.js":4852,"./AtmosControlPanel":40948,"./AtmosControlPanel.js":40948,"./AtmosFilter":2726,"./AtmosFilter.js":2726,"./AtmosMixer":61505,"./AtmosMixer.js":61505,"./AtmosPump":30255,"./AtmosPump.js":30255,"./AtmosRelief":78598,"./AtmosRelief.js":78598,"./AutomatedAnnouncement":33106,"./AutomatedAnnouncement.js":33106,"./BankMachine":57554,"./BankMachine.js":57554,"./Bepis":51723,"./Bepis.js":51723,"./Biogenerator":20813,"./Biogenerator.js":20813,"./BlackmarketUplink":14847,"./BlackmarketUplink.js":14847,"./BluespaceArtillery":32129,"./BluespaceArtillery.js":32129,"./BluespaceLocator":16370,"./BluespaceLocator.js":16370,"./BorgPanel":30876,"./BorgPanel.js":30876,"./BrigTimer":61956,"./BrigTimer.js":61956,"./CameraConsole":3180,"./CameraConsole.js":3180,"./Canister":94477,"./Canister.js":94477,"./Canvas":55636,"./Canvas.js":55636,"./Cargo":5758,"./Cargo.js":5758,"./CargoBountyConsole":96291,"./CargoBountyConsole.js":96291,"./CargoExpress":69941,"./CargoExpress.js":69941,"./CargoHoldTerminal":62292,"./CargoHoldTerminal.js":62292,"./CellularEmporium":27173,"./CellularEmporium.js":27173,"./CentcomPodLauncher":26726,"./CentcomPodLauncher.js":26726,"./ChemAcclimator":8663,"./ChemAcclimator.js":8663,"./ChemDebugSynthesizer":76900,"./ChemDebugSynthesizer.js":76900,"./ChemDispenser":22223,"./ChemDispenser.js":22223,"./ChemFilter":16610,"./ChemFilter.js":16610,"./ChemHeater":96479,"./ChemHeater.js":96479,"./ChemMaster":34859,"./ChemMaster.js":34859,"./ChemPress":56320,"./ChemPress.js":56320,"./ChemReactionChamber":52592,"./ChemReactionChamber.js":52592,"./ChemSplitter":68502,"./ChemSplitter.js":68502,"./ChemSynthesizer":77508,"./ChemSynthesizer.js":77508,"./CivCargoHoldTerminal":30733,"./CivCargoHoldTerminal.js":30733,"./ClockworkSlab":14319,"./ClockworkSlab.js":14319,"./CodexGigas":28408,"./CodexGigas.js":28408,"./Colormate":67649,"./Colormate.js":67649,"./ComputerFabricator":2174,"./ComputerFabricator.js":2174,"./Crayon":99672,"./Crayon.js":99672,"./CrewConsole":72357,"./CrewConsole.js":72357,"./Cryo":99798,"./Cryo.js":99798,"./DecalPainter":17785,"./DecalPainter.js":17785,"./DisposalUnit":95877,"./DisposalUnit.js":95877,"./DnaConsole":43928,"./DnaConsole.js":43928,"./DnaVault":89817,"./DnaVault.js":89817,"./EightBallVote":41284,"./EightBallVote.js":41284,"./Electrolyzer":31342,"./Electrolyzer.js":31342,"./Electropack":53586,"./Electropack.js":53586,"./EmergencyShuttleConsole":47453,"./EmergencyShuttleConsole.js":47453,"./EngravedMessage":11715,"./EngravedMessage.js":11715,"./ExosuitControlConsole":8077,"./ExosuitControlConsole.js":8077,"./ExosuitFabricator":95481,"./ExosuitFabricator.js":95481,"./ForbiddenLore":1005,"./ForbiddenLore.js":1005,"./Gateway":64831,"./Gateway.js":64831,"./GhostPoolProtection":8098,"./GhostPoolProtection.js":8098,"./GlandDispenser":25313,"./GlandDispenser.js":25313,"./Gps":25230,"./Gps.js":25230,"./GravityGenerator":4475,"./GravityGenerator.js":4475,"./GulagItemReclaimer":83366,"./GulagItemReclaimer.js":83366,"./GulagTeleporterConsole":72263,"./GulagTeleporterConsole.js":72263,"./Holodeck":7908,"./Holodeck.js":7908,"./Holopad":84283,"./Holopad.js":84283,"./HypnoChair":12708,"./HypnoChair.js":12708,"./ImplantChair":1473,"./ImplantChair.js":1473,"./InfraredEmitter":87522,"./InfraredEmitter.js":87522,"./Intellicard":28549,"./Intellicard.js":28549,"./Jukebox":68741,"./Jukebox.js":68741,"./KeycardAuth":36597,"./KeycardAuth.js":36597,"./LaborClaimConsole":52169,"./LaborClaimConsole.js":52169,"./LanguageMenu":83577,"./LanguageMenu.js":83577,"./LaunchpadConsole":79381,"./LaunchpadConsole.js":79381,"./LaunchpadRemote":59955,"./LaunchpadRemote.js":59955,"./LoadoutSelect":71293,"./LoadoutSelect.js":71293,"./MafiaPanel":5568,"./MafiaPanel.js":5568,"./MalfunctionModulePicker":42159,"./MalfunctionModulePicker.js":42159,"./MechBayPowerConsole":80881,"./MechBayPowerConsole.js":80881,"./MechpadConsole":37305,"./MechpadConsole.js":37305,"./MedicalKiosk":74702,"./MedicalKiosk.js":74702,"./Microscope":61443,"./Microscope.js":61443,"./MiningVendor":62012,"./MiningVendor.js":62012,"./Mint":83413,"./Mint.js":83413,"./Mule":97397,"./Mule.js":97397,"./NaniteChamberControl":42370,"./NaniteChamberControl.js":42370,"./NaniteCloudControl":93623,"./NaniteCloudControl.js":93623,"./NaniteProgramHub":22682,"./NaniteProgramHub.js":22682,"./NaniteProgrammer":87554,"./NaniteProgrammer.js":87554,"./NaniteRemote":73708,"./NaniteRemote.js":73708,"./NotificationPreferences":15394,"./NotificationPreferences.js":15394,"./NtnetRelay":53158,"./NtnetRelay.js":53158,"./NtosAiRestorer":86156,"./NtosAiRestorer.js":86156,"./NtosArcade":79760,"./NtosArcade.js":79760,"./NtosAtmos":5313,"./NtosAtmos.js":5313,"./NtosBountyConsole":78502,"./NtosBountyConsole.js":78502,"./NtosCard":30495,"./NtosCard.js":30495,"./NtosConfiguration":55513,"./NtosConfiguration.js":55513,"./NtosCrewManifest":48791,"./NtosCrewManifest.js":48791,"./NtosCyborgRemoteMonitor":77426,"./NtosCyborgRemoteMonitor.js":77426,"./NtosCyborgRemoteMonitorSyndicate":71854,"./NtosCyborgRemoteMonitorSyndicate.js":71854,"./NtosFileManager":86441,"./NtosFileManager.js":86441,"./NtosJobManager":38773,"./NtosJobManager.js":38773,"./NtosMain":59543,"./NtosMain.js":59543,"./NtosNetChat":73883,"./NtosNetChat.js":73883,"./NtosNetDos":83908,"./NtosNetDos.js":83908,"./NtosNetDownloader":83305,"./NtosNetDownloader.js":83305,"./NtosNetMonitor":6806,"./NtosNetMonitor.js":6806,"./NtosPowerMonitor":54698,"./NtosPowerMonitor.js":54698,"./NtosRadar":49413,"./NtosRadar.js":49413,"./NtosRadarSyndicate":41935,"./NtosRadarSyndicate.js":41935,"./NtosRequestKiosk":60839,"./NtosRequestKiosk.js":60839,"./NtosRevelation":69480,"./NtosRevelation.js":69480,"./NtosRoboControl":36888,"./NtosRoboControl.js":36888,"./NtosShipping":55431,"./NtosShipping.js":55431,"./NtosStationAlertConsole":76124,"./NtosStationAlertConsole.js":76124,"./NtosSupermatterMonitor":22475,"./NtosSupermatterMonitor.js":22475,"./NuclearBomb":78467,"./NuclearBomb.js":78467,"./OperatingComputer":48826,"./OperatingComputer.js":48826,"./Orbit":36983,"./Orbit.js":36983,"./OreBox":57800,"./OreBox.js":57800,"./OreRedemptionMachine":72938,"./OreRedemptionMachine.js":72938,"./Pandemic":47944,"./Pandemic.js":47944,"./PaperSheet":52472,"./PaperSheet.js":52472,"./ParticleAccelerator":57966,"./ParticleAccelerator.js":57966,"./PersonalCrafting":67589,"./PersonalCrafting.js":67589,"./Photocopier":9527,"./Photocopier.js":9527,"./PortableChemMixer":36088,"./PortableChemMixer.js":36088,"./PortableGenerator":46104,"./PortableGenerator.js":46104,"./PortablePump":82564,"./PortablePump.js":82564,"./PortableScrubber":24901,"./PortableScrubber.js":24901,"./PortableTurret":31695,"./PortableTurret.js":31695,"./PowerMonitor":89793,"./PowerMonitor.js":89793,"./ProbingConsole":49081,"./ProbingConsole.js":49081,"./ProximitySensor":33642,"./ProximitySensor.js":33642,"./Radio":17481,"./Radio.js":17481,"./RadioactiveMicrolaser":8324,"./RadioactiveMicrolaser.js":8324,"./RapidPipeDispenser":29509,"./RapidPipeDispenser.js":29509,"./RemoteRobotControl":14265,"./RemoteRobotControl.js":14265,"./RequestKiosk":18374,"./RequestKiosk.js":18374,"./RoboticsControlConsole":24455,"./RoboticsControlConsole.js":24455,"./Roulette":90910,"./Roulette.js":90910,"./SatelliteControl":14317,"./SatelliteControl.js":14317,"./ScannerGate":55666,"./ScannerGate.js":55666,"./SeedExtractor":53480,"./SeedExtractor.js":53480,"./ShuttleConsole":41125,"./ShuttleConsole.js":41125,"./ShuttleManipulator":93138,"./ShuttleManipulator.js":93138,"./Signaler":32325,"./Signaler.js":32325,"./SkillPanel":52757,"./SkillPanel.js":52757,"./SkillStation":43078,"./SkillStation.js":43078,"./Sleeper":80646,"./Sleeper.js":80646,"./SlimeBodySwapper":97700,"./SlimeBodySwapper.js":97700,"./SmartVend":55896,"./SmartVend.js":55896,"./Smes":20561,"./Smes.js":20561,"./SmokeMachine":93267,"./SmokeMachine.js":93267,"./SolarControl":21633,"./SolarControl.js":21633,"./SpaceHeater":57762,"./SpaceHeater.js":57762,"./SpawnersMenu":46810,"./SpawnersMenu.js":46810,"./StationAlertConsole":32015,"./StationAlertConsole.js":32015,"./SuitStorageUnit":80748,"./SuitStorageUnit.js":80748,"./SyndContractor":37162,"./SyndContractor.js":37162,"./TachyonArray":93724,"./TachyonArray.js":93724,"./Tank":58457,"./Tank.js":58457,"./TankDispenser":38754,"./TankDispenser.js":38754,"./Telecomms":88792,"./Telecomms.js":88792,"./TelecommsInteraction":87294,"./TelecommsInteraction.js":87294,"./TelecommsLogBrowser":73754,"./TelecommsLogBrowser.js":73754,"./TelecommsMonitor":61831,"./TelecommsMonitor.js":61831,"./TelecommsPDALog":49898,"./TelecommsPDALog.js":49898,"./Teleporter":18509,"./Teleporter.js":18509,"./ThermoMachine":55469,"./ThermoMachine.js":55469,"./Timer":94936,"./Timer.js":94936,"./TransferValve":24389,"./TransferValve.js":24389,"./TurbineComputer":30499,"./TurbineComputer.js":30499,"./TurretControl":46669,"./TurretControl.js":46669,"./Uplink":89761,"./Uplink.js":89761,"./VaultController":39544,"./VaultController.js":39544,"./Vendatray":32539,"./Vendatray.js":32539,"./Vending":61321,"./Vending.js":61321,"./VrSleeper":44952,"./VrSleeper.js":44952,"./Wires":21162,"./Wires.js":21162,"./common/AccessList":5665,"./common/AccessList.js":5665,"./common/AtmosControls":71739,"./common/AtmosControls.js":71739,"./common/BeakerContents":48229,"./common/BeakerContents.js":48229,"./common/InterfaceLockNoticeBox":21451,"./common/InterfaceLockNoticeBox.js":21451,"./common/PortableAtmos":34227,"./common/PortableAtmos.js":34227};function r(e){var t=a(e);return n(t)}function a(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}r.keys=function(){return Object.keys(o)},r.resolve=a,e.exports=r,r.id=8156}},n={};function o(e){var r=n[e];if(r!==undefined)return r.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,o),a.exports}o.m=t,e=[],o.O=function(t,n,r,a){if(!n){var c=Infinity;for(d=0;d=a)&&Object.keys(o.O).every((function(e){return o.O[e](n[l])}))?n.splice(l--,1):(i=!1,a0&&e[d-1][2]>a;d--)e[d]=e[d-1];e[d]=[n,r,a]},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={764:0};o.O.j=function(t){return 0===e[t]};var t=function(t,n){var r,a,c=n[0],i=n[1],l=n[2],d=0;for(r in i)o.o(i,r)&&(o.m[r]=i[r]);for(l&&l(o),t&&t(n);d0?"good":"bad",children:i>0?"Earned "+i+" times":"Locked"})||(0,o.createComponentVNode)(2,a.Box,{color:i?"good":"bad",children:i?"Unlocked":"Locked"})]})]},n)},d=function(e,t){var n=(0,r.useBackend)(t).data,c=n.highscore,i=n.user_ckey,l=(0,r.useLocalState)(t,"highscore",0),d=l[0],u=l[1],s=c[d];if(!s)return null;var m=Object.keys(s.scores).map((function(e){return{ckey:e,value:s.scores[e]}}));return(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:c.map((function(e,t){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:d===t,onClick:function(){return u(t)},children:e.name},e.name)}))})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:"#"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:"Key"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:"Score"})]}),m.map((function(e,t){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",m:2,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",textAlign:"center",children:t+1}),(0,o.createComponentVNode)(2,a.Table.Cell,{color:e.ckey===i&&"green",textAlign:"center",children:[0===t&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"yellow",mr:2}),e.ckey,0===t&&(0,o.createComponentVNode)(2,a.Icon,{name:"crown",color:"yellow",ml:2})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:e.value})]},e.ckey)}))]})})]})}},47330:function(e,t,n){"use strict";t.__esModule=!0,t.AiAirlock=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i={2:{color:"good",localStatusText:"Offline"},1:{color:"average",localStatusText:"Caution"},0:{color:"bad",localStatusText:"Optimal"}};t.AiAirlock=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=i[d.power.main]||i[0],s=i[d.power.backup]||i[0],m=i[d.shock]||i[0];return(0,o.createComponentVNode)(2,c.Window,{width:500,height:390,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main",color:u.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!d.power.main,content:"Disrupt",onClick:function(){return l("disrupt-main")}}),children:[d.power.main?"Online":"Offline"," ",d.wires.main_1&&d.wires.main_2?d.power.main_timeleft>0&&"["+d.power.main_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Backup",color:s.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",disabled:!d.power.backup,content:"Disrupt",onClick:function(){return l("disrupt-backup")}}),children:[d.power.backup?"Online":"Offline"," ",d.wires.backup_1&&d.wires.backup_2?d.power.backup_timeleft>0&&"["+d.power.backup_timeleft+"s]":"[Wires have been cut!]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Electrify",color:m.color,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",disabled:!(d.wires.shock&&0===d.shock),content:"Restore",onClick:function(){return l("shock-restore")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!d.wires.shock,content:"Temporary",onClick:function(){return l("shock-temp")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"bolt",disabled:!d.wires.shock,content:"Permanent",onClick:function(){return l("shock-perm")}})],4),children:[2===d.shock?"Safe":"Electrified"," ",(d.wires.shock?d.shock_timeleft>0&&"["+d.shock_timeleft+"s]":"[Wires have been cut!]")||-1===d.shock_timeleft&&"[Permanent]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Access and Door Control",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID Scan",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.id_scanner?"power-off":"times",content:d.id_scanner?"Enabled":"Disabled",selected:d.id_scanner,disabled:!d.wires.id_scanner,onClick:function(){return l("idscan-toggle")}}),children:!d.wires.id_scanner&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Access",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.emergency?"power-off":"times",content:d.emergency?"Enabled":"Disabled",selected:d.emergency,onClick:function(){return l("emergency-toggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolts",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.locked?"lock":"unlock",content:d.locked?"Lowered":"Raised",selected:d.locked,disabled:!d.wires.bolts,onClick:function(){return l("bolt-toggle")}}),children:!d.wires.bolts&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Bolt Lights",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.lights?"power-off":"times",content:d.lights?"Enabled":"Disabled",selected:d.lights,disabled:!d.wires.lights,onClick:function(){return l("light-toggle")}}),children:!d.wires.lights&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Force Sensors",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.safe?"power-off":"times",content:d.safe?"Enabled":"Disabled",selected:d.safe,disabled:!d.wires.safe,onClick:function(){return l("safe-toggle")}}),children:!d.wires.safe&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Timing Safety",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.speed?"power-off":"times",content:d.speed?"Enabled":"Disabled",selected:d.speed,disabled:!d.wires.timing,onClick:function(){return l("speed-toggle")}}),children:!d.wires.timing&&"[Wires have been cut!]"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door Control",color:"bad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d.opened?"sign-out-alt":"sign-in-alt",content:d.opened?"Open":"Closed",selected:d.opened,disabled:d.locked||d.welded,onClick:function(){return l("open-close")}}),children:!(!d.locked&&!d.welded)&&(0,o.createVNode)(1,"span",null,[(0,o.createTextVNode)("[Door is "),d.locked?"bolted":"",d.locked&&d.welded?" and ":"",d.welded?"welded":"",(0,o.createTextVNode)("!]")],0)})]})})]})})}},33084:function(e,t,n){"use strict";t.__esModule=!0,t.AiRestorerContent=t.AiRestorer=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.AiRestorer=function(){return(0,o.createComponentVNode)(2,c.Window,{width:370,height:360,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.AI_present,d=i.error,u=i.name,s=i.laws,m=i.isDead,p=i.restoring,C=i.health,h=i.ejectable;return(0,o.createFragment)([d&&(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:d}),!!h&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:l?u:"----------",disabled:!l,onClick:function(){return c("PRG_eject")}}),!!l&&(0,o.createComponentVNode)(2,a.Section,{title:h?"System Status":u,buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:m?"bad":"good",children:m?"Nonfunctional":"Functional"}),children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:C,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})})}),!!p&&(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"20px",color:"good",mt:1,children:"RECONSTRUCTION IN PROGRESS"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"plus",content:"Begin Reconstruction",disabled:p,mt:1,onClick:function(){return c("PRG_beginReconstruction")}}),(0,o.createComponentVNode)(2,a.Section,{title:"Laws",level:2,children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{className:"candystripe",children:e},e)}))})]})],0)};t.AiRestorerContent=i},58444:function(e,t,n){"use strict";t.__esModule=!0,t.AirAlarm=void 0;var o=n(39812),r=n(41860),a=(n(2497),n(71494)),c=n(74814),i=(n(76270),n(85952)),l=n(21451),d=n(71739);t.AirAlarm=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data),c=r.locked&&!r.siliconUser;return(0,o.createComponentVNode)(2,i.Window,{width:440,height:650,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,u),!c&&(0,o.createComponentVNode)(2,m)]})})};var u=function(e,t){var n=(0,a.useBackend)(t).data,i=(n.environment_data||[]).filter((function(e){return e.value>=.01})),l={0:{color:"good",localStatusText:"Optimal"},1:{color:"average",localStatusText:"Caution"},2:{color:"bad",localStatusText:"Danger (Internals Required)"}},d=l[n.danger_level]||l[0];return(0,o.createComponentVNode)(2,c.Section,{title:"Air Status",children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[i.length>0&&(0,o.createFragment)([i.map((function(e){var t=l[e.danger_level]||l[0];return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,color:t.color,children:[(0,r.toFixed)(e.value,2),e.unit]},e.name)})),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Local status",color:d.color,children:d.localStatusText}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Area status",color:n.atmos_alarm||n.fire_alarm?"bad":"good",children:(n.atmos_alarm?"Atmosphere Alarm":n.fire_alarm&&"Fire Alarm")||"Nominal"})],0)||(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Cannot obtain air sample for analysis."}),!!n.emagged&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Warning",color:"bad",children:"Safety measures offline. Device may exhibit abnormal behavior."})]})})},s={home:{title:"Air Controls",component:function(){return p}},vents:{title:"Vent Controls",component:function(){return C}},scrubbers:{title:"Scrubber Controls",component:function(){return h}},modes:{title:"Operating Mode",component:function(){return N}},thresholds:{title:"Alarm Thresholds",component:function(){return V}}},m=function(e,t){var n=(0,a.useLocalState)(t,"screen"),r=n[0],i=n[1],l=s[r]||s.home,d=l.component();return(0,o.createComponentVNode)(2,c.Section,{title:l.title,buttons:r&&(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-left",content:"Back",onClick:function(){return i()}}),children:(0,o.createComponentVNode)(2,d)})},p=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=(0,a.useLocalState)(t,"screen"),d=(l[0],l[1]),u=i.mode,s=i.atmos_alarm;return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:s?"exclamation-triangle":"exclamation",color:s&&"caution",content:"Area Atmosphere Alarm",onClick:function(){return r(s?"reset":"alarm")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:3===u?"exclamation-triangle":"exclamation",color:3===u&&"danger",content:"Panic Siphon",onClick:function(){return r("mode",{mode:3===u?1:3})}}),(0,o.createComponentVNode)(2,c.Box,{mt:2}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"Vent Controls",onClick:function(){return d("vents")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"filter",content:"Scrubber Controls",onClick:function(){return d("scrubbers")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"cog",content:"Operating Mode",onClick:function(){return d("modes")}}),(0,o.createComponentVNode)(2,c.Box,{mt:1}),(0,o.createComponentVNode)(2,c.Button,{icon:"chart-bar",content:"Alarm Thresholds",onClick:function(){return d("thresholds")}})],4)},C=function(e,t){var n=(0,a.useBackend)(t).data.vents;return n&&0!==n.length?n.map((function(e){return(0,o.createComponentVNode)(2,d.Vent,{vent:e},e.id_tag)})):"Nothing to show"},h=function(e,t){var n=(0,a.useBackend)(t).data.scrubbers;return n&&0!==n.length?n.map((function(e){return(0,o.createComponentVNode)(2,d.Scrubber,{scrubber:e},e.id_tag)})):"Nothing to show"},N=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.modes;return i&&0!==i.length?i.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:e.selected?"check-square-o":"square-o",selected:e.selected,color:e.selected&&e.danger&&"danger",content:e.name,onClick:function(){return r("mode",{mode:e.mode})}}),(0,o.createComponentVNode)(2,c.Box,{mt:1})],4,e.mode)})):"Nothing to show"},V=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data.thresholds;return(0,o.createVNode)(1,"table","LabeledList",[(0,o.createVNode)(1,"thead",null,(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","color-bad","min2",16),(0,o.createVNode)(1,"td","color-average","min1",16),(0,o.createVNode)(1,"td","color-average","max1",16),(0,o.createVNode)(1,"td","color-bad","max2",16)],4),2),(0,o.createVNode)(1,"tbody",null,l.map((function(e){return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","LabeledList__label",e.name,0),e.settings.map((function(e){return(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,c.Button,{content:(0,r.toFixed)(e.selected,2),onClick:function(){return i("threshold",{env:e.env,"var":e.val})}}),2,null,e.val)}))],0,null,e.name)})),0)],4,{style:{width:"100%"}})}},54370:function(e,t,n){"use strict";t.__esModule=!0,t.AirlockAccessList=t.AirlockElectronics=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=n(64499);function l(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return d(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=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.")}return(n=e[Symbol.iterator]()).next.bind(n)}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n=n.length?e=t?e-1:0:e<0&&(e=t?0:n.length-1);var o=this.buttonRefs[e].current;o&&setTimeout((function(){return o.focus()}),1),this.setState({current:e})},u.render=function(){var e=this,t=(0,a.useBackend)(this.context),n=t.act,r=t.data,d=r.title,u=r.message,m=r.buttons,p=r.timeout,C=this.state.current,h=function(){return e.setCurrent(C,!1)};return(0,o.createComponentVNode)(2,i.Window,{title:d,width:350,height:150,canClose:p>0,children:[p&&(0,o.createComponentVNode)(2,s,{value:p}),(0,o.createComponentVNode)(2,i.Window.Content,{onFocus:h,onClick:h,children:(0,o.createComponentVNode)(2,c.Section,{fill:!0,children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",className:"AlertModal__Message",height:"100%",children:(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Box,{m:1,children:u})})})}),(0,o.createComponentVNode)(2,c.Flex.Item,{my:2,children:(0,o.createComponentVNode)(2,c.Flex,{className:"AlertModal__Buttons",children:m.map((function(t,r){return(0,o.createComponentVNode)(2,c.Flex.Item,{mx:1,children:(0,o.createVNode)(1,"div","Button Button--color--default",t,0,{px:3,onClick:function(){return n("choose",{choice:t})},onKeyDown:function(o){var r=window.event?o.which:o.keyCode;r===l.KEY_SPACE||r===l.KEY_ENTER?n("choose",{choice:t}):r===l.KEY_LEFT||o.shiftKey&&r===l.KEY_TAB?e.setCurrent(C-1,r===l.KEY_LEFT):r!==l.KEY_RIGHT&&r!==l.KEY_TAB||e.setCurrent(C+1,r===l.KEY_RIGHT)}},null,e.buttonRefs[r])},r)}))})})]})})})]})},r}(o.Component);t.AlertModal=u;var s=function(e){var t=e.value;return(0,o.createVNode)(1,"div","AlertModal__Loader",(0,o.createComponentVNode)(2,c.Box,{className:"AlertModal__LoaderProgress",style:{width:100*(0,r.clamp01)(t)+"%"}}),2)};t.Loader=s},93749:function(e,t,n){"use strict";t.__esModule=!0,t.Apc=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=n(21451);t.Apc=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:450,height:445,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,u)})})};var l={2:{color:"good",externalPowerText:"External Power",chargingText:"Fully Charged"},1:{color:"average",externalPowerText:"Low External Power",chargingText:"Charging"},0:{color:"bad",externalPowerText:"No External Power",chargingText:"Not Charging"}},d={1:{icon:"terminal",content:"Override Programming",action:"hack"},2:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"},3:{icon:"caret-square-left",content:"Return to Main Core",action:"deoccupy"},4:{icon:"caret-square-down",content:"Shunt Core Process",action:"occupy"}},u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,u=n.data,s=u.locked&&!u.siliconUser,m=l[u.externalPower]||l[0],p=l[u.chargingStatus]||l[0],C=u.powerChannels||[],h=d[u.malfStatus]||d[0],N=u.powerCellStatus/100;return u.failTime>0?(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createVNode)(1,"b",null,(0,o.createVNode)(1,"h3",null,"SYSTEM FAILURE",16),2),(0,o.createVNode)(1,"i",null,"I/O regulators malfunction detected! Waiting for system reboot...",16),(0,o.createVNode)(1,"br"),"Automatic reboot in ",u.failTime," seconds...",(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Reboot Now",onClick:function(){return c("reboot")}})]}):(0,o.createFragment)([(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,a.Section,{title:"Power Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Main Breaker",color:m.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.isOperating?"power-off":"times",content:u.isOperating?"On":"Off",selected:u.isOperating&&!s,disabled:s,onClick:function(){return c("breaker")}}),children:["[ ",m.externalPowerText," ]"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power Cell",children:(0,o.createComponentVNode)(2,a.ProgressBar,{color:"good",value:N})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",color:p.color,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.chargeMode?"sync":"close",content:u.chargeMode?"Auto":"Off",disabled:s,onClick:function(){return c("charge")}}),children:["[ ",p.chargingText," ]"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Channels",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[C.map((function(e){var t=e.topicParams;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.title,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,mx:2,color:e.status>=2?"good":"bad",children:e.status>=2?"On":"Off"}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:!s&&(1===e.status||3===e.status),disabled:s,onClick:function(){return c("channel",t.auto)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"On",selected:!s&&2===e.status,disabled:s,onClick:function(){return c("channel",t.on)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:!s&&0===e.status,disabled:s,onClick:function(){return c("channel",t.off)}})],4),children:e.powerLoad},e.title)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Load",children:(0,o.createVNode)(1,"b",null,u.totalLoad,0)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Misc",buttons:!!u.siliconUser&&(0,o.createFragment)([!!u.malfStatus&&(0,o.createComponentVNode)(2,a.Button,{icon:h.icon,content:h.content,color:"bad",onClick:function(){return c(h.action)}}),(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:"Overload",onClick:function(){return c("overload")}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cover Lock",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u.coverLocked?"lock":"unlock",content:u.coverLocked?"Engaged":"Disengaged",disabled:s,onClick:function(){return c("cover")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Emergency Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:u.emergencyLights?"Enabled":"Disabled",disabled:s,onClick:function(){return c("emergency_lighting")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Night Shift Lighting",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lightbulb-o",content:u.nightshiftLights?"Enabled":"Disabled",onClick:function(){return c("toggle_nightshift")}})})]})})],4)}},78645:function(e,t,n){"use strict";t.__esModule=!0,t.ApcControl=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(34380),i=n(71494),l=n(74814),d=n(85952),u=n(89793);t.ApcControl=function(e,t){var n=(0,i.useBackend)(t).data;return(0,o.createComponentVNode)(2,d.Window,{title:"APC Controller",width:550,height:500,resizable:!0,children:[1===n.authenticated&&(0,o.createComponentVNode)(2,m),0===n.authenticated&&(0,o.createComponentVNode)(2,s)]})};var s=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data.emagged,c=1===a?"Open":"Log In";return(0,o.createComponentVNode)(2,d.Window.Content,{children:(0,o.createComponentVNode)(2,l.Button,{fluid:!0,color:1===a?"":"good",content:c,onClick:function(){return r("log-in")}})})},m=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data.restoring,c=(0,i.useLocalState)(t,"tab-index",1),u=c[0],s=c[1];return(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Tabs,{children:[(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:1===u,onClick:function(){s(1),r("check-apcs")},children:"APC Control Panel"}),(0,o.createComponentVNode)(2,l.Tabs.Tab,{selected:2===u,onClick:function(){s(2),r("check-logs")},children:"Log View Panel"})]}),1===a&&(0,o.createComponentVNode)(2,l.Dimmer,{fontSize:"32px",children:[(0,o.createComponentVNode)(2,l.Icon,{name:"cog",spin:!0})," Resetting..."]}),1===u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,p),(0,o.createComponentVNode)(2,l.Box,{fillPositionedParent:!0,top:"53px",children:(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,C)})})],4),2===u&&(0,o.createComponentVNode)(2,l.Box,{fillPositionedParent:!0,top:"20px",children:(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,h)})})],0)},p=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data,c=a.emagged,d=a.logging,u=(0,i.useLocalState)(t,"sortByField",null),s=u[0],m=u[1];return(0,o.createComponentVNode)(2,l.Flex,{children:[(0,o.createComponentVNode)(2,l.Flex.Item,{children:[(0,o.createComponentVNode)(2,l.Box,{inline:!0,mr:2,color:"label",children:"Sort by:"}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"name"===s,content:"Name",onClick:function(){return m("name"!==s&&"name")}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"charge"===s,content:"Charge",onClick:function(){return m("charge"!==s&&"charge")}}),(0,o.createComponentVNode)(2,l.Button.Checkbox,{checked:"draw"===s,content:"Draw",onClick:function(){return m("draw"!==s&&"draw")}})]}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1}),(0,o.createComponentVNode)(2,l.Flex.Item,{children:[1===c&&(0,o.createFragment)([(0,o.createComponentVNode)(2,l.Button,{color:1===d?"bad":"good",content:1===d?"Stop Logging":"Restore Logging",onClick:function(){return r("toggle-logs")}}),(0,o.createComponentVNode)(2,l.Button,{content:"Reset Console",onClick:function(){return r("restore-console")}})],4),(0,o.createComponentVNode)(2,l.Button,{color:"bad",content:"Log Out",onClick:function(){return r("log-out")}})]})]})},C=function(e,t){var n=(0,i.useBackend)(t),c=n.data,d=n.act,s=(0,i.useLocalState)(t,"sortByField",null)[0],m=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.name+t})})),"name"===s&&(0,r.sortBy)((function(e){return e.name})),"charge"===s&&(0,r.sortBy)((function(e){return-e.charge})),"draw"===s&&(0,r.sortBy)((function(e){return-(0,u.powerRank)(e.load)}),(function(e){return-parseFloat(e.load)}))])(c.apcs);return(0,o.createComponentVNode)(2,l.Table,{children:[(0,o.createComponentVNode)(2,l.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:"On/Off"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Area"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:"Charge"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,textAlign:"right",children:"Draw"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Equipment",children:"Eqp"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Lighting",children:"Lgt"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,title:"Environment",children:"Env"})]}),m.map((function(e,t){return(0,o.createVNode)(1,"tr","Table__row candystripe",[(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,l.Button,{icon:e.operating?"power-off":"times",color:e.operating?"good":"bad",onClick:function(){return d("breaker",{ref:e.ref})}}),2),(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,l.Button,{onClick:function(){return d("access-apc",{ref:e.ref})},children:e.name}),2),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",(0,o.createComponentVNode)(2,u.AreaCharge,{charging:e.charging,charge:e.charge}),2),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",e.load,0),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,N,{target:"equipment",status:e.eqp,apc:e,act:d}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,N,{target:"lighting",status:e.lgt,apc:e,act:d}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,N,{target:"environ",status:e.env,apc:e,act:d}),2)],4,null,e.id)}))]})},h=function(e,t){var n=(0,i.useBackend)(t).data,c=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.entry+t})})),function(e){return e.reverse()}])(n.logs);return(0,o.createComponentVNode)(2,l.Box,{m:-.5,children:c.map((function(e){return(0,o.createComponentVNode)(2,l.Box,{p:.5,className:"candystripe",bold:!0,children:e.entry},e.id)}))})},N=function(e){var t=e.target,n=e.status,r=e.apc,a=e.act,c=Boolean(2&n),i=Boolean(1&n);return(0,o.createComponentVNode)(2,l.Button,{icon:i?"sync":"power-off",color:c?"good":"bad",onClick:function(){return a("toggle-minor",{type:t,value:V(n),ref:r.ref})}})},V=function(e){return 0===e?2:2===e?3:0};N.defaultHooks=c.pureComponentHooks},38531:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosAlertConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.AtmosAlertConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.priority||[],u=l.minor||[];return(0,o.createComponentVNode)(2,c.Window,{width:350,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Alarms",children:(0,o.createVNode)(1,"ul",null,[0===d.length&&(0,o.createVNode)(1,"li","color-good","No Priority Alerts",16),d.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"bad",onClick:function(){return i("clear",{zone:e})}}),2,null,e)})),0===u.length&&(0,o.createVNode)(1,"li","color-good","No Minor Alerts",16),u.map((function(e){return(0,o.createVNode)(1,"li",null,(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:e,color:"average",onClick:function(){return i("clear",{zone:e})}}),2,null,e)}))],0)})})})}},4852:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosControlConsole=void 0;var o=n(39812),r=n(64499),a=n(41860),c=n(71494),i=n(74814),l=n(85952);t.AtmosControlConsole=function(e,t){var n,d=(0,c.useBackend)(t),u=d.act,s=d.data,m=s.sensors||[];return(0,o.createComponentVNode)(2,l.Window,{width:500,height:315,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:!!s.tank&&(null==(n=m[0])?void 0:n.long_name),children:m.map((function(e){var t=e.gases||{};return(0,o.createComponentVNode)(2,i.Section,{title:!s.tank&&e.long_name,level:2,children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure",children:(0,a.toFixed)(e.pressure,2)+" kPa"}),!!e.temperature&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Temperature",children:(0,a.toFixed)(e.temperature,2)+" K"}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:t,children:(0,a.toFixed)(e,2)+"%"})}))(t)]})},e.id_tag)}))}),s.tank&&(0,o.createComponentVNode)(2,i.Section,{title:"Controls",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"undo",content:"Reconnect",onClick:function(){return u("reconnect")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Input Injector",children:(0,o.createComponentVNode)(2,i.Button,{icon:s.inputting?"power-off":"times",content:s.inputting?"Injecting":"Off",selected:s.inputting,onClick:function(){return u("input")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Input Rate",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:s.inputRate,unit:"L/s",width:"63px",minValue:0,maxValue:200,suppressFlicker:2e3,onChange:function(e,t){return u("rate",{rate:t})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output Regulator",children:(0,o.createComponentVNode)(2,i.Button,{icon:s.outputting?"power-off":"times",content:s.outputting?"Open":"Closed",selected:s.outputting,onClick:function(){return u("output")}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Output Pressure",children:(0,o.createComponentVNode)(2,i.NumberInput,{value:parseFloat(s.outputPressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,suppressFlicker:2e3,onChange:function(e,t){return u("pressure",{pressure:t})}})})]})})]})})}},40948:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosControlPanel=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(71494),i=n(74814),l=n(85952);t.AtmosControlPanel=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.area+t})})),(0,r.sortBy)((function(e){return e.id}))])(u.excited_groups);return(0,o.createComponentVNode)(2,l.Window,{title:"SSAir Control Panel",width:900,height:500,resizable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{m:1,children:(0,o.createComponentVNode)(2,i.Flex,{justify:"space-between",align:"baseline",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button,{onClick:function(){return d("toggle-freeze")},color:1===u.frozen?"good":"bad",children:1===u.frozen?"Freeze Subsystem":"Unfreeze Subsystem"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Fire Cnt: ",u.fire_count]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Active Turfs: ",u.active_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Excited Groups: ",u.excited_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Hotspots: ",u.hotspots_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:["Superconductors: ",u.conducting_size]}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:u.showing_user,onClick:function(){return d("toggle_user_display")},children:"Personal View"})}),(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:u.show_all,onClick:function(){return d("toggle_show_all")},children:"Display all"})})]})}),(0,o.createComponentVNode)(2,i.Box,{fillPositionedParent:!0,top:"45px",children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Table,{children:[(0,o.createComponentVNode)(2,i.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,i.Table.Cell,{children:"Area Name"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Breakdown"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Dismantle"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Turfs"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:1===u.display_max&&"Max Share"}),(0,o.createComponentVNode)(2,i.Table.Cell,{collapsing:!0,children:"Display"})]}),s.map((function(e){return(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,i.Button,{content:e.area,onClick:function(){return d("move-to-target",{spot:e.jump_to})}}),2),(0,o.createVNode)(1,"td",null,e.breakdown,0),(0,o.createVNode)(1,"td",null,e.dismantle,0),(0,o.createVNode)(1,"td",null,e.size,0),(0,o.createVNode)(1,"td",null,1===u.display_max&&e.max_share,0),(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,i.Button.Checkbox,{checked:e.should_show,onClick:function(){return d("toggle_show_group",{group:e.group})}}),2)],4,null,e.id)}))]})})})})]})}},2726:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosFilter=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(76270),i=n(85952);t.AtmosFilter=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.filter_types||[];return(0,o.createComponentVNode)(2,i.Window,{width:390,height:187,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:d.on?"power-off":"times",content:d.on?"On":"Off",selected:d.on,onClick:function(){return l("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(d.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onDrag:function(e,t){return l("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:d.rate===d.max_rate,onClick:function(){return l("rate",{rate:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Filter",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:e.selected,content:(0,c.getGasLabel)(e.id,e.name),onClick:function(){return l("filter",{mode:e.id})}},e.id)}))})]})})})})}},61505:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosMixer=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.AtmosMixer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:370,height:165,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.set_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return i("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.set_pressure===l.max_pressure,onClick:function(){return i("pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 1",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:l.node1_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return i("node1",{concentration:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Node 2",children:(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:l.node2_concentration,unit:"%",width:"60px",minValue:0,maxValue:100,stepPixelSize:2,onDrag:function(e,t){return i("node2",{concentration:t})}})})]})})})})}},30255:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosPump=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.AtmosPump=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:335,height:115,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,onClick:function(){return i("power")}})}),l.max_rate?(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Transfer Rate",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.rate),width:"63px",unit:"L/s",minValue:0,maxValue:200,onChange:function(e,t){return i("rate",{rate:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.rate===l.max_rate,onClick:function(){return i("rate",{rate:"max"})}})]}):(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.pressure),unit:"kPa",width:"75px",minValue:0,maxValue:4500,step:10,onChange:function(e,t){return i("pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.pressure===l.max_pressure,onClick:function(){return i("pressure",{pressure:"max"})}})]})]})})})})}},78598:function(e,t,n){"use strict";t.__esModule=!0,t.AtmosRelief=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.AtmosRelief=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:335,height:115,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Open Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.open_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:l.max_pressure||4500,step:10,onChange:function(e,t){return i("open_pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.open_pressure===l.max_pressure,onClick:function(){return i("open_pressure",{pressure:"max"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Close Pressure",children:[(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.close_pressure),unit:"kPa",width:"75px",minValue:0,maxValue:l.max_pressure||4500,step:10,onChange:function(e,t){return i("close_pressure",{pressure:t})}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",content:"Max",disabled:l.close_pressure===l.max_pressure,onClick:function(){return i("close_pressure",{pressure:"max"})}})]})]})})})})}},33106:function(e,t,n){"use strict";t.__esModule=!0,t.AutomatedAnnouncement=void 0;var o=n(39812),r=(n(2497),n(71494)),a=n(74814),c=n(85952),i="%PERSON will be replaced with their name.\n%RANK with their job.";t.AutomatedAnnouncement=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.arrivalToggle,s=d.arrival,m=d.newheadToggle,p=d.newhead;return(0,o.createComponentVNode)(2,c.Window,{title:"Automated Announcement System",width:500,height:225,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Arrival Announcement",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",selected:u,content:u?"On":"Off",onClick:function(){return l("ArrivalToggle")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"info",tooltip:i,tooltipPosition:"left"}),children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:s,onChange:function(e,t){return l("ArrivalText",{newText:t})}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Departmental Head Announcement",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",selected:m,content:m?"On":"Off",onClick:function(){return l("NewheadToggle")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"info",tooltip:i,tooltipPosition:"left"}),children:(0,o.createComponentVNode)(2,a.Input,{fluid:!0,value:p,onChange:function(e,t){return l("NewheadText",{newText:t})}})})})})]})})}},57554:function(e,t,n){"use strict";t.__esModule=!0,t.BankMachine=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(58083),i=n(85952);t.BankMachine=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.current_balance,s=d.siphoning,m=d.station_name;return(0,o.createComponentVNode)(2,i.Window,{width:350,height:155,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:"Authorized personnel only"}),(0,o.createComponentVNode)(2,a.Section,{title:m+" Vault",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Balance",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:s?"times":"sync",content:s?"Stop Siphoning":"Siphon Credits",selected:s,onClick:function(){return l(s?"halt":"siphon")}}),children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u,format:function(e){return(0,c.formatMoney)(e)}})," cr"]})})})]})})}},51723:function(e,t,n){"use strict";t.__esModule=!0,t.Bepis=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Bepis=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.amount;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:480,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Business Exploration Protocol Incubation Sink",children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",backgroundColor:"#450F44",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:l.manual_power?"Off":"On",selected:!l.manual_power,onClick:function(){return i("toggle_power")}}),children:"All you need to know about the B.E.P.I.S. and you! The B.E.P.I.S. performs hundreds of tests a second using electrical and financial resources to invent new products, or discover new technologies otherwise overlooked for being too risky or too niche to produce!"}),(0,o.createComponentVNode)(2,a.Section,{title:"Payer's Account",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"redo-alt",content:"Reset Account",onClick:function(){return i("account_reset")}}),children:["Console is currently being operated by ",l.account_owner?l.account_owner:"no one","."]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored Data and Statistics",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposited Credits",children:l.stored_cash}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Investment Variability",children:[l.accuracy_percentage,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Innovation Bonus",children:l.positive_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Risk Offset",color:"bad",children:l.negative_cash_offset}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deposit Amount",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:d,unit:"Credits",minValue:100,maxValue:3e4,step:100,stepPixelSize:2,onChange:function(e,t){return i("amount",{amount:t})}})})]})}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"donate",content:"Deposit Credits",disabled:1===l.manual_power||1===l.silicon_check,onClick:function(){return i("deposit_cash")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Withdraw Credits",disabled:1===l.manual_power,onClick:function(){return i("withdraw_cash")}})]})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Market Data and Analysis",children:[(0,o.createComponentVNode)(2,a.Box,{children:["Average technology cost: ",l.mean_value]}),(0,o.createComponentVNode)(2,a.Box,{children:["Current chance of Success: Est. ",l.success_estimate,"%"]}),l.error_name&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Previous Failure Reason: Deposited cash value too low. Please insert more money for future success."}),(0,o.createComponentVNode)(2,a.Box,{m:1}),(0,o.createComponentVNode)(2,a.Button,{icon:"microscope",disabled:1===l.manual_power,onClick:function(){return i("begin_experiment")},content:"Begin Testing"})]})})]})]})})})}},20813:function(e,t,n){"use strict";t.__esModule=!0,t.BiogeneratorContent=t.Biogenerator=void 0;var o=n(39812),r=n(34380),a=n(2497),c=n(71494),i=n(74814),l=n(58083),d=n(85952);t.Biogenerator=function(e,t){var n=(0,c.useBackend)(t).data,r=n.beaker,a=n.processing;return(0,o.createComponentVNode)(2,d.Window,{width:550,height:380,resizable:!0,children:[!!a&&(0,o.createComponentVNode)(2,i.Dimmer,{fontSize:"32px",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"cog",spin:1})," Processing..."]}),(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:[!r&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:"No Container"}),!!r&&(0,o.createComponentVNode)(2,u)]})]})};var u=function(e,t){var n,r,d=(0,c.useBackend)(t),u=d.act,m=d.data,p=m.biomass,C=m.can_process,h=m.categories,N=void 0===h?[]:h,V=(0,c.useLocalState)(t,"searchText",""),b=V[0],f=V[1],g=(0,c.useLocalState)(t,"category",null==(n=N[0])?void 0:n.name),v=g[0],k=g[1],x=(0,a.createSearch)(b,(function(e){return e.name})),B=b.length>0&&N.flatMap((function(e){return e.items||[]})).filter(x).filter((function(e,t){return t<25}))||(null==(r=N.find((function(e){return e.name===v})))?void 0:r.items)||[];return(0,o.createComponentVNode)(2,i.Section,{title:(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:p>0?"good":"bad",children:[(0,l.formatMoney)(p)," Biomass"]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,i.Input,{autoFocus:!0,value:b,onInput:function(e,t){return f(t)},mx:1}),(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",onClick:function(){return u("detach")}}),(0,o.createComponentVNode)(2,i.Button,{icon:"cog",content:"Activate",disabled:!C,onClick:function(){return u("activate")}})],4),children:(0,o.createComponentVNode)(2,i.Flex,{children:[0===b.length&&(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Tabs,{vertical:!0,children:N.map((function(e){var t;return(0,o.createComponentVNode)(2,i.Tabs.Tab,{selected:e.name===v,onClick:function(){return k(e.name)},children:[e.name," (",(null==(t=e.items)?void 0:t.length)||0,")"]},e.name)}))})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,basis:0,children:[0===B.length&&(0,o.createComponentVNode)(2,i.NoticeBox,{children:0===b.length?"No items in this category.":"No results found."}),(0,o.createComponentVNode)(2,i.Table,{children:(0,o.createComponentVNode)(2,s,{biomass:p,items:B})})]})]})})};t.BiogeneratorContent=u;var s=function(e,t){var n=(0,c.useBackend)(t).act,a=(0,c.useLocalState)(t,"hoveredItem",{}),l=a[0],d=a[1],u=l&&l.cost||0;return e.items.map((function(n){var o=(0,c.useLocalState)(t,"amount"+n.name,1),r=o[0],a=o[1],i=l&&l.name!==n.name,d=e.biomass-u*l.amountV,onClick:function(){return d("select",{item:e.id})}})})]}),e.desc]},e.name)}))})]})]})]})};var l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.buying,u=l.ltsrbt_built,s=l.money;if(!d)return null;var m=l.delivery_methods.map((function(e){var t=l.delivery_method_description[e.name];return Object.assign({},e,{description:t})}));return(0,o.createComponentVNode)(2,a.Modal,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Flex,{mb:1,children:m.map((function(e){return"LTSRBT"!==e.name||u?(0,o.createComponentVNode)(2,a.Flex.Item,{mx:1,width:"250px",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"30px",children:e.name}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:e.description}),(0,o.createComponentVNode)(2,a.Button,{mt:2,content:(0,c.formatMoney)(e.price)+" cr",disabled:s=0||(r[n]=e[n]);return r}(t,["res","value"]),a=d(n),c=a[0],i=a[1];return(0,o.normalizeProps)((0,o.createVNode)(1,"canvas",null,"Canvas failed to render.",16,Object.assign({width:28*c||300,height:28*i||300},r,{onClick:function(t){return e.clickwrapper(t)}}),null,this.canvasRef))},r}(o.Component),d=function(e){var t=e.length;return[t,0!==t?e[0].length:0]};t.Canvas=function(e,t){var n=(0,r.useBackend)(t),i=n.act,u=n.data,s=d(u.grid),m=s[0],p=s[1];return(0,o.createComponentVNode)(2,c.Window,{width:Math.min(400,28*m*32+24),height:Math.min(400,28*p*32+24),resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,l,{value:u.grid,onCanvasClick:function(e,t){return i("paint",{x:e,y:t})}}),(0,o.createComponentVNode)(2,a.Box,{children:[!u.finalized&&(0,o.createComponentVNode)(2,a.Button.Confirm,{onClick:function(){return i("finalize")},content:"Finalize"}),u.name]})]})})})}},5758:function(e,t,n){"use strict";t.__esModule=!0,t.CargoCatalog=t.Cargo=void 0;var o=n(39812),r=n(64499),a=n(71494),c=n(74814),i=n(58083),l=n(85952);t.Cargo=function(e,t){var n=(0,a.useBackend)(t),r=(n.act,n.data),i=(0,a.useSharedState)(t,"tab","catalog"),m=i[0],C=i[1],h=r.requestonly,N=r.cart||[],V=r.requests||[];return(0,o.createComponentVNode)(2,l.Window,{width:780,height:750,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,c.Section,{fitted:!0,children:(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"list",selected:"catalog"===m,onClick:function(){return C("catalog")},children:"Catalog"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"envelope",textColor:"requests"!==m&&V.length>0&&"yellow",selected:"requests"===m,onClick:function(){return C("requests")},children:["Requests (",V.length,")"]}),!h&&(0,o.createComponentVNode)(2,c.Tabs.Tab,{icon:"shopping-cart",textColor:"cart"!==m&&N.length>0&&"yellow",selected:"cart"===m,onClick:function(){return C("cart")},children:["Checkout (",N.length,")"]})]})}),"catalog"===m&&(0,o.createComponentVNode)(2,u),"requests"===m&&(0,o.createComponentVNode)(2,s),"cart"===m&&(0,o.createComponentVNode)(2,p)]})})};var d=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.away,u=l.docked,s=l.loan,m=l.loan_dispatched,p=l.location,C=l.message,h=l.points,N=l.requestonly;return(0,o.createComponentVNode)(2,c.Section,{title:"Cargo",buttons:(0,o.createComponentVNode)(2,c.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:h,format:function(e){return(0,i.formatMoney)(e)}})," credits"]}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Shuttle",children:u&&!N&&(0,o.createComponentVNode)(2,c.Button,{content:p,onClick:function(){return r("send")}})||p}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"CentCom Message",children:C}),!!s&&!N&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Loan",children:!m&&(0,o.createComponentVNode)(2,c.Button,{content:"Loan Shuttle",disabled:!(d&&u),onClick:function(){return r("loan")}})||(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Loaned to Centcom"})})]})})},u=function(e,t){var n,l=e.express,d=(0,a.useBackend)(t),u=d.act,s=d.data,p=s.self_paid,C=(0,r.toArray)(s.supplies),h=(0,a.useSharedState)(t,"supply",null==(n=C[0])?void 0:n.name),N=h[0],V=h[1],b=C.find((function(e){return e.name===N}));return(0,o.createComponentVNode)(2,c.Section,{title:"Catalog",buttons:!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,m),(0,o.createComponentVNode)(2,c.Button.Checkbox,{ml:2,content:"Buy Privately",checked:p,onClick:function(){return u("toggleprivate")}})],4),children:(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{ml:-1,mr:1,children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:C.map((function(e){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:e.name===N,onClick:function(){return V(e.name)},children:[e.name," (",e.packs.length,")"]},e.name)}))})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,c.Table,{children:null==b?void 0:b.packs.map((function(e){var t=[];return e.small_item&&t.push("Small"),e.access&&t.push("Restricted"),(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,color:"label",textAlign:"right",children:t.join(", ")}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,tooltip:e.desc,tooltipPosition:"left",onClick:function(){return u("add",{id:e.id})},children:[(0,i.formatMoney)(p&&!e.goody?Math.round(1.1*e.cost):e.cost)," cr"]})})]},e.name)}))})})]})})};t.CargoCatalog=u;var s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.requestonly,u=l.requests||[];return(0,o.createComponentVNode)(2,c.Section,{title:"Active Requests",buttons:!d&&(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Clear",color:"transparent",onClick:function(){return r("denyall")}}),children:[0===u.length&&(0,o.createComponentVNode)(2,c.Box,{color:"good",children:"No Requests"}),u.length>0&&(0,o.createComponentVNode)(2,c.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,color:"label",children:["#",e.id]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.object}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createVNode)(1,"b",null,e.orderer,0)}),(0,o.createComponentVNode)(2,c.Table.Cell,{width:"25%",children:(0,o.createVNode)(1,"i",null,e.reason,0)}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:[(0,i.formatMoney)(e.cost)," cr"]}),!d&&(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,c.Button,{icon:"check",color:"good",onClick:function(){return r("approve",{id:e.id})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"times",color:"bad",onClick:function(){return r("deny",{id:e.id})}})]})]},e.id)}))})]})},m=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.requestonly,u=l.cart||[],s=u.reduce((function(e,t){return e+t.cost}),0);return d?null:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{inline:!0,mx:1,children:[0===u.length&&"Cart is empty",1===u.length&&"1 item",u.length>=2&&u.length+" items"," ",s>0&&"("+(0,i.formatMoney)(s)+" cr)"]}),(0,o.createComponentVNode)(2,c.Button,{icon:"times",color:"transparent",content:"Clear",onClick:function(){return r("clear")}})],4)},p=function(e,t){var n=(0,a.useBackend)(t),r=n.act,l=n.data,d=l.requestonly,u=l.away,s=l.docked,p=l.location,C=l.cart||[];return(0,o.createComponentVNode)(2,c.Section,{title:"Current Cart",buttons:(0,o.createComponentVNode)(2,m),children:[0===C.length&&(0,o.createComponentVNode)(2,c.Box,{color:"label",children:"Nothing in cart"}),C.length>0&&(0,o.createComponentVNode)(2,c.Table,{children:C.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,color:"label",children:["#",e.id]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.object}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:!!e.paid&&(0,o.createVNode)(1,"b",null,"[Paid Privately]",16)}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:[(0,i.formatMoney)(e.cost)," cr"]}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,c.Button,{icon:"minus",onClick:function(){return r("remove",{id:e.id})}})})]},e.id)}))}),C.length>0&&!d&&(0,o.createComponentVNode)(2,c.Box,{mt:2,children:1===u&&1===s&&(0,o.createComponentVNode)(2,c.Button,{color:"green",style:{"line-height":"28px",padding:"0 12px"},content:"Confirm the order",onClick:function(){return r("send")}})||(0,o.createComponentVNode)(2,c.Box,{opacity:.5,children:["Shuttle in ",p,"."]})})]})}},96291:function(e,t,n){"use strict";t.__esModule=!0,t.CargoBountyConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(58083),i=n(85952);t.CargoBountyConsole=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data.bountydata,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,i.Window,{width:750,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,l),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print Bounty List",onClick:function(){return c("Print")}}),children:(0,o.createComponentVNode)(2,a.Table,{border:!0,children:[(0,o.createComponentVNode)(2,a.Table.Row,{bold:!0,italic:!0,color:"label",fontSize:1.25,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Bounty Object"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Description"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Progress"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Value"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Claim"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{backgroundColor:1===e.priority?"rgba(252, 152, 3, 0.25)":"",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{italic:!0,textAlign:"center",p:1,children:e.description}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:[1===e.priority?(0,o.createComponentVNode)(2,a.Box,{children:"High Priority"}):"",e.completion_string]}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:e.reward_string}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:1===e.claimed?"check":"",content:1===e.claimed?"Claimed":"Claim",disabled:1===e.claimed,color:1===e.can_claim?"green":"red",onClick:function(){return c("ClaimBounty",{bounty:e.bounty_ref})}})})]},e.name)}))]})})})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.stored_cash);return(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i,format:function(e){return(0,c.formatMoney)(e)}})," credits"]})}},69941:function(e,t,n){"use strict";t.__esModule=!0,t.CargoExpress=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=n(5758),l=n(21451);t.CargoExpress=function(e,t){var n=(0,r.useBackend)(t),a=(n.act,n.data);return(0,o.createComponentVNode)(2,c.Window,{width:600,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.InterfaceLockNoticeBox,{accessText:"a QM-level ID card"}),!a.locked&&(0,o.createComponentVNode)(2,d)]})})};var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Cargo Express",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:Math.round(l.points)})," credits"]}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Landing Location",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Cargo Bay",selected:!l.usingBeacon,onClick:function(){return c("LZCargo")}}),(0,o.createComponentVNode)(2,a.Button,{selected:l.usingBeacon,disabled:!l.hasBeacon,onClick:function(){return c("LZBeacon")},children:[l.beaconzone," (",l.beaconName,")"]}),(0,o.createComponentVNode)(2,a.Button,{content:l.printMsg,disabled:!l.canBuyBeacon,onClick:function(){return c("printBeacon")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Notice",children:l.message})]})}),(0,o.createComponentVNode)(2,i.CargoCatalog,{express:!0})],4)}},62292:function(e,t,n){"use strict";t.__esModule=!0,t.CargoHoldTerminal=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.CargoHoldTerminal=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.points,u=l.pad,s=l.sending,m=l.status_report;return(0,o.createComponentVNode)(2,c.Window,{width:600,height:230,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Cargo Value",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:Math.round(d)})," credits"]})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cargo Pad",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Recalculate Value",disabled:!u,onClick:function(){return i("recalc")}}),(0,o.createComponentVNode)(2,a.Button,{icon:s?"times":"arrow-up",content:s?"Stop Sending":"Send Goods",selected:s,disabled:!u,onClick:function(){return i(s?"stop":"send")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:u?"good":"bad",children:u?"Online":"Not Found"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cargo Report",children:m})]})})]})})}},27173:function(e,t,n){"use strict";t.__esModule=!0,t.CellularEmporium=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.CellularEmporium=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.abilities;return(0,o.createComponentVNode)(2,c.Window,{width:900,height:480,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Genetic Points",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"undo",content:"Readapt",disabled:!l.can_readapt,onClick:function(){return i("readapt")}}),children:l.genetic_points_remaining})})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{className:"candystripe",label:e.name,buttons:(0,o.createFragment)([e.dna_cost," ",(0,o.createComponentVNode)(2,a.Button,{content:e.owned?"Evolved":"Evolve",selected:e.owned,onClick:function(){return i("evolve",{name:e.name})}})],0),children:[e.desc,(0,o.createComponentVNode)(2,a.Box,{color:"good",children:e.helptext})]},e.name)}))})})]})})}},26726:function(e,t,n){"use strict";t.__esModule=!0,t.CentcomPodLauncherContent=t.CentcomPodLauncher=void 0;var o=n(39812),r=(n(2497),n(71494)),a=n(74814),c=n(85952);t.CentcomPodLauncher=function(){return(0,o.createComponentVNode)(2,c.Window,{title:"Config/Launch Supply Pod",width:700,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:"To use this, simply spawn the atoms you want in one of the five Centcom Supplypod Bays. Items in the bay will then be launched inside your supplypod, one turf-full at a time! You can optionally use the following buttons to configure how the supplypod acts."}),(0,o.createComponentVNode)(2,a.Section,{title:"Centcom Pod Customization (To be used against Helen Weinstein)",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Supply Bay",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Bay #1",selected:1===i.bayNumber,onClick:function(){return c("bay1")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #2",selected:2===i.bayNumber,onClick:function(){return c("bay2")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #3",selected:3===i.bayNumber,onClick:function(){return c("bay3")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Bay #4",selected:4===i.bayNumber,onClick:function(){return c("bay4")}}),(0,o.createComponentVNode)(2,a.Button,{content:"ERT Bay",selected:5===i.bayNumber,tooltip:"This bay is located on the western edge of CentCom. Its the\nglass room directly west of where ERT spawn, and south of the\nCentCom ferry. Useful for launching ERT/Deathsquads/etc. onto\nthe station via drop pods.",onClick:function(){return c("bay5")}})]}),!!i.effectReverse&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Reverse Drop",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Pick Dropoff Location",selected:i.picking_dropoff_turf,disabled:!i.effectReverse,tooltip:"[NOTE: ONLY WORKS WHEN REVERSE MODE IS ACTIVE]\nThis will allow you to select a dropoff turf. After\nselecting a turf, any pod in 'Reverse Mode' will drop off\nit's newly gotten cargo on this turf. Can be used to\ntransport things or people around the station in a neat,\nIC way. Try doing this with the 'Seethrough Pod' style\nenabled for extra fun!",onClick:function(){return c("pickDropoffTurf")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Clear Dropoff Location",disabled:!i.dropoff_turf,tooltip:"Clears the selected dropoff turf for reverse mode.",onClick:function(){return c("clearDropoffTurf")}}),(0,o.createVNode)(1,"p",null,[(0,o.createTextVNode)("Reverse Drop-off Location:"),i.dropoff_turf?i.dropoff_turf:"None"],0)]}),!i.effectReverse&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Reverse Drop",children:(0,o.createVNode)(1,"p",null,"[Enable Reverse Mode for this feature]",16)}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleport to",children:[(0,o.createComponentVNode)(2,a.Button,{content:i.bay,onClick:function(){return c("teleportCentcom")}}),(0,o.createComponentVNode)(2,a.Button,{content:i.oldArea?i.oldArea:"Where you were",disabled:!i.oldArea,onClick:function(){return c("teleportBack")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Item Mode",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Clone Items",selected:i.launchClone,tooltip:"Choosing this will create a duplicate of the item to be\nlaunched in Centcom, allowing you to send one type of item\nmultiple times. Either way, the atoms are forceMoved into\nthe supplypod after it lands (but before it opens).",onClick:function(){return c("launchClone")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Random Items",selected:i.launchRandomItem,tooltip:"Choosing this will pick a random item from the selected turf\ninstead of the entire turfs contents. Best combined with\nsingle/random turf.",onClick:function(){return c("launchRandomItem")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Launch style",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Ordered",selected:1===i.launchChoice,tooltip:'Instead of launching everything in the bay at once, this\nwill "scan" things (one turf-full at a time) in order, left\nto right and top to bottom. undoing will reset the "scanner"\nto the top-leftmost position.',onClick:function(){return c("launchOrdered")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Random Turf",selected:2===i.launchChoice,tooltip:"Instead of launching everything in the bay at once, this\nwill launch one random turf of items at a time.",onClick:function(){return c("launchRandomTurf")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Explosion",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Size",selected:1===i.explosionChoice,tooltip:"This will cause an explosion of whatever size you like\n(including flame range) to occur as soon as the supplypod\nlands. Dont worry, supply-pods are explosion-proof!",onClick:function(){return c("explosionCustom")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Adminbus",selected:2===i.explosionChoice,tooltip:"This will cause a maxcap explosion (dependent on server\nconfig) to occur as soon as the supplypod lands. Dont worry,\nsupply-pods are explosion-proof!",onClick:function(){return c("explosionBus")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Damage",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Damage",selected:1===i.damageChoice,tooltip:"Anyone caught under the pod when it lands will be dealt\nthis amount of brute damage. Sucks to be them!",onClick:function(){return c("damageCustom")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Gib",selected:2===i.damageChoice,tooltip:"This will attempt to gib any mob caught under the pod when\nit lands, as well as dealing a nice 5000 brute damage. Ya\nknow, just to be sure!",onClick:function(){return c("damageGib")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Effects",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Projectile Cloud",selected:i.effectShrapnel,tooltip:"This will create a cloud of shrapnel on landing,\nof any projectile you'd like!",onClick:function(){return c("effectShrapnel")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Stun",selected:i.effectStun,tooltip:"Anyone who is on the turf when the supplypod is launched\nwill be stunned until the supplypod lands. They cant get\naway that easy!",onClick:function(){return c("effectStun")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Delimb",selected:i.effectLimb,tooltip:"This will cause anyone caught under the pod to lose a limb,\nexcluding their head.",onClick:function(){return c("effectLimb")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Yeet Organs",selected:i.effectOrgans,tooltip:"This will cause anyone caught under the pod to lose all\ntheir limbs and organs in a spectacular fashion.",onClick:function(){return c("effectOrgans")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Movement",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Bluespace",selected:i.effectBluespace,tooltip:"Gives the supplypod an advanced Bluespace Recyling Device.\nAfter opening, the supplypod will be warped directly to the\nsurface of a nearby NT-designated trash planet (/r/ss13).",onClick:function(){return c("effectBluespace")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Stealth",selected:i.effectStealth,tooltip:'This hides the red target icon from appearing when you\nlaunch the supplypod. Combos well with the "Invisible"\nstyle. Sneak attack, go!',onClick:function(){return c("effectStealth")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Quiet",selected:i.effectQuiet,tooltip:"This will keep the supplypod from making any sounds, except\nfor those specifically set by admins in the Sound section.",onClick:function(){return c("effectQuiet")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Reverse Mode",selected:i.effectReverse,tooltip:"This pod will not send any items. Instead, after landing,\nthe supplypod will close (similar to a normal closet closing),\nand then launch back to the right centcom bay to drop off any\nnew contents.",onClick:function(){return c("effectReverse")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Missile Mode",selected:i.effectMissile,tooltip:"This pod will not send any items. Instead, it will immediately\ndelete after landing (Similar visually to setting openDelay\n& departDelay to 0, but this looks nicer). Useful if you just\nwanna fuck some shit up. Combos well with the Missile style.",onClick:function(){return c("effectMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Any Descent Angle",selected:i.effectCircle,tooltip:"This will make the supplypod come in from any angle. Im not\nsure why this feature exists, but here it is.",onClick:function(){return c("effectCircle")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Machine Gun Mode",selected:i.effectBurst,tooltip:"This will make each click launch 5 supplypods inaccuratly\naround the target turf (a 3x3 area). Combos well with the\nMissile Mode if you dont want shit lying everywhere after.",onClick:function(){return c("effectBurst")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Specific Target",selected:i.effectTarget,tooltip:"This will make the supplypod target a specific atom, instead\nof the mouses position. Smiting does this automatically!",onClick:function(){return c("effectTarget")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name/Desc",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Name/Desc",selected:i.effectName,tooltip:"Allows you to add a custom name and description.",onClick:function(){return c("effectName")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Alert Ghosts",selected:i.effectAnnounce,tooltip:"Alerts ghosts when a pod is launched. Useful if some dumb\nshit is aboutta come outta the pod.",onClick:function(){return c("effectAnnounce")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Sound",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Falling Sound",selected:i.fallingSound,tooltip:"Choose a sound to play as the pod falls. Note that for this\nto work right you should know the exact length of the sound,\nin seconds.",onClick:function(){return c("fallSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Landing Sound",selected:i.landingSound,tooltip:"Choose a sound to play when the pod lands.",onClick:function(){return c("landingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Opening Sound",selected:i.openingSound,tooltip:"Choose a sound to play when the pod opens.",onClick:function(){return c("openingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Leaving Sound",selected:i.leavingSound,tooltip:"Choose a sound to play when the pod departs (whether that be\ndelection in the case of a bluespace pod, or leaving for\ncentcom for a reversing pod).",onClick:function(){return c("leavingSound")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Admin Sound Volume",selected:i.soundVolume,tooltip:"Choose the volume for the sound to play at. Default values\nare between 1 and 100, but hey, do whatever. Im a tooltip,\nnot a cop.",onClick:function(){return c("soundVolume")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Timers",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Custom Falling Duration",selected:4!==i.fallDuration,tooltip:"Set how long the animation for the pod falling lasts. Create\ndramatic, slow falling pods!",onClick:function(){return c("fallDuration")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Landing Time",selected:20!==i.landingDelay,tooltip:"Choose the amount of time it takes for the supplypod to hit\nthe station. By default this value is 0.5 seconds.",onClick:function(){return c("landingDelay")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Opening Time",selected:30!==i.openingDelay,tooltip:"Choose the amount of time it takes for the supplypod to open\nafter landing. Useful for giving whatevers inside the pod a\nnice dramatic entrance! By default this value is 3 seconds.",onClick:function(){return c("openingDelay")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Custom Leaving Time",selected:30!==i.departureDelay,tooltip:"Choose the amount of time it takes for the supplypod to leave\nafter landing. By default this value is 3 seconds.",onClick:function(){return c("departureDelay")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Style",children:[(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.styleChoice,tooltip:"Same color scheme as the normal station-used supplypods",onClick:function(){return c("styleStandard")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.styleChoice,tooltip:"The same as the stations upgraded blue-and-white\nBluespace Supplypods",onClick:function(){return c("styleBluespace")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Syndicate",selected:4===i.styleChoice,tooltip:"A menacing black and blood-red. Great for sending meme-ops\nin style!",onClick:function(){return c("styleSyndie")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Deathsquad",selected:5===i.styleChoice,tooltip:"A menacing black and dark blue. Great for sending deathsquads\nin style!",onClick:function(){return c("styleBlue")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Cult Pod",selected:6===i.styleChoice,tooltip:"A blood and rune covered cult pod!",onClick:function(){return c("styleCult")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Missile",selected:7===i.styleChoice,tooltip:"A large missile. Combos well with a missile mode, so the\nmissile doesnt stick around after landing.",onClick:function(){return c("styleMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Syndicate Missile",selected:8===i.styleChoice,tooltip:"A large blood-red missile. Combos well with missile mode,\nso the missile doesnt stick around after landing.",onClick:function(){return c("styleSMissile")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Supply Crate",selected:9===i.styleChoice,tooltip:"A large, dark-green military supply crate.",onClick:function(){return c("styleBox")}}),(0,o.createComponentVNode)(2,a.Button,{content:"HONK",selected:10===i.styleChoice,tooltip:"A colorful, clown inspired look.",onClick:function(){return c("styleHONK")}}),(0,o.createComponentVNode)(2,a.Button,{content:"~Fruit",selected:11===i.styleChoice,tooltip:"For when an orange is angry",onClick:function(){return c("styleFruit")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Invisible",selected:12===i.styleChoice,tooltip:'Makes the supplypod invisible! Useful for when you want to\nuse this feature with a gateway or something. Combos well\nwith the "Stealth" and "Quiet Landing" effects.',onClick:function(){return c("styleInvisible")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Show Contents (See Through Pod)",selected:14===i.styleChoice,tooltip:"By selecting this, the pod will instead look like whatevers\ninside it (as if it were the contents falling by themselves,\nwithout a pod). Useful for launching mechs at the station\nand standing tall as they soar in from the heavens.",onClick:function(){return c("styleSeeThrough")}})]})]})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:i.numObjects+" turfs in "+i.bay,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"undo Pod Bay",tooltip:"Manually undoes the possible things to launch in the\npod bay.",onClick:function(){return c("undo")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Enter Launch Mode",selected:i.giveLauncher,tooltip:"THE CODEX ASTARTES CALLS THIS MANEUVER: STEEL RAIN",onClick:function(){return c("giveLauncher")}}),(0,o.createComponentVNode)(2,a.Button,{content:"Clear Selected Bay",color:"bad",tooltip:"This will delete all objs and mobs from the selected bay.",tooltipPosition:"left",onClick:function(){return c("clearBay")}})],4)})})})],4)};t.CentcomPodLauncherContent=i},8663:function(e,t,n){"use strict";t.__esModule=!0,t.ChemAcclimator=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ChemAcclimator=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:320,height:271,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Acclimator",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:[l.chem_temp," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l.target_temperature,unit:"K",width:"59px",minValue:0,maxValue:1e3,step:5,stepPixelSize:2,onChange:function(e,t){return i("set_target_temperature",{temperature:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Acceptable Temp. Difference",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l.allowed_temperature_difference,unit:"K",width:"59px",minValue:1,maxValue:l.target_temperature,stepPixelSize:2,onChange:function(e,t){i("set_allowed_temperature_difference",{temperature:t})}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:l.enabled?"On":"Off",selected:l.enabled,onClick:function(){return i("toggle_power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l.max_volume,unit:"u",width:"50px",minValue:l.reagent_volume,maxValue:200,step:2,stepPixelSize:2,onChange:function(e,t){return i("change_volume",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Operation",children:l.acclimate_state}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current State",children:l.emptying?"Emptying":"Filling"})]})})]})})}},76900:function(e,t,n){"use strict";t.__esModule=!0,t.ChemDebugSynthesizer=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ChemDebugSynthesizer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.amount,u=l.beakerCurrentVolume,s=l.beakerMaxVolume,m=l.isBeakerLoaded,p=l.beakerContents,C=void 0===p?[]:p;return(0,o.createComponentVNode)(2,c.Window,{width:390,height:330,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Recipient",buttons:m?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return i("ejectBeaker")}}),(0,o.createComponentVNode)(2,a.NumberInput,{value:d,unit:"u",minValue:1,maxValue:s,step:1,stepPixelSize:2,onChange:function(e,t){return i("amount",{amount:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Input",onClick:function(){return i("input")}})],4):(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Create Beaker",onClick:function(){return i("makecup")}}),children:m?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})," / "+s+" u"]}),C.length>0?(0,o.createComponentVNode)(2,a.LabeledList,{children:C.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[e.volume," u"]},e.name)}))}):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Recipient Empty"})],0):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No Recipient"})})})})}},22223:function(e,t,n){"use strict";t.__esModule=!0,t.ChemDispenser=void 0;var o=n(39812),r=n(41860),a=n(2497),c=n(71494),i=n(74814),l=n(85952);t.ChemDispenser=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=!!u.recordingRecipe,m=Object.keys(u.recipes).map((function(e){return{name:e,contents:u.recipes[e]}})),p=u.beakerTransferAmounts||[],C=s&&Object.keys(u.recordingRecipe).map((function(e){return{id:e,name:(0,a.toTitleCase)(e.replace(/_/," ")),volume:u.recordingRecipe[e]}}))||u.beakerContents||[];return(0,o.createComponentVNode)(2,l.Window,{width:565,height:620,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{title:"Status",buttons:s&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:1,color:"red",children:[(0,o.createComponentVNode)(2,i.Icon,{name:"circle",mr:1}),"Recording"]}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Energy",children:(0,o.createComponentVNode)(2,i.ProgressBar,{value:u.energy/u.maxEnergy,children:(0,r.toFixed)(u.energy)+" units"})})})}),(0,o.createComponentVNode)(2,i.Section,{title:"Recipes",buttons:(0,o.createFragment)([!s&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,mx:1,children:(0,o.createComponentVNode)(2,i.Button,{color:"transparent",content:"Clear recipes",onClick:function(){return d("clear_recipes")}})}),!s&&(0,o.createComponentVNode)(2,i.Button,{icon:"circle",disabled:!u.isBeakerLoaded,content:"Record",onClick:function(){return d("record_recipe")}}),s&&(0,o.createComponentVNode)(2,i.Button,{icon:"ban",color:"transparent",content:"Discard",onClick:function(){return d("cancel_recording")}}),s&&(0,o.createComponentVNode)(2,i.Button,{icon:"save",color:"green",content:"Save",onClick:function(){return d("save_recording")}})],0),children:(0,o.createComponentVNode)(2,i.Box,{mr:-1,children:[m.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"tint",width:"129.5px",lineHeight:1.75,content:e.name,onClick:function(){return d("dispense_recipe",{recipe:e.name})}},e.name)})),0===m.length&&(0,o.createComponentVNode)(2,i.Box,{color:"light-gray",children:"No recipes."})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Dispense",buttons:p.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"plus",selected:e===u.amount,content:e,onClick:function(){return d("amount",{target:e})}},e)})),children:(0,o.createComponentVNode)(2,i.Box,{mr:-1,children:u.chemicals.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"tint",width:"129.5px",lineHeight:1.75,content:e.title,onClick:function(){return d("dispense",{reagent:e.id})}},e.id)}))})}),(0,o.createComponentVNode)(2,i.Section,{title:"Beaker",buttons:p.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{icon:"minus",disabled:s,content:e,onClick:function(){return d("remove",{amount:e})}},e)})),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Beaker",buttons:!!u.isBeakerLoaded&&(0,o.createComponentVNode)(2,i.Button,{icon:"eject",content:"Eject",disabled:!u.isBeakerLoaded,onClick:function(){return d("eject")}}),children:(s?"Virtual beaker":u.isBeakerLoaded&&(0,o.createFragment)([(0,o.createComponentVNode)(2,i.AnimatedNumber,{initial:0,value:u.beakerCurrentVolume}),(0,o.createTextVNode)("/"),u.beakerMaxVolume,(0,o.createTextVNode)(" units")],0))||"No beaker"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Contents",children:[(0,o.createComponentVNode)(2,i.Box,{color:"label",children:u.isBeakerLoaded||s?0===C.length&&"Nothing":"N/A"}),C.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{color:"label",children:[(0,o.createComponentVNode)(2,i.AnimatedNumber,{initial:0,value:e.volume})," ","units of ",e.name]},e.name)}))]})]})})]})})}},16610:function(e,t,n){"use strict";t.__esModule=!0,t.ChemFilter=t.ChemFilterPane=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=function(e,t){var n=(0,r.useBackend)(t).act,c=e.title,i=e.list,l=e.reagentName,d=e.onReagentInput,u=c.toLowerCase();return(0,o.createComponentVNode)(2,a.Section,{title:c,minHeight:"240px",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Input,{placeholder:"Reagent",width:"140px",onInput:function(e,t){return d(t)}}),(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"plus",onClick:function(){return n("add",{which:u,name:l})}})],4),children:i.map((function(e){return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"minus",content:e,onClick:function(){return n("remove",{which:u,reagent:e})}})],4,e)}))})};t.ChemFilterPane=i;t.ChemFilter=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data),d=l.left,u=void 0===d?[]:d,s=l.right,m=void 0===s?[]:s,p=(0,r.useLocalState)(t,"leftName",""),C=p[0],h=p[1],N=(0,r.useLocalState)(t,"rightName",""),V=N[0],b=N[1];return(0,o.createComponentVNode)(2,c.Window,{width:500,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i,{title:"Left",list:u,reagentName:C,onReagentInput:function(e){return h(e)}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i,{title:"Right",list:m,reagentName:V,onReagentInput:function(e){return b(e)}})})]})})})}},96479:function(e,t,n){"use strict";t.__esModule=!0,t.ChemHeater=void 0;var o=n(39812),r=n(41860),a=n(71494),c=n(74814),i=n(85952),l=n(48229);t.ChemHeater=function(e,t){var n=(0,a.useBackend)(t),d=n.act,u=n.data,s=u.targetTemp,m=u.isActive,p=u.isBeakerLoaded,C=u.currentTemp,h=u.beakerCurrentVolume,N=u.beakerMaxVolume,V=u.beakerContents,b=void 0===V?[]:V;u.currentpH;return(0,o.createComponentVNode)(2,i.Window,{width:300,height:320,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{title:"Thermostat",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:m?"power-off":"times",selected:m,content:m?"On":"Off",onClick:function(){return d("power")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Target",children:(0,o.createComponentVNode)(2,c.NumberInput,{width:"65px",unit:"K",step:10,stepPixelSize:3,value:(0,r.round)(s),minValue:0,maxValue:1e3,onDrag:function(e,t){return d("temperature",{target:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Reading",children:(0,o.createComponentVNode)(2,c.Box,{width:"60px",textAlign:"right",children:p&&(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:C,format:function(e){return(0,r.toFixed)(e)+" K"}})||"\u2014"})})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Beaker",buttons:!!p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"label",mr:2,children:[h," / ",N," units,",u.currentpH," pH"]}),(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",onClick:function(){return d("eject")}})],4),children:(0,o.createComponentVNode)(2,l.BeakerContents,{beakerLoaded:p,beakerContents:b})})]})})}},34859:function(e,t,n){"use strict";t.__esModule=!0,t.ChemMaster=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ChemMaster=function(e,t){var n=(0,r.useBackend)(t).data.screen;return(0,o.createComponentVNode)(2,c.Window,{width:465,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:"analyze"===n&&(0,o.createComponentVNode)(2,m)||(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,u=i.screen,p=i.beakerContents,C=void 0===p?[]:p,h=i.bufferContents,N=void 0===h?[]:h,V=i.beakerCurrentVolume,b=i.beakerMaxVolume,f=i.isBeakerLoaded,g=i.isPillBottleLoaded,v=i.pillBottleCurrentAmount,k=i.pillBottleMaxAmount;return"analyze"===u?(0,o.createComponentVNode)(2,m):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",buttons:!!i.isBeakerLoaded&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:V,initial:0})," / "+b+" units"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("eject")}})],4),children:[!f&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"No beaker loaded."}),!!f&&0===C.length&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"Beaker is empty."}),(0,o.createComponentVNode)(2,l,{children:C.map((function(e){return(0,o.createComponentVNode)(2,d,{chemical:e,transferTo:"buffer"},e.id)}))})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Buffer",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:1,children:"Mode:"}),(0,o.createComponentVNode)(2,a.Button,{color:i.mode?"good":"bad",icon:i.mode?"exchange-alt":"times",content:i.mode?"Transfer":"Destroy",onClick:function(){return c("toggleMode")}})],4),children:[0===N.length&&(0,o.createComponentVNode)(2,a.Box,{color:"label",mt:"3px",mb:"5px",children:"Buffer is empty."}),(0,o.createComponentVNode)(2,l,{children:N.map((function(e){return(0,o.createComponentVNode)(2,d,{chemical:e,transferTo:"beaker"},e.id)}))})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Packaging",children:(0,o.createComponentVNode)(2,s)}),!!g&&(0,o.createComponentVNode)(2,a.Section,{title:"Pill Bottle",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:2,children:[v," / ",k," pills"]}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("ejectPillBottle")}})],4)})],0)},l=a.Table,d=function(e,t){var n=(0,r.useBackend)(t).act,c=e.chemical,i=e.transferTo;return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{color:"label",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c.volume,initial:0})," units of "+c.name]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,a.Button,{content:"1",onClick:function(){return n("transfer",{id:c.id,amount:1,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"5",onClick:function(){return n("transfer",{id:c.id,amount:5,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"10",onClick:function(){return n("transfer",{id:c.id,amount:10,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{content:"All",onClick:function(){return n("transfer",{id:c.id,amount:1e3,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"ellipsis-h",title:"Custom amount",onClick:function(){return n("transfer",{id:c.id,amount:-1,to:i})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"question",title:"Analyze",onClick:function(){return n("analyze",{id:c.id})}})]})]},c.id)},u=function(e){var t=e.label,n=e.amountUnit,r=e.amount,c=e.onChangeAmount,i=e.onCreate,l=e.sideNote;return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:t,children:[(0,o.createComponentVNode)(2,a.NumberInput,{width:"84px",unit:n,step:1,stepPixelSize:15,value:r,minValue:1,maxValue:10,onChange:c}),(0,o.createComponentVNode)(2,a.Button,{ml:1,content:"Create",onClick:i}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,ml:1,color:"label",children:l})]})},s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=(0,r.useSharedState)(t,"pillAmount",1),d=l[0],s=l[1],m=(0,r.useSharedState)(t,"patchAmount",1),p=m[0],C=m[1],h=(0,r.useSharedState)(t,"bottleAmount",1),N=h[0],V=h[1],b=(0,r.useSharedState)(t,"packAmount",1),f=b[0],g=b[1],v=(0,r.useSharedState)(t,"setstimpakAmount",1),k=v[0],x=v[1],B=(0,r.useSharedState)(t,"setsuperstimpakAmount",1),_=B[0],w=B[1],L=(0,r.useSharedState)(t,"setPowderbagAmount",1),y=L[0],S=L[1],I=(0,r.useSharedState)(t,"setprimitiveBottleAmount",1),T=I[0],A=I[1],P=i.condi,R=i.advanced,M=i.primitive,F=i.chosenPillStyle,D=i.pillStyles,j=void 0===D?[]:D;return(0,o.createComponentVNode)(2,a.LabeledList,{children:[!P&&!M&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pill type",children:j.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:"30px",selected:e.id===F,textAlign:"center",color:"transparent",onClick:function(){return c("pillStyle",{id:e.id})},children:(0,o.createComponentVNode)(2,a.Box,{mx:-1,className:e.className})},e.id)}))}),!P&&!M&&(0,o.createComponentVNode)(2,u,{label:"Pills",amount:d,amountUnit:"pills",sideNote:"max 50u",onChangeAmount:function(e,t){return s(t)},onCreate:function(){return c("create",{type:"pill",amount:d,volume:"auto"})}}),!P&&!!R&&!M&&(0,o.createComponentVNode)(2,u,{label:"Patches",amount:p,amountUnit:"patches",sideNote:"max 40u",onChangeAmount:function(e,t){return C(t)},onCreate:function(){return c("create",{type:"patch",amount:p,volume:"auto"})}}),!P&&!M&&(0,o.createComponentVNode)(2,u,{label:"Bottles",amount:N,amountUnit:"bottles",sideNote:"max 30u",onChangeAmount:function(e,t){return V(t)},onCreate:function(){return c("create",{type:"bottle",amount:N,volume:"auto"})}}),!P&&!M&&(0,o.createComponentVNode)(2,u,{label:"Stimpaks",amount:k,amountUnit:"stimpaks",sideNote:"max 10u",onChangeAmount:function(e,t){return x(t)},onCreate:function(){return c("create",{type:"stimPak",amount:k,volume:"auto"})}}),!P&&!!R&&!M&&(0,o.createComponentVNode)(2,u,{label:"Super Stimpaks",amount:_,amountUnit:"super stimpaks",sideNote:"max 20u",onChangeAmount:function(e,t){return w(t)},onCreate:function(){return c("create",{type:"superStimpak",amount:_,volume:"auto"})}}),!!P&&(0,o.createComponentVNode)(2,u,{label:"Packs",amount:f,amountUnit:"packs",sideNote:"max 10u",onChangeAmount:function(e,t){return g(t)},onCreate:function(){return c("create",{type:"condimentPack",amount:f,volume:"auto"})}}),!!P&&(0,o.createComponentVNode)(2,u,{label:"Bottles",amount:N,amountUnit:"bottles",sideNote:"max 50u",onChangeAmount:function(e,t){return V(t)},onCreate:function(){return c("create",{type:"condimentBottle",amount:N,volume:"auto"})}}),!!M&&(0,o.createComponentVNode)(2,u,{label:"Powder Bag",amount:p,amountUnit:"powderbags",sideNote:"max 40u",onChangeAmount:function(e,t){return S(t)},onCreate:function(){return c("create",{type:"bag",amount:y,volume:"auto"})}}),!!M&&(0,o.createComponentVNode)(2,u,{label:"Primitive Bottles",amount:N,amountUnit:"bottles",sideNote:"max 60u",onChangeAmount:function(e,t){return A(t)},onCreate:function(){return c("create",{type:"bottle_primitive",amount:T,volume:"auto"})}})]})},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=e.fermianalyze,d=i.analyzeVars;return(0,o.createComponentVNode)(2,a.Section,{title:"Analysis Results",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Back",onClick:function(){return c("goScreen",{screen:"home"})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",children:d.state}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Color",children:[(0,o.createComponentVNode)(2,a.ColorBox,{color:d.color,mr:1}),d.color]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:d.description}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Metabolization Rate",children:[d.metaRate," u/minute"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Overdose Threshold",children:d.overD}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Addiction Threshold",children:d.addicD}),!!l&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Purity",children:d.purityF}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Inverse Ratio",children:d.inverseRatioF}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Purity E",children:d.purityE}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Lower Optimal Temperature",children:d.minTemp}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Upper Optimal Temperature",children:d.maxTemp}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Explosive Temperature",children:d.eTemp}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"pH Peak",children:d.pHpeak})],4)]})})}},56320:function(e,t,n){"use strict";t.__esModule=!0,t.ChemPress=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ChemPress=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.current_volume,u=l.product_name,s=l.pill_style,m=l.pill_styles,p=void 0===m?[]:m,C=l.product,h=l.min_volume,N=l.max_volume;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:227,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Product",children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Pills",checked:"pill"===C,onClick:function(){return i("change_product",{product:"pill"})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Patches",checked:"patch"===C,onClick:function(){return i("change_product",{product:"patch"})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Bottles",checked:"bottle"===C,onClick:function(){return i("change_product",{product:"bottle"})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:d,unit:"u",width:"43px",minValue:h,maxValue:N,step:1,stepPixelSize:2,onChange:function(e,t){return i("change_current_volume",{volume:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:[(0,o.createComponentVNode)(2,a.Input,{value:u,placeholder:u,onChange:function(e,t){return i("change_product_name",{name:t})}}),(0,o.createComponentVNode)(2,a.Box,{as:"span",children:C})]}),"pill"===C&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Style",children:p.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:"30px",selected:e.id===s,textAlign:"center",color:"transparent",onClick:function(){return i("change_pill_style",{id:e.id})},children:(0,o.createComponentVNode)(2,a.Box,{mx:-1,className:e.class_name})},e.id)}))})]})})})})}},52592:function(e,t,n){"use strict";t.__esModule=!0,t.ChemReactionChamber=void 0;var o=n(39812),r=n(64499),a=n(34380),c=n(71494),i=n(74814),l=n(85952);t.ChemReactionChamber=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=(0,c.useLocalState)(t,"reagentName",""),m=s[0],p=s[1],C=(0,c.useLocalState)(t,"reagentQuantity",1),h=C[0],N=C[1],V=u.emptying,b=u.reagents||[];return(0,o.createComponentVNode)(2,l.Window,{width:250,height:225,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Reagents",buttons:(0,o.createComponentVNode)(2,i.Box,{inline:!0,bold:!0,color:V?"bad":"good",children:V?"Emptying":"Filling"}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createVNode)(1,"tr","LabledList__row",[(0,o.createVNode)(1,"td","LabeledList__cell",(0,o.createComponentVNode)(2,i.Input,{fluid:!0,value:"",placeholder:"Reagent Name",onInput:function(e,t){return p(t)}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td",(0,a.classes)(["LabeledList__buttons","LabeledList__cell"]),[(0,o.createComponentVNode)(2,i.NumberInput,{value:h,minValue:1,maxValue:100,step:1,stepPixelSize:3,width:"39px",onDrag:function(e,t){return N(t)}}),(0,o.createComponentVNode)(2,i.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,i.Button,{icon:"plus",onClick:function(){return d("add",{chem:m,amount:h})}})],4)],4),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:t,buttons:(0,o.createComponentVNode)(2,i.Button,{icon:"minus",color:"bad",onClick:function(){return d("remove",{chem:t})}}),children:e},t)}))(b)]})})})})}},68502:function(e,t,n){"use strict";t.__esModule=!0,t.ChemSplitter=void 0;var o=n(39812),r=n(41860),a=n(71494),c=n(74814),i=n(85952);t.ChemSplitter=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.straight,s=d.side,m=d.max_transfer;return(0,o.createComponentVNode)(2,i.Window,{width:220,height:105,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Straight",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:u,unit:"u",width:"55px",minValue:1,maxValue:m,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return l("set_amount",{target:"straight",amount:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Side",children:(0,o.createComponentVNode)(2,c.NumberInput,{value:s,unit:"u",width:"55px",minValue:1,maxValue:m,format:function(e){return(0,r.toFixed)(e,2)},step:.05,stepPixelSize:4,onChange:function(e,t){return l("set_amount",{target:"side",amount:t})}})})]})})})})}},77508:function(e,t,n){"use strict";t.__esModule=!0,t.ChemSynthesizer=void 0;var o=n(39812),r=n(41860),a=n(71494),c=n(74814),i=n(85952);t.ChemSynthesizer=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.amount,s=d.current_reagent,m=d.chemicals,p=void 0===m?[]:m,C=d.possible_amounts,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,i.Window,{width:300,height:375,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Box,{children:h.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"plus",content:(0,r.toFixed)(e,0),selected:e===u,onClick:function(){return l("amount",{target:e})}},(0,r.toFixed)(e,0))}))}),(0,o.createComponentVNode)(2,c.Box,{mt:1,children:p.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:"tint",content:e.title,width:"129px",selected:e.id===s,onClick:function(){return l("select",{reagent:e.id})}},e.id)}))})]})})})}},30733:function(e,t,n){"use strict";t.__esModule=!0,t.CivCargoHoldTerminal=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.CivCargoHoldTerminal=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.pad,s=d.sending,m=d.status_report,p=d.id_inserted,C=d.id_bounty_info;d.id_bounty_value,d.id_bounty_num;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,width:500,height:375,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{color:p?"blue":"default",children:p?"Welcome valued employee.":"To begin, insert your ID into the console."}),(0,o.createComponentVNode)(2,a.Section,{title:"Cargo Pad",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:u?"good":"bad",children:u?"Online":"Not Found"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cargo Report",children:m})]})}),(0,o.createComponentVNode)(2,i)]}),(0,o.createComponentVNode)(2,a.Flex.Item,{m:1,children:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"sync",content:"Check Contents",disabled:!u||!p,onClick:function(){return l("recalc")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:s?"times":"arrow-up",content:s?"Stop Sending":"Send Goods",selected:s,disabled:!u||!p,onClick:function(){return l(s?"stop":"send")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:C?"recycle":"pen",color:C?"green":"default",content:C?"Replace Bounty":"New Bounty",disabled:!p,onClick:function(){return l("bounty")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Eject",disabled:!p,onClick:function(){return l("eject")}})],4)})]})})})};var i=function(e,t){var n=(0,r.useBackend)(t).data,c=n.id_bounty_info,i=n.id_bounty_value,l=n.id_bounty_num;return(0,o.createComponentVNode)(2,a.Section,{title:"Bounty Info",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:c||"N/A, please add a new bounty."}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Quantity",children:c?l:"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Value",children:c?i:"N/A"})]})})}},14319:function(e,t,n){"use strict";t.__esModule=!0,t.ClockworkSlab=void 0;for(var o=n(39812),r=n(71494),a=n(64499),c=n(74814),i=n(85952),l="",d=0;d=w,tooltip:e.tip,tooltipPosition:"left",onClick:function(){return d("recite",{script:e.type})},children:"Recite "+e.required})}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,disabled:!e.quickbind,onClick:function(){return d("bind",{script:e.type})},children:["content=",e.bound?"Unbind "+e.bound:"Quickbind"]})})]},e.name)}))})]})]})})})}},28408:function(e,t,n){"use strict";t.__esModule=!0,t.CodexGigas=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=["Dark","Hellish","Fallen","Fiery","Sinful","Blood","Fluffy"],l=["Lord","Prelate","Count","Viscount","Vizier","Elder","Adept"],d=["hal","ve","odr","neit","ci","quon","mya","folth","wren","geyr","hil","niet","twou","phi","coa"],u=["the Red","the Soulless","the Master","the Lord of all things","Jr."];t.CodexGigas=function(e,t){var n=(0,r.useBackend)(t),s=n.act,m=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:450,height:450,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[m.name,(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prefix",children:i.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:1!==m.currentSection,onClick:function(){return s(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Title",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:m.currentSection>2,onClick:function(){return s(e+" ")}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:m.currentSection>4,onClick:function(){return s(e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suffix",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,disabled:4!==m.currentSection,onClick:function(){return s(" "+e)}},e.toLowerCase())}))}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Submit",children:(0,o.createComponentVNode)(2,a.Button,{content:"Search",disabled:m.currentSection<4,onClick:function(){return s("search")}})})]})]})})})}},67649:function(e,t,n){"use strict";t.__esModule=!0,t.ColormateMatrix=t.ColormateNoMatrix=t.Colormate=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Colormate=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.matrixactive,m=u.temp,p=u.item||[];return(0,o.createComponentVNode)(2,c.Window,{width:"980",height:"720",resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{overflow:"auto",children:[m?(0,o.createComponentVNode)(2,a.NoticeBox,{children:m}):null,Object.keys(p).length?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Flex,{fill:!0,children:[(0,o.createComponentVNode)(2,a.Section,{width:"50%",height:"20%",children:[(0,o.createVNode)(1,"center",null,"Item:",16),(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/jpeg;base64, "+p.sprite,width:"100%",height:"100%",style:{"-ms-interpolation-mode":"nearest-neighbor"}})]}),(0,o.createComponentVNode)(2,a.Section,{width:"50%",height:"20%",children:[(0,o.createVNode)(1,"center",null,"Preview:",16),(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/jpeg;base64, "+p.preview,width:"100%",height:"100%",style:{"-ms-interpolation-mode":"nearest-neighbor"}})]})]}),(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Tabs,{fluid:!0,children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:!s,onClick:function(){return d("switch_modes",{mode:"0"})},children:"Regular coloring"},"0"),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:s,onClick:function(){return d("switch_modes",{mode:"1"})},children:"Matrixed coloring"},"1")]}),s?(0,o.createFragment)([(0,o.createVNode)(1,"center",null,[(0,o.createTextVNode)("Coloring: "),p.name],0),(0,o.createComponentVNode)(2,l)],4):(0,o.createFragment)([(0,o.createVNode)(1,"center",null,[(0,o.createTextVNode)("Coloring: "),p.name],0),(0,o.createComponentVNode)(2,i)],4)]})],4):(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createVNode)(1,"center",null,"No item inserted.",16)})]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act;n.data;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{grow:1,fill:!0,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"33%",children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Paint",icon:"fill",onClick:function(){return c("paint")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Clear",icon:"eraser",onClick:function(){return c("clear")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Eject",icon:"eject",onClick:function(){return c("drop")}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"66%",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,height:"100%",content:"Select new color",icon:"paint-brush",onClick:function(){return c("choose_color")}})})]})})};t.ColormateNoMatrix=i;var l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.matrixcolors||[];return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"33%",children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Paint",icon:"fill",onClick:function(){return c("matrix_paint")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Clear",icon:"eraser",onClick:function(){return c("clear")}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Eject",icon:"eject",onClick:function(){return c("drop")}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:["RR: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.rr,onChange:function(e,t){return c("set_matrix_color",{color:1,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["GR: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.gr,onChange:function(e,t){return c("set_matrix_color",{color:4,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["BR: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.br,onChange:function(e,t){return c("set_matrix_color",{color:7,value:t})}})]})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:["RG: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.rg,onChange:function(e,t){return c("set_matrix_color",{color:2,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["GG: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.gg,onChange:function(e,t){return c("set_matrix_color",{color:5,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["BG: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.bg,onChange:function(e,t){return c("set_matrix_color",{color:8,value:t})}})]})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:["RB: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.rb,onChange:function(e,t){return c("set_matrix_color",{color:3,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["GB: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.gb,onChange:function(e,t){return c("set_matrix_color",{color:6,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["BB: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.bb,onChange:function(e,t){return c("set_matrix_color",{color:9,value:t})}})]})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:["CR: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.cr,onChange:function(e,t){return c("set_matrix_color",{color:10,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["CG: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.cg,onChange:function(e,t){return c("set_matrix_color",{color:11,value:t})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["CB: ",(0,o.createComponentVNode)(2,a.NumberInput,{width:"50px",minValue:-1e3,maxValue:1e3,value:i.cb,onChange:function(e,t){return c("set_matrix_color",{color:12,value:t})}})]})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"33%",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"question-circle",color:"blue"})," RG means red will become this much green.",(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Icon,{name:"question-circle",color:"blue"})," CR means that red will have this much constrast applied to it."]})]})})};t.ColormateMatrix=l},2174:function(e,t,n){"use strict";t.__esModule=!0,t.ComputerFabricator=void 0;var o=n(39812),r=(n(2497),n(71494)),a=n(74814),c=n(85952);t.ComputerFabricator=function(e,t){var n=(0,r.useBackend)(t),s=n.act,m=n.data;return(0,o.createComponentVNode)(2,c.Window,{title:"Personal Computer Vendor",width:500,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{italic:!0,fontSize:"20px",children:"Your perfect device, only three steps away..."}),0!==m.state&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mb:1,icon:"circle",content:"Clear Order",onClick:function(){return s("clean_order")}}),0===m.state&&(0,o.createComponentVNode)(2,i),1===m.state&&(0,o.createComponentVNode)(2,l),2===m.state&&(0,o.createComponentVNode)(2,d),3===m.state&&(0,o.createComponentVNode)(2,u)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act;n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Step 1",minHeight:"306px",children:[(0,o.createComponentVNode)(2,a.Box,{mt:5,bold:!0,textAlign:"center",fontSize:"40px",children:"Choose your Device"}),(0,o.createComponentVNode)(2,a.Box,{mt:3,children:(0,o.createComponentVNode)(2,a.Grid,{width:"100%",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"laptop",content:"Laptop",textAlign:"center",fontSize:"30px",lineHeight:2,onClick:function(){return c("pick_device",{pick:"1"})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"tablet-alt",content:"Tablet",textAlign:"center",fontSize:"30px",lineHeight:2,onClick:function(){return c("pick_device",{pick:"2"})}})})]})})]})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Step 2: Customize your device",minHeight:"282px",buttons:(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"good",children:[i.totalprice," cr"]}),children:[(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Battery:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to operate without external utility power\nsource. Advanced batteries increase battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_battery,onClick:function(){return c("hw_battery",{battery:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_battery,onClick:function(){return c("hw_battery",{battery:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_battery,onClick:function(){return c("hw_battery",{battery:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Hard Drive:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Stores file on your device. Advanced drives can store more\nfiles, but use more power, shortening battery life.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_disk,onClick:function(){return c("hw_disk",{disk:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Upgraded",selected:2===i.hw_disk,onClick:function(){return c("hw_disk",{disk:"2"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:3===i.hw_disk,onClick:function(){return c("hw_disk",{disk:"3"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Network Card:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Allows your device to wirelessly connect to stationwide NTNet\nnetwork. Basic cards are limited to on-station use, while\nadvanced cards can operate anywhere near the station, which\nincludes asteroid outposts",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_netcard,onClick:function(){return c("hw_netcard",{netcard:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_netcard,onClick:function(){return c("hw_netcard",{netcard:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_netcard,onClick:function(){return c("hw_netcard",{netcard:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Nano Printer:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A device that allows for various paperwork manipulations,\nsuch as, scanning of documents or printing new ones.\nThis device was certified EcoFriendlyPlus and is capable of\nrecycling existing paper for printing purposes.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_nanoprint,onClick:function(){return c("hw_nanoprint",{print:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_nanoprint,onClick:function(){return c("hw_nanoprint",{print:"1"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Secondary Card Reader:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"Adds a secondary RFID card reader, for manipulating or\nreading from a second standard RFID card.\nPlease note that a primary card reader is necessary to\nallow the device to read your identification, but one\nis included in the base price.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_card,onClick:function(){return c("hw_card",{card:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_card,onClick:function(){return c("hw_card",{card:"1"})}})})]}),2!==i.devtype&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Processor Unit:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"A component critical for your device's functionality.\nIt allows you to run programs from your hard drive.\nAdvanced CPUs use more power, but allow you to run\nmore programs on background at once.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_cpu,onClick:function(){return c("hw_cpu",{cpu:"1"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Advanced",selected:2===i.hw_cpu,onClick:function(){return c("hw_cpu",{cpu:"2"})}})})]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,position:"relative",children:["Tesla Relay:",(0,o.createComponentVNode)(2,a.Tooltip,{content:"An advanced wireless power relay that allows your device\nto connect to nearby area power controller to provide\nalternative power source. This component is currently\nunavailable on tablet computers due to size restrictions.",position:"right"})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"None",selected:0===i.hw_tesla,onClick:function(){return c("hw_tesla",{tesla:"0"})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{content:"Standard",selected:1===i.hw_tesla,onClick:function(){return c("hw_tesla",{tesla:"1"})}})})]})],4)]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,mt:3,content:"Confirm Order",color:"good",textAlign:"center",fontSize:"18px",lineHeight:2,onClick:function(){return c("confirm_order")}})]})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Step 3: Payment",minHeight:"282px",children:[(0,o.createComponentVNode)(2,a.Box,{italic:!0,textAlign:"center",fontSize:"20px",children:"Your device is ready for fabrication..."}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:2,textAlign:"center",fontSize:"16px",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:"Please insert the required"})," ",(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:[i.totalprice," cr"]})]}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:1,textAlign:"center",fontSize:"18px",children:"Current:"}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,mt:.5,textAlign:"center",fontSize:"18px",color:i.credits>=i.totalprice?"good":"bad",children:[i.credits," cr"]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Purchase",disabled:i.credits=10&&e<20?c.COLORS.department.security:e>=20&&e<30?c.COLORS.department.medbay:e>=30&&e<40?c.COLORS.department.science:e>=40&&e<50?c.COLORS.department.engineering:e>=50&&e<60?c.COLORS.department.cargo:e>=200&&e<230?c.COLORS.department.centcom:c.COLORS.department.other},u=function(e){var t=e.type,n=e.value;return(0,o.createComponentVNode)(2,a.Box,{inline:!0,width:2,color:c.COLORS.damageType[t],textAlign:"center",children:n})};t.CrewConsole=function(){return(0,o.createComponentVNode)(2,i.Window,{title:"Crew Monitor",width:800,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{minHeight:"540px",children:(0,o.createComponentVNode)(2,s)})})})};var s=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,s=i.sensors||[];return(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,textAlign:"center",children:"Vitals"}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:"Position"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,collapsing:!0,children:"Tracking"})]}),s.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:(C=e.ijob,C%10==0),color:d(e.ijob),children:[e.name," (",e.assignment,")"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:(0,o.createComponentVNode)(2,a.ColorBox,{color:(t=e.oxydam,n=e.toxdam,r=e.burndam,s=e.brutedam,m=t+n+r+s,p=Math.min(Math.max(Math.ceil(m/25),0),5),l[p])})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"center",children:null!==e.oxydam?(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:[(0,o.createComponentVNode)(2,u,{type:"oxy",value:e.oxydam}),"/",(0,o.createComponentVNode)(2,u,{type:"toxin",value:e.toxdam}),"/",(0,o.createComponentVNode)(2,u,{type:"burn",value:e.burndam}),"/",(0,o.createComponentVNode)(2,u,{type:"brute",value:e.brutedam})]}):e.life_status?"Alive":"Dead"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:null!==e.pos_x?e.area:"N/A"}),!!i.link_allowed&&(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,a.Button,{content:"Track",disabled:!e.can_track,onClick:function(){return c("select_person",{name:e.name})}})})]},e.name);var t,n,r,s,m,p,C}))]})}},99798:function(e,t,n){"use strict";t.__esModule=!0,t.Cryo=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(48229),i=n(85952),l=[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}];t.Cryo=function(){return(0,o.createComponentVNode)(2,i.Window,{width:400,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,d)})})};var d=function(e,t){var n=(0,r.useBackend)(t),i=n.act,d=n.data;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Occupant",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",children:d.occupant.name||"No Occupant"}),!!d.hasOccupant&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:d.occupant.statstate,children:d.occupant.stat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",color:d.occupant.temperaturestatus,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.occupant.bodyTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.occupant.health/d.occupant.maxHealth,color:d.occupant.health>0?"good":"average",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.occupant.health})})}),l.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.occupant[e.type]/100,children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.occupant[e.type]})})},e.id)}))],0)]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Cell",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:d.isOperating?"power-off":"times",disabled:d.isOpen,onClick:function(){return i("power")},color:d.isOperating&&"green",children:d.isOperating?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Temperature",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.cellTemperature})," K"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:[(0,o.createComponentVNode)(2,a.Button,{icon:d.isOpen?"unlock":"lock",onClick:function(){return i("door")},content:d.isOpen?"Open":"Closed"}),(0,o.createComponentVNode)(2,a.Button,{icon:d.autoEject?"sign-out-alt":"sign-in-alt",onClick:function(){return i("autoeject")},content:d.autoEject?"Auto":"Manual"})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Beaker",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!d.isBeakerLoaded,onClick:function(){return i("ejectbeaker")},content:"Eject"}),children:(0,o.createComponentVNode)(2,c.BeakerContents,{beakerLoaded:d.isBeakerLoaded,beakerContents:d.beakerContents})})],4)}},17785:function(e,t,n){"use strict";t.__esModule=!0,t.DecalPainter=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.DecalPainter=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.decal_list||[],u=l.color_list||[],s=l.dir_list||[];return(0,o.createComponentVNode)(2,c.Window,{width:500,height:400,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Decal Type",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.name,selected:e.decal===l.decal_style,onClick:function(){return i("select decal",{decals:e.decal})}},e.decal)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Color",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:"red"===e.colors?"Red":"white"===e.colors?"White":"Yellow",selected:e.colors===l.decal_color,onClick:function(){return i("select color",{colors:e.colors})}},e.colors)}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Decal Direction",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:1===e.dirs?"North":2===e.dirs?"South":4===e.dirs?"East":"West",selected:e.dirs===l.decal_direction,onClick:function(){return i("selected direction",{dirs:e.dirs})}},e.dirs)}))})]})})}},95877:function(e,t,n){"use strict";t.__esModule=!0,t.DisposalUnit=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.DisposalUnit=function(e,t){var n,i,l=(0,r.useBackend)(t),d=l.act,u=l.data;return u.full_pressure?(n="good",i="Ready"):u.panel_open?(n="bad",i="Power Disabled"):u.pressure_charging?(n="average",i="Pressurizing"):(n="bad",i="Off"),(0,o.createComponentVNode)(2,c.Window,{width:300,height:180,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:n,children:i}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.per,color:"good"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Handle",children:(0,o.createComponentVNode)(2,a.Button,{icon:u.flush?"toggle-on":"toggle-off",disabled:u.isai||u.panel_open,content:u.flush?"Disengage":"Engage",onClick:function(){return d(u.flush?"handle-0":"handle-1")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Eject",children:(0,o.createComponentVNode)(2,a.Button,{icon:"sign-out-alt",disabled:u.isai,content:"Eject Contents",onClick:function(){return d("eject")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",disabled:u.panel_open,selected:u.pressure_charging,onClick:function(){return d(u.pressure_charging?"pump-0":"pump-1")}})})]})})})})}},43928:function(e,t,n){"use strict";t.__esModule=!0,t.DnaConsoleCommands=t.DnaConsole=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(34380),i=n(2497),l=n(5908),d=n(71494),u=n(74814),s=n(85952);var m=["A","T","C","G"],p={A:"green",T:"green",G:"blue",C:"blue",X:"grey"},C="storage",h="sequencer",N="enzymes",V="console",b="disk",f="injector",g="mutations",v="chromosomes",k="mutations",x="diskenzymes",B={1:"good",2:"bad",4:"average"},_=function(e,t){return e.Alias===t.Alias&&e.AppliedChromo===t.AppliedChromo};t.DnaConsole=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=(n.act,r.isPulsingRads),c=r.radPulseSeconds,i=r.view.consoleMode;return(0,o.createComponentVNode)(2,s.Window,{title:"DNA Console",width:539,height:710,resizable:!0,children:[!!a&&(0,o.createComponentVNode)(2,u.Dimmer,{fontSize:"14px",textAlign:"center",children:[(0,o.createComponentVNode)(2,u.Icon,{mr:1,name:"spinner",spin:!0}),"Radiation pulse in progress...",(0,o.createComponentVNode)(2,u.Box,{mt:1}),c,"s"]}),(0,o.createComponentVNode)(2,s.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,w),(0,o.createComponentVNode)(2,I),i===C&&(0,o.createComponentVNode)(2,A),i===h&&(0,o.createComponentVNode)(2,D),i===N&&(0,o.createComponentVNode)(2,O)]})]})};var w=function(e,t){return(0,o.createComponentVNode)(2,u.Section,{title:"DNA Scanner",buttons:(0,o.createComponentVNode)(2,L),children:(0,o.createComponentVNode)(2,S)})},L=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.hasDelayedAction,i=r.isPulsingRads,l=r.isScannerConnected,s=r.isScrambleReady,m=r.isViableSubject,p=r.scannerLocked,C=r.scannerOpen,h=r.scrambleSeconds;return l?(0,o.createFragment)([!!c&&(0,o.createComponentVNode)(2,u.Button,{content:"Cancel Delayed Action",onClick:function(){return a("cancel_delay")}}),!!m&&(0,o.createComponentVNode)(2,u.Button,{disabled:!s||i,onClick:function(){return a("scramble_dna")},children:["Scramble DNA",!s&&" ("+h+"s)"]}),(0,o.createComponentVNode)(2,u.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,u.Button,{icon:p?"lock":"lock-open",color:p&&"bad",disabled:C,content:p?"Locked":"Unlocked",onClick:function(){return a("toggle_lock")}}),(0,o.createComponentVNode)(2,u.Button,{disabled:p,content:C?"Close":"Open",onClick:function(){return a("toggle_door")}})],0):(0,o.createComponentVNode)(2,u.Button,{content:"Connect Scanner",onClick:function(){return a("connect_scanner")}})},y=function(e,t){var n=e.status;return 0===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"good",children:"Conscious"}):2===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"average",children:"Unconscious"}):1===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"average",children:"Critical"}):3===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"bad",children:"Dead"}):4===n?(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:"bad",children:"Transforming"}):(0,o.createComponentVNode)(2,u.Box,{inline:!0,children:"Unknown"})},S=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=(n.act,r.subjectName),c=r.isScannerConnected,i=r.isViableSubject,l=r.subjectHealth,s=r.subjectRads,m=r.subjectStatus;return c?i?(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Status",children:[a,(0,o.createComponentVNode)(2,u.Icon,{mx:1,color:"label",name:"long-arrow-alt-right"}),(0,o.createComponentVNode)(2,y,{status:m})]}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,u.ProgressBar,{value:l,minValue:0,maxValue:100,ranges:{olive:[101,Infinity],good:[70,101],average:[30,70],bad:[-Infinity,30]},children:[l,"%"]})}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Radiation",children:(0,o.createComponentVNode)(2,u.ProgressBar,{value:s,minValue:0,maxValue:100,ranges:{bad:[71,Infinity],average:[30,71],good:[0,30],olive:[-Infinity,0]},children:[s,"%"]})})]}):(0,o.createComponentVNode)(2,u.Box,{color:"average",children:"No viable subject found in DNA Scanner."}):(0,o.createComponentVNode)(2,u.Box,{color:"bad",children:"DNA Scanner is not connected."})},I=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.hasDisk,i=r.isInjectorReady,l=r.injectorSeconds,s=r.view.consoleMode;return(0,o.createComponentVNode)(2,u.Section,{title:"DNA Console",buttons:!i&&(0,o.createComponentVNode)(2,u.Box,{lineHeight:"20px",color:"label",children:["Injector on cooldown (",l,"s)"]}),children:(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Mode",children:[(0,o.createComponentVNode)(2,u.Button,{content:"Storage",selected:s===C,onClick:function(){return a("set_view",{consoleMode:C})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Sequencer",disabled:!r.isViableSubject,selected:s===h,onClick:function(){return a("set_view",{consoleMode:h})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Enzymes",selected:s===N,onClick:function(){return a("set_view",{consoleMode:N})}})]}),!!c&&(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Disk",children:(0,o.createComponentVNode)(2,u.Button,{icon:"eject",content:"Eject",onClick:function(){a("eject_disk"),a("set_view",{storageMode:V})}})})]})})};t.DnaConsoleCommands=I;var T=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.hasDisk,i=r.view,l=i.storageMode,s=i.storageConsSubMode,m=i.storageDiskSubMode;return(0,o.createFragment)([l===V&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Button,{selected:s===g,content:"Mutations",onClick:function(){return a("set_view",{storageConsSubMode:g})}}),(0,o.createComponentVNode)(2,u.Button,{selected:s===v,content:"Chromosomes",onClick:function(){return a("set_view",{storageConsSubMode:v})}})],4),l===b&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Button,{selected:m===g,content:"Mutations",onClick:function(){return a("set_view",{storageDiskSubMode:g})}}),(0,o.createComponentVNode)(2,u.Button,{selected:m===x,content:"Enzymes",onClick:function(){return a("set_view",{storageDiskSubMode:x})}})],4),(0,o.createComponentVNode)(2,u.Box,{inline:!0,mr:1}),(0,o.createComponentVNode)(2,u.Button,{content:"Console",selected:l===V,onClick:function(){return a("set_view",{storageMode:V,storageConsSubMode:g})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Disk",disabled:!c,selected:l===b,onClick:function(){return a("set_view",{storageMode:b,storageDiskSubMode:k})}}),(0,o.createComponentVNode)(2,u.Button,{content:"Adv. Injector",selected:l===f,onClick:function(){return a("set_view",{storageMode:f})}})],0)},A=function(e,t){var n=(0,d.useBackend)(t),r=n.data,a=n.act,c=r.view,i=c.storageMode,l=c.storageConsSubMode,s=c.storageDiskSubMode,m=r.diskMakeupBuffer,p=r.diskHasMakeup,C=r.storage[i];return(0,o.createComponentVNode)(2,u.Section,{title:"Storage",buttons:(0,o.createComponentVNode)(2,T),children:[i===V&&l===g&&(0,o.createComponentVNode)(2,P,{mutations:C}),i===V&&l===v&&(0,o.createComponentVNode)(2,R),i===b&&s===k&&(0,o.createComponentVNode)(2,P,{mutations:C}),i===b&&s===x&&(0,o.createFragment)([(0,o.createComponentVNode)(2,U,{makeup:m}),(0,o.createComponentVNode)(2,u.Button,{icon:"times",color:"red",disabled:!p,content:"Delete",onClick:function(){return a("del_makeup_disk")}})],4),i===f&&(0,o.createComponentVNode)(2,K)]})},P=function(e,t){var n=e.customMode,r=void 0===n?"":n,a=(0,d.useBackend)(t),c=a.data,l=a.act,s=e.mutations||[],m=c.view.storageMode+r,p=c.view["storage"+m+"MutationRef"],C=s.find((function(e){return e.ByondRef===p}));return!C&&s.length>0&&(C=s[0],p=C.ByondRef),(0,o.createComponentVNode)(2,u.Flex,{children:[(0,o.createComponentVNode)(2,u.Flex.Item,{width:"140px",children:(0,o.createComponentVNode)(2,u.Section,{title:(0,i.capitalize)(c.view.storageMode)+" Storage",level:2,children:s.map((function(e){return(0,o.createComponentVNode)(2,u.Button,{fluid:!0,ellipsis:!0,color:"transparent",selected:e.ByondRef===p,content:e.Name,onClick:function(){var t;return l("set_view",((t={})["storage"+m+"MutationRef"]=e.ByondRef,t))}},e.ByondRef)}))})}),(0,o.createComponentVNode)(2,u.Flex.Item,{children:(0,o.createComponentVNode)(2,u.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,u.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,u.Section,{title:"Mutation Info",level:2,children:(0,o.createComponentVNode)(2,M,{mutation:C})})})]})},R=function(e,t){var n,a=(0,d.useBackend)(t),c=a.data,i=a.act,l=null!=(n=c.chromoStorage)?n:[],s=(0,r.uniqBy)((function(e){return e.Name}))(l),m=c.view.storageChromoName,p=l.find((function(e){return e.Name===m}));return(0,o.createComponentVNode)(2,u.Flex,{children:[(0,o.createComponentVNode)(2,u.Flex.Item,{width:"140px",children:(0,o.createComponentVNode)(2,u.Section,{title:"Console Storage",level:2,children:s.map((function(e){return(0,o.createComponentVNode)(2,u.Button,{fluid:!0,ellipsis:!0,color:"transparent",selected:e.Name===m,content:e.Name,onClick:function(){return i("set_view",{storageChromoName:e.Name})}},e.Index)}))})}),(0,o.createComponentVNode)(2,u.Flex.Item,{children:(0,o.createComponentVNode)(2,u.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,u.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,u.Section,{title:"Chromosome Info",level:2,children:!p&&(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"Nothing to show."})||(0,o.createFragment)([(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Name",children:p.Name}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Description",children:p.Description}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Amount",children:l.filter((function(e){return e.Name===p.Name})).length})]}),(0,o.createComponentVNode)(2,u.Button,{mt:2,icon:"eject",content:"Eject Chromosome",onClick:function(){return i("eject_chromo",{chromo:p.Name})}})],4)})})]})},M=function(e,t){var n,c,i,l=e.mutation,s=(0,d.useBackend)(t),m=s.data,p=s.act,C=m.diskCapacity,h=m.diskReadOnly,N=m.hasDisk,V=m.isInjectorReady,b=null!=(n=m.storage.disk)?n:[],f=null!=(c=m.storage.console)?c:[],g=null!=(i=m.storage.injector)?i:[];if(!l)return(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"Nothing to show."});if("occupant"===l.Source&&!l.Discovered)return(0,o.createComponentVNode)(2,u.LabeledList,{children:(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Name",children:l.Alias})});var v=f.find((function(e){return _(e,l)})),k=b.find((function(e){return _(e,l)})),x=(0,a.flow)([(0,r.uniqBy)((function(e){return e.Name})),(0,r.filter)((function(e){return e.Name!==l.Name}))])([].concat(b,f));return(0,o.createFragment)([(0,o.createComponentVNode)(2,u.LabeledList,{children:[(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Name",children:(0,o.createComponentVNode)(2,u.Box,{inline:!0,color:B[l.Quality],children:l.Name})}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Description",children:l.Description}),(0,o.createComponentVNode)(2,u.LabeledList.Item,{label:"Instability",children:l.Instability})]}),(0,o.createComponentVNode)(2,u.Divider),(0,o.createComponentVNode)(2,u.Box,{children:["disk"===l.Source&&(0,o.createComponentVNode)(2,Q,{disabled:!N||C<=0||h,mutations:x,source:l}),"console"===l.Source&&(0,o.createComponentVNode)(2,Q,{mutations:x,source:l}),["occupant","disk","console"].includes(l.Source)&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Dropdown,{width:"240px",options:g.map((function(e){return e.name})),disabled:0===g.length||!l.Active,selected:"Add to advanced injector",onSelected:function(e){return p("add_advinj_mut",{mutref:l.ByondRef,advinj:e,source:l.Source})}}),(0,o.createComponentVNode)(2,u.Button,{icon:"syringe",disabled:!V||!l.Active,content:"Print Activator",onClick:function(){return p("print_injector",{mutref:l.ByondRef,is_activator:1,source:l.Source})}}),(0,o.createComponentVNode)(2,u.Button,{icon:"syringe",disabled:!V||!l.Active,content:"Print Mutator",onClick:function(){return p("print_injector",{mutref:l.ByondRef,is_activator:0,source:l.Source})}})],4)]}),["disk","occupant"].includes(l.Source)&&(0,o.createComponentVNode)(2,u.Button,{icon:"save",disabled:v||!l.Active,content:"Save to Console",onClick:function(){return p("save_console",{mutref:l.ByondRef,source:l.Source})}}),["console","occupant"].includes(l.Source)&&(0,o.createComponentVNode)(2,u.Button,{icon:"save",disabled:k||!N||C<=0||h||!l.Active,content:"Save to Disk",onClick:function(){return p("save_disk",{mutref:l.ByondRef,source:l.Source})}}),["console","disk","injector"].includes(l.Source)&&(0,o.createComponentVNode)(2,u.Button,{icon:"times",color:"red",content:"Delete from "+l.Source,onClick:function(){return p("delete_"+l.Source+"_mut",{mutref:l.ByondRef})}}),(2===l.Class||!!l.Scrambled&&"occupant"===l.Source)&&(0,o.createComponentVNode)(2,u.Button,{content:"Nullify",onClick:function(){return p("nullify",{mutref:l.ByondRef})}}),(0,o.createComponentVNode)(2,u.Divider),(0,o.createComponentVNode)(2,F,{disabled:"occupant"!==l.Source,mutation:l})],0)},F=function(e,t){var n=e.mutation,r=e.disabled,a=(0,d.useBackend)(t),c=(a.data,a.act);return 0===n.CanChromo?(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"No compatible chromosomes"}):1===n.CanChromo?r?(0,o.createComponentVNode)(2,u.Box,{color:"label",children:"No chromosome applied."}):(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Dropdown,{width:"240px",options:n.ValidStoredChromos,disabled:0===n.ValidStoredChromos.length,selected:0===n.ValidStoredChromos.length?"No Suitable Chromosomes":"Select a chromosome",onSelected:function(e){return c("apply_chromo",{chromo:e,mutref:n.ByondRef})}}),(0,o.createComponentVNode)(2,u.Box,{color:"label",mt:1,children:["Compatible with: ",n.ValidChromos]})],4):2===n.CanChromo?(0,o.createComponentVNode)(2,u.Box,{color:"label",children:["Applied chromosome: ",n.AppliedChromo]}):null},D=function(e,t){var n,r,a=(0,d.useBackend)(t),c=a.data,i=a.act,s=null!=(n=null==(r=c.storage)?void 0:r.occupant)?n:[],m=c.isJokerReady,p=c.isMonkey,C=c.jokerSeconds,h=c.subjectStatus,N=c.view,V=N.sequencerMutation,b=N.jokerActive,f=s.find((function(e){return e.Alias===V}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Flex,{spacing:1,mb:1,children:[(0,o.createComponentVNode)(2,u.Flex.Item,{width:s.length<=8?"154px":"174px",children:(0,o.createComponentVNode)(2,u.Section,{title:"Sequences",height:"214px",overflowY:s.length>8&&"scroll",children:s.map((function(e){return(0,o.createComponentVNode)(2,j,{url:(0,l.resolveAsset)(e.Image),selected:e.Alias===V,onClick:function(){i("set_view",{sequencerMutation:e.Alias}),i("check_discovery",{alias:e.Alias})}},e.Alias)}))})}),(0,o.createComponentVNode)(2,u.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,u.Section,{title:"Sequence Info",minHeight:"100%",children:(0,o.createComponentVNode)(2,M,{mutation:f})})})]}),3===h&&(0,o.createComponentVNode)(2,u.Section,{color:"bad",children:"Genetic sequence corrupted. Subject diagnostic report: DECEASED."})||p&&"Monkified"!==(null==f?void 0:f.Name)&&(0,o.createComponentVNode)(2,u.Section,{color:"bad",children:"Genetic sequence corrupted. Subject diagnostic report: MONKEY."})||4===h&&(0,o.createComponentVNode)(2,u.Section,{color:"bad",children:"Genetic sequence corrupted. Subject diagnostic report: TRANSFORMING."})||(0,o.createComponentVNode)(2,u.Section,{title:"Genome Sequencer\u2122",buttons:!m&&(0,o.createComponentVNode)(2,u.Box,{lineHeight:"20px",color:"label",children:["Joker on cooldown (",C,"s)"]})||b&&(0,o.createFragment)([(0,o.createComponentVNode)(2,u.Box,{mr:1,inline:!0,color:"label",children:"Click on a gene to reveal it."}),(0,o.createComponentVNode)(2,u.Button,{content:"Cancel Joker",onClick:function(){return i("set_view",{jokerActive:""})}})],4)||(0,o.createComponentVNode)(2,u.Button,{icon:"crown",color:"purple",content:"Use Joker",onClick:function(){return i("set_view",{jokerActive:"1"})}}),children:(0,o.createComponentVNode)(2,E,{mutation:f})})],0)},j=function(e,t){var n,r=e.url,a=e.selected,c=e.onClick;return a&&(n="2px solid #22aa00"),(0,o.createComponentVNode)(2,u.Box,{as:"img",src:r,style:{width:"64px",margin:"2px","margin-left":"4px",outline:n},onClick:c})},W=function(e,t){var n=e.gene,r=e.onChange,a=e.disabled,c=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,["gene","onChange","disabled"]),i=m.length,l=m.indexOf(n),d=a&&p.X||p[n];return(0,o.normalizeProps)((0,o.createComponentVNode)(2,u.Button,Object.assign({},c,{color:d,onClick:function(e){if(e.preventDefault(),r)if(-1!==l){var t=m[(l+1)%i];r(e,t)}else r(e,m[0])},oncontextmenu:function(e){if(e.preventDefault(),r)if(-1!==l){var t=m[(l-1+i)%i];r(e,t)}else r(e,m[i-1])},children:n})))},E=function(e,t){var n=e.mutation,r=(0,d.useBackend)(t),a=r.data,i=r.act,l=a.view.jokerActive;if(!n)return(0,o.createComponentVNode)(2,u.Box,{color:"average",children:"No genome selected for sequencing."});if(n.Scrambled)return(0,o.createComponentVNode)(2,u.Box,{color:"average",children:"Sequence unreadable due to unpredictable mutation."});for(var s=n.Sequence,m=n.DefaultSeq,p=[],C=function(e){var t=s.charAt(e),r=(0,o.createComponentVNode)(2,W,{width:"22px",textAlign:"center",disabled:!!n.Scrambled||1!==n.Class,className:"X"===(null==m?void 0:m.charAt(e))&&!n.Active&&(0,c.classes)(["outline-solid","outline-color-orange"]),gene:t,onChange:function(t,o){if(!t.ctrlKey)return l?(i("pulse_gene",{pos:e+1,gene:"J",alias:n.Alias}),void i("set_view",{jokerActive:""})):void i("pulse_gene",{pos:e+1,gene:o,alias:n.Alias});i("pulse_gene",{pos:e+1,gene:"X",alias:n.Alias})}});p.push(r)},h=0;h=3){var r=(0,o.createComponentVNode)(2,u.Box,{inline:!0,width:"22px",mx:"1px",children:s});l.push(r),s=[]}},p=0;p=i,onCommit:function(e,t){return a("new_adv_inj",{name:t})}})})]})},Q=function(e,t){var n=e.mutations,r=void 0===n?[]:n,a=e.source,c=(0,d.useBackend)(t),i=c.act;c.data;return(0,o.createComponentVNode)(2,u.Dropdown,{width:"240px",options:r.map((function(e){return e.Name})),disabled:0===r.length,selected:"Combine mutations",onSelected:function(e){return i("combine_"+a.Source,{firstref:(t=e,null==(n=r.find((function(e){return e.Name===t})))?void 0:n.ByondRef),secondref:a.ByondRef});var t,n}},a.ByondRef)}},89817:function(e,t,n){"use strict";t.__esModule=!0,t.DnaVault=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.DnaVault=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.completed,u=l.used,s=l.choiceA,m=l.choiceB,p=l.dna,C=l.dna_max,h=l.plants,N=l.plants_max,V=l.animals,b=l.animals_max;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:400,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"DNA Vault Database",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Human DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:p/C,children:p+" / "+C+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Plant DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:h/N,children:h+" / "+N+" Samples"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Animal DNA",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:V/V,children:V+" / "+b+" Samples"})})]})}),!(!d||u)&&(0,o.createComponentVNode)(2,a.Section,{title:"Personal Gene Therapy",children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",mb:1,children:"Applicable Gene Therapy Treatments"}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:s,textAlign:"center",onClick:function(){return i("gene",{choice:s})}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:m,textAlign:"center",onClick:function(){return i("gene",{choice:m})}})})]})]})]})})}},41284:function(e,t,n){"use strict";t.__esModule=!0,t.EightBallVote=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(2497),i=n(85952);t.EightBallVote=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data.shaking);return(0,o.createComponentVNode)(2,i.Window,{width:400,height:600,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:!c&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No question is currently being asked."})||(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.question,u=l.answers,s=void 0===u?[]:u;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"16px",m:1,children:['"',d,'"']}),(0,o.createComponentVNode)(2,a.Grid,{children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:(0,c.toTitleCase)(e.answer),selected:e.selected,fontSize:"16px",lineHeight:"24px",textAlign:"center",mb:1,onClick:function(){return i("vote",{answer:e.answer})}}),(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"30px",children:e.amount})]},e.answer)}))})]})}},31342:function(e,t,n){"use strict";t.__esModule=!0,t.Electrolyzer=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Electrolyzer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Power",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Cell",disabled:!l.hasPowercell||!l.open,onClick:function(){return i("eject")}}),(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,disabled:!l.hasPowercell,onClick:function(){return i("power")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell",color:!l.hasPowercell&&"bad",children:l.hasPowercell&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.powerLevel/100,content:l.powerLevel+"%",ranges:{good:[.6,Infinity],average:[.3,.6],bad:[-Infinity,.3]}})||"None"})})})})})}},53586:function(e,t,n){"use strict";t.__esModule=!0,t.Electropack=void 0;var o=n(39812),r=n(41860),a=n(71494),c=n(74814),i=n(85952);t.Electropack=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.power,s=d.code,m=d.frequency,p=d.minFrequency,C=d.maxFrequency;return(0,o.createComponentVNode)(2,i.Window,{width:260,height:137,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,c.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return l("power")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Frequency",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"freq"})}}),children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:p/10,maxValue:C/10,value:m/10,format:function(e){return(0,r.toFixed)(e,1)},width:"80px",onDrag:function(e,t){return l("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Code",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"code"})}}),children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:s,width:"80px",onDrag:function(e,t){return l("code",{code:t})}})})]})})})})}},47453:function(e,t,n){"use strict";t.__esModule=!0,t.EmergencyShuttleConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.EmergencyShuttleConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.timer_str,u=l.enabled,s=l.emagged,m=l.engines_started,p=l.authorizations_remaining,C=l.authorizations,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:350,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,fontSize:"40px",textAlign:"center",fontFamily:"monospace",children:d}),(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",fontSize:"16px",mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:"ENGINES:"}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:m?"good":"average",ml:1,children:m?"Online":"Idle"})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Early Launch Authorization",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Repeal All",color:"bad",disabled:!u,onClick:function(){return i("abort")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"exclamation-triangle",color:"good",content:"AUTHORIZE",disabled:!u,onClick:function(){return i("authorize")}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"minus",content:"REPEAL",disabled:!u,onClick:function(){return i("repeal")}})})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Authorizations",level:3,minHeight:"150px",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:s?"bad":"good",children:s?"ERROR":"Remaining: "+p}),children:h.length>0?h.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{bold:!0,fontSize:"16px",className:"candystripe",children:[e.name," (",e.job,")"]},e.name)})):(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"16px",color:"average",children:"No Active Authorizations"})})]})]})})})}},11715:function(e,t,n){"use strict";t.__esModule=!0,t.EngravedMessage=void 0;var o=n(39812),r=n(2497),a=n(71494),c=n(74814),i=n(85952);t.EngravedMessage=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.admin_mode,s=d.creator_key,m=d.creator_name,p=d.has_liked,C=d.has_disliked,h=d.hidden_message,N=d.is_creator,V=d.num_likes,b=d.num_dislikes,f=d.realdate;return(0,o.createComponentVNode)(2,i.Window,{width:600,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Box,{bold:!0,textAlign:"center",fontSize:"20px",mb:2,children:(0,r.decodeHtmlEntities)(h)}),(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"arrow-up",content:" "+V,disabled:N,selected:p,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return l("like")}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"circle",disabled:N,selected:!C&&!p,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return l("neutral")}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,icon:"arrow-down",content:" "+b,disabled:N,selected:C,textAlign:"center",fontSize:"16px",lineHeight:"24px",onClick:function(){return l("dislike")}})})]})]}),(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Created On",children:f})})}),(0,o.createComponentVNode)(2,c.Section),!!u&&(0,o.createComponentVNode)(2,c.Section,{title:"Admin Panel",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Delete",color:"bad",onClick:function(){return l("delete")}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Creator Ckey",children:s}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Creator Character Name",children:m})]})})]})})}},8077:function(e,t,n){"use strict";t.__esModule=!0,t.ExosuitControlConsole=void 0;var o=n(39812),r=n(41860),a=n(71494),c=n(74814),i=n(85952);t.ExosuitControlConsole=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data.mechs,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,i.Window,{width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[0===u.length&&(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No exosuits detected"}),u.map((function(e){return(0,o.createComponentVNode)(2,c.Section,{title:e.name,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"envelope",content:"Send Message",disabled:!e.pilot,onClick:function(){return l("send_message",{tracker_ref:e.tracker_ref})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"wifi",content:e.emp_recharging?"Recharging...":"EMP Burst",color:"bad",disabled:e.emp_recharging,onClick:function(){return l("shock",{tracker_ref:e.tracker_ref})}})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,c.Box,{color:(e.integrity<=30?"bad":e.integrity<=70&&"average")||"good",children:[e.integrity,"%"]})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,c.Box,{color:(e.charge<=30?"bad":e.charge<=70&&"average")||"good",children:"number"==typeof e.charge&&e.charge+"%"||"Not Found"})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Airtank",children:"number"==typeof e.airtank&&(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:e.airtank,format:function(e){return(0,r.toFixed)(e,2)+" kPa"}})||"Not Equipped"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pilot",children:e.pilot||"None"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Location",children:e.location||"Unknown"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Active Equipment",children:e.active_equipment||"None"}),e.cargo_space>=0&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Used Cargo Space",children:(0,o.createComponentVNode)(2,c.Box,{color:(e.cargo_space<=30?"good":e.cargo_space<=70&&"average")||"bad",children:[e.cargo_space,"%"]})})]})},e.tracker_ref)}))]})})}},95481:function(e,t,n){"use strict";t.__esModule=!0,t.ExosuitFabricator=void 0;var o,r=n(39812),a=n(34380),c=n(64499),i=n(71494),l=n(58083),d=n(74814),u=n(85952),s=n(2497);function m(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return p(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=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.")}return(n=e[Symbol.iterator]()).next.bind(n)}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);nn?{color:2,deficit:e-n}:t>n?{color:1,deficit:e}:e+t>n?{color:1,deficit:e+t-n}:{color:0,deficit:0}},V=function(e,t,n){var o={textColor:0};return Object.keys(n.cost).forEach((function(r){o[r]=N(n.cost[r],t[r],e[r]),o[r].color>o.textColor&&(o.textColor=o[r].color)})),o};t.ExosuitFabricator=function(e,t){var n,o,a=(0,i.useBackend)(t),c=a.act,l=a.data,s=l.queue||[],m=(n=l.materials||[],o={},n.forEach((function(e){o[e.name]=e.amount})),o),p=function(e,t){var n={},o={},r={},a={};return t.forEach((function(t,c){a[c]=0,Object.keys(t.cost).forEach((function(i){n[i]=n[i]||0,r[i]=r[i]||0,o[i]=N(t.cost[i],n[i],e[i]),0!==o[i].color?a[c]1&&l=0&&m+"s"||"Dispensing..."})]})})})}}},1005:function(e,t,n){"use strict";t.__esModule=!0,t.ForbiddenLore=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(71494),i=n(74814),l=n(85952);t.ForbiddenLore=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=u.charges,m=(0,a.flow)([(0,r.sortBy)((function(e){return"Research"!==e.state}),(function(e){return"Side"===e.path}))])(u.to_know||[]);return(0,o.createComponentVNode)(2,l.Window,{width:500,height:900,resizable:!0,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{title:"Research Eldritch Knowledge",children:["Charges left : ",s,null!==m?m.map((function(e){return(0,o.createComponentVNode)(2,i.Section,{title:e.name,level:2,children:[(0,o.createComponentVNode)(2,i.Box,{bold:!0,my:1,children:[e.path," path"]}),(0,o.createComponentVNode)(2,i.Box,{my:1,children:[(0,o.createComponentVNode)(2,i.Button,{content:e.state,disabled:e.disabled,onClick:function(){return d("research",{name:e.name,cost:e.cost})}})," ","Cost : ",e.cost]}),(0,o.createComponentVNode)(2,i.Box,{italic:!0,my:1,children:e.flavour}),(0,o.createComponentVNode)(2,i.Box,{my:1,children:e.desc})]},e.name)})):(0,o.createComponentVNode)(2,i.Box,{children:"No more knowledge can be found"})]})})})}},64831:function(e,t,n){"use strict";t.__esModule=!0,t.Gateway=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Gateway=function(){return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.gateway_present,d=void 0!==l&&l,u=i.gateway_status,s=void 0!==u&&u,m=i.current_target,p=void 0===m?null:m,C=i.destinations,h=void 0===C?[]:C;return d?p?(0,o.createComponentVNode)(2,a.Section,{title:p.name,children:[(0,o.createComponentVNode)(2,a.Icon,{name:"rainbow",size:4,color:"green"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return c("deactivate")},children:"Deactivate"})]}):h.length?(0,o.createFragment)([!s&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Gateway Unpowered"}),h.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:e.available&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return c("activate",{destination:e.ref})},children:"Activate"})||(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{m:1,textColor:"bad",children:e.reason}),!!e.timeout&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:e.timeout,children:"Calibrating..."})],0)},e.ref)}))],0):(0,o.createComponentVNode)(2,a.Section,{children:"No gateway nodes detected."}):(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No linked gateway"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,onClick:function(){return c("linkup")},children:"Linkup"})]})}},8098:function(e,t,n){"use strict";t.__esModule=!0,t.GhostPoolProtection=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.GhostPoolProtection=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.events_or_midrounds,u=l.spawners,s=l.station_sentience,m=l.silicons,p=l.minigames;return(0,o.createComponentVNode)(2,c.Window,{title:"Ghost Pool Protection",width:400,height:270,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Flex,{grow:1,height:"100%",children:(0,o.createComponentVNode)(2,a.Section,{title:"Options",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{color:"good",icon:"plus-circle",content:"Enable Everything",onClick:function(){return i("all_roles")}}),(0,o.createComponentVNode)(2,a.Button,{color:"bad",icon:"minus-circle",content:"Disable Everything",onClick:function(){return i("no_roles")}})],4),children:[(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:"For people creating a sneaky event: If you toggle Station Created Sentience, people may catch on that admins have disabled roles for your event..."}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:d?"good":"bad",icon:"meteor",content:"Events and Midround Rulesets",onClick:function(){return i("toggle_events_or_midrounds")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:u?"good":"bad",icon:"pastafarianism",content:"Ghost Role Spawners",onClick:function(){return i("toggle_spawners")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:s?"good":"bad",icon:"user-astronaut",content:"Station Created Sentience",onClick:function(){return i("toggle_station_sentience")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:m?"good":"bad",icon:"robot",content:"Silicons",onClick:function(){return i("toggle_silicons")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:p?"good":"bad",icon:"gamepad",content:"Minigames",onClick:function(){return i("toggle_minigames")}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",color:"orange",icon:"check",content:"Apply Changes",onClick:function(){return i("apply_settings")}})})]})})})})}},25313:function(e,t,n){"use strict";t.__esModule=!0,t.GlandDispenser=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.GlandDispenser=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.glands,d=void 0===l?[]:l;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:338,theme:"abductor",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{width:"60px",height:"60px",m:.75,textAlign:"center",lineHeight:"55px",icon:"eject",backgroundColor:e.color,content:e.amount||"0",disabled:!e.amount,onClick:function(){return i("dispense",{gland_id:e.id})}},e.id)}))})})})}},25230:function(e,t,n){"use strict";t.__esModule=!0,t.Gps=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(41860),i=n(51961),l=n(71494),d=n(74814),u=n(85952),s=function(e){return(0,r.map)(parseFloat)(e.split(", "))};t.Gps=function(e,t){var n=(0,l.useBackend)(t),m=n.act,p=n.data,C=p.currentArea,h=p.currentCoords,N=p.globalmode,V=p.power,b=p.tag,f=p.updating,g=(0,a.flow)([(0,r.map)((function(e,t){var n=e.dist&&Math.round((0,i.vecLength)((0,i.vecSubtract)(s(h),s(e.coords))));return Object.assign({},e,{dist:n,index:t})})),(0,r.sortBy)((function(e){return e.dist===undefined}),(function(e){return e.entrytag}))])(p.signals||[]);return(0,o.createComponentVNode)(2,u.Window,{title:"Global Positioning System",width:470,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,u.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,d.Section,{title:"Control",buttons:(0,o.createComponentVNode)(2,d.Button,{icon:"power-off",content:V?"On":"Off",selected:V,onClick:function(){return m("power")}}),children:(0,o.createComponentVNode)(2,d.LabeledList,{children:[(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Tag",children:(0,o.createComponentVNode)(2,d.Button,{icon:"pencil-alt",content:b,onClick:function(){return m("rename")}})}),(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,d.Button,{icon:f?"unlock":"lock",content:f?"AUTO":"MANUAL",color:!f&&"bad",onClick:function(){return m("updating")}})}),(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Range",children:(0,o.createComponentVNode)(2,d.Button,{icon:"sync",content:N?"MAXIMUM":"LOCAL",selected:!N,onClick:function(){return m("globalmode")}})})]})}),!!V&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d.Section,{title:"Current Location",children:(0,o.createComponentVNode)(2,d.Box,{fontSize:"18px",children:[C," (",h,")"]})}),(0,o.createComponentVNode)(2,d.Section,{title:"Detected Signals",children:(0,o.createComponentVNode)(2,d.Table,{children:[(0,o.createComponentVNode)(2,d.Table.Row,{bold:!0,children:[(0,o.createComponentVNode)(2,d.Table.Cell,{content:"Name"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,content:"Direction"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,content:"Coordinates"})]}),g.map((function(e){return(0,o.createComponentVNode)(2,d.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,d.Table.Cell,{bold:!0,color:"label",children:e.entrytag}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,opacity:e.dist!==undefined&&(0,c.clamp)(1.2/Math.log(Math.E+e.dist/20),.4,1),children:[e.degrees!==undefined&&(0,o.createComponentVNode)(2,d.Icon,{mr:1,size:1.2,name:"arrow-up",rotation:e.degrees}),e.dist!==undefined&&e.dist+"m"]}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,children:e.coords})]},e.entrytag+e.coords+e.index)}))]})})],4)]})})}},4475:function(e,t,n){"use strict";t.__esModule=!0,t.GravityGenerator=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.GravityGenerator=function(e,t){var n=(0,r.useBackend)(t),l=(n.act,n.data),d=l.charging_state,u=l.operational;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:155,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!u&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No data available"}),!!u&&0!==d&&(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:"WARNING - Radiation detected"}),!!u&&0===d&&(0,o.createComponentVNode)(2,a.NoticeBox,{success:!0,children:"No radiation detected"}),!!u&&(0,o.createComponentVNode)(2,i)]})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.breaker,d=i.charge_count,u=i.charging_state,s=i.on,m=i.operational;return(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:l?"power-off":"times",content:l?"On":"Off",selected:l,disabled:!m,onClick:function(){return c("gentoggle")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Gravity Charge",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d/100,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",children:[0===u&&(s&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Fully Charged"})||(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Not Charging"})),1===u&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Charging"}),2===u&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"Discharging"})]})]})})}},83366:function(e,t,n){"use strict";t.__esModule=!0,t.GulagItemReclaimer=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.GulagItemReclaimer=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.mobs,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,c.Window,{width:325,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[0===u.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No stored items"}),u.length>0&&(0,o.createComponentVNode)(2,a.Section,{title:"Stored Items",children:(0,o.createComponentVNode)(2,a.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:(0,o.createComponentVNode)(2,a.Button,{content:"Retrieve Items",disabled:!l.can_reclaim,onClick:function(){return i("release_items",{mobref:e.mob})}})})]},e.mob)}))})})]})})}},72263:function(e,t,n){"use strict";t.__esModule=!0,t.GulagTeleporterConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.GulagTeleporterConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.teleporter,u=l.teleporter_lock,s=l.teleporter_state_open,m=l.teleporter_location,p=l.beacon,C=l.beacon_location,h=l.id,N=l.id_name,V=l.can_teleport,b=l.goal,f=void 0===b?0:b,g=l.prisoner,v=void 0===g?{}:g;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:295,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Teleporter Console",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:s?"Open":"Closed",disabled:u,selected:s,onClick:function(){return i("toggle_open")}}),(0,o.createComponentVNode)(2,a.Button,{icon:u?"lock":"unlock",content:u?"Locked":"Unlocked",selected:u,disabled:s,onClick:function(){return i("teleporter_lock")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Teleporter Unit",color:d?"good":"bad",buttons:!d&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return i("scan_teleporter")}}),children:d?m:"Not Connected"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Receiver Beacon",color:p?"good":"bad",buttons:!p&&(0,o.createComponentVNode)(2,a.Button,{content:"Reconnect",onClick:function(){return i("scan_beacon")}}),children:p?C:"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Prisoner Details",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Prisoner ID",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:h?N:"No ID",onClick:function(){return i("handle_id")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Point Goal",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:f,width:"48px",minValue:1,maxValue:1e3,onChange:function(e,t){return i("set_goal",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Occupant",children:v.name||"No Occupant"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Criminal Status",children:v.crimstat||"No Status"})]})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Process Prisoner",disabled:!V,textAlign:"center",color:"bad",onClick:function(){return i("teleport")}})]})})}},7908:function(e,t,n){"use strict";t.__esModule=!0,t.Holodeck=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Holodeck=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.can_toggle_safety,u=l.default_programs,s=void 0===u?[]:u,m=l.emag_programs,p=void 0===m?[]:m,C=l.emagged,h=l.program;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Default Programs",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:C?"unlock":"lock",content:"Safeties",color:"bad",disabled:!d,selected:!C,onClick:function(){return i("safety")}}),children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.split(" - ")[1],textAlign:"center",selected:e.type===h,onClick:function(){return i("load_program",{type:e.type})}},e.type)}))}),!!C&&(0,o.createComponentVNode)(2,a.Section,{title:"Dangerous Programs",children:p.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.name.split(" - ")[1],color:"bad",textAlign:"center",selected:e.type===h,onClick:function(){return i("load_program",{type:e.type})}},e.type)}))})]})})}},84283:function(e,t,n){"use strict";t.__esModule=!0,t.Holopad=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Holopad=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data.calling;return(0,o.createComponentVNode)(2,c.Window,{width:440,height:245,resizable:!0,children:[!!d&&(0,o.createComponentVNode)(2,a.Modal,{fontSize:"36px",fontFamily:"monospace",children:[(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,mt:2,children:(0,o.createComponentVNode)(2,a.Icon,{name:"phone-alt",rotation:25})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,children:"Dialing..."})]}),(0,o.createComponentVNode)(2,a.Box,{mt:2,textAlign:"center",fontSize:"24px",children:(0,o.createComponentVNode)(2,a.Button,{lineHeight:"40px",icon:"times",content:"Hang Up",color:"bad",onClick:function(){return l("hang_up")}})})]}),(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})]})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.on_network,d=i.on_cooldown,u=i.allowed,s=i.disk,m=i.disk_record,p=i.replay_mode,C=i.loop_mode,h=i.record_mode,N=i.holo_calls,V=void 0===N?[]:N;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Holopad",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"bell",content:d?"AI Presence Requested":"Request AI Presence",disabled:!l||d,onClick:function(){return c("AIrequest")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Communicator",children:(0,o.createComponentVNode)(2,a.Button,{icon:"phone-alt",content:u?"Connect To Holopad":"Call Holopad",disabled:!l,onClick:function(){return c("holocall",{headcall:u})}})}),V.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.connected?"Current Call":"Incoming Call",children:(0,o.createComponentVNode)(2,a.Button,{icon:e.connected?"phone-slash":"phone-alt",content:e.connected?"Disconnect call from "+e.caller:"Answer call from "+e.caller,color:e.connected?"bad":"good",disabled:!l,onClick:function(){return c(e.connected?"disconnectcall":"connectcall",{holopad:e.ref})}})},e.ref)}))]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holodisk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!s||p||h,onClick:function(){return c("disk_eject")}}),children:!s&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No holodisk"})||(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk Player",children:[(0,o.createComponentVNode)(2,a.Button,{icon:p?"pause":"play",content:p?"Stop":"Replay",selected:p,disabled:h||!m,onClick:function(){return c("replay_mode")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:C?"Looping":"Loop",selected:C,disabled:h||!m,onClick:function(){return c("loop_mode")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"exchange-alt",content:"Change Offset",disabled:!p,onClick:function(){return c("offset")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Recorder",children:[(0,o.createComponentVNode)(2,a.Button,{icon:h?"pause":"video",content:h?"End Recording":"Record",selected:h,disabled:m&&!h||p,onClick:function(){return c("record_mode")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:"Clear Recording",color:"bad",disabled:!m||p||h,onClick:function(){return c("record_clear")}})]})]})})],4)}},12708:function(e,t,n){"use strict";t.__esModule=!0,t.HypnoChair=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.HypnoChair=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:480,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Information",backgroundColor:"#450F44",children:"The Enhanced Interrogation Chamber is designed to induce a deep-rooted trance trigger into the subject. Once the procedure is complete, by using the implanted trigger phrase, the authorities are able to ensure immediate and complete obedience and truthfulness."}),(0,o.createComponentVNode)(2,a.Section,{title:"Occupant Information",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l.occupant.name?l.occupant.name:"No Occupant"}),!!l.occupied&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:0===l.occupant.stat?"good":1===l.occupant.stat?"average":"bad",children:0===l.occupant.stat?"Conscious":1===l.occupant.stat?"Unconcious":"Dead"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Operations",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.open?"unlock":"lock",color:l.open?"default":"red",content:l.open?"Open":"Closed",onClick:function(){return i("door")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Phrase",children:(0,o.createComponentVNode)(2,a.Input,{value:l.trigger,onChange:function(e,t){return i("set_phrase",{phrase:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Interrogate Occupant",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"code-branch",content:l.interrogating?"Interrupt Interrogation":"Begin Enhanced Interrogation",onClick:function(){return i("interrogate")}}),1===l.interrogating&&(0,o.createComponentVNode)(2,a.Icon,{name:"cog",color:"orange",spin:!0})]})]})})]})})}},1473:function(e,t,n){"use strict";t.__esModule=!0,t.ImplantChair=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ImplantChair=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:280,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Occupant Information",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l.occupant.name||"No Occupant"}),!!l.occupied&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:0===l.occupant.stat?"good":1===l.occupant.stat?"average":"bad",children:0===l.occupant.stat?"Conscious":1===l.occupant.stat?"Unconcious":"Dead"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Operations",textAlign:"center",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Door",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.open?"unlock":"lock",color:l.open?"default":"red",content:l.open?"Open":"Closed",onClick:function(){return i("door")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implant Occupant",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"code-branch",content:l.ready?l.special_name||"Implant":"Recharging",onClick:function(){return i("implant")}}),0===l.ready&&(0,o.createComponentVNode)(2,a.Icon,{name:"cog",color:"orange",spin:!0})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Implants Remaining",children:[l.ready_implants,1===l.replenishing&&(0,o.createComponentVNode)(2,a.Icon,{name:"sync",color:"red",spin:!0})]})]})})]})})}},87522:function(e,t,n){"use strict";t.__esModule=!0,t.InfraredEmitter=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.InfraredEmitter=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.on,u=l.visible;return(0,o.createComponentVNode)(2,c.Window,{width:225,height:110,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",content:d?"On":"Off",selected:d,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Visibility",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"eye":"eye-slash",content:u?"Visible":"Invisible",selected:u,onClick:function(){return i("visibility")}})})]})})})})}},28549:function(e,t,n){"use strict";t.__esModule=!0,t.Intellicard=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Intellicard=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.name,u=l.isDead,s=l.isBraindead,m=l.health,p=l.wireless,C=l.radio,h=l.wiping,N=l.laws,V=void 0===N?[]:N,b=u||s;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:d||"Empty Card",buttons:!!d&&(0,o.createComponentVNode)(2,a.Button,{icon:"trash",content:h?"Stop Wiping":"Wipe",disabled:u,onClick:function(){return i("wipe")}}),children:!!d&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:b?"bad":"good",children:b?"Offline":"Operation"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Software Integrity",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m,minValue:0,maxValue:100,ranges:{good:[70,Infinity],average:[50,70],bad:[-Infinity,50]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Settings",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"Wireless Activity",selected:p,onClick:function(){return i("wireless")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"microphone",content:"Subspace Radio",selected:C,onClick:function(){return i("radio")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laws",children:V.map((function(e){return(0,o.createComponentVNode)(2,a.BlockQuote,{children:e},e)}))})]})})})})}},68741:function(e,t,n){"use strict";t.__esModule=!0,t.Jukebox=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(71494),i=n(74814),l=n(85952);t.Jukebox=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=u.active,m=u.track_selected,p=u.track_length,C=u.track_beat,h=u.volume,N=(0,a.flow)([(0,r.sortBy)((function(e){return e.name}))])(u.songs||[]);return(0,o.createComponentVNode)(2,l.Window,{width:370,height:313,children:(0,o.createComponentVNode)(2,l.Window.Content,{children:[(0,o.createComponentVNode)(2,i.Section,{title:"Song Player",buttons:(0,o.createComponentVNode)(2,i.Button,{icon:s?"pause":"play",content:s?"Stop":"Play",selected:s,onClick:function(){return d("toggle")}}),children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Track Selected",children:(0,o.createComponentVNode)(2,i.Dropdown,{"overflow-y":"scroll",width:"240px",options:N.map((function(e){return e.name})),disabled:s,selected:m||"Select a Track",onSelected:function(e){return d("select_track",{track:e})}})}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Track Length",children:m?p:"No Track Selected"}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Track Beat",children:[m?C:"No Track Selected",1===C?" beat":" beats"]})]})}),(0,o.createComponentVNode)(2,i.Section,{title:"Machine Settings",children:(0,o.createComponentVNode)(2,i.LabeledControls,{justify:"center",children:(0,o.createComponentVNode)(2,i.LabeledControls.Item,{label:"Volume",children:(0,o.createComponentVNode)(2,i.Box,{position:"relative",children:[(0,o.createComponentVNode)(2,i.Knob,{size:3.2,color:h>=50?"red":"green",value:h,unit:"%",minValue:0,maxValue:100,step:1,stepPixelSize:1,disabled:s,onDrag:function(e,t){return d("set_volume",{volume:t})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,position:"absolute",top:"-2px",right:"-22px",color:"transparent",icon:"fast-backward",onClick:function(){return d("set_volume",{volume:"min"})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,position:"absolute",top:"16px",right:"-22px",color:"transparent",icon:"fast-forward",onClick:function(){return d("set_volume",{volume:"max"})}}),(0,o.createComponentVNode)(2,i.Button,{fluid:!0,position:"absolute",top:"34px",right:"-22px",color:"transparent",icon:"undo",onClick:function(){return d("set_volume",{volume:"reset"})}})]})})})})]})})}},36597:function(e,t,n){"use strict";t.__esModule=!0,t.KeycardAuth=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.KeycardAuth=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:125,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{children:1===l.waiting&&(0,o.createVNode)(1,"span",null,"Waiting for another device to confirm your request...",16)}),(0,o.createComponentVNode)(2,a.Box,{children:0===l.waiting&&(0,o.createFragment)([!!l.auth_required&&(0,o.createComponentVNode)(2,a.Button,{icon:"check-square",color:"red",textAlign:"center",lineHeight:"60px",fluid:!0,onClick:function(){return i("auth_swipe")},content:"Authorize"}),0===l.auth_required&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",fluid:!0,onClick:function(){return i("red_alert")},content:"Red Alert"}),(0,o.createComponentVNode)(2,a.Button,{icon:"wrench",fluid:!0,onClick:function(){return i("emergency_maint")},content:"Emergency Maintenance Access"}),(0,o.createComponentVNode)(2,a.Button,{icon:"meteor",fluid:!0,onClick:function(){return i("bsa_unlock")},content:"Bluespace Artillery Unlock"})],4)],0)})]})})})}},52169:function(e,t,n){"use strict";t.__esModule=!0,t.LaborClaimConsole=void 0;var o=n(39812),r=n(2497),a=n(71494),c=n(74814),i=n(85952);t.LaborClaimConsole=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.can_go_home,s=d.id_points,m=d.ores,p=d.status_info,C=d.unclaimed_points;return(0,o.createComponentVNode)(2,i.Window,{width:315,height:440,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:p}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Shuttle controls",children:(0,o.createComponentVNode)(2,c.Button,{content:"Move shuttle",disabled:!u,onClick:function(){return l("move_shuttle")}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Points",children:s}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Unclaimed points",buttons:(0,o.createComponentVNode)(2,c.Button,{content:"Claim points",disabled:!C,onClick:function(){return l("claim_points")}}),children:C})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Material values",children:(0,o.createComponentVNode)(2,c.Table,{children:[(0,o.createComponentVNode)(2,c.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Material"}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:"Value"})]}),m.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,r.toTitleCase)(e.ore)}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Box,{color:"label",inline:!0,children:e.value})})]},e.ore)}))]})})]})})}},83577:function(e,t,n){"use strict";t.__esModule=!0,t.LanguageMenu=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.LanguageMenu=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.admin_mode,u=l.is_living,s=l.omnitongue,m=l.languages,p=void 0===m?[]:m,C=l.unknown_languages,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.Window,{title:"Language Menu",width:700,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Known Languages",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:p.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createFragment)([!!u&&(0,o.createComponentVNode)(2,a.Button,{content:e.is_default?"Default Language":"Select as Default",disabled:!e.can_speak,selected:e.is_default,onClick:function(){return i("select_default",{language_name:e.name})}}),!!d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return i("grant_language",{language_name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Remove",onClick:function(){return i("remove_language",{language_name:e.name})}})],4)],0),children:[e.desc," ","Key: ,",e.key," ",e.can_understand?"Can understand.":"Cannot understand."," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})}),!!d&&(0,o.createComponentVNode)(2,a.Section,{title:"Unknown Languages",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Omnitongue "+(s?"Enabled":"Disabled"),selected:s,onClick:function(){return i("toggle_omnitongue")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:h.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Grant",onClick:function(){return i("grant_language",{language_name:e.name})}}),children:[e.desc," ","Key: ,",e.key," ",!!e.shadow&&"(gained from mob)"," ",e.can_speak?"Can speak.":"Cannot speak."]},e.name)}))})})]})})}},79381:function(e,t,n){"use strict";t.__esModule=!0,t.LaunchpadConsole=t.LaunchpadControl=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createComponentVNode)(2,a.Grid,{width:"1px",children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:-1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-left",mb:1,onClick:function(){return n("move_pos",{x:-1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:-1,y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",mb:1,onClick:function(){return n("move_pos",{y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"R",mb:1,onClick:function(){return n("set_pos",{x:0,y:0})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-down",mb:1,onClick:function(){return n("move_pos",{y:-1})}})]}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-up",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:1,y:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",mb:1,onClick:function(){return n("move_pos",{x:1})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"arrow-right",iconRotation:45,mb:1,onClick:function(){return n("move_pos",{x:1,y:-1})}})]})]})},l=function(e,t){var n=e.topLevel,c=(0,r.useBackend)(t),l=c.act,d=c.data,u=d.x,s=d.y,m=d.pad_name,p=d.range;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Input,{value:m,width:"170px",onChange:function(e,t){return l("rename",{name:t})}}),level:n?1:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Remove",color:"bad",onClick:function(){return l("remove")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Controls",level:2,children:(0,o.createComponentVNode)(2,i)})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Target",level:2,children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"26px",children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"X:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:u,minValue:-p,maxValue:p,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",stepPixelSize:10,onChange:function(e,t){return l("set_pos",{x:t})}})]}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:"Y:"}),(0,o.createComponentVNode)(2,a.NumberInput,{value:s,minValue:-p,maxValue:p,stepPixelSize:10,lineHeight:"30px",fontSize:"26px",width:"90px",height:"30px",onChange:function(e,t){return l("set_pos",{y:t})}})]})]})})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"upload",content:"Launch",textAlign:"center",onClick:function(){return l("launch")}})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Pull",textAlign:"center",onClick:function(){return l("pull")}})})]})]})};t.LaunchpadControl=l;t.LaunchpadConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,d=n.data,u=d.launchpads,s=void 0===u?[]:u,m=d.selected_id;return(0,o.createComponentVNode)(2,c.Window,{width:475,height:260,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:0===s.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Pads Connected"})||(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{minHeight:"190px",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"140px",minHeight:"190px",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,ellipsis:!0,content:e.name,selected:m===e.id,color:"transparent",onClick:function(){return i("select_pad",{id:e.id})}},e.name)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{minHeight:"100%",children:(0,o.createComponentVNode)(2,a.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,minHeight:"100%",children:m&&(0,o.createComponentVNode)(2,l)||(0,o.createComponentVNode)(2,a.Box,{children:"Please select a pad"})})]})})})})}},59955:function(e,t,n){"use strict";t.__esModule=!0,t.LaunchpadRemote=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=n(79381);t.LaunchpadRemote=function(e,t){var n=(0,r.useBackend)(t).data,l=n.has_pad,d=n.pad_closed;return(0,o.createComponentVNode)(2,c.Window,{title:"Briefcase Launchpad Remote",width:300,height:240,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Launchpad Connected"})||d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Launchpad Closed"})||(0,o.createComponentVNode)(2,i.LaunchpadControl,{topLevel:!0})})})}},71293:function(e,t,n){"use strict";t.__esModule=!0,t.LoadoutSelect=void 0;var o=n(39812),r=n(71494),a=n(85952),c=n(74814);t.LoadoutSelect=function(e,t){var n,i,l=(0,r.useBackend)(t),d=l.act,u=l.data;return(0,o.createComponentVNode)(2,a.Window,{width:500,height:450,resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Tabs,{style:{"vertical-align":"top",flex:"initial"},children:null!=(n=u.outfits)&&n.length?u.outfits.map((function(e){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:u.selected===e,onClick:function(){return d("loadout_select",{name:e})},children:e},e)})):"No loadout options."}),(0,o.createComponentVNode)(2,c.Flex,{direction:"row",width:"100%",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{width:"50%",height:"100%",style:{"vertical-align":"top"},children:(0,o.createComponentVNode)(2,c.Section,{title:"Contents",fill:!0,fitted:!0,children:null!=(i=u.items)&&i.length?u.items.map((function(e){return(0,o.createVNode)(1,"div",null,[(0,o.createVNode)(1,"div",e.icon,null,1,{style:{transform:"scale(1.5)","vertical-align":"middle",float:"left",clear:"left",height:"32px",width:"32px"}}),(0,o.createVNode)(1,"div",null,[e.name,(0,o.createTextVNode)(" "),e.quantity>1&&"x"+e.quantity,(0,o.createVNode)(1,"br")],0,{style:{display:"block","vertical-align":"middle",float:"left",width:"calc(100% - 32px)","line-height":"32px",margin:"auto"}})],4,{style:{margin:"10px 10px","text-align":"center"}},""+e.name)})):"No outfit selected."})}),(0,o.createComponentVNode)(2,c.Flex.Item,{height:"100%",width:"50%",style:{"vertical-align":"top"},children:(0,o.createComponentVNode)(2,c.Section,{title:"Preview",fill:!0,children:u.preview?(0,o.createVNode)(1,"div",null,[(0,o.createVNode)(1,"img",null,null,1,{src:"data:image/jpeg;base64,"+u.preview,style:{"image-rendering":"pixelated","-ms-interpolation-mode":"nearest-neighbor"},width:220,height:220}),(0,o.createVNode)(1,"br"),(0,o.createVNode)(1,"br"),(0,o.createVNode)(1,"div",null,[(0,o.createComponentVNode)(2,c.Button,{style:{display:"table-cell","text-align":"center"},content:"<<",onClick:function(){return d("loadout_preview_direction",{direction:-1})}}),(0,o.createComponentVNode)(2,c.Button,{style:{display:"table-cell","text-align":"center"},content:">>",onClick:function(){return d("loadout_preview_direction",{direction:1})}})],4,{style:{display:"table",width:"100%","text-align":"center"}}),(0,o.createComponentVNode)(2,c.Button,{style:{margin:"auto",display:"block","text-align":"center"},content:"Finished",onClick:function(){return d("loadout_confirm")}})],4,{style:{"text-align":"center"}}):"No outfit selected."})})]})]})})}},5568:function(e,t,n){"use strict";t.__esModule=!0,t.MafiaPanel=void 0;var o=n(39812),r=n(34380),a=(n(2497),n(71494)),c=n(74814),i=n(85952);t.MafiaPanel=function(e,t){var n=(0,a.useBackend)(t),d=n.act,u=n.data,s=u.lobbydata,m=u.players,p=u.actions,C=u.phase,h=u.roleinfo,N=u.role_theme,V=u.admin_controls,b=u.judgement_phase,f=u.timeleft,g=u.all_roles,v=h?30*m.length:7,k=s?s.filter((function(e){return"Ready"===e.status})):null;return(0,o.createComponentVNode)(2,i.Window,{title:"Mafia",theme:N,width:650,height:293+v,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:V,children:[!h&&(0,o.createComponentVNode)(2,c.Flex,{scrollable:!0,overflowY:"scroll",direction:"column",height:"100%",grow:1,children:(0,o.createComponentVNode)(2,c.Section,{title:"Lobby",mb:1,buttons:(0,o.createComponentVNode)(2,l,{phase:C,timeleft:f,admin_controls:V}),children:(0,o.createComponentVNode)(2,c.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,c.NoticeBox,{info:!0,children:["The lobby currently has ",k.length,"/12 valid players signed up."]}),(0,o.createComponentVNode)(2,c.Flex,{direction:"column",children:!!s&&s.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{basis:2,className:"Section__title candystripe",children:(0,o.createComponentVNode)(2,c.Flex,{height:2,align:"center",justify:"space-between",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{basis:0,children:e.name}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:"STATUS:"}),(0,o.createComponentVNode)(2,c.Flex.Item,{width:"30%",children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Box,{color:"Ready"===e.status?"green":"red",textAlign:"center",children:[e.status," ",e.spectating]})})})]})},e)}))})]})})}),!!h&&(0,o.createComponentVNode)(2,c.Section,{title:C,minHeight:"100px",maxHeight:"50px",buttons:(0,o.createComponentVNode)(2,c.Box,{children:[!!V&&(0,o.createComponentVNode)(2,c.Button,{color:"red",icon:"gavel",tooltipPosition:"bottom-left",tooltip:"Hello admin! If it is the admin controls you seek,\nplease notice the extra scrollbar you have that players\ndo not!"})," ",(0,o.createComponentVNode)(2,c.TimeDisplay,{auto:"down",value:f})]}),children:(0,o.createComponentVNode)(2,c.Flex,{justify:"space-between",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{align:"center",textAlign:"center",maxWidth:"500px",children:[(0,o.createVNode)(1,"b",null,[(0,o.createTextVNode)("You are the "),h.role],0),(0,o.createVNode)(1,"br"),(0,o.createVNode)(1,"b",null,h.desc,0)]}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:[(0,o.createComponentVNode)(2,c.Box,{className:(0,r.classes)(["mafia32x32",h.revealed_icon]),style:{transform:"scale(2) translate(0px, 10%)","vertical-align":"middle"}}),(0,o.createComponentVNode)(2,c.Box,{className:(0,r.classes)(["mafia32x32",h.hud_icon]),style:{transform:"scale(2) translate(-5px, -5px)","vertical-align":"middle"}})]})]})}),(0,o.createComponentVNode)(2,c.Flex,{children:!!p&&p.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return d("mf_action",{atype:e})},children:e})},e)}))}),!!h&&(0,o.createComponentVNode)(2,c.Section,{title:"Judgement",buttons:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"info",tooltipPosition:"left",tooltip:"When someone is on trial, you are in charge of their fate.\nInnocent winning means the person on trial can live to see\nanother day... and in losing they do not. You can go back\nto abstaining with the middle button if you reconsider."}),children:[(0,o.createComponentVNode)(2,c.Flex,{justify:"space-around",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"smile-beam",content:"INNOCENT!",color:"good",disabled:!b,onClick:function(){return d("vote_innocent")}}),!b&&(0,o.createComponentVNode)(2,c.Box,{children:"There is nobody on trial at the moment."}),!!b&&(0,o.createComponentVNode)(2,c.Box,{children:"It is now time to vote, vote the accused innocent or guilty!"}),(0,o.createComponentVNode)(2,c.Button,{icon:"angry",content:"GUILTY!",color:"bad",disabled:!b,onClick:function(){return d("vote_guilty")}})]}),(0,o.createComponentVNode)(2,c.Flex,{justify:"center",children:(0,o.createComponentVNode)(2,c.Button,{icon:"meh",content:"Abstain",color:"white",disabled:!b,onClick:function(){return d("vote_abstain")}})})]}),"No Game"!==C&&(0,o.createComponentVNode)(2,c.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:2,children:(0,o.createComponentVNode)(2,c.Section,{title:"Players",buttons:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"info",tooltip:"This is the list of all the players in\nthe game, during the day phase you may vote on them and,\ndepending on your role, select players\nat certain phases to use your ability."}),children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",children:!!m&&m.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{height:"30px",className:"Section__title candystripe",children:(0,o.createComponentVNode)(2,c.Flex,{height:"18px",justify:"space-between",align:"center",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{basis:16,children:[!!e.alive&&(0,o.createComponentVNode)(2,c.Box,{children:e.name}),!e.alive&&(0,o.createComponentVNode)(2,c.Box,{color:"red",children:e.name})]}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:!e.alive&&(0,o.createComponentVNode)(2,c.Box,{color:"red",children:"DEAD"})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:e.votes!==undefined&&!!e.alive&&(0,o.createFragment)([(0,o.createTextVNode)("Votes : "),e.votes,(0,o.createTextVNode)(" ")],0)}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:!!e.actions&&e.actions.map((function(t){return(0,o.createComponentVNode)(2,c.Button,{onClick:function(){return d("mf_targ_action",{atype:t,target:e.ref})},children:t},t)}))})]})},e.ref)}))})})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:2,children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",height:"100%",children:[(0,o.createComponentVNode)(2,c.Section,{title:"Roles and Notes",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"address-book",tooltipPosition:"bottom-left",tooltip:"The top section is the roles in the game. You can\npress the question mark to get a quick blurb\nabout the role itself."}),(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"edit",tooltipPosition:"bottom-left",tooltip:"The bottom section are your notes. on some roles this\nwill just be an empty box, but on others it records the\nactions of your abilities (so for example, your\ndetective work revealing a changeling)."})],4),children:(0,o.createComponentVNode)(2,c.Flex,{direction:"column",children:!!g&&g.map((function(e){return(0,o.createComponentVNode)(2,c.Flex.Item,{height:"30px",className:"Section__title candystripe",children:(0,o.createComponentVNode)(2,c.Flex,{height:"18px",align:"center",justify:"space-between",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{children:e}),(0,o.createComponentVNode)(2,c.Flex.Item,{textAlign:"right",children:(0,o.createComponentVNode)(2,c.Button,{color:"transparent",icon:"question",onClick:function(){return d("mf_lookup",{atype:e.slice(0,-3)})}})})]})},e)}))})}),!!h&&(0,o.createComponentVNode)(2,c.Flex.Item,{height:0,grow:1,children:(0,o.createComponentVNode)(2,c.Section,{scrollable:!0,fill:!0,overflowY:"scroll",children:h!==undefined&&!!h.action_log&&h.action_log.map((function(e){return(0,o.createComponentVNode)(2,c.Box,{children:e},e)}))})})]})})]}),(0,o.createComponentVNode)(2,c.Flex,{mt:1,direction:"column",children:(0,o.createComponentVNode)(2,c.Flex.Item,{children:!!V&&(0,o.createComponentVNode)(2,c.Section,{textAlign:"center",children:(0,o.createComponentVNode)(2,c.Collapsible,{title:"ADMIN CONTROLS",color:"red",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"exclamation-triangle",color:"black",tooltipPosition:"top",tooltip:"Almost all of these are all built to help me debug\nthe game (ow, debugging a 12 player game!) So they are\nrudamentary and prone to breaking at the drop of a hat.\nMake sure you know what you're doing when you press one.\nAlso because an admin did it: do not gib/delete/dust\nanyone! It will runtime the game to death!",content:"A Kind, Coder Warning",onClick:function(){return d("next_phase")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Button,{icon:"arrow-right",tooltipPosition:"top",tooltip:"This will advance the game to the next phase\n(day talk > day voting, day voting > night/trial)\npretty fun to just spam this and freak people out,\ntry that roundend!",content:"Next Phase",onClick:function(){return d("next_phase")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"home",tooltipPosition:"top",tooltip:"Hopefully you won't use this button\noften, it's a safety net just in case\nmafia players somehow escape (nullspace\nredirects to the error room then station)\nEither way, VERY BAD IF THAT HAPPENS as\ngodmoded assistants will run free. Use\nthis to recollect them then make a bug report.",content:"Send All Players Home",onClick:function(){return d("players_home")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sync-alt",tooltipPosition:"top",tooltip:"This immediately ends the game, and attempts to start\nanother. Nothing will happen if another\ngame fails to start!",content:"New Game",onClick:function(){return d("new_game")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"skull",tooltipPosition:"top",tooltip:"Deletes the datum, clears all landmarks, makes mafia\nas it was roundstart: nonexistant. Use this if you\nreally mess things up. You did mess things up, didn't you.",content:"Nuke",onClick:function(){return d("nuke")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,c.Button,{icon:"paint-brush",tooltipPosition:"top",tooltip:"This is the custom game creator, it is... simple.\nYou put in roles and until you press CANCEL or FINISH\nit will keep letting you add more roles. Assitants\non the bottom because of pathing stuff. Resets after\nthe round finishes back to 12 player random setups.",content:"Create Custom Setup",onClick:function(){return d("debug_setup")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"paint-roller",tooltipPosition:"top",tooltip:"If you messed up and accidently didn't make it how\nyou wanted, simply just press this to reset it. The game\nwill auto reset after each game as well.",content:"Reset Custom Setup",onClick:function(){return d("cancel_setup")}})]})})})})]})})};var l=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.phase,d=i.timeleft,u=i.admin_controls;return(0,o.createComponentVNode)(2,c.Box,{children:["[Phase = ",l," | ",(0,o.createComponentVNode)(2,c.TimeDisplay,{auto:"down",value:d}),"]"," ",(0,o.createComponentVNode)(2,c.Button,{icon:"clipboard-check",tooltipPosition:"bottom-left",tooltip:"Signs you up for the next game. If there\nis an ongoing one, you will be signed up\nfor the next.",content:"Sign Up",onClick:function(){return r("mf_signup")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"eye",tooltipPosition:"bottom-left",tooltip:"Spectates games until you turn it off.\nAutomatically enabled when you die in game,\nbecause I assumed you would want to see the\nconclusion. You won't get messages if you\nrejoin SS13.",content:"Spectate",onClick:function(){return r("mf_spectate")}}),!!u&&(0,o.createComponentVNode)(2,c.Button,{color:"red",icon:"gavel",tooltipPosition:"bottom-left",tooltip:"Hello admin! If it is the admin controls you seek,\nplease notice the scrollbar you have that players\ndo not!"})]})}},42159:function(e,t,n){"use strict";t.__esModule=!0,t.MalfunctionModulePicker=void 0;var o=n(39812),r=n(71494),a=n(85952),c=n(89761);t.MalfunctionModulePicker=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.processingTime);return(0,o.createComponentVNode)(2,a.Window,{width:620,height:525,theme:"malfunction",resizable:!0,children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.GenericUplink,{currencyAmount:i,currencySymbol:"PT"})})})}},80881:function(e,t,n){"use strict";t.__esModule=!0,t.MechBayPowerConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.MechBayPowerConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.recharge_port,d=l&&l.mech,u=d&&d.cell;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:200,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Mech status",textAlign:"center",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Sync",onClick:function(){return i("reconnect")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Integrity",children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.health/d.maxhealth,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No power port detected. Please re-sync."})||!d&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No mech detected."})||!u&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cell is installed."})||(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.charge/u.maxcharge,ranges:{good:[.7,Infinity],average:[.3,.7],bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u.charge})," / "+u.maxcharge]})})]})})})})}},37305:function(e,t,n){"use strict";t.__esModule=!0,t.MechpadConsole=t.MechpadControl=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=function(e,t){var n=e.topLevel,c=(0,r.useBackend)(t),i=c.act,l=c.data,d=l.pad_name,u=l.connected_mechpad;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Input,{value:d,width:"170px",onChange:function(e,t){return i("rename",{name:t})}}),level:n?1:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Remove",color:"bad",onClick:function(){return i("remove")}}),children:!u&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",textAlign:"center",children:"No Pad Connected."})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"upload",content:"Launch",textAlign:"center",onClick:function(){return i("launch")}})})};t.MechpadControl=i;t.MechpadConsole=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.mechpads,s=void 0===u?[]:u,m=d.selected_id;return(0,o.createComponentVNode)(2,c.Window,{width:475,height:130,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:0===s.length&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Pads Connected"})||(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Flex,{minHeight:"70px",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"140px",minHeight:"70px",children:s.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,ellipsis:!0,content:e.name,selected:m===e.id,color:"transparent",onClick:function(){return l("select_pad",{id:e.id})}},e.name)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{minHeight:"100%",children:(0,o.createComponentVNode)(2,a.Divider,{vertical:!0})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,minHeight:"100%",children:m&&(0,o.createComponentVNode)(2,i)||(0,o.createComponentVNode)(2,a.Box,{children:"Please select a pad"})})]})})})})}},74702:function(e,t,n){"use strict";t.__esModule=!0,t.MedicalKiosk=void 0;var o=n(39812),r=(n(2497),n(71494)),a=n(74814),c=n(85952);t.MedicalKiosk=function(e,t){var n=(0,r.useBackend)(t),p=(n.act,n.data),C=(0,r.useSharedState)(t,"scanIndex")[0],h=p.active_status_1,N=p.active_status_2,V=p.active_status_3,b=p.active_status_4;return(0,o.createComponentVNode)(2,c.Window,{width:575,height:420,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Flex,{mb:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:1,children:(0,o.createComponentVNode)(2,a.Section,{minHeight:"100%",children:[(0,o.createComponentVNode)(2,i,{index:1,icon:"procedures",name:"General Health Scan",description:"Reads back exact values of your general health scan."}),(0,o.createComponentVNode)(2,i,{index:2,icon:"heartbeat",name:"Symptom Based Checkup",description:"Provides information based on various non-obvious symptoms,\nlike blood levels or disease status."}),(0,o.createComponentVNode)(2,i,{index:3,icon:"radiation-alt",name:"Neurological/Radiological Scan",description:"Provides information about brain trauma and radiation."}),(0,o.createComponentVNode)(2,i,{index:4,icon:"mortar-pestle",name:"Chemical and Psychoactive Scan",description:"Provides a list of consumed chemicals, as well as potential\nside effects."})]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,l)})]}),!!h&&1===C&&(0,o.createComponentVNode)(2,d),!!N&&2===C&&(0,o.createComponentVNode)(2,u),!!V&&3===C&&(0,o.createComponentVNode)(2,s),!!b&&4===C&&(0,o.createComponentVNode)(2,m)]})})};var i=function(e,t){var n=e.index,c=e.name,i=e.description,l=e.icon,d=(0,r.useBackend)(t),u=d.act,s=d.data,m=(0,r.useSharedState)(t,"scanIndex"),p=m[0],C=m[1],h=s["active_status_"+n];return(0,o.createComponentVNode)(2,a.Flex,{spacing:1,align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{width:"16px",textAlign:"center",children:(0,o.createComponentVNode)(2,a.Icon,{name:h?"check":"dollar-sign",color:h?"green":"grey"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:l,selected:h&&p===n,tooltip:i,tooltipPosition:"right",content:c,onClick:function(){h||u("beginScan_"+n),C(n)}})})]})},l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.kiosk_cost,d=i.patient_name;return(0,o.createComponentVNode)(2,a.Section,{minHeight:"100%",children:[(0,o.createComponentVNode)(2,a.Box,{italic:!0,children:["Greetings Valued Employee! Please select a desired automatic health check procedure. Diagnosis costs ",(0,o.createVNode)(1,"b",null,[l,(0,o.createTextVNode)(" credits.")],0)]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mr:1,children:"Patient:"}),d]}),(0,o.createComponentVNode)(2,a.Button,{mt:1,tooltip:"Resets the current scanning target, cancelling current scans.",icon:"sync",color:"average",onClick:function(){return c("clearTarget")},content:"Reset Scanner"})]})},d=function(e,t){var n=(0,r.useBackend)(t).data,c=n.patient_health,i=n.brute_health,l=n.burn_health,d=n.suffocation_health,u=n.toxin_health;return(0,o.createComponentVNode)(2,a.Section,{title:"Patient Health",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Total Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c/100,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c}),"%"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brute Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Burn Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:l})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Oxygen Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Toxin Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})})})]})})},u=function(e,t){var n=(0,r.useBackend)(t).data,c=n.patient_status,i=n.patient_illness,l=n.illness_info,d=n.bleed_status,u=n.blood_levels,s=n.blood_status;return(0,o.createComponentVNode)(2,a.Section,{title:"Symptom Based Checkup",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Patient Status",color:"good",children:c}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disease Status",children:i}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disease information",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Levels",children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:u/100,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:u})}),(0,o.createComponentVNode)(2,a.Box,{mt:1,color:"label",children:d})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Information",children:s})]})})},s=function(e,t){var n=(0,r.useBackend)(t).data,c=n.clone_health,i=n.brain_damage,l=n.brain_health,d=n.rad_contamination_status,u=n.rad_contamination_value,s=n.rad_sickness_status,m=n.rad_sickness_value,p=n.trauma_status;return(0,o.createComponentVNode)(2,a.Section,{title:"Patient Neurological and Radiological Health",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cellular Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:c/100,color:"good",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:c})})}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Damage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:i/100,color:"good",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i})})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Status",color:"health-0",children:l}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain Trauma Status",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Divider),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Sickness Status",children:s}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Sickness Percentage",children:[m,"%"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Contamination Status",children:d}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Contamination Percentage",children:[u,"%"]})]})})},m=function(e,t){var n=(0,r.useBackend)(t).data,c=n.chemical_list,i=void 0===c?[]:c,l=n.overdose_list,d=void 0===l?[]:l,u=n.addict_list,s=void 0===u?[]:u,m=n.hallucinating_status;return(0,o.createComponentVNode)(2,a.Section,{title:"Chemical and Psychoactive Analysis",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Chemical Contents",children:[0===i.length&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No reagents detected."}),i.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{color:"good",children:[e.volume," units of ",e.name]},e.id)}))]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Overdose Status",color:"bad",children:[0===d.length&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Patient is not overdosing."}),d.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["Overdosing on ",e.name]},e.id)}))]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Addiction Status",color:"bad",children:[0===s.length&&(0,o.createComponentVNode)(2,a.Box,{color:"good",children:"Patient has no addictions."}),s.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:["Addicted to ",e.name]},e.id)}))]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Psychoactive Status",children:m})]})})}},61443:function(e,t,n){"use strict";t.__esModule=!0,t.Microscope=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Microscope=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=(0,r.useSharedState)(t,"tab",1),m=s[0],p=s[1],C=u.has_dish,h=u.cell_lines,N=void 0===h?[]:h,V=u.viruses,b=void 0===V?[]:V;return(0,o.createComponentVNode)(2,c.Window,{resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Dish Sample",children:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!C,onClick:function(){return d("eject_petridish")}})})})}),(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"microscope",lineHeight:"23px",selected:1===m,onClick:function(){return p(1)},children:["Micro-Organisms (",N.length,")"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"microscope",lineHeight:"23px",selected:2===m,onClick:function(){return p(2)},children:["Viruses (",b.length,")"]})]}),1===m&&(0,o.createComponentVNode)(2,i,{cell_lines:N}),2===m&&(0,o.createComponentVNode)(2,l,{viruses:b})]})})};var i=function(e,t){var n=e.cell_lines,c=(0,r.useBackend)(t);c.act,c.data;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.desc,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Growth Rate",children:e.growth_rate}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Virus Suspectibility",children:e.suspectibility}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Required Reagents",children:e.requireds}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Supplementary Reagents",children:e.supplementaries}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suppresive reagents",children:e.suppressives})]})},e.desc)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No micro-organisms found"})},l=function(e,t){var n=e.viruses;(0,r.useBackend)(t).act;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.desc},e.desc)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No viruses found"})}},62012:function(e,t,n){"use strict";t.__esModule=!0,t.MiningVendor=void 0;var o=n(39812),r=n(34380),a=n(71494),c=n(74814),i=n(85952);t.MiningVendor=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=[].concat(d.product_records);return(0,o.createComponentVNode)(2,i.Window,{width:425,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{title:"User",children:d.user&&(0,o.createComponentVNode)(2,c.Box,{children:["Welcome, ",(0,o.createVNode)(1,"b",null,d.user.name||"Unknown",0),","," ",(0,o.createVNode)(1,"b",null,d.user.job||"Unemployed",0),"!",(0,o.createVNode)(1,"br"),"Your balance is ",(0,o.createVNode)(1,"b",null,[d.user.points,(0,o.createTextVNode)(" mining points")],0),"."]})||(0,o.createComponentVNode)(2,c.Box,{color:"light-gray",children:["No registered ID card!",(0,o.createVNode)(1,"br"),"Please contact your local HoP!"]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Equipment",children:(0,o.createComponentVNode)(2,c.Table,{children:u.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:[(0,o.createVNode)(1,"span",(0,r.classes)(["vending32x32",e.path]),null,1,{style:{"vertical-align":"middle"}})," ",(0,o.createVNode)(1,"b",null,e.name,0)]}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{style:{"min-width":"95px","text-align":"center"},disabled:!d.user||e.price>d.user.points,content:e.price+" points",onClick:function(){return l("purchase",{ref:e.ref})}})})]},e.name)}))})})]})})}},83413:function(e,t,n){"use strict";t.__esModule=!0,t.Mint=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.Mint=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.inserted_materials||[];return(0,o.createComponentVNode)(2,c.Window,{children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Materials",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:l.processing?"times":"power-off",content:l.processing?"Stop":"Start",selected:l.processing,onClick:function(){return i(l.processing?"stoppress":"startpress")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:d.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.material,buttons:(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:l.chosen_material===e.material,onClick:function(){return i("changematerial",{material_name:e.material})}}),children:[e.amount," cm\xb3"]},e.material)}))})}),(0,o.createComponentVNode)(2,a.Section,{children:["Pressed ",l.produced_coins," coins this cycle."]})]})})}},97397:function(e,t,n){"use strict";t.__esModule=!0,t.Mule=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=n(21451);t.Mule=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.on,s=d.cell,m=d.cellPercent,p=d.load,C=d.mode,h=d.modeStatus,N=d.haspai,V=d.autoReturn,b=d.autoPickup,f=d.reportDelivery,g=d.destination,v=d.home,k=d.id,x=d.destinations,B=void 0===x?[]:x,_=d.locked&&!d.siliconUser;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:425,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,i.InterfaceLockNoticeBox),(0,o.createComponentVNode)(2,a.Section,{title:"Status",minHeight:"110px",buttons:!_&&(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return l("power")}}),children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:s?m/100:0,color:s?"good":"bad"}),(0,o.createComponentVNode)(2,a.Flex,{mt:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",color:h,children:C})})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Load",color:p?"good":"average",children:p||"None"})})})]})]}),!_&&(0,o.createComponentVNode)(2,a.Section,{title:"Controls",buttons:(0,o.createFragment)([!!p&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Unload",onClick:function(){return l("unload")}}),!!N&&(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject PAI",onClick:function(){return l("ejectpai")}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"ID",children:(0,o.createComponentVNode)(2,a.Input,{value:k,onChange:function(e,t){return l("setid",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:[(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:g||"None",options:B,width:"150px",onSelected:function(e){return l("destination",{value:e})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"stop",content:"Stop",onClick:function(){return l("stop")}}),(0,o.createComponentVNode)(2,a.Button,{icon:"play",content:"Go",onClick:function(){return l("go")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Home",children:[(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:v,options:B,width:"150px",onSelected:function(e){return l("destination",{value:e})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"home",content:"Go Home",onClick:function(){return l("home")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Settings",children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:V,content:"Auto-Return",onClick:function(){return l("autored")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:b,content:"Auto-Pickup",onClick:function(){return l("autopick")}}),(0,o.createVNode)(1,"br"),(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:f,content:"Report Delivery",onClick:function(){return l("report")}})]})]})})]})})}},42370:function(e,t,n){"use strict";t.__esModule=!0,t.NaniteChamberControlContent=t.NaniteChamberControl=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NaniteChamberControl=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:380,height:570,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.status_msg,d=i.locked,u=i.occupant_name,s=i.has_nanites,m=i.nanite_volume,p=i.regen_rate,C=i.safety_threshold,h=i.cloud_id,N=i.scan_level;if(l)return(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:l});var V=i.mob_programs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Chamber: "+u,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d?"lock":"lock-open",content:d?"Locked":"Unlocked",color:d?"bad":"default",onClick:function(){return c("toggle_lock")}}),children:s?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"exclamation-triangle",content:"Destroy Nanites",color:"bad",onClick:function(){return c("remove_nanites")}}),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nanite Volume",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Growth Rate",children:p})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Safety Threshold",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:C,minValue:0,maxValue:500,width:"39px",onChange:function(e,t){return c("set_safety",{value:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloud ID",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:h,minValue:0,maxValue:100,step:1,stepPixelSize:3,width:"39px",onChange:function(e,t){return c("set_cloud",{value:t})}})})]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Programs",level:2,children:V.map((function(e){var t=e.extra_settings||[],n=e.rules||[];return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.name,children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:e.desc}),N>=2&&(0,o.createComponentVNode)(2,a.Grid.Column,{size:.6,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.activated?"good":"bad",children:e.activated?"Active":"Inactive"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Nanites Consumed",children:[e.use_rate,"/s"]})]})})]}),N>=2&&(0,o.createComponentVNode)(2,a.Grid,{children:[!!e.can_trigger&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Triggers",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:e.trigger_cost}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:e.trigger_cooldown}),!!e.timer_trigger_delay&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[e.timer_trigger_delay," s"]}),!!e.timer_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:[e.timer_trigger," s"]})]})})}),!(!e.timer_restart&&!e.timer_shutdown)&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[e.timer_restart&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:[e.timer_restart," s"]}),e.timer_shutdown&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:[e.timer_shutdown," s"]})]})})})]}),N>=3&&!!e.has_extra_settings&&(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:t.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:e.value},e.name)}))})}),N>=4&&(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[!!e.activation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:e.activation_code}),!!e.deactivation_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:e.deactivation_code}),!!e.kill_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:e.kill_code}),!!e.can_trigger&&!!e.trigger_code&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:e.trigger_code})]})})}),e.has_rules&&(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Rules",level:2,children:n.map((function(e){return(0,o.createFragment)([e.display,(0,o.createVNode)(1,"br")],0,e.display)}))})})]})]})},e.name)}))})],4):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{bold:!0,color:"bad",textAlign:"center",fontSize:"30px",mb:1,children:"No Nanites Detected"}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,icon:"syringe",content:" Implant Nanites",color:"green",textAlign:"center",fontSize:"30px",lineHeight:"50px",onClick:function(){return c("nanite_injection")}})],4)})};t.NaniteChamberControlContent=i},93623:function(e,t,n){"use strict";t.__esModule=!0,t.NaniteCloudControl=t.NaniteCloudBackupDetails=t.NaniteCloudBackupList=t.NaniteInfoBox=t.NaniteDiskBox=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=function(e,t){var n=(0,r.useBackend)(t).data,c=n.has_disk,i=n.has_program,d=n.disk;return c?i?(0,o.createComponentVNode)(2,l,{program:d}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Inserted disk has no program"}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No disk inserted"})};t.NaniteDiskBox=i;var l=function(e,t){var n=e.program,r=n.name,c=n.desc,i=n.activated,l=n.use_rate,d=n.can_trigger,u=n.trigger_cost,s=n.trigger_cooldown,m=n.activation_code,p=n.deactivation_code,C=n.kill_code,h=n.trigger_code,N=n.timer_restart,V=n.timer_shutdown,b=n.timer_trigger,f=n.timer_trigger_delay,g=n.extra_settings||[];return(0,o.createComponentVNode)(2,a.Section,{title:r,level:2,buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:i?"good":"bad",children:i?"Activated":"Deactivated"}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{mr:1,children:c}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:l}),!!d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:u}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:s})],4)]})})]}),(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:p}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:C}),!!d&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:h})]})})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart",children:[N," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown",children:[V," s"]}),!!d&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:[b," s"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:[f," s"]})],4)]})})})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Extra Settings",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:g.map((function(e){var t={number:(0,o.createFragment)([e.value,e.unit],0),text:e.value,type:e.value,boolean:e.value?e.true_text:e.false_text};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:t[e.type]},e.name)}))})})]})};t.NaniteInfoBox=l;var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act;return(n.data.cloud_backups||[]).map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Backup #"+e.cloud_id,textAlign:"center",onClick:function(){return c("set_view",{view:e.cloud_id})}},e.cloud_id)}))};t.NaniteCloudBackupList=d;var u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,d=i.current_view,u=i.disk,s=i.has_program,m=i.cloud_backup,p=u&&u.can_rule||!1;if(!m)return(0,o.createComponentVNode)(2,a.NoticeBox,{children:"ERROR: Backup not found"});var C=i.cloud_programs||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Backup #"+d,level:2,buttons:!!s&&(0,o.createComponentVNode)(2,a.Button,{icon:"upload",content:"Upload From Disk",color:"good",onClick:function(){return c("upload_program")}}),children:C.map((function(e){var t=e.rules||[];return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return c("remove_program",{program_id:e.id})}}),children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,l,{program:e}),(!!p||!!e.has_rules)&&(0,o.createComponentVNode)(2,a.Section,{mt:-2,title:"Rules",level:2,buttons:!!p&&(0,o.createComponentVNode)(2,a.Button,{icon:"plus",content:"Add Rule from Disk",color:"good",onClick:function(){return c("add_rule",{program_id:e.id})}}),children:e.has_rules?t.map((function(t){return(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus-circle",color:"bad",onClick:function(){return c("remove_rule",{program_id:e.id,rule_id:t.id})}})," "+t.display]},t.display)})):(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"No Active Rules"})})]})},e.name)}))})};t.NaniteCloudBackupDetails=u;t.NaniteCloudControl=function(e,t){var n=(0,r.useBackend)(t),l=n.act,s=n.data,m=s.has_disk,p=s.current_view,C=s.new_backup_id;return(0,o.createComponentVNode)(2,c.Window,{width:375,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Program Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!m,onClick:function(){return l("eject")}}),children:(0,o.createComponentVNode)(2,i)}),(0,o.createComponentVNode)(2,a.Section,{title:"Cloud Storage",buttons:p?(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"Return",onClick:function(){return l("set_view",{view:0})}}):(0,o.createFragment)(["New Backup: ",(0,o.createComponentVNode)(2,a.NumberInput,{value:C,minValue:1,maxValue:100,stepPixelSize:4,width:"39px",onChange:function(e,t){return l("update_new_backup_value",{value:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return l("create_backup")}})],0),children:s.current_view?(0,o.createComponentVNode)(2,u):(0,o.createComponentVNode)(2,d)})]})})}},22682:function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgramHub=void 0;var o=n(39812),r=n(64499),a=n(71494),c=n(74814),i=n(85952);t.NaniteProgramHub=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.detail_view,s=d.disk,m=d.has_disk,p=d.has_program,C=d.programs,h=void 0===C?{}:C,N=(0,a.useSharedState)(t,"category"),V=N[0],b=N[1],f=h&&h[V]||[];return(0,o.createComponentVNode)(2,i.Window,{width:500,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{title:"Program Disk",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",onClick:function(){return l("eject")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"minus-circle",content:"Delete Program",onClick:function(){return l("clear")}})],4),children:m?p?(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Program Name",children:s.name}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",children:s.desc})]}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No Program Installed"}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"Insert Disk"})}),(0,o.createComponentVNode)(2,c.Section,{title:"Programs",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:u?"info":"list",content:u?"Detailed":"Compact",onClick:function(){return l("toggle_details")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sync",content:"Sync Research",onClick:function(){return l("refresh")}})],4),children:null!==h?(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{minWidth:"110px",children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:(0,r.map)((function(e,t){var n=t.substring(0,t.length-8);return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:t===V,onClick:function(){return b(t)},children:n},t)}))(h)})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:u?f.map((function(e){return(0,o.createComponentVNode)(2,c.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"download",content:"Download",disabled:!m,onClick:function(){return l("download",{program_id:e.id})}}),children:e.desc},e.id)})):(0,o.createComponentVNode)(2,c.LabeledList,{children:f.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"download",content:"Download",disabled:!m,onClick:function(){return l("download",{program_id:e.id})}})},e.id)}))})})]}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No nanite programs are currently researched."})})]})})}},87554:function(e,t,n){"use strict";t.__esModule=!0,t.NaniteProgrammerContent=t.NaniteProgrammer=t.NaniteExtraBoolean=t.NaniteExtraType=t.NaniteExtraText=t.NaniteExtraNumber=t.NaniteExtraEntry=t.NaniteDelays=t.NaniteCodes=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Codes",level:3,mr:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Activation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.activation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"activation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Deactivation",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.deactivation_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"deactivation",code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Kill",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.kill_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"kill",code:t})}})}),!!i.can_trigger&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.trigger_code,width:"47px",minValue:0,maxValue:9999,onChange:function(e,t){return c("set_code",{target_code:"trigger",code:t})}})})]})})};t.NaniteCodes=i;var l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:"Delays",level:3,ml:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Restart Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_restart,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_restart_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Shutdown Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_shutdown,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_shutdown_timer",{delay:t})}})}),!!i.can_trigger&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Repeat Timer",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_trigger_timer",{delay:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Delay",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:i.timer_trigger_delay,unit:"s",width:"57px",minValue:0,maxValue:3600,onChange:function(e,t){return c("set_timer_trigger_delay",{delay:t})}})})],4)]})})};t.NaniteDelays=l;var d=function(e,t){var n=e.extra_setting,r=n.name,c=n.type,i={number:(0,o.createComponentVNode)(2,u,{extra_setting:n}),text:(0,o.createComponentVNode)(2,s,{extra_setting:n}),type:(0,o.createComponentVNode)(2,m,{extra_setting:n}),boolean:(0,o.createComponentVNode)(2,p,{extra_setting:n})};return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:r,children:i[c]})};t.NaniteExtraEntry=d;var u=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value,d=n.min,u=n.max,s=n.unit;return(0,o.createComponentVNode)(2,a.NumberInput,{value:l,width:"64px",minValue:d,maxValue:u,unit:s,onChange:function(e,t){return c("set_extra_setting",{target_setting:i,value:t})}})};t.NaniteExtraNumber=u;var s=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value;return(0,o.createComponentVNode)(2,a.Input,{value:l,width:"200px",onInput:function(e,t){return c("set_extra_setting",{target_setting:i,value:t})}})};t.NaniteExtraText=s;var m=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value,d=n.types;return(0,o.createComponentVNode)(2,a.Dropdown,{over:!0,selected:l,width:"150px",options:d,onSelected:function(e){return c("set_extra_setting",{target_setting:i,value:e})}})};t.NaniteExtraType=m;var p=function(e,t){var n=e.extra_setting,c=(0,r.useBackend)(t).act,i=n.name,l=n.value,d=n.true_text,u=n.false_text;return(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:l?d:u,checked:l,onClick:function(){return c("set_extra_setting",{target_setting:i})}})};t.NaniteExtraBoolean=p;t.NaniteProgrammer=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:420,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,C)})})};var C=function(e,t){var n=(0,r.useBackend)(t),c=n.act,u=n.data,s=u.has_disk,m=u.has_program,p=u.name,C=u.desc,h=u.use_rate,N=u.can_trigger,V=u.trigger_cost,b=u.trigger_cooldown,f=u.activated,g=u.has_extra_settings,v=u.extra_settings,k=void 0===v?{}:v;return s?m?(0,o.createComponentVNode)(2,a.Section,{title:p,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("eject")}}),children:[(0,o.createComponentVNode)(2,a.Section,{title:"Info",level:2,children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:C}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.7,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Use Rate",children:h}),!!N&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cost",children:V}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Trigger Cooldown",children:b})],4)]})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Settings",level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:f?"power-off":"times",content:f?"Active":"Inactive",selected:f,color:"bad",bold:!0,onClick:function(){return c("toggle_active")}}),children:[(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,i)}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,l)})]}),!!g&&(0,o.createComponentVNode)(2,a.Section,{title:"Special",level:3,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:k.map((function(e){return(0,o.createComponentVNode)(2,d,{extra_setting:e},e.name)}))})})]})]}):(0,o.createComponentVNode)(2,a.Section,{title:"Blank Disk",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",onClick:function(){return c("eject")}})}):(0,o.createComponentVNode)(2,a.NoticeBox,{textAlign:"center",children:"Insert a nanite program disk"})};t.NaniteProgrammerContent=C},73708:function(e,t,n){"use strict";t.__esModule=!0,t.NaniteRemoteContent=t.NaniteRemote=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NaniteRemote=function(e,t){return(0,o.createComponentVNode)(2,c.Window,{width:420,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.code,d=i.locked,u=i.mode,s=i.program_name,m=i.relay_code,p=i.comms,C=i.message,h=i.saved_settings,N=void 0===h?[]:h;return d?(0,o.createComponentVNode)(2,a.NoticeBox,{children:"This interface is locked."}):(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Nanite Control",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"lock",content:"Lock Interface",onClick:function(){return c("lock")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:[(0,o.createComponentVNode)(2,a.Input,{value:s,maxLength:14,width:"130px",onChange:function(e,t){return c("update_name",{name:t})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"save",content:"Save",onClick:function(){return c("save")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:p?"Comm Code":"Signal Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:l,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return c("set_code",{code:t})}})}),!!p&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Message",children:(0,o.createComponentVNode)(2,a.Input,{value:C,width:"270px",onChange:function(e,t){return c("set_message",{value:t})}})}),"Relay"===u&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Relay Code",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:m,minValue:0,maxValue:9999,width:"47px",step:1,stepPixelSize:2,onChange:function(e,t){return c("set_relay_code",{code:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Signal Mode",children:["Off","Local","Targeted","Area","Relay"].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e,selected:u===e,onClick:function(){return c("select_mode",{mode:e})}},e)}))})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Saved Settings",children:N.length>0?(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{width:"35%",children:"Name"}),(0,o.createComponentVNode)(2,a.Table.Cell,{width:"20%",children:"Mode"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Code"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Relay"})]}),N.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:"label",children:[e.name,":"]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.mode}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.code}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Relay"===e.mode&&e.relay_code}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"right",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"upload",color:"good",onClick:function(){return c("load",{save_id:e.id})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"minus",color:"bad",onClick:function(){return c("remove_save",{save_id:e.id})}})]})]},e.id)}))]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No settings currently saved"})})],4)};t.NaniteRemoteContent=i},15394:function(e,t,n){"use strict";t.__esModule=!0,t.NotificationPreferences=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NotificationPreferences=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=(n.data.ignore||[]).sort((function(e,t){var n=e.desc.toLowerCase(),o=t.desc.toLowerCase();return no?1:0}));return(0,o.createComponentVNode)(2,c.Window,{title:"Notification Preferences",width:270,height:360,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:"Ghost Role Notifications",children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:e.enabled?"times":"check",content:e.desc,color:e.enabled?"bad":"good",onClick:function(){return i("toggle_ignore",{key:e.key})}},e.key)}))})})})}},53158:function(e,t,n){"use strict";t.__esModule=!0,t.NtnetRelay=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtnetRelay=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.enabled,u=l.dos_capacity,s=l.dos_overload,m=l.dos_crashed;return(0,o.createComponentVNode)(2,c.Window,{title:"NtNet Quantum Relay",width:400,height:300,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,a.Section,{title:"Network Buffer",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",selected:d,content:d?"ENABLED":"DISABLED",onClick:function(){return i("toggle")}}),children:m?(0,o.createComponentVNode)(2,a.Box,{fontFamily:"monospace",children:[(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",children:"NETWORK BUFFER OVERFLOW"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",children:"OVERLOAD RECOVERY MODE"}),(0,o.createComponentVNode)(2,a.Box,{children:"This system is suffering temporary outage due to overflow of traffic buffers. Until buffered traffic is processed, all further requests will be dropped. Frequent occurences of this error may indicate insufficient hardware capacity of your network. Please contact your network planning department for instructions on how to resolve this issue."}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"20px",color:"bad",children:"ADMINISTRATOR OVERRIDE"}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"16px",color:"bad",children:"CAUTION - DATA LOSS MAY OCCUR"}),(0,o.createComponentVNode)(2,a.Button,{icon:"signal",content:"PURGE BUFFER",mt:1,color:"bad",onClick:function(){return i("restart")}})]}):(0,o.createComponentVNode)(2,a.ProgressBar,{value:s,minValue:0,maxValue:u,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:s})," GQ"," / ",u," GQ"]})})})})}},86156:function(e,t,n){"use strict";t.__esModule=!0,t.NtosAiRestorer=void 0;var o=n(39812),r=n(85952),a=n(33084);t.NtosAiRestorer=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:370,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.AiRestorerContent)})})}},79760:function(e,t,n){"use strict";t.__esModule=!0,t.NtosArcade=void 0;var o=n(39812),r=n(5908),a=n(71494),c=n(74814),i=n(85952);t.NtosArcade=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:450,height:350,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,c.Section,{title:"Outbomb Cuban Pete Ultra",textAlign:"center",children:[(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:2,children:[(0,o.createComponentVNode)(2,c.Box,{m:1}),(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Player Health",children:(0,o.createComponentVNode)(2,c.ProgressBar,{value:d.PlayerHitpoints,minValue:0,maxValue:30,ranges:{olive:[31,Infinity],good:[20,31],average:[10,20],bad:[-Infinity,10]},children:[d.PlayerHitpoints,"HP"]})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Player Magic",children:(0,o.createComponentVNode)(2,c.ProgressBar,{value:d.PlayerMP,minValue:0,maxValue:10,ranges:{purple:[11,Infinity],violet:[3,11],bad:[-Infinity,3]},children:[d.PlayerMP,"MP"]})})]}),(0,o.createComponentVNode)(2,c.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,c.Section,{backgroundColor:1===d.PauseState?"#1b3622":"#471915",children:d.Status})]}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:[(0,o.createComponentVNode)(2,c.ProgressBar,{value:d.Hitpoints,minValue:0,maxValue:45,ranges:{good:[30,Infinity],average:[5,30],bad:[-Infinity,5]},children:[(0,o.createComponentVNode)(2,c.AnimatedNumber,{value:d.Hitpoints}),"HP"]}),(0,o.createComponentVNode)(2,c.Box,{m:1}),(0,o.createComponentVNode)(2,c.Section,{inline:!0,width:"156px",textAlign:"center",children:(0,o.createVNode)(1,"img",null,null,1,{src:(0,r.resolveAsset)(d.BossID)})})]})]}),(0,o.createComponentVNode)(2,c.Box,{my:1,mx:4}),(0,o.createComponentVNode)(2,c.Button,{icon:"fist-raised",tooltip:"Go in for the kill!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("Attack")},content:"Attack!"}),(0,o.createComponentVNode)(2,c.Button,{icon:"band-aid",tooltip:"Heal yourself!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("Heal")},content:"Heal!"}),(0,o.createComponentVNode)(2,c.Button,{icon:"magic",tooltip:"Recharge your magic!",tooltipPosition:"top",disabled:0===d.GameActive||1===d.PauseState,onClick:function(){return l("Recharge_Power")},content:"Recharge!"})]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Button,{icon:"sync-alt",tooltip:"One more game couldn't hurt.",tooltipPosition:"top",disabled:1===d.GameActive,onClick:function(){return l("Start_Game")},content:"Begin Game"}),(0,o.createComponentVNode)(2,c.Button,{icon:"ticket-alt",tooltip:"Claim at your local Arcade Computer for Prizes!",tooltipPosition:"top",disabled:1===d.GameActive,onClick:function(){return l("Dispense_Tickets")},content:"Claim Tickets"})]}),(0,o.createComponentVNode)(2,c.Box,{color:d.TicketCount>=1?"good":"normal",children:["Earned Tickets: ",d.TicketCount]})]})})})}},5313:function(e,t,n){"use strict";t.__esModule=!0,t.NtosAtmos=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(41860),i=n(71494),l=n(74814),d=n(76270),u=n(85952);t.NtosAtmos=function(e,t){var n=(0,i.useBackend)(t),s=(n.act,n.data),m=s.AirTemp,p=s.AirPressure,C=(0,a.flow)([(0,r.filter)((function(e){return e.percentage>=.01})),(0,r.sortBy)((function(e){return-e.percentage}))])(s.AirData||[]),h=Math.max.apply(Math,[1].concat(C.map((function(e){return e.percentage}))));return(0,o.createComponentVNode)(2,u.NtosWindow,{width:300,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,u.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l.Section,{children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Temperature",children:[m,"\xb0C"]}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Pressure",children:[p," kPa"]})]})}),(0,o.createComponentVNode)(2,l.Section,{children:(0,o.createComponentVNode)(2,l.LabeledList,{children:C.map((function(e){return(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:(0,d.getGasLabel)(e.name),children:(0,o.createComponentVNode)(2,l.ProgressBar,{color:(0,d.getGasColor)(e.name),value:e.percentage,minValue:0,maxValue:h,children:(0,c.toFixed)(e.percentage,2)+"%"})},e.name)}))})})]})})}},78502:function(e,t,n){"use strict";t.__esModule=!0,t.NtosBountyConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(58083),i=n(85952);t.NtosBountyConsole=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data.bountydata,u=void 0===d?[]:d;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:750,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,l),buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print Bounty List",onClick:function(){return c("Print")}}),children:(0,o.createComponentVNode)(2,a.Table,{border:!0,children:[(0,o.createComponentVNode)(2,a.Table.Row,{bold:!0,italic:!0,color:"label",fontSize:1.25,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Bounty Object"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Description"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Progress"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Value"}),(0,o.createComponentVNode)(2,a.Table.Cell,{p:1,textAlign:"center",children:"Claim"})]}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{backgroundColor:1===e.priority?"rgba(252, 152, 3, 0.25)":"",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:e.name}),(0,o.createComponentVNode)(2,a.Table.Cell,{italic:!0,textAlign:"center",p:1,children:e.description}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:[1===e.priority?(0,o.createComponentVNode)(2,a.Box,{children:"High Priority"}):"",e.completion_string]}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,textAlign:"center",children:e.reward_string}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,p:1,children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,textAlign:"center",icon:1===e.claimed?"check":"",content:1===e.claimed?"Claimed":"Claim",disabled:1===e.claimed,color:1===e.can_claim?"green":"red",onClick:function(){return c("ClaimBounty",{bounty:e.bounty_ref})}})})]},e.name)}))]})})})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=(n.act,n.data.stored_cash);return(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:i,format:function(e){return(0,c.formatMoney)(e)}})," credits"]})}},30495:function(e,t,n){"use strict";t.__esModule=!0,t.NtosCardContent=t.NtosCard=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=n(5665);t.NtosCard=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:450,height:520,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,l=n.data,d=(0,r.useLocalState)(t,"tab",1),u=d[0],s=d[1],m=l.authenticated,p=l.regions,C=void 0===p?[]:p,h=l.access_on_card,N=void 0===h?[]:h,V=l.jobs,b=void 0===V?{}:V,f=l.id_rank,g=l.id_owner,v=l.has_id,k=l.have_printer,x=l.have_id_slot,B=l.id_name,_=(0,r.useLocalState)(t,"department",Object.keys(b)[0]),w=_[0],L=_[1];if(!x)return(0,o.createComponentVNode)(2,a.NoticeBox,{children:"This program requires an ID slot in order to function"});var y=b[w]||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:v&&m?(0,o.createComponentVNode)(2,a.Input,{value:g,width:"250px",onInput:function(e,t){return c("PRG_edit",{name:t})}}):g||"No Card Inserted",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Print",disabled:!k||!v,onClick:function(){return c("PRG_print")}}),(0,o.createComponentVNode)(2,a.Button,{icon:m?"sign-out-alt":"sign-in-alt",content:m?"Log Out":"Log In",color:m?"bad":"good",onClick:function(){c(m?"PRG_logout":"PRG_authenticate")}})],4),children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"eject",content:B,onClick:function(){return c("PRG_eject")}})}),!!v&&!!m&&(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===u,onClick:function(){return s(1)},children:"Access"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===u,onClick:function(){return s(2)},children:"Jobs"})]}),1===u&&(0,o.createComponentVNode)(2,i.AccessList,{accesses:C,selectedList:N,accessMod:function(e){return c("PRG_access",{access_target:e})},grantAll:function(){return c("PRG_grantall")},denyAll:function(){return c("PRG_denyall")},grantDep:function(e){return c("PRG_grantregion",{region:e})},denyDep:function(e){return c("PRG_denyregion",{region:e})}}),2===u&&(0,o.createComponentVNode)(2,a.Section,{title:f,buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"exclamation-triangle",content:"Terminate",color:"bad",onClick:function(){return c("PRG_terminate")}}),children:[(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Custom...",onCommit:function(e,t){return c("PRG_assign",{assign_target:"Custom",custom_name:t})}}),(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Tabs,{vertical:!0,children:Object.keys(b).map((function(e){return(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:e===w,onClick:function(){return L(e)},children:e},e)}))})}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,children:y.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.display_name,onClick:function(){return c("PRG_assign",{assign_target:e.job})}},e.job)}))})]})]})]})],0)};t.NtosCardContent=l},55513:function(e,t,n){"use strict";t.__esModule=!0,t.NtosConfiguration=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosConfiguration=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.PC_device_theme,u=l.power_usage,s=l.battery_exists,m=l.battery,p=void 0===m?{}:m,C=l.disk_size,h=l.disk_used,N=l.hardware,V=void 0===N?[]:N;return(0,o.createComponentVNode)(2,c.NtosWindow,{theme:d,width:420,height:630,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Power Supply",buttons:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Draw: ",u,"W"]}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Battery Status",color:!s&&"average",children:s?(0,o.createComponentVNode)(2,a.ProgressBar,{value:p.charge,minValue:0,maxValue:p.max,ranges:{good:[p.max/2,Infinity],average:[p.max/4,p.max/2],bad:[-Infinity,p.max/4]},children:[p.charge," / ",p.max]}):"Not Available"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"File System",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:h,minValue:0,maxValue:C,color:"good",children:[h," GQ / ",C," GQ"]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Hardware Components",children:V.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,buttons:(0,o.createFragment)([!e.critical&&(0,o.createComponentVNode)(2,a.Button.Checkbox,{content:"Enabled",checked:e.enabled,mr:1,onClick:function(){return i("PC_toggle_component",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:["Power Usage: ",e.powerusage,"W"]})],0),children:e.desc},e.name)}))})]})})}},48791:function(e,t,n){"use strict";t.__esModule=!0,t.NtosCrewManifest=void 0;var o=n(39812),r=n(64499),a=n(71494),c=n(74814),i=n(85952);t.NtosCrewManifest=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.have_printer,s=d.manifest,m=void 0===s?{}:s;return(0,o.createComponentVNode)(2,i.NtosWindow,{width:400,height:480,resizable:!0,children:(0,o.createComponentVNode)(2,i.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.Section,{title:"Crew Manifest",buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"print",content:"Print",disabled:!u,onClick:function(){return l("PRG_print")}}),children:(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.Section,{level:2,title:t,children:(0,o.createComponentVNode)(2,c.Table,{children:e.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,c.Table.Cell,{bold:!0,children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:["(",e.rank,")"]})]},e.name)}))})},t)}))(m)})})})}},77426:function(e,t,n){"use strict";t.__esModule=!0,t.NtosCyborgRemoteMonitorContent=t.NtosCyborgRemoteMonitor=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosCyborgRemoteMonitor=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:600,height:800,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.card,d=i.cyborgs,u=void 0===d?[]:d;return u.length?(0,o.createFragment)([!l&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Certain features require an ID card login."}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:"Send Message",color:"blue",disabled:!l,onClick:function(){return c("messagebot",{ref:e.ref})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":e.locked_down?"average":"good",children:e.status?"Not Responding":e.locked_down?"Locked Down":e.shell_discon?"Nominal/Disconnected":"Nominal"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,a.Box,{color:e.charge<=30?"bad":e.charge<=70?"average":"good",children:"number"==typeof e.charge?e.charge+"%":"Not Found"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Module",children:e.module}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Upgrades",children:e.upgrades})]})},e.ref)}))],0):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cyborg units detected."})};t.NtosCyborgRemoteMonitorContent=i},71854:function(e,t,n){"use strict";t.__esModule=!0,t.NtosCyborgRemoteMonitorSyndicate=void 0;var o=n(39812),r=n(85952),a=n(77426);t.NtosCyborgRemoteMonitorSyndicate=function(e,t){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:600,height:800,theme:"syndicate",children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.NtosCyborgRemoteMonitorContent)})})}},86441:function(e,t,n){"use strict";t.__esModule=!0,t.NtosFileManager=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosFileManager=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.PC_device_theme,s=d.usbconnected,m=d.files,p=void 0===m?[]:m,C=d.usbfiles,h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.NtosWindow,{resizable:!0,theme:u,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,i,{files:p,usbconnected:s,onUpload:function(e){return l("PRG_copytousb",{name:e})},onDelete:function(e){return l("PRG_deletefile",{name:e})},onRename:function(e,t){return l("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return l("PRG_clone",{file:e})}})}),s&&(0,o.createComponentVNode)(2,a.Section,{title:"Data Disk",children:(0,o.createComponentVNode)(2,i,{usbmode:!0,files:h,usbconnected:s,onUpload:function(e){return l("PRG_copyfromusb",{name:e})},onDelete:function(e){return l("PRG_deletefile",{name:e})},onRename:function(e,t){return l("PRG_rename",{name:e,new_name:t})},onDuplicate:function(e){return l("PRG_clone",{file:e})}})})]})})};var i=function(e){var t=e.files,n=void 0===t?[]:t,r=e.usbconnected,c=e.usbmode,i=e.onUpload,l=e.onDelete,d=e.onRename;return(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"File"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Type"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:"Size"})]}),n.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.undeletable?e.name:(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:e.name,currentValue:e.name,tooltip:"Rename",onCommit:function(t,n){return d(e.name,n)}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.type}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:e.size}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:!e.undeletable&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"trash",confirmIcon:"times",confirmContent:"",tooltip:"Delete",onClick:function(){return l(e.name)}}),!!r&&(c?(0,o.createComponentVNode)(2,a.Button,{icon:"download",tooltip:"Download",onClick:function(){return i(e.name)}}):(0,o.createComponentVNode)(2,a.Button,{icon:"upload",tooltip:"Upload",onClick:function(){return i(e.name)}}))],0)})]},e.name)}))]})}},38773:function(e,t,n){"use strict";t.__esModule=!0,t.NtosJobManagerContent=t.NtosJobManager=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosJobManager=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:400,height:620,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.authed,d=i.cooldown,u=i.slots,s=void 0===u?[]:u,m=i.prioritized,p=void 0===m?[]:m;return l?(0,o.createComponentVNode)(2,a.Section,{children:[d>0&&(0,o.createComponentVNode)(2,a.Dimmer,{children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,textAlign:"center",fontSize:"20px",children:["On Cooldown: ",d,"s"]})}),(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Prioritized"}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Slots"})]}),s.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{className:"candystripe",children:[(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,children:(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:e.title,disabled:e.total<=0,checked:e.total>0&&p.includes(e.title),onClick:function(){return c("PRG_priority",{target:e.title})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[e.current," / ",e.total]}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,a.Button,{content:"Open",disabled:!e.status_open,onClick:function(){return c("PRG_open_job",{target:e.title})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Close",disabled:!e.status_close,onClick:function(){return c("PRG_close_job",{target:e.title})}})]})]},e.title)}))]})]}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Current ID does not have access permissions to change job slots."})};t.NtosJobManagerContent=i},59543:function(e,t,n){"use strict";t.__esModule=!0,t.NtosMain=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i={compconfig:"cog",ntndownloader:"download",filemanager:"folder",smmonitor:"radiation",alarmmonitor:"bell",cardmod:"id-card",arcade:"gamepad",ntnrc_client:"comment-alt",nttransfer:"exchange-alt",powermonitor:"plug",job_manage:"address-book",crewmani:"clipboard-list",robocontrol:"robot",atmosscan:"thermometer-half",shipping:"tags"};t.NtosMain=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.device_theme,s=d.programs,m=void 0===s?[]:s,p=d.has_light,C=d.light_on,h=d.comp_light_color,N=d.removable_media,V=void 0===N?[]:N,b=d.login,f=void 0===b?[]:b;return(0,o.createComponentVNode)(2,c.NtosWindow,{title:"syndicate"===u?"Syndix Main Menu":"NtOS Main Menu",theme:u,width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[!!p&&(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Button,{width:"144px",icon:"lightbulb",selected:C,onClick:function(){return l("PC_toggle_light")},children:["Flashlight: ",C?"ON":"OFF"]}),(0,o.createComponentVNode)(2,a.Button,{ml:1,onClick:function(){return l("PC_light_color")},children:["Color:",(0,o.createComponentVNode)(2,a.ColorBox,{ml:1,color:h})]})]}),(0,o.createComponentVNode)(2,a.Section,{title:"User Login",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject ID",disabled:!f.IDName,onClick:function(){return l("PC_Eject_Disk",{name:"ID"})}}),children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{children:["ID Name: ",f.IDName]}),(0,o.createComponentVNode)(2,a.Table.Row,{children:["Assignment: ",f.IDJob]})]})}),!!V.length&&(0,o.createComponentVNode)(2,a.Section,{title:"Media Eject",children:(0,o.createComponentVNode)(2,a.Table,{children:V.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"transparent",icon:"eject",content:e,onClick:function(){return l("PC_Eject_Disk",{name:e})}})})},e)}))})}),(0,o.createComponentVNode)(2,a.Section,{title:"Programs",children:(0,o.createComponentVNode)(2,a.Table,{children:m.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,color:"transparent",icon:i[e.name]||"window-maximize-o",content:e.desc,onClick:function(){return l("PC_runprogram",{name:e.name})}})}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,width:"18px",children:!!e.running&&(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"times",tooltip:"Close program",tooltipPosition:"left",onClick:function(){return l("PC_killprogram",{name:e.name})}})})]},e.name)}))})})]})})}},73883:function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetChat=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosNetChat=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.can_admin,u=l.adminmode,s=l.authed,m=l.username,p=l.active_channel,C=l.is_operator,h=l.all_channels,N=void 0===h?[]:h,V=l.clients,b=void 0===V?[]:V,f=l.messages,g=void 0===f?[]:f,v=null!==p,k=s||u;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:900,height:675,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,a.Section,{height:"600px",children:(0,o.createComponentVNode)(2,a.Table,{height:"580px",children:(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"200px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"537px",overflowY:"scroll",children:[(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"New Channel...",onCommit:function(e,t){return i("PRG_newchannel",{new_channel_name:t})}}),N.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:e.chan,selected:e.id===p,color:"transparent",onClick:function(){return i("PRG_joinchannel",{id:e.id})}},e.chan)}))]}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,mt:1,content:m+"...",currentValue:m,onCommit:function(e,t){return i("PRG_changename",{new_name:t})}}),!!d&&(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:"ADMIN MODE: "+(u?"ON":"OFF"),color:u?"bad":"good",onClick:function(){return i("PRG_toggleadmin")}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Box,{height:"560px",overflowY:"scroll",children:v&&(k?g.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.msg},e.msg)})):(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"exclamation-triangle",mt:4,fontSize:"40px"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,fontSize:"18px",children:"THIS CHANNEL IS PASSWORD PROTECTED"}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:"INPUT PASSWORD TO ACCESS"})]}))}),(0,o.createComponentVNode)(2,a.Input,{fluid:!0,selfClear:!0,mt:1,onEnter:function(e,t){return i("PRG_speak",{message:t})}})]}),(0,o.createComponentVNode)(2,a.Table.Cell,{verticalAlign:"top",style:{width:"150px"},children:[(0,o.createComponentVNode)(2,a.Box,{height:"477px",overflowY:"scroll",children:b.map((function(e){return(0,o.createComponentVNode)(2,a.Box,{children:e.name},e.name)}))}),v&&k&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Save log...",defaultValue:"new_log",onCommit:function(e,t){return i("PRG_savelog",{log_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Leave Channel",onClick:function(){return i("PRG_leavechannel")}})],4),!!C&&s&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button.Confirm,{fluid:!0,content:"Delete Channel",onClick:function(){return i("PRG_deletechannel")}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Rename Channel...",onCommit:function(e,t){return i("PRG_renamechannel",{new_name:t})}}),(0,o.createComponentVNode)(2,a.Button.Input,{fluid:!0,content:"Set Password...",onCommit:function(e,t){return i("PRG_setpassword",{new_password:t})}})],4)]})]})})})})})}},83908:function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDosContent=t.NtosNetDos=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosNetDos=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:400,height:250,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.relays,d=void 0===l?[]:l,u=i.focus,s=i.target,m=i.speed,p=i.overload,C=i.capacity,h=i.error;if(h)return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.NoticeBox,{children:h}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Reset",textAlign:"center",onClick:function(){return c("PRG_reset")}})],4);var N=function(e){for(var t="",n=p/C;t.lengthn?t+="0":t+="1";return t};return s?(0,o.createComponentVNode)(2,a.Section,{fontFamily:"monospace",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Box,{children:["CURRENT SPEED: ",m," GQ/s"]}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)}),(0,o.createComponentVNode)(2,a.Box,{children:N(45)})]}):(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target",children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{content:e.id,selected:u===e.id,onClick:function(){return c("PRG_target_relay",{targid:e.id})}},e.id)}))})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,bold:!0,content:"EXECUTE",color:"bad",textAlign:"center",disabled:!u,mt:1,onClick:function(){return c("PRG_execute")}})]})};t.NtosNetDosContent=i},83305:function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetDownloader=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosNetDownloader=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.PC_device_theme,s=d.disk_size,m=d.disk_used,p=d.downloadable_programs,C=void 0===p?[]:p,h=d.error,N=d.hacked_programs,V=void 0===N?[]:N,b=d.hackedavailable;return(0,o.createComponentVNode)(2,c.NtosWindow,{theme:u,width:480,height:735,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[!!h&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:[(0,o.createComponentVNode)(2,a.Box,{mb:1,children:h}),(0,o.createComponentVNode)(2,a.Button,{content:"Reset",onClick:function(){return l("PRG_reseterror")}})]}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Disk usage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m,minValue:0,maxValue:s,children:m+" GQ / "+s+" GQ"})})})}),(0,o.createComponentVNode)(2,a.Section,{children:C.map((function(e){return(0,o.createComponentVNode)(2,i,{program:e},e.filename)}))}),!!b&&(0,o.createComponentVNode)(2,a.Section,{title:"UNKNOWN Software Repository",children:[(0,o.createComponentVNode)(2,a.NoticeBox,{mb:1,children:"Please note that Nanotrasen does not recommend download of software from non-official servers."}),V.map((function(e){return(0,o.createComponentVNode)(2,i,{program:e},e.filename)}))]})]})})};var i=function(e,t){var n=e.program,c=(0,r.useBackend)(t),i=c.act,l=c.data,d=l.disk_size,u=l.disk_used,s=l.downloadcompletion,m=l.downloading,p=l.downloadname,C=l.downloadsize,h=d-u;return(0,o.createComponentVNode)(2,a.Box,{mb:3,children:[(0,o.createComponentVNode)(2,a.Flex,{align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,grow:1,children:n.filedesc}),(0,o.createComponentVNode)(2,a.Flex.Item,{color:"label",nowrap:!0,children:[n.size," GQ"]}),(0,o.createComponentVNode)(2,a.Flex.Item,{ml:2,width:"94px",textAlign:"center",children:n.filename===p&&(0,o.createComponentVNode)(2,a.ProgressBar,{color:"green",minValue:0,maxValue:C,value:s})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"download",content:"Download",disabled:m||n.size>h,onClick:function(){return i("PRG_downloadfile",{filename:n.filename})}})})]}),"Compatible"!==n.compatibility&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Incompatible!"]}),n.size>h&&(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,fontSize:"12px",position:"relative",children:[(0,o.createComponentVNode)(2,a.Icon,{mx:1,color:"red",name:"times"}),"Not enough disk space!"]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,italic:!0,color:"label",fontSize:"12px",children:n.fileinfo})]})}},6806:function(e,t,n){"use strict";t.__esModule=!0,t.NtosNetMonitor=void 0;var o=n(39812),r=n(74814),a=n(71494),c=n(85952);t.NtosNetMonitor=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data,d=l.ntnetrelays,u=l.ntnetstatus,s=l.config_softwaredownload,m=l.config_peertopeer,p=l.config_communication,C=l.config_systemcontrol,h=l.idsalarm,N=l.idsstatus,V=l.ntnetmaxlogs,b=l.maxlogs,f=l.minlogs,g=l.ntnetlogs,v=void 0===g?[]:g;return(0,o.createComponentVNode)(2,c.NtosWindow,{resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,r.NoticeBox,{children:"WARNING: Disabling wireless transmitters when using a wireless device may prevent you from reenabling them!"}),(0,o.createComponentVNode)(2,r.Section,{title:"Wireless Connectivity",buttons:(0,o.createComponentVNode)(2,r.Button.Confirm,{icon:u?"power-off":"times",content:u?"ENABLED":"DISABLED",selected:u,onClick:function(){return i("toggleWireless")}}),children:d?(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Active NTNet Relays",children:d})}):"No Relays Connected"}),(0,o.createComponentVNode)(2,r.Section,{title:"Firewall Configuration",children:(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Software Downloads",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:s?"power-off":"times",content:s?"ENABLED":"DISABLED",selected:s,onClick:function(){return i("toggle_function",{id:"1"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Peer to Peer Traffic",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:m?"power-off":"times",content:m?"ENABLED":"DISABLED",selected:m,onClick:function(){return i("toggle_function",{id:"2"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Communication Systems",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:p?"power-off":"times",content:p?"ENABLED":"DISABLED",selected:p,onClick:function(){return i("toggle_function",{id:"3"})}})}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Remote System Control",buttons:(0,o.createComponentVNode)(2,r.Button,{icon:C?"power-off":"times",content:C?"ENABLED":"DISABLED",selected:C,onClick:function(){return i("toggle_function",{id:"4"})}})})]})}),(0,o.createComponentVNode)(2,r.Section,{title:"Security Systems",children:[!!h&&(0,o.createFragment)([(0,o.createComponentVNode)(2,r.NoticeBox,{children:"NETWORK INCURSION DETECTED"}),(0,o.createComponentVNode)(2,r.Box,{italics:!0,children:"Abnormal activity has been detected in the network. Check system logs for more information"})],4),(0,o.createComponentVNode)(2,r.LabeledList,{children:[(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"IDS Status",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,r.Button,{icon:N?"power-off":"times",content:N?"ENABLED":"DISABLED",selected:N,onClick:function(){return i("toggleIDS")}}),(0,o.createComponentVNode)(2,r.Button,{icon:"sync",content:"Reset",color:"bad",onClick:function(){return i("resetIDS")}})],4)}),(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Max Log Count",buttons:(0,o.createComponentVNode)(2,r.NumberInput,{value:V,minValue:f,maxValue:b,width:"39px",onChange:function(e,t){return i("updatemaxlogs",{new_number:t})}})})]}),(0,o.createComponentVNode)(2,r.Section,{title:"System Log",level:2,buttons:(0,o.createComponentVNode)(2,r.Button.Confirm,{icon:"trash",content:"Clear Logs",onClick:function(){return i("purgelogs")}}),children:v.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{className:"candystripe",children:e.entry},e.entry)}))})]})]})})}},54698:function(e,t,n){"use strict";t.__esModule=!0,t.NtosPowerMonitor=void 0;var o=n(39812),r=n(85952),a=n(89793);t.NtosPowerMonitor=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:550,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.PowerMonitorContent)})})}},49413:function(e,t,n){"use strict";t.__esModule=!0,t.NtosRadarContent=t.NtosRadar=void 0;var o=n(39812),r=n(34380),a=n(5908),c=n(71494),i=n(74814),l=n(85952);t.NtosRadar=function(e,t){return(0,o.createComponentVNode)(2,l.NtosWindow,{width:800,height:600,theme:"ntos",children:(0,o.createComponentVNode)(2,d,{sig_err:"Signal Lost"})})};var d=function(e,t){var n=(0,c.useBackend)(t),d=n.act,u=n.data,s=u.selected,m=u.object,p=void 0===m?[]:m,C=u.target,h=void 0===C?[]:C,N=u.scanning,V=e.sig_err;return(0,o.createComponentVNode)(2,i.Flex,{direction:"row",hight:"100%",children:[(0,o.createComponentVNode)(2,i.Flex.Item,{position:"relative",width:20.5,hight:"100%",children:(0,o.createComponentVNode)(2,l.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i.Section,{children:[(0,o.createComponentVNode)(2,i.Button,{icon:"redo-alt",content:N?"Scanning...":"Scan",color:"blue",disabled:N,onClick:function(){return d("scan")}}),!p.length&&!N&&(0,o.createVNode)(1,"div",null,"No trackable signals found",16),!N&&p.map((function(e){return(0,o.createVNode)(1,"div",(0,r.classes)(["Button","Button--fluid","Button--color--transparent","Button--ellipsis",e.ref===s&&"Button--selected"]),e.name,0,{title:e.name,onClick:function(){d("selecttarget",{ref:e.ref})}},e.dev)}))]})})}),(0,o.createComponentVNode)(2,i.Flex.Item,{style:{"background-image":'url("'+(0,a.resolveAsset)("ntosradarbackground.png")+'")',"background-position":"center","background-repeat":"no-repeat",top:"20px"},position:"relative",m:1.5,width:45,height:45,children:0===Object.keys(h).length?!!s&&(0,o.createComponentVNode)(2,i.NoticeBox,{position:"absolute",top:20.6,left:1.35,width:42,fontSize:"30px",textAlign:"center",children:V}):!!h.userot&&(0,o.createComponentVNode)(2,i.Box,{as:"img",src:(0,a.resolveAsset)(h.arrowstyle),position:"absolute",top:"20px",left:"243px",style:{transform:"rotate("+h.rot+"deg)"}})||(0,o.createComponentVNode)(2,i.Icon,{name:h.pointer,position:"absolute",size:2,color:h.color,top:10*h.locy+19+"px",left:10*h.locx+16+"px"})})]})};t.NtosRadarContent=d},41935:function(e,t,n){"use strict";t.__esModule=!0,t.NtosRadarSyndicate=void 0;var o=n(39812),r=n(85952),a=n(49413);t.NtosRadarSyndicate=function(e,t){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:800,height:600,theme:"syndicate",children:(0,o.createComponentVNode)(2,a.NtosRadarContent,{sig_err:"Out of Range"})})}},60839:function(e,t,n){"use strict";t.__esModule=!0,t.NtosRequestKiosk=void 0;var o=n(39812),r=n(18374),a=n(85952);t.NtosRequestKiosk=function(e,t){return(0,o.createComponentVNode)(2,a.NtosWindow,{width:550,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,a.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,r.RequestKioskContent)})})}},69480:function(e,t,n){"use strict";t.__esModule=!0,t.NtosRevelation=void 0;var o=n(39812),r=n(74814),a=n(71494),c=n(85952);t.NtosRevelation=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:400,height:250,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{children:(0,o.createComponentVNode)(2,r.Section,{children:[(0,o.createComponentVNode)(2,r.Button.Input,{fluid:!0,content:"Obfuscate Name...",onCommit:function(e,t){return i("PRG_obfuscate",{new_name:t})},mb:1}),(0,o.createComponentVNode)(2,r.LabeledList,{children:(0,o.createComponentVNode)(2,r.LabeledList.Item,{label:"Payload Status",buttons:(0,o.createComponentVNode)(2,r.Button,{content:l.armed?"ARMED":"DISARMED",color:l.armed?"bad":"average",onClick:function(){return i("PRG_arm")}})})}),(0,o.createComponentVNode)(2,r.Button,{fluid:!0,bold:!0,content:"ACTIVATE",textAlign:"center",color:"bad",disabled:!l.armed})]})})})}},36888:function(e,t,n){"use strict";t.__esModule=!0,t.NtosRoboControl=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosRoboControl=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.bots,s=d.id_owner,m=d.has_id;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:550,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Robot Control Console",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Id Card",children:[s,!!m&&(0,o.createComponentVNode)(2,a.Button,{ml:2,icon:"eject",content:"Eject",onClick:function(){return l("ejectcard")}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Bots in range",children:d.botcount})]})}),null==u?void 0:u.map((function(e){return(0,o.createComponentVNode)(2,i,{robot:e},e.bot_ref)}))]})})};var i=function(e,t){var n=e.robot,c=(0,r.useBackend)(t),i=c.act,l=c.data,d=l.mules||[],u=!!n.mule_check&&function(e,t){return null==e?void 0:e.find((function(e){return e.mule_ref===t}))}(d,n.bot_ref),s=1===n.mule_check?"rgba(110, 75, 14, 1)":"rgba(74, 59, 140, 1)";return(0,o.createComponentVNode)(2,a.Section,{title:n.name,style:{border:"4px solid "+s},buttons:u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"play",tooltip:"Go to Destination.",onClick:function(){return i("go",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"pause",tooltip:"Stop Moving.",onClick:function(){return i("stop",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"home",tooltip:"Travel Home.",tooltipPosition:"bottom-left",onClick:function(){return i("home",{robot:u.mule_ref})}})],4),children:(0,o.createComponentVNode)(2,a.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Model",children:n.model}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:n.locat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:n.mode}),u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Loaded Cargo",children:l.load||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Home",children:u.home}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:u.dest||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:u.power,minValue:0,maxValue:100,ranges:{good:[60,Infinity],average:[20,60],bad:[-Infinity,20]}})})],4)]})}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"150px",children:[u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Set Destination",onClick:function(){return i("destination",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Set ID",onClick:function(){return i("setid",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Set Home",onClick:function(){return i("sethome",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Unload Cargo",onClick:function(){return i("unload",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:"Auto Return",checked:u.autoReturn,onClick:function(){return i("autoret",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:"Auto Pickup",checked:u.autoPickup,onClick:function(){return i("autopick",{robot:u.mule_ref})}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,content:"Delivery Report",checked:u.reportDelivery,onClick:function(){return i("report",{robot:u.mule_ref})}})],4),!u&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Stop Patrol",onClick:function(){return i("patroloff",{robot:n.bot_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Start Patrol",onClick:function(){return i("patrolon",{robot:n.bot_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Summon",onClick:function(){return i("summon",{robot:n.bot_ref})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Eject PAi",onClick:function(){return i("ejectpai",{robot:n.bot_ref})}})],4)]})]})})}},55431:function(e,t,n){"use strict";t.__esModule=!0,t.NtosShipping=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.NtosShipping=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.NtosWindow,{width:450,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"NTOS Shipping Hub.",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Id",onClick:function(){return i("ejectid")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current User",children:l.current_user||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Inserted Card",children:l.card_owner||"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available Paper",children:l.has_printer?l.paperamt:"N/A"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Profit on Sale",children:[l.barcode_split,"%"]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Shipping Options",children:[(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"id-card",tooltip:"The currently ID card will become the current user.",tooltipPosition:"right",disabled:!l.has_id_slot,onClick:function(){return i("selectid")},content:"Set Current ID"})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"print",tooltip:"Print a barcode to use on a wrapped package.",tooltipPosition:"right",disabled:!l.has_printer||!l.current_user,onClick:function(){return i("print")},content:"Print Barcode"})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"tags",tooltip:"Set how much profit you'd like on your package.",tooltipPosition:"right",onClick:function(){return i("setsplit")},content:"Set Profit Margin"})}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.Button,{icon:"sync-alt",content:"Reset ID",onClick:function(){return i("resetid")}})})]})]})})}},76124:function(e,t,n){"use strict";t.__esModule=!0,t.NtosStationAlertConsole=void 0;var o=n(39812),r=n(85952),a=n(32015);t.NtosStationAlertConsole=function(){return(0,o.createComponentVNode)(2,r.NtosWindow,{width:315,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,r.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.StationAlertConsoleContent)})})}},22475:function(e,t,n){"use strict";t.__esModule=!0,t.NtosSupermatterMonitorContent=t.NtosSupermatterMonitor=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(41860),i=n(71494),l=n(74814),d=n(76270),u=n(85952),s=function(e){return Math.log2(16+Math.max(0,e))-4};t.NtosSupermatterMonitor=function(e,t){return(0,o.createComponentVNode)(2,u.NtosWindow,{width:600,height:350,resizable:!0,children:(0,o.createComponentVNode)(2,u.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,m)})})};var m=function(e,t){var n=(0,i.useBackend)(t),u=n.act,m=n.data,C=m.active,h=m.SM_integrity,N=m.SM_power,V=m.SM_ambienttemp,b=m.SM_ambientpressure;if(!C)return(0,o.createComponentVNode)(2,p);var f=(0,a.flow)([function(e){return e.filter((function(e){return e.amount>=.01}))},(0,r.sortBy)((function(e){return-e.amount}))])(m.gases||[]),g=Math.max.apply(Math,[1].concat(f.map((function(e){return e.amount}))));return(0,o.createComponentVNode)(2,l.Flex,{spacing:1,children:[(0,o.createComponentVNode)(2,l.Flex.Item,{width:"270px",children:(0,o.createComponentVNode)(2,l.Section,{title:"Metrics",children:(0,o.createComponentVNode)(2,l.LabeledList,{children:[(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Integrity",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:h/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Relative EER",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:N,minValue:0,maxValue:5e3,ranges:{good:[-Infinity,5e3],average:[5e3,7e3],bad:[7e3,Infinity]},children:(0,c.toFixed)(N)+" MeV/cm3"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Temperature",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:s(V),minValue:0,maxValue:s(1e4),ranges:{teal:[-Infinity,s(80)],good:[s(80),s(373)],average:[s(373),s(1e3)],bad:[s(1e3),Infinity]},children:(0,c.toFixed)(V)+" K"})}),(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:"Pressure",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:s(b),minValue:0,maxValue:s(5e4),ranges:{good:[s(1),s(300)],average:[-Infinity,s(1e3)],bad:[s(1e3),+Infinity]},children:(0,c.toFixed)(b)+" kPa"})})]})})}),(0,o.createComponentVNode)(2,l.Flex.Item,{grow:1,basis:0,children:(0,o.createComponentVNode)(2,l.Section,{title:"Gases",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"arrow-left",content:"Back",onClick:function(){return u("PRG_clear")}}),children:(0,o.createComponentVNode)(2,l.LabeledList,{children:f.map((function(e){return(0,o.createComponentVNode)(2,l.LabeledList.Item,{label:(0,d.getGasLabel)(e.name),children:(0,o.createComponentVNode)(2,l.ProgressBar,{color:(0,d.getGasColor)(e.name),value:e.amount,minValue:0,maxValue:g,children:(0,c.toFixed)(e.amount,2)+"%"})},e.name)}))})})})]})};t.NtosSupermatterMonitorContent=m;var p=function(e,t){var n=(0,i.useBackend)(t),r=n.act,a=n.data.supermatters,c=void 0===a?[]:a;return(0,o.createComponentVNode)(2,l.Section,{title:"Detected Supermatters",buttons:(0,o.createComponentVNode)(2,l.Button,{icon:"sync",content:"Refresh",onClick:function(){return r("PRG_refresh")}}),children:(0,o.createComponentVNode)(2,l.Table,{children:c.map((function(e){return(0,o.createComponentVNode)(2,l.Table.Row,{children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.uid+". "+e.area_name}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,color:"label",children:"Integrity:"}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,width:"120px",children:(0,o.createComponentVNode)(2,l.ProgressBar,{value:e.integrity/100,ranges:{good:[.9,Infinity],average:[.5,.9],bad:[-Infinity,.5]}})}),(0,o.createComponentVNode)(2,l.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,l.Button,{content:"Details",onClick:function(){return r("PRG_set",{target:e.uid})}})})]},e.uid)}))})})}},78467:function(e,t,n){"use strict";t.__esModule=!0,t.NuclearBomb=void 0;var o=n(39812),r=n(34380),a=n(71494),c=n(74814),i=n(85952),l=function(e,t){var n=(0,a.useBackend)(t).act;return(0,o.createComponentVNode)(2,c.Box,{width:"185px",children:(0,o.createComponentVNode)(2,c.Grid,{width:"1px",children:[["1","4","7","C"],["2","5","8","0"],["3","6","9","E"]].map((function(e){return(0,o.createComponentVNode)(2,c.Grid.Column,{children:e.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,mb:"6px",content:e,textAlign:"center",fontSize:"40px",lineHeight:1.25,width:"55px",className:(0,r.classes)(["NuclearBomb__Button","NuclearBomb__Button--keypad","NuclearBomb__Button--"+e]),onClick:function(){return n("keypad",{digit:e})}},e)}))},e[0])}))})})};t.NuclearBomb=function(e,t){var n=(0,a.useBackend)(t),r=n.act,d=n.data,u=(d.anchored,d.disk_present,d.status1),s=d.status2;return(0,o.createComponentVNode)(2,i.Window,{width:350,height:442,theme:"retro",children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Box,{m:"6px",children:[(0,o.createComponentVNode)(2,c.Box,{mb:"6px",className:"NuclearBomb__displayBox",children:u}),(0,o.createComponentVNode)(2,c.Flex,{mb:1.5,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,c.Box,{className:"NuclearBomb__displayBox",children:s})}),(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Button,{icon:"eject",fontSize:"24px",lineHeight:1,textAlign:"center",width:"43px",ml:"6px",mr:"3px",mt:"3px",className:"NuclearBomb__Button NuclearBomb__Button--keypad",onClick:function(){return r("eject_disk")}})})]}),(0,o.createComponentVNode)(2,c.Flex,{ml:"3px",children:[(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,l)}),(0,o.createComponentVNode)(2,c.Flex.Item,{ml:"6px",width:"129px",children:(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"ARM",textAlign:"center",fontSize:"28px",lineHeight:1.1,mb:"6px",className:"NuclearBomb__Button NuclearBomb__Button--C",onClick:function(){return r("arm")}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"ANCHOR",textAlign:"center",fontSize:"28px",lineHeight:1.1,className:"NuclearBomb__Button NuclearBomb__Button--E",onClick:function(){return r("anchor")}}),(0,o.createComponentVNode)(2,c.Box,{textAlign:"center",color:"#9C9987",fontSize:"80px",children:(0,o.createComponentVNode)(2,c.Icon,{name:"radiation"})}),(0,o.createComponentVNode)(2,c.Box,{height:"80px",className:"NuclearBomb__NTIcon"})]})})]})]})})})}},48826:function(e,t,n){"use strict";t.__esModule=!0,t.OperatingComputer=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Respiratory",type:"oxyLoss"}];t.OperatingComputer=function(e,t){var n=(0,r.useSharedState)(t,"tab",1),i=n[0],u=n[1];return(0,o.createComponentVNode)(2,c.Window,{width:350,height:470,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===i,onClick:function(){return u(1)},children:"Patient State"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===i,onClick:function(){return u(2)},children:"Surgery Procedures"})]}),1===i&&(0,o.createComponentVNode)(2,l),2===i&&(0,o.createComponentVNode)(2,d)]})})};var l=function(e,t){var n=(0,r.useBackend)(t),c=(n.act,n.data),l=c.table,d=c.procedures,u=void 0===d?[]:d,s=c.patient,m=void 0===s?{}:s;return l?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Patient State",children:m&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"State",color:m.statstate,children:m.stat}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Blood Type",children:m.blood_type}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m.health,minValue:m.minHealth,maxValue:m.maxHealth,color:m.health>=0?"good":"average",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m.health})})}),i.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m[e.type]/m.maxHealth,color:"bad",children:(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:m[e.type]})})},e.type)}))]})||"No Patient Detected"}),0===u.length&&(0,o.createComponentVNode)(2,a.Section,{children:"No Active Procedures"}),u.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Next Step",children:[e.next_step,e.chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.chems_needed],0)]}),!!c.alternative_step&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Alternative Step",children:[e.alternative_step,e.alt_chems_needed&&(0,o.createFragment)([(0,o.createVNode)(1,"b",null,"Required Chemicals:",16),(0,o.createVNode)(1,"br"),e.alt_chems_needed],0)]})]})},e.name)}))],0):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Table Detected"})},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.surgeries,l=void 0===i?[]:i;return(0,o.createComponentVNode)(2,a.Section,{title:"Advanced Surgery Procedures",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"download",content:"Sync Research Database",onClick:function(){return c("sync")}}),l.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,level:2,children:e.desc},e.name)}))]})}},36983:function(e,t,n){"use strict";t.__esModule=!0,t.Orbit=void 0;var o=n(39812),r=n(2497),a=n(5908),c=n(71494),i=n(74814),l=n(85952);function d(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return u(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=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.")}return(n=e[Symbol.iterator]()).next.bind(n)}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);nt},h=function(e,t){var n=e.name,o=t.name,r=n.match(m),a=o.match(m);return r&&a&&n.replace(m,"")===o.replace(m,"")?parseInt(r[1],10)-parseInt(a[1],10):C(n,o)},N=function(e,t){var n=(0,c.useBackend)(t).act,r=e.searchText,a=e.source,l=e.title,d=a.filter(p(r));return d.sort(h),a.length>0&&(0,o.createComponentVNode)(2,i.Section,{title:l+" - ("+a.length+")",children:d.map((function(e){return(0,o.createComponentVNode)(2,i.Button,{content:e.name.replace(s,""),onClick:function(){return n("orbit",{ref:e.ref})}},e.name)}))})},V=function(e,t){var n=(0,c.useBackend)(t).act,r=e.color,l=e.thing;return(0,o.createComponentVNode)(2,i.Button,{color:r,onClick:function(){return n("orbit",{ref:l.ref})},children:[l.name,l.orbiters&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,ml:1,children:["(",l.orbiters," ",(0,o.createComponentVNode)(2,i.Box,{as:"img",src:(0,a.resolveAsset)("ghost.png"),opacity:.7}),")"]})]})};t.Orbit=function(e,t){for(var n,r=(0,c.useBackend)(t),a=r.act,u=r.data,s=u.alive,m=u.antagonists,b=u.dead,f=u.ghosts,g=u.misc,v=u.npcs,k=(0,c.useLocalState)(t,"searchText",""),x=k[0],B=k[1],_={},w=d(m);!(n=w()).done;){var L=n.value;_[L.antag]===undefined&&(_[L.antag]=[]),_[L.antag].push(L)}var y=Object.entries(_);y.sort((function(e,t){return C(e[0],t[0])}));return(0,o.createComponentVNode)(2,l.Window,{title:"Orbit",width:350,height:700,children:(0,o.createComponentVNode)(2,l.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.Flex,{children:[(0,o.createComponentVNode)(2,i.Flex.Item,{children:(0,o.createComponentVNode)(2,i.Icon,{name:"search",mr:1})}),(0,o.createComponentVNode)(2,i.Flex.Item,{grow:1,children:(0,o.createComponentVNode)(2,i.Input,{placeholder:"Search...",autoFocus:!0,fluid:!0,value:x,onInput:function(e,t){return B(t)},onEnter:function(e,t){return function(e){for(var t=0,n=[y.map((function(e){return e[0],e[1]})),s,f,b,v,g];t0&&(0,o.createComponentVNode)(2,i.Section,{title:"Ghost-Visible Antagonists",children:y.map((function(e){var t=e[0],n=e[1];return(0,o.createComponentVNode)(2,i.Section,{title:t,level:2,children:n.filter(p(x)).sort(h).map((function(e){return(0,o.createComponentVNode)(2,V,{color:"bad",thing:e},e.name)}))},t)}))}),(0,o.createComponentVNode)(2,i.Section,{title:"Alive",children:s.filter(p(x)).sort(h).map((function(e){return(0,o.createComponentVNode)(2,V,{color:"good",thing:e},e.name)}))}),(0,o.createComponentVNode)(2,N,{title:"Ghosts",source:f,searchText:x}),(0,o.createComponentVNode)(2,N,{title:"Dead",source:b,searchText:x}),(0,o.createComponentVNode)(2,N,{title:"NPCs",source:v,searchText:x}),(0,o.createComponentVNode)(2,N,{title:"Misc",source:g,searchText:x})]})})}},57800:function(e,t,n){"use strict";t.__esModule=!0,t.OreBox=void 0;var o=n(39812),r=n(2497),a=n(74814),c=n(71494),i=n(85952);t.OreBox=function(e,t){var n=(0,c.useBackend)(t),l=n.act,d=n.data.materials;return(0,o.createComponentVNode)(2,i.Window,{width:335,height:415,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Section,{title:"Ores",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Empty",onClick:function(){return l("removeall")}}),children:(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Ore"}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"right",children:"Amount"})]}),d.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:(0,r.toTitleCase)(e.name)}),(0,o.createComponentVNode)(2,a.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,a.Box,{color:"label",inline:!0,children:e.amount})})]},e.type)}))]})}),(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Box,{children:["All ores will be placed in here when you are wearing a mining stachel on your belt or in a pocket while dragging the ore box.",(0,o.createVNode)(1,"br"),"Gibtonite is not accepted."]})})]})})}},72938:function(e,t,n){"use strict";t.__esModule=!0,t.OreRedemptionMachine=void 0;var o=n(39812),r=n(2497),a=n(71494),c=n(74814),i=n(85952);t.OreRedemptionMachine=function(e,t){var n=(0,a.useBackend)(t),r=n.act,d=n.data,u=d.unclaimedPoints,s=d.materials,m=d.alloys,p=d.diskDesigns,C=d.hasDisk;return(0,o.createComponentVNode)(2,i.Window,{title:"Ore Redemption Machine",width:440,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.BlockQuote,{mb:1,children:["This machine only accepts ore.",(0,o.createVNode)(1,"br"),"Gibtonite and Slag are not accepted."]}),(0,o.createComponentVNode)(2,c.Box,{children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"label",mr:1,children:"Unclaimed points:"}),u,(0,o.createComponentVNode)(2,c.Button,{ml:2,content:"Claim",disabled:0===u,onClick:function(){return r("Claim")}})]})]}),(0,o.createComponentVNode)(2,c.Section,{children:C&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Box,{mb:1,children:(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject design disk",onClick:function(){return r("diskEject")}})}),(0,o.createComponentVNode)(2,c.Table,{children:p.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:["File ",e.index,": ",e.name]}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:(0,o.createComponentVNode)(2,c.Button,{disabled:!e.canupload,content:"Upload",onClick:function(){return r("diskUpload",{design:e.index})}})})]},e.index)}))})],4)||(0,o.createComponentVNode)(2,c.Button,{icon:"save",content:"Insert design disk",onClick:function(){return r("diskInsert")}})}),(0,o.createComponentVNode)(2,c.Section,{title:"Materials",children:(0,o.createComponentVNode)(2,c.Table,{children:s.map((function(e){return(0,o.createComponentVNode)(2,l,{material:e,onRelease:function(t){return r("Release",{id:e.id,sheets:t})}},e.id)}))})}),(0,o.createComponentVNode)(2,c.Section,{title:"Alloys",children:(0,o.createComponentVNode)(2,c.Table,{children:m.map((function(e){return(0,o.createComponentVNode)(2,l,{material:e,onRelease:function(t){return r("Smelt",{id:e.id,sheets:t})}},e.id)}))})})]})})};var l=function(e,t){var n=e.material,i=e.onRelease,l=(0,a.useLocalState)(t,"amount"+n.name,1),d=l[0],u=l[1],s=Math.floor(n.amount);return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,r.toTitleCase)(n.name).replace("Alloy","")}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Box,{mr:2,color:"label",inline:!0,children:n.value&&n.value+" cr"})}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:(0,o.createComponentVNode)(2,c.Box,{mr:2,color:"label",inline:!0,children:[s," sheets"]})}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,c.NumberInput,{width:"32px",step:1,stepPixelSize:5,minValue:1,maxValue:50,value:d,onChange:function(e,t){return u(t)}}),(0,o.createComponentVNode)(2,c.Button,{disabled:s<1,content:"Release",onClick:function(){return i(d)}})]})]})}},47944:function(e,t,n){"use strict";t.__esModule=!0,t.Pandemic=t.PandemicAntibodyDisplay=t.PandemicSymptomDisplay=t.PandemicDiseaseDisplay=t.PandemicBeakerDisplay=void 0;var o=n(39812),r=n(64499),a=n(71494),c=n(74814),i=n(85952),l=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.has_beaker,d=i.beaker_empty,u=i.has_blood,s=i.blood,m=!l||d;return(0,o.createComponentVNode)(2,c.Section,{title:"Beaker",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"times",content:"Empty and Eject",color:"bad",disabled:m,onClick:function(){return r("empty_eject_beaker")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"trash",content:"Empty",disabled:m,onClick:function(){return r("empty_beaker")}}),(0,o.createComponentVNode)(2,c.Button,{icon:"eject",content:"Eject",disabled:!l,onClick:function(){return r("eject_beaker")}})],4),children:l?d?(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"Beaker is empty"}):u?(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Blood DNA",children:s&&s.dna||"Unknown"}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Blood Type",children:s&&s.type||"Unknown"})]}):(0,o.createComponentVNode)(2,c.Box,{color:"bad",children:"No blood detected"}):(0,o.createComponentVNode)(2,c.NoticeBox,{children:"No beaker loaded"})})};t.PandemicBeakerDisplay=l;var d=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.is_ready;return(i.viruses||[]).map((function(e){var t=e.symptoms||[];return(0,o.createComponentVNode)(2,c.Section,{title:e.can_rename?(0,o.createComponentVNode)(2,c.Input,{value:e.name,onChange:function(t,n){return r("rename_disease",{index:e.index,name:n})}}):e.name,buttons:(0,o.createComponentVNode)(2,c.Button,{icon:"flask",content:"Create culture bottle",disabled:!l,onClick:function(){return r("create_culture_bottle",{index:e.index})}}),children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:e.description}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Agent",children:e.agent}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Spread",children:e.spread}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Possible Cure",children:e.cure})]})})]}),!!e.is_adv&&(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{title:"Statistics",level:2,children:(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Resistance",children:e.resistance}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stealth",children:e.stealth})]})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stage speed",children:e.stage_speed}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Transmissibility",children:e.transmission})]})})]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Symptoms",level:2,children:t.map((function(e){return(0,o.createComponentVNode)(2,c.Collapsible,{title:e.name,children:(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,u,{symptom:e})})},e.name)}))})],4)]},e.name)}))};t.PandemicDiseaseDisplay=d;var u=function(e,t){var n=e.symptom,a=n.name,i=n.desc,l=n.stealth,d=n.resistance,u=n.stage_speed,s=n.transmission,m=n.level,p=n.neutered,C=(0,r.map)((function(e,t){return{desc:e,label:t}}))(n.threshold_desc||{});return(0,o.createComponentVNode)(2,c.Section,{title:a,level:2,buttons:!!p&&(0,o.createComponentVNode)(2,c.Box,{bold:!0,color:"bad",children:"Neutered"}),children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:2,children:i}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Level",children:m}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Resistance",children:d}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stealth",children:l}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Stage Speed",children:u}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Transmission",children:s})]})})]}),C.length>0&&(0,o.createComponentVNode)(2,c.Section,{title:"Thresholds",level:3,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:C.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.label,children:e.desc},e.label)}))})})]})};t.PandemicSymptomDisplay=u;var s=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.resistances||[];return(0,o.createComponentVNode)(2,c.Section,{title:"Antibodies",children:l.length>0?(0,o.createComponentVNode)(2,c.LabeledList,{children:l.map((function(e){return(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:e.name,children:(0,o.createComponentVNode)(2,c.Button,{icon:"eye-dropper",content:"Create vaccine bottle",disabled:!i.is_ready,onClick:function(){return r("create_vaccine_bottle",{index:e.id})}})},e.name)}))}):(0,o.createComponentVNode)(2,c.Box,{bold:!0,color:"bad",mt:1,children:"No antibodies detected."})})};t.PandemicAntibodyDisplay=s;t.Pandemic=function(e,t){var n=(0,a.useBackend)(t).data;return(0,o.createComponentVNode)(2,i.Window,{width:520,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,l),!!n.has_blood&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d),(0,o.createComponentVNode)(2,s)],4)]})})}},52472:function(e,t,n){"use strict";t.__esModule=!0,t.PaperSheet=void 0;var o=n(39812),r=n(34380),a=n(51961),c=s(n(65054)),i=s(n(76756)),l=n(71494),d=n(74814),u=n(85952);function s(e){return e&&e.__esModule?e:{"default":e}}function m(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,v(e,t)}function p(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}function C(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return h(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return h(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=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.")}return(n=e[Symbol.iterator]()).next.bind(n)}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n]+)>/g,(function(e,t){return"$"+n[t]})))}if("function"==typeof t){var a=this;return o[Symbol.replace].call(this,e,(function(){var e=[];return e.push.apply(e,arguments),"object"!=typeof e[e.length-1]&&e.push(c(e,a)),t.apply(this,e)}))}return o[Symbol.replace].call(this,e,t)},N.apply(this,arguments)}function V(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&v(e,t)}function b(e){var t="function"==typeof Map?new Map:undefined;return(b=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,o)}function o(){return f(e,arguments,k(this).constructor)}return o.prototype=Object.create(e.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),v(o,e)})(e)}function f(e,t,n){return(f=g()?Reflect.construct:function(e,t,n){var o=[null];o.push.apply(o,t);var r=new(Function.bind.apply(e,o));return n&&v(r,n.prototype),r}).apply(null,arguments)}function g(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function v(e,t){return(v=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function k(e){return(k=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var x=5e3,B=function(e,t,n,o){return void 0===o&&(o=!1),"'+e+" "},_=/\[(_+)\]/g,w=N(/\[ \]/gm,{id:2}),L=/%s(?:ign)?(?=\\s|$)/gim,y=function(e,t,n,o,r){var a=e.replace(_,(function(e,a,c,i){var l=function(e,t,n){t=n+"x "+t;var o=document.createElement("canvas").getContext("2d");return o.font=t,o.measureText(e).width}(e,t,n)+"px";return function(e,t,n,o,r,a){return'[ '+(n=a,r=l,(r?n.replace(/ ")};return(0,o.createComponentVNode)(2,d.Box,{position:"relative",backgroundColor:i,width:"100%",height:"100%",children:[(0,o.createComponentVNode)(2,d.Box,{fillPositionedParent:!0,width:"100%",height:"100%",dangerouslySetInnerHTML:s,p:"10px"}),u.map((function(e,t){return(0,o.createComponentVNode)(2,I,{image:{sprite:e[0],x:e[1],y:e[2],rotate:e[3]}},e[0]+t)}))]})},A=function(e){function t(t,n){var o;return(o=e.call(this,t,n)||this).state={x:0,y:0,rotate:0},o}m(t,e);var n=t.prototype;return n.findStampPosition=function(e){for(var t=event.pageX,n=event.pageY,o={left:e.target.offsetLeft,top:e.target.offsetTop},r=e.target.offsetParent;r;)o.left+=r.offsetLeft,o.top+=r.offsetTop,r=r.offsetParent;var c=[t-o.left,n-o.top],i=(0,a.vecScale)([121,51],.5);return(0,a.vecSubtract)(c,i)},n.componentDidMount=function(){document.onwheel=this.handleWheel.bind(this)},n.handleMouseMove=function(e){var t=this.findStampPosition(e);S(e),this.setState({x:t[0],y:t[1]})},n.handleMouseClick=function(e){var t=this.findStampPosition(e),n=(0,l.useBackend)(this.context),o=n.act,r=n.data;o("stamp",{x:t[0],y:t[1],r:this.state.rotate,stamp_class:this.props.stamp_class,stamp_icon_state:r.stamp_icon_state}),this.setState({x:t[0],y:t[1]})},n.handleWheel=function(e){var t=e.deltaY>0?15:-15;if(e.deltaY<0&&0===this.state.rotate)this.setState({rotate:360+t});else if(e.deltaY>0&&360===this.state.rotate)this.setState({rotate:t});else{var n={rotate:t+this.state.rotate};this.setState((function(){return n}))}S(e)},n.render=function(){var e=this.props,t=e.value,n=e.stamp_class,r=e.stamps,a=p(e,["value","stamp_class","stamps"]),c=r||[],i={sprite:n,x:this.state.x,y:this.state.y,rotate:this.state.rotate};return(0,o.normalizeProps)((0,o.createComponentVNode)(2,d.Box,Object.assign({onClick:this.handleMouseClick.bind(this),onMouseMove:this.handleMouseMove.bind(this),onwheel:this.handleWheel.bind(this)},a,{children:[(0,o.createComponentVNode)(2,T,{readOnly:!0,value:t,stamps:c}),(0,o.createComponentVNode)(2,I,{opacity:.5,image:i})]})))},t}(o.Component),P=function(e){function t(t,n){var o;return(o=e.call(this,t,n)||this).state={previewSelected:"Preview",old_text:t.value||"",textarea_text:"",combined_text:t.value||""},o}m(t,e);var n=t.prototype;return n.createPreview=function(e,t){void 0===t&&(t=!1);var n,o,r=(0,l.useBackend)(this.context).data,a=r.text,d=r.pen_color,u=r.pen_font,s=r.is_crayon,m=r.field_counter,p=r.edit_usr,h={text:a};if((e=e.trim()).length>0){var N=function(e){return c["default"].sanitize(e,{FORBID_ATTR:["class","style"],ALLOWED_TAGS:["br","code","li","p","pre","span","table","td","tr","th","ul","ol","menu","font","b","center","table","tr","th"]})}(e+="\n"===e[e.length]?" \n":"\n \n"),V=(n=d,o=p,N.replace(L,(function(){return B(o,"Times New Roman",n,!0)}))),b=y(V,u,12,d,m),f=function(e){return(0,i["default"])(e,{breaks:!0,smartypants:!0,smartLists:!0,walkTokens:function(e){switch(e.type){case"url":case"autolink":case"reflink":case"link":case"image":e.type="text",e.href=""}},baseUrl:"thisshouldbreakhttp"})}(b.text),g=B(f,u,d,s);h.text+=g,h.field_counter=b.counter}if(t){var v=function(e,t,n,o,r){var a;void 0===r&&(r=!1);for(var i={},l=[];null!==(a=w.exec(e));){var d=a[0],u=a.groups.id;if(u){var s=document.getElementById(u);if(0===(s&&s.value?s.value:"").length)continue;var m=c["default"].sanitize(s.value.trim(),{ALLOWED_TAGS:[]});if(0===m.length)continue;var p=s.cloneNode(!0);m.match(L)?(p.style.fontFamily="Times New Roman",r=!0,p.defaultValue=o):(p.style.fontFamily=t,p.defaultValue=m),r&&(p.style.fontWeight="bold"),p.style.color=n,p.disabled=!0;var h=document.createElement("div");h.appendChild(p),i[u]=m,l.push({value:"["+h.innerHTML+"]",raw_text:d})}}if(l.length>0)for(var N,V=C(l);!(N=V()).done;){var b=N.value;e=e.replace(b.raw_text,b.value)}return{text:e,fields:i}}(h.text,u,d,p,s);h.text=v.text,h.form_fields=v.fields}return h},n.onInputHandler=function(e,t){var n=this;if(t!==this.state.textarea_text){var o=this.state.old_text.length+this.state.textarea_text.length;if(o>x&&(t=o-x>=t.length?"":t.substr(0,t.length-(o-x)))===this.state.textarea_text)return;this.setState((function(){return{textarea_text:t,combined_text:n.createPreview(t)}}))}},n.finalUpdate=function(e){var t=(0,l.useBackend)(this.context).act,n=this.createPreview(e,!0);t("save",n),this.setState((function(){return{textarea_text:"",previewSelected:"save",combined_text:n.text}}))},n.render=function(){var e=this,t=this.props,n=(t.value,t.textColor),r=t.fontFamily,a=t.stamps,c=t.backgroundColor;return p(t,["value","textColor","fontFamily","stamps","backgroundColor"]),(0,o.createComponentVNode)(2,d.Flex,{direction:"column",fillPositionedParent:!0,children:[(0,o.createComponentVNode)(2,d.Flex.Item,{children:(0,o.createComponentVNode)(2,d.Tabs,{children:[(0,o.createComponentVNode)(2,d.Tabs.Tab,{textColor:"black",backgroundColor:"Edit"===this.state.previewSelected?"grey":"white",selected:"Edit"===this.state.previewSelected,onClick:function(){return e.setState({previewSelected:"Edit"})},children:"Edit"},"marked_edit"),(0,o.createComponentVNode)(2,d.Tabs.Tab,{textColor:"black",backgroundColor:"Preview"===this.state.previewSelected?"grey":"white",selected:"Preview"===this.state.previewSelected,onClick:function(){return e.setState((function(){return{previewSelected:"Preview",textarea_text:e.state.textarea_text,combined_text:e.createPreview(e.state.textarea_text).text}}))},children:"Preview"},"marked_preview"),(0,o.createComponentVNode)(2,d.Tabs.Tab,{textColor:"black",backgroundColor:"confirm"===this.state.previewSelected?"red":"save"===this.state.previewSelected?"grey":"white",selected:"confirm"===this.state.previewSelected||"save"===this.state.previewSelected,onClick:function(){"confirm"===e.state.previewSelected?e.finalUpdate(e.state.textarea_text):"Edit"===e.state.previewSelected?e.setState((function(){return{previewSelected:"confirm",textarea_text:e.state.textarea_text,combined_text:e.createPreview(e.state.textarea_text).text}})):e.setState({previewSelected:"confirm"})},children:"confirm"===this.state.previewSelected?"confirm":"save"},"marked_done")]})}),(0,o.createComponentVNode)(2,d.Flex.Item,{grow:1,basis:1,children:"Edit"===this.state.previewSelected&&(0,o.createComponentVNode)(2,d.TextArea,{value:this.state.textarea_text,textColor:n,fontFamily:r,height:window.innerHeight-80+"px",backgroundColor:c,onInput:this.onInputHandler.bind(this)})||(0,o.createComponentVNode)(2,T,{value:this.state.combined_text,stamps:a,fontFamily:r,textColor:n})})]})},t}(o.Component);t.PaperSheet=function(e,t){var n=(0,l.useBackend)(t).data,r=n.edit_mode,a=n.text,c=n.paper_color,i=n.pen_color,s=void 0===i?"black":i,m=n.pen_font,p=void 0===m?"Verdana":m,C=n.stamps,h=n.stamp_class,N=(n.stamped,c&&"white"!==c?c:"#FFFFFF"),V=C&&null!==C?C:[];return(0,o.createComponentVNode)(2,u.Window,{theme:"paper",width:400,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,u.Window.Content,{children:(0,o.createComponentVNode)(2,d.Box,{fillPositionedParent:!0,backgroundColor:N,children:function(e){switch(e){case 0:return(0,o.createComponentVNode)(2,T,{value:a,stamps:V,readOnly:!0});case 1:return(0,o.createComponentVNode)(2,P,{value:a,textColor:s,fontFamily:p,stamps:V,backgroundColor:N});case 2:return(0,o.createComponentVNode)(2,A,{value:a,stamps:V,stamp_class:h});default:return"ERROR ERROR WE CANNOT BE HERE!!"}}(r)})})})}},57966:function(e,t,n){"use strict";t.__esModule=!0,t.ParticleAccelerator=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ParticleAccelerator=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.assembled,u=l.power,s=l.strength;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:185,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Run Scan",onClick:function(){return i("scan")}}),children:(0,o.createComponentVNode)(2,a.Box,{color:d?"good":"bad",children:d?"Ready - All parts in place":"Unable to detect all parts"})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Particle Accelerator Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,disabled:!d,onClick:function(){return i("power")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Particle Strength",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:!d,onClick:function(){return i("remove_strength")}})," ",String(s).padStart(1,"0")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:!d,onClick:function(){return i("add_strength")}})]})]})})]})})}},67589:function(e,t,n){"use strict";t.__esModule=!0,t.PersonalCrafting=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);function i(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=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.")}return(n=e[Symbol.iterator]()).next.bind(n)}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n50?"good":d>15&&"average")||"bad";return(0,o.createComponentVNode)(2,c.Window,{width:450,height:340,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[!l.anchored&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Generator not anchored."}),(0,o.createComponentVNode)(2,a.Section,{title:"Status",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power switch",children:(0,o.createComponentVNode)(2,a.Button,{icon:l.active?"power-off":"times",onClick:function(){return i("toggle_power")},disabled:!l.ready_to_boot,children:l.active?"On":"Off"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:l.sheet_name+" sheets",children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:u,children:l.sheets}),l.sheets>=1&&(0,o.createComponentVNode)(2,a.Button,{ml:1,icon:"eject",disabled:l.active,onClick:function(){return i("eject")},children:"Eject"})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current sheet level",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.stack_percent/100,ranges:{good:[.1,Infinity],average:[.01,.1],bad:[-Infinity,.01]}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Heat level",children:l.current_heat<100?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"good",children:"Nominal"}):l.current_heat<200?(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"average",children:"Caution"}):(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"bad",children:"DANGER"})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current output",children:l.power_output}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Adjust output",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",onClick:function(){return i("lower_power")},children:l.power_generated}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",onClick:function(){return i("higher_power")},children:l.power_generated})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power available",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:!l.connected&&"bad",children:l.connected?l.power_available:"Unconnected"})})]})})]})})}},82564:function(e,t,n){"use strict";t.__esModule=!0,t.PortablePump=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=n(34227);t.PortablePump=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.direction,s=(d.holding,d.target_pressure),m=d.default_pressure,p=d.min_pressure,C=d.max_pressure;return(0,o.createComponentVNode)(2,c.Window,{width:300,height:315,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,i.PortableBasicInfo),(0,o.createComponentVNode)(2,a.Section,{title:"Pump",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"sign-in-alt":"sign-out-alt",content:u?"In":"Out",selected:u,onClick:function(){return l("direction")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:s,unit:"kPa",width:"75px",minValue:p,maxValue:C,step:10,onChange:function(e,t){return l("pressure",{pressure:t})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Presets",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"minus",disabled:s===p,onClick:function(){return l("pressure",{pressure:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",disabled:s===m,onClick:function(){return l("pressure",{pressure:"reset"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"plus",disabled:s===C,onClick:function(){return l("pressure",{pressure:"max"})}})]})]})})]})})}},24901:function(e,t,n){"use strict";t.__esModule=!0,t.PortableScrubber=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(76270),i=n(85952),l=n(34227);t.PortableScrubber=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data.filter_types||[];return(0,o.createComponentVNode)(2,i.Window,{width:320,height:350,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,l.PortableBasicInfo),(0,o.createComponentVNode)(2,a.Section,{title:"Filters",children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,c.getGasLabel)(e.gas_id,e.gas_name),selected:e.enabled,onClick:function(){return d("toggle_filter",{val:e.gas_id})}},e.id)}))})]})})}},31695:function(e,t,n){"use strict";t.__esModule=!0,t.PortableTurret=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.PortableTurret=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.silicon_user,u=l.locked,s=l.on,m=l.check_weapons,p=l.neutralize_criminals,C=l.neutralize_all,h=l.neutralize_unidentified,N=l.neutralize_nonmindshielded,V=l.neutralize_cyborgs,b=l.neutralize_heads,f=l.manual_control,g=l.allow_manual_control,v=l.lasertag_turret;return(0,o.createComponentVNode)(2,c.Window,{width:310,height:v?110:292,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.NoticeBox,{children:["Swipe an ID card to ",u?"unlock":"lock"," this interface."]}),(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",buttons:!v&&(!!g||!!f&&!!d)&&(0,o.createComponentVNode)(2,a.Button,{icon:f?"wifi":"terminal",content:f?"Remotely Controlled":"Manual Control",disabled:f,color:"bad",onClick:function(){return i("manual")}}),children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"power-off":"times",content:s?"On":"Off",selected:s,disabled:u,onClick:function(){return i("power")}})})})}),!v&&(0,o.createComponentVNode)(2,a.Section,{title:"Target Settings",buttons:(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:!b,content:"Ignore Command",disabled:u,onClick:function(){return i("shootheads")}}),children:[(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:C,content:"Non-Security and Non-Command",disabled:u,onClick:function(){return i("shootall")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:m,content:"Unauthorized Weapons",disabled:u,onClick:function(){return i("authweapon")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:h,content:"Unidentified Life Signs",disabled:u,onClick:function(){return i("checkxenos")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:N,content:"Non-Mindshielded",disabled:u,onClick:function(){return i("checkloyal")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:p,content:"Wanted Criminals",disabled:u,onClick:function(){return i("shootcriminals")}}),(0,o.createComponentVNode)(2,a.Button.Checkbox,{fluid:!0,checked:V,content:"Cyborgs",disabled:u,onClick:function(){return i("shootborgs")}})]})],0)]})})}},89793:function(e,t,n){"use strict";t.__esModule=!0,t.AreaCharge=t.PowerMonitorContent=t.PowerMonitor=t.powerRank=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(41860),i=n(34380),l=n(71494),d=n(74814),u=n(85952),s=5e5,m=function(e){var t=String(e.split(" ")[1]).toLowerCase();return["w","kw","mw","gw"].indexOf(t)};t.powerRank=m;t.PowerMonitor=function(){return(0,o.createComponentVNode)(2,u.Window,{width:550,height:700,resizable:!0,children:(0,o.createComponentVNode)(2,u.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,p)})})};var p=function(e,t){var n=(0,l.useBackend)(t).data,i=n.history,u=(0,l.useLocalState)(t,"sortByField",null),p=u[0],N=u[1],V=i.supply[i.supply.length-1]||0,b=i.demand[i.demand.length-1]||0,f=i.supply.map((function(e,t){return[t,e]})),g=i.demand.map((function(e,t){return[t,e]})),v=Math.max.apply(Math,[s].concat(i.supply,i.demand)),k=(0,a.flow)([(0,r.map)((function(e,t){return Object.assign({},e,{id:e.name+t})})),"name"===p&&(0,r.sortBy)((function(e){return e.name})),"charge"===p&&(0,r.sortBy)((function(e){return-e.charge})),"draw"===p&&(0,r.sortBy)((function(e){return-m(e.load)}),(function(e){return-parseFloat(e.load)}))])(n.areas);return(0,o.createFragment)([(0,o.createComponentVNode)(2,d.Flex,{mx:-.5,mb:1,children:[(0,o.createComponentVNode)(2,d.Flex.Item,{mx:.5,width:"200px",children:(0,o.createComponentVNode)(2,d.Section,{children:(0,o.createComponentVNode)(2,d.LabeledList,{children:[(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Supply",children:(0,o.createComponentVNode)(2,d.ProgressBar,{value:V,minValue:0,maxValue:v,color:"teal",children:(0,c.toFixed)(V/1e3)+" kW"})}),(0,o.createComponentVNode)(2,d.LabeledList.Item,{label:"Draw",children:(0,o.createComponentVNode)(2,d.ProgressBar,{value:b,minValue:0,maxValue:v,color:"pink",children:(0,c.toFixed)(b/1e3)+" kW"})})]})})}),(0,o.createComponentVNode)(2,d.Flex.Item,{mx:.5,grow:1,children:(0,o.createComponentVNode)(2,d.Section,{position:"relative",height:"100%",children:[(0,o.createComponentVNode)(2,d.Chart.Line,{fillPositionedParent:!0,data:f,rangeX:[0,f.length-1],rangeY:[0,v],strokeColor:"rgba(0, 181, 173, 1)",fillColor:"rgba(0, 181, 173, 0.25)"}),(0,o.createComponentVNode)(2,d.Chart.Line,{fillPositionedParent:!0,data:g,rangeX:[0,g.length-1],rangeY:[0,v],strokeColor:"rgba(224, 57, 151, 1)",fillColor:"rgba(224, 57, 151, 0.25)"})]})})]}),(0,o.createComponentVNode)(2,d.Section,{children:[(0,o.createComponentVNode)(2,d.Box,{mb:1,children:[(0,o.createComponentVNode)(2,d.Box,{inline:!0,mr:2,color:"label",children:"Sort by:"}),(0,o.createComponentVNode)(2,d.Button.Checkbox,{checked:"name"===p,content:"Name",onClick:function(){return N("name"!==p&&"name")}}),(0,o.createComponentVNode)(2,d.Button.Checkbox,{checked:"charge"===p,content:"Charge",onClick:function(){return N("charge"!==p&&"charge")}}),(0,o.createComponentVNode)(2,d.Button.Checkbox,{checked:"draw"===p,content:"Draw",onClick:function(){return N("draw"!==p&&"draw")}})]}),(0,o.createComponentVNode)(2,d.Table,{children:[(0,o.createComponentVNode)(2,d.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,d.Table.Cell,{children:"Area"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,children:"Charge"}),(0,o.createComponentVNode)(2,d.Table.Cell,{textAlign:"right",children:"Draw"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,title:"Equipment",children:"Eqp"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,title:"Lighting",children:"Lgt"}),(0,o.createComponentVNode)(2,d.Table.Cell,{collapsing:!0,title:"Environment",children:"Env"})]}),k.map((function(e,t){return(0,o.createVNode)(1,"tr","Table__row candystripe",[(0,o.createVNode)(1,"td",null,e.name,0),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",(0,o.createComponentVNode)(2,C,{charging:e.charging,charge:e.charge}),2),(0,o.createVNode)(1,"td","Table__cell text-right text-nowrap",e.load,0),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,h,{status:e.eqp}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,h,{status:e.lgt}),2),(0,o.createVNode)(1,"td","Table__cell text-center text-nowrap",(0,o.createComponentVNode)(2,h,{status:e.env}),2)],4,null,e.id)}))]})]})],4)};t.PowerMonitorContent=p;var C=function(e){var t=e.charging,n=e.charge;return(0,o.createFragment)([(0,o.createComponentVNode)(2,d.Icon,{width:"18px",textAlign:"center",name:0===t&&(n>50?"battery-half":"battery-quarter")||1===t&&"bolt"||2===t&&"battery-full",color:0===t&&(n>50?"yellow":"red")||1===t&&"yellow"||2===t&&"green"}),(0,o.createComponentVNode)(2,d.Box,{inline:!0,width:"36px",textAlign:"right",children:(0,c.toFixed)(n)+"%"})],4)};t.AreaCharge=C,C.defaultHooks=i.pureComponentHooks;var h=function(e){var t=e.status,n=Boolean(2&t),r=Boolean(1&t),a=(n?"On":"Off")+" ["+(r?"auto":"manual")+"]";return(0,o.createComponentVNode)(2,d.ColorBox,{color:n?"good":"bad",content:r?undefined:"M",title:a})};h.defaultHooks=i.pureComponentHooks},49081:function(e,t,n){"use strict";t.__esModule=!0,t.ProbingConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ProbingConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.open,u=l.feedback,s=l.occupant,m=l.occupant_name,p=l.occupant_status;return(0,o.createComponentVNode)(2,c.Window,{width:330,height:207,theme:"abductor",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Machine Report",children:u})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Scanner",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:d?"sign-out-alt":"sign-in-alt",content:d?"Close":"Open",onClick:function(){return i("door")}}),children:s&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:m}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",color:3===p?"bad":2===p?"average":"good",children:3===p?"Deceased":2===p?"Unconscious":"Conscious"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Experiments",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"thermometer",content:"Probe",onClick:function(){return i("experiment",{experiment_type:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"brain",content:"Dissect",onClick:function(){return i("experiment",{experiment_type:2})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"search",content:"Analyze",onClick:function(){return i("experiment",{experiment_type:3})}})]})]})||(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No Subject"})})]})})}},33642:function(e,t,n){"use strict";t.__esModule=!0,t.ProximitySensor=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ProximitySensor=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.minutes,u=l.seconds,s=l.timing,m=l.scanning,p=l.sensitivity;return(0,o.createComponentVNode)(2,c.Window,{width:250,height:185,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Button,{icon:m?"lock":"unlock",content:m?"Armed":"Not Armed",selected:m,onClick:function(){return i("scanning")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Detection Range",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:m,onClick:function(){return i("sense",{range:-1})}})," ",String(p).padStart(1,"1")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:m,onClick:function(){return i("sense",{range:1})}})]})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Auto Arm",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:s?"Stop":"Start",selected:s,disabled:m,onClick:function(){return i("time")}}),children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:m||s,onClick:function(){return i("input",{adjust:-30})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:m||s,onClick:function(){return i("input",{adjust:-1})}})," ",String(d).padStart(2,"0"),":",String(u).padStart(2,"0")," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:m||s,onClick:function(){return i("input",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:m||s,onClick:function(){return i("input",{adjust:30})}})]})]})})}},17481:function(e,t,n){"use strict";t.__esModule=!0,t.Radio=void 0;var o=n(39812),r=n(64499),a=n(41860),c=n(71494),i=n(74814),l=n(76270),d=n(85952);t.Radio=function(e,t){var n=(0,c.useBackend)(t),u=n.act,s=n.data,m=s.freqlock,p=s.frequency,C=s.minFrequency,h=s.maxFrequency,N=s.listening,V=s.broadcasting,b=s.command,f=s.useCommand,g=s.subspace,v=s.subspaceSwitchable,k=l.RADIO_CHANNELS.find((function(e){return e.freq===p})),x=(0,r.map)((function(e,t){return{name:t,status:!!e}}))(s.channels),B=106;return g&&(x.length>0?B+=21*x.length+6:B+=24),(0,o.createComponentVNode)(2,d.Window,{width:360,height:B,children:(0,o.createComponentVNode)(2,d.Window.Content,{children:(0,o.createComponentVNode)(2,i.Section,{children:(0,o.createComponentVNode)(2,i.LabeledList,{children:[(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Frequency",children:[m&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"light-gray",children:(0,a.toFixed)(p/10,1)+" kHz"})||(0,o.createComponentVNode)(2,i.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:10,minValue:C/10,maxValue:h/10,value:p/10,format:function(e){return(0,a.toFixed)(e,1)},onDrag:function(e,t){return u("frequency",{adjust:t-p/10})}}),k&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:k.color,ml:2,children:["[",k.name,"]"]})]}),(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Audio",children:[(0,o.createComponentVNode)(2,i.Button,{textAlign:"center",width:"37px",icon:N?"volume-up":"volume-mute",selected:N,onClick:function(){return u("listen")}}),(0,o.createComponentVNode)(2,i.Button,{textAlign:"center",width:"37px",icon:V?"microphone":"microphone-slash",selected:V,onClick:function(){return u("broadcast")}}),!!b&&(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"bullhorn",selected:f,content:"High volume "+(f?"ON":"OFF"),onClick:function(){return u("command")}}),!!v&&(0,o.createComponentVNode)(2,i.Button,{ml:1,icon:"bullhorn",selected:g,content:"Subspace Tx "+(g?"ON":"OFF"),onClick:function(){return u("subspace")}})]}),!!g&&(0,o.createComponentVNode)(2,i.LabeledList.Item,{label:"Channels",children:[0===x.length&&(0,o.createComponentVNode)(2,i.Box,{inline:!0,color:"bad",children:"No encryption keys installed."}),x.map((function(e){return(0,o.createComponentVNode)(2,i.Box,{children:(0,o.createComponentVNode)(2,i.Button,{icon:e.status?"check-square-o":"square-o",selected:e.status,content:e.name,onClick:function(){return u("channel",{channel:e.name})}})},e.name)}))]})]})})})})}},8324:function(e,t,n){"use strict";t.__esModule=!0,t.RadioactiveMicrolaser=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.RadioactiveMicrolaser=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.irradiate,u=l.stealth,s=l.scanmode,m=l.intensity,p=l.wavelength,C=l.on_cooldown,h=l.cooldown;return(0,o.createComponentVNode)(2,c.Window,{title:"Radioactive Microlaser",width:320,height:335,theme:"syndicate",children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laser Status",children:(0,o.createComponentVNode)(2,a.Box,{color:C?"average":"good",children:C?"Recharging":"Ready"})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Scanner Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Irradiation",children:(0,o.createComponentVNode)(2,a.Button,{icon:d?"power-off":"times",content:d?"On":"Off",selected:d,onClick:function(){return i("irradiate")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Stealth Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:u?"eye-slash":"eye",content:u?"On":"Off",disabled:!d,selected:u,onClick:function(){return i("stealth")}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scan Mode",children:(0,o.createComponentVNode)(2,a.Button,{icon:s?"mortar-pestle":"heartbeat",content:s?"Scan Reagents":"Scan Health",disabled:d&&u,onClick:function(){return i("scanmode")}})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Laser Settings",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Intensity",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return i("radintensity",{adjust:-5})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return i("radintensity",{adjust:-1})}})," ",(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(m),width:"40px",minValue:1,maxValue:20,onChange:function(e,t){return i("radintensity",{target:t})}})," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return i("radintensity",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return i("radintensity",{adjust:5})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Radiation Wavelength",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",onClick:function(){return i("radwavelength",{adjust:-5})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",onClick:function(){return i("radwavelength",{adjust:-1})}})," ",(0,o.createComponentVNode)(2,a.NumberInput,{value:Math.round(p),width:"40px",minValue:0,maxValue:120,onChange:function(e,t){return i("radwavelength",{target:t})}})," ",(0,o.createComponentVNode)(2,a.Button,{icon:"forward",onClick:function(){return i("radwavelength",{adjust:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",onClick:function(){return i("radwavelength",{adjust:5})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Laser Cooldown",children:(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:h})})]})})]})})}},29509:function(e,t,n){"use strict";t.__esModule=!0,t.RapidPipeDispenser=void 0;var o=n(39812),r=n(34380),a=n(71494),c=n(74814),i=n(85952),l=["Atmospherics","Disposals","Transit Tubes"],d={Atmospherics:"wrench",Disposals:"trash-alt","Transit Tubes":"bus",Pipes:"grip-lines","Disposal Pipes":"grip-lines",Devices:"microchip","Heat Exchange":"thermometer-half","Station Equipment":"microchip"},u={grey:"#bbbbbb",amethyst:"#a365ff",blue:"#4466ff",brown:"#b26438",cyan:"#48eae8",dark:"#808080",green:"#1edd00",orange:"#ffa030",purple:"#b535ea",red:"#ff3333",violet:"#6e00f6",yellow:"#ffce26"},s=[{name:"Dispense",bitmask:1},{name:"Connect",bitmask:2},{name:"Destroy",bitmask:4},{name:"Paint",bitmask:8}];t.RapidPipeDispenser=function(e,t){var n=(0,a.useBackend)(t),m=n.act,p=n.data,C=p.category,h=p.categories,N=void 0===h?[]:h,V=p.selected_color,b=p.piping_layer,f=p.mode,g=p.preview_rows.flatMap((function(e){return e.previews})),v=(0,a.useLocalState)(t,"categoryName"),k=v[0],x=v[1],B=N.find((function(e){return e.cat_name===k}))||N[0];return(0,o.createComponentVNode)(2,i.Window,{width:425,height:515,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Category",children:l.map((function(e,t){return(0,o.createComponentVNode)(2,c.Button,{selected:C===t,icon:d[e],color:"transparent",content:e,onClick:function(){return m("category",{category:t})}},e)}))}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Modes",children:s.map((function(e){return(0,o.createComponentVNode)(2,c.Button.Checkbox,{checked:f&e.bitmask,content:e.name,onClick:function(){return m("mode",{mode:e.bitmask})}},e.bitmask)}))}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Color",children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,width:"64px",color:u[V],children:V}),Object.keys(u).map((function(e){return(0,o.createComponentVNode)(2,c.ColorBox,{ml:1,color:u[e],onClick:function(){return m("color",{paint_color:e})}},e)}))]})]})}),(0,o.createComponentVNode)(2,c.Flex,{m:-.5,children:[(0,o.createComponentVNode)(2,c.Flex.Item,{m:.5,children:(0,o.createComponentVNode)(2,c.Section,{children:[0===C&&(0,o.createComponentVNode)(2,c.Box,{mb:1,children:[1,2,3].map((function(e){return(0,o.createComponentVNode)(2,c.Button.Checkbox,{fluid:!0,checked:e===b,content:"Layer "+e,onClick:function(){return m("piping_layer",{piping_layer:e})}},e)}))}),(0,o.createComponentVNode)(2,c.Box,{width:"108px",children:g.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{title:e.dir_name,selected:e.selected,style:{width:"48px",height:"48px",padding:0},onClick:function(){return m("setdir",{dir:e.dir,flipped:e.flipped})},children:(0,o.createComponentVNode)(2,c.Box,{className:(0,r.classes)(["pipes32x32",e.dir+"-"+e.icon_state]),style:{transform:"scale(1.5) translate(17%, 17%)"}})},e.dir)}))})]})}),(0,o.createComponentVNode)(2,c.Flex.Item,{m:.5,grow:1,children:(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Tabs,{children:N.map((function(e,t){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{fluid:!0,icon:d[e.cat_name],selected:e.cat_name===B.cat_name,onClick:function(){return x(e.cat_name)},children:e.cat_name},e.cat_name)}))}),null==B?void 0:B.recipes.map((function(e){return(0,o.createComponentVNode)(2,c.Button.Checkbox,{fluid:!0,ellipsis:!0,checked:e.selected,content:e.pipe_name,title:e.pipe_name,onClick:function(){return m("pipe_type",{pipe_type:e.pipe_index,category:B.cat_name})}},e.pipe_index)}))]})})]})]})})}},14265:function(e,t,n){"use strict";t.__esModule=!0,t.RemoteRobotControlContent=t.RemoteRobotControl=void 0;var o=n(39812),r=n(2497),a=n(71494),c=n(74814),i=n(85952);t.RemoteRobotControl=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{title:"Remote Robot Control",width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,a.useBackend)(t),i=n.act,l=n.data.robots,d=void 0===l?[]:l;return d.length?d.map((function(e){return(0,o.createComponentVNode)(2,c.Section,{title:e.name+" ("+e.model+")",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Button,{icon:"tools",content:"Interface",onClick:function(){return i("interface",{ref:e.ref})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"phone-alt",content:"Call",onClick:function(){return i("callbot",{ref:e.ref})}})],4),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",children:[(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"Inactive"===(0,r.decodeHtmlEntities)(e.mode)?"bad":"Idle"===(0,r.decodeHtmlEntities)(e.mode)?"average":"good",children:(0,r.decodeHtmlEntities)(e.mode)})," ",e.hacked&&(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:"bad",children:"(HACKED)"})||""]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Location",children:e.location})]})},e.ref)})):(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.NoticeBox,{textAlign:"center",children:"No robots detected"})})};t.RemoteRobotControlContent=l},18374:function(e,t,n){"use strict";t.__esModule=!0,t.RequestKioskContent=t.RequestKiosk=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(58083),i=n(85952);t.RequestKiosk=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{width:550,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l)})})};var l=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.accountName,u=l.requests,s=void 0===u?[]:u,m=l.applicants,p=void 0===m?[]:m,C=l.bountyValue;l.bountyText;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Account",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"power-off",content:"Log out",onClick:function(){return i("clear")}}),children:d||"N/A"})})}),(0,o.createComponentVNode)(2,a.Flex,{mb:1,children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,basis:0,children:null==s?void 0:s.map((function(e){return(0,o.createComponentVNode)(2,a.Collapsible,{title:e.owner,width:"300px",children:(0,o.createComponentVNode)(2,a.Section,{width:"300px",children:[(0,o.createComponentVNode)(2,a.Flex,{spacing:1,align:"baseline",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{bold:!0,width:"310px",children:e.owner}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"100px",children:(0,c.formatMoney)(e.value)+" cr"}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"pen-fancy",content:"Apply",onClick:function(){return i("apply",{request:e.acc_number})}}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"trash-alt",content:"Delete",color:"red",onClick:function(){return i("deleteRequest",{request:e.acc_number})}})]})]}),(0,o.createComponentVNode)(2,a.Section,{align:"center",children:(0,o.createVNode)(1,"i",null,[(0,o.createTextVNode)('"'),e.description,(0,o.createTextVNode)('"')],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Request Applicants",children:null==p?void 0:p.map((function(t){return t.request_id===e.acc_number&&(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,p:.5,backgroundColor:"rgba(0, 0, 69, 0.5)",width:"510px",style:{border:"2px solid rgba(13, 13, 213, 0.7)"},children:t.name}),(0,o.createComponentVNode)(2,a.Flex.Item,{align:"end",children:(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"cash-register",onClick:function(){return i("payApplicant",{applicant:t.requestee_id,request:e.acc_number})}})})]})}))})]},e.name)},e.name)}))}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Collapsible,{title:"New Bounty",width:"220px",color:"green",children:(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.TextArea,{fluid:!0,height:"250px",width:"200px",backgroundColor:"black",textColor:"white",onChange:function(e,t){return i("bountyText",{bountytext:t})}}),(0,o.createComponentVNode)(2,a.Box,{children:(0,o.createComponentVNode)(2,a.NumberInput,{animate:!0,unit:"cr",minValue:1,maxValue:1e3,value:C,width:"80px",onChange:function(e,t){return i("bountyVal",{bountyval:t})}})}),(0,o.createComponentVNode)(2,a.Button,{icon:"print",content:"Submit bounty",onClick:function(){return i("createBounty")}})]})})})]})],4)};t.RequestKioskContent=l},24455:function(e,t,n){"use strict";t.__esModule=!0,t.RoboticsControlConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.RoboticsControlConsole=function(e,t){var n=(0,r.useBackend)(t),d=(n.act,n.data),u=(0,r.useSharedState)(t,"tab",1),s=u[0],m=u[1],p=d.can_hack,C=d.cyborgs,h=void 0===C?[]:C,N=d.drones,V=void 0===N?[]:N;return(0,o.createComponentVNode)(2,c.Window,{width:500,height:460,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:1===s,onClick:function(){return m(1)},children:["Cyborgs (",h.length,")"]}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{icon:"list",lineHeight:"23px",selected:2===s,onClick:function(){return m(2)},children:["Drones (",V.length,")"]})]}),1===s&&(0,o.createComponentVNode)(2,i,{cyborgs:h,can_hack:p}),2===s&&(0,o.createComponentVNode)(2,l,{drones:V})]})})};var i=function(e,t){var n=e.cyborgs,c=e.can_hack,i=(0,r.useBackend)(t),l=i.act;i.data;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createFragment)([!!c&&!e.emagged&&(0,o.createComponentVNode)(2,a.Button,{icon:"terminal",content:"Hack",color:"bad",onClick:function(){return l("magbot",{ref:e.ref})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:e.locked_down?"unlock":"lock",color:e.locked_down?"good":"default",content:e.locked_down?"Release":"Lockdown",onClick:function(){return l("stopbot",{ref:e.ref})}}),(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"bomb",content:"Detonate",color:"bad",onClick:function(){return l("killbot",{ref:e.ref})}})],0),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":e.locked_down?"average":"good",children:e.status?"Not Responding":e.locked_down?"Locked Down":"Nominal"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge",children:(0,o.createComponentVNode)(2,a.Box,{color:e.charge<=30?"bad":e.charge<=70?"average":"good",children:"number"==typeof e.charge?e.charge+"%":"Not Found"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Module",children:e.module}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Master AI",children:(0,o.createComponentVNode)(2,a.Box,{color:e.synchronization?"default":"average",children:e.synchronization||"None"})})]})},e.ref)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No cyborg units detected within access parameters"})},l=function(e,t){var n=e.drones,c=(0,r.useBackend)(t).act;return n.length?n.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name,buttons:(0,o.createComponentVNode)(2,a.Button.Confirm,{icon:"bomb",content:"Detonate",color:"bad",onClick:function(){return c("killdrone",{ref:e.ref})}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:(0,o.createComponentVNode)(2,a.Box,{color:e.status?"bad":"good",children:e.status?"Not Responding":"Nominal"})})})},e.ref)})):(0,o.createComponentVNode)(2,a.NoticeBox,{children:"No drone units detected within access parameters"})}},90910:function(e,t,n){"use strict";t.__esModule=!0,t.Roulette=t.RouletteBetTable=t.RouletteBoard=t.RouletteNumberButton=void 0;var o=n(39812),r=n(34380),a=n(71494),c=n(74814),i=n(85952),l=function(e){if(0===e)return"green";for(var t=[[1,10],[19,28]],n=!0,o=0;o=r[0]&&e<=r[1]){n=!1;break}}var a=e%2==0;return(n?a:!a)?"red":"black"},d=function(e,t){var n=e.number,r=(0,a.useBackend)(t).act;return(0,o.createComponentVNode)(2,c.Button,{bold:!0,content:n,color:l(n),width:"40px",height:"28px",fontSize:"20px",textAlign:"center",mb:0,className:"Roulette__board-extrabutton",onClick:function(){return r("ChangeBetType",{type:n})}})};t.RouletteNumberButton=d;var u=function(e,t){var n=(0,a.useBackend)(t).act;return(0,o.createVNode)(1,"table","Table",[(0,o.createVNode)(1,"tr","Roulette__board-row",[(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{content:"0",color:"transparent",height:"88px",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:0})}}),2,{rowSpan:"3"}),[3,6,9,12,15,18,21,24,27,30,33,36].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s3rd col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[[2,5,8,11,14,17,20,23,26,29,32,35].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s2nd col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[[1,4,7,10,13,16,19,22,25,28,31,34].map((function(e){return(0,o.createVNode)(1,"td","Roulette__board-cell Table__cell-collapsing",(0,o.createComponentVNode)(2,d,{number:e}),2,null,e)})),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2 to 1",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1st col"})}}),2)],0),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"1st 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1-12"})}}),2,{colSpan:"4"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"2nd 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s13-24"})}}),2,{colSpan:"4"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"3rd 12",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s25-36"})}}),2,{colSpan:"4"})],4),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td"),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"1-18",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s1-18"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Even",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"even"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Black",color:"black",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"black"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Red",color:"red",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"red"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"Odd",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"odd"})}}),2,{colSpan:"2"}),(0,o.createVNode)(1,"td","Roulette__board-cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,bold:!0,content:"19-36",color:"transparent",className:"Roulette__board-extrabutton",onClick:function(){return n("ChangeBetType",{type:"s19-36"})}}),2,{colSpan:"2"})],4)],4,{style:{width:"1px"}})};t.RouletteBoard=u;var s=function(e,t){var n=(0,a.useBackend)(t),i=n.act,d=n.data,u=(0,a.useLocalState)(t,"customBet",500),s=u[0],m=u[1],p=d.BetType;return p.startsWith("s")&&(p=p.substring(1,p.length)),(0,o.createVNode)(1,"table","Roulette__lowertable",[(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"th",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--header"]),"Last Spun:",16),(0,o.createVNode)(1,"th",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--header"]),"Current Bet:",16)],4),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--spinresult","Roulette__lowertable--spinresult-"+l(d.LastSpin)]),d.LastSpin,0),(0,o.createVNode)(1,"td",(0,r.classes)(["Roulette","Roulette__lowertable--cell","Roulette__lowertable--betscell"]),[(0,o.createComponentVNode)(2,c.Box,{bold:!0,mt:1,mb:1,fontSize:"25px",textAlign:"center",children:[d.BetAmount," cr on ",p]}),(0,o.createComponentVNode)(2,c.Box,{ml:1,mr:1,children:[(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 10 cr",onClick:function(){return i("ChangeBetAmount",{amount:10})}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 50 cr",onClick:function(){return i("ChangeBetAmount",{amount:50})}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 100 cr",onClick:function(){return i("ChangeBetAmount",{amount:100})}}),(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet 500 cr",onClick:function(){return i("ChangeBetAmount",{amount:500})}}),(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:"Bet custom amount...",onClick:function(){return i("ChangeBetAmount",{amount:s})}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{size:.1,children:(0,o.createComponentVNode)(2,c.NumberInput,{value:s,minValue:0,maxValue:1e3,step:10,stepPixelSize:4,width:"40px",onChange:function(e,t){return m(t)}})})]})]})],4)],4),(0,o.createVNode)(1,"tr",null,(0,o.createVNode)(1,"td",null,(0,o.createComponentVNode)(2,c.Box,{bold:!0,m:1,fontSize:"14px",textAlign:"center",children:"Swipe an ID card with a connected account to spin!"}),2,{colSpan:"2"}),2),(0,o.createVNode)(1,"tr",null,[(0,o.createVNode)(1,"td","Roulette__lowertable--cell",[(0,o.createComponentVNode)(2,c.Box,{inline:!0,bold:!0,mr:1,children:"House Balance:"}),(0,o.createComponentVNode)(2,c.Box,{inline:!0,children:d.HouseBalance?d.HouseBalance+" cr":"None"})],4),(0,o.createVNode)(1,"td","Roulette__lowertable--cell",(0,o.createComponentVNode)(2,c.Button,{fluid:!0,content:d.IsAnchored?"Bolted":"Unbolted",m:1,color:"transparent",textAlign:"center",onClick:function(){return i("anchor")}}),2)],4)],4)};t.RouletteBetTable=s;t.Roulette=function(e,t){return(0,o.createComponentVNode)(2,i.Window,{width:603,height:475,theme:"cardtable",children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,u),(0,o.createComponentVNode)(2,s)]})})}},14317:function(e,t,n){"use strict";t.__esModule=!0,t.SatelliteControl=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(60929),i=n(85952);t.SatelliteControl=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.satellites||[];return(0,o.createComponentVNode)(2,i.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[d.meteor_shield&&(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledListItem,{label:"Coverage",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:d.meteor_shield_coverage/d.meteor_shield_coverage_max,content:100*d.meteor_shield_coverage/d.meteor_shield_coverage_max+"%",ranges:{good:[1,Infinity],average:[.3,1],bad:[-Infinity,.3]}})})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Satellite Controls",children:(0,o.createComponentVNode)(2,a.Box,{mr:-1,children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.active,content:"#"+e.id+" "+e.mode,onClick:function(){return l("toggle",{id:e.id})}},e.id)}))})})]})})}},55666:function(e,t,n){"use strict";t.__esModule=!0,t.ScannerGate=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(21451),i=n(85952),l=["Positive","Harmless","Minor","Medium","Harmful","Dangerous","BIOHAZARD"],d=[{name:"Human",value:"human"},{name:"Lizardperson",value:"lizard"},{name:"Flyperson",value:"fly"},{name:"Felinid",value:"felinid"},{name:"Plasmaman",value:"plasma"},{name:"Mothperson",value:"moth"},{name:"Jellyperson",value:"jelly"},{name:"Podperson",value:"pod"},{name:"Golem",value:"golem"},{name:"Zombie",value:"zombie"}],u=[{name:"Starving",value:150},{name:"Obese",value:600}];t.ScannerGate=function(e,t){var n=(0,r.useBackend)(t),a=n.act,l=n.data;return(0,o.createComponentVNode)(2,i.Window,{width:400,height:300,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.InterfaceLockNoticeBox,{onLockedStatusChange:function(){return a("toggle_lock")}}),!l.locked&&(0,o.createComponentVNode)(2,m)]})})};var s={Off:{title:"Scanner Mode: Off",component:function(){return p}},Wanted:{title:"Scanner Mode: Wanted",component:function(){return C}},Guns:{title:"Scanner Mode: Guns",component:function(){return h}},Mindshield:{title:"Scanner Mode: Mindshield",component:function(){return N}},Disease:{title:"Scanner Mode: Disease",component:function(){return V}},Species:{title:"Scanner Mode: Species",component:function(){return b}},Nutrition:{title:"Scanner Mode: Nutrition",component:function(){return f}},Nanites:{title:"Scanner Mode: Nanites",component:function(){return g}}},m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.scan_mode,l=s[i]||s.off,d=l.component();return(0,o.createComponentVNode)(2,a.Section,{title:l.title,buttons:"Off"!==i&&(0,o.createComponentVNode)(2,a.Button,{icon:"arrow-left",content:"back",onClick:function(){return c("set_mode",{new_mode:"Off"})}}),children:(0,o.createComponentVNode)(2,d)})},p=function(e,t){var n=(0,r.useBackend)(t).act;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:"Select a scanning mode below."}),(0,o.createComponentVNode)(2,a.Box,{children:[(0,o.createComponentVNode)(2,a.Button,{content:"Wanted",onClick:function(){return n("set_mode",{new_mode:"Wanted"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Guns",onClick:function(){return n("set_mode",{new_mode:"Guns"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Mindshield",onClick:function(){return n("set_mode",{new_mode:"Mindshield"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Disease",onClick:function(){return n("set_mode",{new_mode:"Disease"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Species",onClick:function(){return n("set_mode",{new_mode:"Species"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nutrition",onClick:function(){return n("set_mode",{new_mode:"Nutrition"})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Nanites",onClick:function(){return n("set_mode",{new_mode:"Nanites"})}})]})],4)},C=function(e,t){var n=(0,r.useBackend)(t).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any warrants for their arrest."]}),(0,o.createComponentVNode)(2,v)],4)},h=function(e,t){var n=(0,r.useBackend)(t).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","any guns."]}),(0,o.createComponentVNode)(2,v)],4)},N=function(e,t){var n=(0,r.useBackend)(t).data.reverse;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",n?"does not have":"has"," ","a mindshield."]}),(0,o.createComponentVNode)(2,v)],4)},V=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,d=i.reverse,u=i.disease_threshold;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",d?"does not have":"has"," ","a disease equal or worse than ",u,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e===u,content:e,onClick:function(){return c("set_disease_threshold",{new_threshold:e})}},e)}))}),(0,o.createComponentVNode)(2,v)],4)},b=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.reverse,u=i.target_species,s=d.find((function(e){return e.value===u}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned is ",l?"not":""," ","of the ",s.name," species.","zombie"===u&&" All zombie types will be detected, including dormant zombies."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:d.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===u,content:e.name,onClick:function(){return c("set_target_species",{new_species:e.value})}},e.value)}))}),(0,o.createComponentVNode)(2,v)],4)},f=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.reverse,d=i.target_nutrition,s=u.find((function(e){return e.value===d}));return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","the ",s.name," nutrition level."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:u.map((function(e){return(0,o.createComponentVNode)(2,a.Button.Checkbox,{checked:e.value===d,content:e.name,onClick:function(){return c("set_target_nutrition",{new_nutrition:e.name})}},e.name)}))}),(0,o.createComponentVNode)(2,v)],4)},g=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.reverse,d=i.nanite_cloud;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{mb:2,children:["Trigger if the person scanned ",l?"does not have":"has"," ","nanite cloud ",d,"."]}),(0,o.createComponentVNode)(2,a.Box,{mb:2,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cloud ID",children:(0,o.createComponentVNode)(2,a.NumberInput,{value:d,width:"65px",minValue:1,maxValue:100,stepPixelSize:2,onChange:function(e,t){return c("set_nanite_cloud",{new_cloud:t})}})})})}),(0,o.createComponentVNode)(2,v)],4)},v=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data.reverse;return(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Scanning Mode",children:(0,o.createComponentVNode)(2,a.Button,{content:i?"Inverted":"Default",icon:i?"random":"long-arrow-alt-right",onClick:function(){return c("toggle_reverse")},color:i?"bad":"good"})})})}},53480:function(e,t,n){"use strict";t.__esModule=!0,t.SeedExtractor=void 0;var o=n(39812),r=n(64499),a=n(85531),c=n(2497),i=n(71494),l=n(74814),d=n(85952);t.SeedExtractor=function(e,t){var n,u,s=(0,i.useBackend)(t),m=s.act,p=s.data,C=(n=p.seeds,u=Object.keys(n).map((function(e){var t=function(e){var t,n=/([^;=]+)=([^;]+)/g,o={};do{(t=n.exec(e))&&(o[t[1]]=t[2]+"")}while(t);return o}(e);return t.amount=n[e],t.key=e,t.name=(0,c.toTitleCase)(t.name.replace("pack of ","")),t})),(0,a.flow)([(0,r.sortBy)((function(e){return e.name}))])(u));return(0,o.createComponentVNode)(2,d.Window,{width:1e3,height:400,resizable:!0,children:(0,o.createComponentVNode)(2,d.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,l.Section,{title:"Stored seeds:",children:(0,o.createComponentVNode)(2,l.Table,{cellpadding:"3",textAlign:"center",children:[(0,o.createComponentVNode)(2,l.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Name"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Lifespan"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Endurance"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Maturation"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Production"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Yield"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Potency"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Instability"}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:"Stock"})]}),C.map((function(e){return(0,o.createComponentVNode)(2,l.Table.Row,{children:[(0,o.createComponentVNode)(2,l.Table.Cell,{bold:!0,children:e.name}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.lifespan}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.endurance}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.maturation}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.production}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.yield}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.potency}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:e.instability}),(0,o.createComponentVNode)(2,l.Table.Cell,{children:[(0,o.createComponentVNode)(2,l.Button,{content:"Vend",onClick:function(){return m("select",{item:e.key})}}),"(",e.amount," left)"]})]},e.key)}))]})})})})}},41125:function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.ShuttleConsole=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.authorization_required;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:230,children:[!!l&&(0,o.createComponentVNode)(2,a.Modal,{ml:1,mt:1,width:26,height:12,fontSize:"28px",fontFamily:"monospace",textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Flex,{children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mt:2,children:(0,o.createComponentVNode)(2,a.Icon,{name:"minus-circle"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mt:2,ml:2,color:"bad",children:"SHUTTLE LOCKED"})]}),(0,o.createComponentVNode)(2,a.Box,{fontSize:"18px",mt:4,children:(0,o.createComponentVNode)(2,a.Button,{lineHeight:"40px",icon:"arrow-circle-right",content:"Request Authorization",color:"bad",onClick:function(){return i("request")}})})]}),(0,o.createComponentVNode)(2,c.Window.Content,{children:(0,o.createComponentVNode)(2,d)})]})};var i=function(e,t){var n;return null==e||null==(n=e.find((function(e){return e.id===t})))?void 0:n.name},l=function(e,t){var n;return null==e||null==(n=e.find((function(e){return e.name===t})))?void 0:n.id},d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,d=n.data,u=d.status,s=d.locked,m=d.authorization_required,p=d.destination,C=d.docked_location,h=d.timer_str,N=d.locations,V=void 0===N?[]:N;return(0,o.createComponentVNode)(2,a.Section,{children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,fontSize:"26px",textAlign:"center",fontFamily:"monospace",children:h||"00:00"}),(0,o.createComponentVNode)(2,a.Box,{textAlign:"center",fontSize:"14px",mb:1,children:[(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,children:"STATUS:"}),(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"In Transit"===u?"good":"Idle"===u||"Igniting"===u?"average":"bad",ml:1,children:u||"Not Available"})]}),(0,o.createComponentVNode)(2,a.Section,{title:"Shuttle Controls",level:2,children:[(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:C||"Not Available"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Destination",children:0===V.length&&(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Not Available"})||1===V.length&&(0,o.createComponentVNode)(2,a.Box,{color:"average",children:i(V,p)})||(0,o.createComponentVNode)(2,a.Dropdown,{mb:1.7,over:!0,width:"240px",options:V.map((function(e){return e.name})),disabled:s||m,selected:i(V,p)||"Select a Destination",onSelected:function(e){return c("set_destination",{destination:l(V,e)})}})})]}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"Depart",disabled:!i(V,p)||s||m,mt:1.5,icon:"arrow-up",textAlign:"center",onClick:function(){return c("move",{shuttle_id:p})}})]})]})}},93138:function(e,t,n){"use strict";t.__esModule=!0,t.ShuttleManipulatorModification=t.ShuttleManipulatorTemplates=t.ShuttleManipulatorStatus=t.ShuttleManipulator=void 0;var o=n(39812),r=n(64499),a=n(71494),c=n(74814),i=n(85952);t.ShuttleManipulator=function(e,t){var n=(0,a.useLocalState)(t,"tab",1),r=n[0],s=n[1];return(0,o.createComponentVNode)(2,i.Window,{title:"Shuttle Manipulator",width:800,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[(0,o.createComponentVNode)(2,c.Tabs,{children:[(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:1===r,onClick:function(){return s(1)},children:"Status"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:2===r,onClick:function(){return s(2)},children:"Templates"}),(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:3===r,onClick:function(){return s(3)},children:"Modification"})]}),1===r&&(0,o.createComponentVNode)(2,l),2===r&&(0,o.createComponentVNode)(2,d),3===r&&(0,o.createComponentVNode)(2,u)]})})};var l=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data.shuttles||[];return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Table,{children:i.map((function(e){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{content:"JMP",onClick:function(){return r("jump_to",{type:"mobile",id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:(0,o.createComponentVNode)(2,c.Button,{content:"Fly",disabled:!e.can_fly,onClick:function(){return r("fly",{id:e.id})}},e.id)}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.id}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.status}),(0,o.createComponentVNode)(2,c.Table.Cell,{children:[e.mode,!!e.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),e.timeleft,(0,o.createTextVNode)(")"),(0,o.createComponentVNode)(2,c.Button,{content:"Fast Travel",disabled:!e.can_fast_travel,onClick:function(){return r("fast_travel",{id:e.id})}},e.id)],0)]})]},e.id)}))})})};t.ShuttleManipulatorStatus=l;var d=function(e,t){var n,i=(0,a.useBackend)(t),l=i.act,d=i.data,u=d.templates||{},s=d.selected||{},m=(0,a.useLocalState)(t,"templateId",Object.keys(u)[0]),p=m[0],C=m[1],h=null==(n=u[p])?void 0:n.templates;return(0,o.createComponentVNode)(2,c.Section,{children:(0,o.createComponentVNode)(2,c.Flex,{children:[(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:p===t,onClick:function(){return C(t)},children:e.port_id},t)}))(u)})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:h.map((function(e){var t=e.shuttle_id===s.shuttle_id;return(0,o.createComponentVNode)(2,c.Section,{title:e.name,level:2,buttons:(0,o.createComponentVNode)(2,c.Button,{content:t?"Selected":"Select",selected:t,onClick:function(){return l("select_template",{shuttle_id:e.shuttle_id})}}),children:(!!e.description||!!e.admin_notes)&&(0,o.createComponentVNode)(2,c.LabeledList,{children:[!!e.description&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",children:e.description}),!!e.admin_notes&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Admin Notes",children:e.admin_notes})]})},e.shuttle_id)}))})]})})};t.ShuttleManipulatorTemplates=d;var u=function(e,t){var n=(0,a.useBackend)(t),r=n.act,i=n.data,l=i.selected||{},d=i.existing_shuttle||{};return(0,o.createComponentVNode)(2,c.Section,{children:l?(0,o.createFragment)([(0,o.createComponentVNode)(2,c.Section,{level:2,title:l.name,children:(!!l.description||!!l.admin_notes)&&(0,o.createComponentVNode)(2,c.LabeledList,{children:[!!l.description&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Description",children:l.description}),!!l.admin_notes&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Admin Notes",children:l.admin_notes})]})}),d?(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Existing Shuttle: "+d.name,children:(0,o.createComponentVNode)(2,c.LabeledList,{children:(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Status",buttons:(0,o.createComponentVNode)(2,c.Button,{content:"Jump To",onClick:function(){return r("jump_to",{type:"mobile",id:d.id})}}),children:[d.status,!!d.timer&&(0,o.createFragment)([(0,o.createTextVNode)("("),d.timeleft,(0,o.createTextVNode)(")")],0)]})})}):(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Existing Shuttle: None"}),(0,o.createComponentVNode)(2,c.Section,{level:2,title:"Status",children:[(0,o.createComponentVNode)(2,c.Button,{content:"Preview",onClick:function(){return r("preview",{shuttle_id:l.shuttle_id})}}),(0,o.createComponentVNode)(2,c.Button,{content:"Load",color:"bad",onClick:function(){return r("load",{shuttle_id:l.shuttle_id})}})]})],0):"No shuttle selected"})};t.ShuttleManipulatorModification=u},32325:function(e,t,n){"use strict";t.__esModule=!0,t.Signaler=void 0;var o=n(39812),r=n(41860),a=n(71494),c=n(74814),i=n(85952);t.Signaler=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data,u=d.code,s=d.frequency,m=d.minFrequency,p=d.maxFrequency;return(0,o.createComponentVNode)(2,i.Window,{width:280,height:132,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:(0,o.createComponentVNode)(2,c.Section,{children:[(0,o.createComponentVNode)(2,c.Grid,{children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:1.4,color:"label",children:"Frequency:"}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,unit:"kHz",step:.2,stepPixelSize:6,minValue:m/10,maxValue:p/10,value:s/10,format:function(e){return(0,r.toFixed)(e,1)},width:"80px",onDrag:function(e,t){return l("freq",{freq:t})}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"freq"})}})})]}),(0,o.createComponentVNode)(2,c.Grid,{mt:.6,children:[(0,o.createComponentVNode)(2,c.Grid.Column,{size:1.4,color:"label",children:"Code:"}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.NumberInput,{animate:!0,step:1,stepPixelSize:6,minValue:1,maxValue:100,value:u,width:"80px",onDrag:function(e,t){return l("code",{code:t})}})}),(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{ml:1.3,icon:"sync",content:"Reset",onClick:function(){return l("reset",{reset:"code"})}})})]}),(0,o.createComponentVNode)(2,c.Grid,{mt:.8,children:(0,o.createComponentVNode)(2,c.Grid.Column,{children:(0,o.createComponentVNode)(2,c.Button,{mb:-.1,fluid:!0,icon:"arrow-up",content:"Send Signal",textAlign:"center",onClick:function(){return l("signal")}})})})]})})})}},52757:function(e,t,n){"use strict";t.__esModule=!0,t.SkillPanel=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i={color:"lightgreen",fontWeight:"bold"},l={color:"#FFDB58",fontWeight:"bold"};t.SkillPanel=function(e,t){var n=(0,r.useBackend)(t),u=n.act,s=n.data,m=s.skills||[];return(0,o.createComponentVNode)(2,c.Window,{title:"Manage Skills",width:600,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{title:m.playername,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:m.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.name,children:[(0,o.createVNode)(1,"span",null,e.desc,0,{style:l}),(0,o.createVNode)(1,"br"),!!e.level_based&&(0,o.createFragment)([(0,o.createComponentVNode)(2,d,{skill_lvl_num:e.lvl_base_num,skill_lvl:e.lvl_base}),(0,o.createVNode)(1,"br")],4),"Total Experience: [",e.value_base," XP]",(0,o.createVNode)(1,"br"),"XP To Next Level:",e.level_based?(0,o.createVNode)(1,"span",null,e.xp_next_lvl_base,0):(0,o.createVNode)(1,"span",null,"[MAXXED]",16,{style:i}),(0,o.createVNode)(1,"br"),e.base_readout,(0,o.createComponentVNode)(2,a.ProgressBar,{value:e.percent_base,color:"good"}),(0,o.createVNode)(1,"br"),!!s.admin&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Adjust Exp",onClick:function(){return u("adj_exp",{skill:e.path})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Set Exp",onClick:function(){return u("set_exp",{skill:e.path})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Set Level",onClick:function(){return u("set_lvl",{skill:e.path})}}),(0,o.createVNode)(1,"br"),(0,o.createVNode)(1,"br")],4)]},e.name)}))})})})})};var d=function(e){var t=e.skill_lvl_num,n=e.skill_lvl;return(0,o.createComponentVNode)(2,a.Box,{inline:!0,children:["Level: [",(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,textColor:"hsl("+50*t+", 50%, 50%)",children:n}),"]"]})}},43078:function(e,t,n){"use strict";t.__esModule=!0,t.SkillStation=t.TimeFormat=t.ImplantedSkillchips=t.InsertedSkillchip=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=n(41860),l=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.skillchip_ready,d=i.slot_use,u=i.slots_used,s=i.slots_max,m=i.implantable_reason,p=i.implantable,C=i.complexity,h=i.skill_name,N=i.skill_desc,V=i.skill_icon,b=i.working;return l?(0,o.createComponentVNode)(2,a.Section,{title:"Inserted Skillchip",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"syringe",disabled:!p||!!b,color:p?"good":"default",onClick:function(){return c("implant")},content:"Implant",tooltip:m}),(0,o.createComponentVNode)(2,a.Button,{icon:"eject",disabled:!!b,onClick:function(){return c("eject")},content:"Eject"})],4),children:(0,o.createComponentVNode)(2,a.Flex,{spacing:2,height:"100%",width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{height:"100%",align:"center",children:(0,o.createComponentVNode)(2,a.Icon,{size:3,name:V})}),(0,o.createComponentVNode)(2,a.Flex.Item,{width:"100%",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Skillchip",children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,children:h})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Description",children:(0,o.createComponentVNode)(2,a.Box,{italic:!0,children:N})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Complexity",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"brain",width:"15px",textAlign:"center"})," ",C]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Slot Size",children:(0,o.createComponentVNode)(2,a.Box,{color:u+d>s&&"red",children:[(0,o.createComponentVNode)(2,a.Icon,{name:"save",width:"15px",textAlign:"center"})," ",d]})}),!!m&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Error",color:p?"good":"bad",children:m})]})})]})}):!b&&(0,o.createComponentVNode)(2,a.NoticeBox,{info:!0,children:"Please insert a skillchip."})};t.InsertedSkillchip=l;var d=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.slots_used,d=i.slots_max,u=i.complexity_used,s=i.complexity_max,m=i.working,p=i.current||[];return(0,o.createComponentVNode)(2,a.Section,{title:"Implanted Skillchips",children:[!p.length&&"No skillchips detected.",!!p.length&&(0,o.createComponentVNode)(2,a.Table,{children:[(0,o.createComponentVNode)(2,a.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:"Chip"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"brain",tooltip:"Complexity",tooltipPosition:"top",content:u+"/"+s})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"save",tooltip:"Slot Size",tooltipPosition:"top",content:l+"/"+d})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"check",tooltip:"Is Active",tooltipPosition:"top"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"hourglass-half",tooltip:"Cooldown",tooltipPosition:"top"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{color:"transparent",icon:"tasks",tooltip:"Actions",tooltipPosition:"top"})})]}),p.map((function(e){return(0,o.createComponentVNode)(2,a.Table.Row,{children:[(0,o.createComponentVNode)(2,a.Table.Cell,{children:[(0,o.createComponentVNode)(2,a.Icon,{textAlign:"center",width:"18px",mr:1,name:e.icon}),e.name]}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:(!e.active?e.complexity+u>s&&"bad":"good")||"grey",textAlign:"center",children:e.complexity}),(0,o.createComponentVNode)(2,a.Table.Cell,{bold:!0,color:"good",textAlign:"center",children:e.slot_use}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:(0,o.createComponentVNode)(2,a.Icon,{name:e.active?"check":"times",color:e.active?"good":"bad"})}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:e.cooldown>0&&Math.ceil(e.cooldown/10)+"s"||"0s"}),(0,o.createComponentVNode)(2,a.Table.Cell,{textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("remove",{ref:e.ref})},icon:e.removable?"eject":"trash",color:e.removable?"good":"bad",tooltip:e.removable?"Extract":"Destroy",tooltipPosition:"left",disabled:e.cooldown||m}),(0,o.createComponentVNode)(2,a.Button,{onClick:function(){return c("toggle_activate",{ref:e.ref})},icon:e.active?"check-square-o":"square-o",color:e.active?"good":"default",tooltip:!!e.active_error&&!e.active&&e.active_error||e.active&&"Deactivate"||"Activate",tooltipPosition:"left",disabled:e.cooldown||m||!e.active&&e.complexity+u>s})]})]},e.ref)}))]})]})};t.ImplantedSkillchips=d;var u=function(e,t){var n=e.value,o=(0,i.toFixed)(Math.floor(n/10%60)).padStart(2,"0"),r=(0,i.toFixed)(Math.floor(n/600%60)).padStart(2,"0");return(0,i.toFixed)(Math.floor(n/36e3%24)).padStart(2,"0")+":"+r+":"+o};t.TimeFormat=u;t.SkillStation=function(e,t){var n=(0,r.useBackend)(t).data,i=n.working,s=n.timeleft,m=n.error;return(0,o.createComponentVNode)(2,c.Window,{title:"Skillsoft Station",width:500,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!!m&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:m}),!!i&&(0,o.createComponentVNode)(2,a.NoticeBox,{danger:!0,children:(0,o.createComponentVNode)(2,a.Flex,{direction:"column",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mb:.5,children:"Operation in progress. Please do not leave the chamber."}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:["Time Left: ",(0,o.createComponentVNode)(2,u,{value:s})]})]})}),(0,o.createComponentVNode)(2,l),(0,o.createComponentVNode)(2,d)]})})}},80646:function(e,t,n){"use strict";t.__esModule=!0,t.Sleeper=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i=[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Oxygen",type:"oxyLoss"}];t.Sleeper=function(e,t){var n=(0,r.useBackend)(t),l=n.act,d=n.data,u=d.open,s=d.occupant,m=void 0===s?{}:s,p=d.occupied,C=(d.chems||[]).sort((function(e,t){var n=e.name.toLowerCase(),o=t.name.toLowerCase();return no?1:0}));return(0,o.createComponentVNode)(2,c.Window,{width:310,height:465,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:m.name?m.name:"No Occupant",minHeight:"210px",buttons:!!m.stat&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,color:m.statstate,children:m.stat}),children:!!p&&(0,o.createFragment)([(0,o.createComponentVNode)(2,a.ProgressBar,{value:m.health,minValue:m.minHealth,maxValue:m.maxHealth,ranges:{good:[50,Infinity],average:[0,50],bad:[-Infinity,0]}}),(0,o.createComponentVNode)(2,a.Box,{mt:1}),(0,o.createComponentVNode)(2,a.LabeledList,{children:[i.map((function(e){return(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:e.label,children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:m[e.type],minValue:0,maxValue:m.maxHealth,color:"bad"})},e.type)})),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cells",color:m.cloneLoss?"bad":"good",children:m.cloneLoss?"Damaged":"Healthy"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Brain",color:m.brainLoss?"bad":"good",children:m.brainLoss?"Abnormal":"Healthy"})]})],4)}),(0,o.createComponentVNode)(2,a.Section,{title:"Medicines",minHeight:"205px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"door-open":"door-closed",content:u?"Open":"Closed",onClick:function(){return l("door")}}),children:C.map((function(e){return(0,o.createComponentVNode)(2,a.Button,{icon:"flask",content:e.name,disabled:!p||!e.allowed,width:"140px",onClick:function(){return l("inject",{chem:e.id})}},e.name)}))})]})})}},97700:function(e,t,n){"use strict";t.__esModule=!0,t.SlimeBodySwapper=t.BodyEntry=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952),i={Dead:"bad",Unconscious:"average",Conscious:"good"},l={owner:"You Are Here",stranger:"Occupied",available:"Swap"},d=function(e,t){var n=e.body,r=e.swapFunc;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:n.htmlcolor,children:n.name}),level:2,buttons:(0,o.createComponentVNode)(2,a.Button,{content:l[n.occupied],selected:"owner"===n.occupied,color:"stranger"===n.occupied&&"bad",onClick:function(){return r()}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",bold:!0,color:i[n.status],children:n.status}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Jelly",children:n.exoticblood}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Location",children:n.area})]})})};t.BodyEntry=d;t.SlimeBodySwapper=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.bodies,u=void 0===l?[]:l;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:400,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{children:u.map((function(e){return(0,o.createComponentVNode)(2,d,{body:e,swapFunc:function(){return i("swap",{ref:e.ref})}},e.name)}))})})})}},55896:function(e,t,n){"use strict";t.__esModule=!0,t.SmartVend=void 0;var o=n(39812),r=n(64499),a=n(71494),c=n(74814),i=n(85952);t.SmartVend=function(e,t){var n=(0,a.useBackend)(t),l=n.act,d=n.data;return(0,o.createComponentVNode)(2,i.Window,{width:440,height:550,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,c.Section,{title:"Storage",buttons:!!d.isdryer&&(0,o.createComponentVNode)(2,c.Button,{icon:d.drying?"stop":"tint",onClick:function(){return l("Dry")},children:d.drying?"Stop drying":"Dry"}),children:0===d.contents.length&&(0,o.createComponentVNode)(2,c.NoticeBox,{children:["Unfortunately, this ",d.name," is empty."]})||(0,o.createComponentVNode)(2,c.Table,{children:[(0,o.createComponentVNode)(2,c.Table.Row,{header:!0,children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:"Item"}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"center",children:d.verb?d.verb:"Dispense"})]}),(0,r.map)((function(e,t){return(0,o.createComponentVNode)(2,c.Table.Row,{children:[(0,o.createComponentVNode)(2,c.Table.Cell,{children:e.name}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,textAlign:"right",children:e.amount}),(0,o.createComponentVNode)(2,c.Table.Cell,{collapsing:!0,children:[(0,o.createComponentVNode)(2,c.Button,{content:"One",disabled:e.amount<1,onClick:function(){return l("Release",{name:e.name,amount:1})}}),(0,o.createComponentVNode)(2,c.Button,{content:"Many",disabled:e.amount<=1,onClick:function(){return l("Release",{name:e.name})}})]})]},t)}))(d.contents)]})})})})}},20561:function(e,t,n){"use strict";t.__esModule=!0,t.Smes=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(58083),i=n(85952),l=1e3;t.Smes=function(e,t){var n=(0,r.useBackend)(t),d=n.act,u=n.data,s=u.capacityPercent,m=(u.capacity,u.charge),p=u.inputAttempt,C=u.inputting,h=u.inputLevel,N=u.inputLevelMax,V=u.inputAvailable,b=u.outputAttempt,f=u.outputting,g=u.outputLevel,v=u.outputLevelMax,k=u.outputUsed,x=(s>=100?"good":C&&"average")||"bad",B=(f?"good":m>0&&"average")||"bad";return(0,o.createComponentVNode)(2,i.Window,{width:340,height:350,children:(0,o.createComponentVNode)(2,i.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Stored Energy",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:.01*s,ranges:{good:[.5,Infinity],average:[.15,.5],bad:[-Infinity,.15]}})}),(0,o.createComponentVNode)(2,a.Section,{title:"Input",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Charge Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:p?"sync-alt":"times",selected:p,onClick:function(){return d("tryinput")},children:p?"Auto":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:x,children:(s>=100?"Fully Charged":C&&"Charging")||"Not Charging"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Input",children:(0,o.createComponentVNode)(2,a.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===h,onClick:function(){return d("input",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===h,onClick:function(){return d("input",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,a.Slider,{value:h/l,fillValue:V/l,minValue:0,maxValue:N/l,step:5,stepPixelSize:4,format:function(e){return(0,c.formatPower)(e*l,1)},onDrag:function(e,t){return d("input",{target:t*l})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:h===N,onClick:function(){return d("input",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:h===N,onClick:function(){return d("input",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Available",children:(0,c.formatPower)(V)})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Output",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Output Mode",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:b?"power-off":"times",selected:b,onClick:function(){return d("tryoutput")},children:b?"On":"Off"}),children:(0,o.createComponentVNode)(2,a.Box,{color:B,children:f?"Sending":m>0?"Not Sending":"No Charge"})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Output",children:(0,o.createComponentVNode)(2,a.Flex,{inline:!0,width:"100%",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"fast-backward",disabled:0===g,onClick:function(){return d("output",{target:"min"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"backward",disabled:0===g,onClick:function(){return d("output",{adjust:-1e4})}})]}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1,mx:1,children:(0,o.createComponentVNode)(2,a.Slider,{value:g/l,minValue:0,maxValue:v/l,step:5,stepPixelSize:4,format:function(e){return(0,c.formatPower)(e*l,1)},onDrag:function(e,t){return d("output",{target:t*l})}})}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:[(0,o.createComponentVNode)(2,a.Button,{icon:"forward",disabled:g===v,onClick:function(){return d("output",{adjust:1e4})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fast-forward",disabled:g===v,onClick:function(){return d("output",{target:"max"})}})]})]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Outputting",children:(0,c.formatPower)(k)})]})})]})})}},93267:function(e,t,n){"use strict";t.__esModule=!0,t.SmokeMachine=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.SmokeMachine=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.TankContents,u=(l.isTankLoaded,l.TankCurrentVolume),s=l.TankMaxVolume,m=l.active,p=l.setting,C=(l.screen,l.maxSetting),h=void 0===C?[]:C;return(0,o.createComponentVNode)(2,c.Window,{width:350,height:350,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Dispersal Tank",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:m?"power-off":"times",selected:m,content:m?"On":"Off",onClick:function(){return i("power")}}),children:[(0,o.createComponentVNode)(2,a.ProgressBar,{value:u/s,ranges:{bad:[-Infinity,.3]},children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{initial:0,value:u||0})," / "+s]}),(0,o.createComponentVNode)(2,a.Box,{mt:1,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Range",children:[1,2,3,4,5].map((function(e){return(0,o.createComponentVNode)(2,a.Button,{selected:p===e,icon:"plus",content:3*e,disabled:h0?"good":"bad",children:h})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:1.5,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Power output",children:(0,o.createComponentVNode)(2,a.ProgressBar,{ranges:{good:[.66,Infinity],average:[.33,.66],bad:[-Infinity,.33]},minValue:0,maxValue:1,value:u,children:d+" W"})})})})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Controls",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Tracking",children:[(0,o.createComponentVNode)(2,a.Button,{icon:"times",content:"Off",selected:0===C,onClick:function(){return i("tracking",{mode:0})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"clock-o",content:"Timed",selected:1===C,onClick:function(){return i("tracking",{mode:1})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"sync",content:"Auto",selected:2===C,disabled:!N,onClick:function(){return i("tracking",{mode:2})}})]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Azimuth",children:[(0===C||1===C)&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"52px",unit:"\xb0",step:1,stepPixelSize:2,minValue:-360,maxValue:720,value:s,onDrag:function(e,t){return i("azimuth",{value:t})}}),1===C&&(0,o.createComponentVNode)(2,a.NumberInput,{width:"80px",unit:"\xb0/m",step:.01,stepPixelSize:1,minValue:-p-.01,maxValue:p+.01,value:m,format:function(e){return(Math.sign(e)>0?"+":"-")+Math.abs(e)},onDrag:function(e,t){return i("azimuth_rate",{value:t})}}),2===C&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,color:"label",mt:"3px",children:[s+" \xb0"," (auto)"]})]})]})})]})})}},57762:function(e,t,n){"use strict";t.__esModule=!0,t.SpaceHeater=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.SpaceHeater=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[(0,o.createComponentVNode)(2,a.Section,{title:"Power",buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject Cell",disabled:!l.hasPowercell||!l.open,onClick:function(){return i("eject")}}),(0,o.createComponentVNode)(2,a.Button,{icon:l.on?"power-off":"times",content:l.on?"On":"Off",selected:l.on,disabled:!l.hasPowercell,onClick:function(){return i("power")}})],4),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Cell",color:!l.hasPowercell&&"bad",children:l.hasPowercell&&(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.powerLevel/100,ranges:{good:[.6,Infinity],average:[.3,.6],bad:[-Infinity,.3]},children:l.powerLevel+"%"})||"None"})})}),(0,o.createComponentVNode)(2,a.Section,{title:"Thermostat",children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Temperature",children:(0,o.createComponentVNode)(2,a.Box,{fontSize:"18px",color:Math.abs(l.targetTemp-l.currentTemp)>50?"bad":Math.abs(l.targetTemp-l.currentTemp)>20?"average":"good",children:[l.currentTemp,"\xb0C"]})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Target Temperature",children:l.open&&(0,o.createComponentVNode)(2,a.NumberInput,{animated:!0,value:parseFloat(l.targetTemp),width:"65px",unit:"\xb0C",minValue:l.minTemp,maxValue:l.maxTemp,onChange:function(e,t){return i("target",{target:t})}})||l.targetTemp+"\xb0C"}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mode",children:l.open?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{icon:"thermometer-half",content:"Auto",selected:"auto"===l.mode,onClick:function(){return i("mode",{mode:"auto"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fire-alt",content:"Heat",selected:"heat"===l.mode,onClick:function(){return i("mode",{mode:"heat"})}}),(0,o.createComponentVNode)(2,a.Button,{icon:"fan",content:"Cool",selected:"cool"===l.mode,onClick:function(){return i("mode",{mode:"cool"})}})],4):"Auto"}),(0,o.createComponentVNode)(2,a.LabeledList.Divider)]})})]})})}},46810:function(e,t,n){"use strict";t.__esModule=!0,t.SpawnersMenu=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.SpawnersMenu=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data.spawners||[];return(0,o.createComponentVNode)(2,c.Window,{title:"Spawners Menu",width:700,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){return(0,o.createComponentVNode)(2,a.Section,{title:e.name+" ("+e.amount_left+" left)",level:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Button,{content:"Jump",onClick:function(){return i("jump",{name:e.name})}}),(0,o.createComponentVNode)(2,a.Button,{content:"Spawn",onClick:function(){return i("spawn",{name:e.name})}})],4),children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,mb:1,fontSize:"20px",children:e.short_desc}),(0,o.createComponentVNode)(2,a.Box,{children:e.flavor_text}),!!e.important_info&&(0,o.createComponentVNode)(2,a.Box,{mt:1,bold:!0,color:"bad",fontSize:"26px",children:e.important_info})]},e.name)}))})})})}},32015:function(e,t,n){"use strict";t.__esModule=!0,t.StationAlertConsoleContent=t.StationAlertConsole=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.StationAlertConsole=function(){return(0,o.createComponentVNode)(2,c.Window,{width:325,height:500,resizable:!0,children:(0,o.createComponentVNode)(2,c.Window.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,i)})})};var i=function(e,t){var n=(0,r.useBackend)(t).data.alarms||[],c=n.Fire||[],i=n.Atmosphere||[],l=n.Power||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Fire Alarms",children:(0,o.createVNode)(1,"ul",null,[0===c.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),c.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Atmospherics Alarms",children:(0,o.createVNode)(1,"ul",null,[0===i.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),i.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)}),(0,o.createComponentVNode)(2,a.Section,{title:"Power Alarms",children:(0,o.createVNode)(1,"ul",null,[0===l.length&&(0,o.createVNode)(1,"li","color-good","Systems Nominal",16),l.map((function(e){return(0,o.createVNode)(1,"li","color-average",e,0,null,e)}))],0)})],4)};t.StationAlertConsoleContent=i},80748:function(e,t,n){"use strict";t.__esModule=!0,t.SuitStorageUnit=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.SuitStorageUnit=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data,d=l.locked,u=l.open,s=l.safeties,m=l.uv_active,p=l.occupied,C=l.suit,h=l.helmet,N=l.mask,V=l.storage;return(0,o.createComponentVNode)(2,c.Window,{width:400,height:305,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!(!p||!s)&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Biological entity detected in suit chamber. Please remove before continuing with operation."}),m&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:"Contents are currently being decontaminated. Please wait."})||(0,o.createComponentVNode)(2,a.Section,{title:"Storage",minHeight:"260px",buttons:(0,o.createFragment)([!u&&(0,o.createComponentVNode)(2,a.Button,{icon:d?"unlock":"lock",content:d?"Unlock":"Lock",onClick:function(){return i("lock")}}),!d&&(0,o.createComponentVNode)(2,a.Button,{icon:u?"sign-out-alt":"sign-in-alt",content:u?"Close":"Open",onClick:function(){return i("door")}})],0),children:d&&(0,o.createComponentVNode)(2,a.Box,{mt:6,bold:!0,textAlign:"center",fontSize:"40px",children:[(0,o.createComponentVNode)(2,a.Box,{children:"Unit Locked"}),(0,o.createComponentVNode)(2,a.Icon,{name:"lock"})]})||u&&(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Helmet",children:(0,o.createComponentVNode)(2,a.Button,{icon:h?"square":"square-o",content:h||"Empty",disabled:!h,onClick:function(){return i("dispense",{item:"helmet"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Suit",children:(0,o.createComponentVNode)(2,a.Button,{icon:C?"square":"square-o",content:C||"Empty",disabled:!C,onClick:function(){return i("dispense",{item:"suit"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Mask",children:(0,o.createComponentVNode)(2,a.Button,{icon:N?"square":"square-o",content:N||"Empty",disabled:!N,onClick:function(){return i("dispense",{item:"mask"})}})}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Storage",children:(0,o.createComponentVNode)(2,a.Button,{icon:V?"square":"square-o",content:V||"Empty",disabled:!V,onClick:function(){return i("dispense",{item:"storage"})}})})]})||(0,o.createComponentVNode)(2,a.Button,{fluid:!0,icon:"recycle",content:"Decontaminate",disabled:p&&s,textAlign:"center",onClick:function(){return i("uv")}})})]})})}},37162:function(e,t,n){"use strict";t.__esModule=!0,t.SyndPane=t.StatusPane=t.SyndContractorContent=t.SyndContractor=t.FakeTerminal=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);function i(e,t){return(i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var l=function(e){var t,n;function r(t){var n;return(n=e.call(this,t)||this).timer=null,n.state={currentIndex:0,currentDisplay:[]},n}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,i(t,n);var c=r.prototype;return c.tick=function(){var e=this.props,t=this.state;t.currentIndex<=e.allMessages.length?(this.setState((function(e){return{currentIndex:e.currentIndex+1}})),t.currentDisplay.push(e.allMessages[t.currentIndex])):(clearTimeout(this.timer),setTimeout(e.onFinished,e.finishedTimeout))},c.componentDidMount=function(){var e=this,t=this.props.linesPerSecond,n=void 0===t?2.5:t;this.timer=setInterval((function(){return e.tick()}),1e3/n)},c.componentWillUnmount=function(){clearTimeout(this.timer)},c.render=function(){return(0,o.createComponentVNode)(2,a.Box,{m:1,children:this.state.currentDisplay.map((function(e){return(0,o.createFragment)([e,(0,o.createVNode)(1,"br")],0,e)}))})},r}(o.Component);t.FakeTerminal=l;t.SyndContractor=function(e,t){return(0,o.createComponentVNode)(2,c.NtosWindow,{width:500,height:600,theme:"syndicate",resizable:!0,children:(0,o.createComponentVNode)(2,c.NtosWindow.Content,{scrollable:!0,children:(0,o.createComponentVNode)(2,d)})})};var d=function(e,t){var n=(0,r.useBackend)(t),c=n.data,i=n.act,d=["Recording biometric data...","Analyzing embedded syndicate info...","STATUS CONFIRMED","Contacting syndicate database...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Awaiting response...","Response received, ack 4851234...","CONFIRM ACC "+Math.round(2e4*Math.random()),"Setting up private accounts...","CONTRACTOR ACCOUNT CREATED","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","Searching for available contracts...","CONTRACTS FOUND","WELCOME, AGENT"],u=!!c.error&&(0,o.createComponentVNode)(2,a.Modal,{backgroundColor:"red",children:(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,children:(0,o.createComponentVNode)(2,a.Icon,{size:4,name:"exclamation-triangle"})}),(0,o.createComponentVNode)(2,a.Flex.Item,{mr:2,grow:1,textAlign:"center",children:[(0,o.createComponentVNode)(2,a.Box,{width:"260px",textAlign:"left",minHeight:"80px",children:c.error}),(0,o.createComponentVNode)(2,a.Button,{content:"Dismiss",onClick:function(){return i("PRG_clear_error")}})]})]})});return c.logged_in?c.logged_in&&c.first_load?(0,o.createComponentVNode)(2,a.Box,{backgroundColor:"rgba(0, 0, 0, 0.8)",minHeight:"525px",children:(0,o.createComponentVNode)(2,l,{allMessages:d,finishedTimeout:3e3,onFinished:function(){return i("PRG_set_first_load_finished")}})}):c.info_screen?(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{backgroundColor:"rgba(0, 0, 0, 0.8)",minHeight:"500px",children:(0,o.createComponentVNode)(2,l,{allMessages:["SyndTract v2.0","","We've identified potentional high-value targets that are","currently assigned to your mission area. They are believed","to hold valuable information which could be of immediate","importance to our organisation.","","Listed below are all of the contracts available to you. You","are to bring the specified target to the designated","drop-off, and contact us via this uplink. We will send","a specialised extraction unit to put the body into.","","We want targets alive - but we will sometimes pay slight","amounts if they're not, you just won't recieve the shown","bonus. You can redeem your payment through this uplink in","the form of raw telecrystals, which can be put into your","regular Syndicate uplink to purchase whatever you may need.","We provide you with these crystals the moment you send the","target up to us, which can be collected at anytime through","this system.","","Targets extracted will be ransomed back to the station once","their use to us is fulfilled, with us providing you a small","percentage cut. You may want to be mindful of them","identifying you when they come back. We provide you with","a standard contractor loadout, which will help cover your","identity."],linesPerSecond:10})}),(0,o.createComponentVNode)(2,a.Button,{fluid:!0,content:"CONTINUE",color:"transparent",textAlign:"center",onClick:function(){return i("PRG_toggle_info")}})],4):(0,o.createFragment)([u,(0,o.createComponentVNode)(2,s)],0):(0,o.createComponentVNode)(2,a.Section,{minHeight:"525px",children:[(0,o.createComponentVNode)(2,a.Box,{width:"100%",textAlign:"center",children:(0,o.createComponentVNode)(2,a.Button,{content:"REGISTER USER",color:"transparent",onClick:function(){return i("PRG_login")}})}),!!c.error&&(0,o.createComponentVNode)(2,a.NoticeBox,{children:c.error})]})};t.SyndContractorContent=d;var u=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data;return(0,o.createComponentVNode)(2,a.Section,{title:(0,o.createFragment)([(0,o.createTextVNode)("Contractor Status"),(0,o.createComponentVNode)(2,a.Button,{content:"View Information Again",color:"transparent",mb:0,ml:1,onClick:function(){return c("PRG_toggle_info")}})],4),buttons:(0,o.createComponentVNode)(2,a.Box,{bold:!0,mr:1,children:[i.contract_rep," Rep"]}),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{size:.85,children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"TC Available",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Claim",disabled:i.redeemable_tc<=0,onClick:function(){return c("PRG_redeem_TC")}}),children:i.redeemable_tc}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"TC Earned",children:i.earned_tc})]})}),(0,o.createComponentVNode)(2,a.Grid.Column,{children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Contracts Completed",children:i.contracts_completed}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Current Status",children:"ACTIVE"})]})})]})})};t.StatusPane=u;var s=function(e,t){var n=(0,r.useLocalState)(t,"tab",1),c=n[0],i=n[1];return(0,o.createFragment)([(0,o.createComponentVNode)(2,u,{state:e.state}),(0,o.createComponentVNode)(2,a.Tabs,{children:[(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:1===c,onClick:function(){return i(1)},children:"Contracts"}),(0,o.createComponentVNode)(2,a.Tabs.Tab,{selected:2===c,onClick:function(){return i(2)},children:"Hub"})]}),1===c&&(0,o.createComponentVNode)(2,m),2===c&&(0,o.createComponentVNode)(2,p)],0)};t.SyndPane=s;var m=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.contracts||[];return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Available Contracts",buttons:(0,o.createComponentVNode)(2,a.Button,{content:"Call Extraction",disabled:!i.ongoing_contract||i.extraction_enroute,onClick:function(){return c("PRG_call_extraction")}}),children:l.map((function(e){if(!i.ongoing_contract||2===e.status){var t=e.status>1;if(!(e.status>=5))return(0,o.createComponentVNode)(2,a.Section,{title:e.target?e.target+" ("+e.target_rank+")":"Invalid Target",level:t?1:2,buttons:(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:[e.payout," (+",e.payout_bonus,") TC"]}),(0,o.createComponentVNode)(2,a.Button,{content:t?"Abort":"Accept",disabled:e.extraction_enroute,color:t&&"bad",onClick:function(){return c("PRG_contract"+(t?"_abort":"-accept"),{contract_id:e.id})}})],4),children:(0,o.createComponentVNode)(2,a.Grid,{children:[(0,o.createComponentVNode)(2,a.Grid.Column,{children:e.message}),(0,o.createComponentVNode)(2,a.Grid.Column,{size:.5,children:[(0,o.createComponentVNode)(2,a.Box,{bold:!0,mb:1,children:"Dropoff Location:"}),(0,o.createComponentVNode)(2,a.Box,{children:e.dropoff})]})]})},e.target)}}))}),(0,o.createComponentVNode)(2,a.Section,{title:"Dropoff Locator",textAlign:"center",opacity:i.ongoing_contract?100:0,children:(0,o.createComponentVNode)(2,a.Box,{bold:!0,children:i.dropoff_direction})})],4)},p=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.contractor_hub_items||[];return(0,o.createComponentVNode)(2,a.Section,{children:l.map((function(e){var t=e.cost?e.cost+" Rep":"FREE",n=-1!==e.limited;return(0,o.createComponentVNode)(2,a.Section,{title:e.name+" - "+t,level:2,buttons:(0,o.createFragment)([n&&(0,o.createComponentVNode)(2,a.Box,{inline:!0,bold:!0,mr:1,children:[e.limited," remaining"]}),(0,o.createComponentVNode)(2,a.Button,{content:"Purchase",disabled:i.contract_rep0&&g.flatMap((function(e){return e.items||[]})).filter(L).filter((function(e,t){return t<25}))||(null==(l=g.find((function(e){return e.name===_})))?void 0:l.items)||[];return(0,o.createComponentVNode)(2,c.Section,{title:(0,o.createComponentVNode)(2,c.Box,{inline:!0,color:s>0?"good":"bad",children:[(0,i.formatMoney)(s)," ",p]}),buttons:(0,o.createFragment)([(0,o.createTextVNode)("Search"),(0,o.createComponentVNode)(2,c.Input,{autoFocus:!0,value:k,onInput:function(e,t){return x(t)},mx:1}),(0,o.createComponentVNode)(2,c.Button,{icon:V?"list":"info",content:V?"Compact":"Detailed",onClick:function(){return h("compact_toggle")}}),!!b&&(0,o.createComponentVNode)(2,c.Button,{icon:"lock",content:"Lock",onClick:function(){return h("lock")}})],0),children:(0,o.createComponentVNode)(2,c.Flex,{children:[0===k.length&&(0,o.createComponentVNode)(2,c.Flex.Item,{children:(0,o.createComponentVNode)(2,c.Tabs,{vertical:!0,children:g.map((function(e){var t;return(0,o.createComponentVNode)(2,c.Tabs.Tab,{selected:e.name===_,onClick:function(){return w(e.name)},children:[e.name," (",(null==(t=e.items)?void 0:t.length)||0,")"]},e.name)}))})}),(0,o.createComponentVNode)(2,c.Flex.Item,{grow:1,basis:0,children:[0===y.length&&(0,o.createComponentVNode)(2,c.NoticeBox,{children:0===k.length?"No items in this category.":"No results found."}),(0,o.createComponentVNode)(2,u,{compactMode:k.length>0||V,currencyAmount:s,currencySymbol:p,items:y})]})]})})};t.GenericUplink=d;var u=function(e,t){var n=e.compactMode,l=e.currencyAmount,d=e.currencySymbol,u=(0,a.useBackend)(t).act,s=(0,a.useLocalState)(t,"hoveredItem",{}),m=s[0],p=s[1],C=m&&m.cost||0,h=e.items.map((function(e){var t=m&&m.name!==e.name,n=l-Cl.user.cash),content:h?"FREE":d.price+" cr",onClick:function(){return i("vend",{ref:d.ref})}})})]})};t.Vending=function(e,t){var n,r=(0,a.useBackend)(t),d=(r.act,r.data),u=d.user,s=d.onstation,m=d.product_records,p=void 0===m?[]:m,C=d.coin_records,h=void 0===C?[]:C,N=d.hidden_records,V=void 0===N?[]:N,b=d.stock,f=!1;return d.vending_machine_input?(n=d.vending_machine_input||[],f=!0):(n=[].concat(p,h),d.extended_inventory&&(n=[].concat(n,V))),n=n.filter((function(e){return!!e})),(0,o.createComponentVNode)(2,i.Window,{title:"Vending Machine",width:450,height:600,resizable:!0,children:(0,o.createComponentVNode)(2,i.Window.Content,{scrollable:!0,children:[!!s&&(0,o.createComponentVNode)(2,c.Section,{title:"User",children:u&&(0,o.createComponentVNode)(2,c.Box,{children:["Welcome, ",(0,o.createVNode)(1,"b",null,u.name,0),","," ",(0,o.createVNode)(1,"b",null,u.job||"Unemployed",0),"!",(0,o.createVNode)(1,"br"),"Your balance is ",(0,o.createVNode)(1,"b",null,[u.cash,(0,o.createTextVNode)(" credits")],0),"."]})||(0,o.createComponentVNode)(2,c.Box,{color:"light-grey",children:["No registered ID card!",(0,o.createVNode)(1,"br"),"Please contact your local HoP!"]})}),(0,o.createComponentVNode)(2,c.Section,{title:"Products",children:(0,o.createComponentVNode)(2,c.Table,{children:n.map((function(e){return(0,o.createComponentVNode)(2,l,{custom:f,product:e,productStock:b[e.name]},e.name)}))})})]})})}},44952:function(e,t,n){"use strict";t.__esModule=!0,t.VrSleeper=void 0;var o=n(39812),r=n(71494),a=n(74814),c=n(85952);t.VrSleeper=function(e,t){var n=(0,r.useBackend)(t),i=n.act,l=n.data;return(0,o.createComponentVNode)(2,c.Window,{width:475,height:340,children:(0,o.createComponentVNode)(2,c.Window.Content,{children:[!!l.emagged&&(0,o.createComponentVNode)(2,a.Section,{children:(0,o.createComponentVNode)(2,a.Box,{color:"bad",children:"Safety restraints disabled."})}),(0,o.createComponentVNode)(2,a.Section,{title:"Virtual Avatar",children:l.vr_avatar?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Name",children:l.vr_avatar.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Status",children:l.vr_avatar.status}),!!l.vr_avatar&&(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Health",children:(0,o.createComponentVNode)(2,a.ProgressBar,{value:l.vr_avatar.health/l.vr_avatar.maxhealth,ranges:{good:[.9,Infinity],average:[.7,.8],bad:[-Infinity,.5]}})})]}):"No Virtual Avatar detected"}),(0,o.createComponentVNode)(2,a.Section,{title:"VR Commands",children:[(0,o.createComponentVNode)(2,a.Button,{icon:l.toggle_open?"unlock":"lock",disabled:l.stored0&&S[t]&&S[t]!==i,r=!S[t]&&C.includes(t)?e.desc:e.desc+" ("+b[N[t]]+")";return(0,o.createComponentVNode)(2,c.Button.Checkbox,{ml:1,fluid:!0,content:r,disabled:n,checked:s.includes(e.ref),onClick:function(){return m(e.ref,"None"===i?null:i)}},e.desc)}))}},71739:function(e,t,n){"use strict";t.__esModule=!0,t.Scrubber=t.Vent=void 0;var o=n(39812),r=n(2497),a=n(71494),c=n(74814),i=n(76270);t.Vent=function(e,t){var n=e.vent,i=(0,a.useBackend)(t).act,l=n.id_tag,d=n.long_name,u=n.power,s=n.checks,m=n.excheck,p=n.incheck,C=n.direction,h=n.external,N=n.internal,V=n.extdefault,b=n.intdefault;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,r.decodeHtmlEntities)(d),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:u?"power-off":"times",selected:u,content:u?"On":"Off",onClick:function(){return i("power",{id_tag:l,val:Number(!u)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:(0,o.createComponentVNode)(2,c.Button,{icon:"sign-in-alt",content:C?"Pressurizing":"Scrubbing",color:!C&&"danger",onClick:function(){return i("direction",{id_tag:l,val:Number(!C)})}})}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Pressure Regulator",children:[(0,o.createComponentVNode)(2,c.Button,{icon:"sign-in-alt",content:"Internal",selected:p,onClick:function(){return i("incheck",{id_tag:l,val:s})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"sign-out-alt",content:"External",selected:m,onClick:function(){return i("excheck",{id_tag:l,val:s})}})]}),!!p&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Internal Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(N),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,t){return i("set_internal_pressure",{id_tag:l,value:t})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:b,content:"Reset",onClick:function(){return i("reset_internal_pressure",{id_tag:l})}})]}),!!m&&(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"External Target",children:[(0,o.createComponentVNode)(2,c.NumberInput,{value:Math.round(h),unit:"kPa",width:"75px",minValue:0,step:10,maxValue:5066,onChange:function(e,t){return i("set_external_pressure",{id_tag:l,value:t})}}),(0,o.createComponentVNode)(2,c.Button,{icon:"undo",disabled:V,content:"Reset",onClick:function(){return i("reset_external_pressure",{id_tag:l})}})]})]})})};t.Scrubber=function(e,t){var n=e.scrubber,l=(0,a.useBackend)(t).act,d=n.long_name,u=n.power,s=n.scrubbing,m=n.id_tag,p=n.widenet,C=n.filter_types;return(0,o.createComponentVNode)(2,c.Section,{level:2,title:(0,r.decodeHtmlEntities)(d),buttons:(0,o.createComponentVNode)(2,c.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return l("power",{id_tag:m,val:Number(!u)})}}),children:(0,o.createComponentVNode)(2,c.LabeledList,{children:[(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Mode",children:[(0,o.createComponentVNode)(2,c.Button,{icon:s?"filter":"sign-in-alt",color:s||"danger",content:s?"Scrubbing":"Siphoning",onClick:function(){return l("scrubbing",{id_tag:m,val:Number(!s)})}}),(0,o.createComponentVNode)(2,c.Button,{icon:p?"expand":"compress",selected:p,content:p?"Expanded range":"Normal range",onClick:function(){return l("widenet",{id_tag:m,val:Number(!p)})}})]}),(0,o.createComponentVNode)(2,c.LabeledList.Item,{label:"Filters",children:s&&C.map((function(e){return(0,o.createComponentVNode)(2,c.Button,{icon:e.enabled?"check-square-o":"square-o",content:(0,i.getGasLabel)(e.gas_id,e.gas_name),title:e.gas_name,selected:e.enabled,onClick:function(){return l("toggle_filter",{id_tag:m,val:e.gas_id})}},e.gas_id)}))||"N/A"})]})})}},48229:function(e,t,n){"use strict";t.__esModule=!0,t.BeakerContents=void 0;var o=n(39812),r=n(74814);t.BeakerContents=function(e){var t=e.beakerLoaded,n=e.beakerContents;return(0,o.createComponentVNode)(2,r.Box,{children:[!t&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"No beaker loaded."})||0===n.length&&(0,o.createComponentVNode)(2,r.Box,{color:"label",children:"Beaker is empty."}),n.map((function(e){return(0,o.createComponentVNode)(2,r.Box,{color:"label",children:[(0,o.createComponentVNode)(2,r.AnimatedNumber,{initial:0,value:e.volume})," units of "+e.name]},e.name)}))]})}},21451:function(e,t,n){"use strict";t.__esModule=!0,t.InterfaceLockNoticeBox=void 0;var o=n(39812),r=n(71494),a=n(74814);t.InterfaceLockNoticeBox=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=e.siliconUser,d=void 0===l?i.siliconUser:l,u=e.locked,s=void 0===u?i.locked:u,m=e.onLockStatusChange,p=void 0===m?function(){return c("lock")}:m,C=e.accessText,h=void 0===C?"an ID card":C;return d?(0,o.createComponentVNode)(2,a.NoticeBox,{color:"grey",children:(0,o.createComponentVNode)(2,a.Flex,{align:"center",children:[(0,o.createComponentVNode)(2,a.Flex.Item,{children:"Interface lock status:"}),(0,o.createComponentVNode)(2,a.Flex.Item,{grow:1}),(0,o.createComponentVNode)(2,a.Flex.Item,{children:(0,o.createComponentVNode)(2,a.Button,{m:0,color:s?"red":"green",icon:s?"lock":"unlock",content:s?"Locked":"Unlocked",onClick:function(){p&&p(!s)}})})]})}):(0,o.createComponentVNode)(2,a.NoticeBox,{children:["Swipe ",h," ","to ",s?"unlock":"lock"," this interface."]})}},34227:function(e,t,n){"use strict";t.__esModule=!0,t.PortableBasicInfo=void 0;var o=n(39812),r=n(71494),a=n(74814);t.PortableBasicInfo=function(e,t){var n=(0,r.useBackend)(t),c=n.act,i=n.data,l=i.connected,d=i.holding,u=i.on,s=i.pressure;return(0,o.createFragment)([(0,o.createComponentVNode)(2,a.Section,{title:"Status",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:u?"power-off":"times",content:u?"On":"Off",selected:u,onClick:function(){return c("power")}}),children:(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:s})," kPa"]}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Port",color:l?"good":"average",children:l?"Connected":"Not Connected"})]})}),(0,o.createComponentVNode)(2,a.Section,{title:"Holding Tank",minHeight:"82px",buttons:(0,o.createComponentVNode)(2,a.Button,{icon:"eject",content:"Eject",disabled:!d,onClick:function(){return c("eject")}}),children:d?(0,o.createComponentVNode)(2,a.LabeledList,{children:[(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Label",children:d.name}),(0,o.createComponentVNode)(2,a.LabeledList.Item,{label:"Pressure",children:[(0,o.createComponentVNode)(2,a.AnimatedNumber,{value:d.pressure})," kPa"]})]}):(0,o.createComponentVNode)(2,a.Box,{color:"average",children:"No holding tank"})})],4)}},73218:function(e,t,n){"use strict";t.__esModule=!0,t.getRoutedComponent=void 0;var o=n(39812),r=n(71494),a=(n(30098),n(85952)),c=n(8156),i=function(e,t){return function(){return(0,o.createComponentVNode)(2,a.Window,{children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:["notFound"===e&&(0,o.createVNode)(1,"div",null,[(0,o.createTextVNode)("Interface "),(0,o.createVNode)(1,"b",null,t,0),(0,o.createTextVNode)(" was not found.")],4),"missingExport"===e&&(0,o.createVNode)(1,"div",null,[(0,o.createTextVNode)("Interface "),(0,o.createVNode)(1,"b",null,t,0),(0,o.createTextVNode)(" is missing an export.")],4)]})})}},l=function(){return(0,o.createComponentVNode)(2,a.Window,{children:(0,o.createComponentVNode)(2,a.Window.Content,{scrollable:!0})})};t.getRoutedComponent=function(e){var t=e.getState(),n=(0,r.selectBackend)(t),o=n.suspended,a=n.config;if(o)return l;for(var d,u=null==a?void 0:a["interface"],s=[function(e){return"./"+e+".tsx"},function(e){return"./"+e+".js"},function(e){return"./"+e+"/index.tsx"},function(e){return"./"+e+"/index.js"}];!d&&s.length>0;){var m=s.shift()(u);try{d=c(m)}catch(C){if("MODULE_NOT_FOUND"!==C.code)throw C}}if(!d)return i("notFound",u);var p=d[u];return p||i("missingExport",u)}},56285:function(){},58602:function(){},92433:function(){},20459:function(){},35070:function(){},86455:function(){},41821:function(){},83243:function(){},97585:function(){},87266:function(){},99195:function(){},72916:function(){},8156:function(e,t,n){var o={"./AbductorConsole":37905,"./AbductorConsole.js":37905,"./Achievements":16804,"./Achievements.js":16804,"./AiAirlock":47330,"./AiAirlock.js":47330,"./AiRestorer":33084,"./AiRestorer.js":33084,"./AirAlarm":58444,"./AirAlarm.js":58444,"./AirlockElectronics":54370,"./AirlockElectronics.js":54370,"./AlertModal":24053,"./AlertModal.js":24053,"./Apc":93749,"./Apc.js":93749,"./ApcControl":78645,"./ApcControl.js":78645,"./AtmosAlertConsole":38531,"./AtmosAlertConsole.js":38531,"./AtmosControlConsole":4852,"./AtmosControlConsole.js":4852,"./AtmosControlPanel":40948,"./AtmosControlPanel.js":40948,"./AtmosFilter":2726,"./AtmosFilter.js":2726,"./AtmosMixer":61505,"./AtmosMixer.js":61505,"./AtmosPump":30255,"./AtmosPump.js":30255,"./AtmosRelief":78598,"./AtmosRelief.js":78598,"./AutomatedAnnouncement":33106,"./AutomatedAnnouncement.js":33106,"./BankMachine":57554,"./BankMachine.js":57554,"./Bepis":51723,"./Bepis.js":51723,"./Biogenerator":20813,"./Biogenerator.js":20813,"./BlackmarketUplink":14847,"./BlackmarketUplink.js":14847,"./BluespaceArtillery":32129,"./BluespaceArtillery.js":32129,"./BluespaceLocator":16370,"./BluespaceLocator.js":16370,"./BorgPanel":30876,"./BorgPanel.js":30876,"./BrigTimer":61956,"./BrigTimer.js":61956,"./CameraConsole":3180,"./CameraConsole.js":3180,"./Canister":94477,"./Canister.js":94477,"./Canvas":55636,"./Canvas.js":55636,"./Cargo":5758,"./Cargo.js":5758,"./CargoBountyConsole":96291,"./CargoBountyConsole.js":96291,"./CargoExpress":69941,"./CargoExpress.js":69941,"./CargoHoldTerminal":62292,"./CargoHoldTerminal.js":62292,"./CellularEmporium":27173,"./CellularEmporium.js":27173,"./CentcomPodLauncher":26726,"./CentcomPodLauncher.js":26726,"./ChemAcclimator":8663,"./ChemAcclimator.js":8663,"./ChemDebugSynthesizer":76900,"./ChemDebugSynthesizer.js":76900,"./ChemDispenser":22223,"./ChemDispenser.js":22223,"./ChemFilter":16610,"./ChemFilter.js":16610,"./ChemHeater":96479,"./ChemHeater.js":96479,"./ChemMaster":34859,"./ChemMaster.js":34859,"./ChemPress":56320,"./ChemPress.js":56320,"./ChemReactionChamber":52592,"./ChemReactionChamber.js":52592,"./ChemSplitter":68502,"./ChemSplitter.js":68502,"./ChemSynthesizer":77508,"./ChemSynthesizer.js":77508,"./CivCargoHoldTerminal":30733,"./CivCargoHoldTerminal.js":30733,"./ClockworkSlab":14319,"./ClockworkSlab.js":14319,"./CodexGigas":28408,"./CodexGigas.js":28408,"./Colormate":67649,"./Colormate.js":67649,"./ComputerFabricator":2174,"./ComputerFabricator.js":2174,"./Crayon":99672,"./Crayon.js":99672,"./CrewConsole":72357,"./CrewConsole.js":72357,"./Cryo":99798,"./Cryo.js":99798,"./DecalPainter":17785,"./DecalPainter.js":17785,"./DisposalUnit":95877,"./DisposalUnit.js":95877,"./DnaConsole":43928,"./DnaConsole.js":43928,"./DnaVault":89817,"./DnaVault.js":89817,"./EightBallVote":41284,"./EightBallVote.js":41284,"./Electrolyzer":31342,"./Electrolyzer.js":31342,"./Electropack":53586,"./Electropack.js":53586,"./EmergencyShuttleConsole":47453,"./EmergencyShuttleConsole.js":47453,"./EngravedMessage":11715,"./EngravedMessage.js":11715,"./ExosuitControlConsole":8077,"./ExosuitControlConsole.js":8077,"./ExosuitFabricator":95481,"./ExosuitFabricator.js":95481,"./ForbiddenLore":1005,"./ForbiddenLore.js":1005,"./Gateway":64831,"./Gateway.js":64831,"./GhostPoolProtection":8098,"./GhostPoolProtection.js":8098,"./GlandDispenser":25313,"./GlandDispenser.js":25313,"./Gps":25230,"./Gps.js":25230,"./GravityGenerator":4475,"./GravityGenerator.js":4475,"./GulagItemReclaimer":83366,"./GulagItemReclaimer.js":83366,"./GulagTeleporterConsole":72263,"./GulagTeleporterConsole.js":72263,"./Holodeck":7908,"./Holodeck.js":7908,"./Holopad":84283,"./Holopad.js":84283,"./HypnoChair":12708,"./HypnoChair.js":12708,"./ImplantChair":1473,"./ImplantChair.js":1473,"./InfraredEmitter":87522,"./InfraredEmitter.js":87522,"./Intellicard":28549,"./Intellicard.js":28549,"./Jukebox":68741,"./Jukebox.js":68741,"./KeycardAuth":36597,"./KeycardAuth.js":36597,"./LaborClaimConsole":52169,"./LaborClaimConsole.js":52169,"./LanguageMenu":83577,"./LanguageMenu.js":83577,"./LaunchpadConsole":79381,"./LaunchpadConsole.js":79381,"./LaunchpadRemote":59955,"./LaunchpadRemote.js":59955,"./LoadoutSelect":71293,"./LoadoutSelect.js":71293,"./MafiaPanel":5568,"./MafiaPanel.js":5568,"./MalfunctionModulePicker":42159,"./MalfunctionModulePicker.js":42159,"./MechBayPowerConsole":80881,"./MechBayPowerConsole.js":80881,"./MechpadConsole":37305,"./MechpadConsole.js":37305,"./MedicalKiosk":74702,"./MedicalKiosk.js":74702,"./Microscope":61443,"./Microscope.js":61443,"./MiningVendor":62012,"./MiningVendor.js":62012,"./Mint":83413,"./Mint.js":83413,"./Mule":97397,"./Mule.js":97397,"./NaniteChamberControl":42370,"./NaniteChamberControl.js":42370,"./NaniteCloudControl":93623,"./NaniteCloudControl.js":93623,"./NaniteProgramHub":22682,"./NaniteProgramHub.js":22682,"./NaniteProgrammer":87554,"./NaniteProgrammer.js":87554,"./NaniteRemote":73708,"./NaniteRemote.js":73708,"./NotificationPreferences":15394,"./NotificationPreferences.js":15394,"./NtnetRelay":53158,"./NtnetRelay.js":53158,"./NtosAiRestorer":86156,"./NtosAiRestorer.js":86156,"./NtosArcade":79760,"./NtosArcade.js":79760,"./NtosAtmos":5313,"./NtosAtmos.js":5313,"./NtosBountyConsole":78502,"./NtosBountyConsole.js":78502,"./NtosCard":30495,"./NtosCard.js":30495,"./NtosConfiguration":55513,"./NtosConfiguration.js":55513,"./NtosCrewManifest":48791,"./NtosCrewManifest.js":48791,"./NtosCyborgRemoteMonitor":77426,"./NtosCyborgRemoteMonitor.js":77426,"./NtosCyborgRemoteMonitorSyndicate":71854,"./NtosCyborgRemoteMonitorSyndicate.js":71854,"./NtosFileManager":86441,"./NtosFileManager.js":86441,"./NtosJobManager":38773,"./NtosJobManager.js":38773,"./NtosMain":59543,"./NtosMain.js":59543,"./NtosNetChat":73883,"./NtosNetChat.js":73883,"./NtosNetDos":83908,"./NtosNetDos.js":83908,"./NtosNetDownloader":83305,"./NtosNetDownloader.js":83305,"./NtosNetMonitor":6806,"./NtosNetMonitor.js":6806,"./NtosPowerMonitor":54698,"./NtosPowerMonitor.js":54698,"./NtosRadar":49413,"./NtosRadar.js":49413,"./NtosRadarSyndicate":41935,"./NtosRadarSyndicate.js":41935,"./NtosRequestKiosk":60839,"./NtosRequestKiosk.js":60839,"./NtosRevelation":69480,"./NtosRevelation.js":69480,"./NtosRoboControl":36888,"./NtosRoboControl.js":36888,"./NtosShipping":55431,"./NtosShipping.js":55431,"./NtosStationAlertConsole":76124,"./NtosStationAlertConsole.js":76124,"./NtosSupermatterMonitor":22475,"./NtosSupermatterMonitor.js":22475,"./NuclearBomb":78467,"./NuclearBomb.js":78467,"./OperatingComputer":48826,"./OperatingComputer.js":48826,"./Orbit":36983,"./Orbit.js":36983,"./OreBox":57800,"./OreBox.js":57800,"./OreRedemptionMachine":72938,"./OreRedemptionMachine.js":72938,"./Pandemic":47944,"./Pandemic.js":47944,"./PaperSheet":52472,"./PaperSheet.js":52472,"./ParticleAccelerator":57966,"./ParticleAccelerator.js":57966,"./PersonalCrafting":67589,"./PersonalCrafting.js":67589,"./Photocopier":9527,"./Photocopier.js":9527,"./PortableChemMixer":36088,"./PortableChemMixer.js":36088,"./PortableGenerator":46104,"./PortableGenerator.js":46104,"./PortablePump":82564,"./PortablePump.js":82564,"./PortableScrubber":24901,"./PortableScrubber.js":24901,"./PortableTurret":31695,"./PortableTurret.js":31695,"./PowerMonitor":89793,"./PowerMonitor.js":89793,"./ProbingConsole":49081,"./ProbingConsole.js":49081,"./ProximitySensor":33642,"./ProximitySensor.js":33642,"./Radio":17481,"./Radio.js":17481,"./RadioactiveMicrolaser":8324,"./RadioactiveMicrolaser.js":8324,"./RapidPipeDispenser":29509,"./RapidPipeDispenser.js":29509,"./RemoteRobotControl":14265,"./RemoteRobotControl.js":14265,"./RequestKiosk":18374,"./RequestKiosk.js":18374,"./RoboticsControlConsole":24455,"./RoboticsControlConsole.js":24455,"./Roulette":90910,"./Roulette.js":90910,"./SatelliteControl":14317,"./SatelliteControl.js":14317,"./ScannerGate":55666,"./ScannerGate.js":55666,"./SeedExtractor":53480,"./SeedExtractor.js":53480,"./ShuttleConsole":41125,"./ShuttleConsole.js":41125,"./ShuttleManipulator":93138,"./ShuttleManipulator.js":93138,"./Signaler":32325,"./Signaler.js":32325,"./SkillPanel":52757,"./SkillPanel.js":52757,"./SkillStation":43078,"./SkillStation.js":43078,"./Sleeper":80646,"./Sleeper.js":80646,"./SlimeBodySwapper":97700,"./SlimeBodySwapper.js":97700,"./SmartVend":55896,"./SmartVend.js":55896,"./Smes":20561,"./Smes.js":20561,"./SmokeMachine":93267,"./SmokeMachine.js":93267,"./SolarControl":21633,"./SolarControl.js":21633,"./SpaceHeater":57762,"./SpaceHeater.js":57762,"./SpawnersMenu":46810,"./SpawnersMenu.js":46810,"./StationAlertConsole":32015,"./StationAlertConsole.js":32015,"./SuitStorageUnit":80748,"./SuitStorageUnit.js":80748,"./SyndContractor":37162,"./SyndContractor.js":37162,"./TachyonArray":93724,"./TachyonArray.js":93724,"./Tank":58457,"./Tank.js":58457,"./TankDispenser":38754,"./TankDispenser.js":38754,"./Telecomms":88792,"./Telecomms.js":88792,"./TelecommsInteraction":87294,"./TelecommsInteraction.js":87294,"./TelecommsLogBrowser":73754,"./TelecommsLogBrowser.js":73754,"./TelecommsMonitor":61831,"./TelecommsMonitor.js":61831,"./TelecommsPDALog":49898,"./TelecommsPDALog.js":49898,"./Teleporter":18509,"./Teleporter.js":18509,"./ThermoMachine":55469,"./ThermoMachine.js":55469,"./Timer":94936,"./Timer.js":94936,"./TransferValve":24389,"./TransferValve.js":24389,"./TurbineComputer":30499,"./TurbineComputer.js":30499,"./TurretControl":46669,"./TurretControl.js":46669,"./Uplink":89761,"./Uplink.js":89761,"./VaultController":39544,"./VaultController.js":39544,"./Vendatray":32539,"./Vendatray.js":32539,"./Vending":61321,"./Vending.js":61321,"./VrSleeper":44952,"./VrSleeper.js":44952,"./Wires":21162,"./Wires.js":21162,"./common/AccessList":5665,"./common/AccessList.js":5665,"./common/AtmosControls":71739,"./common/AtmosControls.js":71739,"./common/BeakerContents":48229,"./common/BeakerContents.js":48229,"./common/InterfaceLockNoticeBox":21451,"./common/InterfaceLockNoticeBox.js":21451,"./common/PortableAtmos":34227,"./common/PortableAtmos.js":34227};function r(e){var t=a(e);return n(t)}function a(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}r.keys=function(){return Object.keys(o)},r.resolve=a,e.exports=r,r.id=8156}},n={};function o(e){var r=n[e];if(r!==undefined)return r.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,o),a.exports}o.m=t,e=[],o.O=function(t,n,r,a){if(!n){var c=Infinity;for(d=0;d=a)&&Object.keys(o.O).every((function(e){return o.O[e](n[l])}))?n.splice(l--,1):(i=!1,a0&&e[d-1][2]>a;d--)e[d]=e[d-1];e[d]=[n,r,a]},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={764:0};o.O.j=function(t){return 0===e[t]};var t=function(t,n){var r,a,c=n[0],i=n[1],l=n[2],d=0;for(r in i)o.o(i,r)&&(o.m[r]=i[r]);for(l&&l(o),t&&t(n);d