From a0efc33ec63454e6daaa339c6086c5482ed2c45f Mon Sep 17 00:00:00 2001 From: Wynd Date: Wed, 25 Jun 2025 02:15:27 +0300 Subject: [PATCH] Massive migration towards js modules and better folder management --- input/kh1/drops/lucid.toml | 32 + input/kh1/drops/spirit.toml | 28 + input/kh1/synthesis.toml | 603 ++++++++++++++++++ .../assets}/enemies/aerial_champ.webp | Bin .../assets}/enemies/aerial_knocker.webp | Bin .../assets}/enemies/aerial_viking.webp | Bin .../assets}/enemies/aeroplane.webp | Bin .../assets}/enemies/air_pirate.webp | Bin .../assets}/enemies/armored_knight.webp | Bin .../assets}/enemies/assassin.webp | Bin .../assets}/enemies/assault_rider.webp | Bin .../assets}/enemies/beffudler.webp | Bin .../assets}/enemies/berserker.webp | Bin .../assets}/enemies/bolt_tower.webp | Bin .../assets}/enemies/bookmaster.webp | Bin .../assets}/enemies/camo_cannon.webp | Bin .../assets}/enemies/cannon_gun.webp | Bin .../assets}/enemies/creeper.webp | Bin .../assets}/enemies/creeper_plant.webp | Bin .../assets}/enemies/crescendo.webp | Bin .../assets}/enemies/crimson_jazz.webp | Bin {assets => public/assets}/enemies/dancer.webp | Bin .../assets}/enemies/devastator.webp | Bin .../assets}/enemies/dragoon.webp | Bin .../assets}/enemies/driller_mole.webp | Bin {assets => public/assets}/enemies/dusk.webp | Bin .../assets}/enemies/emerald_blues.webp | Bin .../assets}/enemies/fat_bandit.webp | Bin .../assets}/enemies/fiery_globe.webp | Bin .../assets}/enemies/fortuneteller.webp | Bin .../assets}/enemies/gambler.webp | Bin .../assets}/enemies/gargoyle_knight.webp | Bin .../assets}/enemies/gargoyle_warrior.webp | Bin .../assets}/enemies/graveyard.webp | Bin .../assets}/enemies/hammer_frame.webp | Bin .../assets}/enemies/hook_bat.webp | Bin .../assets}/enemies/hot_rod.webp | Bin .../assets}/enemies/icy_cube.webp | Bin .../assets}/enemies/iron_hammer.webp | Bin .../assets}/enemies/lance_soldier.webp | Bin .../assets}/enemies/lance_warrior.webp | Bin .../assets}/enemies/large_body.webp | Bin .../assets}/enemies/living_bone.webp | Bin .../assets}/enemies/luna_bandit.webp | Bin .../assets}/enemies/mad_ride.webp | Bin .../assets}/enemies/magic_phantom.webp | Bin .../assets}/enemies/magnum_loader.webp | Bin .../assets}/enemies/minute_bomb.webp | Bin .../assets}/enemies/morning_star.webp | Bin .../assets}/enemies/necromancer.webp | Bin .../assets}/enemies/neoshadow.webp | Bin .../assets}/enemies/nightwalker.webp | Bin .../assets}/enemies/rabid_dog.webp | Bin .../assets}/enemies/rapid_thruster.webp | Bin .../assets}/enemies/reckless.webp | Bin .../assets}/enemies/runemaster.webp | Bin .../assets}/enemies/samurai.webp | Bin {assets => public/assets}/enemies/shadow.webp | Bin {assets => public/assets}/enemies/shaman.webp | Bin .../assets}/enemies/silver_rock.webp | Bin {assets => public/assets}/enemies/sniper.webp | Bin .../assets}/enemies/soldier.webp | Bin .../assets}/enemies/sorcerer.webp | Bin .../assets}/enemies/spring_metal.webp | Bin .../assets}/enemies/strafer.webp | Bin .../assets}/enemies/surveillance_robot.webp | Bin .../assets}/enemies/tornado_step.webp | Bin .../assets}/enemies/toy_soldier.webp | Bin .../assets}/enemies/trick_ghost.webp | Bin .../assets}/enemies/wight_knight.webp | Bin .../assets}/materials/blazing/crystal.webp | Bin .../assets}/materials/blazing/gem.webp | Bin .../assets}/materials/blazing/shard.webp | Bin .../assets}/materials/blazing/stone.webp | Bin .../assets}/materials/bright/crystal.webp | Bin .../assets}/materials/bright/gem.webp | Bin .../assets}/materials/bright/shard.webp | Bin .../assets}/materials/bright/stone.webp | Bin .../assets}/materials/dark/crystal.webp | Bin .../assets}/materials/dark/gem.webp | Bin .../assets}/materials/dark/shard.webp | Bin .../assets}/materials/dark/stone.webp | Bin .../assets}/materials/dense/crystal.webp | Bin .../assets}/materials/dense/gem.webp | Bin .../assets}/materials/dense/shard.webp | Bin .../assets}/materials/dense/stone.webp | Bin .../assets}/materials/energy/crystal.webp | Bin .../assets}/materials/energy/gem.webp | Bin .../assets}/materials/energy/shard.webp | Bin .../assets}/materials/energy/stone.webp | Bin .../assets}/materials/frost/crystal.webp | Bin .../assets}/materials/frost/gem.webp | Bin .../assets}/materials/frost/shard.webp | Bin .../assets}/materials/frost/stone.webp | Bin .../assets}/materials/lightning/crystal.webp | Bin .../assets}/materials/lightning/gem.webp | Bin .../assets}/materials/lightning/shard.webp | Bin .../assets}/materials/lightning/stone.webp | Bin .../assets}/materials/lucid/crystal.webp | Bin .../assets}/materials/lucid/gem.webp | Bin .../assets}/materials/lucid/shard.webp | Bin .../assets}/materials/lucid/stone.webp | Bin .../assets}/materials/power/crystal.webp | Bin .../assets}/materials/power/gem.webp | Bin .../assets}/materials/power/shard.webp | Bin .../assets}/materials/power/stone.webp | Bin .../materials/remembrance/crystal.webp | Bin .../assets}/materials/remembrance/gem.webp | Bin .../assets}/materials/remembrance/shard.webp | Bin .../assets}/materials/remembrance/stone.webp | Bin .../assets}/materials/serenity/crystal.webp | Bin .../assets}/materials/serenity/gem.webp | Bin .../assets}/materials/serenity/shard.webp | Bin .../assets}/materials/serenity/stone.webp | Bin .../assets}/materials/twilight/crystal.webp | Bin .../assets}/materials/twilight/gem.webp | Bin .../assets}/materials/twilight/shard.webp | Bin .../assets}/materials/twilight/stone.webp | Bin .../bbs/script.js => public/scripts/bbs.js | 2 + public/scripts/kh2.js | 29 + .../kh3/script.js => public/scripts/kh3.js | 0 .../scripts/modules/common/helper.js | 2 +- .../scripts/modules/common/mat-kind-filter.js | 29 +- src/common/materials.rs | 45 +- src/kh1.rs | 27 + src/kh2.rs | 19 +- src/main.rs | 6 + templates/components/ddd/script.js | 0 templates/layouts/base.html | 1 - templates/macros/common/macros.html | 31 + templates/macros/kh2/macros.html | 28 - templates/pages/bbs/melding.html | 2 +- templates/pages/ddd/boards.html | 1 - templates/pages/index.html | 9 +- templates/pages/kh1/drops.html | 23 + templates/pages/kh2/drops.html | 4 +- templates/pages/kh3/food-sim.html | 2 +- 137 files changed, 842 insertions(+), 81 deletions(-) create mode 100644 input/kh1/drops/lucid.toml create mode 100644 input/kh1/drops/spirit.toml create mode 100644 input/kh1/synthesis.toml rename {assets => public/assets}/enemies/aerial_champ.webp (100%) rename {assets => public/assets}/enemies/aerial_knocker.webp (100%) rename {assets => public/assets}/enemies/aerial_viking.webp (100%) rename {assets => public/assets}/enemies/aeroplane.webp (100%) rename {assets => public/assets}/enemies/air_pirate.webp (100%) rename {assets => public/assets}/enemies/armored_knight.webp (100%) rename {assets => public/assets}/enemies/assassin.webp (100%) rename {assets => public/assets}/enemies/assault_rider.webp (100%) rename {assets => public/assets}/enemies/beffudler.webp (100%) rename {assets => public/assets}/enemies/berserker.webp (100%) rename {assets => public/assets}/enemies/bolt_tower.webp (100%) rename {assets => public/assets}/enemies/bookmaster.webp (100%) rename {assets => public/assets}/enemies/camo_cannon.webp (100%) rename {assets => public/assets}/enemies/cannon_gun.webp (100%) rename {assets => public/assets}/enemies/creeper.webp (100%) rename {assets => public/assets}/enemies/creeper_plant.webp (100%) rename {assets => public/assets}/enemies/crescendo.webp (100%) rename {assets => public/assets}/enemies/crimson_jazz.webp (100%) rename {assets => public/assets}/enemies/dancer.webp (100%) rename {assets => public/assets}/enemies/devastator.webp (100%) rename {assets => public/assets}/enemies/dragoon.webp (100%) rename {assets => public/assets}/enemies/driller_mole.webp (100%) rename {assets => public/assets}/enemies/dusk.webp (100%) rename {assets => public/assets}/enemies/emerald_blues.webp (100%) rename {assets => public/assets}/enemies/fat_bandit.webp (100%) rename {assets => public/assets}/enemies/fiery_globe.webp (100%) rename {assets => public/assets}/enemies/fortuneteller.webp (100%) rename {assets => public/assets}/enemies/gambler.webp (100%) rename {assets => public/assets}/enemies/gargoyle_knight.webp (100%) rename {assets => public/assets}/enemies/gargoyle_warrior.webp (100%) rename {assets => public/assets}/enemies/graveyard.webp (100%) rename {assets => public/assets}/enemies/hammer_frame.webp (100%) rename {assets => public/assets}/enemies/hook_bat.webp (100%) rename {assets => public/assets}/enemies/hot_rod.webp (100%) rename {assets => public/assets}/enemies/icy_cube.webp (100%) rename {assets => public/assets}/enemies/iron_hammer.webp (100%) rename {assets => public/assets}/enemies/lance_soldier.webp (100%) rename {assets => public/assets}/enemies/lance_warrior.webp (100%) rename {assets => public/assets}/enemies/large_body.webp (100%) rename {assets => public/assets}/enemies/living_bone.webp (100%) rename {assets => public/assets}/enemies/luna_bandit.webp (100%) rename {assets => public/assets}/enemies/mad_ride.webp (100%) rename {assets => public/assets}/enemies/magic_phantom.webp (100%) rename {assets => public/assets}/enemies/magnum_loader.webp (100%) rename {assets => public/assets}/enemies/minute_bomb.webp (100%) rename {assets => public/assets}/enemies/morning_star.webp (100%) rename {assets => public/assets}/enemies/necromancer.webp (100%) rename {assets => public/assets}/enemies/neoshadow.webp (100%) rename {assets => public/assets}/enemies/nightwalker.webp (100%) rename {assets => public/assets}/enemies/rabid_dog.webp (100%) rename {assets => public/assets}/enemies/rapid_thruster.webp (100%) rename {assets => public/assets}/enemies/reckless.webp (100%) rename {assets => public/assets}/enemies/runemaster.webp (100%) rename {assets => public/assets}/enemies/samurai.webp (100%) rename {assets => public/assets}/enemies/shadow.webp (100%) rename {assets => public/assets}/enemies/shaman.webp (100%) rename {assets => public/assets}/enemies/silver_rock.webp (100%) rename {assets => public/assets}/enemies/sniper.webp (100%) rename {assets => public/assets}/enemies/soldier.webp (100%) rename {assets => public/assets}/enemies/sorcerer.webp (100%) rename {assets => public/assets}/enemies/spring_metal.webp (100%) rename {assets => public/assets}/enemies/strafer.webp (100%) rename {assets => public/assets}/enemies/surveillance_robot.webp (100%) rename {assets => public/assets}/enemies/tornado_step.webp (100%) rename {assets => public/assets}/enemies/toy_soldier.webp (100%) rename {assets => public/assets}/enemies/trick_ghost.webp (100%) rename {assets => public/assets}/enemies/wight_knight.webp (100%) rename {assets => public/assets}/materials/blazing/crystal.webp (100%) rename {assets => public/assets}/materials/blazing/gem.webp (100%) rename {assets => public/assets}/materials/blazing/shard.webp (100%) rename {assets => public/assets}/materials/blazing/stone.webp (100%) rename {assets => public/assets}/materials/bright/crystal.webp (100%) rename {assets => public/assets}/materials/bright/gem.webp (100%) rename {assets => public/assets}/materials/bright/shard.webp (100%) rename {assets => public/assets}/materials/bright/stone.webp (100%) rename {assets => public/assets}/materials/dark/crystal.webp (100%) rename {assets => public/assets}/materials/dark/gem.webp (100%) rename {assets => public/assets}/materials/dark/shard.webp (100%) rename {assets => public/assets}/materials/dark/stone.webp (100%) rename {assets => public/assets}/materials/dense/crystal.webp (100%) rename {assets => public/assets}/materials/dense/gem.webp (100%) rename {assets => public/assets}/materials/dense/shard.webp (100%) rename {assets => public/assets}/materials/dense/stone.webp (100%) rename {assets => public/assets}/materials/energy/crystal.webp (100%) rename {assets => public/assets}/materials/energy/gem.webp (100%) rename {assets => public/assets}/materials/energy/shard.webp (100%) rename {assets => public/assets}/materials/energy/stone.webp (100%) rename {assets => public/assets}/materials/frost/crystal.webp (100%) rename {assets => public/assets}/materials/frost/gem.webp (100%) rename {assets => public/assets}/materials/frost/shard.webp (100%) rename {assets => public/assets}/materials/frost/stone.webp (100%) rename {assets => public/assets}/materials/lightning/crystal.webp (100%) rename {assets => public/assets}/materials/lightning/gem.webp (100%) rename {assets => public/assets}/materials/lightning/shard.webp (100%) rename {assets => public/assets}/materials/lightning/stone.webp (100%) rename {assets => public/assets}/materials/lucid/crystal.webp (100%) rename {assets => public/assets}/materials/lucid/gem.webp (100%) rename {assets => public/assets}/materials/lucid/shard.webp (100%) rename {assets => public/assets}/materials/lucid/stone.webp (100%) rename {assets => public/assets}/materials/power/crystal.webp (100%) rename {assets => public/assets}/materials/power/gem.webp (100%) rename {assets => public/assets}/materials/power/shard.webp (100%) rename {assets => public/assets}/materials/power/stone.webp (100%) rename {assets => public/assets}/materials/remembrance/crystal.webp (100%) rename {assets => public/assets}/materials/remembrance/gem.webp (100%) rename {assets => public/assets}/materials/remembrance/shard.webp (100%) rename {assets => public/assets}/materials/remembrance/stone.webp (100%) rename {assets => public/assets}/materials/serenity/crystal.webp (100%) rename {assets => public/assets}/materials/serenity/gem.webp (100%) rename {assets => public/assets}/materials/serenity/shard.webp (100%) rename {assets => public/assets}/materials/serenity/stone.webp (100%) rename {assets => public/assets}/materials/twilight/crystal.webp (100%) rename {assets => public/assets}/materials/twilight/gem.webp (100%) rename {assets => public/assets}/materials/twilight/shard.webp (100%) rename {assets => public/assets}/materials/twilight/stone.webp (100%) rename templates/components/bbs/script.js => public/scripts/bbs.js (98%) create mode 100644 public/scripts/kh2.js rename templates/components/kh3/script.js => public/scripts/kh3.js (100%) rename templates/components/core/script.js => public/scripts/modules/common/helper.js (76%) rename templates/components/kh2/script.js => public/scripts/modules/common/mat-kind-filter.js (61%) create mode 100644 src/kh1.rs delete mode 100644 templates/components/ddd/script.js create mode 100644 templates/macros/common/macros.html delete mode 100644 templates/macros/kh2/macros.html create mode 100644 templates/pages/kh1/drops.html diff --git a/input/kh1/drops/lucid.toml b/input/kh1/drops/lucid.toml new file mode 100644 index 0000000..1d3fd04 --- /dev/null +++ b/input/kh1/drops/lucid.toml @@ -0,0 +1,32 @@ +kind = "lucid" + +[[shard]] +from = "Shadow" +chance = 3 + +[[shard]] +from = "White Mushroom" +chance = 100 +info = "When Gravity is the last spell used" + +[[shard]] +from = "Gigas Shadow" +chance = "?" +info = "% is based on how many Gigas Shadows are defeated" + +[[gem]] +from = "Gargoyle" +chance = 2 + +[[gem]] +from = "Wight Knight" +chance = 2 + +[[gem]] +from = "White Mushroom" +chance = 10 +info = "When Gravity is used three times" + +[[crystal]] +from = "Darkball" +chance = 1 diff --git a/input/kh1/drops/spirit.toml b/input/kh1/drops/spirit.toml new file mode 100644 index 0000000..e692dda --- /dev/null +++ b/input/kh1/drops/spirit.toml @@ -0,0 +1,28 @@ +kind = "spirit" + +[[shard]] +from = "Large Body" +chance = 10 + +[[shard]] +from = "Soldier" +chance = 6 + +[[shard]] +from = "White Mushroom" +chance = 100 +info = "When Aero is the last spell used" + +[[gem]] +from = "Air Soldier" +chance = 4 + +[[gem]] +from = "White Mushroom" +chance = 10 +info = "When Aero is used three times" + +[[stone]] +from = "Gigas Shadow" +chance = "?" +info = "% is based on how many Gigas Shadows are defeated" diff --git a/input/kh1/synthesis.toml b/input/kh1/synthesis.toml new file mode 100644 index 0000000..e991ebd --- /dev/null +++ b/input/kh1/synthesis.toml @@ -0,0 +1,603 @@ +[[recipes]] +result = "Mega-Potion" +set = 1 + + [[recipes.items]] + name = "Spirit Shard" + amount = 1 + + [[recipes.items]] + name = "Power Shard" + amount = 1 + + [[recipes.items]] + name = "Mythril Shard" + amount = 4 + +[[recipes]] +result = "Cottage" +set = 1 + + [[recipes.items]] + name = "Lucid Shard" + amount = 1 + + [[recipes.items]] + name = "Bright Shard" + amount = 1 + +[[recipes]] +result = "Energy Bangle" +set = 1 + + [[recipes.items]] + name = "Spirit Shard" + amount = 2 + + [[recipes.items]] + name = "Bright Shard" + amount = 1 + +[[recipes]] +result = "Power Chain" +set = 1 + + [[recipes.items]] + name = "Power Shard" + amount = 2 + + [[recipes.items]] + name = "Lucid Shard" + amount = 1 + +[[recipes]] +result = "Magic Armlet" +set = 1 + + [[recipes.items]] + name = "Blaze Shard" + amount = 3 + + [[recipes.items]] + name = "Frost Shard" + amount = 3 + + [[recipes.items]] + name = "Thunder Shard" + amount = 3 + +[[recipes]] +result = "EXP Earring" +set = 1 + + [[recipes.items]] + name = "Fury Stone" + amount = 1 + + [[recipes.items]] + name = "Power Stone" + amount = 1 + + [[recipes.items]] + name = "Mythril Stone" + amount = 1 + + [[recipes.items]] + name = "Serenity Power" + amount = 1 + + [[recipes.items]] + name = "Dark Matter" + amount = 3 + +[[recipes]] +result = "Mega-Ether" +set = 2 + + [[recipes.items]] + name = "Blaze Shard" + amount = 1 + + [[recipes.items]] + name = "Frost Shard" + amount = 1 + + [[recipes.items]] + name = "Thunder Shard" + amount = 1 + + [[recipes.items]] + name = "Mythril" + amount = 2 + +[[recipes]] +result = "Guard Earring" +set = 2 + + [[recipes.items]] + name = "Bright Shard" + amount = 3 + + [[recipes.items]] + name = "Frost Shard" + amount = 1 + + [[recipes.items]] + name = "Mythril Shard" + amount = 3 + +[[recipes]] +result = "Angel Bangle" +set = 2 + + [[recipes.items]] + name = "Thunder Shard" + amount = 3 + + [[recipes.items]] + name = "Bright Gem" + amount = 1 + +[[recipes]] +result = "Golem Chain" +set = 2 + + [[recipes.items]] + name = "Blaze Shard" + amount = 3 + + [[recipes.items]] + name = "Spirit Gem" + amount = 1 + +[[recipes]] +result = "Rune Armlet" +set = 2 + + [[recipes.items]] + name = "Blaze Gem" + amount = 3 + + [[recipes.items]] + name = "Frost Gem" + amount = 3 + + [[recipes.items]] + name = "Thunder Gem" + amount = 3 + +[[recipes]] +result = "Moogle Badge" +set = 2 + + [[recipes.items]] + name = "Blazing Stone" + amount = 1 + + [[recipes.items]] + name = "Frost Stone" + amount = 1 + + [[recipes.items]] + name = "Lightning Stone" + amount = 1 + + [[recipes.items]] + name = "Mythril" + amount = 5 + + [[recipes.items]] + name = "Orichalcum" + amount = 3 + +[[recipes]] +result = "AP Up" +set = 3 + + [[recipes.items]] + name = "Blaze Gem" + amount = 2 + + [[recipes.items]] + name = "Frost Gem" + amount = 2 + + [[recipes.items]] + name = "Thunder Gem" + amount = 2 + + [[recipes.items]] + name = "Mythril" + amount = 4 + +[[recipes]] +result = "Dark Ring" +set = 3 + + [[recipes.items]] + name = "Lucid Gem" + amount = 2 + + [[recipes.items]] + name = "Bright Gem" + amount = 2 + +[[recipes]] +result = "Master Earring" +set = 3 + + [[recipes.items]] + name = "Spirit Shard" + amount = 5 + + [[recipes.items]] + name = "Spirit Gem" + amount = 3 + + [[recipes.items]] + name = "Fury Stone" + amount = 1 + +[[recipes]] +result = "Gaia Bangle" +set = 3 + + [[recipes.items]] + name = "Lucid Shard" + amount = 5 + + [[recipes.items]] + name = "Lucid Gem" + amount = 3 + + [[recipes.items]] + name = "Lightning Stone" + amount = 1 + +[[recipes]] +result = "Titan Chain" +set = 3 + + [[recipes.items]] + name = "Power Shard" + amount = 5 + + [[recipes.items]] + name = "Power Gem" + amount = 3 + + [[recipes.items]] + name = "Power Stone" + amount = 1 + +[[recipes]] +result = "Mythril" +set = 3 + + [[recipes.items]] + name = "Mythril Shard" + amount = 5 + + [[recipes.items]] + name = "Mythril Stone" + amount = 1 + + [[recipes.items]] + name = "Mystery Goo" + amount = 1 + +[[recipes]] +result = "Elixir" +set = 4 + + [[recipes.items]] + name = "Power Crystal" + amount = 1 + + [[recipes.items]] + name = "Shiny Crystal" + amount = 1 + + [[recipes.items]] + name = "Bright Crystal" + amount = 2 + + [[recipes.items]] + name = "Orichalcum" + amount = 3 + +[[recipes]] +result = "Defense Up" +set = 4 + + [[recipes.items]] + name = "Lucid Shard" + amount = 3 + + [[recipes.items]] + name = "Bright Shard" + amount = 3 + + [[recipes.items]] + name = "Bright Gem" + amount = 2 + + [[recipes.items]] + name = "Power Crystal" + amount = 1 + + [[recipes.items]] + name = "Orichalcum" + amount = 5 + +[[recipes]] +result = "Heartguard" +set = 4 + + [[recipes.items]] + name = "Lucid Gem" + amount = 3 + + [[recipes.items]] + name = "Lucid Crystal" + amount = 1 + + [[recipes.items]] + name = "Bright Crystal" + amount = 1 + +[[recipes]] +result = "Three Stars" +set = 4 + + [[recipes.items]] + name = "Power Gem" + amount = 5 + + [[recipes.items]] + name = "Mystery Goo" + amount = 3 + + [[recipes.items]] + name = "Shiny Crystal" + amount = 1 + +[[recipes]] +result = "Atlas Armlet" +set = 4 + + [[recipes.items]] + name = "Blaze Shard" + amount = 5 + + [[recipes.items]] + name = "Frost Shard" + amount = 5 + + [[recipes.items]] + name = "Thunder Shard" + amount = 5 + + [[recipes.items]] + name = "Mystery Goo" + amount = 1 + + [[recipes.items]] + name = "Dark Matter" + amount = 3 + +[[recipes]] +result = "Crystal Crown" +set = 4 + + [[recipes.items]] + name = "Lucid Crystal" + amount = 5 + + [[recipes.items]] + name = "Power Crystal" + amount = 1 + + [[recipes.items]] + name = "Shiny Crystal" + amount = 1 + + [[recipes.items]] + name = "Blazing Stone" + amount = 3 + + [[recipes.items]] + name = "Frost Stone" + amount = 3 + +[[recipes]] +result = "Dark Matter" +set = 5 + + [[recipes.items]] + name = "Lucid Shard" + amount = 9 + + [[recipes.items]] + name = "Gale" + amount = 1 + + [[recipes.items]] + name = "Mythril" + amount = 2 + +[[recipes]] +result = "Megalixir" +set = 5 + + [[recipes.items]] + name = "Lucid Gem" + amount = 5 + + [[recipes.items]] + name = "Lucid Crystal" + amount = 3 + + [[recipes.items]] + name = "Gale" + amount = 2 + + [[recipes.items]] + name = "Dark Matter" + amount = 1 + +[[recipes]] +result = "Power Up" +set = 5 + + [[recipes.items]] + name = "Spirit Shard" + amount = 5 + + [[recipes.items]] + name = "Spirit Gem" + amount = 3 + + [[recipes.items]] + name = "Power Shard" + amount = 5 + + [[recipes.items]] + name = "Power Gem" + amount = 3 + + [[recipes.items]] + name = "Dark Matter" + amount = 1 + +[[recipes]] +result = "Cosmic Arts" +set = 5 + + [[recipes.items]] + name = "Bright Shard" + amount = 5 + + [[recipes.items]] + name = "Bright Gem" + amount = 3 + + [[recipes.items]] + name = "Bright Crystal" + amount = 1 + + [[recipes.items]] + name = "Mythril Stone" + amount = 3 + +[[recipes]] +result = "EXP Bracelet" +set = 5 + + [[recipes.items]] + name = "Energy Stone" + amount = 1 + + [[recipes.items]] + name = "Dazzling Stone" + amount = 1 + + [[recipes.items]] + name = "Stormy Stone" + amount = 1 + + [[recipes.items]] + name = "Orichalcum" + amount = 8 + + [[recipes.items]] + name = "Dark Matter" + amount = 3 + +[[recipes]] +result = "Ribbon" +set = 5 + + [[recipes.items]] + name = "Blaze Gem" + amount = 5 + + [[recipes.items]] + name = "Frost Gem" + amount = 5 + + [[recipes.items]] + name = "Thunder Gem" + amount = 5 + + [[recipes.items]] + name = "Gale" + amount = 1 + + [[recipes.items]] + name = "Serenity Power" + amount = 3 + +[[recipes]] +result = "Fantasista" +set = 6 + + [[recipes.items]] + name = "Fury Stone" + amount = 3 + + [[recipes.items]] + name = "Power Stone" + amount = 3 + + [[recipes.items]] + name = "Mythril Stone" + amount = 3 + + [[recipes.items]] + name = "Energy Stone" + amount = 5 + +[[recipes]] +result = "Seven Elements" +set = 6 + + [[recipes.items]] + name = "Blazing Stone" + amount = 3 + + [[recipes.items]] + name = "Frost Stone" + amount = 3 + + [[recipes.items]] + name = "Lightning Stone" + amount = 3 + + [[recipes.items]] + name = "Dazzling Stone" + amount = 5 + +[[recipes]] +result = "Ultima Weapon" +set = 6 + + [[recipes.items]] + name = "Thunder Gem" + amount = 5 + + [[recipes.items]] + name = "Mystery Goo" + amount = 5 + + [[recipes.items]] + name = "Serenity Power" + amount = 3 + + [[recipes.items]] + name = "Stormy Stone" + amount = 3 + + [[recipes.items]] + name = "Dark Matter" + amount = 3 diff --git a/assets/enemies/aerial_champ.webp b/public/assets/enemies/aerial_champ.webp similarity index 100% rename from assets/enemies/aerial_champ.webp rename to public/assets/enemies/aerial_champ.webp diff --git a/assets/enemies/aerial_knocker.webp b/public/assets/enemies/aerial_knocker.webp similarity index 100% rename from assets/enemies/aerial_knocker.webp rename to public/assets/enemies/aerial_knocker.webp diff --git a/assets/enemies/aerial_viking.webp b/public/assets/enemies/aerial_viking.webp similarity index 100% rename from assets/enemies/aerial_viking.webp rename to public/assets/enemies/aerial_viking.webp diff --git a/assets/enemies/aeroplane.webp b/public/assets/enemies/aeroplane.webp similarity index 100% rename from assets/enemies/aeroplane.webp rename to public/assets/enemies/aeroplane.webp diff --git a/assets/enemies/air_pirate.webp b/public/assets/enemies/air_pirate.webp similarity index 100% rename from assets/enemies/air_pirate.webp rename to public/assets/enemies/air_pirate.webp diff --git a/assets/enemies/armored_knight.webp b/public/assets/enemies/armored_knight.webp similarity index 100% rename from assets/enemies/armored_knight.webp rename to public/assets/enemies/armored_knight.webp diff --git a/assets/enemies/assassin.webp b/public/assets/enemies/assassin.webp similarity index 100% rename from assets/enemies/assassin.webp rename to public/assets/enemies/assassin.webp diff --git a/assets/enemies/assault_rider.webp b/public/assets/enemies/assault_rider.webp similarity index 100% rename from assets/enemies/assault_rider.webp rename to public/assets/enemies/assault_rider.webp diff --git a/assets/enemies/beffudler.webp b/public/assets/enemies/beffudler.webp similarity index 100% rename from assets/enemies/beffudler.webp rename to public/assets/enemies/beffudler.webp diff --git a/assets/enemies/berserker.webp b/public/assets/enemies/berserker.webp similarity index 100% rename from assets/enemies/berserker.webp rename to public/assets/enemies/berserker.webp diff --git a/assets/enemies/bolt_tower.webp b/public/assets/enemies/bolt_tower.webp similarity index 100% rename from assets/enemies/bolt_tower.webp rename to public/assets/enemies/bolt_tower.webp diff --git a/assets/enemies/bookmaster.webp b/public/assets/enemies/bookmaster.webp similarity index 100% rename from assets/enemies/bookmaster.webp rename to public/assets/enemies/bookmaster.webp diff --git a/assets/enemies/camo_cannon.webp b/public/assets/enemies/camo_cannon.webp similarity index 100% rename from assets/enemies/camo_cannon.webp rename to public/assets/enemies/camo_cannon.webp diff --git a/assets/enemies/cannon_gun.webp b/public/assets/enemies/cannon_gun.webp similarity index 100% rename from assets/enemies/cannon_gun.webp rename to public/assets/enemies/cannon_gun.webp diff --git a/assets/enemies/creeper.webp b/public/assets/enemies/creeper.webp similarity index 100% rename from assets/enemies/creeper.webp rename to public/assets/enemies/creeper.webp diff --git a/assets/enemies/creeper_plant.webp b/public/assets/enemies/creeper_plant.webp similarity index 100% rename from assets/enemies/creeper_plant.webp rename to public/assets/enemies/creeper_plant.webp diff --git a/assets/enemies/crescendo.webp b/public/assets/enemies/crescendo.webp similarity index 100% rename from assets/enemies/crescendo.webp rename to public/assets/enemies/crescendo.webp diff --git a/assets/enemies/crimson_jazz.webp b/public/assets/enemies/crimson_jazz.webp similarity index 100% rename from assets/enemies/crimson_jazz.webp rename to public/assets/enemies/crimson_jazz.webp diff --git a/assets/enemies/dancer.webp b/public/assets/enemies/dancer.webp similarity index 100% rename from assets/enemies/dancer.webp rename to public/assets/enemies/dancer.webp diff --git a/assets/enemies/devastator.webp b/public/assets/enemies/devastator.webp similarity index 100% rename from assets/enemies/devastator.webp rename to public/assets/enemies/devastator.webp diff --git a/assets/enemies/dragoon.webp b/public/assets/enemies/dragoon.webp similarity index 100% rename from assets/enemies/dragoon.webp rename to public/assets/enemies/dragoon.webp diff --git a/assets/enemies/driller_mole.webp b/public/assets/enemies/driller_mole.webp similarity index 100% rename from assets/enemies/driller_mole.webp rename to public/assets/enemies/driller_mole.webp diff --git a/assets/enemies/dusk.webp b/public/assets/enemies/dusk.webp similarity index 100% rename from assets/enemies/dusk.webp rename to public/assets/enemies/dusk.webp diff --git a/assets/enemies/emerald_blues.webp b/public/assets/enemies/emerald_blues.webp similarity index 100% rename from assets/enemies/emerald_blues.webp rename to public/assets/enemies/emerald_blues.webp diff --git a/assets/enemies/fat_bandit.webp b/public/assets/enemies/fat_bandit.webp similarity index 100% rename from assets/enemies/fat_bandit.webp rename to public/assets/enemies/fat_bandit.webp diff --git a/assets/enemies/fiery_globe.webp b/public/assets/enemies/fiery_globe.webp similarity index 100% rename from assets/enemies/fiery_globe.webp rename to public/assets/enemies/fiery_globe.webp diff --git a/assets/enemies/fortuneteller.webp b/public/assets/enemies/fortuneteller.webp similarity index 100% rename from assets/enemies/fortuneteller.webp rename to public/assets/enemies/fortuneteller.webp diff --git a/assets/enemies/gambler.webp b/public/assets/enemies/gambler.webp similarity index 100% rename from assets/enemies/gambler.webp rename to public/assets/enemies/gambler.webp diff --git a/assets/enemies/gargoyle_knight.webp b/public/assets/enemies/gargoyle_knight.webp similarity index 100% rename from assets/enemies/gargoyle_knight.webp rename to public/assets/enemies/gargoyle_knight.webp diff --git a/assets/enemies/gargoyle_warrior.webp b/public/assets/enemies/gargoyle_warrior.webp similarity index 100% rename from assets/enemies/gargoyle_warrior.webp rename to public/assets/enemies/gargoyle_warrior.webp diff --git a/assets/enemies/graveyard.webp b/public/assets/enemies/graveyard.webp similarity index 100% rename from assets/enemies/graveyard.webp rename to public/assets/enemies/graveyard.webp diff --git a/assets/enemies/hammer_frame.webp b/public/assets/enemies/hammer_frame.webp similarity index 100% rename from assets/enemies/hammer_frame.webp rename to public/assets/enemies/hammer_frame.webp diff --git a/assets/enemies/hook_bat.webp b/public/assets/enemies/hook_bat.webp similarity index 100% rename from assets/enemies/hook_bat.webp rename to public/assets/enemies/hook_bat.webp diff --git a/assets/enemies/hot_rod.webp b/public/assets/enemies/hot_rod.webp similarity index 100% rename from assets/enemies/hot_rod.webp rename to public/assets/enemies/hot_rod.webp diff --git a/assets/enemies/icy_cube.webp b/public/assets/enemies/icy_cube.webp similarity index 100% rename from assets/enemies/icy_cube.webp rename to public/assets/enemies/icy_cube.webp diff --git a/assets/enemies/iron_hammer.webp b/public/assets/enemies/iron_hammer.webp similarity index 100% rename from assets/enemies/iron_hammer.webp rename to public/assets/enemies/iron_hammer.webp diff --git a/assets/enemies/lance_soldier.webp b/public/assets/enemies/lance_soldier.webp similarity index 100% rename from assets/enemies/lance_soldier.webp rename to public/assets/enemies/lance_soldier.webp diff --git a/assets/enemies/lance_warrior.webp b/public/assets/enemies/lance_warrior.webp similarity index 100% rename from assets/enemies/lance_warrior.webp rename to public/assets/enemies/lance_warrior.webp diff --git a/assets/enemies/large_body.webp b/public/assets/enemies/large_body.webp similarity index 100% rename from assets/enemies/large_body.webp rename to public/assets/enemies/large_body.webp diff --git a/assets/enemies/living_bone.webp b/public/assets/enemies/living_bone.webp similarity index 100% rename from assets/enemies/living_bone.webp rename to public/assets/enemies/living_bone.webp diff --git a/assets/enemies/luna_bandit.webp b/public/assets/enemies/luna_bandit.webp similarity index 100% rename from assets/enemies/luna_bandit.webp rename to public/assets/enemies/luna_bandit.webp diff --git a/assets/enemies/mad_ride.webp b/public/assets/enemies/mad_ride.webp similarity index 100% rename from assets/enemies/mad_ride.webp rename to public/assets/enemies/mad_ride.webp diff --git a/assets/enemies/magic_phantom.webp b/public/assets/enemies/magic_phantom.webp similarity index 100% rename from assets/enemies/magic_phantom.webp rename to public/assets/enemies/magic_phantom.webp diff --git a/assets/enemies/magnum_loader.webp b/public/assets/enemies/magnum_loader.webp similarity index 100% rename from assets/enemies/magnum_loader.webp rename to public/assets/enemies/magnum_loader.webp diff --git a/assets/enemies/minute_bomb.webp b/public/assets/enemies/minute_bomb.webp similarity index 100% rename from assets/enemies/minute_bomb.webp rename to public/assets/enemies/minute_bomb.webp diff --git a/assets/enemies/morning_star.webp b/public/assets/enemies/morning_star.webp similarity index 100% rename from assets/enemies/morning_star.webp rename to public/assets/enemies/morning_star.webp diff --git a/assets/enemies/necromancer.webp b/public/assets/enemies/necromancer.webp similarity index 100% rename from assets/enemies/necromancer.webp rename to public/assets/enemies/necromancer.webp diff --git a/assets/enemies/neoshadow.webp b/public/assets/enemies/neoshadow.webp similarity index 100% rename from assets/enemies/neoshadow.webp rename to public/assets/enemies/neoshadow.webp diff --git a/assets/enemies/nightwalker.webp b/public/assets/enemies/nightwalker.webp similarity index 100% rename from assets/enemies/nightwalker.webp rename to public/assets/enemies/nightwalker.webp diff --git a/assets/enemies/rabid_dog.webp b/public/assets/enemies/rabid_dog.webp similarity index 100% rename from assets/enemies/rabid_dog.webp rename to public/assets/enemies/rabid_dog.webp diff --git a/assets/enemies/rapid_thruster.webp b/public/assets/enemies/rapid_thruster.webp similarity index 100% rename from assets/enemies/rapid_thruster.webp rename to public/assets/enemies/rapid_thruster.webp diff --git a/assets/enemies/reckless.webp b/public/assets/enemies/reckless.webp similarity index 100% rename from assets/enemies/reckless.webp rename to public/assets/enemies/reckless.webp diff --git a/assets/enemies/runemaster.webp b/public/assets/enemies/runemaster.webp similarity index 100% rename from assets/enemies/runemaster.webp rename to public/assets/enemies/runemaster.webp diff --git a/assets/enemies/samurai.webp b/public/assets/enemies/samurai.webp similarity index 100% rename from assets/enemies/samurai.webp rename to public/assets/enemies/samurai.webp diff --git a/assets/enemies/shadow.webp b/public/assets/enemies/shadow.webp similarity index 100% rename from assets/enemies/shadow.webp rename to public/assets/enemies/shadow.webp diff --git a/assets/enemies/shaman.webp b/public/assets/enemies/shaman.webp similarity index 100% rename from assets/enemies/shaman.webp rename to public/assets/enemies/shaman.webp diff --git a/assets/enemies/silver_rock.webp b/public/assets/enemies/silver_rock.webp similarity index 100% rename from assets/enemies/silver_rock.webp rename to public/assets/enemies/silver_rock.webp diff --git a/assets/enemies/sniper.webp b/public/assets/enemies/sniper.webp similarity index 100% rename from assets/enemies/sniper.webp rename to public/assets/enemies/sniper.webp diff --git a/assets/enemies/soldier.webp b/public/assets/enemies/soldier.webp similarity index 100% rename from assets/enemies/soldier.webp rename to public/assets/enemies/soldier.webp diff --git a/assets/enemies/sorcerer.webp b/public/assets/enemies/sorcerer.webp similarity index 100% rename from assets/enemies/sorcerer.webp rename to public/assets/enemies/sorcerer.webp diff --git a/assets/enemies/spring_metal.webp b/public/assets/enemies/spring_metal.webp similarity index 100% rename from assets/enemies/spring_metal.webp rename to public/assets/enemies/spring_metal.webp diff --git a/assets/enemies/strafer.webp b/public/assets/enemies/strafer.webp similarity index 100% rename from assets/enemies/strafer.webp rename to public/assets/enemies/strafer.webp diff --git a/assets/enemies/surveillance_robot.webp b/public/assets/enemies/surveillance_robot.webp similarity index 100% rename from assets/enemies/surveillance_robot.webp rename to public/assets/enemies/surveillance_robot.webp diff --git a/assets/enemies/tornado_step.webp b/public/assets/enemies/tornado_step.webp similarity index 100% rename from assets/enemies/tornado_step.webp rename to public/assets/enemies/tornado_step.webp diff --git a/assets/enemies/toy_soldier.webp b/public/assets/enemies/toy_soldier.webp similarity index 100% rename from assets/enemies/toy_soldier.webp rename to public/assets/enemies/toy_soldier.webp diff --git a/assets/enemies/trick_ghost.webp b/public/assets/enemies/trick_ghost.webp similarity index 100% rename from assets/enemies/trick_ghost.webp rename to public/assets/enemies/trick_ghost.webp diff --git a/assets/enemies/wight_knight.webp b/public/assets/enemies/wight_knight.webp similarity index 100% rename from assets/enemies/wight_knight.webp rename to public/assets/enemies/wight_knight.webp diff --git a/assets/materials/blazing/crystal.webp b/public/assets/materials/blazing/crystal.webp similarity index 100% rename from assets/materials/blazing/crystal.webp rename to public/assets/materials/blazing/crystal.webp diff --git a/assets/materials/blazing/gem.webp b/public/assets/materials/blazing/gem.webp similarity index 100% rename from assets/materials/blazing/gem.webp rename to public/assets/materials/blazing/gem.webp diff --git a/assets/materials/blazing/shard.webp b/public/assets/materials/blazing/shard.webp similarity index 100% rename from assets/materials/blazing/shard.webp rename to public/assets/materials/blazing/shard.webp diff --git a/assets/materials/blazing/stone.webp b/public/assets/materials/blazing/stone.webp similarity index 100% rename from assets/materials/blazing/stone.webp rename to public/assets/materials/blazing/stone.webp diff --git a/assets/materials/bright/crystal.webp b/public/assets/materials/bright/crystal.webp similarity index 100% rename from assets/materials/bright/crystal.webp rename to public/assets/materials/bright/crystal.webp diff --git a/assets/materials/bright/gem.webp b/public/assets/materials/bright/gem.webp similarity index 100% rename from assets/materials/bright/gem.webp rename to public/assets/materials/bright/gem.webp diff --git a/assets/materials/bright/shard.webp b/public/assets/materials/bright/shard.webp similarity index 100% rename from assets/materials/bright/shard.webp rename to public/assets/materials/bright/shard.webp diff --git a/assets/materials/bright/stone.webp b/public/assets/materials/bright/stone.webp similarity index 100% rename from assets/materials/bright/stone.webp rename to public/assets/materials/bright/stone.webp diff --git a/assets/materials/dark/crystal.webp b/public/assets/materials/dark/crystal.webp similarity index 100% rename from assets/materials/dark/crystal.webp rename to public/assets/materials/dark/crystal.webp diff --git a/assets/materials/dark/gem.webp b/public/assets/materials/dark/gem.webp similarity index 100% rename from assets/materials/dark/gem.webp rename to public/assets/materials/dark/gem.webp diff --git a/assets/materials/dark/shard.webp b/public/assets/materials/dark/shard.webp similarity index 100% rename from assets/materials/dark/shard.webp rename to public/assets/materials/dark/shard.webp diff --git a/assets/materials/dark/stone.webp b/public/assets/materials/dark/stone.webp similarity index 100% rename from assets/materials/dark/stone.webp rename to public/assets/materials/dark/stone.webp diff --git a/assets/materials/dense/crystal.webp b/public/assets/materials/dense/crystal.webp similarity index 100% rename from assets/materials/dense/crystal.webp rename to public/assets/materials/dense/crystal.webp diff --git a/assets/materials/dense/gem.webp b/public/assets/materials/dense/gem.webp similarity index 100% rename from assets/materials/dense/gem.webp rename to public/assets/materials/dense/gem.webp diff --git a/assets/materials/dense/shard.webp b/public/assets/materials/dense/shard.webp similarity index 100% rename from assets/materials/dense/shard.webp rename to public/assets/materials/dense/shard.webp diff --git a/assets/materials/dense/stone.webp b/public/assets/materials/dense/stone.webp similarity index 100% rename from assets/materials/dense/stone.webp rename to public/assets/materials/dense/stone.webp diff --git a/assets/materials/energy/crystal.webp b/public/assets/materials/energy/crystal.webp similarity index 100% rename from assets/materials/energy/crystal.webp rename to public/assets/materials/energy/crystal.webp diff --git a/assets/materials/energy/gem.webp b/public/assets/materials/energy/gem.webp similarity index 100% rename from assets/materials/energy/gem.webp rename to public/assets/materials/energy/gem.webp diff --git a/assets/materials/energy/shard.webp b/public/assets/materials/energy/shard.webp similarity index 100% rename from assets/materials/energy/shard.webp rename to public/assets/materials/energy/shard.webp diff --git a/assets/materials/energy/stone.webp b/public/assets/materials/energy/stone.webp similarity index 100% rename from assets/materials/energy/stone.webp rename to public/assets/materials/energy/stone.webp diff --git a/assets/materials/frost/crystal.webp b/public/assets/materials/frost/crystal.webp similarity index 100% rename from assets/materials/frost/crystal.webp rename to public/assets/materials/frost/crystal.webp diff --git a/assets/materials/frost/gem.webp b/public/assets/materials/frost/gem.webp similarity index 100% rename from assets/materials/frost/gem.webp rename to public/assets/materials/frost/gem.webp diff --git a/assets/materials/frost/shard.webp b/public/assets/materials/frost/shard.webp similarity index 100% rename from assets/materials/frost/shard.webp rename to public/assets/materials/frost/shard.webp diff --git a/assets/materials/frost/stone.webp b/public/assets/materials/frost/stone.webp similarity index 100% rename from assets/materials/frost/stone.webp rename to public/assets/materials/frost/stone.webp diff --git a/assets/materials/lightning/crystal.webp b/public/assets/materials/lightning/crystal.webp similarity index 100% rename from assets/materials/lightning/crystal.webp rename to public/assets/materials/lightning/crystal.webp diff --git a/assets/materials/lightning/gem.webp b/public/assets/materials/lightning/gem.webp similarity index 100% rename from assets/materials/lightning/gem.webp rename to public/assets/materials/lightning/gem.webp diff --git a/assets/materials/lightning/shard.webp b/public/assets/materials/lightning/shard.webp similarity index 100% rename from assets/materials/lightning/shard.webp rename to public/assets/materials/lightning/shard.webp diff --git a/assets/materials/lightning/stone.webp b/public/assets/materials/lightning/stone.webp similarity index 100% rename from assets/materials/lightning/stone.webp rename to public/assets/materials/lightning/stone.webp diff --git a/assets/materials/lucid/crystal.webp b/public/assets/materials/lucid/crystal.webp similarity index 100% rename from assets/materials/lucid/crystal.webp rename to public/assets/materials/lucid/crystal.webp diff --git a/assets/materials/lucid/gem.webp b/public/assets/materials/lucid/gem.webp similarity index 100% rename from assets/materials/lucid/gem.webp rename to public/assets/materials/lucid/gem.webp diff --git a/assets/materials/lucid/shard.webp b/public/assets/materials/lucid/shard.webp similarity index 100% rename from assets/materials/lucid/shard.webp rename to public/assets/materials/lucid/shard.webp diff --git a/assets/materials/lucid/stone.webp b/public/assets/materials/lucid/stone.webp similarity index 100% rename from assets/materials/lucid/stone.webp rename to public/assets/materials/lucid/stone.webp diff --git a/assets/materials/power/crystal.webp b/public/assets/materials/power/crystal.webp similarity index 100% rename from assets/materials/power/crystal.webp rename to public/assets/materials/power/crystal.webp diff --git a/assets/materials/power/gem.webp b/public/assets/materials/power/gem.webp similarity index 100% rename from assets/materials/power/gem.webp rename to public/assets/materials/power/gem.webp diff --git a/assets/materials/power/shard.webp b/public/assets/materials/power/shard.webp similarity index 100% rename from assets/materials/power/shard.webp rename to public/assets/materials/power/shard.webp diff --git a/assets/materials/power/stone.webp b/public/assets/materials/power/stone.webp similarity index 100% rename from assets/materials/power/stone.webp rename to public/assets/materials/power/stone.webp diff --git a/assets/materials/remembrance/crystal.webp b/public/assets/materials/remembrance/crystal.webp similarity index 100% rename from assets/materials/remembrance/crystal.webp rename to public/assets/materials/remembrance/crystal.webp diff --git a/assets/materials/remembrance/gem.webp b/public/assets/materials/remembrance/gem.webp similarity index 100% rename from assets/materials/remembrance/gem.webp rename to public/assets/materials/remembrance/gem.webp diff --git a/assets/materials/remembrance/shard.webp b/public/assets/materials/remembrance/shard.webp similarity index 100% rename from assets/materials/remembrance/shard.webp rename to public/assets/materials/remembrance/shard.webp diff --git a/assets/materials/remembrance/stone.webp b/public/assets/materials/remembrance/stone.webp similarity index 100% rename from assets/materials/remembrance/stone.webp rename to public/assets/materials/remembrance/stone.webp diff --git a/assets/materials/serenity/crystal.webp b/public/assets/materials/serenity/crystal.webp similarity index 100% rename from assets/materials/serenity/crystal.webp rename to public/assets/materials/serenity/crystal.webp diff --git a/assets/materials/serenity/gem.webp b/public/assets/materials/serenity/gem.webp similarity index 100% rename from assets/materials/serenity/gem.webp rename to public/assets/materials/serenity/gem.webp diff --git a/assets/materials/serenity/shard.webp b/public/assets/materials/serenity/shard.webp similarity index 100% rename from assets/materials/serenity/shard.webp rename to public/assets/materials/serenity/shard.webp diff --git a/assets/materials/serenity/stone.webp b/public/assets/materials/serenity/stone.webp similarity index 100% rename from assets/materials/serenity/stone.webp rename to public/assets/materials/serenity/stone.webp diff --git a/assets/materials/twilight/crystal.webp b/public/assets/materials/twilight/crystal.webp similarity index 100% rename from assets/materials/twilight/crystal.webp rename to public/assets/materials/twilight/crystal.webp diff --git a/assets/materials/twilight/gem.webp b/public/assets/materials/twilight/gem.webp similarity index 100% rename from assets/materials/twilight/gem.webp rename to public/assets/materials/twilight/gem.webp diff --git a/assets/materials/twilight/shard.webp b/public/assets/materials/twilight/shard.webp similarity index 100% rename from assets/materials/twilight/shard.webp rename to public/assets/materials/twilight/shard.webp diff --git a/assets/materials/twilight/stone.webp b/public/assets/materials/twilight/stone.webp similarity index 100% rename from assets/materials/twilight/stone.webp rename to public/assets/materials/twilight/stone.webp diff --git a/templates/components/bbs/script.js b/public/scripts/bbs.js similarity index 98% rename from templates/components/bbs/script.js rename to public/scripts/bbs.js index 0fde3f0..53f3306 100644 --- a/templates/components/bbs/script.js +++ b/public/scripts/bbs.js @@ -1,3 +1,5 @@ +import { debounce } from "./modules/common/helper.js"; + let charFilter = ""; let typeFilter = ""; let searchType = "commands"; diff --git a/public/scripts/kh2.js b/public/scripts/kh2.js new file mode 100644 index 0000000..ec5c943 --- /dev/null +++ b/public/scripts/kh2.js @@ -0,0 +1,29 @@ +import { + kindFilter, + showOnlyTracked, + track, +} from "./modules/common/mat-kind-filter.js"; + +function filter() { + const categories = document.querySelectorAll(".category-wrapper"); + + for (const category of categories) { + let isTracked = category.dataset["isTracked"] == "true"; + let kind = category.dataset["matKind"]; + let type = category.dataset["matType"]; + + category.style.display = ""; + + if (showOnlyTracked && !isTracked) { + category.style.display = "none"; + } + + if (kindFilter.size > 0) { + if (!kindFilter.has(kind)) { + category.style.display = "none"; + } + } + } +} + +Object.assign(window, { filter, track }); diff --git a/templates/components/kh3/script.js b/public/scripts/kh3.js similarity index 100% rename from templates/components/kh3/script.js rename to public/scripts/kh3.js diff --git a/templates/components/core/script.js b/public/scripts/modules/common/helper.js similarity index 76% rename from templates/components/core/script.js rename to public/scripts/modules/common/helper.js index 652751d..c72899f 100644 --- a/templates/components/core/script.js +++ b/public/scripts/modules/common/helper.js @@ -1,4 +1,4 @@ -function debounce(callback, wait = 300) { +export function debounce(callback, wait = 300) { let timeoutId = null; return (...args) => { window.clearTimeout(timeoutId); diff --git a/templates/components/kh2/script.js b/public/scripts/modules/common/mat-kind-filter.js similarity index 61% rename from templates/components/kh2/script.js rename to public/scripts/modules/common/mat-kind-filter.js index 1c47caa..65bd14d 100644 --- a/templates/components/kh2/script.js +++ b/public/scripts/modules/common/mat-kind-filter.js @@ -1,5 +1,5 @@ -let showOnlyTracked = false; -let kindFilter = new Set(); +export let showOnlyTracked = false; +export let kindFilter = new Set(); document.addEventListener("DOMContentLoaded", (event) => { const onlyTrackedFilter = document.querySelector( @@ -22,13 +22,12 @@ document.addEventListener("DOMContentLoaded", (event) => { } else { kindFilter.delete(this.value); } - console.log(kindFilter); filter(); }); }); }); -function track(element) { +export function track(element) { let parent = element.parentElement.parentElement; let isTracked = parent.dataset["isTracked"] ?? false; isTracked = isTracked === "true" ? false : true; @@ -37,25 +36,3 @@ function track(element) { element.style["border-bottom-color"] = isTracked ? "#a00" : "#0a0"; filter(); } - -function filter() { - const categories = document.querySelectorAll(".category-wrapper"); - - for (const category of categories) { - let isTracked = category.dataset["isTracked"] == "true"; - let kind = category.dataset["matKind"]; - let type = category.dataset["matType"]; - - category.style.display = ""; - - if (showOnlyTracked && !isTracked) { - category.style.display = "none"; - } - - if (kindFilter.size > 0) { - if (!kindFilter.has(kind)) { - category.style.display = "none"; - } - } - } -} diff --git a/src/common/materials.rs b/src/common/materials.rs index c49575b..0e5b5e6 100644 --- a/src/common/materials.rs +++ b/src/common/materials.rs @@ -1,9 +1,11 @@ +use std::{fmt::Display, path::PathBuf}; + use serde::Deserialize; #[derive(Debug, Deserialize, PartialEq, Eq)] pub struct EnemyDrop { pub from: String, - pub chance: u8, + pub chance: EnemyDropChance, #[serde(default)] pub info: Option, @@ -16,6 +18,23 @@ impl EnemyDrop { } #[derive(Debug, Deserialize, PartialEq, Eq)] +#[serde(untagged)] +pub enum EnemyDropChance { + Fixed(u8), + Variable(String), +} + +impl Display for EnemyDropChance { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + EnemyDropChance::Fixed(val) => f.write_str(&format!("{val}%")), + EnemyDropChance::Variable(val) => f.write_str(val), + } + } +} + +#[derive(Debug, Default, Deserialize, PartialEq, Eq)] +#[serde(default)] pub struct MaterialDrops { pub kind: String, pub shard: Vec, @@ -25,6 +44,30 @@ pub struct MaterialDrops { } impl MaterialDrops { + pub fn import(path: &str) -> Vec { + let mut drops: Vec = vec![]; + + // Loading multiple files into one vector due to the size of each board + let paths = std::fs::read_dir(path) + .unwrap() + .filter_map(|f| f.ok()) + .map(|f| f.path()) + .filter_map(|p| match p.extension().is_some_and(|e| e == "toml") { + true => Some(p), + false => None, + }) + .collect::>(); + + for path in paths { + let drops_str = std::fs::read_to_string(path).unwrap(); + let enemy_drops = toml::from_str::(&drops_str).unwrap(); + drops.push(enemy_drops); + } + drops.sort_by(|a, b| a.kind.cmp(&b.kind)); + + drops + } + pub fn drops(&self, kind: &str) -> &[EnemyDrop] { match kind { "shard" => &self.shard, diff --git a/src/kh1.rs b/src/kh1.rs new file mode 100644 index 0000000..216782b --- /dev/null +++ b/src/kh1.rs @@ -0,0 +1,27 @@ +use std::path::PathBuf; + +use askama::Template; + +use crate::{common::materials::MaterialDrops, create_file}; + +const MATERIAL_KINDS: &[&str] = &[ + "lucid", "spirit", "power", "blaze", "frost", "thunder", "shiny", "bright", "mystery", "gale", + "mythril", +]; +const DROPS_PATH: &str = "./input/kh1/drops"; + +#[derive(Template)] +#[template(path = "pages/kh1/drops.html")] +struct DropsTemplate { + pub drops: Vec, +} + +pub fn init() { + tracing::info!("Loading enemy drops data from {}", DROPS_PATH); + let drops = MaterialDrops::import(DROPS_PATH); + + tracing::info!("Generating the KH1 drops template"); + let drops_template = DropsTemplate { drops }; + + create_file("./out/kh1", "drops", drops_template.render().unwrap()).unwrap(); +} diff --git a/src/kh2.rs b/src/kh2.rs index 7284f65..54a66e8 100644 --- a/src/kh2.rs +++ b/src/kh2.rs @@ -28,24 +28,7 @@ struct DropsTemplate { pub fn init() { tracing::info!("Loading enemy drops data from {}", DROPS_PATH); - let mut drops: Vec = vec![]; - // Loading multiple files into one vector due to the size of each board - let paths = std::fs::read_dir(DROPS_PATH) - .unwrap() - .filter_map(|f| f.ok()) - .map(|f| f.path()) - .filter_map(|p| match p.extension().is_some_and(|e| e == "toml") { - true => Some(p), - false => None, - }) - .collect::>(); - - for path in paths { - let drops_str = std::fs::read_to_string(path).unwrap(); - let enemy_drops = toml::from_str::(&drops_str).unwrap(); - drops.push(enemy_drops); - } - drops.sort_by(|a, b| a.kind.cmp(&b.kind)); + let drops = MaterialDrops::import(DROPS_PATH); tracing::info!("Generating the KH2 drops template"); let drops_template = DropsTemplate { drops }; diff --git a/src/main.rs b/src/main.rs index e1c4d47..0dcf985 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,6 +11,9 @@ mod bbs; #[cfg(feature = "ddd")] mod ddd; +#[cfg(feature = "kh1")] +mod kh1; + #[cfg(feature = "kh2")] mod kh2; @@ -45,6 +48,9 @@ fn main() { #[cfg(feature = "ddd")] ddd::init(); + #[cfg(feature = "kh1")] + kh1::init(); + #[cfg(feature = "kh2")] kh2::init(); diff --git a/templates/components/ddd/script.js b/templates/components/ddd/script.js deleted file mode 100644 index e69de29..0000000 diff --git a/templates/layouts/base.html b/templates/layouts/base.html index aee7ef4..6fde02b 100644 --- a/templates/layouts/base.html +++ b/templates/layouts/base.html @@ -4,7 +4,6 @@ {% block title %}{% endblock %} - {% block head %}{% endblock %} diff --git a/templates/macros/common/macros.html b/templates/macros/common/macros.html new file mode 100644 index 0000000..3deae41 --- /dev/null +++ b/templates/macros/common/macros.html @@ -0,0 +1,31 @@ +{% macro drop(label) %} + {% let drops = category.drops(label) %} + {% if drops.len() > 0 %} +
+
+ +

{{ category.kind|capitalize +}} {{+ label|capitalize }}

+ +
+
+ {% for drop in drops %} +
+
+ {{ drop.from +}} + {{+ drop.chance }} +
+ {% endfor %} +
+
+ {% endif %} +{% endmacro %} diff --git a/templates/macros/kh2/macros.html b/templates/macros/kh2/macros.html deleted file mode 100644 index c8dc684..0000000 --- a/templates/macros/kh2/macros.html +++ /dev/null @@ -1,28 +0,0 @@ -{% macro drop(label) %} -
-
- -

{{ category.kind|capitalize +}} {{+ label|capitalize }}

- -
-
- {% for drop in category.drops(label) %} -
-
- {{ drop.from +}} - {{+ drop.chance }}% -
- {% endfor %} -
-
-{% endmacro %} diff --git a/templates/pages/bbs/melding.html b/templates/pages/bbs/melding.html index c6e391f..cf12919 100644 --- a/templates/pages/bbs/melding.html +++ b/templates/pages/bbs/melding.html @@ -4,7 +4,7 @@ {% block head %} - + {% endblock %} {% block content %} diff --git a/templates/pages/ddd/boards.html b/templates/pages/ddd/boards.html index 529e3a4..e01bf18 100644 --- a/templates/pages/ddd/boards.html +++ b/templates/pages/ddd/boards.html @@ -4,7 +4,6 @@ {% block head %} - {% endblock %} {% block content %} diff --git a/templates/pages/index.html b/templates/pages/index.html index f44b9e4..ed22741 100644 --- a/templates/pages/index.html +++ b/templates/pages/index.html @@ -30,7 +30,14 @@ {% if cfg!(feature = "kh2") %}

Kingdom Hearts II

+ {% endif %} + + {% if cfg!(feature = "kh1") %} +

Kingdom Hearts I

+ {% endif %} {% endblock %} diff --git a/templates/pages/kh1/drops.html b/templates/pages/kh1/drops.html new file mode 100644 index 0000000..fa8cfef --- /dev/null +++ b/templates/pages/kh1/drops.html @@ -0,0 +1,23 @@ +{% extends "layouts/base.html" %} +{% import "macros/common/macros.html" as macros %} + +{% block title %}KH1 - Drops{% endblock %} + +{% block head %} + +{% endblock %} + +{% block content %} +{# + {% include "components/kh2/only-tracked-filter.html" %} +
+ {% include "components/kh2/kind-filters.html" %} +
+#} + {% for category in drops %} + {% call macros::drop("shard") %} + {% call macros::drop("stone") %} + {% call macros::drop("gem") %} + {% call macros::drop("crystal") %} + {% endfor %} +{% endblock %} diff --git a/templates/pages/kh2/drops.html b/templates/pages/kh2/drops.html index 7c44dd3..dbd1e9f 100644 --- a/templates/pages/kh2/drops.html +++ b/templates/pages/kh2/drops.html @@ -1,11 +1,11 @@ {% extends "layouts/base.html" %} -{% import "macros/kh2/macros.html" as macros %} +{% import "macros/common/macros.html" as macros %} {% block title %}KH2 - Drops{% endblock %} {% block head %} - + {% endblock %} {% block content %} diff --git a/templates/pages/kh3/food-sim.html b/templates/pages/kh3/food-sim.html index 02d3690..e396035 100644 --- a/templates/pages/kh3/food-sim.html +++ b/templates/pages/kh3/food-sim.html @@ -4,7 +4,7 @@ {% block head %} - + {% endblock %} {% block content %}