diff --git a/.vscode/settings.json b/.vscode/settings.json index 9d5a1ce1..5dedea52 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,9 +11,14 @@ "eslint.codeActionsOnSave.rules": [ "@typescript-eslint/no-unused-vars", "@typescript-eslint/consistent-type-imports", - "prettier/prettier", + "prettier/prettier" ], "editor.codeActionsOnSave": { "source.organizeImports": "always" }, + "tailwindCSS.experimental.classRegex": [ + ["Classes \\=([^;]*);", "'([^']*)'"], + ["Classes \\=([^;]*);", "\"([^\"]*)\""], + ["Classes \\=([^;]*);", "\\`([^\\`]*)\\`"] + ] } diff --git a/@/additions/tabs.tsx b/@/additions/tabs.tsx new file mode 100644 index 00000000..932dfb74 --- /dev/null +++ b/@/additions/tabs.tsx @@ -0,0 +1,19 @@ +import { TabsList, TabsTrigger } from '@/components/ui/tabs'; +import { cn } from '@/lib/utils'; +import React from 'react'; + +export const TabsTriggerTransparent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); + +export const TabsListTransparent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ); diff --git a/prettier.config.mjs b/prettier.config.mjs index 20c06314..684d91d0 100644 --- a/prettier.config.mjs +++ b/prettier.config.mjs @@ -1,11 +1,13 @@ /** @type {import('prettier').Config & import('prettier-plugin-tailwindcss').options} */ const config = { - trailingComma: 'all', - tabWidth: 4, - printWidth: 120, - semi: true, - singleQuote: true, - plugins: ['prettier-plugin-tailwindcss'], -} + trailingComma: 'all', + tabWidth: 4, + printWidth: 120, + semi: true, + singleQuote: true, + plugins: ['prettier-plugin-tailwindcss'], + tailwindFunctions: ['cn'], + tailwindAttributes: ['iconClassName', 'textClassName'], +}; -export default config +export default config; diff --git a/public/ingame-sprites/achievement/Achievement_icon__0000_watcher.png b/public/ingame-sprites/achievement/Achievement_icon__0000_watcher.png new file mode 100644 index 00000000..72aa796b Binary files /dev/null and b/public/ingame-sprites/achievement/Achievement_icon__0000_watcher.png differ diff --git a/public/ingame-sprites/achievement/Achievement_icon__0001_teacher.png b/public/ingame-sprites/achievement/Achievement_icon__0001_teacher.png new file mode 100644 index 00000000..14cd52e0 Binary files /dev/null and b/public/ingame-sprites/achievement/Achievement_icon__0001_teacher.png differ diff --git a/public/ingame-sprites/achievement/Achievement_icon__0002_beast.png b/public/ingame-sprites/achievement/Achievement_icon__0002_beast.png new file mode 100644 index 00000000..3db68f7f Binary files /dev/null and b/public/ingame-sprites/achievement/Achievement_icon__0002_beast.png differ diff --git a/public/ingame-sprites/achievement/Grimm_0000_3.png b/public/ingame-sprites/achievement/Grimm_0000_3.png new file mode 100644 index 00000000..74c92fec Binary files /dev/null and b/public/ingame-sprites/achievement/Grimm_0000_3.png differ diff --git a/public/ingame-sprites/achievement/Grimm_0001_2.png b/public/ingame-sprites/achievement/Grimm_0001_2.png new file mode 100644 index 00000000..e3f4fc85 Binary files /dev/null and b/public/ingame-sprites/achievement/Grimm_0001_2.png differ diff --git a/public/ingame-sprites/achievement/Grimm_0002_1.png b/public/ingame-sprites/achievement/Grimm_0002_1.png new file mode 100644 index 00000000..5c46fc67 Binary files /dev/null and b/public/ingame-sprites/achievement/Grimm_0002_1.png differ diff --git a/public/ingame-sprites/achievement/achievement_Hunter_Journal.png b/public/ingame-sprites/achievement/achievement_Hunter_Journal.png new file mode 100644 index 00000000..13c625bc Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_Hunter_Journal.png differ diff --git a/public/ingame-sprites/achievement/achievement_Hunter_Marks.png b/public/ingame-sprites/achievement/achievement_Hunter_Marks.png new file mode 100644 index 00000000..2d774ba6 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_Hunter_Marks.png differ diff --git a/public/ingame-sprites/achievement/achievement_Mr_Mushroom.png b/public/ingame-sprites/achievement/achievement_Mr_Mushroom.png new file mode 100644 index 00000000..bd8b35e3 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_Mr_Mushroom.png differ diff --git a/public/ingame-sprites/achievement/achievement__0000_100_complete.png b/public/ingame-sprites/achievement/achievement__0000_100_complete.png new file mode 100644 index 00000000..0a9444e7 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0000_100_complete.png differ diff --git a/public/ingame-sprites/achievement/achievement__0001_all_maps.png b/public/ingame-sprites/achievement/achievement__0001_all_maps.png new file mode 100644 index 00000000..a6126e64 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0001_all_maps.png differ diff --git a/public/ingame-sprites/achievement/achievement__0004_ending_C.png b/public/ingame-sprites/achievement/achievement__0004_ending_C.png new file mode 100644 index 00000000..f167b614 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0004_ending_C.png differ diff --git a/public/ingame-sprites/achievement/achievement__0005_ending_B.png b/public/ingame-sprites/achievement/achievement__0005_ending_B.png new file mode 100644 index 00000000..90593a4d Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0005_ending_B.png differ diff --git a/public/ingame-sprites/achievement/achievement__0006_ending_A.png b/public/ingame-sprites/achievement/achievement__0006_ending_A.png new file mode 100644 index 00000000..dfc11923 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0006_ending_A.png differ diff --git a/public/ingame-sprites/achievement/achievement__0007_stag_quest_complete.png b/public/ingame-sprites/achievement/achievement__0007_stag_quest_complete.png new file mode 100644 index 00000000..b8b0389c Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0007_stag_quest_complete.png differ diff --git a/public/ingame-sprites/achievement/achievement__0008_stag_stations_half.png b/public/ingame-sprites/achievement/achievement__0008_stag_stations_half.png new file mode 100644 index 00000000..a566c938 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0008_stag_stations_half.png differ diff --git a/public/ingame-sprites/achievement/achievement__0009_quirrel_lake_sit.png b/public/ingame-sprites/achievement/achievement__0009_quirrel_lake_sit.png new file mode 100644 index 00000000..4726b4bd Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0009_quirrel_lake_sit.png differ diff --git a/public/ingame-sprites/achievement/achievement__0010_grey_mourner_quest_complete.png b/public/ingame-sprites/achievement/achievement__0010_grey_mourner_quest_complete.png new file mode 100644 index 00000000..4f6cbc98 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0010_grey_mourner_quest_complete.png differ diff --git a/public/ingame-sprites/achievement/achievement__0011_bretta_quest_complete.png b/public/ingame-sprites/achievement/achievement__0011_bretta_quest_complete.png new file mode 100644 index 00000000..ae990b2a Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0011_bretta_quest_complete.png differ diff --git a/public/ingame-sprites/achievement/achievement__0012_nailsmith_love.png b/public/ingame-sprites/achievement/achievement__0012_nailsmith_love.png new file mode 100644 index 00000000..49b27b57 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0012_nailsmith_love.png differ diff --git a/public/ingame-sprites/achievement/achievement__0013_nailsmith_death.png b/public/ingame-sprites/achievement/achievement__0013_nailsmith_death.png new file mode 100644 index 00000000..76e1013b Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0013_nailsmith_death.png differ diff --git a/public/ingame-sprites/achievement/achievement__0014_dream_witch_quest_end.png b/public/ingame-sprites/achievement/achievement__0014_dream_witch_quest_end.png new file mode 100644 index 00000000..754c4165 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0014_dream_witch_quest_end.png differ diff --git a/public/ingame-sprites/achievement/achievement__0015_vessels_full.png b/public/ingame-sprites/achievement/achievement__0015_vessels_full.png new file mode 100644 index 00000000..4f000945 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0015_vessels_full.png differ diff --git a/public/ingame-sprites/achievement/achievement__0016_heart_01 #1997909.png b/public/ingame-sprites/achievement/achievement__0016_heart_01 #1997909.png new file mode 100644 index 00000000..8a5b390d Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0016_heart_01 #1997909.png differ diff --git a/public/ingame-sprites/achievement/achievement__0016_heart_01.png b/public/ingame-sprites/achievement/achievement__0016_heart_01.png new file mode 100644 index 00000000..335ebf9a Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0016_heart_01.png differ diff --git a/public/ingame-sprites/achievement/achievement__0017_vessels_full.png b/public/ingame-sprites/achievement/achievement__0017_vessels_full.png new file mode 100644 index 00000000..dff1779e Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0017_vessels_full.png differ diff --git a/public/ingame-sprites/achievement/achievement__0018_vessel_01.png b/public/ingame-sprites/achievement/achievement__0018_vessel_01.png new file mode 100644 index 00000000..d9bbb657 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0018_vessel_01.png differ diff --git a/public/ingame-sprites/achievement/achievement__0019_charms_full.png b/public/ingame-sprites/achievement/achievement__0019_charms_full.png new file mode 100644 index 00000000..669e2355 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0019_charms_full.png differ diff --git a/public/ingame-sprites/achievement/achievement__0020_charms_half.png b/public/ingame-sprites/achievement/achievement__0020_charms_half.png new file mode 100644 index 00000000..f3efb265 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0020_charms_half.png differ diff --git a/public/ingame-sprites/achievement/achievement__0021_grubs_full.png b/public/ingame-sprites/achievement/achievement__0021_grubs_full.png new file mode 100644 index 00000000..301467c5 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0021_grubs_full.png differ diff --git a/public/ingame-sprites/achievement/achievement__0022_grubs_half.png b/public/ingame-sprites/achievement/achievement__0022_grubs_half.png new file mode 100644 index 00000000..c4eb70a8 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0022_grubs_half.png differ diff --git a/public/ingame-sprites/achievement/achievement__0023_traitor_lord.png b/public/ingame-sprites/achievement/achievement__0023_traitor_lord.png new file mode 100644 index 00000000..ce4eb3c3 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0023_traitor_lord.png differ diff --git a/public/ingame-sprites/achievement/achievement__0024_cloth_quest.png b/public/ingame-sprites/achievement/achievement__0024_cloth_quest.png new file mode 100644 index 00000000..ecb78ea2 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0024_cloth_quest.png differ diff --git a/public/ingame-sprites/achievement/achievement__0025_dream-orbs-2.png b/public/ingame-sprites/achievement/achievement__0025_dream-orbs-2.png new file mode 100644 index 00000000..700e7234 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0025_dream-orbs-2.png differ diff --git a/public/ingame-sprites/achievement/achievement__0026_dream-orbs-1.png b/public/ingame-sprites/achievement/achievement__0026_dream-orbs-1.png new file mode 100644 index 00000000..6471106f Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0026_dream-orbs-1.png differ diff --git a/public/ingame-sprites/achievement/achievement__0027_dream-nail-upgraded.png b/public/ingame-sprites/achievement/achievement__0027_dream-nail-upgraded.png new file mode 100644 index 00000000..7b034894 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0027_dream-nail-upgraded.png differ diff --git a/public/ingame-sprites/achievement/achievement__0028_dream-nail-01.png b/public/ingame-sprites/achievement/achievement__0028_dream-nail-01.png new file mode 100644 index 00000000..2906f776 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0028_dream-nail-01.png differ diff --git a/public/ingame-sprites/achievement/achievement__0029_broken_shell_dream.png b/public/ingame-sprites/achievement/achievement__0029_broken_shell_dream.png new file mode 100644 index 00000000..2d42020c Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0029_broken_shell_dream.png differ diff --git a/public/ingame-sprites/achievement/achievement__0030_mage_lord_dream.png b/public/ingame-sprites/achievement/achievement__0030_mage_lord_dream.png new file mode 100644 index 00000000..fc700f45 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0030_mage_lord_dream.png differ diff --git a/public/ingame-sprites/achievement/achievement__0031_false_knight_dream.png b/public/ingame-sprites/achievement/achievement__0031_false_knight_dream.png new file mode 100644 index 00000000..6335d34d Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0031_false_knight_dream.png differ diff --git a/public/ingame-sprites/achievement/achievement__0032_hornet_02.png b/public/ingame-sprites/achievement/achievement__0032_hornet_02.png new file mode 100644 index 00000000..364deaa2 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0032_hornet_02.png differ diff --git a/public/ingame-sprites/achievement/achievement__0033_charm_01 #1997543.png b/public/ingame-sprites/achievement/achievement__0033_charm_01 #1997543.png new file mode 100644 index 00000000..ad440e30 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0033_charm_01 #1997543.png differ diff --git a/public/ingame-sprites/achievement/achievement__0033_charm_01.png b/public/ingame-sprites/achievement/achievement__0033_charm_01.png new file mode 100644 index 00000000..795d41c9 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0033_charm_01.png differ diff --git a/public/ingame-sprites/achievement/achievement__0034_zote_dead.png b/public/ingame-sprites/achievement/achievement__0034_zote_dead.png new file mode 100644 index 00000000..e3a4af55 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement__0034_zote_dead.png differ diff --git a/public/ingame-sprites/achievement/achievement_colosseum_bronze.png b/public/ingame-sprites/achievement/achievement_colosseum_bronze.png new file mode 100644 index 00000000..617802f2 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_colosseum_bronze.png differ diff --git a/public/ingame-sprites/achievement/achievement_colosseum_gold.png b/public/ingame-sprites/achievement/achievement_colosseum_gold.png new file mode 100644 index 00000000..7740b709 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_colosseum_gold.png differ diff --git a/public/ingame-sprites/achievement/achievement_colosseum_silver.png b/public/ingame-sprites/achievement/achievement_colosseum_silver.png new file mode 100644 index 00000000..c441ca7e Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_colosseum_silver.png differ diff --git a/public/ingame-sprites/achievement/achievement_false_knight #1997295.png b/public/ingame-sprites/achievement/achievement_false_knight #1997295.png new file mode 100644 index 00000000..f092b214 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_false_knight #1997295.png differ diff --git a/public/ingame-sprites/achievement/achievement_false_knight.png b/public/ingame-sprites/achievement/achievement_false_knight.png new file mode 100644 index 00000000..f4131ff9 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_false_knight.png differ diff --git a/public/ingame-sprites/achievement/achievement_fast_completionist.png b/public/ingame-sprites/achievement/achievement_fast_completionist.png new file mode 100644 index 00000000..cf5898c8 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_fast_completionist.png differ diff --git a/public/ingame-sprites/achievement/achievement_fast_finish.png b/public/ingame-sprites/achievement/achievement_fast_finish.png new file mode 100644 index 00000000..e6bfa509 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_fast_finish.png differ diff --git a/public/ingame-sprites/achievement/achievement_fleur0000.png b/public/ingame-sprites/achievement/achievement_fleur0000.png new file mode 100644 index 00000000..68fde8d3 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_fleur0000.png differ diff --git a/public/ingame-sprites/achievement/achievement_fleur0001.png b/public/ingame-sprites/achievement/achievement_fleur0001.png new file mode 100644 index 00000000..faf0f85c Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_fleur0001.png differ diff --git a/public/ingame-sprites/achievement/achievement_fleur0002.png b/public/ingame-sprites/achievement/achievement_fleur0002.png new file mode 100644 index 00000000..a84500e5 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_fleur0002.png differ diff --git a/public/ingame-sprites/achievement/achievement_fleur0003.png b/public/ingame-sprites/achievement/achievement_fleur0003.png new file mode 100644 index 00000000..c5b32538 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_fleur0003.png differ diff --git a/public/ingame-sprites/achievement/achievement_fleur0004.png b/public/ingame-sprites/achievement/achievement_fleur0004.png new file mode 100644 index 00000000..b1c2acfc Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_fleur0004.png differ diff --git a/public/ingame-sprites/achievement/achievement_fleur0005.png b/public/ingame-sprites/achievement/achievement_fleur0005.png new file mode 100644 index 00000000..de7cc81a Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_fleur0005.png differ diff --git a/public/ingame-sprites/achievement/achievement_fleur_backboard.png b/public/ingame-sprites/achievement/achievement_fleur_backboard.png new file mode 100644 index 00000000..c41c8d2c Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_fleur_backboard.png differ diff --git a/public/ingame-sprites/achievement/achievement_gg__0000__pure_vessel.png b/public/ingame-sprites/achievement/achievement_gg__0000__pure_vessel.png new file mode 100644 index 00000000..3c2dcc30 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_gg__0000__pure_vessel.png differ diff --git a/public/ingame-sprites/achievement/achievement_gg__0001__nailmasters.png b/public/ingame-sprites/achievement/achievement_gg__0001__nailmasters.png new file mode 100644 index 00000000..ab4a5128 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_gg__0001__nailmasters.png differ diff --git a/public/ingame-sprites/achievement/achievement_gg__0002__paintmaster.png b/public/ingame-sprites/achievement/achievement_gg__0002__paintmaster.png new file mode 100644 index 00000000..cd2caf1f Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_gg__0002__paintmaster.png differ diff --git a/public/ingame-sprites/achievement/achievement_gg__0003__sly.png b/public/ingame-sprites/achievement/achievement_gg__0003__sly.png new file mode 100644 index 00000000..f0110169 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_gg__0003__sly.png differ diff --git a/public/ingame-sprites/achievement/achievement_gg__0004__Ending_D.png b/public/ingame-sprites/achievement/achievement_gg__0004__Ending_D.png new file mode 100644 index 00000000..661ad2a3 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_gg__0004__Ending_D.png differ diff --git a/public/ingame-sprites/achievement/achievement_grey_prince_zote.png b/public/ingame-sprites/achievement/achievement_grey_prince_zote.png new file mode 100644 index 00000000..669fc6fd Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_grey_prince_zote.png differ diff --git a/public/ingame-sprites/achievement/achievement_icons__0000_broken-shell.png b/public/ingame-sprites/achievement/achievement_icons__0000_broken-shell.png new file mode 100644 index 00000000..cd3d7fc0 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_icons__0000_broken-shell.png differ diff --git a/public/ingame-sprites/achievement/achievement_icons__0001_dung-defender.png b/public/ingame-sprites/achievement/achievement_icons__0001_dung-defender.png new file mode 100644 index 00000000..f2ccef02 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_icons__0001_dung-defender.png differ diff --git a/public/ingame-sprites/achievement/achievement_icons__0002_mage-lord.png b/public/ingame-sprites/achievement/achievement_icons__0002_mage-lord.png new file mode 100644 index 00000000..7161d453 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_icons__0002_mage-lord.png differ diff --git a/public/ingame-sprites/achievement/achievement_icons__0003_hornet.png b/public/ingame-sprites/achievement/achievement_icons__0003_hornet.png new file mode 100644 index 00000000..c86eaca2 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_icons__0003_hornet.png differ diff --git a/public/ingame-sprites/achievement/achievement_icons__0004_mantis-lords.png b/public/ingame-sprites/achievement/achievement_icons__0004_mantis-lords.png new file mode 100644 index 00000000..969dd1d9 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_icons__0004_mantis-lords.png differ diff --git a/public/ingame-sprites/achievement/achievement_icons__0005_mawlek.png b/public/ingame-sprites/achievement/achievement_icons__0005_mawlek.png new file mode 100644 index 00000000..068c4122 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_icons__0005_mawlek.png differ diff --git a/public/ingame-sprites/achievement/achievement_icons__0006_zote.png b/public/ingame-sprites/achievement/achievement_icons__0006_zote.png new file mode 100644 index 00000000..5c2bbc3d Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_icons__0006_zote.png differ diff --git a/public/ingame-sprites/achievement/achievement_icons__0007_collector.png b/public/ingame-sprites/achievement/achievement_icons__0007_collector.png new file mode 100644 index 00000000..a388ea20 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_icons__0007_collector.png differ diff --git a/public/ingame-sprites/achievement/achievement_lord_shade.png b/public/ingame-sprites/achievement/achievement_lord_shade.png new file mode 100644 index 00000000..add75df1 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_lord_shade.png differ diff --git a/public/ingame-sprites/achievement/achievement_pure_completion.png b/public/ingame-sprites/achievement/achievement_pure_completion.png new file mode 100644 index 00000000..67817c4e Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_pure_completion.png differ diff --git a/public/ingame-sprites/achievement/achievement_secret #1996991.png b/public/ingame-sprites/achievement/achievement_secret #1996991.png new file mode 100644 index 00000000..2a4ca68e Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_secret #1996991.png differ diff --git a/public/ingame-sprites/achievement/achievement_secret.png b/public/ingame-sprites/achievement/achievement_secret.png new file mode 100644 index 00000000..59354ba7 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_secret.png differ diff --git a/public/ingame-sprites/achievement/achievement_steel_soul_100_complete.png b/public/ingame-sprites/achievement/achievement_steel_soul_100_complete.png new file mode 100644 index 00000000..906ba9f7 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_steel_soul_100_complete.png differ diff --git a/public/ingame-sprites/achievement/achievement_steel_soul_complete.png b/public/ingame-sprites/achievement/achievement_steel_soul_complete.png new file mode 100644 index 00000000..772097ab Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_steel_soul_complete.png differ diff --git a/public/ingame-sprites/achievement/achievement_ultra_fast_finish.png b/public/ingame-sprites/achievement/achievement_ultra_fast_finish.png new file mode 100644 index 00000000..584dd6dd Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_ultra_fast_finish.png differ diff --git a/public/ingame-sprites/achievement/achievement_white_defender.png b/public/ingame-sprites/achievement/achievement_white_defender.png new file mode 100644 index 00000000..00ffd120 Binary files /dev/null and b/public/ingame-sprites/achievement/achievement_white_defender.png differ diff --git a/public/ingame-sprites/bestiary/Bestiary_Grimm_Nightmare_boss.png b/public/ingame-sprites/bestiary/Bestiary_Grimm_Nightmare_boss.png new file mode 100644 index 00000000..e9dbcb58 Binary files /dev/null and b/public/ingame-sprites/bestiary/Bestiary_Grimm_Nightmare_boss.png differ diff --git a/public/ingame-sprites/bestiary/Bestiary_Grimm_boss.png b/public/ingame-sprites/bestiary/Bestiary_Grimm_boss.png new file mode 100644 index 00000000..d8f8c643 Binary files /dev/null and b/public/ingame-sprites/bestiary/Bestiary_Grimm_boss.png differ diff --git a/public/ingame-sprites/bestiary/Bestiary_Grimmkin_fat.png b/public/ingame-sprites/bestiary/Bestiary_Grimmkin_fat.png new file mode 100644 index 00000000..23e68758 Binary files /dev/null and b/public/ingame-sprites/bestiary/Bestiary_Grimmkin_fat.png differ diff --git a/public/ingame-sprites/bestiary/Bestiary_Grimmkin_little.png b/public/ingame-sprites/bestiary/Bestiary_Grimmkin_little.png new file mode 100644 index 00000000..28a5cd9a Binary files /dev/null and b/public/ingame-sprites/bestiary/Bestiary_Grimmkin_little.png differ diff --git a/public/ingame-sprites/bestiary/Bestiary_Grimmkin_tall.png b/public/ingame-sprites/bestiary/Bestiary_Grimmkin_tall.png new file mode 100644 index 00000000..0b5c3ed2 Binary files /dev/null and b/public/ingame-sprites/bestiary/Bestiary_Grimmkin_tall.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0000_ghost_brainslug.png b/public/ingame-sprites/bestiary/bestiary_0000_ghost_brainslug.png new file mode 100644 index 00000000..3b08e7a8 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0000_ghost_brainslug.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0001_ghost_elderhu.png b/public/ingame-sprites/bestiary/bestiary_0001_ghost_elderhu.png new file mode 100644 index 00000000..ef5e07e7 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0001_ghost_elderhu.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0002_ghost_galien.png b/public/ingame-sprites/bestiary/bestiary_0002_ghost_galien.png new file mode 100644 index 00000000..f505dbf6 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0002_ghost_galien.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0003_ghost_markoth.png b/public/ingame-sprites/bestiary/bestiary_0003_ghost_markoth.png new file mode 100644 index 00000000..aa12e9ae Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0003_ghost_markoth.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0004_ghost_caterpillar.png b/public/ingame-sprites/bestiary/bestiary_0004_ghost_caterpillar.png new file mode 100644 index 00000000..c7173b85 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0004_ghost_caterpillar.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0005_ghost_no-eyes.png b/public/ingame-sprites/bestiary/bestiary_0005_ghost_no-eyes.png new file mode 100644 index 00000000..de13f882 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0005_ghost_no-eyes.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0006_ghost_xero.png b/public/ingame-sprites/bestiary/bestiary_0006_ghost_xero.png new file mode 100644 index 00000000..55482e38 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0006_ghost_xero.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0060_centipede_hatcher_s.png b/public/ingame-sprites/bestiary/bestiary_0060_centipede_hatcher_s.png new file mode 100644 index 00000000..71f53ef9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0060_centipede_hatcher_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0061_centipede_trap_s.png b/public/ingame-sprites/bestiary/bestiary_0061_centipede_trap_s.png new file mode 100644 index 00000000..d6ad4e3b Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0061_centipede_trap_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0062_charger_s.png b/public/ingame-sprites/bestiary/bestiary_0062_charger_s.png new file mode 100644 index 00000000..71f53ef9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0062_charger_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0063_dream_guard_s.png b/public/ingame-sprites/bestiary/bestiary_0063_dream_guard_s.png new file mode 100644 index 00000000..682ae951 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0063_dream_guard_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0064_flipper_s.png b/public/ingame-sprites/bestiary/bestiary_0064_flipper_s.png new file mode 100644 index 00000000..b10aa856 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0064_flipper_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0065_flukeman_s.png b/public/ingame-sprites/bestiary/bestiary_0065_flukeman_s.png new file mode 100644 index 00000000..7962f1e8 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0065_flukeman_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0066_black_knight_s.png b/public/ingame-sprites/bestiary/bestiary_0066_black_knight_s.png new file mode 100644 index 00000000..4ad3c22d Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0066_black_knight_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0067_big_centipede_s.png b/public/ingame-sprites/bestiary/bestiary_0067_big_centipede_s.png new file mode 100644 index 00000000..151305fa Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0067_big_centipede_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0068_bee_big_s.png b/public/ingame-sprites/bestiary/bestiary_0068_bee_big_s.png new file mode 100644 index 00000000..e1f8ba0d Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0068_bee_big_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0069_bee_s.png b/public/ingame-sprites/bestiary/bestiary_0069_bee_s.png new file mode 100644 index 00000000..75f13bac Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0069_bee_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0070_bat_dropper_s.png b/public/ingame-sprites/bestiary/bestiary_0070_bat_dropper_s.png new file mode 100644 index 00000000..151305fa Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0070_bat_dropper_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0071_heavy_mantis_s.png b/public/ingame-sprites/bestiary/bestiary_0071_heavy_mantis_s.png new file mode 100644 index 00000000..518c00c6 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0071_heavy_mantis_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0072_centipede_hatcher.png b/public/ingame-sprites/bestiary/bestiary_0072_centipede_hatcher.png new file mode 100644 index 00000000..8e174723 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0072_centipede_hatcher.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0072_zap_bugs.png b/public/ingame-sprites/bestiary/bestiary_0072_zap_bugs.png new file mode 100644 index 00000000..6c0e79c7 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0072_zap_bugs.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0073_mega_moss_charger.png b/public/ingame-sprites/bestiary/bestiary_0073_mega_moss_charger.png new file mode 100644 index 00000000..01045777 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0073_mega_moss_charger.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0074_mantis_lords.png b/public/ingame-sprites/bestiary/bestiary_0074_mantis_lords.png new file mode 100644 index 00000000..c827e8d5 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0074_mantis_lords.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0075_infected_knight.png b/public/ingame-sprites/bestiary/bestiary_0075_infected_knight.png new file mode 100644 index 00000000..7076011e Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0075_infected_knight.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0076_mantis.png b/public/ingame-sprites/bestiary/bestiary_0076_mantis.png new file mode 100644 index 00000000..5daf5a6c Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0076_mantis.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0077_flukeman.png b/public/ingame-sprites/bestiary/bestiary_0077_flukeman.png new file mode 100644 index 00000000..8a92b16f Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0077_flukeman.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0077_fungus_zombie_03.png b/public/ingame-sprites/bestiary/bestiary_0077_fungus_zombie_03.png new file mode 100644 index 00000000..3cad22fe Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0077_fungus_zombie_03.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0078_fungus_zombie_02.png b/public/ingame-sprites/bestiary/bestiary_0078_fungus_zombie_02.png new file mode 100644 index 00000000..8a92b16f Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0078_fungus_zombie_02.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0079_fungus_zombie_01.png b/public/ingame-sprites/bestiary/bestiary_0079_fungus_zombie_01.png new file mode 100644 index 00000000..17f75336 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0079_fungus_zombie_01.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0080_zombie_spider_02.png b/public/ingame-sprites/bestiary/bestiary_0080_zombie_spider_02.png new file mode 100644 index 00000000..229c3bcc Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0080_zombie_spider_02.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0082_royal_zombie_point.png b/public/ingame-sprites/bestiary/bestiary_0082_royal_zombie_point.png new file mode 100644 index 00000000..b8ea9ac4 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0082_royal_zombie_point.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0083_royal_zombie_fat.png b/public/ingame-sprites/bestiary/bestiary_0083_royal_zombie_fat.png new file mode 100644 index 00000000..a354d6e9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0083_royal_zombie_fat.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0084_royal_zombie_flat.png b/public/ingame-sprites/bestiary/bestiary_0084_royal_zombie_flat.png new file mode 100644 index 00000000..8a92b16f Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0084_royal_zombie_flat.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0085_zombie_miner_crystal.png b/public/ingame-sprites/bestiary/bestiary_0085_zombie_miner_crystal.png new file mode 100644 index 00000000..b5860853 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0085_zombie_miner_crystal.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0086_zombie_miner.png b/public/ingame-sprites/bestiary/bestiary_0086_zombie_miner.png new file mode 100644 index 00000000..b10aa856 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0086_zombie_miner.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0087_zombie_hive.png b/public/ingame-sprites/bestiary/bestiary_0087_zombie_hive.png new file mode 100644 index 00000000..28de7b00 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0087_zombie_hive.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0088_spider_spitter.png b/public/ingame-sprites/bestiary/bestiary_0088_spider_spitter.png new file mode 100644 index 00000000..72b756de Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0088_spider_spitter.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0089_spider_soldier.png b/public/ingame-sprites/bestiary/bestiary_0089_spider_soldier.png new file mode 100644 index 00000000..72b756de Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0089_spider_soldier.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0090_spider_mage.png b/public/ingame-sprites/bestiary/bestiary_0090_spider_mage.png new file mode 100644 index 00000000..f9a4aa32 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0090_spider_mage.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0091_mushroom_turret.png b/public/ingame-sprites/bestiary/bestiary_0091_mushroom_turret.png new file mode 100644 index 00000000..a354d6e9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0091_mushroom_turret.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0092_ruins_zombie.png b/public/ingame-sprites/bestiary/bestiary_0092_ruins_zombie.png new file mode 100644 index 00000000..8a92b16f Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0092_ruins_zombie.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0093_ruins_zombie_flier.png b/public/ingame-sprites/bestiary/bestiary_0093_ruins_zombie_flier.png new file mode 100644 index 00000000..151305fa Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0093_ruins_zombie_flier.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0094_ruins_zombie_lance.png b/public/ingame-sprites/bestiary/bestiary_0094_ruins_zombie_lance.png new file mode 100644 index 00000000..b5860853 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0094_ruins_zombie_lance.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0095_ruins_zombie_big.png b/public/ingame-sprites/bestiary/bestiary_0095_ruins_zombie_big.png new file mode 100644 index 00000000..a354d6e9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0095_ruins_zombie_big.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0096_prayer_slug.png b/public/ingame-sprites/bestiary/bestiary_0096_prayer_slug.png new file mode 100644 index 00000000..b69c317f Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0096_prayer_slug.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0097_snap_turret.png b/public/ingame-sprites/bestiary/bestiary_0097_snap_turret.png new file mode 100644 index 00000000..9eb74f20 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0097_snap_turret.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0098_spit_turret.png b/public/ingame-sprites/bestiary/bestiary_0098_spit_turret.png new file mode 100644 index 00000000..4ad3c22d Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0098_spit_turret.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0099_mushroom_mini.png b/public/ingame-sprites/bestiary/bestiary_0099_mushroom_mini.png new file mode 100644 index 00000000..1ab9d263 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0099_mushroom_mini.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0100_mushroom_brawler.png b/public/ingame-sprites/bestiary/bestiary_0100_mushroom_brawler.png new file mode 100644 index 00000000..a7c899dc Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0100_mushroom_brawler.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0101_mushroom_roller.png b/public/ingame-sprites/bestiary/bestiary_0101_mushroom_roller.png new file mode 100644 index 00000000..3cad22fe Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0101_mushroom_roller.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0102_moss_knight_fat.png b/public/ingame-sprites/bestiary/bestiary_0102_moss_knight_fat.png new file mode 100644 index 00000000..9eb74f20 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0102_moss_knight_fat.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0103_moss_knight.png b/public/ingame-sprites/bestiary/bestiary_0103_moss_knight.png new file mode 100644 index 00000000..97c84143 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0103_moss_knight.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0104_moss_charger.png b/public/ingame-sprites/bestiary/bestiary_0104_moss_charger.png new file mode 100644 index 00000000..f9a4aa32 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0104_moss_charger.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0105_mosquito.png b/public/ingame-sprites/bestiary/bestiary_0105_mosquito.png new file mode 100644 index 00000000..9eb74f20 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0105_mosquito.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_0106_mini_mawlek.png b/public/ingame-sprites/bestiary/bestiary_0106_mini_mawlek.png new file mode 100644 index 00000000..667660ed Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_0106_mini_mawlek.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_BG_glow.png b/public/ingame-sprites/bestiary/bestiary_BG_glow.png new file mode 100644 index 00000000..b133faaa Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_BG_glow.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_Vignette.png b/public/ingame-sprites/bestiary/bestiary_Vignette.png new file mode 100644 index 00000000..dfc8e7b9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_Vignette.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_White_Defender_full.png b/public/ingame-sprites/bestiary/bestiary_White_Defender_full.png new file mode 100644 index 00000000..e89ac88b Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_White_Defender_full.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_White_Defender_portrait.png b/public/ingame-sprites/bestiary/bestiary_White_Defender_portrait.png new file mode 100644 index 00000000..c035d887 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_White_Defender_portrait.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0000_grimm_nightmare_boss_portrait.png b/public/ingame-sprites/bestiary/bestiary__0000_grimm_nightmare_boss_portrait.png new file mode 100644 index 00000000..0535bbd4 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0000_grimm_nightmare_boss_portrait.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0000_radiant_moth_s.png b/public/ingame-sprites/bestiary/bestiary__0000_radiant_moth_s.png new file mode 100644 index 00000000..4f117d40 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0000_radiant_moth_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0001_grimm_boss_portrait.png b/public/ingame-sprites/bestiary/bestiary__0001_grimm_boss_portrait.png new file mode 100644 index 00000000..7265f528 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0001_grimm_boss_portrait.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0001_radiant_moth.png b/public/ingame-sprites/bestiary/bestiary__0001_radiant_moth.png new file mode 100644 index 00000000..c7e0dfa5 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0001_radiant_moth.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0002_grimmkin_tall_portrait.png b/public/ingame-sprites/bestiary/bestiary__0002_grimmkin_tall_portrait.png new file mode 100644 index 00000000..6c044d5d Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0002_grimmkin_tall_portrait.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0002_hollow-knight_s.png b/public/ingame-sprites/bestiary/bestiary__0002_hollow-knight_s.png new file mode 100644 index 00000000..732140e0 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0002_hollow-knight_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0003_grimmkin_fat_portrait.png b/public/ingame-sprites/bestiary/bestiary__0003_grimmkin_fat_portrait.png new file mode 100644 index 00000000..80d10afb Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0003_grimmkin_fat_portrait.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0003_hollow-knight.png b/public/ingame-sprites/bestiary/bestiary__0003_hollow-knight.png new file mode 100644 index 00000000..23b4bde3 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0003_hollow-knight.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0004_dung-defender_s.png b/public/ingame-sprites/bestiary/bestiary__0004_dung-defender_s.png new file mode 100644 index 00000000..1c9c0097 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0004_dung-defender_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0004_grimmkin_little_portrait.png b/public/ingame-sprites/bestiary/bestiary__0004_grimmkin_little_portrait.png new file mode 100644 index 00000000..f592c99a Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0004_grimmkin_little_portrait.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0005_dung-defender.png b/public/ingame-sprites/bestiary/bestiary__0005_dung-defender.png new file mode 100644 index 00000000..68375b35 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0005_dung-defender.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0006_grave-zombie_s.png b/public/ingame-sprites/bestiary/bestiary__0006_grave-zombie_s.png new file mode 100644 index 00000000..e32272c8 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0006_grave-zombie_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0007_grave-zombie.png b/public/ingame-sprites/bestiary/bestiary__0007_grave-zombie.png new file mode 100644 index 00000000..eafad9ea Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0007_grave-zombie.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0008_spitter_s.png b/public/ingame-sprites/bestiary/bestiary__0008_spitter_s.png new file mode 100644 index 00000000..4810877e Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0008_spitter_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0009_spitter.png b/public/ingame-sprites/bestiary/bestiary__0009_spitter.png new file mode 100644 index 00000000..1afd6a01 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0009_spitter.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0010_spider-flyer_s.png b/public/ingame-sprites/bestiary/bestiary__0010_spider-flyer_s.png new file mode 100644 index 00000000..c45a8c98 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0010_spider-flyer_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0011_spider-flyer.png b/public/ingame-sprites/bestiary/bestiary__0011_spider-flyer.png new file mode 100644 index 00000000..4da7b7af Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0011_spider-flyer.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0012_orange-blob_s.png b/public/ingame-sprites/bestiary/bestiary__0012_orange-blob_s.png new file mode 100644 index 00000000..a2bd1f59 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0012_orange-blob_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0013_orange-blob.png b/public/ingame-sprites/bestiary/bestiary__0013_orange-blob.png new file mode 100644 index 00000000..96becae9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0013_orange-blob.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0014_fung-crawler_s.png b/public/ingame-sprites/bestiary/bestiary__0014_fung-crawler_s.png new file mode 100644 index 00000000..38920bf8 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0014_fung-crawler_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0015_fung-crawler.png b/public/ingame-sprites/bestiary/bestiary__0015_fung-crawler.png new file mode 100644 index 00000000..c6df8e2f Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0015_fung-crawler.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0016_green-flyer_s.png b/public/ingame-sprites/bestiary/bestiary__0016_green-flyer_s.png new file mode 100644 index 00000000..5915e2da Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0016_green-flyer_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0017_green-flyer.png b/public/ingame-sprites/bestiary/bestiary__0017_green-flyer.png new file mode 100644 index 00000000..1f665f21 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0017_green-flyer.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0018_mines-crawler_s.png b/public/ingame-sprites/bestiary/bestiary__0018_mines-crawler_s.png new file mode 100644 index 00000000..9de695b7 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0018_mines-crawler_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0019_mines-crawler.png b/public/ingame-sprites/bestiary/bestiary__0019_mines-crawler.png new file mode 100644 index 00000000..9312776e Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0019_mines-crawler.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0020_mage-balloon_s.png b/public/ingame-sprites/bestiary/bestiary__0020_mage-balloon_s.png new file mode 100644 index 00000000..e2bd3db8 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0020_mage-balloon_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0021_mage-balloon.png b/public/ingame-sprites/bestiary/bestiary__0021_mage-balloon.png new file mode 100644 index 00000000..44e71a96 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0021_mage-balloon.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0022_mage-blob_s.png b/public/ingame-sprites/bestiary/bestiary__0022_mage-blob_s.png new file mode 100644 index 00000000..69e50a07 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0022_mage-blob_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0023_mage-blob.png b/public/ingame-sprites/bestiary/bestiary__0023_mage-blob.png new file mode 100644 index 00000000..6b508c66 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0023_mage-blob.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0024_jelly-mini_s.png b/public/ingame-sprites/bestiary/bestiary__0024_jelly-mini_s.png new file mode 100644 index 00000000..9eb0de19 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0024_jelly-mini_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0025_jelly-mini.png b/public/ingame-sprites/bestiary/bestiary__0025_jelly-mini.png new file mode 100644 index 00000000..5b5ffbd3 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0025_jelly-mini.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0026_grub-mimic_s.png b/public/ingame-sprites/bestiary/bestiary__0026_grub-mimic_s.png new file mode 100644 index 00000000..0b3e02a1 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0026_grub-mimic_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0027_grub-mimic.png b/public/ingame-sprites/bestiary/bestiary__0027_grub-mimic.png new file mode 100644 index 00000000..7624df87 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0027_grub-mimic.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0028_crazy-hopper_s.png b/public/ingame-sprites/bestiary/bestiary__0028_crazy-hopper_s.png new file mode 100644 index 00000000..6197df25 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0028_crazy-hopper_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0029_crazy-hopper.png b/public/ingame-sprites/bestiary/bestiary__0029_crazy-hopper.png new file mode 100644 index 00000000..b5a81c3d Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0029_crazy-hopper.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0030_fungoon_s.png b/public/ingame-sprites/bestiary/bestiary__0030_fungoon_s.png new file mode 100644 index 00000000..c6b961b9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0030_fungoon_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0031_fungoon.png b/public/ingame-sprites/bestiary/bestiary__0031_fungoon.png new file mode 100644 index 00000000..5a75586b Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0031_fungoon.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0032_fungoon-mini_s.png b/public/ingame-sprites/bestiary/bestiary__0032_fungoon-mini_s.png new file mode 100644 index 00000000..8d661c62 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0032_fungoon-mini_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0033_fungoon-mini.png b/public/ingame-sprites/bestiary/bestiary__0033_fungoon-mini.png new file mode 100644 index 00000000..03553c15 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0033_fungoon-mini.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0034_blobble_s.png b/public/ingame-sprites/bestiary/bestiary__0034_blobble_s.png new file mode 100644 index 00000000..29d3a5dc Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0034_blobble_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0035_blobble.png b/public/ingame-sprites/bestiary/bestiary__0035_blobble.png new file mode 100644 index 00000000..68dcfe2a Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0035_blobble.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0036_acid-walker_s.png b/public/ingame-sprites/bestiary/bestiary__0036_acid-walker_s.png new file mode 100644 index 00000000..408585fb Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0036_acid-walker_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0037_acid-walker.png b/public/ingame-sprites/bestiary/bestiary__0037_acid-walker.png new file mode 100644 index 00000000..8bf6c4c3 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0037_acid-walker.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0038_acid-flyer_s.png b/public/ingame-sprites/bestiary/bestiary__0038_acid-flyer_s.png new file mode 100644 index 00000000..320992fb Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0038_acid-flyer_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0039_acid-flyer.png b/public/ingame-sprites/bestiary/bestiary__0039_acid-flyer.png new file mode 100644 index 00000000..1eb20641 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0039_acid-flyer.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0040_moss-crawler_s.png b/public/ingame-sprites/bestiary/bestiary__0040_moss-crawler_s.png new file mode 100644 index 00000000..d07f67c1 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0040_moss-crawler_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0041_moss-crawler.png b/public/ingame-sprites/bestiary/bestiary__0041_moss-crawler.png new file mode 100644 index 00000000..34457a02 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0041_moss-crawler.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0042_white-palace-fly_s.png b/public/ingame-sprites/bestiary/bestiary__0042_white-palace-fly_s.png new file mode 100644 index 00000000..c0cf84c1 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0042_white-palace-fly_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0043_white-palace-fly.png b/public/ingame-sprites/bestiary/bestiary__0043_white-palace-fly.png new file mode 100644 index 00000000..bf797ccf Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0043_white-palace-fly.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0044_shade-sibling_s.png b/public/ingame-sprites/bestiary/bestiary__0044_shade-sibling_s.png new file mode 100644 index 00000000..7b207ba8 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0044_shade-sibling_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0045_shade-sibling.png b/public/ingame-sprites/bestiary/bestiary__0045_shade-sibling.png new file mode 100644 index 00000000..4ec5f783 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0045_shade-sibling.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0046_abyss-crawler_s.png b/public/ingame-sprites/bestiary/bestiary__0046_abyss-crawler_s.png new file mode 100644 index 00000000..72587312 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0046_abyss-crawler_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0047_abyss-crawler.png b/public/ingame-sprites/bestiary/bestiary__0047_abyss-crawler.png new file mode 100644 index 00000000..18f17f0b Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0047_abyss-crawler.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0048_zote_s.png b/public/ingame-sprites/bestiary/bestiary__0048_zote_s.png new file mode 100644 index 00000000..0c564f7c Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0048_zote_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0049_zote.png b/public/ingame-sprites/bestiary/bestiary__0049_zote.png new file mode 100644 index 00000000..a2a35069 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0049_zote.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0050_spit-spider_s.png b/public/ingame-sprites/bestiary/bestiary__0050_spit-spider_s.png new file mode 100644 index 00000000..81d0a499 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0050_spit-spider_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0051_spit-spider.png b/public/ingame-sprites/bestiary/bestiary__0051_spit-spider.png new file mode 100644 index 00000000..4ffd1512 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0051_spit-spider.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0052_blow-fly_s.png b/public/ingame-sprites/bestiary/bestiary__0052_blow-fly_s.png new file mode 100644 index 00000000..82b3f55d Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0052_blow-fly_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0053_blow-fly.png b/public/ingame-sprites/bestiary/bestiary__0053_blow-fly.png new file mode 100644 index 00000000..e18afa44 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0053_blow-fly.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0054_fluke-fairy_s.png b/public/ingame-sprites/bestiary/bestiary__0054_fluke-fairy_s.png new file mode 100644 index 00000000..06d0c212 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0054_fluke-fairy_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0055_fluke-fairy.png b/public/ingame-sprites/bestiary/bestiary__0055_fluke-fairy.png new file mode 100644 index 00000000..1d674258 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0055_fluke-fairy.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0056_fluke-mother_s.png b/public/ingame-sprites/bestiary/bestiary__0056_fluke-mother_s.png new file mode 100644 index 00000000..e4ec5d64 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0056_fluke-mother_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0057_fluke-mother.png b/public/ingame-sprites/bestiary/bestiary__0057_fluke-mother.png new file mode 100644 index 00000000..68c98ced Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0057_fluke-mother.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0058_mimic-spider_s.png b/public/ingame-sprites/bestiary/bestiary__0058_mimic-spider_s.png new file mode 100644 index 00000000..f84236d9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0058_mimic-spider_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0059_mimic-spider.png b/public/ingame-sprites/bestiary/bestiary__0059_mimic-spider.png new file mode 100644 index 00000000..b7855bf3 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0059_mimic-spider.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0060_traitor-lord_s.png b/public/ingame-sprites/bestiary/bestiary__0060_traitor-lord_s.png new file mode 100644 index 00000000..9b8d994a Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0060_traitor-lord_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0061_traitor-lord.png b/public/ingame-sprites/bestiary/bestiary__0061_traitor-lord.png new file mode 100644 index 00000000..e5763cb0 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0061_traitor-lord.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0062_giant-fat-bee_s.png b/public/ingame-sprites/bestiary/bestiary__0062_giant-fat-bee_s.png new file mode 100644 index 00000000..34bed8a0 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0062_giant-fat-bee_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0063_giant-fat-bee.png b/public/ingame-sprites/bestiary/bestiary__0063_giant-fat-bee.png new file mode 100644 index 00000000..c8a54a11 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0063_giant-fat-bee.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0064_mega-beam-miner_s.png b/public/ingame-sprites/bestiary/bestiary__0064_mega-beam-miner_s.png new file mode 100644 index 00000000..d454b025 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0064_mega-beam-miner_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0065_mega-beam-miner.png b/public/ingame-sprites/bestiary/bestiary__0065_mega-beam-miner.png new file mode 100644 index 00000000..4810cf31 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0065_mega-beam-miner.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0066_lobster-lancer_s.png b/public/ingame-sprites/bestiary/bestiary__0066_lobster-lancer_s.png new file mode 100644 index 00000000..bb526256 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0066_lobster-lancer_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0067_lobster-lancer.png b/public/ingame-sprites/bestiary/bestiary__0067_lobster-lancer.png new file mode 100644 index 00000000..05b53e18 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0067_lobster-lancer.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0068_collector-_s.png b/public/ingame-sprites/bestiary/bestiary__0068_collector-_s.png new file mode 100644 index 00000000..659b30ec Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0068_collector-_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0069_collector.png b/public/ingame-sprites/bestiary/bestiary__0069_collector.png new file mode 100644 index 00000000..60e9692f Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0069_collector.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0070_giant-hopper_s.png b/public/ingame-sprites/bestiary/bestiary__0070_giant-hopper_s.png new file mode 100644 index 00000000..ed594b3e Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0070_giant-hopper_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0071_giant-hopper.png b/public/ingame-sprites/bestiary/bestiary__0071_giant-hopper.png new file mode 100644 index 00000000..f9140900 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0071_giant-hopper.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0072_giant-jellyfish_s.png b/public/ingame-sprites/bestiary/bestiary__0072_giant-jellyfish_s.png new file mode 100644 index 00000000..c106e685 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0072_giant-jellyfish_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__0073_giant-jellyfish.png b/public/ingame-sprites/bestiary/bestiary__0073_giant-jellyfish.png new file mode 100644 index 00000000..54ba1154 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__0073_giant-jellyfish.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__bee_tiny_s.png b/public/ingame-sprites/bestiary/bestiary__bee_tiny_s.png new file mode 100644 index 00000000..55f10141 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__bee_tiny_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary__ruin_shield_guard_f.png b/public/ingame-sprites/bestiary/bestiary__ruin_shield_guard_f.png new file mode 100644 index 00000000..9169e7d7 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary__ruin_shield_guard_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_abyss_tendrils_f.png b/public/ingame-sprites/bestiary/bestiary_abyss_tendrils_f.png new file mode 100644 index 00000000..c1af7487 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_abyss_tendrils_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_abyss_tendrils_s.png b/public/ingame-sprites/bestiary/bestiary_abyss_tendrils_s.png new file mode 100644 index 00000000..696b01ed Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_abyss_tendrils_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_armoured-worm_f.png b/public/ingame-sprites/bestiary/bestiary_armoured-worm_f.png new file mode 100644 index 00000000..c65e38f1 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_armoured-worm_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_armoured-worm_s.png b/public/ingame-sprites/bestiary/bestiary_armoured-worm_s.png new file mode 100644 index 00000000..55365c35 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_armoured-worm_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_barger_f.png b/public/ingame-sprites/bestiary/bestiary_barger_f.png new file mode 100644 index 00000000..7c591e69 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_barger_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_barger_s.png b/public/ingame-sprites/bestiary/bestiary_barger_s.png new file mode 100644 index 00000000..4fd8588d Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_barger_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_bat_dropper_f.png b/public/ingame-sprites/bestiary/bestiary_bat_dropper_f.png new file mode 100644 index 00000000..2e119eb9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_bat_dropper_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_bat_dropper_s.png b/public/ingame-sprites/bestiary/bestiary_bat_dropper_s.png new file mode 100644 index 00000000..3ac69d7f Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_bat_dropper_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_bee_big_f.png b/public/ingame-sprites/bestiary/bestiary_bee_big_f.png new file mode 100644 index 00000000..1c132948 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_bee_big_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_bee_big_s.png b/public/ingame-sprites/bestiary/bestiary_bee_big_s.png new file mode 100644 index 00000000..43d8c107 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_bee_big_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_bee_f.png b/public/ingame-sprites/bestiary/bestiary_bee_f.png new file mode 100644 index 00000000..5c06114a Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_bee_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_bee_s.png b/public/ingame-sprites/bestiary/bestiary_bee_s.png new file mode 100644 index 00000000..93372f2c Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_bee_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_bee_tiny.png b/public/ingame-sprites/bestiary/bestiary_bee_tiny.png new file mode 100644 index 00000000..569d676f Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_bee_tiny.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_big-bouncer_f.png b/public/ingame-sprites/bestiary/bestiary_big-bouncer_f.png new file mode 100644 index 00000000..1a093643 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_big-bouncer_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_big-bouncer_s.png b/public/ingame-sprites/bestiary/bestiary_big-bouncer_s.png new file mode 100644 index 00000000..c40ac28b Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_big-bouncer_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_big-buzzer_f.png b/public/ingame-sprites/bestiary/bestiary_big-buzzer_f.png new file mode 100644 index 00000000..26ba2b14 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_big-buzzer_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_big-buzzer_s.png b/public/ingame-sprites/bestiary/bestiary_big-buzzer_s.png new file mode 100644 index 00000000..64dd594e Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_big-buzzer_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_big_centipede_f.png b/public/ingame-sprites/bestiary/bestiary_big_centipede_f.png new file mode 100644 index 00000000..c2bf6a72 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_big_centipede_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_big_centipede_s.png b/public/ingame-sprites/bestiary/bestiary_big_centipede_s.png new file mode 100644 index 00000000..141ee659 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_big_centipede_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_black_knight_f.png b/public/ingame-sprites/bestiary/bestiary_black_knight_f.png new file mode 100644 index 00000000..339df5f2 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_black_knight_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_black_knight_s.png b/public/ingame-sprites/bestiary/bestiary_black_knight_s.png new file mode 100644 index 00000000..3d37fc14 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_black_knight_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_blob_fly_f.png b/public/ingame-sprites/bestiary/bestiary_blob_fly_f.png new file mode 100644 index 00000000..b33fcbce Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_blob_fly_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_blob_fly_s.png b/public/ingame-sprites/bestiary/bestiary_blob_fly_s.png new file mode 100644 index 00000000..c06260f8 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_blob_fly_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_blocker_f.png b/public/ingame-sprites/bestiary/bestiary_blocker_f.png new file mode 100644 index 00000000..60c9ec44 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_blocker_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_blocker_s.png b/public/ingame-sprites/bestiary/bestiary_blocker_s.png new file mode 100644 index 00000000..09c6d7f7 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_blocker_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_blue_blob.png b/public/ingame-sprites/bestiary/bestiary_blue_blob.png new file mode 100644 index 00000000..09a14f64 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_blue_blob.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_blue_blob_f.png b/public/ingame-sprites/bestiary/bestiary_blue_blob_f.png new file mode 100644 index 00000000..a20c11e9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_blue_blob_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_bouncer_f.png b/public/ingame-sprites/bestiary/bestiary_bouncer_f.png new file mode 100644 index 00000000..4ff90924 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_bouncer_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_bouncer_s.png b/public/ingame-sprites/bestiary/bestiary_bouncer_s.png new file mode 100644 index 00000000..a4e0ba98 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_bouncer_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_bug_f.png b/public/ingame-sprites/bestiary/bestiary_bug_f.png new file mode 100644 index 00000000..cf606b14 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_bug_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_bug_s.png b/public/ingame-sprites/bestiary/bestiary_bug_s.png new file mode 100644 index 00000000..15621806 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_bug_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_buzzer_f.png b/public/ingame-sprites/bestiary/bestiary_buzzer_f.png new file mode 100644 index 00000000..cf4ad0bf Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_buzzer_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_buzzer_s.png b/public/ingame-sprites/bestiary/bestiary_buzzer_s.png new file mode 100644 index 00000000..1db7f58e Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_buzzer_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_centipede_f.png b/public/ingame-sprites/bestiary/bestiary_centipede_f.png new file mode 100644 index 00000000..22160cdd Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_centipede_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_centipede_hatcher_f.png b/public/ingame-sprites/bestiary/bestiary_centipede_hatcher_f.png new file mode 100644 index 00000000..c9565d12 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_centipede_hatcher_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_centipede_hatcher_s.png b/public/ingame-sprites/bestiary/bestiary_centipede_hatcher_s.png new file mode 100644 index 00000000..c42c9b05 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_centipede_hatcher_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_centipede_s.png b/public/ingame-sprites/bestiary/bestiary_centipede_s.png new file mode 100644 index 00000000..34fb81ec Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_centipede_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_climber_f.png b/public/ingame-sprites/bestiary/bestiary_climber_f.png new file mode 100644 index 00000000..eba2f0d0 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_climber_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_climber_s.png b/public/ingame-sprites/bestiary/bestiary_climber_s.png new file mode 100644 index 00000000..0268364a Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_climber_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_colosseum_armoured_mosquito_f.png b/public/ingame-sprites/bestiary/bestiary_colosseum_armoured_mosquito_f.png new file mode 100644 index 00000000..314d14a1 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_colosseum_armoured_mosquito_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_colosseum_armoured_mosquito_s.png b/public/ingame-sprites/bestiary/bestiary_colosseum_armoured_mosquito_s.png new file mode 100644 index 00000000..e984d8da Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_colosseum_armoured_mosquito_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_colosseum_armoured_roller_f.png b/public/ingame-sprites/bestiary/bestiary_colosseum_armoured_roller_f.png new file mode 100644 index 00000000..c14bd293 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_colosseum_armoured_roller_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_colosseum_armoured_roller_s.png b/public/ingame-sprites/bestiary/bestiary_colosseum_armoured_roller_s.png new file mode 100644 index 00000000..834a47c3 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_colosseum_armoured_roller_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_colosseum_flying_gladiator.png b/public/ingame-sprites/bestiary/bestiary_colosseum_flying_gladiator.png new file mode 100644 index 00000000..d2825246 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_colosseum_flying_gladiator.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_colosseum_flying_gladiator_f.png b/public/ingame-sprites/bestiary/bestiary_colosseum_flying_gladiator_f.png new file mode 100644 index 00000000..3ea76e2f Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_colosseum_flying_gladiator_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_colosseum_hopper_f.png b/public/ingame-sprites/bestiary/bestiary_colosseum_hopper_f.png new file mode 100644 index 00000000..0ef26b65 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_colosseum_hopper_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_colosseum_hopper_s.png b/public/ingame-sprites/bestiary/bestiary_colosseum_hopper_s.png new file mode 100644 index 00000000..cb425918 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_colosseum_hopper_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_colosseum_miner.png b/public/ingame-sprites/bestiary/bestiary_colosseum_miner.png new file mode 100644 index 00000000..c42a74b2 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_colosseum_miner.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_colosseum_miner_s.png b/public/ingame-sprites/bestiary/bestiary_colosseum_miner_s.png new file mode 100644 index 00000000..d41780a3 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_colosseum_miner_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_colosseum_shield_gladiator_f.png b/public/ingame-sprites/bestiary/bestiary_colosseum_shield_gladiator_f.png new file mode 100644 index 00000000..00f4c54a Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_colosseum_shield_gladiator_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_colosseum_shield_gladiator_s.png b/public/ingame-sprites/bestiary/bestiary_colosseum_shield_gladiator_s.png new file mode 100644 index 00000000..383517f5 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_colosseum_shield_gladiator_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_colosseum_worm_f.png b/public/ingame-sprites/bestiary/bestiary_colosseum_worm_f.png new file mode 100644 index 00000000..abe676c0 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_colosseum_worm_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_colosseum_worm_gladiator_s.png b/public/ingame-sprites/bestiary/bestiary_colosseum_worm_gladiator_s.png new file mode 100644 index 00000000..72d36a60 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_colosseum_worm_gladiator_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_completion_icons_0000_first.png b/public/ingame-sprites/bestiary/bestiary_completion_icons_0000_first.png new file mode 100644 index 00000000..d715f15a Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_completion_icons_0000_first.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_completion_icons_0001_full.png b/public/ingame-sprites/bestiary/bestiary_completion_icons_0001_full.png new file mode 100644 index 00000000..09d89d61 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_completion_icons_0001_full.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_crawler_f.png b/public/ingame-sprites/bestiary/bestiary_crawler_f.png new file mode 100644 index 00000000..38ca27ce Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_crawler_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_crawler_s.png b/public/ingame-sprites/bestiary/bestiary_crawler_s.png new file mode 100644 index 00000000..c639e295 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_crawler_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_crossroads-guard_f.png b/public/ingame-sprites/bestiary/bestiary_crossroads-guard_f.png new file mode 100644 index 00000000..0fc8468f Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_crossroads-guard_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_crossroads-guard_s.png b/public/ingame-sprites/bestiary/bestiary_crossroads-guard_s.png new file mode 100644 index 00000000..ccd63eef Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_crossroads-guard_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_dreamer_01_f.png b/public/ingame-sprites/bestiary/bestiary_dreamer_01_f.png new file mode 100644 index 00000000..13927c38 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_dreamer_01_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_dreamer_01_s.png b/public/ingame-sprites/bestiary/bestiary_dreamer_01_s.png new file mode 100644 index 00000000..cc20cd25 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_dreamer_01_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_dreamer_02_f.png b/public/ingame-sprites/bestiary/bestiary_dreamer_02_f.png new file mode 100644 index 00000000..92f38124 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_dreamer_02_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_dreamer_02_s.png b/public/ingame-sprites/bestiary/bestiary_dreamer_02_s.png new file mode 100644 index 00000000..73ce601a Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_dreamer_02_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_dreamer_03_f.png b/public/ingame-sprites/bestiary/bestiary_dreamer_03_f.png new file mode 100644 index 00000000..3dd4c24c Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_dreamer_03_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_dreamer_03_s.png b/public/ingame-sprites/bestiary/bestiary_dreamer_03_s.png new file mode 100644 index 00000000..d4ee34d9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_dreamer_03_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_egg_sac.png b/public/ingame-sprites/bestiary/bestiary_egg_sac.png new file mode 100644 index 00000000..53fc7178 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_egg_sac.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_electric_mage_f.png b/public/ingame-sprites/bestiary/bestiary_electric_mage_f.png new file mode 100644 index 00000000..1f595d0b Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_electric_mage_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_electric_mage_s.png b/public/ingame-sprites/bestiary/bestiary_electric_mage_s.png new file mode 100644 index 00000000..08740441 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_electric_mage_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_false-knight_f.png b/public/ingame-sprites/bestiary/bestiary_false-knight_f.png new file mode 100644 index 00000000..8331f5c9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_false-knight_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_false-knight_s.png b/public/ingame-sprites/bestiary/bestiary_false-knight_s.png new file mode 100644 index 00000000..2b7efac8 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_false-knight_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_fat_fluke.png b/public/ingame-sprites/bestiary/bestiary_fat_fluke.png new file mode 100644 index 00000000..13d5a00c Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_fat_fluke.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_fat_fluke_full.png b/public/ingame-sprites/bestiary/bestiary_fat_fluke_full.png new file mode 100644 index 00000000..e316eb36 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_fat_fluke_full.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_flipper_f.png b/public/ingame-sprites/bestiary/bestiary_flipper_f.png new file mode 100644 index 00000000..bb5a5632 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_flipper_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_flipper_s.png b/public/ingame-sprites/bestiary/bestiary_flipper_s.png new file mode 100644 index 00000000..d15d5bd7 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_flipper_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_flukeman_f.png b/public/ingame-sprites/bestiary/bestiary_flukeman_f.png new file mode 100644 index 00000000..34b3d220 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_flukeman_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_flukeman_s.png b/public/ingame-sprites/bestiary/bestiary_flukeman_s.png new file mode 100644 index 00000000..bcfbe832 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_flukeman_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_frame_upgrade.png b/public/ingame-sprites/bestiary/bestiary_frame_upgrade.png new file mode 100644 index 00000000..ced83e0c Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_frame_upgrade.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_fung_lazy_flyer_f.png b/public/ingame-sprites/bestiary/bestiary_fung_lazy_flyer_f.png new file mode 100644 index 00000000..f32e17d7 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_fung_lazy_flyer_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_fung_lazy_flyer_s.png b/public/ingame-sprites/bestiary/bestiary_fung_lazy_flyer_s.png new file mode 100644 index 00000000..79e8bce6 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_fung_lazy_flyer_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_fung_pigeon_flyer_f.png b/public/ingame-sprites/bestiary/bestiary_fung_pigeon_flyer_f.png new file mode 100644 index 00000000..759a821c Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_fung_pigeon_flyer_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_fung_pigeon_flyer_s.png b/public/ingame-sprites/bestiary/bestiary_fung_pigeon_flyer_s.png new file mode 100644 index 00000000..a0e653e7 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_fung_pigeon_flyer_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_fungus_zombie_01_f.png b/public/ingame-sprites/bestiary/bestiary_fungus_zombie_01_f.png new file mode 100644 index 00000000..cddb1656 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_fungus_zombie_01_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_fungus_zombie_01_s.png b/public/ingame-sprites/bestiary/bestiary_fungus_zombie_01_s.png new file mode 100644 index 00000000..273c1e55 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_fungus_zombie_01_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_fungus_zombie_02_f.png b/public/ingame-sprites/bestiary/bestiary_fungus_zombie_02_f.png new file mode 100644 index 00000000..c6dcd760 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_fungus_zombie_02_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_fungus_zombie_02_s.png b/public/ingame-sprites/bestiary/bestiary_fungus_zombie_02_s.png new file mode 100644 index 00000000..de731e46 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_fungus_zombie_02_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_fungus_zombie_03_f.png b/public/ingame-sprites/bestiary/bestiary_fungus_zombie_03_f.png new file mode 100644 index 00000000..f57c31f4 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_fungus_zombie_03_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_fungus_zombie_03_s.png b/public/ingame-sprites/bestiary/bestiary_fungus_zombie_03_s.png new file mode 100644 index 00000000..39c1a0e9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_fungus_zombie_03_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gg__0000_icon_pale_runaway.png b/public/ingame-sprites/bestiary/bestiary_gg__0000_icon_pale_runaway.png new file mode 100644 index 00000000..c37131e8 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gg__0000_icon_pale_runaway.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gg__0001_icon_HK_prime.png b/public/ingame-sprites/bestiary/bestiary_gg__0001_icon_HK_prime.png new file mode 100644 index 00000000..c21dee17 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gg__0001_icon_HK_prime.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gg__0002_icon_paintmaster.png b/public/ingame-sprites/bestiary/bestiary_gg__0002_icon_paintmaster.png new file mode 100644 index 00000000..7e1a96b2 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gg__0002_icon_paintmaster.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gg__0003_icon_nailmasters.png b/public/ingame-sprites/bestiary/bestiary_gg__0003_icon_nailmasters.png new file mode 100644 index 00000000..825f90af Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gg__0003_icon_nailmasters.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gg__0004_icon_sage.png b/public/ingame-sprites/bestiary/bestiary_gg__0004_icon_sage.png new file mode 100644 index 00000000..652f0d3b Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gg__0004_icon_sage.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gg__0005_sage.png b/public/ingame-sprites/bestiary/bestiary_gg__0005_sage.png new file mode 100644 index 00000000..d01aa5a9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gg__0005_sage.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gg__0006_nailmasters.png b/public/ingame-sprites/bestiary/bestiary_gg__0006_nailmasters.png new file mode 100644 index 00000000..c5ba2584 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gg__0006_nailmasters.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gg__0007_paintmaster.png b/public/ingame-sprites/bestiary/bestiary_gg__0007_paintmaster.png new file mode 100644 index 00000000..af80a8c4 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gg__0007_paintmaster.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gg__0008_HK_prime.png b/public/ingame-sprites/bestiary/bestiary_gg__0008_HK_prime.png new file mode 100644 index 00000000..ce5836f6 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gg__0008_HK_prime.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gg__0009_pale_runaway.png b/public/ingame-sprites/bestiary/bestiary_gg__0009_pale_runaway.png new file mode 100644 index 00000000..0e5056ae Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gg__0009_pale_runaway.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gg_mask.png b/public/ingame-sprites/bestiary/bestiary_gg_mask.png new file mode 100644 index 00000000..fe160957 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gg_mask.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gg_mask_icon.png b/public/ingame-sprites/bestiary/bestiary_gg_mask_icon.png new file mode 100644 index 00000000..b93136ed Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gg_mask_icon.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gg_shade_idol_icon.png b/public/ingame-sprites/bestiary/bestiary_gg_shade_idol_icon.png new file mode 100644 index 00000000..1250f9fd Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gg_shade_idol_icon.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gg_void_idol.png b/public/ingame-sprites/bestiary/bestiary_gg_void_idol.png new file mode 100644 index 00000000..2c68f905 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gg_void_idol.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gg_void_idol_states_0000_3.png b/public/ingame-sprites/bestiary/bestiary_gg_void_idol_states_0000_3.png new file mode 100644 index 00000000..8881c1bc Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gg_void_idol_states_0000_3.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gg_void_idol_states_0001_2.png b/public/ingame-sprites/bestiary/bestiary_gg_void_idol_states_0001_2.png new file mode 100644 index 00000000..282bd280 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gg_void_idol_states_0001_2.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_ghosts__0000_brain-slug.png b/public/ingame-sprites/bestiary/bestiary_ghosts__0000_brain-slug.png new file mode 100644 index 00000000..48afb4cc Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_ghosts__0000_brain-slug.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_ghosts__0001_xero.png b/public/ingame-sprites/bestiary/bestiary_ghosts__0001_xero.png new file mode 100644 index 00000000..699c744d Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_ghosts__0001_xero.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_ghosts__0002_elderhu.png b/public/ingame-sprites/bestiary/bestiary_ghosts__0002_elderhu.png new file mode 100644 index 00000000..204736d0 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_ghosts__0002_elderhu.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_ghosts__0003_galien.png b/public/ingame-sprites/bestiary/bestiary_ghosts__0003_galien.png new file mode 100644 index 00000000..dd5fc463 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_ghosts__0003_galien.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_ghosts__0004_markoth.png b/public/ingame-sprites/bestiary/bestiary_ghosts__0004_markoth.png new file mode 100644 index 00000000..612ac9c7 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_ghosts__0004_markoth.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_ghosts__0005_marmu.png b/public/ingame-sprites/bestiary/bestiary_ghosts__0005_marmu.png new file mode 100644 index 00000000..17233cb5 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_ghosts__0005_marmu.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_ghosts__0006_no-eyes.png b/public/ingame-sprites/bestiary/bestiary_ghosts__0006_no-eyes.png new file mode 100644 index 00000000..f9e3b517 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_ghosts__0006_no-eyes.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gold_royal_f.png b/public/ingame-sprites/bestiary/bestiary_gold_royal_f.png new file mode 100644 index 00000000..44d2ec9a Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gold_royal_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_gold_royal_s.png b/public/ingame-sprites/bestiary/bestiary_gold_royal_s.png new file mode 100644 index 00000000..430be7aa Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_gold_royal_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_hatcher.png b/public/ingame-sprites/bestiary/bestiary_hatcher.png new file mode 100644 index 00000000..686092b6 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_hatcher.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_hatcher_baby_f.png b/public/ingame-sprites/bestiary/bestiary_hatcher_baby_f.png new file mode 100644 index 00000000..a8b548df Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_hatcher_baby_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_hatcher_baby_s.png b/public/ingame-sprites/bestiary/bestiary_hatcher_baby_s.png new file mode 100644 index 00000000..24a04ef2 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_hatcher_baby_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_hatcher_f.png b/public/ingame-sprites/bestiary/bestiary_hatcher_f.png new file mode 100644 index 00000000..7472c8c7 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_hatcher_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_hatcher_s.png b/public/ingame-sprites/bestiary/bestiary_hatcher_s.png new file mode 100644 index 00000000..e62b52e9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_hatcher_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_heavy_mantis_f.png b/public/ingame-sprites/bestiary/bestiary_heavy_mantis_f.png new file mode 100644 index 00000000..469b962d Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_heavy_mantis_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_heavy_mantis_flyer_f.png b/public/ingame-sprites/bestiary/bestiary_heavy_mantis_flyer_f.png new file mode 100644 index 00000000..c5a4040d Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_heavy_mantis_flyer_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_heavy_mantis_flyer_s.png b/public/ingame-sprites/bestiary/bestiary_heavy_mantis_flyer_s.png new file mode 100644 index 00000000..a52055b4 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_heavy_mantis_flyer_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_heavy_mantis_s.png b/public/ingame-sprites/bestiary/bestiary_heavy_mantis_s.png new file mode 100644 index 00000000..2069bb8e Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_heavy_mantis_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_hive_knight_f.png b/public/ingame-sprites/bestiary/bestiary_hive_knight_f.png new file mode 100644 index 00000000..e77e752d Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_hive_knight_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_hive_knight_s.png b/public/ingame-sprites/bestiary/bestiary_hive_knight_s.png new file mode 100644 index 00000000..a6d25514 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_hive_knight_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_hollow-shade_f.png b/public/ingame-sprites/bestiary/bestiary_hollow-shade_f.png new file mode 100644 index 00000000..589def12 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_hollow-shade_f.png differ diff --git a/public/ingame-sprites/bestiary_hollow-shade_s.png b/public/ingame-sprites/bestiary/bestiary_hollow-shade_s.png similarity index 100% rename from public/ingame-sprites/bestiary_hollow-shade_s.png rename to public/ingame-sprites/bestiary/bestiary_hollow-shade_s.png diff --git a/public/ingame-sprites/bestiary/bestiary_hopper_f.png b/public/ingame-sprites/bestiary/bestiary_hopper_f.png new file mode 100644 index 00000000..507812e9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_hopper_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_hopper_s.png b/public/ingame-sprites/bestiary/bestiary_hopper_s.png new file mode 100644 index 00000000..aeca1e5e Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_hopper_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_hornet.png b/public/ingame-sprites/bestiary/bestiary_hornet.png new file mode 100644 index 00000000..769adf54 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_hornet.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_hornet_s.png b/public/ingame-sprites/bestiary/bestiary_hornet_s.png new file mode 100644 index 00000000..cacd2018 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_hornet_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_hornhead_f.png b/public/ingame-sprites/bestiary/bestiary_hornhead_f.png new file mode 100644 index 00000000..3c226afe Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_hornhead_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_hornhead_s.png b/public/ingame-sprites/bestiary/bestiary_hornhead_s.png new file mode 100644 index 00000000..98c94baa Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_hornhead_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_hunter_mark.png b/public/ingame-sprites/bestiary/bestiary_hunter_mark.png new file mode 100644 index 00000000..a86e1252 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_hunter_mark.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_hunter_mark_f.png b/public/ingame-sprites/bestiary/bestiary_hunter_mark_f.png new file mode 100644 index 00000000..9c377d55 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_hunter_mark_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_infected_buzzer_f.png b/public/ingame-sprites/bestiary/bestiary_infected_buzzer_f.png new file mode 100644 index 00000000..f22fae92 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_infected_buzzer_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_infected_buzzer_s.png b/public/ingame-sprites/bestiary/bestiary_infected_buzzer_s.png new file mode 100644 index 00000000..a1fcc311 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_infected_buzzer_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_infected_fly_f.png b/public/ingame-sprites/bestiary/bestiary_infected_fly_f.png new file mode 100644 index 00000000..9f4549d4 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_infected_fly_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_infected_fly_s.png b/public/ingame-sprites/bestiary/bestiary_infected_fly_s.png new file mode 100644 index 00000000..0b8ef890 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_infected_fly_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_infected_husk1_f.png b/public/ingame-sprites/bestiary/bestiary_infected_husk1_f.png new file mode 100644 index 00000000..7755d887 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_infected_husk1_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_infected_husk1_s.png b/public/ingame-sprites/bestiary/bestiary_infected_husk1_s.png new file mode 100644 index 00000000..acc4f8bd Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_infected_husk1_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_infected_husk2.png b/public/ingame-sprites/bestiary/bestiary_infected_husk2.png new file mode 100644 index 00000000..186c99fe Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_infected_husk2.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_infected_husk2_f.png b/public/ingame-sprites/bestiary/bestiary_infected_husk2_f.png new file mode 100644 index 00000000..724fb0ca Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_infected_husk2_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_infected_husk2_s.png b/public/ingame-sprites/bestiary/bestiary_infected_husk2_s.png new file mode 100644 index 00000000..3a733782 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_infected_husk2_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_infected_knight_f.png b/public/ingame-sprites/bestiary/bestiary_infected_knight_f.png new file mode 100644 index 00000000..2f5fdccc Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_infected_knight_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_infected_knight_s.png b/public/ingame-sprites/bestiary/bestiary_infected_knight_s.png new file mode 100644 index 00000000..4e8483f0 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_infected_knight_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_inflater_f.png b/public/ingame-sprites/bestiary/bestiary_inflater_f.png new file mode 100644 index 00000000..406816b9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_inflater_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_inflater_s.png b/public/ingame-sprites/bestiary/bestiary_inflater_s.png new file mode 100644 index 00000000..ff45587e Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_inflater_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_jellyfish_f.png b/public/ingame-sprites/bestiary/bestiary_jellyfish_f.png new file mode 100644 index 00000000..436774cf Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_jellyfish_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_jellyfish_s.png b/public/ingame-sprites/bestiary/bestiary_jellyfish_s.png new file mode 100644 index 00000000..6554b1c5 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_jellyfish_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_kingsguard_f.png b/public/ingame-sprites/bestiary/bestiary_kingsguard_f.png new file mode 100644 index 00000000..95a1ceaa Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_kingsguard_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_kingsguard_s.png b/public/ingame-sprites/bestiary/bestiary_kingsguard_s.png new file mode 100644 index 00000000..7eaaa68b Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_kingsguard_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_leaper_f.png b/public/ingame-sprites/bestiary/bestiary_leaper_f.png new file mode 100644 index 00000000..ea9c84c8 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_leaper_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_leaper_s.png b/public/ingame-sprites/bestiary/bestiary_leaper_s.png new file mode 100644 index 00000000..96399088 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_leaper_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_lobster_lancer_f.png b/public/ingame-sprites/bestiary/bestiary_lobster_lancer_f.png new file mode 100644 index 00000000..e1fb126e Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_lobster_lancer_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_lobster_lancer_s.png b/public/ingame-sprites/bestiary/bestiary_lobster_lancer_s.png new file mode 100644 index 00000000..4e61767e Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_lobster_lancer_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mage_f.png b/public/ingame-sprites/bestiary/bestiary_mage_f.png new file mode 100644 index 00000000..f03961dd Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mage_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mage_knight_f.png b/public/ingame-sprites/bestiary/bestiary_mage_knight_f.png new file mode 100644 index 00000000..f32568e3 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mage_knight_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mage_knight_s.png b/public/ingame-sprites/bestiary/bestiary_mage_knight_s.png new file mode 100644 index 00000000..dcf88115 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mage_knight_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mage_lord_f.png b/public/ingame-sprites/bestiary/bestiary_mage_lord_f.png new file mode 100644 index 00000000..d0635109 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mage_lord_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mage_lord_s.png b/public/ingame-sprites/bestiary/bestiary_mage_lord_s.png new file mode 100644 index 00000000..39d1ff2f Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mage_lord_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mage_s.png b/public/ingame-sprites/bestiary/bestiary_mage_s.png new file mode 100644 index 00000000..15b7b940 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mage_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mantis_f.png b/public/ingame-sprites/bestiary/bestiary_mantis_f.png new file mode 100644 index 00000000..4f372ed9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mantis_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mantis_flyer_f.png b/public/ingame-sprites/bestiary/bestiary_mantis_flyer_f.png new file mode 100644 index 00000000..4a5534a4 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mantis_flyer_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mantis_flyer_s.png b/public/ingame-sprites/bestiary/bestiary_mantis_flyer_s.png new file mode 100644 index 00000000..864209af Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mantis_flyer_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mantis_lords_f.png b/public/ingame-sprites/bestiary/bestiary_mantis_lords_f.png new file mode 100644 index 00000000..32d676db Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mantis_lords_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mantis_lords_s.png b/public/ingame-sprites/bestiary/bestiary_mantis_lords_s.png new file mode 100644 index 00000000..11d4b727 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mantis_lords_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mantis_s.png b/public/ingame-sprites/bestiary/bestiary_mantis_s.png new file mode 100644 index 00000000..ac321fc0 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mantis_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mawlek_f.png b/public/ingame-sprites/bestiary/bestiary_mawlek_f.png new file mode 100644 index 00000000..43c4aede Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mawlek_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mawlek_s.png b/public/ingame-sprites/bestiary/bestiary_mawlek_s.png new file mode 100644 index 00000000..b7b6517d Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mawlek_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mawlek_turret_f.png b/public/ingame-sprites/bestiary/bestiary_mawlek_turret_f.png new file mode 100644 index 00000000..62257b02 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mawlek_turret_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mawlek_turret_s.png b/public/ingame-sprites/bestiary/bestiary_mawlek_turret_s.png new file mode 100644 index 00000000..3bfbe2c4 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mawlek_turret_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mega_moss_charger_f.png b/public/ingame-sprites/bestiary/bestiary_mega_moss_charger_f.png new file mode 100644 index 00000000..ba309b73 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mega_moss_charger_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mega_moss_charger_s.png b/public/ingame-sprites/bestiary/bestiary_mega_moss_charger_s.png new file mode 100644 index 00000000..fe0e9b91 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mega_moss_charger_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_menderbug_f.png b/public/ingame-sprites/bestiary/bestiary_menderbug_f.png new file mode 100644 index 00000000..00f37c61 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_menderbug_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_menderbug_s.png b/public/ingame-sprites/bestiary/bestiary_menderbug_s.png new file mode 100644 index 00000000..1ff927c4 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_menderbug_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mighty_zote_balloon_full.png b/public/ingame-sprites/bestiary/bestiary_mighty_zote_balloon_full.png new file mode 100644 index 00000000..e9cd90c7 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mighty_zote_balloon_full.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mighty_zote_balloon_portrait.png b/public/ingame-sprites/bestiary/bestiary_mighty_zote_balloon_portrait.png new file mode 100644 index 00000000..c081febf Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mighty_zote_balloon_portrait.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mighty_zote_full.png b/public/ingame-sprites/bestiary/bestiary_mighty_zote_full.png new file mode 100644 index 00000000..e77009e9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mighty_zote_full.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mighty_zote_hopper_full.png b/public/ingame-sprites/bestiary/bestiary_mighty_zote_hopper_full.png new file mode 100644 index 00000000..0fc1e48d Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mighty_zote_hopper_full.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mighty_zote_hopper_portrait.png b/public/ingame-sprites/bestiary/bestiary_mighty_zote_hopper_portrait.png new file mode 100644 index 00000000..e644449f Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mighty_zote_hopper_portrait.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mighty_zote_portrait.png b/public/ingame-sprites/bestiary/bestiary_mighty_zote_portrait.png new file mode 100644 index 00000000..30501182 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mighty_zote_portrait.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mighty_zoteling_full.png b/public/ingame-sprites/bestiary/bestiary_mighty_zoteling_full.png new file mode 100644 index 00000000..d32fd92e Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mighty_zoteling_full.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mighty_zoteling_portrait.png b/public/ingame-sprites/bestiary/bestiary_mighty_zoteling_portrait.png new file mode 100644 index 00000000..3715b3ea Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mighty_zoteling_portrait.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mimic_grub_f.png b/public/ingame-sprites/bestiary/bestiary_mimic_grub_f.png new file mode 100644 index 00000000..6c18161c Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mimic_grub_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mimic_grub_s.png b/public/ingame-sprites/bestiary/bestiary_mimic_grub_s.png new file mode 100644 index 00000000..5cdfa98b Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mimic_grub_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mines_climber_f.png b/public/ingame-sprites/bestiary/bestiary_mines_climber_f.png new file mode 100644 index 00000000..389c87ab Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mines_climber_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mines_climber_s.png b/public/ingame-sprites/bestiary/bestiary_mines_climber_s.png new file mode 100644 index 00000000..3c941a9a Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mines_climber_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mines_flier_f.png b/public/ingame-sprites/bestiary/bestiary_mines_flier_f.png new file mode 100644 index 00000000..3be6558f Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mines_flier_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mines_flier_s.png b/public/ingame-sprites/bestiary/bestiary_mines_flier_s.png new file mode 100644 index 00000000..152386a9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mines_flier_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mines_goomba_f.png b/public/ingame-sprites/bestiary/bestiary_mines_goomba_f.png new file mode 100644 index 00000000..c71a5362 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mines_goomba_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mines_goomba_s.png b/public/ingame-sprites/bestiary/bestiary_mines_goomba_s.png new file mode 100644 index 00000000..0c07956d Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mines_goomba_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mini_mawlek_f.png b/public/ingame-sprites/bestiary/bestiary_mini_mawlek_f.png new file mode 100644 index 00000000..57a33c59 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mini_mawlek_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mini_mawlek_s.png b/public/ingame-sprites/bestiary/bestiary_mini_mawlek_s.png new file mode 100644 index 00000000..4068baf3 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mini_mawlek_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mosquito_f.png b/public/ingame-sprites/bestiary/bestiary_mosquito_f.png new file mode 100644 index 00000000..32fca725 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mosquito_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mosquito_s.png b/public/ingame-sprites/bestiary/bestiary_mosquito_s.png new file mode 100644 index 00000000..6177187e Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mosquito_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_moss_charger_f.png b/public/ingame-sprites/bestiary/bestiary_moss_charger_f.png new file mode 100644 index 00000000..8ddf31aa Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_moss_charger_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_moss_charger_s.png b/public/ingame-sprites/bestiary/bestiary_moss_charger_s.png new file mode 100644 index 00000000..bb7f5659 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_moss_charger_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_moss_knight_f.png b/public/ingame-sprites/bestiary/bestiary_moss_knight_f.png new file mode 100644 index 00000000..ce01e6db Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_moss_knight_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_moss_knight_fat_f.png b/public/ingame-sprites/bestiary/bestiary_moss_knight_fat_f.png new file mode 100644 index 00000000..e05ced40 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_moss_knight_fat_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_moss_knight_fat_s.png b/public/ingame-sprites/bestiary/bestiary_moss_knight_fat_s.png new file mode 100644 index 00000000..56f1ecb0 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_moss_knight_fat_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_moss_knight_s.png b/public/ingame-sprites/bestiary/bestiary_moss_knight_s.png new file mode 100644 index 00000000..e64ccb0b Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_moss_knight_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_moss_leaper_f.png b/public/ingame-sprites/bestiary/bestiary_moss_leaper_f.png new file mode 100644 index 00000000..617ac3ef Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_moss_leaper_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_moss_leaper_s.png b/public/ingame-sprites/bestiary/bestiary_moss_leaper_s.png new file mode 100644 index 00000000..ffc74540 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_moss_leaper_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mossman_runner_f.png b/public/ingame-sprites/bestiary/bestiary_mossman_runner_f.png new file mode 100644 index 00000000..8e9feb22 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mossman_runner_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mossman_runner_s.png b/public/ingame-sprites/bestiary/bestiary_mossman_runner_s.png new file mode 100644 index 00000000..1b6041b8 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mossman_runner_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mossman_shaker_f.png b/public/ingame-sprites/bestiary/bestiary_mossman_shaker_f.png new file mode 100644 index 00000000..cbf7b185 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mossman_shaker_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mossman_shaker_s.png b/public/ingame-sprites/bestiary/bestiary_mossman_shaker_s.png new file mode 100644 index 00000000..27b1b408 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mossman_shaker_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mushroom_brawler_f.png b/public/ingame-sprites/bestiary/bestiary_mushroom_brawler_f.png new file mode 100644 index 00000000..95d81d40 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mushroom_brawler_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mushroom_brawler_s.png b/public/ingame-sprites/bestiary/bestiary_mushroom_brawler_s.png new file mode 100644 index 00000000..29053377 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mushroom_brawler_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mushroom_flyer_f.png b/public/ingame-sprites/bestiary/bestiary_mushroom_flyer_f.png new file mode 100644 index 00000000..14a3455a Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mushroom_flyer_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mushroom_flyer_s.png b/public/ingame-sprites/bestiary/bestiary_mushroom_flyer_s.png new file mode 100644 index 00000000..6db52e94 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mushroom_flyer_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mushroom_mini_f.png b/public/ingame-sprites/bestiary/bestiary_mushroom_mini_f.png new file mode 100644 index 00000000..7c1bf768 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mushroom_mini_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mushroom_mini_s.png b/public/ingame-sprites/bestiary/bestiary_mushroom_mini_s.png new file mode 100644 index 00000000..60c7d911 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mushroom_mini_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mushroom_roller_f.png b/public/ingame-sprites/bestiary/bestiary_mushroom_roller_f.png new file mode 100644 index 00000000..7a28aaed Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mushroom_roller_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mushroom_roller_s.png b/public/ingame-sprites/bestiary/bestiary_mushroom_roller_s.png new file mode 100644 index 00000000..b1d13594 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mushroom_roller_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mushroom_turret_f.png b/public/ingame-sprites/bestiary/bestiary_mushroom_turret_f.png new file mode 100644 index 00000000..2f313cc9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mushroom_turret_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_mushroom_turret_s.png b/public/ingame-sprites/bestiary/bestiary_mushroom_turret_s.png new file mode 100644 index 00000000..3814ce69 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_mushroom_turret_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_parasite_flyer_f.png b/public/ingame-sprites/bestiary/bestiary_parasite_flyer_f.png new file mode 100644 index 00000000..760fd54d Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_parasite_flyer_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_parasite_flyer_s.png b/public/ingame-sprites/bestiary/bestiary_parasite_flyer_s.png new file mode 100644 index 00000000..1e23cf0d Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_parasite_flyer_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_prayer_slug_f.png b/public/ingame-sprites/bestiary/bestiary_prayer_slug_f.png new file mode 100644 index 00000000..fe9bfae7 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_prayer_slug_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_prayer_slug_s.png b/public/ingame-sprites/bestiary/bestiary_prayer_slug_s.png new file mode 100644 index 00000000..7f20b5ca Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_prayer_slug_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_roller_f.png b/public/ingame-sprites/bestiary/bestiary_roller_f.png new file mode 100644 index 00000000..5a24b2c2 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_roller_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_roller_s.png b/public/ingame-sprites/bestiary/bestiary_roller_s.png new file mode 100644 index 00000000..3da638a3 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_roller_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_royal_zombie_fat_f.png b/public/ingame-sprites/bestiary/bestiary_royal_zombie_fat_f.png new file mode 100644 index 00000000..c498b52e Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_royal_zombie_fat_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_royal_zombie_fat_s.png b/public/ingame-sprites/bestiary/bestiary_royal_zombie_fat_s.png new file mode 100644 index 00000000..b11cbbc5 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_royal_zombie_fat_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_royal_zombie_flat_f.png b/public/ingame-sprites/bestiary/bestiary_royal_zombie_flat_f.png new file mode 100644 index 00000000..d65aec29 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_royal_zombie_flat_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_royal_zombie_flat_s.png b/public/ingame-sprites/bestiary/bestiary_royal_zombie_flat_s.png new file mode 100644 index 00000000..64c49685 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_royal_zombie_flat_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_royal_zombie_point_f.png b/public/ingame-sprites/bestiary/bestiary_royal_zombie_point_f.png new file mode 100644 index 00000000..a4f505bb Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_royal_zombie_point_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_royal_zombie_point_s.png b/public/ingame-sprites/bestiary/bestiary_royal_zombie_point_s.png new file mode 100644 index 00000000..a990f689 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_royal_zombie_point_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_ruins_zombie_big_f.png b/public/ingame-sprites/bestiary/bestiary_ruins_zombie_big_f.png new file mode 100644 index 00000000..3eb4f60a Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_ruins_zombie_big_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_ruins_zombie_big_s.png b/public/ingame-sprites/bestiary/bestiary_ruins_zombie_big_s.png new file mode 100644 index 00000000..ba5b6850 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_ruins_zombie_big_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_ruins_zombie_f.png b/public/ingame-sprites/bestiary/bestiary_ruins_zombie_f.png new file mode 100644 index 00000000..2884bb1e Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_ruins_zombie_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_ruins_zombie_flier_f.png b/public/ingame-sprites/bestiary/bestiary_ruins_zombie_flier_f.png new file mode 100644 index 00000000..185d3560 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_ruins_zombie_flier_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_ruins_zombie_flier_s.png b/public/ingame-sprites/bestiary/bestiary_ruins_zombie_flier_s.png new file mode 100644 index 00000000..3ca3f6f3 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_ruins_zombie_flier_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_ruins_zombie_lance_f.png b/public/ingame-sprites/bestiary/bestiary_ruins_zombie_lance_f.png new file mode 100644 index 00000000..7dc2d074 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_ruins_zombie_lance_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_ruins_zombie_lance_s.png b/public/ingame-sprites/bestiary/bestiary_ruins_zombie_lance_s.png new file mode 100644 index 00000000..0c639018 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_ruins_zombie_lance_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_ruins_zombie_s.png b/public/ingame-sprites/bestiary/bestiary_ruins_zombie_s.png new file mode 100644 index 00000000..5aab7793 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_ruins_zombie_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_shell-shielder_f.png b/public/ingame-sprites/bestiary/bestiary_shell-shielder_f.png new file mode 100644 index 00000000..7476d76c Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_shell-shielder_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_shell-shielder_s.png b/public/ingame-sprites/bestiary/bestiary_shell-shielder_s.png new file mode 100644 index 00000000..f092917a Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_shell-shielder_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_shield_guard_s.png b/public/ingame-sprites/bestiary/bestiary_shield_guard_s.png new file mode 100644 index 00000000..d28fbd06 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_shield_guard_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_snap_turret_f.png b/public/ingame-sprites/bestiary/bestiary_snap_turret_f.png new file mode 100644 index 00000000..175cf55a Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_snap_turret_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_snap_turret_s.png b/public/ingame-sprites/bestiary/bestiary_snap_turret_s.png new file mode 100644 index 00000000..d64a1ef6 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_snap_turret_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_spider_mage_f.png b/public/ingame-sprites/bestiary/bestiary_spider_mage_f.png new file mode 100644 index 00000000..7cf5ae4c Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_spider_mage_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_spider_mage_s.png b/public/ingame-sprites/bestiary/bestiary_spider_mage_s.png new file mode 100644 index 00000000..93c0882b Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_spider_mage_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_spider_soldier_f.png b/public/ingame-sprites/bestiary/bestiary_spider_soldier_f.png new file mode 100644 index 00000000..03cf63d3 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_spider_soldier_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_spider_soldier_s.png b/public/ingame-sprites/bestiary/bestiary_spider_soldier_s.png new file mode 100644 index 00000000..b1424cc4 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_spider_soldier_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_spit_turret_f.png b/public/ingame-sprites/bestiary/bestiary_spit_turret_f.png new file mode 100644 index 00000000..ec2008ce Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_spit_turret_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_spit_turret_s.png b/public/ingame-sprites/bestiary/bestiary_spit_turret_s.png new file mode 100644 index 00000000..6cb2c7b8 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_spit_turret_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_super_spitter_f.png b/public/ingame-sprites/bestiary/bestiary_super_spitter_f.png new file mode 100644 index 00000000..516c4f3e Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_super_spitter_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_super_spitter_s.png b/public/ingame-sprites/bestiary/bestiary_super_spitter_s.png new file mode 100644 index 00000000..71f87680 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_super_spitter_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_tiny_spider_f.png b/public/ingame-sprites/bestiary/bestiary_tiny_spider_f.png new file mode 100644 index 00000000..4299366a Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_tiny_spider_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_tiny_spider_s.png b/public/ingame-sprites/bestiary/bestiary_tiny_spider_s.png new file mode 100644 index 00000000..e23e289a Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_tiny_spider_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_vessel_seal.png b/public/ingame-sprites/bestiary/bestiary_vessel_seal.png new file mode 100644 index 00000000..9b1c026f Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_vessel_seal.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_white_servant_f.png b/public/ingame-sprites/bestiary/bestiary_white_servant_f.png new file mode 100644 index 00000000..cf9e2aa2 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_white_servant_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_white_servant_s.png b/public/ingame-sprites/bestiary/bestiary_white_servant_s.png new file mode 100644 index 00000000..164cd1d1 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_white_servant_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_zap_bugs_f.png b/public/ingame-sprites/bestiary/bestiary_zap_bugs_f.png new file mode 100644 index 00000000..0cda15b4 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_zap_bugs_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_zap_bugs_s.png b/public/ingame-sprites/bestiary/bestiary_zap_bugs_s.png new file mode 100644 index 00000000..224745f6 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_zap_bugs_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_zombie_hive_f.png b/public/ingame-sprites/bestiary/bestiary_zombie_hive_f.png new file mode 100644 index 00000000..5d027fbf Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_zombie_hive_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_zombie_hive_s.png b/public/ingame-sprites/bestiary/bestiary_zombie_hive_s.png new file mode 100644 index 00000000..5be7f58e Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_zombie_hive_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_zombie_miner_crystal_f.png b/public/ingame-sprites/bestiary/bestiary_zombie_miner_crystal_f.png new file mode 100644 index 00000000..8a54f15d Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_zombie_miner_crystal_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_zombie_miner_crystal_s.png b/public/ingame-sprites/bestiary/bestiary_zombie_miner_crystal_s.png new file mode 100644 index 00000000..95a1cfef Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_zombie_miner_crystal_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_zombie_miner_f.png b/public/ingame-sprites/bestiary/bestiary_zombie_miner_f.png new file mode 100644 index 00000000..6ea9794f Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_zombie_miner_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_zombie_miner_s.png b/public/ingame-sprites/bestiary/bestiary_zombie_miner_s.png new file mode 100644 index 00000000..75917943 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_zombie_miner_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_zombie_spider_01_f.png b/public/ingame-sprites/bestiary/bestiary_zombie_spider_01_f.png new file mode 100644 index 00000000..6cca95fb Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_zombie_spider_01_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_zombie_spider_01_s.png b/public/ingame-sprites/bestiary/bestiary_zombie_spider_01_s.png new file mode 100644 index 00000000..97ce3fb9 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_zombie_spider_01_s.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_zombie_spider_02_f.png b/public/ingame-sprites/bestiary/bestiary_zombie_spider_02_f.png new file mode 100644 index 00000000..a06b0125 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_zombie_spider_02_f.png differ diff --git a/public/ingame-sprites/bestiary/bestiary_zombie_spider_02_s.png b/public/ingame-sprites/bestiary/bestiary_zombie_spider_02_s.png new file mode 100644 index 00000000..e14af095 Binary files /dev/null and b/public/ingame-sprites/bestiary/bestiary_zombie_spider_02_s.png differ diff --git a/src/app/run/[id]/_animation_options.tsx b/src/app/run/[id]/_animation_options.tsx index 91ee0017..d7b245ce 100644 --- a/src/app/run/[id]/_animation_options.tsx +++ b/src/app/run/[id]/_animation_options.tsx @@ -9,7 +9,7 @@ import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip import { cn } from '@/lib/utils'; import { Pause, Play } from 'lucide-react'; import { useEffect } from 'react'; -import { zeroPad } from '~/lib/utils/utils'; +import { Duration } from './_duration'; import { type UseViewOptionsStore } from './_viewOptionsStore'; function Times({ className }: { className?: string }) { @@ -20,27 +20,6 @@ function Times({ className }: { className?: string }) { ); } -function Duration({ ms, className }: { ms: number; className?: string }) { - const hours = Math.floor(ms / 1000 / 60 / 60); - const minutes = Math.floor((ms / 1000 / 60) % 60); - const seconds = Math.floor((ms / 1000) % 60); - const deciSeconds = Math.floor(Math.floor(ms % 1000) / 100); - - return ( - - - - {zeroPad(hours, 2)}:{zeroPad(minutes, 2)} - - :{zeroPad(seconds, 2)}.{deciSeconds} - - - - hh:mm:ss.s - - ); -} - const intervalMs = 1000 / 30; function PlayButton({ useViewOptionsStore }: { useViewOptionsStore: UseViewOptionsStore }) { diff --git a/src/app/run/[id]/_duration.tsx b/src/app/run/[id]/_duration.tsx new file mode 100644 index 00000000..959fa8dc --- /dev/null +++ b/src/app/run/[id]/_duration.tsx @@ -0,0 +1,38 @@ +import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'; +import { cn } from '@/lib/utils'; +import { zeroPad } from '~/lib/utils/utils'; + +export function Duration({ + ms, + className, + withTooltip = true, +}: { + ms: number; + className?: string; + withTooltip?: boolean; +}) { + const hours = Math.floor(ms / 1000 / 60 / 60); + const minutes = Math.floor((ms / 1000 / 60) % 60); + const seconds = Math.floor((ms / 1000) % 60); + const deciSeconds = Math.floor(Math.floor(ms % 1000) / 100); + + const content = ( + + {zeroPad(hours, 2)}:{zeroPad(minutes, 2)} + + :{zeroPad(seconds, 2)}.{deciSeconds} + + + ); + + if (!withTooltip) { + return content; + } + + return ( + + {content} + hh:mm:ss.s + + ); +} diff --git a/src/app/run/[id]/_extra-charts/_run_extra_charts.tsx b/src/app/run/[id]/_extra-charts/_run_extra_charts.tsx index b80d66fb..af62f150 100644 --- a/src/app/run/[id]/_extra-charts/_run_extra_charts.tsx +++ b/src/app/run/[id]/_extra-charts/_run_extra_charts.tsx @@ -1,6 +1,5 @@ -import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; +import { CardContent } from '@/components/ui/card'; import { Checkbox } from '@/components/ui/checkbox'; -import { cn } from '@/lib/utils'; import { useId } from 'react'; import { type UseViewOptionsStore } from '../_viewOptionsStore'; import { CompletionChart } from './completion-chart'; @@ -21,10 +20,7 @@ export function RunExtraCharts({ useViewOptionsStore, className }: RunExtraChart const isAnythingAnimating = useViewOptionsStore((s) => s.isAnythingAnimating); return ( - - - Time-based analytics - + <> {isAnythingAnimating && (
@@ -54,6 +50,6 @@ export function RunExtraCharts({ useViewOptionsStore, className }: RunExtraChart
-
+ ); } diff --git a/src/app/run/[id]/_page.tsx b/src/app/run/[id]/_page.tsx index 16403927..72477abe 100644 --- a/src/app/run/[id]/_page.tsx +++ b/src/app/run/[id]/_page.tsx @@ -1,8 +1,9 @@ 'use client'; +import { TabsListTransparent, TabsTriggerTransparent } from '@/additions/tabs'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Progress } from '@/components/ui/progress'; -import { Tabs, TabsList, TabsTrigger } from '@/components/ui/tabs'; +import { Tabs, TabsContent } from '@/components/ui/tabs'; import { cn } from '@/lib/utils'; import { type Session } from 'next-auth'; import { useEffect } from 'react'; @@ -14,7 +15,8 @@ import { AnimationOptions } from './_animation_options'; import { RunExtraCharts } from './_extra-charts/_run_extra_charts'; import { RoomInfo } from './_room_infos'; import { RunOverviewTab } from './_run-overview-tab'; -import { useViewOptionsStoreRoot, type MainCardTab } from './_viewOptionsStore'; +import { RunSplits } from './_run_splits'; +import { UseViewOptionsStore, useViewOptionsStoreRoot, type MainCardTab } from './_viewOptionsStore'; import { ViewOptions } from './_view_options'; interface Props { @@ -62,20 +64,10 @@ export function SingleRunClientPage({ session, runData }: Props) { className="absolute left-0 right-0 top-0 z-10" onValueChange={(tab: string) => setMainCardTab(tab as MainCardTab)} > - - - Overview - - - Map - - + + Overview + Map + {/* @@ -105,7 +97,27 @@ export function SingleRunClientPage({ session, runData }: Props) { {isAnythingAnimating && } - + + ); } + +function RightCard({ useViewOptionsStore }: { useViewOptionsStore: UseViewOptionsStore }) { + return ( + + + + Splits + Time charts + + + + + + + + + + ); +} diff --git a/src/app/run/[id]/_run_splits.tsx b/src/app/run/[id]/_run_splits.tsx new file mode 100644 index 00000000..b9536d86 --- /dev/null +++ b/src/app/run/[id]/_run_splits.tsx @@ -0,0 +1,178 @@ +import { Checkbox } from '@/components/ui/checkbox'; +import { Table, TableBody, TableCell, TableRow } from '@/components/ui/table'; +import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'; +import { cn } from '@/lib/utils'; +import Image from 'next/image'; +import { forwardRef, memo, useCallback, useEffect, useId, useMemo, useRef, type ReactNode } from 'react'; +import { assertNever } from '~/lib/utils/utils'; +import { + RecordingSplitGroups, + type RecordingSplit, + type RecordingSplitGroup, +} from '~/lib/viz/recording-files/recording-splits'; +import { Duration } from './_duration'; +import { type UseViewOptionsStore } from './_viewOptionsStore'; + +type RowActiveState = 'past' | 'next' | 'future'; + +interface RowProps { + split: RecordingSplit; + setAnimationMsIntoGame: (ms: number) => void; + activeState: RowActiveState; +} + +const RunSplitRow = memo( + forwardRef(function RunSplitRow( + { split, setAnimationMsIntoGame, activeState }: RowProps, + ref: any, + ) { + let icon: ReactNode | undefined = undefined; + if (split.imageUrl) { + icon = ; + } + + function handleClick() { + console.log('split clicked', split); + setAnimationMsIntoGame(split.msIntoGame); + } + + const activeStateClasses = + activeState === 'past' + ? 'bg-green-200 dark:bg-green-900' + : activeState === 'next' + ? 'bg-blue-300 dark:bg-blue-800' + : activeState === 'future' + ? '' + : assertNever(activeState); + + return ( + + + + + + + {split.tooltip} + + + + ); + }), +); + +interface Props { + useViewOptionsStore: UseViewOptionsStore; +} + +const EMPTY_ARRAY = [] as const; + +export function RunSplits({ useViewOptionsStore }: Props) { + const id = useId(); + const recording = useViewOptionsStore((state) => state.recording); + const animationMsIntoGame = useViewOptionsStore((state) => state.animationMsIntoGame); + const setAnimationMsIntoGame = useViewOptionsStore((state) => state.setAnimationMsIntoGame); + const setVisibleSplitGroups = useViewOptionsStore((state) => state.setVisibleSplitGroups); + const visibleSplitGroups = useViewOptionsStore((state) => state.visibleSplitGroups); + const splits = recording?.splits ?? EMPTY_ARRAY; + + const filteredSplits = useMemo( + () => splits.filter((split) => visibleSplitGroups.includes(split.group)), + [splits, visibleSplitGroups], + ); + + const nextSplitIndex = useMemo( + () => + splits?.findIndex( + (split, index) => + split.msIntoGame >= animationMsIntoGame && splits[index + 1]?.msIntoGame !== split.msIntoGame, + ), + [animationMsIntoGame, splits], + ); + + const splitRefs = useRef<(HTMLTableRowElement | null)[]>([]); + useEffect(() => { + splitRefs.current = splitRefs.current.slice(0, filteredSplits.length); + }, [filteredSplits.length]); + + useEffect(() => { + const scrollToIndex = + nextSplitIndex === -1 || nextSplitIndex === undefined ? filteredSplits.length - 1 : nextSplitIndex; + if (scrollToIndex >= 0 && scrollToIndex < filteredSplits.length) { + splitRefs.current[scrollToIndex]?.scrollIntoView({ + behavior: 'smooth', + block: 'nearest', + inline: 'start', + }); + } + }, [nextSplitIndex, filteredSplits.length]); + + const setVisibleSplitGroupChecked = useCallback( + (group: RecordingSplitGroup, checked: boolean) => { + const currentGroup = useViewOptionsStore.getState().visibleSplitGroups; + setVisibleSplitGroups(checked ? [...currentGroup, group] : currentGroup.filter((g) => g !== group)); + }, + [setVisibleSplitGroups, useViewOptionsStore], + ); + + return useMemo( + () => ( + <> +
+
+ {RecordingSplitGroups.map((group) => { + const checked = visibleSplitGroups.includes(group.name); + return ( +
+ + setVisibleSplitGroupChecked(group.name, checked as boolean) + } + /> + +
+ ); + })} +
+
+
+
+ + + {filteredSplits?.map((split, index) => { + const activeState = + nextSplitIndex === -1 || nextSplitIndex === undefined + ? 'past' + : nextSplitIndex === index + ? 'next' + : index < nextSplitIndex + ? 'past' + : 'future'; + return ( + (splitRefs.current[index] = el)} + /> + ); + })} + +
+
+ + ), + [filteredSplits, visibleSplitGroups, id, setVisibleSplitGroupChecked, nextSplitIndex, setAnimationMsIntoGame], + ); +} diff --git a/src/app/run/[id]/_viewOptionsStore.tsx b/src/app/run/[id]/_viewOptionsStore.tsx index c8bd2525..44de272b 100644 --- a/src/app/run/[id]/_viewOptionsStore.tsx +++ b/src/app/run/[id]/_viewOptionsStore.tsx @@ -3,6 +3,10 @@ import { create } from 'zustand'; import { combine } from 'zustand/middleware'; import { playerDataFields } from '~/lib/viz/player-data/player-data'; import { type CombinedRecording } from '~/lib/viz/recording-files/recording'; +import { + RecordingSplitGroup, + RecordingSplitGroups as recordingSplitGroups, +} from '~/lib/viz/recording-files/recording-splits'; import { type AggregatedRunData, type AggregationVariable } from '~/lib/viz/recording-files/run-aggregation-store'; export type RoomVisibility = 'all' | 'visited' | 'visited-animated'; @@ -37,6 +41,8 @@ function createViewOptionsStore() { extraChartsTimeBounds: [0, 0] as readonly [number, number], extraChartsFollowAnimation: true, mainCardTab: 'overview' as MainCardTab, + + visibleSplitGroups: recordingSplitGroups.map((it) => it.name), }, (set, get) => { function handleAnyAnimationVisiblityChanged() { @@ -232,6 +238,10 @@ function createViewOptionsStore() { set({ mainCardTab }); } + function setVisibleSplitGroups(visibleSplitGroups: RecordingSplitGroup[]) { + set({ visibleSplitGroups }); + } + return { setRoomVisibility, setTraceVisibility, @@ -255,6 +265,7 @@ function createViewOptionsStore() { resetExtraChartsTimeBounds, setExtraChartsFollowAnimation, setMainCardTab, + setVisibleSplitGroups, }; }, ), diff --git a/src/lib/viz/generated/enemies-journal-lang.generated.ts b/src/lib/viz/generated/enemies-journal-lang.generated.ts new file mode 100644 index 00000000..e889ce65 --- /dev/null +++ b/src/lib/viz/generated/enemies-journal-lang.generated.ts @@ -0,0 +1,731 @@ +// from EN_JOURNAL in the game's files +// converted to js by replacing: +// ([^<]*) +// with: $1: "$2", + +export const enemiesJournalLang = { + DESC_BLOB_FLYER: 'Fat, slow, flying bug. Frequently discharges the acidic liquid stored in its round body.', + DESC_FINAL_BOSS: 'The light, forgotten.', + NAME_JELLYFISH: 'Ooma', + NOTE_BURSTING_BOUNCER: + 'Horrible goo and noxious gas has started leaking down from above. Is there a source of all this pestilence? If so, I haven't seen it.', + NAME_ZOM_BEAM_MINER: 'Crystallised Husk', + DESC_HEALTH_SCUTTLER: + 'Small scuttling seed filled with Lifeblood, which can be extracted and consumed for its healthful properties.', + NOTE_ZOTE_HOPPER: + '"That lowly map-maker's wife? Hah! My Queen, how could you compare yourself to her? In the face of your intoxicating beauty, all other females are merely dust!"<br>The Grey Prince trembled with anger and indignation... and love.<br>- 'The Grey Prince' Chapter 178', + NAME_JELLY_CRAWLER: 'Uoma', + NOTE_CRYS_CRAWLER: + 'Large and well-protected, but slow and docile. The bugs of Hallownest used to force these creatures to carry around their carts and machines.', + NOTE_CRYS_LAZER_BUG: + 'These creatures look weak, but sometimes burning pillars of heat will burst out from the crystals they carry on their backs. Be wary, and time your strikes well!', + NOTE_CRYS_FLYER: + 'Make their homes all the way up at the top of the world. Do they use the crystals willingly as weapons or are they merely hosts and the crystals parasites?', + NAME_MUSH_ROLLER: 'Shrumal Warrior', + NAME_FINAL_BOSS: 'Radiance', + NAME_MAGEBLOB: 'Mistake', + NAME_GORGEOUS_HUSK: 'Gorgeous Husk', + DESC_MOSSMAN_SHAKER: 'Plant-like bug swollen with infection. Releases deadly gas when threatened.', + NOTE_ABYSS_TENDRIL: + 'The bugs of Hallownest sometimes wondered whether there were other, older, stranger Kingdoms deep below them. What strange fancies they had. That's probably why they were always so distracted and easy to kill.', + NOTE_MIMIC_SPIDER: + 'In the deepest darkness, there are beasts who wear faces stolen from your memories and pluck at the strings in your heart. Know yourself, and stay strong.', + DESC_MEGA_BEAM_MINER: + 'Heavyset miner of the Crystal Peak overcome by crystal growth. Can discharge blazing beams of light from its crystalllised limbs. ', + NAME_EGG_SAC: 'Bluggsac', + NAME_BLOBBLE: 'Battle Obble', + NOTE_MENDERBUG: 'The bugs of Hallownest were obsessed with building things. What strange little minds they had.', + DESC_BEE: 'Defends the Hive against intruders with its extendable stinger.', + DESC_BOUNCER: 'Simple-minded creature that haphazardly buzzes around, bumping into things.', + DESC_FLAMEBEARER_SMALL: + 'Young and playful member of the Grimm Troupe. As part of the Ritual, it gathers scarlet flame within its torch. It will relinquish the flame once defeated.', + NOTE_JELLY_CRAWLER: + 'The spirit of a dead ancestor? The brain of a larger creature, allowed to drift free? An egg searching for a safe place to spawn? I have no idea what this is.', + NOTE_ZOM_HIVE: + 'Did the hivelings build their nest around this sorry bug, or did the bug squeeze its body into their nest? Either way, they seem happy enough together.', + NAME_MIMIC_SPIDER: 'Nosk', + DESC_SPITTER: 'Bests its prey by spitting corrosive liquid. Often hunts in packs.', + DESC_ROYAL_GUARD: + 'Guard construct of Hallownest's Palace and skilled wielder of the curved claw-blade. Its heavy white armour protects a fragile body.', + NAME_LAZY_FLYER: 'Aluba', + NAME_SAGE_SLY: 'Great Nailsage Sly', + NOTE_ANGRY_BUZZER: + 'The infection that passes from creature to creature grants strength and courage, but it also seems to enslave the will. Would you make such a bargain?', + DESC_BIGFLY: 'Mature gruzzer that carries its young in its belly. Attacks by hurling its huge body around.', + DESC_GHOST_MARMU: 'Lingering dream of a fallen warrior. Protector of the Queen's Gardens.', + NOTE_ROYAL_GUARD: + 'They say the old King died long ago, but his influence echoes around us still. A creature like that... what did he desire?', + NOTE_SAGE_SLY: + '"Sagely God of the cunning and bold,<br>Sharpen Our nails and show Us the odds,<br>O greatest of masters, We wish to behold,<br>That one still greater, the God of Gods!"<br>- Prayer to the Sage', + NOTE_MAGE_LORD: + 'The bugs of Hallownest tried all kinds of tricks and rituals and prayers to rid themselves of the infection. But to no avail! Perhaps the infection came from somewhere deep inside of them that they could not escape.', + NOTE_ZOM_MINER: + 'The bugs of Hallownest lusted after the strangest things in life. They would dig furtively through the dirt for stone, ore and in particular the crystals that grow at the top of the world.', + DESC_ELEC_MAGE: + 'Learned bug that adapted the teachings of the Soul Sanctum into a deadly fighting art. Attacks with bursts of electricity.', + DESC_INFLATOR: 'Tiny and placid but swells to enormous size when threatened.', + NAME_GHOST_HU: 'Elder Hu', + DESC_OBLOBBLE: 'Larger cousin of the Obble. Pairs with a mate for life and will never leave its side.', + NAME_MINI_SPIDER: 'Deepling', + NAME_GIANT_HOPPER: 'Great Hopper', + NOTE_JAR_COLLECTOR: + 'A shadow that sometimes flits through the caverns, making strange noises to itself. I've never seen it clearly so I have no idea what type of creature it is.', + NOTE_HEALTH_SCUTTLER: + 'The bright liquid inside of these little fellows is delicious, and drinking it will make you feel stronger. I wonder how my own innards taste... would it be a heinous thing to try and drink some?', + NAME_PURE_VESSEL: 'Pure Vessel', + DESC_COL_SHIELD: + 'Warrior fighting for glory in the Colosseum of Fools. Warily approaches opponents with shell held high.', + DESC_GREY_PRINCE: 'Figment of an obsessed mind. Lacks grace but becomes stronger with every defeat.', + NOTE_FUNGOON_BABY: + 'Just a child, it drifts about with closed eyes and an open mind. When I was young, my brothers and sisters and I would hunt each other in the nest. Now I hunt alone.', + NAME_MOSS_KNIGHT_FAT: 'Mossy Vagabond', + NOTE_HUNTERMARK: + 'I have no offspring, nor subjects, nor worshippers. The sum of my being, my learning, my instincts... I leave it all to you. Good luck, Hunter.', + NOTE_SENTRY_1: + 'More skilled at combat than most bugs of Hallownest, they are nimble but lightly armoured. Keep the pressure on them.', + DESC_GHOST_ALADAR: + 'Lingering dream of a fallen warrior. A mysterious life-form that claimed to contain all of the world's knowledge inside of its distended brain.', + NAME_BEE: 'Hive Soldier', + DESC_MAWLEK: 'Ferocious but extremely social creature. Becomes aggressive if not able to mingle with its own kind.', + DESC_PIGEON: 'Harmless flying creature that favours serene environments. Usually travels in flocks.', + DESC_MAGE_LORD: + 'Head of the Soul Sanctum. Hoarded soul hoping to stave off Hallownest's affliction, but eventually became intoxicated by its power. ', + NOTE_MAWLEK_TURRET: + 'How did this foolish creature lose its legs?! I suppose it's possible to lose anything, if you really try.', + DESC_SENTRY_FAT: + 'Animated remains of a large Hallownest Sentry. One of few in Hallownest strong enough to wield a greatnail.', + NOTE_OBLOBBLE: + 'Having a mate by your side... one that will never leave you until death. Strange. No mate has ever come forth to stay by my side...', + DESC_ZOTE: + 'A self-proclaimed Knight, of no renown. Wields a nail he carved from shellwood, named 'Life Ender.'', + NAME_COL_HOPPER: 'Death Loodle', + NAME_WHITE_ROYAL: 'Royal Retainer', + DESC_FUNG_ZOMBIE: 'The remains of a bug, consumed by a fungus. Frequently releases clouds of thick, deadly gas. ', + DESC_CRYS_CRAWLER: + 'Slow, hardy creature. The crystals that grow on its back provide extra protection from foes above.', + DESC_ZOM_MINER: + 'Remains of a bug drawn to the Crystal Peak for its precious crystal. Its claw-pick now doubles as a fierce weapon.', + NAME_SLASH_SPIDER: 'Stalking Devout', + DESC_PRAYER_SLUG: + 'Weakest members of the kingdom of Hallownest. Generally looked down upon and forced to do menial labour.', + DESC_LAZY_FLYER: 'Passive glider that prefers to dwell near acid waters.', + DESC_MENDERBUG: + 'Member of an elusive guild of bugs fixated on the maintenance of Hallownest's many signs and wayposts.', + NAME_VOID_IDOL_2: 'Void Idol', + DESC_KIN_SEAL: + 'Intricate seal of ancient design.<br><br>Used to contain a powerful force, or to preserve something of great importance.', + NOTE_ZAP_BUG: + 'They usually drift about peacefully, but sometimes they cluster together and spit out a sharp, crackling flash that will stun and burn even large beasts like myself. Watch closely for an opening and move past them quickly.', + NAME_ZOM_ROYAL_1: 'Husk Dandy', + NAME_ROYAL_GUARD: 'Kingsmould', + NAME_CRYS_CRAWLER: 'Glimback', + NOTE_MINES_CRAWLER: + 'I don't find this creature particularly noteable or interesting. It should learn to fly, or breathe flames, or sing hauntingly. Anything to justify its existence.', + NAME_NIGHTMARE_GRIMM: 'Nightmare King', + NOTE_GHOST_MARMU: + 'If you believe in something as hard as you can, with your eyes shut tight... eventually it will come true!<br>- Marmu', + DESC_MEGA_MOSS_CHARGER: 'Family of creatures that have learnt to bulk up with moss and live as one.', + NOTE_BOUNCER: + 'They only seem dimly aware of their surroundings, making them easy prey to cut your fangs on. What is it that guides them on their paths? It almost seems like they search for ways to die.', + NAME_GHOST_XERO: 'Xero', + DESC_ROLLER: + 'Rolls into a ball and propels itself at intruders who wander into its territory. Aggressive even when newly born.', + DESC_SENTRY_FLYING_JAVELIN: + 'Winged Sentry of Hallownest equipped with a nail-lance. Charges at threats or throws its lance from a distance.', + NAME_FUNG_ZOMBIE: 'Fungified Husk', + DESC_ZOM_SPITTING: 'The body of a bug, completely consumed by infection. Spits corrosive liquid.', + DESC_FLUKEFLY: 'Youngest of its species. Its body is composed of teeth, wings and stomach.', + DESC_BUZZER: 'Flying predator that pursues its prey relentlessly.', + NOTE_ROLLER: + 'Younger hunters delight in catching these creatures and rolling them around for sport. I encourage you to indulge yourself if the fancy strikes you.', + NAME_CRAWLER: 'Crawlid', + NOTE_ZOM_SHIELD: + 'Softened by generations of luxury, these bugs lack claws or armour or venom. Those who wish to protect themselves are forced to fashion weapons from stone, ore or shell.', + DESC_MEGA_JELLYFISH: 'Intelligent being that guards the inner chamber of the Teacher's Archives.', + NOTE_MUSH_ROLLER: + 'Something queer in the air has caused these mushrooms to grow hearts, minds, and even faces! This means they now fear for their lives, like all other living creatures.', + NOTE_EGG_SAC: 'Easily tracked down if you have a sense of smell. I strongly suggest you do not eat its eggs.', + DESC_COL_FLYINGSENTRY: + 'Warrior fighting for glory in the Colosseum of Fools. Flies just out of an opponent's reach then darts in for the kill.', + NOTE_ABYSS_CRAWLER: + 'This little creeper is weak and poses no threat, but something about it still unsettles me. The way it moves and the noises it makes are... strange somehow.', + NAME_BLACK_KNIGHT: 'Watcher Knight', + NAME_MANTIS_HEAVY: 'Mantis Traitor', + NOTE_ORANGE_BALLOON: + 'The infection creeping through the Kingdom's dead veins... does it have a mind? Does it produce soul? Is it truly alive?', + NOTE_FINAL_BOSS: + 'The plague, the infection, the madness that haunts the corpses of Hallownest... the light that screams out from the eyes of this dead Kingdom. What is the source? I suppose mere mortals like myself will never understand.', + DESC_WHITE_DEFENDER: 'Figure from a fondly remembered past. Reacts gallantly to defeat by becoming stronger.', + DESC_FLUKEMAN: 'Worm-like creature that prefers damp, dark habitats.', + NOTE_CENTIPEDE_HATCHER: + 'Are these creatures the mothers of the dirtcarvers? They appear only loosely related. But then how do the dirtcarvers get inside of the hatchers? A confusing situation.', + DESC_ZOM_BEAM_MINER: + 'Remains of a bug who died amongst the crystals. Animated by a strange force, it attacks by firing beams of light from its crystallised arms.', + NAME_SPITTER: 'Aspid Hunter', + NAME_OBLOBBLE: 'Oblobble', + NOTE_ZOM_SPITTING: + 'The infection that swept through Hallownest so long ago... they say that the harder you struggled against it, the more it consumed you.', + NAME_CEILING_DROPPER: 'Belfly', + DESC_MOSS_KNIGHT: 'Protector of the Greenpath, trained in the ways of the Nail and the Shell.', + NOTE_MAGE: + 'I have heard others talk about 'soul' but I do not understand what it actually is. I do know that freshly killed meat tastes best - is that because the 'soul' still clings to it?', + DESC_HOLLOW_KNIGHT: 'Fully grown Vessel, carrying the plague's heart within its body.', + DESC_MIMIC_SPIDER: 'Mimics the shape of other creatures to lure prey to its lair.', + NAME_COL_MINER: 'Sturdy Fool', + NOTE_MEGA_BEAM_MINER: + 'How does the world look to this creature, gazing out from within its crystal prison? Does it see only light? Is that what drives it into a frenzy?', + DESC_TRAITOR_LORD: 'Deposed Lord of the Mantis tribe. Embraced the infection and turned against his sisters.', + NAME_ACID_WALKER: 'Durandoo', + NAME_ZOTE: 'Zote', + NAME_VOID_IDOL_1: 'Void Idol', + NOTE_GREY_PRINCE: + '"My love, any creature who could bear to be away from you, who would willingly leave you behind or say unkind things to you... Pah! Lowly maggots, not worthy of standing in your glorious shadow!"<br>She felt her cold body grow warm, a sensation she had almost forgotten...<br>- 'The Grey Prince' Chapter 112', + NAME_ABYSS_CRAWLER: 'Shadow Creeper', + DESC_HATCHLING: 'Recently birthed, these young aspid instinctively swarm around intruders.', + NAME_BIGFLY: 'Gruz Mother', + NAME_MOSSMAN_RUNNER: 'Mosskin', + NAME_GHOST_ALADAR: 'Gorb', + DESC_BABY_CENTIPEDE: + 'Swarming predator of the Deepnest. Burrows through the ground and bursts out to surprise prey.', + NOTE_HOPPER: + 'This hopping thief's belly is full of the blood it has stolen from other beasts. If you hold it above a fire, the belly will grow and grow until it explodes in a steaming shower of fluids.', + NOTE_KIN_SEAL: '', + NOTE_HATCHER: + 'Shamelessly uses its own young as a weapon against its foes! Appalling, yes, but I do admire its resourcefulness. Good hunters do not always make good parents. ', + NOTE_MOSS_WALKER: + 'I used to think these things were merely ambling plants. When I learned they were actually living creatures, I began to kill them on sight. This is the nature of the Hunt!', + NOTE_BIG_BEE: + 'Like their smaller kin, their only instinct is to protect the Hive at any cost to themselves. Somewhat clumsy, they'll often damage the structure of the Hive when charging at intruders. Does this cause them shame? I do not know whether they have the capacity for such a thing.', + DESC_BURSTING_BOUNCER: 'Gruzzer swollen with infection and primed to burst.', + NAME_PALACE_FLY: 'Wingmould', + NOTE_GHOST_MARKOTH: 'May your efforts lead you somewhere worthy.<br>- Markoth', + DESC_VOID_IDOL_3: + 'Rare artifact from a time before Hallownest, its spires twined in a unified form.Contains a large amount of liquid from the Abyss, perfectly still.', + NOTE_COL_FLYINGSENTRY: + 'What do they hope for, these warriors fighting in the Colosseum? Are they slaves, or prisoners, or do they freely choose to fight?', + NOTE_FLAMEBEARER_MED: + '"A spark of red lights darkest dream,<br>Scarlet nightmares bright and wild,<br>Visions dance and flames do speak,<br>Burn the father, feed the child."<br>- 'The Grimm Troupe'', + NOTE_GODSEEKER_MASK: + '"Gods of Thunder, Gods of Rain! Why forsake thy servants? Will Our minds be left suffering, to ache alone? What God remains to deliver Us from this woeful silence?"<br>- Lament of the Godseekers', + NAME_ZOM_HIVE: 'Husk Hive', + NAME_MANTIS_FLYER_CHILD: 'Mantis Youth', + NOTE_SENTRY_FLYING: + 'Dances through the air just out of reach until it spots an opening, then swoops in for a decisive strike. If you're confident, wait for it to come to you then counter-attack.', + NAME_VOID_IDOL_3: 'Void Idol', + NOTE_LOBSTER_LANCER: + 'Some hunters train beasts to join them in chasing down prey. I tried it once, but couldn't resist the urge to test my companion's strength against mine.', + NAME_ZOTE_HOPPER: 'Hopping Zoteling', + NAME_ROLLER: 'Baldur', + NAME_PIGEON: 'Maskfly', + NAME_MEGA_MOSS_CHARGER: 'Massive Moss Charger', + NAME_KIN_SEAL: 'Seal of Binding', + NOTE_FLAMEBEARER_SMALL: + '"Shadows dream of endless fire,<br>Flames devour and embers swoop,<br>One will light the Nightmare Lantern,<br>Call and serve in Grimm's dread Troupe."<br>- 'The Grimm Troupe'', + NOTE_NAILMASTERS: + '"Gods by toil and nail bound,<br>Brothers sworn to guard the weak,<br>Masters of the sacred ground,<br>Help Us find the God We seek!"<br>- Prayer to the Masters', + NAME_JAR_COLLECTOR: 'The Collector', + NOTE_VOID_IDOL_3: + '"Inspired or mad, those ancient bugs. They devoted their worship to no lord, or power, or strength, but to the very darkness itself."<br>- Lemm', + NOTE_ZOM_LEAPER: + 'The bugs of old Hallownest did not hunt their own food, they had it brought to them. That's why they were so weak. That's why their kingdom crumbled into dust and faded away!', + DESC_ZOM_ROYAL_1: 'Former member of Hallownest's high society. Limited offensive ability.', + NAME_FAT_FLUKE: 'Flukemunga', + NOTE_MANTIS_FLYER_ADULT: + 'They will harass you from afar, so get close and strike quickly. Their bodies are brittle and will easily fall to your nail.', + NOTE_SENTRY_FAT: + 'Surprisingly quick-witted for a corpse. It will try to catch you if you leap over it and can chase you if you flee. Enjoyable to hunt, but beware them in packs.', + NAME_GHOST_MARKOTH: 'Markoth', + DESC_BIG_BEE: 'Protects the Hive by hurling its huge body at intruders. ', + NOTE_MOSS_FLYER: + 'They spend their whole lives hiding or fleeing. How sad. Or, perhaps that is the life they choose for themselves and they enjoy it? It's a strange thought, but not impossible.', + DESC_NAILMASTERS: 'Brothers of the nail, trained in combat by the Great Nailsage.', + NAME_ZOM_RUNNER: 'Wandering Husk', + NOTE_ZOM_BEAM_MINER: + 'There is some strange power hidden in the crystals that grow up there in the peaks. They gleam and glow in the darkness, a bright point of searing heat in each one. They sing too, if you listen. Very softly...', + DESC_EGG_SAC: 'Placid but putrid creature. Holds rancid eggs within its gut.', + DESC_CLIMBER: 'Uses its small, sharp claws to climb along walls and rooves.', + NOTE_MAGEBLOB: + 'These fools meddled with the soul of other creatures and lost their shape. Now they skulk through the shadows of their Sanctum like slugs, hoping their old brothers will build them new bodies.', + NOTE_PALE_LURKER: + 'This odd creature is unaffected by and unaware of the disease drifting through the caverns. Its madness is all its own.', + DESC_COL_HOPPER: 'Loodle equipped with a helmet and taught to kill.', + NOTE_BUZZER: + 'This fierce little hunter will bravely chase down creatures many times its size. Admirable! It is weak though, and I have devoured hundreds of them with little effort or care.', + NOTE_MOSSMAN_SHAKER: + 'The gas that seeps from their growths smells invitingly sweet, but it will burn through shell and flesh if you get too close!', + DESC_MUSH_BRAWLER: 'Huge fungal creature. Attacks by spitting corrosive venom and slamming its body into foes.', + NAME_GRIMM: 'Grimm', + NOTE_HORNET: + 'I have seen this nimble little creature. I thought her prey and pounced at her, but with a flash she stabbed me with her flying stinger and darted away. Could she be... a Hunter?', + NOTE_HOLLOW_SHADE: + 'Each of us leaves an imprint of something when we die. A stain on the world. I don't know how much longer this kingdom can bear the weight of so many past lives...', + NOTE_BEE_HATCHLING: + 'Weak, but hard-working and numerous. Their hairy little bodies are filled with a thick, sweet, golden liquid. Good to keep a few on you for long hunts.', + NAME_GREAT_SHIELD_ZOMBIE: 'Great Husk Sentry', + NOTE_JELLYFISH: + 'Ghastly, eerie creature made out of thick liquid. You can peer right through them, and can't see where they keep their thoughts. I don't trust them at all. Keep away.', + NAME_BIGBUZZER: 'Vengefly King', + DESC_FLAMEBEARER_MED: + 'Powerful and devoted member of the Grimm Troupe. As part of the Ritual, it gathers scarlet flame within its torch. It will relinquish the flame once defeated.', + NAME_MOSS_FLYER: 'Mossfly', + DESC_ZOM_SHIELD: 'The remains of a bug, animated by a strange force. Wields a nail and shell.', + NAME_TRAITOR_LORD: 'Traitor Lord', + NOTE_WHITE_ROYAL: + 'Simple, weak creatures find strength by forming a hive and obeying a ruler. Such creatures become the arms and teeth and claws of their monarch.', + NOTE_GRIMM: + '"Through dream I travel, at lantern's call,<br>To consume the flames of a kingdom's fall."<br>- Grimm', + NOTE_MUSH_TURRET: + 'If you're skillful, you can lead their spores back to them and watch them perish in a destruction of their own making. There is a lesson in that, I think.', + DESC_MOSS_CHARGER: 'Timid creature that frightens away intruders by covering itself in huge clumps of moss.', + NOTE_MOSSMAN_RUNNER: + 'They can be hard to spot amongst the foliage until you get too close and they suddenly come charging at you. Tread carefully.', + NAME_HOLLOW_SHADE: 'Shade', + NOTE_ZOM_SPINE: + 'The spines they fire seem to be mildly poisonous. Don't use them to clean between your fangs after eating!', + NOTE_VOID_IDOL_1: + '"Inspired or mad, those ancient bugs. They devoted their worship to no lord, or power, or strength, but to the very darkness itself."<br>- Lemm', + NAME_MAWLEK: 'Brooding Mawlek', + DESC_SIBLING: 'Fragment of a lingering will.', + DESC_MAWLEK_TURRET: 'Large, immobile creature. Wildly spits venom when intruders pass by.', + DESC_COL_ROLLER: + 'Hardened baldur, bred for battle in the Colosseum of Fools. Tougher and more aggressive than its wild ancestor.', + NAME_HEALTH_SCUTTLER: 'Lifeseed', + NAME_MUSH_TURRET: 'Sporg', + NAME_ZOTE_BALLOON: 'Volatile Zoteling', + NAME_MOSQUITO: 'Squit', + DESC_GRIMM: 'Master of the Grimm Troupe.', + NAME_LESSER_MAWLEK: 'Lesser Mawlek', + NAME_MAGE_LORD: 'Soul Master', + NAME_PRAYER_SLUG: 'Maggot', + NAME_FLAMEBEARER_SMALL: 'Grimmkin Novice', + NAME_INFECTED_KNIGHT: 'Broken Vessel', + NOTE_COL_MINER: + 'You can hit this warrior's spinning weapons out of the air, straight back into them! Useful if they manage to corner you.', + NAME_PALE_LURKER: 'Pale Lurker', + NAME_MENDERBUG: 'Menderbug', + NAME_LOBSTER_LANCER: 'God Tamer', + DESC_MANTIS_LORD: + 'Leaders of the Mantis tribe and its finest warriors. They bear thin nail-lances and attack with blinding speed.', + DESC_SLASH_SPIDER: + 'Worshippers of Herrah the Beast. Shield themselves with hard plated foreclaws, then lash out suddenly to cut down prey. ', + NAME_ANGRY_BUZZER: 'Furious Vengefly', + NOTE_MUSH_BABY: + 'Looks like an ordinary mushroom until you get close, then it pops out of the ground and starts scurrying around blindly. Very, very amusing.', + KILL_COUNT_1: 'Defeat', + NOTE_MOSS_CHARGER: + 'It's small, but it finds a lot of courage and strength once it covers itself in foliage. And I can understand the desire to camouflage oneself...', + NAME_HORNET: 'Hornet', + NAME_ELEC_MAGE: 'Volt Twister', + NOTE_GRUB_MIMIC: + 'Luring an enemy close by pretending to be a weak little grub. Very cunning! Unfortunately for them, I eat these grubs as soon as I see them.', + NOTE_GIANT_HOPPER: + 'A worthy foe, surprisngly nimble for its size. Either keep your distance, or try to dance between its hops and strike at its legs.', + NAME_BLOCKER: 'Elder Baldur', + DESC_HIVE_KNIGHT: 'Loyal protector of the Hive's Queen. Flightless but ferocious in battle.', + NOTE_PALACE_FLY: + 'The bugs of Hallownest believed that their King created this world and everything in it. For what purpose, I wonder? Were his subjects companions, or toys, or children? Such a mind seems unknowable.', + NAME_FUNG_CRAWLER: 'Ambloom', + DESC_ZAP_BUG: 'When threatened they cluster together, generating electricity.', + DESC_MANTIS_FLYER_CHILD: + 'Member of a proud tribe, fiercely protective of its territory. Launches stinging attacks with its needle sharp abdomen.', + DESC_FLUKE_MOTHER: + 'An insatiable breeder. Has populated the Waterways with its kind. Its insides double as a nest for young Flukefeys.', + DESC_GIANT_HOPPER: 'Leaps around the edge of the world, trying to crush prey beneath its body.', + NAME_ORANGE_BALLOON: 'Infected Balloon', + NAME_FLUKE_MOTHER: 'Flukemarm', + DESC_ZOM_ROYAL_2: + 'Former member of Hallownest's high society. Although made aggressive by the force inside, old instincts still occasionally compel it to run from danger.', + DESC_MAGEBLOB: 'Once a highly intelligent bug, deformed by the misuse of soul.', + DESC_MUSH_ROLLER: 'Fungal creature that attacks intruders to protect its young.', + NOTE_COL_MOSQUITO: 'Strong and quick! When they rear back, either move out of the way or prepare to strike back!', + DESC_CRYS_FLYER: 'Fires shards of fast-growing crystal at intruders.', + NOTE_MINI_SPIDER: + 'The Deepnest is a dangerous place to hunt, but rewarding. Keep an eye out for weaker creatures you can pick off and eat. Keep your strength up in the darkness.', + NAME_COL_MOSQUITO: 'Armoured Squit', + DESC_MANTIS: + 'Member of a proud tribe, fiercely protective of its territory. Launches savage attacks with bladed forelimbs.', + NOTE_FUNG_CRAWLER: 'Lie on your belly, open your maw and let this tasty morsel stroll straight into your stomach.', + NAME_COL_SHIELD: 'Shielded Fool', + NOTE_BIG_CENTIPEDE: + 'Monstrously strong, they shrug off any attacks you make on their thickly armoured bodies. Luckily, if you simply avoid their paths they'll leave you alone.', + NAME_FLIP_HOPPER: 'Pilflip', + NAME_SNAPPER_TRAP: 'Fool Eater', + NAME_MAGE: 'Soul Twister', + NAME_ACID_FLYER: 'Duranda', + NOTE_GHOST_NOEYES: + 'They're coming...<br>What's inside of you...<br>Strip it out!<br>- No Eyes', + NOTE_ZOM_HORNHEAD: + 'These bugs have an arrogant air about them, even after dying. Overly proud of their long horns! I enjoy snapping them off.', + NAME_ZOM_MINER: 'Husk Miner', + NAME_NAILMASTERS: 'Nailmasters Oro & Mato', + NOTE_MANTIS_FLYER_CHILD: + 'As it grows, it loses the ability to fly. Passage into adulthood is often celebrated, but as time goes by we realise what we have lost.', + NAME_BEE_HATCHLING: 'Hiveling', + NAME_ZOM_BURSTING: 'Violent Husk', + NAME_CRYS_FLYER: 'Crystal Hunter', + NAME_MUMMY: 'Entombed Husk', + DESC_SPITTING_SPIDER: 'Crawls along walls and roofs, spitting burning venom at anything that passes by.', + DESC_FAT_FLUKE: 'Aged fluke, grown fat on the rich refuse found in the pipes below the capital.', + NOTE_ZOM_ROYAL_1: + 'It seems the weakest, greediest members of Hallownest were also the ones who exerted the most influence. Truly a Kingdom that was always destined for ruin.', + NAME_GHOST_GALIEN: 'Galien', + NAME_MANTIS: 'Mantis Warrior', + DESC_GODSEEKER_MASK: + 'Strange mask from a godless land, passed down over time. The design suggests the wearer's thoughts were focused through the crest.', + DESC_ABYSS_TENDRIL: 'Fragments of void taking the shape of sharp, thrashing tendrils.', + NOTE_WHITE_DEFENDER: + '"The Champion's Call, the Knotted Grove, the Battle of the Blackwyrm... I remember it all. I will carry those glories with me always... until we meet again."<br>- Ogrim of the Five Knights', + DESC_ZOM_HORNHEAD: + 'The remains of a bug, animated by a strange force. Uses its horn to attack any uninfected creature it finds.', + NOTE_BLOCKER: + 'As they age, these creatures become too heavy and lumpy to roll around freely. Instead, they curl up and hide from the world. What do they think of in there, wrapped up inside of themselves? More carefree times perhaps.', + NOTE_HOLLOW_KNIGHT: + 'The old King of Hallownest... he must have been desperate to save his crumbling little world. The sacrifices he imposed on others... all for nothing.', + NOTE_MAGE_KNIGHT: + 'Where these strange warriors go, whispers follow them. Not only are they skilled with a nail, they can also use some strange power to shift suddenly from place to place. Stay on guard.', + NAME_MOSS_CHARGER: 'Moss Charger', + DESC_BEE_HATCHLING: 'Smallest of the Hive's inhabitants. Carries out simple tasks.', + NOTE_ZOM_GUARD: + 'Larger and stronger than their brothers, these bugs are still forced to steal their weapons from the remains of other creatures. They do not roam or hunt, forever standing guard and lashing out at anything that wanders near.', + DESC_PALACE_FLY: 'A fly-like construct formed of white shell and a dark liquid interior.', + DESC_BIGBUZZER: + 'Patriarch of a vengefly colony. Swoops at intruders and cries out for reinforcements if threatened.', + NOTE_FLUKEFLY: + 'Seems to want to latch onto any living thing that comes by with its sharp little teeth. It will leave its cousins alone though, so it isn't completely mindless.', + NOTE_INFLATOR: 'Extremely amusing creature.', + NOTE_CRAWLER: 'Dull and pathetic. Hardly worth killing.', + NOTE_LESSER_MAWLEK: + 'If you try to keep your distance it will spit sticky, burning globs of vile stomach juice. Move in quickly and strike decisively.', + NOTE_MOSS_KNIGHT_FAT: + 'Slow, fat and easily vanquished; common threads in those who forget their calling and forsake their duties.', + NAME_BIG_BEE: 'Hive Guardian', + DESC_WHITE_ROYAL: 'The most loyal and devout servants of the King.', + NAME_MANTIS_FLYER_ADULT: 'Mantis Petra', + NAME_HIVE_KNIGHT: 'Hive Knight', + NOTE_FUNG_ZOMBIE: + 'The bugs of Hallownest are so pathetic that being infected by poisonous fungi actually increases their chances of survival! They really are absurd creatures.', + NOTE_TRAITOR_LORD: + 'I have felt that desire. The desire to take the infection into myself. To become stronger, more powerful... these thoughts haunt my dreams during the darkest times. A false hope, but it can burn so brilliantly in one's mind.', + NAME_MOSS_KNIGHT: 'Moss Knight', + NOTE_COL_WORM: + 'Large, bulky, and fighting for its life. Don't underestimate this fighter! It can slither around quickly despite its bulk. It also has a surprisingly beautiful face beneath its mask.', + DESC_MAGE_BALLOON: 'Once a highly intelligent bug, inflated by misuse of soul.', + NOTE_ZOTE: + 'Some rare creatures are so weak, so helpless, so inept and so irritating that hunting them gives no pleasure.', + DESC_GHOST_NOEYES: 'Lingering dream of a fallen warrior. Disappeared during the plague.', + NAME_ABYSS_TENDRIL: 'Void Tendrils', + DESC_MINI_SPIDER: 'Infant of the Deepnest. Scuttles about in the darkness, learning the layout of its home.', + DESC_LOBSTER_LANCER: 'Veteran warrior of the Colosseum of Fools. Fights by the side of creatures she has trained.', + NAME_CENTIPEDE_HATCHER: 'Carver Hatcher', + DESC_MINES_CRAWLER: 'Feeds on crystal dust and uses crystallised spines to protect itself from danger.', + NOTE_MAGE_BALLOON: + 'I've heard whispers that the secret these fools were searching for was immortality. To live forever... I've never heard of anything so obscene!', + DESC_HORNET: 'Skilled protector of Hallownest's ruins. Wields a needle and thread.', + NOTE_VOID_IDOL_2: + '"Inspired or mad, those ancient bugs. They devoted their worship to no lord, or power, or strength, but to the very darkness itself."<br>- Lemm', + NAME_SPIDER_FLYER: 'Little Weaver', + DESC_HOPPER: 'Leaps at prey and uses its sharp proboscis to drain vital fluids.', + NOTE_SLASH_SPIDER: + 'Powerful, well-armoured and fast, these are no mere beasts. Study their movements and watch carefully for an opening.', + NOTE_PIGEON: + 'They all keep lookout for danger and when one flies away the rest do as well. I wonder how it feels to have the protection of a pack?', + NAME_WHITE_DEFENDER: 'White Defender', + NAME_ZOM_SPITTING: 'Slobbering Husk', + DESC_CENTIPEDE_HATCHER: 'Flying creature that fires out dirtcarvers from its body when potential prey comes close.', + DESC_COL_MOSQUITO: + 'Hardened squit, bred for battle in the Colosseum of Fools. Tougher and more aggressive than its wild ancestor.', + DESC_SUPER_SPITTER: + 'Wilder, ancestral form of the Aspid. Once thought extinct, they have reappeared at the edges of the world.', + NAME_SUPER_SPITTER: 'Primal Aspid', + NOTE_FLIP_HOPPER: + 'Adaptability is an important survival skill. If a problem seems insurmountable, try approaching it from a different angle.', + NOTE_COL_HOPPER: + 'They seem fierce, but they have a lot of difficulty aiming at their target. Watch their motions and strike when the opportunity comes. Take their helmet with you as a trophy.', + DESC_SENTRY_FLYING: + 'Flying sentry of Hallownest. Patrols the heights of the vast cavern in which the city was built.', + NAME_ZAP_BUG: 'Charged Lumafly', + NAME_BURSTING_BOUNCER: 'Volatile Gruzzer', + NOTE_BLOBBLE: 'They have crafted a tiny mask for it! Is such an extravagance practical I wonder?', + NOTE_MANTIS_HEAVY: + 'Belonging to a tribe, or not belonging. I don't really understand what the difference is, or how it works. I have no tribe of my own.', + NAME_FUNGOON_BABY: 'Fungling', + NOTE_FLAMEBEARER_LARGE: + '"Dance and die and live forever,<br>Silent voices shout and sing,<br>Stand before the Troupe's dark heart,<br>Burn away the Nightmare King."<br>- 'The Grimm Troupe'', + NAME_SIBLING: 'Sibling', + DESC_ACID_FLYER: 'Simple flying creature protected by a spikey shell.', + DESC_MANTIS_HEAVY: 'Once a member of the Mantis tribe, now cast out and driven mad by infection.', + DESC_MOSS_FLYER: + 'Winged weakling that covers itself in leaves to appear larger. Hides amongst the undergrowth, fleeing if predators draw near.', + DESC_PAINTMASTER: 'Skilled and respected master of the nail. Always eager to learn new things.', + NOTE_SENTRY_FLYING_JAVELIN: + 'This devious foe will often keep its distance and try to pick you off with its thrown weapons. When it charges at you, leap up and strike it down. ', + NAME_MUSH_BABY: 'Shrumeling', + DESC_PALE_LURKER: 'Forgotten champion of the Colosseum, drawn away by strange obsessions.', + NAME_HATCHLING: 'Aspid Hatchling', + NAME_BOUNCER: 'Gruzzer', + DESC_ZOM_BARGER: + 'The remains of a bug, animated by a strange force. It aggressively attacks any uninfected creature it finds.', + NAME_BIG_CENTIPEDE: 'Garpede', + NAME_SENTRY_FAT: 'Heavy Sentry', + NOTE_ZOM_RUNNER: + 'These "civilised" bugs of Hallownest were weak in life and now they are equally weak in death. Send them back into the dirt they were born in!', + DESC_MANTIS_FLYER_ADULT: 'Lurks amongst foliage and attacks by flinging wind-scythes from a distance.', + DESC_GRASS_HOPPER: + 'Inhabits the wilds beside the Queen's Gardens. Not aggressive in nature, but its wild bouncing behaviour can be dangerous.', + NAME_MEGA_JELLYFISH: 'Uumuu', + NAME_MANTIS_LORD: 'Mantis Lords', + DESC_WORM: 'Thickly armoured, it bursts from the ground to seize prey in its fangs.', + NOTE_BLOB_FLYER: + 'Does it realise what a nuisance it is? Drifting around, spilling its noxious juices everywhere it goes? If you see any, make sure to kill them.', + DESC_ZOM_SPINE: 'Overgrown with vegetation, it attacks by firing sharp spines from its body.', + NOTE_HATCHLING: + 'These hatchlings are born with an instinct to kill! They are still only infants though, and you can crush them between your fangs without thinking. Just don't let them overwhelm you with numbers.', + NOTE_MEGA_MOSS_CHARGER: + 'There is strength in numbers, yes, but these creatures never had much strength to begin with. Cut through their trickery!', + NOTE_MOSS_KNIGHT: + 'They hide as bush-like mounds and look soft, but beware these warriors! They are relentless in combat, fiercely guarding something hidden deep in the Greenpath.', + NOTE_BIGBUZZER: + 'A filthy creature that is happy to chew on any old thing it finds discarded on the cavern floor. When it notices a threat it will annoyingly scream and shriek, so kill it swiftly.', + NAME_MAGE_KNIGHT: 'Soul Warrior', + NOTE_NIGHTMARE_GRIMM: + '"The expanse of dream in past was split,<br>One realm now must stay apart,<br>Darkest reaches, beating red,<br>Terror of sleep. The Nightmare's Heart."<br>- Seer', + DESC_VOID_IDOL_1: 'Rare artifact from a time before Hallownest. Contains a drop of liquid from the Abyss.', + NOTE_ZOM_SPIDER: + 'The beasts of this land have found plenty of ingenious hiding places, but none so clever as the body of another creature! If you happen on such a beast, rejoice! You've hunted two creatures at once!', + DESC_FUNGOON_BABY: 'Passive fungal balloon. Internal gasses cause it to float.', + DESC_MUSH_TURRET: 'Detects nearby movement and fires out explosive spores that drift towards their target.', + NAME_ZOM_ROYAL_2: 'Cowardly Husk', + NOTE_HIVE_KNIGHT: + 'Some creatures are born with duties and loyalties marked indelibly upon their minds. They are strong, but they are also slaves.', + NOTE_CEILING_DROPPER: + 'An angry creature with no regard for its own life. A creature without fear... can it truly be called "prey"?', + DESC_MAGE_KNIGHT: 'Learned bug, wielding a refined pinblade. Enhances its combat prowess with harvested soul.', + NAME_BABY_CENTIPEDE: 'Dirtcarver', + NAME_BIG_FAT_FLYER: 'Boofly', + NOTE_BEE: + 'Savage and dedicated warriors. Be prepared to fight them to the death if you plan on invading their home.', + NOTE_BABY_CENTIPEDE: + 'Springy and vicious, these hunters will try to overwhelm you with numbers in the dark, tight, twisting caverns they carve through the ground. Always be on your guard!', + NOTE_LAZY_FLYER: + 'What careless a life led drifting above us all. If one ever comes too close to the ground though...', + DESC_JELLYFISH: 'Passive outer being protecting an aggressive, explosive core.', + DESC_BLACK_KNIGHT: 'Discarded shell of a Watcher Knight, re-animated by a swarm of infected flies.', + DESC_PARASITE_BLOB: 'A single-celled organism, completely infected. Scurries about simple-mindedly.', + DESC_BIG_FAT_FLYER: 'Large, docile creature that peacefully buzzes around in the caverns of Kingdom's Edge.', + NOTE_PLANT_SHOOTER: + 'Its leaves are dry and bland. The bud is unpleasantly sour, but oh! The venom in those balls it spits. Exquisite! If you have the time to spare, try drinking some and enjoy the effects.', + NAME_GODSEEKER_MASK: 'Weathered Mask', + NOTE_COL_SHIELD: + 'That 'Colosseum' is a strange place where some bugs fight each other to the death and others watch. I don't understand such obscure rituals. If you venture in, stay on guard at all times.', + DESC_CRYS_LAZER_BUG: + 'Discharges searing beams of light from the crystals on its back as it crawls around, seemingly unaware.', + NOTE_SUPER_SPITTER: + 'These cruel foes will ambush you and relentlessly attack with their searing venom. How strange that their descendants are so weak. If I have children, I hope they will be stronger than me...', + NAME_WORM: 'Goam', + NAME_MEGA_BEAM_MINER: 'Crystal Guardian', + NAME_PLANT_SHOOTER: 'Gulka', + NAME_PAINTMASTER: 'Paintmaster Sheo', + DESC_ORANGE_BALLOON: 'Single cell of infection. Has a simple mind and can float using internal gasses.', + NOTE_ZOTE_BALLOON: + 'The Grey Prince was a wanderer by nature, but she could not bear to be separated from him. So she devised a plan to make sure that she and her prince would be together always. She only had to wait for her chance.<br>- 'The Grey Prince' Chapter 205', + NAME_CRYS_LAZER_BUG: 'Crystal Crawler', + NOTIFICATION_HALF: 'New Journal Entry', + NOTE_MUMMY: + 'Inside these shambling corpses is a bright light that pierces any darkness. I peered inside that light once and saw... something within it shining back. Something terrible.', + KILL_COUNT_2: 'more to decipher the Hunter's notes.', + DESC_SENTRY_1: 'Animated remains of a Hallownest Sentry. Still retains some memory of its former task.', + NOTE_FAT_FLUKE: + 'When predators are too successful the surplus food they eat becomes soft bulk wrapped around their bodies. Still, these creatures at least seem to make good use of their additional weight.', + DESC_JELLY_CRAWLER: 'Smallest Jelly form. Passive and unaware, but pulsing with a dangerous electric charge.', + NOTE_ELEC_MAGE: + 'Supposedly lives on a diet of lumaflies and spends its entire life fighting in the arena or meditating in seclusion. An odd foe.', + NOTE_SNAPPER_TRAP: 'You really would have to be a fool to be tricked by a plant.', + DESC_MOSS_WALKER: 'Weakling that covers itself in leaves to appear larger. Hides amongst the undergrowth.', + NAME_MOSS_WALKER: 'Mosscreep', + NAME_FUNGOON: 'Fungoon', + NAME_FALSEKNIGHT: 'False Knight', + DESC_GHOST_GALIEN: + 'Lingering dream of a fallen warrior. Trained in the wilds bordering the kingdom, hoping to become a Knight.', + NAME_SENTRY_FLYING_JAVELIN: 'Lance Sentry', + DESC_SAGE_SLY: 'Legendary sage of the nail arts and, recently, merchant of some success.', + DESC_ZOM_SPIDER: 'Parasitic beast that controls the body of its host after the host's death.', + DESC_MAGE: 'Highly intelligent bug that uses arcane knowledge to twist soul into vicious spells.', + NOTE_SPIDER_FLYER: + 'They can appear from the darkness at any moment! They seem to fly through the air, dancing on invisible strings as they silently stalk prey.', + NOTE_COL_ROLLER: + 'These creatures... I have never seen one fully grown. I suppose they aren't allowed to live long enough to become adults.', + NAME_ZOM_SPINE: 'Spiny Husk', + NAME_ZOM_SPIDER: 'Corpse Creeper', + NAME_COL_ROLLER: 'Sharp Baldur', + NOTE_PRAYER_SLUG: + 'Consisting mainly of sweet fat, these helpless creatures make excellent provisions for long journeys. Best roasted over open flame. If they try to bargain for their life, just ignore them. They have nothing to offer.', + DESC_NIGHTMARE_GRIMM: 'Twisted spectre of scarlet flame.', + DESC_CEILING_DROPPER: 'Thin wings hide a highly volatile belly. Will give its own life to protect its territory.', + DESC_SNAPPER_TRAP: 'Carnivorous plant that snaps at any creature that comes close.', + DESC_ZOTE_BALLOON: 'Figment of an obsessed mind. Deals poorly with the pressure of existing and quickly explodes.', + NOTE_CLIMBER: + 'Spends its time tap-tap-tapping its way through the roads and caverns near the surface of this kingdom. If you're patient, you can wait for it to come to you and pick it off.', + DESC_FLAMEBEARER_LARGE: + 'Terrifying member of the Grimm Troupe. As part of the Ritual, it gathers scarlet flame within its torch. It will relinquish the flame once defeated.', + DESC_ABYSS_CRAWLER: 'Found only in deep, dark places. Has never been observed to eat or drink anything.', + NAME_BLOB_FLYER: 'Obble', + DESC_LESSER_MAWLEK: 'Attacks by spitting acid and slashing with foreclaws. ', + DESC_BLOBBLE: + 'Raised in the Colosseum. Although trained for combat, its movements and attacks are still haphazard.', + NOTE_BIG_FAT_FLYER: + 'Too slow to escape you and too large to hide from you. This prey will not challenge you, but sometimes it is good to take things easy.', + DESC_ZOM_LEAPER: + 'The remains of a bug, animated by a strange force. It will instinctively leap at uninfected creatures to attack them.', + NAME_ZOTE_FLYER: 'Winged Zoteling', + NOTE_ACID_FLYER: + 'Thinks itself fully protected and so is unconcerned by passers by. Attack its face, and teach it that nothing is ever safe.', + DESC_ANGRY_BUZZER: 'Vengefly whose body has been distorted by continued infection. Highly aggressive.', + NAME_FLAMEBEARER_MED: 'Grimmkin Master', + DESC_FUNG_CRAWLER: 'Simple-minded crawling fungus. Its cap is covered in a layer of hardened spikes. ', + NAME_ZOM_GUARD: 'Husk Guard', + NAME_HATCHER: 'Aspid Mother', + DESC_HATCHER: + 'Carries the eggs of its young inside its belly. Can hatch and birth its young as needed to deal with intruders.', + DESC_FALSEKNIGHT: 'A maggot driven mad by a strange force. Inhabits a stolen armoured shell.', + NOTE_SIBLING: + 'Far down below us, beneath the kingdom, the air grows stiller and a sense of emptiness pervades. Can life flourish down there? If so, I will hunt it.', + NAME_GHOST_MARMU: 'Marmu', + NAME_MUSH_BRAWLER: 'Shrumal Ogre', + NAME_FLAMEBEARER_LARGE: 'Grimmkin Nightmare', + NAME_GHOST_NOEYES: 'No Eyes', + NAME_MINES_CRAWLER: 'Shardmite', + NOTE_INFECTED_KNIGHT: + 'The shape of this creature... I have seen something like it before. More than once, perhaps. It looks a little like the bugs of Hallownest, but not quite the same. Where did these empty little wanderers come from?', + NAME_ZOM_ROYAL_FAT: 'Gluttonous Husk', + DESC_GORGEOUS_HUSK: 'Corpulent Husk encrusted with a shining metal. Retains the instinct to hoard Geo.', + DESC_VOID_IDOL_2: 'Rare artifact from a time before Hallownest. Volatile liquid of the Abyss writhes within.', + NOTE_GREAT_SHIELD_ZOMBIE: + 'An extremely rare thing, a bug of Hallownest that actually poses a threat. Watch them carefully, as they can lash out quickly with devastating strikes.', + NAME_ZOM_LEAPER: 'Leaping Husk', + DESC_FLIP_HOPPER: + 'Odd creature that adapts to changing situations by flipping over and using the limbs on the other side of its body.', + DESC_PLANT_SHOOTER: + 'Aggressive plant-life that retracts protectively when danger is near. Spits hard spikey balls when foes are at a distance.', + DESC_MOSQUITO: 'Charges at prey with its needle-like proboscis.', + NAME_COL_FLYINGSENTRY: 'Winged Fool', + NOTE_FLUKEMAN: + 'Dangerous, unpredictable foes that infest the pipes below Hallownest's capital. Even when it seems you've killed them, you need to stay on guard.', + NOTE_FLUKE_MOTHER: + 'The desire to breed, to leave behind a memory of ourselves in the shape of a child... it seems to be etched deep into the heart of every living creature. I too have felt the pull of that base instinct.', + DESC_ZOTE_FLYER: + 'Figment of an obsessed mind. Grudgingly assists its master in combat by lazily flying towards foes.', + DESC_INFECTED_KNIGHT: 'Shattered corpse, reanimated by infected parasites.', + DESC_ACID_WALKER: + 'Simple walking creature encased in a hard shell. Often found wading in shallow pools of acidic water. ', + DESC_ZOM_RUNNER: 'The remains of a bug, animated by a strange force. Wanders the roads where it once lived.', + NAME_HOPPER: 'Hopper', + DESC_SPIDER_FLYER: 'Nimble spider that traverses its domain on thin strands of web. Often waits in ambush.', + DESC_ZOM_HIVE: 'Cowardly husk, its body colonised by hivelings. ', + NOTE_ZOM_BURSTING: + 'The bugs of Hallownest were twisted out of shape by that ancient sickness. First they fell into deep slumber, then they awoke with broken minds, and then their bodies started to deform...', + NOTIFICATION_FULL: 'Journal Updated', + NAME_GRUB_MIMIC: 'Grub Mimic', + NOTE_MOSQUITO: 'When they lunge at you, don't panic. Stand your ground, and strike back as they come close.', + NOTE_GHOST_HU: 'Never forget what once was lost, yet do not let it tie you down.<br>- Elder Hu', + NOTE_GHOST_GALIEN: + 'A Knight strives not only to protect the land and its people, but the hopes and dreams of the kingdom.<br>- Galien', + NAME_COL_WORM: 'Heavy Fool', + NAME_GREY_PRINCE: 'Grey Prince Zote', + NOTE_GRASS_HOPPER: 'It seems like their energy is limitless! Do they ever stop to sleep, or eat, or love?', + NOTE_MUSH_BRAWLER: + 'Are these hulking things beasts or are they mushrooms? I cut one in half and peered inside to find out, but could find no answers in its soft, stinking insides.', + DESC_PURE_VESSEL: 'Chosen vessel, raised and trained to prime form.', + DESC_CRAWLER: 'Timid scavenger that crawls through the caverns looking for food.', + NAME_HUNTERMARK: 'Hunter's Mark', + DESC_BLOCKER: 'Bulky and covered in thick plating. Retracts into itself when attacked.', + NOTE_GHOST_ALADAR: 'I am Gorb!<br>- Gorb', + NAME_MAGE_BALLOON: 'Folly', + NOTE_DUNG_DEFENDER: + 'Fighting for 'honour', or for 'loyalty'... you may as well be fighting for dust. If you want to kill, do it for your own sake. That is the nature of a true Hunter.', + NAME_CLIMBER: 'Tiktik', + DESC_COL_WORM: 'Warrior fighting for glory in the Colosseum of Fools. Aggressively charges down foes.', + NAME_BUZZER: 'Vengefly', + DESC_COL_MINER: + 'Warrior fighting for glory in the Colosseum of Fools. Uses crescent-shaped blades to cut down foes.', + DESC_MOSSMAN_RUNNER: 'Plant-like bug that charges at foes when close.', + NAME_SENTRY_1: 'Husk Sentry', + DESC_GREAT_SHIELD_ZOMBIE: + 'Animated remains of a Great Sentry, the most elite of the city's guards. Wields a greatnail and shell. Its powerful attacks cause heavy damage.', + DESC_ZOTE_HOPPER: 'Figment of an obsessed mind. Jumps about in a nonthreatening manner.', + NOTE_PARASITE_BLOB: + 'Strange air has been seeping down from above for years. Some of the air became liquid, and some of that liquid became flesh, and some of that flesh came to life. I don't know what to make of it.', + NAME_PARASITE_BLOB: 'Lightseed', + NOTE_GORGEOUS_HUSK: + 'There is beauty in many things. Reflections of light in water, the taste of freshly killed meat, the cry of a hatchling for its mother... I have never understood the lust for metals and stones though.', + NOTE_FALSEKNIGHT: + 'Weak creatures love to steal the strength of others. Their lives are brief and fearful, and they yearn to have the power to dominate those who have dominated them.', + NOTE_MEGA_JELLYFISH: + 'The canyon below us, the one thick with fog and crackling with strange energy... a Hunter can lose their senses down there. Be careful... strange and unnatural things lurk there.', + NOTE_ZOM_ROYAL_FAT: + 'As these bugs became wealthier they hunted less and consumed more, eventually taking on a grotesque shape not unlike over-ripe fruit.', + DESC_BIG_CENTIPEDE: 'Giant burrower covered in thick shell plates. Tirelessly travels the tunnels of the Deepnest.', + DESC_ZOM_GUARD: + 'The remains of a great Hallownest Crossguard, animated by a strange force. Instinct still drives it to guard its post against intruders.', + NAME_ZOM_SHIELD: 'Husk Warrior', + DESC_GHOST_MARKOTH: 'Lingering dream of a fallen warrior. Only member of his forgotten tribe to take up a weapon.', + NOTE_ZOM_BARGER: + 'A thick orange mist fills these walking corpses. It has a sweet, sickly taste to it. I find it foul. After you kill these creatures, I suggest you do not eat them.', + NAME_HOLLOW_KNIGHT: 'Hollow Knight', + DESC_MOSS_KNIGHT_FAT: 'Lazy, portly Mosskin. Easily swayed by others. ', + DESC_HOLLOW_SHADE: 'Echo of a previous life. Defeat it to retake its power and become whole.', + NOTE_SPITTER: + 'Cunning predators that will try to pick you off from a distance. Don't give them any space, just charge in and cut them down! You'll find they're not so cunning once they are dead.', + DESC_JAR_COLLECTOR: + 'Dark figure locked inside the Tower of Love. Preserves Hallownest's creatures in glass jars with particular attention given to Grubs.', + NAME_SENTRY_FLYING: 'Winged Sentry', + NOTE_ZOTE_FLYER: + 'She asked whether he had bought the Charm for her as he promised he would, but then he explained. The Charm was actually of low quality and not worth the price asked. She understood the wisdom of his decision perfectly.<br>- 'The Grey Prince' Chapter 136', + DESC_GRUB_MIMIC: 'Assumes the shape of a harmless creature to lure prey.', + NOTE_GHOST_XERO: + 'A life defined by tragedy and triumph. A death marred by sorrow and regret. A spirit burdened by sins and memories. Better to wander the world than be cursed with glory.<br>- Xero', + DESC_FUNGOON: 'Fully grown fungal balloon. Spits built up internal gas at aggressors. ', + NOTE_FUNGOON: + 'So round! I don't think I've seen a rounder creature than this. This world certainly hides some marvellous creatures. I must hunt them all down!', + NAME_MAWLEK_TURRET: 'Mawlurk', + DESC_GHOST_XERO: 'Lingering dream of a fallen warrior. Executed for crimes against the King.', + NOTE_ZOM_ROYAL_2: + 'The fearful, cowardly nature of these Hallownest bugs persists even after death! It almost feels shameful to chase and cut them down.', + NOTE_BLACK_KNIGHT: + 'When these silent warriors fall in battle, their bodies split open and strange bugs come flying out. I wonder, what will come flying out of me when I die? Will my hopes and fears drift away into the darkness?', + NOTE_BIGFLY: + 'Bizarrely, this monster does not lay eggs but instead carries its young inside of its fat stomach. This strange practice seems to exhaust the creature, making it sleepy and vulnerable. Take advantage!', + DESC_HUNTERMARK: 'The mark of a true Hunter.', + DESC_MUSH_BABY: + 'Young fungal creature. Spends most of its time in the ground but can uproot and flee if it senses danger.', + DESC_ZOM_BURSTING: 'Maddened by massive infection. Charges at enemies with no thought for its own preservation.', + NAME_INFLATOR: 'Hwurmp', + NAME_MOSSMAN_SHAKER: 'Volatile Mosskin ', + NOTE_MAWLEK: + 'I hear this beast crying out sometimes as I prowl the caverns, although I've never actually laid eyes on it. Who or what is it calling for? As far as I can tell, its voice is never answered.', + NOTE_PURE_VESSEL: + '"Deepest silence in holy shell,<br>Given nail and named a Knight,<br>Bound by chain and egg and spell,<br>Hear Our plea! Reveal thy Light!"<br>- Prayer to the Vessel', + NOTE_PAINTMASTER: + '"O God inspired, master of arts,<br>Whose works shall eternal endure,<br>Peer beyond Our minds and hearts,<br>Reveal to Us the God most pure!"<br>- Prayer to the Artist', + NAME_FLUKEFLY: 'Flukefey', + NAME_ZOM_BARGER: 'Husk Bully', + NAME_GRASS_HOPPER: 'Loodle', + NOTE_MANTIS_LORD: + 'The Mantis tribe and the bugs of old Hallownest had no love for each other. The Mantises outlived their rivals though, and their civilisation still stands.', + NAME_DUNG_DEFENDER: 'Dung Defender', + NOTE_SPITTING_SPIDER: + 'They can be hard to spot as they flitter in and out of the darkness. Watch for their glowing eyes.', + DESC_MUMMY: 'Mummified remains, deformed and enraged by infection.', + DESC_ZOM_ROYAL_FAT: 'Former member of Hallownest's high society. Uses its corpulent body as a weapon.', + NAME_ZOM_HORNHEAD: 'Husk Hornhead', + NOTE_ACID_WALKER: + 'One of the few creatures that can survive in the rivers of harsh acidic water that flow around us. Where does this water come from? It bubbles and spits with a seething hatred of the living...', + NAME_FLUKEMAN: 'Flukemon', + DESC_DUNG_DEFENDER: + 'Skilled combatant living at the heart of the Waterways. Assails intruders with balls of compacted dung.', + DESC_GHOST_HU: 'Lingering dream of a fallen warrior. Travelled the world tending to those affected by the plague.', + NAME_SPITTING_SPIDER: 'Deephunter', + NOTE_MANTIS: + 'If you venture too deep into the fungal forests, these warriors will stand in your way. What is it they guard, deep at the bottom of their territory?', + NOTE_WORM: + 'These brutes seem to be impervious to most damage, so you can sharpen your weapons on their thick hide or just slash away at them for your own amusement. They barely seem to notice.', +}; diff --git a/src/lib/viz/generated/enemies-journal.generated.ts b/src/lib/viz/generated/enemies-journal.generated.ts new file mode 100644 index 00000000..c4d96f02 --- /dev/null +++ b/src/lib/viz/generated/enemies-journal.generated.ts @@ -0,0 +1,1872 @@ +export const enemiesJournalGenerated = [ + { + portraitName: 'bestiary_crawler_s', + convoName: 'CRAWLER', + descConvo: 'DESC_CRAWLER', + nameConvo: 'NAME_CRAWLER', + notesConvo: 'NOTE_CRAWLER', + playerDataBoolName: 'killedCrawler', + playerDataKillsName: 'killsCrawler', + playerDataName: 'Crawler', + playerDataNewDataName: 'newDataCrawler', + }, + { + portraitName: 'bestiary_buzzer_s', + convoName: 'BUZZER', + descConvo: 'DESC_BUZZER', + nameConvo: 'NAME_BUZZER', + notesConvo: 'NOTE_BUZZER', + playerDataBoolName: 'killedBuzzer', + playerDataKillsName: 'killsBuzzer', + playerDataName: 'Buzzer', + playerDataNewDataName: 'newDataBuzzer', + }, + { + portraitName: 'bestiary_big-buzzer_s', + convoName: 'BIGBUZZER', + descConvo: 'DESC_BIGBUZZER', + nameConvo: 'NAME_BIGBUZZER', + notesConvo: 'NOTE_BIGBUZZER', + playerDataBoolName: 'killedBigBuzzer', + playerDataKillsName: 'killsBigBuzzer', + playerDataName: 'BigBuzzer', + playerDataNewDataName: 'newDataBigBuzzer', + }, + { + portraitName: 'bestiary_bouncer_s', + convoName: 'BOUNCER', + descConvo: 'DESC_BOUNCER', + nameConvo: 'NAME_BOUNCER', + notesConvo: 'NOTE_BOUNCER', + playerDataBoolName: 'killedBouncer', + playerDataKillsName: 'killsBouncer', + playerDataName: 'Bouncer', + playerDataNewDataName: 'newDataBouncer', + }, + { + portraitName: 'bestiary_big-bouncer_s', + convoName: 'BIGFLY', + descConvo: 'DESC_BIGFLY', + nameConvo: 'NAME_BIGFLY', + notesConvo: 'NOTE_BIGFLY', + playerDataBoolName: 'killedBigFly', + playerDataKillsName: 'killsBigFly', + playerDataName: 'BigFly', + playerDataNewDataName: 'newDataBigFly', + }, + { + portraitName: 'bestiary_climber_s', + convoName: 'CLIMBER', + descConvo: 'DESC_CLIMBER', + nameConvo: 'NAME_CLIMBER', + notesConvo: 'NOTE_CLIMBER', + playerDataBoolName: 'killedClimber', + playerDataKillsName: 'killsClimber', + playerDataName: 'Climber', + playerDataNewDataName: 'newDataClimber', + }, + { + portraitName: 'bestiary__0008_spitter_s', + convoName: 'SPITTER', + descConvo: 'DESC_SPITTER', + nameConvo: 'NAME_SPITTER', + notesConvo: 'NOTE_SPITTER', + playerDataBoolName: 'killedSpitter', + playerDataKillsName: 'killsSpitter', + playerDataName: 'Spitter', + playerDataNewDataName: 'newDataSpitter', + }, + { + portraitName: 'bestiary_hatcher_s', + convoName: 'HATCHER', + descConvo: 'DESC_HATCHER', + nameConvo: 'NAME_HATCHER', + notesConvo: 'NOTE_HATCHER', + playerDataBoolName: 'killedHatcher', + playerDataKillsName: 'killsHatcher', + playerDataName: 'Hatcher', + playerDataNewDataName: 'newDataHatcher', + }, + { + portraitName: 'bestiary_hatcher_baby_s', + convoName: 'HATCHLING', + descConvo: 'DESC_HATCHLING', + nameConvo: 'NAME_HATCHLING', + notesConvo: 'NOTE_HATCHLING', + playerDataBoolName: 'killedHatchling', + playerDataKillsName: 'killsHatchling', + playerDataName: 'Hatchling', + playerDataNewDataName: 'newDataHatchling', + }, + { + portraitName: 'bestiary_armoured-worm_s', + convoName: 'WORM', + descConvo: 'DESC_WORM', + nameConvo: 'NAME_WORM', + notesConvo: 'NOTE_WORM', + playerDataBoolName: 'killedWorm', + playerDataKillsName: 'killsWorm', + playerDataName: 'Worm', + playerDataNewDataName: 'newDataWorm', + }, + { + portraitName: 'bestiary_bug_s', + convoName: 'ZOM_RUNNER', + descConvo: 'DESC_ZOM_RUNNER', + nameConvo: 'NAME_ZOM_RUNNER', + notesConvo: 'NOTE_ZOM_RUNNER', + playerDataBoolName: 'killedZombieRunner', + playerDataKillsName: 'killsZombieRunner', + playerDataName: 'ZombieRunner', + playerDataNewDataName: 'newDataZombieRunner', + }, + { + portraitName: 'bestiary_hornhead_s', + convoName: 'ZOM_HORNHEAD', + descConvo: 'DESC_ZOM_HORNHEAD', + nameConvo: 'NAME_ZOM_HORNHEAD', + notesConvo: 'NOTE_ZOM_HORNHEAD', + playerDataBoolName: 'killedZombieHornhead', + playerDataKillsName: 'killsZombieHornhead', + playerDataName: 'ZombieHornhead', + playerDataNewDataName: 'newDataZombieHornhead', + }, + { + portraitName: 'bestiary_leaper_s', + convoName: 'ZOM_LEAPER', + descConvo: 'DESC_ZOM_LEAPER', + nameConvo: 'NAME_ZOM_LEAPER', + notesConvo: 'NOTE_ZOM_LEAPER', + playerDataBoolName: 'killedZombieLeaper', + playerDataKillsName: 'killsZombieLeaper', + playerDataName: 'ZombieLeaper', + playerDataNewDataName: 'newDataZombieLeaper', + }, + { + portraitName: 'bestiary_barger_s', + convoName: 'ZOM_BARGER', + descConvo: 'DESC_ZOM_BARGER', + nameConvo: 'NAME_ZOM_BARGER', + notesConvo: 'NOTE_ZOM_BARGER', + playerDataBoolName: 'killedZombieBarger', + playerDataKillsName: 'killsZombieBarger', + playerDataName: 'ZombieBarger', + playerDataNewDataName: 'newDataZombieBarger', + }, + { + portraitName: 'bestiary_shell-shielder_s', + convoName: 'ZOM_SHIELD', + descConvo: 'DESC_ZOM_SHIELD', + nameConvo: 'NAME_ZOM_SHIELD', + notesConvo: 'NOTE_ZOM_SHIELD', + playerDataBoolName: 'killedZombieShield', + playerDataKillsName: 'killsZombieShield', + playerDataName: 'ZombieShield', + playerDataNewDataName: 'newDataZombieShield', + }, + { + portraitName: 'bestiary_crossroads-guard_s', + convoName: 'ZOM_GUARD', + descConvo: 'DESC_ZOM_GUARD', + nameConvo: 'NAME_ZOM_GUARD', + notesConvo: 'NOTE_ZOM_GUARD', + playerDataBoolName: 'killedZombieGuard', + playerDataKillsName: 'killsZombieGuard', + playerDataName: 'ZombieGuard', + playerDataNewDataName: 'newDataZombieGuard', + }, + { + portraitName: 'bestiary__0006_grave-zombie_s', + convoName: 'MUMMY', + descConvo: 'DESC_MUMMY', + nameConvo: 'NAME_MUMMY', + notesConvo: 'NOTE_MUMMY', + playerDataBoolName: 'killedMummy', + playerDataKillsName: 'killsMummy', + playerDataName: 'Mummy', + playerDataNewDataName: 'newDataMummy', + }, + { + portraitName: 'bestiary_false-knight_s', + convoName: 'FALSEKNIGHT', + descConvo: 'DESC_FALSEKNIGHT', + nameConvo: 'NAME_FALSEKNIGHT', + notesConvo: 'NOTE_FALSEKNIGHT', + playerDataBoolName: 'killedFalseKnight', + playerDataKillsName: 'killsFalseKnight', + playerDataName: 'FalseKnight', + playerDataNewDataName: 'newDataFalseKnight', + }, + { + portraitName: 'bestiary_prayer_slug_s', + convoName: 'PRAYER_SLUG', + descConvo: 'DESC_PRAYER_SLUG', + nameConvo: 'NAME_PRAYER_SLUG', + notesConvo: 'NOTE_PRAYER_SLUG', + playerDataBoolName: 'killedPrayerSlug', + playerDataKillsName: 'killsPrayerSlug', + playerDataName: 'PrayerSlug', + playerDataNewDataName: 'newDataPrayerSlug', + }, + { + portraitName: 'bestiary_menderbug_s', + convoName: 'MENDERBUG', + descConvo: 'DESC_MENDERBUG', + nameConvo: 'NAME_MENDERBUG', + notesConvo: 'NOTE_MENDERBUG', + playerDataBoolName: 'killedMenderBug', + playerDataKillsName: 'killsMenderBug', + playerDataName: 'MenderBug', + playerDataNewDataName: 'newDataMenderBug', + }, + { + portraitName: 'bestiary_blue_blob', + convoName: 'HEALTH_SCUTTLER', + descConvo: 'DESC_HEALTH_SCUTTLER', + nameConvo: 'NAME_HEALTH_SCUTTLER', + notesConvo: 'NOTE_HEALTH_SCUTTLER', + playerDataBoolName: 'killedHealthScuttler', + playerDataKillsName: 'killsHealthScuttler', + playerDataName: 'HealthScuttler', + playerDataNewDataName: 'newDataHealthScuttler', + }, + { + portraitName: 'bestiary_roller_s', + convoName: 'ROLLER', + descConvo: 'DESC_ROLLER', + nameConvo: 'NAME_ROLLER', + notesConvo: 'NOTE_ROLLER', + playerDataBoolName: 'killedRoller', + playerDataKillsName: 'killsRoller', + playerDataName: 'Roller', + playerDataNewDataName: 'newDataRoller', + }, + { + portraitName: 'bestiary_blocker_s', + convoName: 'BLOCKER', + descConvo: 'DESC_BLOCKER', + nameConvo: 'NAME_BLOCKER', + notesConvo: 'NOTE_BLOCKER', + playerDataBoolName: 'killedBlocker', + playerDataKillsName: 'killsBlocker', + playerDataName: 'Blocker', + playerDataNewDataName: 'newDataBlocker', + }, + { + portraitName: 'bestiary__0040_moss-crawler_s', + convoName: 'MOSS_WALKER', + descConvo: 'DESC_MOSS_WALKER', + nameConvo: 'NAME_MOSS_WALKER', + notesConvo: 'NOTE_MOSS_WALKER', + playerDataBoolName: 'killedMossWalker', + playerDataKillsName: 'killsMossWalker', + playerDataName: 'MossWalker', + playerDataNewDataName: 'newDataMossWalker', + }, + { + portraitName: 'bestiary__0016_green-flyer_s', + convoName: 'MOSS_FLYER', + descConvo: 'DESC_MOSS_FLYER', + nameConvo: 'NAME_MOSS_FLYER', + notesConvo: 'NOTE_MOSS_FLYER', + playerDataBoolName: 'killedMossFlyer', + playerDataKillsName: 'killsMossFlyer', + playerDataName: 'MossFlyer', + playerDataNewDataName: 'newDataMossFlyer', + }, + { + portraitName: 'bestiary_mossman_runner_s', + convoName: 'MOSSMAN_RUNNER', + descConvo: 'DESC_MOSSMAN_RUNNER', + nameConvo: 'NAME_MOSSMAN_RUNNER', + notesConvo: 'NOTE_MOSSMAN_RUNNER', + playerDataBoolName: 'killedMossmanRunner', + playerDataKillsName: 'killsMossmanRunner', + playerDataName: 'MossmanRunner', + playerDataNewDataName: 'newDataMossmanRunner', + }, + { + portraitName: 'bestiary_mossman_shaker_s', + convoName: 'MOSSMAN_SHAKER', + descConvo: 'DESC_MOSSMAN_SHAKER', + nameConvo: 'NAME_MOSSMAN_SHAKER', + notesConvo: 'NOTE_MOSSMAN_SHAKER', + playerDataBoolName: 'killedMossmanShaker', + playerDataKillsName: 'killsMossmanShaker', + playerDataName: 'MossmanShaker', + playerDataNewDataName: 'newDataMossmanShaker', + }, + { + portraitName: 'bestiary_snap_turret_s', + convoName: 'SNAPPER_TRAP', + descConvo: 'DESC_SNAPPER_TRAP', + nameConvo: 'NAME_SNAPPER_TRAP', + notesConvo: 'NOTE_SNAPPER_TRAP', + playerDataBoolName: 'killedSnapperTrap', + playerDataKillsName: 'killsSnapperTrap', + playerDataName: 'SnapperTrap', + playerDataNewDataName: 'newDataSnapperTrap', + }, + { + portraitName: 'bestiary_mosquito_s', + convoName: 'MOSQUITO', + descConvo: 'DESC_MOSQUITO', + nameConvo: 'NAME_MOSQUITO', + notesConvo: 'NOTE_MOSQUITO', + playerDataBoolName: 'killedMosquito', + playerDataKillsName: 'killsMosquito', + playerDataName: 'Mosquito', + playerDataNewDataName: 'newDataMosquito', + }, + { + portraitName: 'bestiary_blob_fly_s', + convoName: 'BLOB_FLYER', + descConvo: 'DESC_BLOB_FLYER', + nameConvo: 'NAME_BLOB_FLYER', + notesConvo: 'NOTE_BLOB_FLYER', + playerDataBoolName: 'killedBlobFlyer', + playerDataKillsName: 'killsBlobFlyer', + playerDataName: 'BlobFlyer', + playerDataNewDataName: 'newDataBlobFlyer', + }, + { + portraitName: 'bestiary_spit_turret_s', + convoName: 'PLANT_SHOOTER', + descConvo: 'DESC_PLANT_SHOOTER', + nameConvo: 'NAME_PLANT_SHOOTER', + notesConvo: 'NOTE_PLANT_SHOOTER', + playerDataBoolName: 'killedPlantShooter', + playerDataKillsName: 'killsPlantShooter', + playerDataName: 'PlantShooter', + playerDataNewDataName: 'newDataPlantShooter', + }, + { + portraitName: 'bestiary_fung_pigeon_flyer_s', + convoName: 'PIGEON', + descConvo: 'DESC_PIGEON', + nameConvo: 'NAME_PIGEON', + notesConvo: 'NOTE_PIGEON', + playerDataBoolName: 'killedPigeon', + playerDataKillsName: 'killsPigeon', + playerDataName: 'Pigeon', + playerDataNewDataName: 'newDataPigeon', + }, + { + portraitName: 'bestiary_mega_moss_charger_s', + convoName: 'MOSS_CHARGER', + descConvo: 'DESC_MOSS_CHARGER', + nameConvo: 'NAME_MOSS_CHARGER', + notesConvo: 'NOTE_MOSS_CHARGER', + playerDataBoolName: 'killedMossCharger', + playerDataKillsName: 'killsMossCharger', + playerDataName: 'MossCharger', + playerDataNewDataName: 'newDataMossCharger', + }, + { + portraitName: 'bestiary_mega_moss_charger_s', + convoName: 'MEGA_MOSS_CHARGER', + descConvo: 'DESC_MEGA_MOSS_CHARGER', + nameConvo: 'NAME_MEGA_MOSS_CHARGER', + notesConvo: 'NOTE_MEGA_MOSS_CHARGER', + playerDataBoolName: 'killedMegaMossCharger', + playerDataKillsName: 'killsMegaMossCharger', + playerDataName: 'MegaMossCharger', + playerDataNewDataName: 'newDataMegaMossCharger', + }, + { + portraitName: 'bestiary_moss_knight_s', + convoName: 'MOSS_KNIGHT', + descConvo: 'DESC_MOSS_KNIGHT', + nameConvo: 'NAME_MOSS_KNIGHT', + notesConvo: 'NOTE_MOSS_KNIGHT', + playerDataBoolName: 'killedMossKnight', + playerDataKillsName: 'killsMossKnight', + playerDataName: 'MossKnight', + playerDataNewDataName: 'newDataMossKnight', + }, + { + portraitName: 'bestiary_moss_knight_fat_s', + convoName: 'MOSS_KNIGHT_FAT', + descConvo: 'DESC_MOSS_KNIGHT_FAT', + nameConvo: 'NAME_MOSS_KNIGHT_FAT', + notesConvo: 'NOTE_MOSS_KNIGHT_FAT', + playerDataBoolName: 'killedMossKnightFat', + playerDataKillsName: 'killsMossKnightFat', + playerDataName: 'MossKnightFat', + playerDataNewDataName: 'newDataMossKnightFat', + }, + { + portraitName: 'bestiary__0036_acid-walker_s', + convoName: 'ACID_WALKER', + descConvo: 'DESC_ACID_WALKER', + nameConvo: 'NAME_ACID_WALKER', + notesConvo: 'NOTE_ACID_WALKER', + playerDataBoolName: 'killedAcidWalker', + playerDataKillsName: 'killsAcidWalker', + playerDataName: 'AcidWalker', + playerDataNewDataName: 'newDataAcidWalker', + }, + { + portraitName: 'bestiary__0038_acid-flyer_s', + convoName: 'ACID_FLYER', + descConvo: 'DESC_ACID_FLYER', + nameConvo: 'NAME_ACID_FLYER', + notesConvo: 'NOTE_ACID_FLYER', + playerDataBoolName: 'killedAcidFlyer', + playerDataKillsName: 'killsAcidFlyer', + playerDataName: 'AcidFlyer', + playerDataNewDataName: 'newDataAcidFlyer', + }, + { + portraitName: 'bestiary_fung_lazy_flyer_s', + convoName: 'LAZY_FLYER', + descConvo: 'DESC_LAZY_FLYER', + nameConvo: 'NAME_LAZY_FLYER', + notesConvo: 'NOTE_LAZY_FLYER', + playerDataBoolName: 'killedLazyFlyer', + playerDataKillsName: 'killsLazyFlyer', + playerDataName: 'LazyFlyer', + playerDataNewDataName: 'newDataLazyFlyer', + }, + { + portraitName: 'bestiary_zap_bugs_s', + convoName: 'ZAP_BUG', + descConvo: 'DESC_ZAP_BUG', + nameConvo: 'NAME_ZAP_BUG', + notesConvo: 'NOTE_ZAP_BUG', + playerDataBoolName: 'killedZapBug', + playerDataKillsName: 'killsZapBug', + playerDataName: 'ZapBug', + playerDataNewDataName: 'newDataZapBug', + }, + { + portraitName: 'bestiary__0024_jelly-mini_s', + convoName: 'JELLY_CRAWLER', + descConvo: 'DESC_JELLY_CRAWLER', + nameConvo: 'NAME_JELLY_CRAWLER', + notesConvo: 'NOTE_JELLY_CRAWLER', + playerDataBoolName: 'killedJellyCrawler', + playerDataKillsName: 'killsJellyCrawler', + playerDataName: 'JellyCrawler', + playerDataNewDataName: 'newDataJellyCrawler', + }, + { + portraitName: 'bestiary_jellyfish_s', + convoName: 'JELLYFISH', + descConvo: 'DESC_JELLYFISH', + nameConvo: 'NAME_JELLYFISH', + notesConvo: 'NOTE_JELLYFISH', + playerDataBoolName: 'killedJellyfish', + playerDataKillsName: 'killsJellyfish', + playerDataName: 'Jellyfish', + playerDataNewDataName: 'newDataJellyfish', + }, + { + portraitName: 'bestiary__0072_giant-jellyfish_s', + convoName: 'MEGA_JELLYFISH', + descConvo: 'DESC_MEGA_JELLYFISH', + nameConvo: 'NAME_MEGA_JELLYFISH', + notesConvo: 'NOTE_MEGA_JELLYFISH', + playerDataBoolName: 'killedMegaJellyfish', + playerDataKillsName: 'killsMegaJellyfish', + playerDataName: 'MegaJellyfish', + playerDataNewDataName: 'newDataMegaJellyfish', + }, + { + portraitName: 'bestiary__0014_fung-crawler_s', + convoName: 'FUNG_CRAWLER', + descConvo: 'DESC_FUNG_CRAWLER', + nameConvo: 'NAME_FUNG_CRAWLER', + notesConvo: 'NOTE_FUNG_CRAWLER', + playerDataBoolName: 'killedFungCrawler', + playerDataKillsName: 'killsFungCrawler', + playerDataName: 'FungCrawler', + playerDataNewDataName: 'newDataFungCrawler', + }, + { + portraitName: 'bestiary__0032_fungoon-mini_s', + convoName: 'FUNGOON_BABY', + descConvo: 'DESC_FUNGOON_BABY', + nameConvo: 'NAME_FUNGOON_BABY', + notesConvo: 'NOTE_FUNGOON_BABY', + playerDataBoolName: 'killedFungoonBaby', + playerDataKillsName: 'killsFungoonBaby', + playerDataName: 'FungoonBaby', + playerDataNewDataName: 'newDataFungoonBaby', + }, + { + portraitName: 'bestiary__0030_fungoon_s', + convoName: 'FUNGOON', + descConvo: 'DESC_FUNGOON', + nameConvo: 'NAME_FUNGOON', + notesConvo: 'NOTE_FUNGOON', + playerDataBoolName: 'killedFungusFlyer', + playerDataKillsName: 'killsFungusFlyer', + playerDataName: 'FungusFlyer', + playerDataNewDataName: 'newDataFungusFlyer', + }, + { + portraitName: 'bestiary_mushroom_turret_s', + convoName: 'MUSH_TURRET', + descConvo: 'DESC_MUSH_TURRET', + nameConvo: 'NAME_MUSH_TURRET', + notesConvo: 'NOTE_MUSH_TURRET', + playerDataBoolName: 'killedMushroomTurret', + playerDataKillsName: 'killsMushroomTurret', + playerDataName: 'MushroomTurret', + playerDataNewDataName: 'newDataMushroomTurret', + }, + { + portraitName: 'bestiary_fungus_zombie_02_s', + convoName: 'FUNG_ZOMBIE', + descConvo: 'DESC_FUNG_ZOMBIE', + nameConvo: 'NAME_FUNG_ZOMBIE', + notesConvo: 'NOTE_FUNG_ZOMBIE', + playerDataBoolName: 'killedFungifiedZombie', + playerDataKillsName: 'killsFungifiedZombie', + playerDataName: 'FungifiedZombie', + playerDataNewDataName: 'newDataFungifiedZombie', + }, + { + portraitName: 'bestiary_mushroom_mini_s', + convoName: 'MUSH_BABY', + descConvo: 'DESC_MUSH_BABY', + nameConvo: 'NAME_MUSH_BABY', + notesConvo: 'NOTE_MUSH_BABY', + playerDataBoolName: 'killedMushroomBaby', + playerDataKillsName: 'killsMushroomBaby', + playerDataName: 'MushroomBaby', + playerDataNewDataName: 'newDataMushroomBaby', + }, + { + portraitName: 'bestiary_mushroom_roller_s', + convoName: 'MUSH_ROLLER', + descConvo: 'DESC_MUSH_ROLLER', + nameConvo: 'NAME_MUSH_ROLLER', + notesConvo: 'NOTE_MUSH_ROLLER', + playerDataBoolName: 'killedMushroomRoller', + playerDataKillsName: 'killsMushroomRoller', + playerDataName: 'MushroomRoller', + playerDataNewDataName: 'newDataMushroomRoller', + }, + { + portraitName: 'bestiary_mushroom_brawler_s', + convoName: 'MUSH_BRAWLER', + descConvo: 'DESC_MUSH_BRAWLER', + nameConvo: 'NAME_MUSH_BRAWLER', + notesConvo: 'NOTE_MUSH_BRAWLER', + playerDataBoolName: 'killedMushroomBrawler', + playerDataKillsName: 'killsMushroomBrawler', + playerDataName: 'MushroomBrawler', + playerDataNewDataName: 'newDataMushroomBrawler', + }, + { + portraitName: 'bestiary_mantis_flyer_s', + convoName: 'MANTIS_FLYER_CHILD', + descConvo: 'DESC_MANTIS_FLYER_CHILD', + nameConvo: 'NAME_MANTIS_FLYER_CHILD', + notesConvo: 'NOTE_MANTIS_FLYER_CHILD', + playerDataBoolName: 'killedMantisFlyerChild', + playerDataKillsName: 'killsMantisFlyerChild', + playerDataName: 'MantisFlyerChild', + playerDataNewDataName: 'newDataMantisFlyerChild', + }, + { + portraitName: 'bestiary_mantis_s', + convoName: 'MANTIS', + descConvo: 'DESC_MANTIS', + nameConvo: 'NAME_MANTIS', + notesConvo: 'NOTE_MANTIS', + playerDataBoolName: 'killedMantis', + playerDataKillsName: 'killsMantis', + playerDataName: 'Mantis', + playerDataNewDataName: 'newDataMantis', + }, + { + portraitName: 'bestiary_mantis_lords_s', + convoName: 'MANTIS_LORD', + descConvo: 'DESC_MANTIS_LORD', + nameConvo: 'NAME_MANTIS_LORD', + notesConvo: 'NOTE_MANTIS_LORD', + playerDataBoolName: 'killedMantisLord', + playerDataKillsName: 'killsMantisLord', + playerDataName: 'MantisLord', + playerDataNewDataName: 'newDataMantisLord', + }, + { + portraitName: 'bestiary_ruins_zombie_s', + convoName: 'SENTRY_1', + descConvo: 'DESC_SENTRY_1', + nameConvo: 'NAME_SENTRY_1', + notesConvo: 'NOTE_SENTRY_1', + playerDataBoolName: 'killedSentry', + playerDataKillsName: 'killsSentry', + playerDataName: 'Sentry', + playerDataNewDataName: 'newDataSentry', + }, + { + portraitName: 'bestiary_ruins_zombie_big_s', + convoName: 'SENTRY_FAT', + descConvo: 'DESC_SENTRY_FAT', + nameConvo: 'NAME_SENTRY_FAT', + notesConvo: 'NOTE_SENTRY_FAT', + playerDataBoolName: 'killedSentryFat', + playerDataKillsName: 'killsSentryFat', + playerDataName: 'SentryFat', + playerDataNewDataName: 'newDataSentryFat', + }, + { + portraitName: 'bestiary_ruins_zombie_flier_s', + convoName: 'SENTRY_FLYING', + descConvo: 'DESC_SENTRY_FLYING', + nameConvo: 'NAME_SENTRY_FLYING', + notesConvo: 'NOTE_SENTRY_FLYING', + playerDataBoolName: 'killedFlyingSentrySword', + playerDataKillsName: 'killsFlyingSentrySword', + playerDataName: 'FlyingSentrySword', + playerDataNewDataName: 'newDataFlyingSentrySword', + }, + { + portraitName: 'bestiary_ruins_zombie_lance_s', + convoName: 'SENTRY_FLYING_JAVELIN', + descConvo: 'DESC_SENTRY_FLYING_JAVELIN', + nameConvo: 'NAME_SENTRY_FLYING_JAVELIN', + notesConvo: 'NOTE_SENTRY_FLYING_JAVELIN', + playerDataBoolName: 'killedFlyingSentryJavelin', + playerDataKillsName: 'killsFlyingSentryJavelin', + playerDataName: 'FlyingSentryJavelin', + playerDataNewDataName: 'newDataFlyingSentryJavelin', + }, + { + portraitName: 'bestiary__0022_mage-blob_s', + convoName: 'MAGEBLOB', + descConvo: 'DESC_MAGEBLOB', + nameConvo: 'NAME_MAGEBLOB', + notesConvo: 'NOTE_MAGEBLOB', + playerDataBoolName: 'killedMageBlob', + playerDataKillsName: 'killsMageBlob', + playerDataName: 'MageBlob', + playerDataNewDataName: 'newDataMageBlob', + }, + { + portraitName: 'bestiary__0020_mage-balloon_s', + convoName: 'MAGE_BALLOON', + descConvo: 'DESC_MAGE_BALLOON', + nameConvo: 'NAME_MAGE_BALLOON', + notesConvo: 'NOTE_MAGE_BALLOON', + playerDataBoolName: 'killedMageBalloon', + playerDataKillsName: 'killsMageBalloon', + playerDataName: 'MageBalloon', + playerDataNewDataName: 'newDataMageBalloon', + }, + { + portraitName: 'bestiary_mage_s', + convoName: 'MAGE', + descConvo: 'DESC_MAGE', + nameConvo: 'NAME_MAGE', + notesConvo: 'NOTE_MAGE', + playerDataBoolName: 'killedMage', + playerDataKillsName: 'killsMage', + playerDataName: 'Mage', + playerDataNewDataName: 'newDataMage', + }, + { + portraitName: 'bestiary_mage_knight_s', + convoName: 'MAGE_KNIGHT', + descConvo: 'DESC_MAGE_KNIGHT', + nameConvo: 'NAME_MAGE_KNIGHT', + notesConvo: 'NOTE_MAGE_KNIGHT', + playerDataBoolName: 'killedMageKnight', + playerDataKillsName: 'killsMageKnight', + playerDataName: 'MageKnight', + playerDataNewDataName: 'newDataMageKnight', + }, + { + portraitName: 'bestiary_mage_lord_s', + convoName: 'MAGE_LORD', + descConvo: 'DESC_MAGE_LORD', + nameConvo: 'NAME_MAGE_LORD', + notesConvo: 'NOTE_MAGE_LORD', + playerDataBoolName: 'killedMageLord', + playerDataKillsName: 'killsMageLord', + playerDataName: 'MageLord', + playerDataNewDataName: 'newDataMageLord', + }, + { + portraitName: 'bestiary_royal_zombie_point_s', + convoName: 'ZOM_ROYAL_1', + descConvo: 'DESC_ZOM_ROYAL_1', + nameConvo: 'NAME_ZOM_ROYAL_1', + notesConvo: 'NOTE_ZOM_ROYAL_1', + playerDataBoolName: 'killedRoyalDandy', + playerDataKillsName: 'killsRoyalDandy', + playerDataName: 'RoyalDandy', + playerDataNewDataName: 'newDataRoyalDandy', + }, + { + portraitName: 'bestiary_royal_zombie_flat_s', + convoName: 'ZOM_ROYAL_2', + descConvo: 'DESC_ZOM_ROYAL_2', + nameConvo: 'NAME_ZOM_ROYAL_2', + notesConvo: 'NOTE_ZOM_ROYAL_2', + playerDataBoolName: 'killedRoyalCoward', + playerDataKillsName: 'killsRoyalCoward', + playerDataName: 'RoyalCoward', + playerDataNewDataName: 'newDataRoyalCoward', + }, + { + portraitName: 'bestiary_royal_zombie_fat_s', + convoName: 'ZOM_ROYAL_FAT', + descConvo: 'DESC_ZOM_ROYAL_FAT', + nameConvo: 'NAME_ZOM_ROYAL_FAT', + notesConvo: 'NOTE_ZOM_ROYAL_FAT', + playerDataBoolName: 'killedRoyalPlumper', + playerDataKillsName: 'killsRoyalPlumper', + playerDataName: 'RoyalPlumper', + playerDataNewDataName: 'newDataRoyalPlumper', + }, + { + portraitName: 'bestiary_gold_royal_s', + convoName: 'GORGEOUS_HUSK', + descConvo: 'DESC_GORGEOUS_HUSK', + nameConvo: 'NAME_GORGEOUS_HUSK', + notesConvo: 'NOTE_GORGEOUS_HUSK', + playerDataBoolName: 'killedGorgeousHusk', + playerDataKillsName: 'killsGorgeousHusk', + playerDataName: 'GorgeousHusk', + playerDataNewDataName: 'newDataGorgeousHusk', + }, + { + portraitName: 'bestiary_shield_guard_s', + convoName: 'GREAT_SHIELD_ZOMBIE', + descConvo: 'DESC_GREAT_SHIELD_ZOMBIE', + nameConvo: 'NAME_GREAT_SHIELD_ZOMBIE', + notesConvo: 'NOTE_GREAT_SHIELD_ZOMBIE', + playerDataBoolName: 'killedGreatShieldZombie', + playerDataKillsName: 'killsGreatShieldZombie', + playerDataName: 'GreatShieldZombie', + playerDataNewDataName: 'newDataGreatShieldZombie', + }, + { + portraitName: 'bestiary_black_knight_s', + convoName: 'BLACK_KNIGHT', + descConvo: 'DESC_BLACK_KNIGHT', + nameConvo: 'NAME_BLACK_KNIGHT', + notesConvo: 'NOTE_BLACK_KNIGHT', + playerDataBoolName: 'killedBlackKnight', + playerDataKillsName: 'killsBlackKnight', + playerDataName: 'BlackKnight', + playerDataNewDataName: 'newDataBlackKnight', + }, + { + portraitName: 'bestiary__0068_collector-_s', + convoName: 'JAR_COLLECTOR', + descConvo: 'DESC_JAR_COLLECTOR', + nameConvo: 'NAME_JAR_COLLECTOR', + notesConvo: 'NOTE_JAR_COLLECTOR', + playerDataBoolName: 'killedJarCollector', + playerDataKillsName: 'killsJarCollector', + playerDataName: 'JarCollector', + playerDataNewDataName: 'newDataJarCollector', + }, + { + portraitName: 'bestiary_bat_dropper_s', + convoName: 'CEILING_DROPPER', + descConvo: 'DESC_CEILING_DROPPER', + nameConvo: 'NAME_CEILING_DROPPER', + notesConvo: 'NOTE_CEILING_DROPPER', + playerDataBoolName: 'killedCeilingDropper', + playerDataKillsName: 'killsCeilingDropper', + playerDataName: 'CeilingDropper', + playerDataNewDataName: 'newDataCeilingDropper', + }, + { + portraitName: 'bestiary_flipper_s', + convoName: 'FLIP_HOPPER', + descConvo: 'DESC_FLIP_HOPPER', + nameConvo: 'NAME_FLIP_HOPPER', + notesConvo: 'NOTE_FLIP_HOPPER', + playerDataBoolName: 'killedFlipHopper', + playerDataKillsName: 'killsFlipHopper', + playerDataName: 'FlipHopper', + playerDataNewDataName: 'newDataFlipHopper', + }, + { + portraitName: 'bestiary_inflater_s', + convoName: 'INFLATOR', + descConvo: 'DESC_INFLATOR', + nameConvo: 'NAME_INFLATOR', + notesConvo: 'NOTE_INFLATOR', + playerDataBoolName: 'killedInflater', + playerDataKillsName: 'killsInflater', + playerDataName: 'Inflater', + playerDataNewDataName: 'newDataInflater', + }, + { + portraitName: 'bestiar_egg_sac_s', + convoName: 'EGG_SAC', + descConvo: 'DESC_EGG_SAC', + nameConvo: 'NAME_EGG_SAC', + notesConvo: 'NOTE_EGG_SAC', + playerDataBoolName: 'killedEggSac', + playerDataKillsName: 'killsEggSac', + playerDataName: 'EggSac', + playerDataNewDataName: 'newDataEggSac', + }, + { + portraitName: 'bestiary__0004_dung-defender_s', + convoName: 'DUNG_DEFENDER', + descConvo: 'DESC_DUNG_DEFENDER', + nameConvo: 'NAME_DUNG_DEFENDER', + notesConvo: 'NOTE_DUNG_DEFENDER', + playerDataBoolName: 'killedDungDefender', + playerDataKillsName: 'killsDungDefender', + playerDataName: 'DungDefender', + playerDataNewDataName: 'newDataDungDefender', + }, + { + portraitName: 'bestiary_White_Defender_portrait', + convoName: 'WHITE_DEFENDER', + descConvo: 'DESC_WHITE_DEFENDER', + nameConvo: 'NAME_WHITE_DEFENDER', + notesConvo: 'NOTE_WHITE_DEFENDER', + playerDataBoolName: 'killedWhiteDefender', + playerDataKillsName: 'killsWhiteDefender', + playerDataName: 'WhiteDefender', + playerDataNewDataName: 'newDataWhiteDefender', + }, + { + portraitName: 'bestiary__0054_fluke-fairy_s', + convoName: 'FLUKEFLY', + descConvo: 'DESC_FLUKEFLY', + nameConvo: 'NAME_FLUKEFLY', + notesConvo: 'NOTE_FLUKEFLY', + playerDataBoolName: 'killedFlukefly', + playerDataKillsName: 'killsFlukefly', + playerDataName: 'Flukefly', + playerDataNewDataName: 'newDataFlukefly', + }, + { + portraitName: 'bestiary_flukeman_s', + convoName: 'FLUKEMAN', + descConvo: 'DESC_FLUKEMAN', + nameConvo: 'NAME_FLUKEMAN', + notesConvo: 'NOTE_FLUKEMAN', + playerDataBoolName: 'killedFlukeman', + playerDataKillsName: 'killsFlukeman', + playerDataName: 'Flukeman', + playerDataNewDataName: 'newDataFlukeman', + }, + { + portraitName: 'bestiary_fat_fluke', + convoName: 'FAT_FLUKE', + descConvo: 'DESC_FAT_FLUKE', + nameConvo: 'NAME_FAT_FLUKE', + notesConvo: 'NOTE_FAT_FLUKE', + playerDataBoolName: 'killedFatFluke', + playerDataKillsName: 'killsFatFluke', + playerDataName: 'FatFluke', + playerDataNewDataName: 'newDataFatFluke', + }, + { + portraitName: 'bestiary__0056_fluke-mother_s', + convoName: 'FLUKE_MOTHER', + descConvo: 'DESC_FLUKE_MOTHER', + nameConvo: 'NAME_FLUKE_MOTHER', + notesConvo: 'NOTE_FLUKE_MOTHER', + playerDataBoolName: 'killedFlukeMother', + playerDataKillsName: 'killsFlukeMother', + playerDataName: 'FlukeMother', + playerDataNewDataName: 'newDataFlukeMother', + }, + { + portraitName: 'bestiary__0018_mines-crawler_s', + convoName: 'MINES_CRAWLER', + descConvo: 'DESC_MINES_CRAWLER', + nameConvo: 'NAME_MINES_CRAWLER', + notesConvo: 'NOTE_MINES_CRAWLER', + playerDataBoolName: 'killedMinesCrawler', + playerDataKillsName: 'killsMinesCrawler', + playerDataName: 'MinesCrawler', + playerDataNewDataName: 'newDataMinesCrawler', + }, + { + portraitName: 'bestiary_mines_goomba_s', + convoName: 'CRYS_CRAWLER', + descConvo: 'DESC_CRYS_CRAWLER', + nameConvo: 'NAME_CRYS_CRAWLER', + notesConvo: 'NOTE_CRYS_CRAWLER', + playerDataBoolName: 'killedCrystalCrawler', + playerDataKillsName: 'killsCrystalCrawler', + playerDataName: 'CrystalCrawler', + playerDataNewDataName: 'newDataCrystalCrawler', + }, + { + portraitName: 'bestiary_mines_flier_s', + convoName: 'CRYS_FLYER', + descConvo: 'DESC_CRYS_FLYER', + nameConvo: 'NAME_CRYS_FLYER', + notesConvo: 'NOTE_CRYS_FLYER', + playerDataBoolName: 'killedCrystalFlyer', + playerDataKillsName: 'killsCrystalFlyer', + playerDataName: 'CrystalFlyer', + playerDataNewDataName: 'newDataCrystalFlyer', + }, + { + portraitName: 'bestiary_mines_climber_s', + convoName: 'CRYS_LAZER_BUG', + descConvo: 'DESC_CRYS_LAZER_BUG', + nameConvo: 'NAME_CRYS_LAZER_BUG', + notesConvo: 'NOTE_CRYS_LAZER_BUG', + playerDataBoolName: 'killedLaserBug', + playerDataKillsName: 'killsLaserBug', + playerDataName: 'LaserBug', + playerDataNewDataName: 'newDataLaserBug', + }, + { + portraitName: 'bestiary_zombie_miner_s', + convoName: 'ZOM_MINER', + descConvo: 'DESC_ZOM_MINER', + nameConvo: 'NAME_ZOM_MINER', + notesConvo: 'NOTE_ZOM_MINER', + playerDataBoolName: 'killedZombieMiner', + playerDataKillsName: 'killsZombieMiner', + playerDataName: 'ZombieMiner', + playerDataNewDataName: 'newDataZombieMiner', + }, + { + portraitName: 'bestiary_zombie_miner_crystal_s', + convoName: 'ZOM_BEAM_MINER', + descConvo: 'DESC_ZOM_BEAM_MINER', + nameConvo: 'NAME_ZOM_BEAM_MINER', + notesConvo: 'NOTE_ZOM_BEAM_MINER', + playerDataBoolName: 'killedBeamMiner', + playerDataKillsName: 'killsBeamMiner', + playerDataName: 'BeamMiner', + playerDataNewDataName: 'newDataBeamMiner', + }, + { + portraitName: 'bestiary__0064_mega-beam-miner_s', + convoName: 'MEGA_BEAM_MINER', + descConvo: 'DESC_MEGA_BEAM_MINER', + nameConvo: 'NAME_MEGA_BEAM_MINER', + notesConvo: 'NOTE_MEGA_BEAM_MINER', + playerDataBoolName: 'killedMegaBeamMiner', + playerDataKillsName: 'killsMegaBeamMiner', + playerDataName: 'MegaBeamMiner', + playerDataNewDataName: 'newDataMegaBeamMiner', + }, + { + portraitName: 'bestiary_infected_buzzer_s', + convoName: 'ANGRY_BUZZER', + descConvo: 'DESC_ANGRY_BUZZER', + nameConvo: 'NAME_ANGRY_BUZZER', + notesConvo: 'NOTE_ANGRY_BUZZER', + playerDataBoolName: 'killedAngryBuzzer', + playerDataKillsName: 'killsAngryBuzzer', + playerDataName: 'AngryBuzzer', + playerDataNewDataName: 'newDataAngryBuzzer', + }, + { + portraitName: 'bestiary_infected_fly_s', + convoName: 'BURSTING_BOUNCER', + descConvo: 'DESC_BURSTING_BOUNCER', + nameConvo: 'NAME_BURSTING_BOUNCER', + notesConvo: 'NOTE_BURSTING_BOUNCER', + playerDataBoolName: 'killedBurstingBouncer', + playerDataKillsName: 'killsBurstingBouncer', + playerDataName: 'BurstingBouncer', + playerDataNewDataName: 'newDataBurstingBouncer', + }, + { + portraitName: 'bestiary_infected_husk1_s', + convoName: 'ZOM_BURSTING', + descConvo: 'DESC_ZOM_BURSTING', + nameConvo: 'NAME_ZOM_BURSTING', + notesConvo: 'NOTE_ZOM_BURSTING', + playerDataBoolName: 'killedBurstingZombie', + playerDataKillsName: 'killsBurstingZombie', + playerDataName: 'BurstingZombie', + playerDataNewDataName: 'newDataBurstingZombie', + }, + { + portraitName: 'bestiary_infected_husk2_s', + convoName: 'ZOM_SPITTING', + descConvo: 'DESC_ZOM_SPITTING', + nameConvo: 'NAME_ZOM_SPITTING', + notesConvo: 'NOTE_ZOM_SPITTING', + playerDataBoolName: 'killedSpittingZombie', + playerDataKillsName: 'killsSpittingZombie', + playerDataName: 'SpittingZombie', + playerDataNewDataName: 'newDataSpittingZombie', + }, + { + portraitName: 'bestiary_centipede_s', + convoName: 'BABY_CENTIPEDE', + descConvo: 'DESC_BABY_CENTIPEDE', + nameConvo: 'NAME_BABY_CENTIPEDE', + notesConvo: 'NOTE_BABY_CENTIPEDE', + playerDataBoolName: 'killedBabyCentipede', + playerDataKillsName: 'killsBabyCentipede', + playerDataName: 'BabyCentipede', + playerDataNewDataName: 'newDataBabyCentipede', + }, + { + portraitName: 'bestiary_centipede_hatcher_s', + convoName: 'CENTIPEDE_HATCHER', + descConvo: 'DESC_CENTIPEDE_HATCHER', + nameConvo: 'NAME_CENTIPEDE_HATCHER', + notesConvo: 'NOTE_CENTIPEDE_HATCHER', + playerDataBoolName: 'killedCentipedeHatcher', + playerDataKillsName: 'killsCentipedeHatcher', + playerDataName: 'CentipedeHatcher', + playerDataNewDataName: 'newDataCentipedeHatcher', + }, + { + portraitName: 'bestiary_big_centipede_s', + convoName: 'BIG_CENTIPEDE', + descConvo: 'DESC_BIG_CENTIPEDE', + nameConvo: 'NAME_BIG_CENTIPEDE', + notesConvo: 'NOTE_BIG_CENTIPEDE', + playerDataBoolName: 'killedBigCentipede', + playerDataKillsName: 'killsBigCentipede', + playerDataName: 'BigCentipede', + playerDataNewDataName: 'newDataBigCentipede', + }, + { + portraitName: 'bestiary_zombie_spider_02_s', + convoName: 'ZOM_SPIDER', + descConvo: 'DESC_ZOM_SPIDER', + nameConvo: 'NAME_ZOM_SPIDER', + notesConvo: 'NOTE_ZOM_SPIDER', + playerDataBoolName: 'killedSpiderCorpse', + playerDataKillsName: 'killsSpiderCorpse', + playerDataName: 'SpiderCorpse', + playerDataNewDataName: 'newDataSpiderCorpse', + }, + { + portraitName: 'bestiary_tiny_spider_s', + convoName: 'MINI_SPIDER', + descConvo: 'DESC_MINI_SPIDER', + nameConvo: 'NAME_MINI_SPIDER', + notesConvo: 'NOTE_MINI_SPIDER', + playerDataBoolName: 'killedMiniSpider', + playerDataKillsName: 'killsMiniSpider', + playerDataName: 'MiniSpider', + playerDataNewDataName: 'newDataMiniSpider', + }, + { + portraitName: 'bestiary__0050_spit-spider_s', + convoName: 'SPITTING_SPIDER', + descConvo: 'DESC_SPITTING_SPIDER', + nameConvo: 'NAME_SPITTING_SPIDER', + notesConvo: 'NOTE_SPITTING_SPIDER', + playerDataBoolName: 'killedShootSpider', + playerDataKillsName: 'killsShootSpider', + playerDataName: 'ShootSpider', + playerDataNewDataName: 'newDataShootSpider', + }, + { + portraitName: 'bestiary__0010_spider-flyer_s', + convoName: 'SPIDER_FLYER', + descConvo: 'DESC_SPIDER_FLYER', + nameConvo: 'NAME_SPIDER_FLYER', + notesConvo: 'NOTE_SPIDER_FLYER', + playerDataBoolName: 'killedSpiderFlyer', + playerDataKillsName: 'killsSpiderFlyer', + playerDataName: 'SpiderFlyer', + playerDataNewDataName: 'newDataSpiderFlyer', + }, + { + portraitName: 'bestiary_spider_soldier_s', + convoName: 'SLASH_SPIDER', + descConvo: 'DESC_SLASH_SPIDER', + nameConvo: 'NAME_SLASH_SPIDER', + notesConvo: 'NOTE_SLASH_SPIDER', + playerDataBoolName: 'killedSlashSpider', + playerDataKillsName: 'killsSlashSpider', + playerDataName: 'SlashSpider', + playerDataNewDataName: 'newDataSlashSpider', + }, + { + portraitName: 'bestiary__0058_mimic-spider_s', + convoName: 'MIMIC_SPIDER', + descConvo: 'DESC_MIMIC_SPIDER', + nameConvo: 'NAME_MIMIC_SPIDER', + notesConvo: 'NOTE_MIMIC_SPIDER', + playerDataBoolName: 'killedMimicSpider', + playerDataKillsName: 'killsMimicSpider', + playerDataName: 'MimicSpider', + playerDataNewDataName: 'newDataMimicSpider', + }, + { + portraitName: 'bestiary__0046_abyss-crawler_s', + convoName: 'ABYSS_CRAWLER', + descConvo: 'DESC_ABYSS_CRAWLER', + nameConvo: 'NAME_ABYSS_CRAWLER', + notesConvo: 'NOTE_ABYSS_CRAWLER', + playerDataBoolName: 'killedAbyssCrawler', + playerDataKillsName: 'killsAbyssCrawler', + playerDataName: 'AbyssCrawler', + playerDataNewDataName: 'newDataAbyssCrawler', + }, + { + portraitName: 'bestiary_mini_mawlek_s', + convoName: 'LESSER_MAWLEK', + descConvo: 'DESC_LESSER_MAWLEK', + nameConvo: 'NAME_LESSER_MAWLEK', + notesConvo: 'NOTE_LESSER_MAWLEK', + playerDataBoolName: 'killedLesserMawlek', + playerDataKillsName: 'killsLesserMawlek', + playerDataName: 'LesserMawlek', + playerDataNewDataName: 'newDataLesserMawlek', + }, + { + portraitName: 'bestiary_mawlek_turret_s', + convoName: 'MAWLEK_TURRET', + descConvo: 'DESC_MAWLEK_TURRET', + nameConvo: 'NAME_MAWLEK_TURRET', + notesConvo: 'NOTE_MAWLEK_TURRET', + playerDataBoolName: 'killedMawlekTurret', + playerDataKillsName: 'killsMawlekTurret', + playerDataName: 'MawlekTurret', + playerDataNewDataName: 'newDataMawlekTurret', + }, + { + portraitName: 'bestiary_mawlek_s', + convoName: 'MAWLEK', + descConvo: 'DESC_MAWLEK', + nameConvo: 'NAME_MAWLEK', + notesConvo: 'NOTE_MAWLEK', + playerDataBoolName: 'killedMawlek', + playerDataKillsName: 'killsMawlek', + playerDataName: 'Mawlek', + playerDataNewDataName: 'newDataMawlek', + }, + { + portraitName: 'bestiary__0012_orange-blob_s', + convoName: 'PARASITE_BLOB', + descConvo: 'DESC_PARASITE_BLOB', + nameConvo: 'NAME_PARASITE_BLOB', + notesConvo: 'NOTE_PARASITE_BLOB', + playerDataBoolName: 'killedOrangeScuttler', + playerDataKillsName: 'killsOrangeScuttler', + playerDataName: 'OrangeScuttler', + playerDataNewDataName: 'newDataOrangeScuttler', + }, + { + portraitName: 'bestiary_parasite_flyer_s', + convoName: 'ORANGE_BALLOON', + descConvo: 'DESC_ORANGE_BALLOON', + nameConvo: 'NAME_ORANGE_BALLOON', + notesConvo: 'NOTE_ORANGE_BALLOON', + playerDataBoolName: 'killedOrangeBalloon', + playerDataKillsName: 'killsOrangeBalloon', + playerDataName: 'OrangeBalloon', + playerDataNewDataName: 'newDataOrangeBalloon', + }, + { + portraitName: 'bestiary_infected_knight_s', + convoName: 'INFECTED_KNIGHT', + descConvo: 'DESC_INFECTED_KNIGHT', + nameConvo: 'NAME_INFECTED_KNIGHT', + notesConvo: 'NOTE_INFECTED_KNIGHT', + playerDataBoolName: 'killedInfectedKnight', + playerDataKillsName: 'killsInfectedKnight', + playerDataName: 'InfectedKnight', + playerDataNewDataName: 'newDataInfectedKnight', + }, + { + portraitName: 'bestiary__0052_blow-fly_s', + convoName: 'BIG_FAT_FLYER', + descConvo: 'DESC_BIG_FAT_FLYER', + nameConvo: 'NAME_BIG_FAT_FLYER', + notesConvo: 'NOTE_BIG_FAT_FLYER', + playerDataBoolName: 'killedBlowFly', + playerDataKillsName: 'killsBlowFly', + playerDataName: 'BlowFly', + playerDataNewDataName: 'newDataBlowFly', + }, + { + portraitName: 'bestiary_super_spitter_s', + convoName: 'SUPER_SPITTER', + descConvo: 'DESC_SUPER_SPITTER', + nameConvo: 'NAME_SUPER_SPITTER', + notesConvo: 'NOTE_SUPER_SPITTER', + playerDataBoolName: 'killedSuperSpitter', + playerDataKillsName: 'killsSuperSpitter', + playerDataName: 'SuperSpitter', + playerDataNewDataName: 'newDataSuperSpitter', + }, + { + portraitName: 'bestiary_hopper_s', + convoName: 'HOPPER', + descConvo: 'DESC_HOPPER', + nameConvo: 'NAME_HOPPER', + notesConvo: 'NOTE_HOPPER', + playerDataBoolName: 'killedHopper', + playerDataKillsName: 'killsHopper', + playerDataName: 'Hopper', + playerDataNewDataName: 'newDataHopper', + }, + { + portraitName: 'bestiary__0070_giant-hopper_s', + convoName: 'GIANT_HOPPER', + descConvo: 'DESC_GIANT_HOPPER', + nameConvo: 'NAME_GIANT_HOPPER', + notesConvo: 'NOTE_GIANT_HOPPER', + playerDataBoolName: 'killedGiantHopper', + playerDataKillsName: 'killsGiantHopper', + playerDataName: 'GiantHopper', + playerDataNewDataName: 'newDataGiantHopper', + }, + { + portraitName: 'bestiary_mimic_grub_s', + convoName: 'GRUB_MIMIC', + descConvo: 'DESC_GRUB_MIMIC', + nameConvo: 'NAME_GRUB_MIMIC', + notesConvo: 'NOTE_GRUB_MIMIC', + playerDataBoolName: 'killedGrubMimic', + playerDataKillsName: 'killsGrubMimic', + playerDataName: 'GrubMimic', + playerDataNewDataName: 'newDataGrubMimic', + }, + { + portraitName: 'bestiary__bee_tiny_s', + convoName: 'BEE_HATCHLING', + descConvo: 'DESC_BEE_HATCHLING', + nameConvo: 'NAME_BEE_HATCHLING', + notesConvo: 'NOTE_BEE_HATCHLING', + playerDataBoolName: 'killedBeeHatchling', + playerDataKillsName: 'killsBeeHatchling', + playerDataName: 'BeeHatchling', + playerDataNewDataName: 'newDataBeeHatchling', + }, + { + portraitName: 'bestiary_bee_s', + convoName: 'BEE', + descConvo: 'DESC_BEE', + nameConvo: 'NAME_BEE', + notesConvo: 'NOTE_BEE', + playerDataBoolName: 'killedBeeStinger', + playerDataKillsName: 'killsBeeStinger', + playerDataName: 'BeeStinger', + playerDataNewDataName: 'newDataBeeStinger', + }, + { + portraitName: 'bestiary_bee_big_s', + convoName: 'BIG_BEE', + descConvo: 'DESC_BIG_BEE', + nameConvo: 'NAME_BIG_BEE', + notesConvo: 'NOTE_BIG_BEE', + playerDataBoolName: 'killedBigBee', + playerDataKillsName: 'killsBigBee', + playerDataName: 'BigBee', + playerDataNewDataName: 'newDataBigBee', + }, + { + portraitName: 'bestiary_zombie_hive_s', + convoName: 'ZOM_HIVE', + descConvo: 'DESC_ZOM_HIVE', + nameConvo: 'NAME_ZOM_HIVE', + notesConvo: 'NOTE_ZOM_HIVE', + playerDataBoolName: 'killedZombieHive', + playerDataKillsName: 'killsZombieHive', + playerDataName: 'ZombieHive', + playerDataNewDataName: 'newDataZombieHive', + }, + { + portraitName: 'bestiary_hive_knight_s', + convoName: 'HIVE_KNIGHT', + descConvo: 'DESC_HIVE_KNIGHT', + nameConvo: 'NAME_HIVE_KNIGHT', + notesConvo: 'NOTE_HIVE_KNIGHT', + playerDataBoolName: 'killedHiveKnight', + playerDataKillsName: 'killsHiveKnight', + playerDataName: 'HiveKnight', + playerDataNewDataName: 'newDataHiveKnight', + }, + { + portraitName: 'bestiary_fungus_zombie_03_s', + convoName: 'ZOM_SPINE', + descConvo: 'DESC_ZOM_SPINE', + nameConvo: 'NAME_ZOM_SPINE', + notesConvo: 'NOTE_ZOM_SPINE', + playerDataBoolName: 'killedGardenZombie', + playerDataKillsName: 'killsGardenZombie', + playerDataName: 'GardenZombie', + playerDataNewDataName: 'newDataGardenZombie', + }, + { + portraitName: 'bestiary__0028_crazy-hopper_s', + convoName: 'GRASS_HOPPER', + descConvo: 'DESC_GRASS_HOPPER', + nameConvo: 'NAME_GRASS_HOPPER', + notesConvo: 'NOTE_GRASS_HOPPER', + playerDataBoolName: 'killedGrassHopper', + playerDataKillsName: 'killsGrassHopper', + playerDataName: 'GrassHopper', + playerDataNewDataName: 'newDataGrassHopper', + }, + { + portraitName: 'bestiary_heavy_mantis_flyer_s', + convoName: 'MANTIS_FLYER_ADULT', + descConvo: 'DESC_MANTIS_FLYER_ADULT', + nameConvo: 'NAME_MANTIS_FLYER_ADULT', + notesConvo: 'NOTE_MANTIS_FLYER_ADULT', + playerDataBoolName: 'killedMantisHeavyFlyer', + playerDataKillsName: 'killsMantisHeavyFlyer', + playerDataName: 'MantisHeavyFlyer', + playerDataNewDataName: 'newDataMantisHeavyFlyer', + }, + { + portraitName: 'bestiary_heavy_mantis_s', + convoName: 'MANTIS_HEAVY', + descConvo: 'DESC_MANTIS_HEAVY', + nameConvo: 'NAME_MANTIS_HEAVY', + notesConvo: 'NOTE_MANTIS_HEAVY', + playerDataBoolName: 'killedHeavyMantis', + playerDataKillsName: 'killsHeavyMantis', + playerDataName: 'HeavyMantis', + playerDataNewDataName: 'newDataHeavyMantis', + }, + { + portraitName: 'bestiary__0060_traitor-lord_s', + convoName: 'TRAITOR_LORD', + descConvo: 'DESC_TRAITOR_LORD', + nameConvo: 'NAME_TRAITOR_LORD', + notesConvo: 'NOTE_TRAITOR_LORD', + playerDataBoolName: 'killedTraitorLord', + playerDataKillsName: 'killsTraitorLord', + playerDataName: 'TraitorLord', + playerDataNewDataName: 'newDataTraitorLord', + }, + { + portraitName: 'bestiary_colosseum_armoured_roller_s', + convoName: 'COL_ROLLER', + descConvo: 'DESC_COL_ROLLER', + nameConvo: 'NAME_COL_ROLLER', + notesConvo: 'NOTE_COL_ROLLER', + playerDataBoolName: 'killedColRoller', + playerDataKillsName: 'killsColRoller', + playerDataName: 'ColRoller', + playerDataNewDataName: 'newDataColRoller', + }, + { + portraitName: 'bestiary_colosseum_armoured_mosquito_s', + convoName: 'COL_MOSQUITO', + descConvo: 'DESC_COL_MOSQUITO', + nameConvo: 'NAME_COL_MOSQUITO', + notesConvo: 'NOTE_COL_MOSQUITO', + playerDataBoolName: 'killedColMosquito', + playerDataKillsName: 'killsColMosquito', + playerDataName: 'ColMosquito', + playerDataNewDataName: 'newDataColMosquito', + }, + { + portraitName: 'bestiary__0034_blobble_s', + convoName: 'BLOBBLE', + descConvo: 'DESC_BLOBBLE', + nameConvo: 'NAME_BLOBBLE', + notesConvo: 'NOTE_BLOBBLE', + playerDataBoolName: 'killedBlobble', + playerDataKillsName: 'killsBlobble', + playerDataName: 'Blobble', + playerDataNewDataName: 'newDataBlobble', + }, + { + portraitName: 'bestiary__0062_giant-fat-bee_s', + convoName: 'OBLOBBLE', + descConvo: 'DESC_OBLOBBLE', + nameConvo: 'NAME_OBLOBBLE', + notesConvo: 'NOTE_OBLOBBLE', + playerDataBoolName: 'killedOblobble', + playerDataKillsName: 'killsOblobble', + playerDataName: 'Oblobble', + playerDataNewDataName: 'newDataOblobble', + }, + { + portraitName: 'bestiary_colosseum_shield_gladiator_s', + convoName: 'COL_SHIELD', + descConvo: 'DESC_COL_SHIELD', + nameConvo: 'NAME_COL_SHIELD', + notesConvo: 'NOTE_COL_SHIELD', + playerDataBoolName: 'killedColShield', + playerDataKillsName: 'killsColShield', + playerDataName: 'ColShield', + playerDataNewDataName: 'newDataColShield', + }, + { + portraitName: 'bestiary_colosseum_miner_s', + convoName: 'COL_MINER', + descConvo: 'DESC_COL_MINER', + nameConvo: 'NAME_COL_MINER', + notesConvo: 'NOTE_COL_MINER', + playerDataBoolName: 'killedColMiner', + playerDataKillsName: 'killsColMiner', + playerDataName: 'ColMiner', + playerDataNewDataName: 'newDataColMiner', + }, + { + portraitName: 'bestiary_colosseum_flying_gladiator', + convoName: 'COL_FLYINGSENTRY', + descConvo: 'DESC_COL_FLYINGSENTRY', + nameConvo: 'NAME_COL_FLYINGSENTRY', + notesConvo: 'NOTE_COL_FLYINGSENTRY', + playerDataBoolName: 'killedColFlyingSentry', + playerDataKillsName: 'killsColFlyingSentry', + playerDataName: 'ColFlyingSentry', + playerDataNewDataName: 'newDataColFlyingSentry', + }, + { + portraitName: 'bestiary_colosseum_worm_gladiator_s', + convoName: 'COL_WORM', + descConvo: 'DESC_COL_WORM', + nameConvo: 'NAME_COL_WORM', + notesConvo: 'NOTE_COL_WORM', + playerDataBoolName: 'killedColWorm', + playerDataKillsName: 'killsColWorm', + playerDataName: 'ColWorm', + playerDataNewDataName: 'newDataColWorm', + }, + { + portraitName: 'bestiary_colosseum_hopper_s', + convoName: 'COL_HOPPER', + descConvo: 'DESC_COL_HOPPER', + nameConvo: 'NAME_COL_HOPPER', + notesConvo: 'NOTE_COL_HOPPER', + playerDataBoolName: 'killedColHopper', + playerDataKillsName: 'killsColHopper', + playerDataName: 'ColHopper', + playerDataNewDataName: 'newDataColHopper', + }, + { + portraitName: 'bestiary_electric_mage_s', + convoName: 'ELEC_MAGE', + descConvo: 'DESC_ELEC_MAGE', + nameConvo: 'NAME_ELEC_MAGE', + notesConvo: 'NOTE_ELEC_MAGE', + playerDataBoolName: 'killedElectricMage', + playerDataKillsName: 'killsElectricMage', + playerDataName: 'ElectricMage', + playerDataNewDataName: 'newDataElectricMage', + }, + { + portraitName: 'bestiary__0066_lobster-lancer_s', + convoName: 'LOBSTER_LANCER', + descConvo: 'DESC_LOBSTER_LANCER', + nameConvo: 'NAME_LOBSTER_LANCER', + notesConvo: 'NOTE_LOBSTER_LANCER', + playerDataBoolName: 'killedLobsterLancer', + playerDataKillsName: 'killsLobsterLancer', + playerDataName: 'LobsterLancer', + playerDataNewDataName: 'newDataLobsterLancer', + }, + { + portraitName: 'bestiary_gg__0000_icon_pale_runaway', + convoName: 'PALE_LURKER', + descConvo: 'DESC_PALE_LURKER', + nameConvo: 'NAME_PALE_LURKER', + notesConvo: 'NOTE_PALE_LURKER', + playerDataBoolName: 'killedPaleLurker', + playerDataKillsName: 'killsPaleLurker', + playerDataName: 'PaleLurker', + playerDataNewDataName: 'newDataPaleLurker', + }, + { + portraitName: 'bestiary__0048_zote_s', + convoName: 'ZOTE', + descConvo: 'DESC_ZOTE', + nameConvo: 'NAME_ZOTE', + notesConvo: 'NOTE_ZOTE', + playerDataBoolName: 'killedZote', + playerDataKillsName: 'killsZote', + playerDataName: 'Zote', + playerDataNewDataName: 'newDataZote', + }, + { + portraitName: 'bestiary_mighty_zote_portrait', + convoName: 'GREY_PRINCE', + descConvo: 'DESC_GREY_PRINCE', + nameConvo: 'NAME_GREY_PRINCE', + notesConvo: 'NOTE_GREY_PRINCE', + playerDataBoolName: 'killedGreyPrince', + playerDataKillsName: 'killsGreyPrince', + playerDataName: 'GreyPrince', + playerDataNewDataName: 'newDataGreyPrince', + }, + { + portraitName: 'bestiary_mighty_zoteling_portrait', + convoName: 'ZOTE_FLYER', + descConvo: 'DESC_ZOTE_FLYER', + nameConvo: 'NAME_ZOTE_FLYER', + notesConvo: 'NOTE_ZOTE_FLYER', + playerDataBoolName: 'killedZotelingBuzzer', + playerDataKillsName: 'killsZotelingBuzzer', + playerDataName: 'ZotelingBuzzer', + playerDataNewDataName: 'newDataZotelingBuzzer', + }, + { + portraitName: 'bestiary_mighty_zote_hopper_portrait', + convoName: 'ZOTE_HOPPER', + descConvo: 'DESC_ZOTE_HOPPER', + nameConvo: 'NAME_ZOTE_HOPPER', + notesConvo: 'NOTE_ZOTE_HOPPER', + playerDataBoolName: 'killedZotelingHopper', + playerDataKillsName: 'killsZotelingHopper', + playerDataName: 'ZotelingHopper', + playerDataNewDataName: 'newDataZotelingHopper', + }, + { + portraitName: 'bestiary_mighty_zote_balloon_portrait', + convoName: 'ZOTE_BALLOON', + descConvo: 'DESC_ZOTE_BALLOON', + nameConvo: 'NAME_ZOTE_BALLOON', + notesConvo: 'NOTE_ZOTE_BALLOON', + playerDataBoolName: 'killedZotelingBalloon', + playerDataKillsName: 'killsZotelingBalloon', + playerDataName: 'ZotelingBalloon', + playerDataNewDataName: 'newDataZotelingBalloon', + }, + { + portraitName: 'bestiary_0006_ghost_xero', + convoName: 'GHOST_XERO', + descConvo: 'DESC_GHOST_XERO', + nameConvo: 'NAME_GHOST_XERO', + notesConvo: 'NOTE_GHOST_XERO', + playerDataBoolName: 'killedGhostXero', + playerDataKillsName: 'killsGhostXero', + playerDataName: 'GhostXero', + playerDataNewDataName: 'newDataGhostXero', + }, + { + portraitName: 'bestiary_0000_ghost_brainslug', + convoName: 'GHOST_ALADAR', + descConvo: 'DESC_GHOST_ALADAR', + nameConvo: 'NAME_GHOST_ALADAR', + notesConvo: 'NOTE_GHOST_ALADAR', + playerDataBoolName: 'killedGhostAladar', + playerDataKillsName: 'killsGhostAladar', + playerDataName: 'GhostAladar', + playerDataNewDataName: 'newDataGhostAladar', + }, + { + portraitName: 'bestiary_0001_ghost_elderhu', + convoName: 'GHOST_HU', + descConvo: 'DESC_GHOST_HU', + nameConvo: 'NAME_GHOST_HU', + notesConvo: 'NOTE_GHOST_HU', + playerDataBoolName: 'killedGhostHu', + playerDataKillsName: 'killsGhostHu', + playerDataName: 'GhostHu', + playerDataNewDataName: 'newDataGhostHu', + }, + { + portraitName: 'bestiary_0004_ghost_caterpillar', + convoName: 'GHOST_MARMU', + descConvo: 'DESC_GHOST_MARMU', + nameConvo: 'NAME_GHOST_MARMU', + notesConvo: 'NOTE_GHOST_MARMU', + playerDataBoolName: 'killedGhostMarmu', + playerDataKillsName: 'killsGhostMarmu', + playerDataName: 'GhostMarmu', + playerDataNewDataName: 'newDataGhostMarmu', + }, + { + portraitName: 'bestiary_0005_ghost_no-eyes', + convoName: 'GHOST_NOEYES', + descConvo: 'DESC_GHOST_NOEYES', + nameConvo: 'NAME_GHOST_NOEYES', + notesConvo: 'NOTE_GHOST_NOEYES', + playerDataBoolName: 'killedGhostNoEyes', + playerDataKillsName: 'killsGhostNoEyes', + playerDataName: 'GhostNoEyes', + playerDataNewDataName: 'newDataGhostNoEyes', + }, + { + portraitName: 'bestiary_0002_ghost_galien', + convoName: 'GHOST_GALIEN', + descConvo: 'DESC_GHOST_GALIEN', + nameConvo: 'NAME_GHOST_GALIEN', + notesConvo: 'NOTE_GHOST_GALIEN', + playerDataBoolName: 'killedGhostGalien', + playerDataKillsName: 'killsGhostGalien', + playerDataName: 'GhostGalien', + playerDataNewDataName: 'newDataGhostGalien', + }, + { + portraitName: 'bestiary_0003_ghost_markoth', + convoName: 'GHOST_MARKOTH', + descConvo: 'DESC_GHOST_MARKOTH', + nameConvo: 'NAME_GHOST_MARKOTH', + notesConvo: 'NOTE_GHOST_MARKOTH', + playerDataBoolName: 'killedGhostMarkoth', + playerDataKillsName: 'killsGhostMarkoth', + playerDataName: 'GhostMarkoth', + playerDataNewDataName: 'newDataGhostMarkoth', + }, + { + portraitName: 'bestiary__0004_grimmkin_little_portrait', + convoName: 'FLAMEBEARER_SMALL', + descConvo: 'DESC_FLAMEBEARER_SMALL', + nameConvo: 'NAME_FLAMEBEARER_SMALL', + notesConvo: 'NOTE_FLAMEBEARER_SMALL', + playerDataBoolName: 'killedFlameBearerSmall', + playerDataKillsName: 'killsFlameBearerSmall', + playerDataName: 'FlameBearerSmall', + playerDataNewDataName: 'newDataFlameBearerSmall', + }, + { + portraitName: 'bestiary__0003_grimmkin_fat_portrait', + convoName: 'FLAMEBEARER_MED', + descConvo: 'DESC_FLAMEBEARER_MED', + nameConvo: 'NAME_FLAMEBEARER_MED', + notesConvo: 'NOTE_FLAMEBEARER_MED', + playerDataBoolName: 'killedFlameBearerMed', + playerDataKillsName: 'killsFlameBearerMed', + playerDataName: 'FlameBearerMed', + playerDataNewDataName: 'newDataFlameBearerMed', + }, + { + portraitName: 'bestiary__0002_grimmkin_tall_portrait', + convoName: 'FLAMEBEARER_LARGE', + descConvo: 'DESC_FLAMEBEARER_LARGE', + nameConvo: 'NAME_FLAMEBEARER_LARGE', + notesConvo: 'NOTE_FLAMEBEARER_LARGE', + playerDataBoolName: 'killedFlameBearerLarge', + playerDataKillsName: 'killsFlameBearerLarge', + playerDataName: 'FlameBearerLarge', + playerDataNewDataName: 'newDataFlameBearerLarge', + }, + { + portraitName: 'bestiary__0001_grimm_boss_portrait', + convoName: 'GRIMM', + descConvo: 'DESC_GRIMM', + nameConvo: 'NAME_GRIMM', + notesConvo: 'NOTE_GRIMM', + playerDataBoolName: 'killedGrimm', + playerDataKillsName: 'killsGrimm', + playerDataName: 'Grimm', + playerDataNewDataName: 'newDataGrimm', + }, + { + portraitName: 'bestiary__0000_grimm_nightmare_boss_portrait', + convoName: 'NIGHTMARE_GRIMM', + descConvo: 'DESC_NIGHTMARE_GRIMM', + nameConvo: 'NAME_NIGHTMARE_GRIMM', + notesConvo: 'NOTE_NIGHTMARE_GRIMM', + playerDataBoolName: 'killedNightmareGrimm', + playerDataKillsName: 'killsNightmareGrimm', + playerDataName: 'NightmareGrimm', + playerDataNewDataName: 'newDataNightmareGrimm', + }, + { + portraitName: 'bestiary_gg__0003_icon_nailmasters', + convoName: 'NAILMASTERS', + descConvo: 'DESC_NAILMASTERS', + nameConvo: 'NAME_NAILMASTERS', + notesConvo: 'NOTE_NAILMASTERS', + playerDataBoolName: 'killedNailBros', + playerDataKillsName: 'killsNailBros', + playerDataName: 'NailBros', + playerDataNewDataName: 'newDataNailBros', + }, + { + portraitName: 'bestiary_gg__0002_icon_paintmaster', + convoName: 'PAINTMASTER', + descConvo: 'DESC_PAINTMASTER', + nameConvo: 'NAME_PAINTMASTER', + notesConvo: 'NOTE_PAINTMASTER', + playerDataBoolName: 'killedPaintmaster', + playerDataKillsName: 'killsPaintmaster', + playerDataName: 'Paintmaster', + playerDataNewDataName: 'newDataPaintmaster', + }, + { + portraitName: 'bestiary_gg__0004_icon_sage', + convoName: 'SAGE_SLY', + descConvo: 'DESC_SAGE_SLY', + nameConvo: 'NAME_SAGE_SLY', + notesConvo: 'NOTE_SAGE_SLY', + playerDataBoolName: 'killedNailsage', + playerDataKillsName: 'killsNailsage', + playerDataName: 'Nailsage', + playerDataNewDataName: 'newDataNailsage', + }, + { + portraitName: 'bestiary__0042_white-palace-fly_s', + convoName: 'PALACE_FLY', + descConvo: 'DESC_PALACE_FLY', + nameConvo: 'NAME_PALACE_FLY', + notesConvo: 'NOTE_PALACE_FLY', + playerDataBoolName: 'killedPalaceFly', + playerDataKillsName: 'killsPalaceFly', + playerDataName: 'PalaceFly', + playerDataNewDataName: 'newDataPalaceFly', + }, + { + portraitName: 'bestiary_white_servant_s', + convoName: 'WHITE_ROYAL', + descConvo: 'DESC_WHITE_ROYAL', + nameConvo: 'NAME_WHITE_ROYAL', + notesConvo: 'NOTE_WHITE_ROYAL', + playerDataBoolName: 'killedWhiteRoyal', + playerDataKillsName: 'killsWhiteRoyal', + playerDataName: 'WhiteRoyal', + playerDataNewDataName: 'newDataWhiteRoyal', + }, + { + portraitName: 'bestiary_kingsguard_s', + convoName: 'ROYAL_GUARD', + descConvo: 'DESC_ROYAL_GUARD', + nameConvo: 'NAME_ROYAL_GUARD', + notesConvo: 'NOTE_ROYAL_GUARD', + playerDataBoolName: 'killedRoyalGuard', + playerDataKillsName: 'killsRoyalGuard', + playerDataName: 'RoyalGuard', + playerDataNewDataName: 'newDataRoyalGuard', + }, + { + portraitName: 'bestiary__0044_shade-sibling_s', + convoName: 'SIBLING', + descConvo: 'DESC_SIBLING', + nameConvo: 'NAME_SIBLING', + notesConvo: 'NOTE_SIBLING', + playerDataBoolName: 'killedSibling', + playerDataKillsName: 'killsSibling', + playerDataName: 'Sibling', + playerDataNewDataName: 'newDataSibling', + }, + { + portraitName: 'bestiary_abyss_tendrils_s', + convoName: 'ABYSS_TENDRIL', + descConvo: 'DESC_ABYSS_TENDRIL', + nameConvo: 'NAME_ABYSS_TENDRIL', + notesConvo: 'NOTE_ABYSS_TENDRIL', + playerDataBoolName: 'killedAbyssTendril', + playerDataKillsName: 'killsAbyssTendril', + playerDataName: 'AbyssTendril', + playerDataNewDataName: 'newDataAbyssTendril', + }, + { + portraitName: 'bestiary_hornet_s', + convoName: 'HORNET', + descConvo: 'DESC_HORNET', + nameConvo: 'NAME_HORNET', + notesConvo: 'NOTE_HORNET', + playerDataBoolName: 'killedHornet', + playerDataKillsName: 'killsHornet', + playerDataName: 'Hornet', + playerDataNewDataName: 'newDataHornet', + }, + { + portraitName: 'bestiary__0002_hollow-knight_s', + convoName: 'HOLLOW_KNIGHT', + descConvo: 'DESC_HOLLOW_KNIGHT', + nameConvo: 'NAME_HOLLOW_KNIGHT', + notesConvo: 'NOTE_HOLLOW_KNIGHT', + playerDataBoolName: 'killedHollowKnight', + playerDataKillsName: 'killsHollowKnight', + playerDataName: 'HollowKnight', + playerDataNewDataName: 'newDataHollowKnight', + }, + { + portraitName: 'bestiary_gg__0001_icon_HK_prime', + convoName: 'PURE_VESSEL', + descConvo: 'DESC_PURE_VESSEL', + nameConvo: 'NAME_PURE_VESSEL', + notesConvo: 'NOTE_PURE_VESSEL', + playerDataBoolName: 'killedHollowKnightPrime', + playerDataKillsName: 'killsHollowKnightPrime', + playerDataName: 'HollowKnightPrime', + playerDataNewDataName: 'newDataHollowKnightPrime', + }, + { + portraitName: 'bestiary__0000_radiant_moth_s', + convoName: 'FINAL_BOSS', + descConvo: 'DESC_FINAL_BOSS', + nameConvo: 'NAME_FINAL_BOSS', + notesConvo: 'NOTE_FINAL_BOSS', + playerDataBoolName: 'killedFinalBoss', + playerDataKillsName: 'killsFinalBoss', + playerDataName: 'FinalBoss', + playerDataNewDataName: 'newDataFinalBoss', + }, + { + portraitName: 'bestiary_hollow-shade_s', + convoName: 'HOLLOW_SHADE', + descConvo: 'DESC_HOLLOW_SHADE', + nameConvo: 'NAME_HOLLOW_SHADE', + notesConvo: 'NOTE_HOLLOW_SHADE', + playerDataBoolName: 'killedCrawler', + playerDataKillsName: 'killsCrawler', + playerDataName: 'Crawler', + playerDataNewDataName: 'newDataCrawler', + }, + { + portraitName: 'bestiary_hunter_mark', + convoName: 'HUNTERMARK', + descConvo: 'DESC_HUNTERMARK', + nameConvo: 'NAME_HUNTERMARK', + notesConvo: 'NOTE_HUNTERMARK', + playerDataBoolName: 'killedHunterMark', + playerDataKillsName: 'killsHunterMark', + playerDataName: 'HunterMark', + playerDataNewDataName: 'newDataHunterMark', + }, + { + portraitName: 'bestiary_vessel_seal', + convoName: 'KIN_SEAL', + descConvo: 'DESC_KIN_SEAL', + nameConvo: 'NAME_KIN_SEAL', + notesConvo: 'NOTE_KIN_SEAL', + playerDataBoolName: 'killedBindingSeal', + playerDataKillsName: 'killsBindingSeal', + playerDataName: 'BindingSeal', + playerDataNewDataName: 'newDataBindingSeal', + }, + { + portraitName: 'bestiary_gg_shade_idol_icon', + convoName: 'VOID_IDOL_1', + descConvo: 'DESC_VOID_IDOL_1', + nameConvo: 'NAME_VOID_IDOL_1', + notesConvo: 'NOTE_VOID_IDOL_1', + playerDataBoolName: 'killedVoidIdol_1', + playerDataKillsName: 'killsVoidIdol_1', + playerDataName: 'VoidIdol_1', + playerDataNewDataName: 'newDataVoidIdol_1', + }, + { + portraitName: 'bestiary_gg_shade_idol_icon', + convoName: 'VOID_IDOL_2', + descConvo: 'DESC_VOID_IDOL_2', + nameConvo: 'NAME_VOID_IDOL_2', + notesConvo: 'NOTE_VOID_IDOL_2', + playerDataBoolName: 'killedVoidIdol_2', + playerDataKillsName: 'killsVoidIdol_2', + playerDataName: 'VoidIdol_2', + playerDataNewDataName: 'newDataVoidIdol_2', + }, + { + portraitName: 'bestiary_gg_shade_idol_icon', + convoName: 'VOID_IDOL_3', + descConvo: 'DESC_VOID_IDOL_3', + nameConvo: 'NAME_VOID_IDOL_3', + notesConvo: 'NOTE_VOID_IDOL_3', + playerDataBoolName: 'killedVoidIdol_3', + playerDataKillsName: 'killsVoidIdol_3', + playerDataName: 'VoidIdol_3', + playerDataNewDataName: 'newDataVoidIdol_3', + }, + { + portraitName: 'bestiary_gg_mask_icon', + convoName: 'GODSEEKER_MASK', + descConvo: 'DESC_GODSEEKER_MASK', + nameConvo: 'NAME_GODSEEKER_MASK', + notesConvo: 'NOTE_GODSEEKER_MASK', + playerDataBoolName: 'killedGodseekerMask', + playerDataKillsName: 'killsGodseekerMask', + playerDataName: 'GodseekerMask', + playerDataNewDataName: 'newDataGodseekerMask', + }, +] as const; diff --git a/src/lib/viz/generated/enemies.generated.ts b/src/lib/viz/generated/enemies.generated.ts index 15dc66c4..cde963d2 100644 --- a/src/lib/viz/generated/enemies.generated.ts +++ b/src/lib/viz/generated/enemies.generated.ts @@ -854,4 +854,4 @@ export const enemiesGenerated = { shortCode: '4R', neededForJournal: 1, }, -}; +} as const; diff --git a/src/lib/viz/player-data/enemies.ts b/src/lib/viz/player-data/enemies.ts new file mode 100644 index 00000000..d5efafdd --- /dev/null +++ b/src/lib/viz/player-data/enemies.ts @@ -0,0 +1,97 @@ +import { enemiesJournalGenerated } from '../generated/enemies-journal.generated'; +import { enemiesGenerated } from '../generated/enemies.generated'; + +type EnemyName = keyof typeof enemiesGenerated; + +// fields in playerData {name}Defeated: boolean +// Some of the defeated fields need to be used to detect boss kills instead +// like for bosses without journal entries (dream bosses) and for enemies which together +// create a single 'boss' like the Watcher Knights. +// additionally the dreamers are detected like this. +export const playerDataNameToDefeatedName: Record< + string, + { enemy: EnemyName; overrideName?: string } | { dreamer: string; achievementSprite: string } | undefined +> = { + // guardians would refer to the watcher knights but only becomes true once lurien is defeated, therefore undefined + guardians: undefined, // { enemy: 'BlackKnight', overrideName: 'Watcher Knights' }, + lurien: { dreamer: 'Lurien', achievementSprite: 'Achievement_icon__0000_watcher' }, + hegemol: { dreamer: 'Herrah', achievementSprite: 'Achievement_icon__0002_beast' }, + monomon: { dreamer: 'Monomon', achievementSprite: 'Achievement_icon__0001_teacher' }, + zote: { enemy: 'Zote' }, + falseKnight: undefined, + falseKnightDream: undefined, + mawlek: undefined, + giantBuzzer: undefined, + giantFly: undefined, + blocker1: undefined, + blocker2: undefined, + hornet1: { enemy: 'Hornet', overrideName: 'Hornet Protector' }, + collector: undefined, + hornetOutskirts: { enemy: 'Hornet', overrideName: 'Hornet Sentinel' }, + // dream bosses (some missing?) + mageLordDream: { enemy: 'MageLord', overrideName: 'Soul Tyrant' }, + infectedKnightDream: { enemy: 'FalseKnight', overrideName: 'Failed Champion' }, + whiteDefender: { enemy: 'DungDefender', overrideName: 'White Defender' }, + greyPrince: { enemy: 'Zote', overrideName: 'Grey Prince Zote' }, + // dream warriors + aladarSlug: undefined, + xero: undefined, + elderHu: undefined, + mumCaterpillar: undefined, + noEyes: undefined, + markoth: undefined, + galien: undefined, + megaMossCharger: undefined, + mageLord: undefined, + // other bosses + flukeMother: undefined, + duskKnight: undefined, +}; + +const journalInfoByPlayerDataName = Object.fromEntries( + enemiesJournalGenerated.map((journalInfo) => [journalInfo.playerDataName, journalInfo]), +); + +const enemyArray = Object.values(enemiesGenerated).map((enemy) => { + const journalInfo = journalInfoByPlayerDataName[enemy.name]; + return { + ...enemy, + portraitName: journalInfo?.portraitName, + convoName: journalInfo?.convoName, + descConvo: journalInfo?.descConvo, + nameConvo: journalInfo?.nameConvo, + notesConvo: journalInfo?.notesConvo, + playerDataBoolName: journalInfo?.playerDataBoolName, + playerDataKillsName: journalInfo?.playerDataKillsName, + playerDataName: journalInfo?.playerDataName, + playerDataNewDataName: journalInfo?.playerDataNewDataName, + }; +}); + +export type EnemyInfo = (typeof enemyArray)[number]; + +export const enemies = { + byPlayerDataName: Object.fromEntries(enemyArray.map((enemy) => [enemy.name, enemy])), +}; + +// By default all enemies which need to be killed only once +// are seen as bosses, there are some exceptions +// of enemies which have only 1 kill, but are no bosses and the other way around +// these exceptions are defined here +const isBossOverrides: Partial> = { + BigFly: true, // Gruz Mother + MageKnight: true, // Soul Warrior + ZapBug: false, // Lumafly + Worm: false, // Goam + BigCentipede: false, // Garpede + AbyssTendril: false, // Void Tendrils +}; + +export function isEnemyBoss(enemy: EnemyInfo): boolean { + const override = isBossOverrides[enemy.name]; + if (override !== undefined) { + return override; + } + + return enemy.neededForJournal === 1; +} diff --git a/src/lib/viz/player-data/player-data.ts b/src/lib/viz/player-data/player-data.ts index b61c107d..1e67c276 100644 --- a/src/lib/viz/player-data/player-data.ts +++ b/src/lib/viz/player-data/player-data.ts @@ -54,3 +54,29 @@ export function parsePlayerDataFieldValue( export function getDefaultValue(field: TField): PlayerDataFieldValue { return parsePlayerDataFieldValue(field, field.defaultValue); } + +// SUBSETS OF PLAYER DATA FIELDS +// kill +export type PlayerDataKilledField = Extract; +export function isPlayerDataKilledField(field: PlayerDataField): field is PlayerDataKilledField { + return field.name.startsWith('killed'); +} +export function getEnemyNameFromKilledField(field: PlayerDataKilledField) { + return field.name.slice('killed'.length); +} +// defeat +export type PlayerDataDefeatedField = Extract; +export function isPlayerDataDefeatedField(field: PlayerDataField): field is PlayerDataDefeatedField { + return field.name.endsWith('Defeated'); +} +export function getEnemyNameFromDefeatedField(field: PlayerDataDefeatedField) { + return field.name.slice(0, -'Defeated'.length); +} +// gotCharm +export type PlayerDataGotCharmField = Extract; +export function isPlayerDataGotCharmField(field: PlayerDataField): field is PlayerDataGotCharmField { + return field.name.startsWith('gotCharm_'); +} +export function getCharmIdFromGotCharmField(field: PlayerDataGotCharmField) { + return parseInt(field.name.slice('gotCharm_'.length)); +} diff --git a/src/lib/viz/recording-files/recording-splits.ts b/src/lib/viz/recording-files/recording-splits.ts new file mode 100644 index 00000000..a7529301 --- /dev/null +++ b/src/lib/viz/recording-files/recording-splits.ts @@ -0,0 +1,151 @@ +import { assertNever } from '~/lib/utils/utils'; +import { enemiesJournalLang } from '../generated/enemies-journal-lang.generated'; +import { enemies, isEnemyBoss, playerDataNameToDefeatedName, type EnemyInfo } from '../player-data/enemies'; +import { + getCharmIdFromGotCharmField, + getEnemyNameFromDefeatedField, + getEnemyNameFromKilledField, + isPlayerDataDefeatedField, + isPlayerDataGotCharmField, + isPlayerDataKilledField, + playerDataFields, +} from '../player-data/player-data'; +import { type CombinedRecording } from './recording'; + +export const RecordingSplitGroups = [ + { + name: 'boss', + displayName: 'Bosses', + }, + { + name: 'dreamer', + displayName: 'Dreamers', + }, + { + name: 'charmCollection', + displayName: 'Charm pick ups', + }, +] as const; + +export type RecordingSplitGroup = (typeof RecordingSplitGroups)[number]['name']; + +export interface RecordingSplit { + msIntoGame: number; + title: string; + tooltip: string; + imageUrl: string | undefined; + group: RecordingSplitGroup; + debugInfo: unknown; +} + +function createRecordingSplitFromEnemy( + msIntoGame: number, + enemyName: string, + enemyInfo: EnemyInfo | undefined, + overrideName?: string | undefined, +): RecordingSplit { + const enemyNameDisplay = + overrideName ?? (enemyInfo?.nameConvo ? enemiesJournalLang[enemyInfo.nameConvo] ?? enemyName : enemyName); + return { + msIntoGame, + title: enemyNameDisplay, // + '(' + enemyInfo?.neededForJournal + ')', + tooltip: `Defeated ${enemyNameDisplay}`, + imageUrl: enemyInfo?.portraitName ? `/ingame-sprites/bestiary/${enemyInfo.portraitName}.png` : undefined, + group: 'boss', + debugInfo: enemyInfo, + }; +} + +// export class DefeatedRecordingSplit extends RecordingSplitBase { +// constructor( +// msIntoGame: number, +// public override title: string, +// public override tooltip: string, +// ) { +// super(msIntoGame); +// } + +// fromEnemy(msIntoGame: number, enemyName: string, field: PlayerDataDefeatedField, enemyInfo: EnemyInfo | undefined) { +// const enemyNameDisplay = enemyInfo?.nameConvo ? enemiesJournalLang[enemyInfo.nameConvo] ?? enemyName : enemyName; +// return new DefeatedRecordingSplit(msIntoGame, enemyName, 'Defeated ' + enemyName); + +// this.title = this.enemyDisplayName; +// this.tooltip = `Defeated ${this.enemyDisplayName}`; +// this.imageUrl = enemyInfo?.portraitName ? `/ingame-sprites/bestiary/${enemyInfo.portraitName}.png` : undefined; +// } +// } + +export function createRecordingSplits(recording: CombinedRecording): RecordingSplit[] { + const splits: RecordingSplit[] = []; + + for (const field of Object.values(playerDataFields.byFieldName)) { + if (isPlayerDataDefeatedField(field)) { + const enemyDefeatName = getEnemyNameFromDefeatedField(field); + const defeatMapping = playerDataNameToDefeatedName[enemyDefeatName]; + recording.allPlayerDataEventsOfField(field).forEach((event) => { + if (!(event.value && !event.previousPlayerDataEventOfField?.value)) { + return; + } + + if (defeatMapping === undefined) { + // ignore + // splits.push({ + // msIntoGame: event.msIntoGame, + // title: event.field.name, + // tooltip: 'Unknown', + // imageUrl: undefined, + // group: 'boss', + // debugInfo: undefined, + // }); + } else if ('enemy' in defeatMapping) { + const enemyInfo = enemies.byPlayerDataName[defeatMapping.enemy]; + splits.push( + createRecordingSplitFromEnemy( + event.msIntoGame, + enemyDefeatName, + enemyInfo, + defeatMapping.overrideName, + ), + ); + } else if ('dreamer' in defeatMapping) { + splits.push({ + msIntoGame: event.msIntoGame, + title: defeatMapping.dreamer, + tooltip: defeatMapping.dreamer + "'s Seal broken", + imageUrl: `/ingame-sprites/achievement/${defeatMapping.achievementSprite}.png`, + group: 'dreamer', + debugInfo: defeatMapping, + }); + } else { + assertNever(defeatMapping); + } + }); + } else if (isPlayerDataKilledField(field)) { + const enemyName = getEnemyNameFromKilledField(field); + const enemyInfo = enemies.byPlayerDataName[enemyName]; + if (enemyInfo && isEnemyBoss(enemyInfo)) { + recording.allPlayerDataEventsOfField(field).forEach((event) => { + if (event.value && !event.previousPlayerDataEventOfField?.value) { + splits.push(createRecordingSplitFromEnemy(event.msIntoGame, enemyName, enemyInfo)); + } + }); + } + } else if (isPlayerDataGotCharmField(field)) { + const charmId = getCharmIdFromGotCharmField(field); + recording.allPlayerDataEventsOfField(field).forEach((event) => { + if (event.value && !event.previousPlayerDataEventOfField?.value) { + splits.push({ + msIntoGame: event.msIntoGame, + title: `Got Charm ${charmId}`, + tooltip: `Got charm ${charmId}`, + imageUrl: undefined, + group: 'charmCollection', + debugInfo: undefined, + }); + } + }); + } + } + + return splits.sort((a, b) => a.msIntoGame - b.msIntoGame); +} diff --git a/src/lib/viz/recording-files/recording.ts b/src/lib/viz/recording-files/recording.ts index 439362b3..79eebeb3 100644 --- a/src/lib/viz/recording-files/recording.ts +++ b/src/lib/viz/recording-files/recording.ts @@ -8,6 +8,7 @@ import { PlayerDataEvent } from './events/player-data-event'; import { type PlayerPositionEvent } from './events/player-position-event'; import { RecordingEventBase, type RecordingEventBaseOptions } from './events/recording-event-base'; import { type SceneEvent } from './events/scene-event'; +import { RecordingSplit, createRecordingSplits } from './recording-splits'; type RecordingFileVersionEventOptions = RecordingEventBaseOptions & Pick; export class RecordingFileVersionEvent extends RecordingEventBase { @@ -114,6 +115,7 @@ export class ParsedRecording { export class CombinedRecording extends ParsedRecording { public playerDataEventsPerField = new Map[]>(); public frameEndEvents: FrameEndEvent[]; + public splits: RecordingSplit[]; constructor( events: RecordingEvent[], @@ -133,6 +135,7 @@ export class CombinedRecording extends ParsedRecording { } this.frameEndEvents = this.events.filter((it): it is FrameEndEvent => it instanceof FrameEndEvent); + this.splits = createRecordingSplits(this); } lastPlayerDataEventOfField(field: TField): PlayerDataEvent | null { diff --git a/src/lib/viz/recording-files/run-aggregation-store.tsx b/src/lib/viz/recording-files/run-aggregation-store.tsx index 333d0685..6ce2a575 100644 --- a/src/lib/viz/recording-files/run-aggregation-store.tsx +++ b/src/lib/viz/recording-files/run-aggregation-store.tsx @@ -7,7 +7,7 @@ import spellUpImg from '../../../../public/ingame-sprites/Inv_0024_spell_scream_ import spellFireballImg from '../../../../public/ingame-sprites/Inv_0025_spell_fireball_01.png'; import spellDownImg from '../../../../public/ingame-sprites/Inv_0026_spell_quake_01.png'; import focusImg from '../../../../public/ingame-sprites/Inv_0029_spell_core.png'; -import shadeImg from '../../../../public/ingame-sprites/bestiary_hollow-shade_s.png'; +import shadeImg from '../../../../public/ingame-sprites/bestiary/bestiary_hollow-shade_s.png'; import healthImg from '../../../../public/ingame-sprites/select_game_HUD_0001_health.png'; import { roomGroupNamesBySceneName } from '../map-data/room-groups'; import { playerDataFields } from '../player-data/player-data'; diff --git a/src/server/api/routers/run/get-run-meta.ts b/src/server/api/routers/run/get-run-meta.ts index 06a1bee7..78740947 100644 --- a/src/server/api/routers/run/get-run-meta.ts +++ b/src/server/api/routers/run/get-run-meta.ts @@ -10,6 +10,7 @@ export async function getRunMeta(id: string): Promise { columns: { visibility: true, archived: true, + title: true, ...runTagFieldsSelect, }, with: { @@ -47,11 +48,12 @@ export async function getRunMeta(id: string): Promise { const speedRunTags = tagGroupFromCode('speedrun').tags; const isSpeedrun = tags.some((tag) => speedRunTags.includes(tag)); + const titleTitle = data?.title ? data.title + ' - ' : ''; const tagTitle = tagNames.length === 0 ? '' : tagNames.join(', ') + ' '; const typeTitle = isSpeedrun ? 'Speedrun' : 'Gameplay'; const userTitle = data?.user?.name ? ` by ${data.user.name}` : ''; return { - title: `${tagTitle}${typeTitle}${userTitle} - HKViz`, + title: `${titleTitle}${tagTitle}${typeTitle}${userTitle} - HKViz`, alternates: { canonical: `/run/${id}`, },