diff --git a/CHANGELOG.md b/CHANGELOG.md index c4fef7c43b..f428e5e2aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Overhauled clouds for more verticality and performance - New tooltip for items with stats comparison - Improved bow feedback, added arrow particles +- Retiered most sceptres and staves +- Loot tables can now recursively reference loot tables ### Removed diff --git a/assets/common/item_price_calculation.ron b/assets/common/item_price_calculation.ron index f3efc8bb03..ad25988f70 100644 --- a/assets/common/item_price_calculation.ron +++ b/assets/common/item_price_calculation.ron @@ -1,46 +1,45 @@ ( loot_tables: [ // balance the loot tables against each other (higher= more common= smaller price) - // the fact that loot tables have an own probability not accessible outside of the lottery call doesn't help here - (0.5,"common.loot_tables.loot_table_animal_ice"), - (4,"common.loot_tables.loot_table_animal_parts"), - (1,"common.loot_tables.loot_table_armor_cloth"), - (0.01,"common.loot_tables.loot_table_armor_heavy"), - (0.1,"common.loot_tables.loot_table_armor_light"), - (0.1,"common.loot_tables.loot_table_armor_misc"), - (0.5,"common.loot_tables.loot_table_armor_nature"), - (0.1,"common.loot_tables.loot_table_cave_large"), - (0.1,"common.loot_tables.loot_table_consumables"), - // loot_table_crafting is a rare roll on crate/mud sprite looting - (0.05,"common.loot_tables.loot_table_crafting"), - (0.005,"common.loot_tables.loot_table_cultists"), - (1,"common.loot_tables.loot_table_fish"), - (1,"common.loot_tables.loot_table_food"), - (0.1,"common.loot_tables.loot_table_humanoids"), - (1,"common.loot_tables.loot_table_maneater"), - (0.0001,"common.loot_tables.mindflayer"), - (0.001,"common.loot_tables.loot_table_miniboss"), - (0.05,"common.loot_tables.loot_table_raptor"), - // loot_table_rocks is dropped by rock monsters, but is also the only source of stones to econsim until cave_scatter information is turned into a loot table - (0.2,"common.loot_tables.loot_table_rocks"), - (1,"common.loot_tables.loot_table"), - (0.04,"common.loot_tables.loot_table_saurok"), - (0.02,"common.loot_tables.loot_table_troll"), - (0.05,"common.loot_tables.loot_table_villager"), - (1,"common.loot_tables.loot_table_weapon_common"), - (0.008,"common.loot_tables.loot_table_weapon_rare"), - (0.01,"common.loot_tables.loot_table_weapon_uncommon"), - (0.01,"common.loot_tables.loot_table_wendigo"), - // we probably want to include all the scattered scatter information - //(0.5,"common.cave_scatter"), + // Weapons + (16.0, "common.loot_tables.weapons.starter"), + (8.0, "common.loot_tables.weapons.tier-0"), + (4.0, "common.loot_tables.weapons.tier-1"), + (2.0, "common.loot_tables.weapons.tier-2"), + (1.0, "common.loot_tables.weapons.tier-3"), + (0.5, "common.loot_tables.weapons.tier-4"), + (0.25, "common.loot_tables.weapons.tier-5"), + (0.125, "common.loot_tables.weapons.cultist"), + (0.125, "common.loot_tables.weapons.cave"), + (0.0625, "common.loot_tables.weapons.legendary"), + // Armor + (20.0, "common.loot_tables.armor.cloth"), + (6.0, "common.loot_tables.armor.agile"), + (3.0, "common.loot_tables.armor.swift"), + (6.0, "common.loot_tables.armor.druid"), + (2.0, "common.loot_tables.armor.twigs"), + (2.0, "common.loot_tables.armor.twigsflowers"), + (2.0, "common.loot_tables.armor.twigsleaves"), + (0.5, "common.loot_tables.armor.plate"), + (0.25, "common.loot_tables.armor.steel"), + (0.125, "common.loot_tables.armor.cultist"), + // Materials + (7.5, "common.loot_tables.materials.common"), + (5.0, "common.loot_tables.materials.underground"), + // Food + (0.5, "common.loot_tables.food.farm_ingredients"), + (0.25, "common.loot_tables.food.wild_ingredients"), + (0.1, "common.loot_tables.food.prepared"), + // TODO: Change consumables when they are split up later + (1.0, "common.loot_tables.consumables"), ], // this is the amount of that good the most common item represents // so basically this table balances the goods against each other (higher=less valuable) good_scaling: [ - (Potions, 0.5), // common.items.consumable.potion_minor - (Food, 3.0), // common.items.food.mushroom - (Coin, 1.0), // common.items.utility.coins - (Armor, 0.3), // common.items.armor.misc.pants.worker_blue - (Tools, 1.0), // common.items.weapons.staff.starter_staff - (Ingredients, 5.0), // common.items.crafting_ing.leather_scraps + (Potions, 0.001), // common.items.consumable.potion_minor + (Food, 2.0), // common.items.food.mushroom + (Coin, 10.0), // common.items.utility.coins + (Armor, 0.2), // common.items.armor.misc.pants.worker_blue + (Tools, 0.1), // common.items.weapons.staff.starter_staff + (Ingredients, 1.0), // common.items.crafting_ing.leather_scraps ]) diff --git a/assets/common/items/weapons/axe/bloodsteel_axe-0.ron b/assets/common/items/weapons/axe/bloodsteel_axe-0.ron index 3d2cfc1495..58a2c1dd22 100644 --- a/assets/common/items/weapons/axe/bloodsteel_axe-0.ron +++ b/assets/common/items/weapons/axe/bloodsteel_axe-0.ron @@ -6,7 +6,7 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.4, - power: 1.6, + power: 1.8, poise_strength: 1.4, speed: 1.0, crit_chance: 0.1421875, diff --git a/assets/common/items/weapons/axe/bloodsteel_axe-1.ron b/assets/common/items/weapons/axe/bloodsteel_axe-1.ron index 8d84d6dc09..85fb57be60 100644 --- a/assets/common/items/weapons/axe/bloodsteel_axe-1.ron +++ b/assets/common/items/weapons/axe/bloodsteel_axe-1.ron @@ -6,7 +6,7 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.4, - power: 1.6, + power: 1.8, poise_strength: 1.8, speed: 1.0, crit_chance: 0.1421875, diff --git a/assets/common/items/weapons/axe/bloodsteel_axe-2.ron b/assets/common/items/weapons/axe/bloodsteel_axe-2.ron index 87c781125a..51c859d64c 100644 --- a/assets/common/items/weapons/axe/bloodsteel_axe-2.ron +++ b/assets/common/items/weapons/axe/bloodsteel_axe-2.ron @@ -6,7 +6,7 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.4, - power: 1.6, + power: 1.8, poise_strength: 1.8, speed: 1.0, crit_chance: 0.1421875, diff --git a/assets/common/items/weapons/axe/cobalt_axe-0.ron b/assets/common/items/weapons/axe/cobalt_axe-0.ron index 5eaa7087a0..56c5aeb820 100644 --- a/assets/common/items/weapons/axe/cobalt_axe-0.ron +++ b/assets/common/items/weapons/axe/cobalt_axe-0.ron @@ -6,7 +6,7 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.4, - power: 1.8, + power: 1.6, poise_strength: 1.0, speed: 1.0, crit_chance: 0.13611111, diff --git a/assets/common/items/weapons/axe/cobalt_axe-1.ron b/assets/common/items/weapons/axe/cobalt_axe-1.ron index ea31b94aeb..6bb57664a5 100644 --- a/assets/common/items/weapons/axe/cobalt_axe-1.ron +++ b/assets/common/items/weapons/axe/cobalt_axe-1.ron @@ -6,7 +6,7 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.4, - power: 1.8, + power: 1.6, poise_strength: 1.0, speed: 1.0, crit_chance: 0.13611111, diff --git a/assets/common/items/weapons/hammer/stone_hammer-0.ron b/assets/common/items/weapons/hammer/stone_hammer-0.ron index 5dea51f3a9..8962c74407 100644 --- a/assets/common/items/weapons/hammer/stone_hammer-0.ron +++ b/assets/common/items/weapons/hammer/stone_hammer-0.ron @@ -6,7 +6,7 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.5, - power: 0.7, + power: 0.6, poise_strength: 1.0, speed: 1.0, crit_chance: 0.07589286, diff --git a/assets/common/items/weapons/hammer/stone_hammer-1.ron b/assets/common/items/weapons/hammer/stone_hammer-1.ron index c211bde5b6..d30122ff3c 100644 --- a/assets/common/items/weapons/hammer/stone_hammer-1.ron +++ b/assets/common/items/weapons/hammer/stone_hammer-1.ron @@ -6,9 +6,9 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.5, - power: 0.7, + power: 0.5, poise_strength: 1.0, - speed: 1.0, + speed: 1.1, crit_chance: 0.07589286, crit_mult: 2.0756302, )), diff --git a/assets/common/items/weapons/hammer/stone_hammer-2.ron b/assets/common/items/weapons/hammer/stone_hammer-2.ron index 8ef2f63300..9700086d48 100644 --- a/assets/common/items/weapons/hammer/stone_hammer-2.ron +++ b/assets/common/items/weapons/hammer/stone_hammer-2.ron @@ -8,7 +8,7 @@ ItemDef( equip_time_secs: 0.5, power: 0.7, poise_strength: 1.0, - speed: 1.0, + speed: 0.9, crit_chance: 0.07589286, crit_mult: 2.0756302, )), diff --git a/assets/common/items/weapons/hammer/stone_hammer-3.ron b/assets/common/items/weapons/hammer/stone_hammer-3.ron index 7912094cbe..85debbe94a 100644 --- a/assets/common/items/weapons/hammer/stone_hammer-3.ron +++ b/assets/common/items/weapons/hammer/stone_hammer-3.ron @@ -6,7 +6,7 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.5, - power: 0.7, + power: 0.6, poise_strength: 1.0, speed: 1.0, crit_chance: 0.07589286, diff --git a/assets/common/items/weapons/hammer/worn_iron_hammer-0.ron b/assets/common/items/weapons/hammer/worn_iron_hammer-0.ron index 672fc057d6..4553141be5 100644 --- a/assets/common/items/weapons/hammer/worn_iron_hammer-0.ron +++ b/assets/common/items/weapons/hammer/worn_iron_hammer-0.ron @@ -6,7 +6,7 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.5, - power: 0.85, + power: 0.8, poise_strength: 1.0, speed: 1.0, crit_chance: 0.12242647, diff --git a/assets/common/items/weapons/hammer/worn_iron_hammer-1.ron b/assets/common/items/weapons/hammer/worn_iron_hammer-1.ron index cfc7b28c55..5f35938485 100644 --- a/assets/common/items/weapons/hammer/worn_iron_hammer-1.ron +++ b/assets/common/items/weapons/hammer/worn_iron_hammer-1.ron @@ -6,9 +6,9 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.5, - power: 0.85, + power: 0.9, poise_strength: 1.0, - speed: 1.0, + speed: 0.9, crit_chance: 0.12242647, crit_mult: 1.6864007, )), diff --git a/assets/common/items/weapons/hammer/worn_iron_hammer-2.ron b/assets/common/items/weapons/hammer/worn_iron_hammer-2.ron index 2b48d91009..2de0f6ee55 100644 --- a/assets/common/items/weapons/hammer/worn_iron_hammer-2.ron +++ b/assets/common/items/weapons/hammer/worn_iron_hammer-2.ron @@ -6,9 +6,9 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.5, - power: 0.85, + power: 0.7, poise_strength: 1.0, - speed: 1.0, + speed: 1.1, crit_chance: 0.12242647, crit_mult: 1.6864007, )), diff --git a/assets/common/items/weapons/hammer/worn_iron_hammer-3.ron b/assets/common/items/weapons/hammer/worn_iron_hammer-3.ron index 462348e406..7ca2bce88a 100644 --- a/assets/common/items/weapons/hammer/worn_iron_hammer-3.ron +++ b/assets/common/items/weapons/hammer/worn_iron_hammer-3.ron @@ -6,7 +6,7 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.5, - power: 0.85, + power: 0.8, poise_strength: 1.0, speed: 1.0, crit_chance: 0.12242647, diff --git a/assets/common/items/weapons/sceptre/fork0.ron b/assets/common/items/weapons/sceptre/fork0.ron index 48aaf66f89..91d4fa94c6 100644 --- a/assets/common/items/weapons/sceptre/fork0.ron +++ b/assets/common/items/weapons/sceptre/fork0.ron @@ -6,7 +6,7 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.4, - power: 2.0, + power: 1.7, poise_strength: 1.5, speed: 0.8, crit_chance: 0.11666667, diff --git a/assets/common/items/weapons/sceptre/loops0.ron b/assets/common/items/weapons/sceptre/loops0.ron index ff708bd16f..ff0c26e0c6 100644 --- a/assets/common/items/weapons/sceptre/loops0.ron +++ b/assets/common/items/weapons/sceptre/loops0.ron @@ -8,7 +8,7 @@ ItemDef( equip_time_secs: 0.4, power: 1.2, poise_strength: 1.5, - speed: 1.5, + speed: 1.3, crit_chance: 0.1925, crit_mult: 1.4329004, )), diff --git a/assets/common/items/weapons/sceptre/moon0.ron b/assets/common/items/weapons/sceptre/moon0.ron index 9d4f3698f5..d49039bf58 100644 --- a/assets/common/items/weapons/sceptre/moon0.ron +++ b/assets/common/items/weapons/sceptre/moon0.ron @@ -6,13 +6,13 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.4, - power: 1.6, + power: 1.3, poise_strength: 1.5, - speed: 0.5, + speed: 0.9, crit_chance: 0.0609375, crit_mult: 1.7326007, )), )), - quality: Common, + quality: Moderate, tags: [], ) \ No newline at end of file diff --git a/assets/common/items/weapons/sceptre/root_green0.ron b/assets/common/items/weapons/sceptre/root_green0.ron index 317a90aa9d..f8b8baf1f1 100644 --- a/assets/common/items/weapons/sceptre/root_green0.ron +++ b/assets/common/items/weapons/sceptre/root_green0.ron @@ -6,13 +6,13 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.4, - power: 3.5, + power: 0.7, poise_strength: 1.5, - speed: 0.4, + speed: 1.1, crit_chance: 0.055102043, crit_mult: 1.4444444, )), )), - quality: Moderate, + quality: Low, tags: [], ) \ No newline at end of file diff --git a/assets/common/items/weapons/sceptre/sceptre_velorite_0.ron b/assets/common/items/weapons/sceptre/sceptre_velorite_0.ron index c0bc0e4725..9dfbc9e842 100644 --- a/assets/common/items/weapons/sceptre/sceptre_velorite_0.ron +++ b/assets/common/items/weapons/sceptre/sceptre_velorite_0.ron @@ -6,9 +6,9 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.4, - power: 1.2, + power: 1.8, poise_strength: 1.5, - speed: 1.6, + speed: 1.2, crit_chance: 0.21153846, crit_mult: 1.4502164, )), diff --git a/assets/common/items/weapons/staff/aurora.ron b/assets/common/items/weapons/staff/aurora.ron index 1d6be7db9f..a8f82f2258 100644 --- a/assets/common/items/weapons/staff/aurora.ron +++ b/assets/common/items/weapons/staff/aurora.ron @@ -6,9 +6,9 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.3, - power: 0.8, + power: 1.4, poise_strength: 1.0, - speed: 2.0, + speed: 1.1, crit_chance: 0.2625, crit_mult: 1.4761904, )), diff --git a/assets/common/items/weapons/staff/bent_fuse.ron b/assets/common/items/weapons/staff/bent_fuse.ron index 5ea0391ccb..ab06866888 100644 --- a/assets/common/items/weapons/staff/bent_fuse.ron +++ b/assets/common/items/weapons/staff/bent_fuse.ron @@ -6,13 +6,13 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.3, - power: 1.5, + power: 0.8, poise_strength: 1.0, - speed: 1.2, + speed: 0.7, crit_chance: 0.17045455, crit_mult: 1.4469842, )), )), - quality: Epic, + quality: Low, tags: [], ) \ No newline at end of file diff --git a/assets/common/items/weapons/staff/bone_staff.ron b/assets/common/items/weapons/staff/bone_staff.ron index 26a20cc4ad..c3b786aff3 100644 --- a/assets/common/items/weapons/staff/bone_staff.ron +++ b/assets/common/items/weapons/staff/bone_staff.ron @@ -6,13 +6,13 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.3, - power: 1.0, + power: 0.5, poise_strength: 1.0, - speed: 1.0, + speed: 1.2, crit_chance: 0.1125, crit_mult: 1.6349206, )), )), - quality: Common, + quality: Low, tags: [], ) \ No newline at end of file diff --git a/assets/common/items/weapons/staff/crimson_eye.ron b/assets/common/items/weapons/staff/crimson_eye.ron index 46a26b28dd..6039aa9ea2 100644 --- a/assets/common/items/weapons/staff/crimson_eye.ron +++ b/assets/common/items/weapons/staff/crimson_eye.ron @@ -6,13 +6,13 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.3, - power: 1.3, + power: 0.5, poise_strength: 1.0, - speed: 1.0, + speed: 1.1, crit_chance: 0.125, crit_mult: 1.4571428, )), )), - quality: Moderate, + quality: Low, tags: [], ) \ No newline at end of file diff --git a/assets/common/items/weapons/staff/fiery_wishing_rod.ron b/assets/common/items/weapons/staff/fiery_wishing_rod.ron index f390f98f9e..a9bc27341a 100644 --- a/assets/common/items/weapons/staff/fiery_wishing_rod.ron +++ b/assets/common/items/weapons/staff/fiery_wishing_rod.ron @@ -6,13 +6,13 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.3, - power: 1.5, + power: 0.95, poise_strength: 1.0, speed: 0.8, crit_chance: 0.11111111, crit_mult: 1.5142857, )), )), - quality: Moderate, + quality: Common, tags: [], ) \ No newline at end of file diff --git a/assets/common/items/weapons/staff/flamethrower_0.ron b/assets/common/items/weapons/staff/flamethrower_0.ron index 77d92c2951..3244bcbd08 100644 --- a/assets/common/items/weapons/staff/flamethrower_0.ron +++ b/assets/common/items/weapons/staff/flamethrower_0.ron @@ -6,13 +6,13 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.3, - power: 2.2, + power: 1.5, poise_strength: 1.0, speed: 0.8, crit_chance: 0.113131315, crit_mult: 1.4017857, )), )), - quality: High, + quality: Moderate, tags: [], ) \ No newline at end of file diff --git a/assets/common/items/weapons/staff/frostwood_torch.ron b/assets/common/items/weapons/staff/frostwood_torch.ron index dedd5926a7..ca3280d0c7 100644 --- a/assets/common/items/weapons/staff/frostwood_torch.ron +++ b/assets/common/items/weapons/staff/frostwood_torch.ron @@ -6,7 +6,7 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.3, - power: 1.6, + power: 1.3, poise_strength: 1.0, speed: 1.2, crit_chance: 0.134379086, diff --git a/assets/common/items/weapons/staff/golden_khakkara.ron b/assets/common/items/weapons/staff/golden_khakkara.ron index 7b67add944..677abccdc9 100644 --- a/assets/common/items/weapons/staff/golden_khakkara.ron +++ b/assets/common/items/weapons/staff/golden_khakkara.ron @@ -6,9 +6,9 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.3, - power: 1.2, + power: 1.1, poise_strength: 1.0, - speed: 1.2, + speed: 1.1, crit_chance: 0.115, crit_mult: 1.4571428, )), diff --git a/assets/common/items/weapons/staff/heated_arm.ron b/assets/common/items/weapons/staff/heated_arm.ron index 21c061996b..d7bd74282e 100644 --- a/assets/common/items/weapons/staff/heated_arm.ron +++ b/assets/common/items/weapons/staff/heated_arm.ron @@ -6,9 +6,9 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.1, - power: 1.2, + power: 1.0, poise_strength: 1.0, - speed: 1.2, + speed: 1.0, crit_chance: 0.15, crit_mult: 1.4761904, )), diff --git a/assets/common/items/weapons/staff/infused_tower.ron b/assets/common/items/weapons/staff/infused_tower.ron index 217ec3dfe5..e0cbe2c965 100644 --- a/assets/common/items/weapons/staff/infused_tower.ron +++ b/assets/common/items/weapons/staff/infused_tower.ron @@ -6,13 +6,13 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.3, - power: 1.2, + power: 1.1, poise_strength: 1.0, - speed: 1.4, + speed: 0.9, crit_chance: 0.18715277, crit_mult: 1.445269, )), )), - quality: High, + quality: Moderate, tags: [], ) \ No newline at end of file diff --git a/assets/common/items/weapons/staff/lava_rod.ron b/assets/common/items/weapons/staff/lava_rod.ron index d84459eb79..fe8c3f4a25 100644 --- a/assets/common/items/weapons/staff/lava_rod.ron +++ b/assets/common/items/weapons/staff/lava_rod.ron @@ -6,13 +6,13 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.3, - power: 2.125, + power: 1.2, poise_strength: 1.0, speed: 0.8, crit_chance: 0.114379086, crit_mult: 1.4114286, )), )), - quality: High, + quality: Moderate, tags: [], ) \ No newline at end of file diff --git a/assets/common/items/weapons/staff/ley_seeker.ron b/assets/common/items/weapons/staff/ley_seeker.ron index f77d1c4ede..4e48bceace 100644 --- a/assets/common/items/weapons/staff/ley_seeker.ron +++ b/assets/common/items/weapons/staff/ley_seeker.ron @@ -6,9 +6,9 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.3, - power: 1.0, + power: 0.8, poise_strength: 1.0, - speed: 1.0, + speed: 0.9, crit_chance: 0.1125, crit_mult: 1.6349206, )), diff --git a/assets/common/items/weapons/staff/orc_iron.ron b/assets/common/items/weapons/staff/orc_iron.ron index 855908ae85..59e246157b 100644 --- a/assets/common/items/weapons/staff/orc_iron.ron +++ b/assets/common/items/weapons/staff/orc_iron.ron @@ -6,13 +6,13 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.3, - power: 0.9, + power: 1.5, poise_strength: 1.0, - speed: 2.0, + speed: 0.8, crit_chance: 0.2638889, crit_mult: 1.481203, )), )), - quality: Epic, + quality: Moderate, tags: [], ) \ No newline at end of file diff --git a/assets/common/items/weapons/staff/ruby_rod.ron b/assets/common/items/weapons/staff/ruby_rod.ron index 9e0942dcbc..d83f85db9a 100644 --- a/assets/common/items/weapons/staff/ruby_rod.ron +++ b/assets/common/items/weapons/staff/ruby_rod.ron @@ -8,7 +8,7 @@ ItemDef( equip_time_secs: 0.3, power: 1.6, poise_strength: 1.0, - speed: 1.0, + speed: 1.1, crit_chance: 0.2625, crit_mult: 1.4761904, )), diff --git a/assets/common/items/weapons/staff/solar.ron b/assets/common/items/weapons/staff/solar.ron index 9aea3b7f1f..bb76c9a306 100644 --- a/assets/common/items/weapons/staff/solar.ron +++ b/assets/common/items/weapons/staff/solar.ron @@ -6,9 +6,9 @@ ItemDef( hands: Two, stats: Direct(( equip_time_secs: 0.3, - power: 1.2, + power: 0.9, poise_strength: 1.0, - speed: 0.9, + speed: 1.1, crit_chance: 0.125, crit_mult: 1.4571428, )), diff --git a/assets/common/loot_tables/armor/agile.ron b/assets/common/loot_tables/armor/agile.ron new file mode 100644 index 0000000000..1cd2150a6c --- /dev/null +++ b/assets/common/loot_tables/armor/agile.ron @@ -0,0 +1,9 @@ +[ + (1.0, Item("common.items.armor.agile.back")), + (1.0, Item("common.items.armor.agile.belt")), + (1.0, Item("common.items.armor.agile.chest")), + (1.0, Item("common.items.armor.agile.foot")), + (1.0, Item("common.items.armor.agile.hand")), + (1.0, Item("common.items.armor.agile.pants")), + (1.0, Item("common.items.armor.agile.shoulder")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/armor/cloth.ron b/assets/common/loot_tables/armor/cloth.ron new file mode 100644 index 0000000000..76265a4eb1 --- /dev/null +++ b/assets/common/loot_tables/armor/cloth.ron @@ -0,0 +1,34 @@ +[ + (1.0, Item("common.items.armor.cloth_purple.belt")), + (1.0, Item("common.items.armor.cloth_purple.chest")), + (1.0, Item("common.items.armor.cloth_purple.foot")), + (1.0, Item("common.items.armor.cloth_purple.hand")), + (1.0, Item("common.items.armor.cloth_purple.pants")), + (1.0, Item("common.items.armor.cloth_purple.shoulder")), + (1.0, Item("common.items.armor.cloth_green.belt")), + (1.0, Item("common.items.armor.cloth_green.chest")), + (1.0, Item("common.items.armor.cloth_green.foot")), + (1.0, Item("common.items.armor.cloth_green.hand")), + (1.0, Item("common.items.armor.cloth_green.pants")), + (1.0, Item("common.items.armor.cloth_green.shoulder")), + (1.0, Item("common.items.armor.cloth_blue.belt")), + (1.0, Item("common.items.armor.cloth_blue.chest")), + (1.0, Item("common.items.armor.cloth_blue.foot")), + (1.0, Item("common.items.armor.cloth_blue.hand")), + (1.0, Item("common.items.armor.cloth_blue.pants")), + (1.0, Item("common.items.armor.cloth_blue.shoulder_0")), + (1.0, Item("common.items.armor.cloth_blue.shoulder_1")), + (1.0, Item("common.items.armor.misc.chest.worker_green_0")), + (1.0, Item("common.items.armor.misc.chest.worker_green_1")), + (1.0, Item("common.items.armor.misc.chest.worker_orange_0")), + (1.0, Item("common.items.armor.misc.chest.worker_orange_1")), + (1.0, Item("common.items.armor.misc.chest.worker_purple_0")), + (1.0, Item("common.items.armor.misc.chest.worker_purple_1")), + (1.0, Item("common.items.armor.misc.chest.worker_purple_brown")), + (1.0, Item("common.items.armor.misc.chest.worker_red_0")), + (1.0, Item("common.items.armor.misc.chest.worker_red_1")), + (1.0, Item("common.items.armor.misc.chest.worker_yellow_0")), + (1.0, Item("common.items.armor.misc.chest.worker_yellow_1")), + (1.0, Item("common.items.armor.misc.pants.worker_blue")), + (1.0, Item("common.items.armor.misc.pants.worker_brown")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/armor/cultist.ron b/assets/common/loot_tables/armor/cultist.ron new file mode 100644 index 0000000000..8b4cc7cb56 --- /dev/null +++ b/assets/common/loot_tables/armor/cultist.ron @@ -0,0 +1,8 @@ +[ + (1.0, Item("common.items.armor.cultist.belt")), + (1.0, Item("common.items.armor.cultist.chest")), + (1.0, Item("common.items.armor.cultist.foot")), + (1.0, Item("common.items.armor.cultist.hand")), + (1.0, Item("common.items.armor.cultist.pants")), + (1.0, Item("common.items.armor.cultist.shoulder")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/armor/druid.ron b/assets/common/loot_tables/armor/druid.ron new file mode 100644 index 0000000000..13b73adcde --- /dev/null +++ b/assets/common/loot_tables/armor/druid.ron @@ -0,0 +1,8 @@ +[ + (1.0, Item("common.items.armor.druid.belt")), + (1.0, Item("common.items.armor.druid.chest")), + (1.0, Item("common.items.armor.druid.foot")), + (1.0, Item("common.items.armor.druid.hand")), + (1.0, Item("common.items.armor.druid.pants")), + (1.0, Item("common.items.armor.druid.shoulder")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/armor/plate.ron b/assets/common/loot_tables/armor/plate.ron new file mode 100644 index 0000000000..e7ba66a81b --- /dev/null +++ b/assets/common/loot_tables/armor/plate.ron @@ -0,0 +1,8 @@ +[ + (1.0, Item("common.items.armor.plate.belt")), + (1.0, Item("common.items.armor.plate.chest")), + (1.0, Item("common.items.armor.plate.foot")), + (1.0, Item("common.items.armor.plate.hand")), + (1.0, Item("common.items.armor.plate.pants")), + (1.0, Item("common.items.armor.plate.shoulder")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/armor/steel.ron b/assets/common/loot_tables/armor/steel.ron new file mode 100644 index 0000000000..b189ec8186 --- /dev/null +++ b/assets/common/loot_tables/armor/steel.ron @@ -0,0 +1,8 @@ +[ + (1.0, Item("common.items.armor.steel.belt")), + (1.0, Item("common.items.armor.steel.chest")), + (1.0, Item("common.items.armor.steel.foot")), + (1.0, Item("common.items.armor.steel.hand")), + (1.0, Item("common.items.armor.steel.pants")), + (1.0, Item("common.items.armor.steel.shoulder")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/armor/swift.ron b/assets/common/loot_tables/armor/swift.ron new file mode 100644 index 0000000000..8d1bb0d7ea --- /dev/null +++ b/assets/common/loot_tables/armor/swift.ron @@ -0,0 +1,8 @@ +[ + (1.0, Item("common.items.armor.swift.belt")), + (1.0, Item("common.items.armor.swift.chest")), + (1.0, Item("common.items.armor.swift.foot")), + (1.0, Item("common.items.armor.swift.hand")), + (1.0, Item("common.items.armor.swift.pants")), + (1.0, Item("common.items.armor.swift.shoulder")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/armor/twigs.ron b/assets/common/loot_tables/armor/twigs.ron new file mode 100644 index 0000000000..c8dc254ba2 --- /dev/null +++ b/assets/common/loot_tables/armor/twigs.ron @@ -0,0 +1,8 @@ +[ + (1.0, Item("common.items.armor.twigs.belt")), + (1.0, Item("common.items.armor.twigs.chest")), + (1.0, Item("common.items.armor.twigs.foot")), + (1.0, Item("common.items.armor.twigs.hand")), + (1.0, Item("common.items.armor.twigs.pants")), + (1.0, Item("common.items.armor.twigs.shoulder")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/armor/twigsflowers.ron b/assets/common/loot_tables/armor/twigsflowers.ron new file mode 100644 index 0000000000..e62be86dfa --- /dev/null +++ b/assets/common/loot_tables/armor/twigsflowers.ron @@ -0,0 +1,8 @@ +[ + (1.0, Item("common.items.armor.twigsflowers.belt")), + (1.0, Item("common.items.armor.twigsflowers.chest")), + (1.0, Item("common.items.armor.twigsflowers.foot")), + (1.0, Item("common.items.armor.twigsflowers.hand")), + (1.0, Item("common.items.armor.twigsflowers.pants")), + (1.0, Item("common.items.armor.twigsflowers.shoulder")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/armor/twigsleaves.ron b/assets/common/loot_tables/armor/twigsleaves.ron new file mode 100644 index 0000000000..0e109d00ba --- /dev/null +++ b/assets/common/loot_tables/armor/twigsleaves.ron @@ -0,0 +1,8 @@ +[ + (1.0, Item("common.items.armor.twigsleaves.belt")), + (1.0, Item("common.items.armor.twigsleaves.chest")), + (1.0, Item("common.items.armor.twigsleaves.foot")), + (1.0, Item("common.items.armor.twigsleaves.hand")), + (1.0, Item("common.items.armor.twigsleaves.pants")), + (1.0, Item("common.items.armor.twigsleaves.shoulder")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/cave_large.ron b/assets/common/loot_tables/cave_large.ron new file mode 100644 index 0000000000..848f8a04ae --- /dev/null +++ b/assets/common/loot_tables/cave_large.ron @@ -0,0 +1,16 @@ +[ + // Misc + (0.25, Item("common.items.armor.misc.neck.plain_1")), + (1.5, LootTable("common.loot_tables.materials.common")), + (3.5, LootTable("common.loot_tables.materials.underground")), + (0.1, Item("common.items.glider.glider_blue")), + (0.05, Item("common.items.glider.glider_morpho")), + (0.05, Item("common.items.glider.glider_monarch")), + (0.05, Item("common.items.glider.glider_moth")), + (0.05, Item("common.items.armor.misc.ring.gold")), + (0.1, Item("common.items.lantern.geode_purp")), + (2.0, LootTable("common.loot_tables.weapons.tier-3")), + (1.5, LootTable("common.loot_tables.weapons.tier-4")), + (1.0, LootTable("common.loot_tables.weapons.tier-5")), + (0.05, LootTable("common.loot_tables.weapons.cave")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/consumables.ron b/assets/common/loot_tables/consumables.ron new file mode 100644 index 0000000000..ca1bbe4833 --- /dev/null +++ b/assets/common/loot_tables/consumables.ron @@ -0,0 +1,14 @@ +[ + // potions + (1.0, Item("common.items.consumable.potion_minor")), + (0.5, Item("common.items.consumable.potion_med")), + (0.2, Item("common.items.consumable.potion_big")), + // bombs + (0.6, Item("common.items.utility.bomb")), + (0.2, Item("common.items.utility.bomb_pile")), + // velorite + (1.0, Item("common.items.ore.veloritefrag")), + (0.5, Item("common.items.ore.velorite")), + // misc + (0.1, Item("common.items.utility.collar")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/biped_large/default.ron b/assets/common/loot_tables/creature/biped_large/default.ron new file mode 100644 index 0000000000..834b386b01 --- /dev/null +++ b/assets/common/loot_tables/creature/biped_large/default.ron @@ -0,0 +1,4 @@ +[ + (1.0, LootTable("common.loot_tables.food.prepared")), + (2.0, LootTable("common.loot_tables.cave_large")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/biped_large/mindflayer.ron b/assets/common/loot_tables/creature/biped_large/mindflayer.ron new file mode 100644 index 0000000000..41cce60a47 --- /dev/null +++ b/assets/common/loot_tables/creature/biped_large/mindflayer.ron @@ -0,0 +1,9 @@ +[ + // Crafting material + (1.0, Item("common.items.crafting_ing.mindflayer_bag_damaged")), + // Legendary weapons + (4.0, LootTable("common.loot_tables.weapons.legendary")), + // Rare misc items + (0.5, Item("common.items.boss_drops.lantern")), + (0.5, Item("common.items.glider.glider_purp")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/biped_large/saurok.ron b/assets/common/loot_tables/creature/biped_large/saurok.ron new file mode 100644 index 0000000000..8dc9d108af --- /dev/null +++ b/assets/common/loot_tables/creature/biped_large/saurok.ron @@ -0,0 +1,14 @@ +[ + (7.0, LootTable("common.loot_tables.materials.common")), + // Consumables + (0.5, Item("common.items.consumable.potion_minor")), + // Ring + (0.2, Item("common.items.armor.misc.ring.gold")), + // Utility + (0.1, Item("common.items.utility.collar")), + // Bag + (0.1, Item("common.items.armor.misc.bag.liana_kit")), + // Food + (2.0, LootTable("common.loot_tables.food.wild_ingredients")), + (1.5, LootTable("common.loot_tables.food.prepared")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/biped_large/troll.ron b/assets/common/loot_tables/creature/biped_large/troll.ron new file mode 100644 index 0000000000..8d756a38c8 --- /dev/null +++ b/assets/common/loot_tables/creature/biped_large/troll.ron @@ -0,0 +1,6 @@ +[ + (1.0, LootTable("common.loot_tables.food.prepared")), + (1.0, LootTable("common.loot_tables.cave_large")), + (1.0, LootTable("common.loot_tables.weapons.tier-2")), + (5.0, Item("common.items.crafting_ing.leather_troll")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/biped_large/wendigo.ron b/assets/common/loot_tables/creature/biped_large/wendigo.ron new file mode 100644 index 0000000000..bcb2acdda5 --- /dev/null +++ b/assets/common/loot_tables/creature/biped_large/wendigo.ron @@ -0,0 +1,6 @@ +[ + (1.0, LootTable("common.loot_tables.food.prepared")), + (1.0, Item("common.items.crafting_ing.icy_fang")), + (1.0, LootTable("common.loot_tables.weapons.tier-2")), + (4.0, LootTable("common.loot_tables.cave_large")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/bird_medium.ron b/assets/common/loot_tables/creature/bird_medium.ron new file mode 100644 index 0000000000..0b7572577a --- /dev/null +++ b/assets/common/loot_tables/creature/bird_medium.ron @@ -0,0 +1,4 @@ +[ + (1.0, LootTable("common.loot_tables.food.wild_ingredients")), + (1.0, LootTable("common.loot_tables.fallback")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/dragon.ron b/assets/common/loot_tables/creature/dragon.ron new file mode 100644 index 0000000000..674c7b3822 --- /dev/null +++ b/assets/common/loot_tables/creature/dragon.ron @@ -0,0 +1,3 @@ +[ + (1.0, LootTable("common.loot_tables.weapons.tier-5")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/fish.ron b/assets/common/loot_tables/creature/fish.ron new file mode 100644 index 0000000000..edfafbbe43 --- /dev/null +++ b/assets/common/loot_tables/creature/fish.ron @@ -0,0 +1,3 @@ +[ + (1.0, Item("common.items.food.fish")), +] diff --git a/assets/common/loot_tables/creature/golem.ron b/assets/common/loot_tables/creature/golem.ron new file mode 100644 index 0000000000..1caabc59f8 --- /dev/null +++ b/assets/common/loot_tables/creature/golem.ron @@ -0,0 +1,7 @@ +[ + (1.0, LootTable("common.loot_tables.food.prepared")), + (1.0, LootTable("common.loot_tables.armor.steel")), + (1.0, LootTable("common.loot_tables.weapons.tier-1")), + (1.0, LootTable("common.loot_tables.weapons.tier-2")), + (1.0, LootTable("common.loot_tables.weapons.tier-3")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/humanoid.ron b/assets/common/loot_tables/creature/humanoid.ron new file mode 100644 index 0000000000..3547240baf --- /dev/null +++ b/assets/common/loot_tables/creature/humanoid.ron @@ -0,0 +1,7 @@ +[ + (1.0, LootTable("common.loot_tables.humanoids")), + (1.0, LootTable("common.loot_tables.armor.swift")), + (1.0, LootTable("common.loot_tables.armor.cloth")), + (1.0, LootTable("common.loot_tables.weapons.starter")), + (1.0, LootTable("common.loot_tables.fallback")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/quad_low/default.ron b/assets/common/loot_tables/creature/quad_low/default.ron new file mode 100644 index 0000000000..0dd577cd0f --- /dev/null +++ b/assets/common/loot_tables/creature/quad_low/default.ron @@ -0,0 +1,5 @@ +[ + (1.0, LootTable("common.loot_tables.food.wild_ingredients")), + (1.0, Item("common.items.crafting_ing.leather_scraps")), + (1.0, LootTable("common.loot_tables.fallback")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/quad_low/maneater.ron b/assets/common/loot_tables/creature/quad_low/maneater.ron new file mode 100644 index 0000000000..f1ac20be7e --- /dev/null +++ b/assets/common/loot_tables/creature/quad_low/maneater.ron @@ -0,0 +1,5 @@ +[ + (1.0, Item("common.items.flowers.red")), + (1.0, Item("common.items.crafting_ing.twigs")), + (1.0, LootTable("common.loot_tables.food.wild_ingredients")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/quad_medium/default.ron b/assets/common/loot_tables/creature/quad_medium/default.ron new file mode 100644 index 0000000000..c11cdc4259 --- /dev/null +++ b/assets/common/loot_tables/creature/quad_medium/default.ron @@ -0,0 +1,4 @@ +[ + (1.0, LootTable("common.loot_tables.food.wild_ingredients")), + (1.0, Item("common.items.crafting_ing.leather_scraps")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/quad_medium/ice.ron b/assets/common/loot_tables/creature/quad_medium/ice.ron new file mode 100644 index 0000000000..ca7b5fde38 --- /dev/null +++ b/assets/common/loot_tables/creature/quad_medium/ice.ron @@ -0,0 +1,5 @@ +[ + (1.0, LootTable("common.loot_tables.food.wild_ingredients")), + (1.0, Item("common.items.crafting_ing.leather_scraps")), + (1.0, Item("common.items.crafting_ing.icy_fang")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/quad_small/default.ron b/assets/common/loot_tables/creature/quad_small/default.ron new file mode 100644 index 0000000000..c11cdc4259 --- /dev/null +++ b/assets/common/loot_tables/creature/quad_small/default.ron @@ -0,0 +1,4 @@ +[ + (1.0, LootTable("common.loot_tables.food.wild_ingredients")), + (1.0, Item("common.items.crafting_ing.leather_scraps")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/quad_small/dodarock.ron b/assets/common/loot_tables/creature/quad_small/dodarock.ron new file mode 100644 index 0000000000..f4b99bd7eb --- /dev/null +++ b/assets/common/loot_tables/creature/quad_small/dodarock.ron @@ -0,0 +1,3 @@ +[ + (1.0, LootTable("common.loot_tables.materials.underground")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/theropod/default.ron b/assets/common/loot_tables/creature/theropod/default.ron new file mode 100644 index 0000000000..8b25c8a670 --- /dev/null +++ b/assets/common/loot_tables/creature/theropod/default.ron @@ -0,0 +1,3 @@ +[ + (1.0, Item("common.items.crafting_ing.leather_scraps")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/creature/theropod/raptor.ron b/assets/common/loot_tables/creature/theropod/raptor.ron new file mode 100644 index 0000000000..0c4925c802 --- /dev/null +++ b/assets/common/loot_tables/creature/theropod/raptor.ron @@ -0,0 +1,4 @@ +[ + (1.0, Item("common.items.crafting_ing.leather_scraps")), + (1.0, Item("common.items.crafting_ing.raptor_feather")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/cultists.ron b/assets/common/loot_tables/cultists.ron new file mode 100644 index 0000000000..48d7236a67 --- /dev/null +++ b/assets/common/loot_tables/cultists.ron @@ -0,0 +1,23 @@ +[ + (4.0, LootTable("common.loot_tables.materials.common")), + (3.0, LootTable("common.loot_tables.food.wild_ingredients")), + (2.0, LootTable("common.loot_tables.food.prepared")), + (0.25, Item("common.items.armor.misc.neck.plain_1")), + (0.1, Item("common.items.glider.glider_blue")), + (0.5, Item("common.items.utility.firework_purple")), + (0.5, Item("common.items.utility.bomb")), + (0.5, Item("common.items.armor.misc.ring.gold")), + (0.25, Item("common.items.armor.misc.ring.skull")), + (2.0, LootTable("common.loot_tables.armor.swift")), + (2.0, LootTable("common.loot_tables.armor.agile")), + (3.0, LootTable("common.loot_tables.armor.plate")), + (2.0, LootTable("common.loot_tables.armor.steel")), + (0.001, Item("common.items.armor.misc.back.backpack")), + (0.1, Item("common.items.armor.misc.bag.heavy_seabag")), + (1.0, LootTable("common.loot_tables.weapons.tier-0")), + (2.0, LootTable("common.loot_tables.weapons.tier-1")), + (3.0, LootTable("common.loot_tables.weapons.tier-2")), + (4.0, LootTable("common.loot_tables.weapons.tier-3")), + (4.0, LootTable("common.loot_tables.weapons.tier-4")), + (3.0, LootTable("common.loot_tables.weapons.tier-5")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/dungeon/tier-0/enemy.ron b/assets/common/loot_tables/dungeon/tier-0/enemy.ron new file mode 100644 index 0000000000..854138e052 --- /dev/null +++ b/assets/common/loot_tables/dungeon/tier-0/enemy.ron @@ -0,0 +1,5 @@ +[ + (1.0, LootTable("common.loot_tables.humanoids")), + (1.0, LootTable("common.loot_tables.armor.cloth")), + (2.0, LootTable("common.loot_tables.weapons.tier-0")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/dungeon/tier-1/enemy.ron b/assets/common/loot_tables/dungeon/tier-1/enemy.ron new file mode 100644 index 0000000000..7493b71f24 --- /dev/null +++ b/assets/common/loot_tables/dungeon/tier-1/enemy.ron @@ -0,0 +1,5 @@ +[ + (1.0, LootTable("common.loot_tables.humanoids")), + (1.0, LootTable("common.loot_tables.armor.swift")), + (2.0, LootTable("common.loot_tables.weapons.tier-1")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/dungeon/tier-2/enemy.ron b/assets/common/loot_tables/dungeon/tier-2/enemy.ron new file mode 100644 index 0000000000..1c45d01caf --- /dev/null +++ b/assets/common/loot_tables/dungeon/tier-2/enemy.ron @@ -0,0 +1,5 @@ +[ + (1.0, LootTable("common.loot_tables.humanoids")), + (1.0, LootTable("common.loot_tables.armor.plate")), + (2.0, LootTable("common.loot_tables.weapons.tier-2")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/dungeon/tier-3/enemy.ron b/assets/common/loot_tables/dungeon/tier-3/enemy.ron new file mode 100644 index 0000000000..e7c466dfa9 --- /dev/null +++ b/assets/common/loot_tables/dungeon/tier-3/enemy.ron @@ -0,0 +1,6 @@ +[ + (1.0, LootTable("common.loot_tables.humanoids")), + (1.0, LootTable("common.loot_tables.armor.steel")), + (1.0, LootTable("common.loot_tables.weapons.tier-3")), + (3.0, LootTable("common.loot_tables.cultists")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/dungeon/tier-4/enemy.ron b/assets/common/loot_tables/dungeon/tier-4/enemy.ron new file mode 100644 index 0000000000..95c6ccb8dd --- /dev/null +++ b/assets/common/loot_tables/dungeon/tier-4/enemy.ron @@ -0,0 +1,5 @@ +[ + (1.0, LootTable("common.loot_tables.humanoids")), + (1.0, LootTable("common.loot_tables.weapons.tier-4")), + (5.0, LootTable("common.loot_tables.cultists")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/dungeon/tier-5/boss.ron b/assets/common/loot_tables/dungeon/tier-5/boss.ron new file mode 100644 index 0000000000..98c2fcb547 --- /dev/null +++ b/assets/common/loot_tables/dungeon/tier-5/boss.ron @@ -0,0 +1,4 @@ +[ + (1.0, LootTable("common.loot_tables.creature.biped_large.mindflayer")), + (3.0, LootTable("common.loot_tables.miniboss")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/dungeon/tier-5/enemy.ron b/assets/common/loot_tables/dungeon/tier-5/enemy.ron new file mode 100644 index 0000000000..df769bd445 --- /dev/null +++ b/assets/common/loot_tables/dungeon/tier-5/enemy.ron @@ -0,0 +1,6 @@ +[ + (1.0, LootTable("common.loot_tables.humanoids")), + (1.0, LootTable("common.loot_tables.weapons.tier-5")), + (3.0, LootTable("common.loot_tables.cultists")), + (5.0, Item("common.items.food.cheese")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/fallback.ron b/assets/common/loot_tables/fallback.ron new file mode 100644 index 0000000000..781d5d2999 --- /dev/null +++ b/assets/common/loot_tables/fallback.ron @@ -0,0 +1,4 @@ +[ + // Fallback loot table + (1.0, Item("common.items.food.cheese")), +] diff --git a/assets/common/loot_tables/food/farm_ingredients.ron b/assets/common/loot_tables/food/farm_ingredients.ron new file mode 100644 index 0000000000..f5bef72a54 --- /dev/null +++ b/assets/common/loot_tables/food/farm_ingredients.ron @@ -0,0 +1,7 @@ +[ + (1.0, Item("common.items.food.apple")), + (1.0, Item("common.items.food.carrot")), + (1.0, Item("common.items.food.cheese")), + (1.0, Item("common.items.food.lettuce")), + (1.0, Item("common.items.food.tomato")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/food/prepared.ron b/assets/common/loot_tables/food/prepared.ron new file mode 100644 index 0000000000..49d72e39ed --- /dev/null +++ b/assets/common/loot_tables/food/prepared.ron @@ -0,0 +1,9 @@ +[ + (0.2, Item("common.items.food.apple_mushroom_curry")), + (1.0, Item("common.items.food.apple_stick")), + (2.0, Item("common.items.food.cheese")), + (1.0, Item("common.items.food.mushroom_stick")), + (1.0, Item("common.items.food.plainsalad")), + (1.0, Item("common.items.food.sunflower_icetea")), + (1.0, Item("common.items.food.tomatosalad")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/food/wild_ingredients.ron b/assets/common/loot_tables/food/wild_ingredients.ron new file mode 100644 index 0000000000..614e33bcf0 --- /dev/null +++ b/assets/common/loot_tables/food/wild_ingredients.ron @@ -0,0 +1,6 @@ +[ + (1.0, Item("common.items.food.apple")), + (1.0, Item("common.items.food.cheese")), + (1.0, Item("common.items.food.coconut")), + (1.0, Item("common.items.food.mushroom")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/humanoids.ron b/assets/common/loot_tables/humanoids.ron new file mode 100644 index 0000000000..e82bc54c84 --- /dev/null +++ b/assets/common/loot_tables/humanoids.ron @@ -0,0 +1,18 @@ +[ + // Crafting Ingredients + (5.0, LootTable("common.loot_tables.materials.common")), + // Consumables + (0.2, Item("common.items.consumable.potion_minor")), + // Ring + (0.02, Item("common.items.armor.misc.ring.gold")), + // Utility + (0.05, Item("common.items.utility.collar")), + // Food + (1.0, LootTable("common.loot_tables.food.wild_ingredients")), + (0.25, LootTable("common.loot_tables.food.prepared")), + // Weapons + (0.5, LootTable("common.loot_tables.weapons.sword.wood")), + (0.5, LootTable("common.loot_tables.weapons.hammer.stone")), + (0.5, LootTable("common.loot_tables.weapons.bow.rawwood")), + (0.5, LootTable("common.loot_tables.weapons.starter")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table.ron b/assets/common/loot_tables/loot_table.ron deleted file mode 100644 index 9504a3ce9d..0000000000 --- a/assets/common/loot_tables/loot_table.ron +++ /dev/null @@ -1,4 +0,0 @@ -[ - // Fallback loot table - (1, "common.items.food.mushroom"), -] diff --git a/assets/common/loot_tables/loot_table_animal_ice.ron b/assets/common/loot_tables/loot_table_animal_ice.ron deleted file mode 100644 index a1ca41a531..0000000000 --- a/assets/common/loot_tables/loot_table_animal_ice.ron +++ /dev/null @@ -1,4 +0,0 @@ -[ - (2, "common.items.crafting_ing.icy_fang"), - (1, "common.items.crafting_ing.leather_scraps"), -] diff --git a/assets/common/loot_tables/loot_table_animal_parts.ron b/assets/common/loot_tables/loot_table_animal_parts.ron deleted file mode 100644 index 6358ba4cbe..0000000000 --- a/assets/common/loot_tables/loot_table_animal_parts.ron +++ /dev/null @@ -1,3 +0,0 @@ -[ - (2, "common.items.crafting_ing.leather_scraps"), -] diff --git a/assets/common/loot_tables/loot_table_armor_cloth.ron b/assets/common/loot_tables/loot_table_armor_cloth.ron deleted file mode 100644 index e05ff8303a..0000000000 --- a/assets/common/loot_tables/loot_table_armor_cloth.ron +++ /dev/null @@ -1,38 +0,0 @@ -[ - // belts - (0.33, "common.items.armor.cloth_blue.belt"), - (0.33, "common.items.armor.cloth_green.belt"), - (0.33, "common.items.armor.cloth_purple.belt"), - // chests - (0.08, "common.items.armor.cloth_blue.chest"), - (0.08, "common.items.armor.cloth_green.chest"), - (0.08, "common.items.armor.cloth_purple.chest"), - (0.08, "common.items.armor.misc.chest.worker_green_0"), - (0.08, "common.items.armor.misc.chest.worker_green_1"), - (0.08, "common.items.armor.misc.chest.worker_orange_0"), - (0.08, "common.items.armor.misc.chest.worker_orange_1"), - (0.08, "common.items.armor.misc.chest.worker_purple_0"), - (0.08, "common.items.armor.misc.chest.worker_purple_1"), - (0.08, "common.items.armor.misc.chest.worker_red_0"), - (0.08, "common.items.armor.misc.chest.worker_red_1"), - (0.08, "common.items.armor.misc.chest.worker_yellow_0"), - (0.08, "common.items.armor.misc.chest.worker_yellow_1"), - // shoes - (0.33, "common.items.armor.cloth_blue.foot"), - (0.33, "common.items.armor.cloth_green.foot"), - (0.33, "common.items.armor.cloth_purple.foot"), - // pants - (0.25, "common.items.armor.cloth_blue.pants"), - (0.25, "common.items.armor.cloth_green.pants"), - (0.25, "common.items.armor.cloth_purple.pants"), - (0.25, "common.items.armor.misc.pants.worker_blue"), - // shoulders - (0.25, "common.items.armor.cloth_blue.shoulder_0"), - (0.25, "common.items.armor.cloth_blue.shoulder_1"), - (0.25, "common.items.armor.cloth_green.shoulder"), - (0.25, "common.items.armor.cloth_purple.shoulder"), - //gloves - (0.33, "common.items.armor.cloth_blue.hand"), - (0.33, "common.items.armor.cloth_green.hand"), - (0.33, "common.items.armor.cloth_purple.hand"), -] diff --git a/assets/common/loot_tables/loot_table_armor_heavy.ron b/assets/common/loot_tables/loot_table_armor_heavy.ron deleted file mode 100644 index d855f91675..0000000000 --- a/assets/common/loot_tables/loot_table_armor_heavy.ron +++ /dev/null @@ -1,21 +0,0 @@ -[ - // belts - (0.67, "common.items.armor.plate.belt"), - (0.33, "common.items.armor.steel.belt"), - // chests - (0.67, "common.items.armor.plate.chest"), - (0.33, "common.items.armor.steel.chest"), - // shoes - (0.67, "common.items.armor.plate.foot"), - (0.33, "common.items.armor.steel.foot"), - // pants - (0.67, "common.items.armor.plate.pants"), - (0.66, "common.items.armor.steel.pants"), - // shoulders - (0.40, "common.items.armor.plate.shoulder"), - (0.37, "common.items.armor.misc.shoulder.iron_spikes"), - (0.33, "common.items.armor.steel.shoulder"), - //gloves - (0.67, "common.items.armor.plate.hand"), - (0.33, "common.items.armor.steel.hand"), -] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_armor_light.ron b/assets/common/loot_tables/loot_table_armor_light.ron deleted file mode 100644 index a782d48a51..0000000000 --- a/assets/common/loot_tables/loot_table_armor_light.ron +++ /dev/null @@ -1,27 +0,0 @@ -[ - // belts - (0.50, "common.items.armor.swift.belt"), - (0.50, "common.items.armor.agile.belt"), - // chests - (0.50, "common.items.armor.swift.chest"), - (0.50, "common.items.armor.agile.chest"), - // shoes - (0.50, "common.items.armor.swift.foot"), - (0.50, "common.items.armor.agile.foot"), - // pants - (0.33, "common.items.armor.swift.pants"), - (0.33, "common.items.armor.agile.pants"), - (0.33, "common.items.armor.misc.pants.hunting"), - // shoulders - (0.10, "common.items.armor.misc.shoulder.leather_strip"), - (0.20, "common.items.armor.swift.shoulder"), - (0.20, "common.items.armor.agile.shoulder"), - (0.20, "common.items.armor.agile.shoulder"), - (0.07, "common.items.armor.misc.shoulder.leather_iron_0"), - (0.07, "common.items.armor.misc.shoulder.leather_iron_1"), - (0.07, "common.items.armor.misc.shoulder.leather_iron_2"), - (0.07, "common.items.armor.misc.shoulder.leather_iron_3"), - //gloves - (0.50, "common.items.armor.swift.hand"), - (0.50, "common.items.armor.agile.hand"), -] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_armor_misc.ron b/assets/common/loot_tables/loot_table_armor_misc.ron deleted file mode 100644 index beba2e7b11..0000000000 --- a/assets/common/loot_tables/loot_table_armor_misc.ron +++ /dev/null @@ -1,12 +0,0 @@ -[ - // rings - (0.15, "common.items.armor.misc.ring.scratched"), - (0.05, "common.items.armor.misc.ring.gold"), - // capes - (0.25, "common.items.armor.misc.back.short_0"), - (0.25, "common.items.armor.misc.back.short_1"), - // necks - (0.25, "common.items.armor.misc.neck.plain_0"), - // misc - (0.05, "common.items.glider.glider_blue"), -] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_armor_nature.ron b/assets/common/loot_tables/loot_table_armor_nature.ron deleted file mode 100644 index 1bb0bb6531..0000000000 --- a/assets/common/loot_tables/loot_table_armor_nature.ron +++ /dev/null @@ -1,32 +0,0 @@ -[ - // belts - (0.40, "common.items.armor.druid.belt"), - (0.20, "common.items.armor.twigs.belt"), - (0.20, "common.items.armor.twigsflowers.belt"), - (0.20, "common.items.armor.twigsleaves.belt"), - // chests - (0.40, "common.items.armor.druid.chest"), - (0.20, "common.items.armor.twigs.chest"), - (0.20, "common.items.armor.twigsflowers.chest"), - (0.20, "common.items.armor.twigsleaves.chest"), - // shoes - (0.40, "common.items.armor.druid.foot"), - (0.20, "common.items.armor.twigs.foot"), - (0.20, "common.items.armor.twigsflowers.foot"), - (0.20, "common.items.armor.twigsleaves.foot"), - // pants - (0.40, "common.items.armor.druid.pants"), - (0.20, "common.items.armor.twigs.pants"), - (0.20, "common.items.armor.twigsflowers.pants"), - (0.20, "common.items.armor.twigsleaves.pants"), - // shoulders - (0.40, "common.items.armor.druid.shoulder"), - (0.20, "common.items.armor.twigs.shoulder"), - (0.20, "common.items.armor.twigsflowers.shoulder"), - (0.20, "common.items.armor.twigsleaves.shoulder"), - //gloves - (0.40, "common.items.armor.druid.hand"), - (0.20, "common.items.armor.twigs.hand"), - (0.20, "common.items.armor.twigsflowers.hand"), - (0.20, "common.items.armor.twigsleaves.hand"), -] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_cave_large.ron b/assets/common/loot_tables/loot_table_cave_large.ron deleted file mode 100644 index 2a8142e807..0000000000 --- a/assets/common/loot_tables/loot_table_cave_large.ron +++ /dev/null @@ -1,91 +0,0 @@ -[ - // Misc - (0.25, "common.items.armor.misc.neck.plain_1"), - (2.0, "common.items.crafting_ing.cloth_scraps"), - (1.0, "common.items.crafting_ing.empty_vial"), - (0.1, "common.items.glider.glider_blue"), - (0.05, "common.items.glider.glider_morpho"), - (0.05, "common.items.glider.glider_monarch"), - (0.05, "common.items.glider.glider_moth"), - (0.05, "common.items.armor.misc.ring.gold"), - (0.1, "common.items.lantern.geode_purp"), - // swords - (0.03, "common.items.weapons.sword.steel-0"), - (0.03, "common.items.weapons.sword.steel-1"), - (0.03, "common.items.weapons.sword.steel-2"), - (0.03, "common.items.weapons.sword.steel-3"), - (0.03, "common.items.weapons.sword.steel-4"), - (0.03, "common.items.weapons.sword.steel-5"), - (0.03, "common.items.weapons.sword.steel-6"), - (0.03, "common.items.weapons.sword.steel-7"), - (0.03, "common.items.weapons.sword.steel-8"), - (0.02, "common.items.weapons.sword.cobalt-0"), - (0.02, "common.items.weapons.sword.cobalt-1"), - (0.02, "common.items.weapons.sword.cobalt-2"), - (0.02, "common.items.weapons.sword.cobalt-3"), - (0.01, "common.items.weapons.sword.bloodsteel-0"), - (0.01, "common.items.weapons.sword.bloodsteel-1"), - (0.01, "common.items.weapons.sword.bloodsteel-2"), - // axes - (0.02, "common.items.weapons.axe.bloodsteel_axe-0"), - (0.02, "common.items.weapons.axe.bloodsteel_axe-1"), - (0.02, "common.items.weapons.axe.bloodsteel_axe-2"), - (0.01, "common.items.weapons.axe.cobalt_axe-0"), - (0.01, "common.items.weapons.axe.cobalt_axe-1"), - (0.001, "common.items.weapons.axe.malachite_axe-0"), - (0.04, "common.items.weapons.axe.iron_axe-7"), - (0.04, "common.items.weapons.axe.iron_axe-8"), - (0.04, "common.items.weapons.axe.iron_axe-9"), - (0.04, "common.items.weapons.axe.steel_axe-0"), - (0.04, "common.items.weapons.axe.steel_axe-1"), - (0.04, "common.items.weapons.axe.steel_axe-2"), - (0.04, "common.items.weapons.axe.steel_axe-3"), - (0.04, "common.items.weapons.axe.steel_axe-4"), - (0.04, "common.items.weapons.axe.steel_axe-5"), - (0.04, "common.items.weapons.axe.steel_axe-6"), - // healing staff - (0.2, "common.items.weapons.sceptre.staff_nature"), - (0.1, "common.items.weapons.sceptre.fork0"), - (0.1, "common.items.weapons.sceptre.emerald"), - (0.1, "common.items.weapons.sceptre.coralline_cane"), - (0.001, "common.items.weapons.sceptre.sceptre_velorite_0"), - // staves - (0.20, "common.items.weapons.staff.bone_staff"), - (0.20, "common.items.weapons.staff.ley_seeker"), - (0.10, "common.items.weapons.staff.fiery_wishing_rod"), - (0.10, "common.items.weapons.staff.heated_arm"), - (0.10, "common.items.weapons.staff.golden_khakkara"), - (0.10, "common.items.weapons.staff.crimson_eye"), - (0.10, "common.items.weapons.staff.solar"), - (0.05, "common.items.weapons.staff.lava_rod"), - (0.05, "common.items.weapons.staff.dragon_tongue"), - (0.01, "common.items.weapons.staff.orc_iron"), - // hammers - (0.30, "common.items.weapons.hammer.cobalt_hammer-0"), - (0.30, "common.items.weapons.hammer.cobalt_hammer-1"), - (0.15, "common.items.weapons.hammer.runic_hammer"), - (0.15, "common.items.weapons.hammer.ramshead_hammer"), - (0.04, "common.items.weapons.hammer.iron_hammer-7"), - (0.04, "common.items.weapons.hammer.iron_hammer-8"), - (0.05, "common.items.weapons.hammer.steel_hammer-0"), - (0.05, "common.items.weapons.hammer.steel_hammer-1"), - (0.05, "common.items.weapons.hammer.steel_hammer-2"), - (0.05, "common.items.weapons.hammer.steel_hammer-3"), - (0.05, "common.items.weapons.hammer.steel_hammer-4"), - (0.05, "common.items.weapons.hammer.steel_hammer-5"), - // bows - (0.03, "common.items.weapons.bow.metal-0"), - (0.03, "common.items.weapons.bow.metal-1"), - (0.03, "common.items.weapons.bow.metal-2"), - (0.03, "common.items.weapons.bow.metal-3"), - (0.03, "common.items.weapons.bow.metal-4"), - (0.02, "common.items.weapons.bow.frostwood-0"), - (0.02, "common.items.weapons.bow.frostwood-1"), - (0.02, "common.items.weapons.bow.frostwood-2"), - (0.01, "common.items.weapons.bow.eldwood-0"), - (0.01, "common.items.weapons.bow.eldwood-1"), - (0.01, "common.items.weapons.bow.eldwood-2"), - (0.001, "common.items.weapons.bow.velorite"), - - -] diff --git a/assets/common/loot_tables/loot_table_consumables.ron b/assets/common/loot_tables/loot_table_consumables.ron deleted file mode 100644 index f4dfab8089..0000000000 --- a/assets/common/loot_tables/loot_table_consumables.ron +++ /dev/null @@ -1,14 +0,0 @@ -[ - // potions - (1, "common.items.consumable.potion_minor"), - (0.1, "common.items.consumable.potion_med"), - (0.01, "common.items.consumable.potion_big"), - // bombs - (0.6, "common.items.utility.bomb"), - (0.2, "common.items.utility.bomb_pile"), - // velorite - (1, "common.items.ore.veloritefrag"), - (0.5, "common.items.ore.velorite"), - // misc - (0.1, "common.items.utility.collar"), -] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_crafting.ron b/assets/common/loot_tables/loot_table_crafting.ron deleted file mode 100644 index a4eb6e81aa..0000000000 --- a/assets/common/loot_tables/loot_table_crafting.ron +++ /dev/null @@ -1,13 +0,0 @@ -[ - // crafting ingredients - (2, "common.items.crafting_ing.leather_scraps"), - (4, "common.items.crafting_ing.cloth_scraps"), - (1, "common.items.crafting_ing.empty_vial"), - (0.5, "common.items.crafting_ing.amethyst"), - (0.5, "common.items.crafting_ing.topaz"), - (0.4, "common.items.crafting_ing.sapphire"), - (0.35, "common.items.crafting_ing.emerald"), - (0.25, "common.items.crafting_ing.ruby"), - (0.10, "common.items.crafting_ing.diamond"), - -] diff --git a/assets/common/loot_tables/loot_table_cultists.ron b/assets/common/loot_tables/loot_table_cultists.ron deleted file mode 100644 index b2357169b9..0000000000 --- a/assets/common/loot_tables/loot_table_cultists.ron +++ /dev/null @@ -1,227 +0,0 @@ -[ - // Food - // simple - (3, "common.items.food.cheese"), - (3, "common.items.food.apple"), - (3, "common.items.food.mushroom"), - (3, "common.items.food.coconut"), - (5, "common.items.crafting_ing.cloth_scraps"), - // crafted - (0.5, "common.items.food.apple_mushroom_curry"), - (0.5, "common.items.food.apple_stick"), - (0.5, "common.items.food.mushroom_stick"), - // Misc - (4, "common.items.crafting_ing.empty_vial"), - (0.25, "common.items.armor.misc.neck.plain_1"), - (0.1, "common.items.glider.glider_blue"), - (0.5, "common.items.utility.firework_purple"), - (0.5, "common.items.utility.bomb"), - (0.5, "common.items.armor.misc.ring.gold"), - (0.25, "common.items.armor.misc.ring.skull"), - // Heavy Armour - // belts - (0.5, "common.items.armor.plate.belt"), - (0.3, "common.items.armor.steel.belt"), - // chests - (0.5, "common.items.armor.plate.chest"), - (0.3, "common.items.armor.steel.chest"), - // shoes - (0.5, "common.items.armor.plate.foot"), - (0.3, "common.items.armor.steel.foot"), - // pants - (0.5, "common.items.armor.plate.pants"), - (0.3, "common.items.armor.steel.pants"), - // shoulders - (0.40, "common.items.armor.plate.shoulder"), - (0.37, "common.items.armor.misc.shoulder.iron_spikes"), - (0.33, "common.items.armor.steel.shoulder"), - //gloves - (0.67, "common.items.armor.plate.hand"), - (0.33, "common.items.armor.steel.hand"), - //Light Armour - // belts - (0.50, "common.items.armor.swift.belt"), - (0.50, "common.items.armor.agile.belt"), - // chests - (0.50, "common.items.armor.swift.chest"), - (0.50, "common.items.armor.agile.chest"), - // shoes - (0.50, "common.items.armor.swift.foot"), - (0.50, "common.items.armor.agile.foot"), - // pants - (0.33, "common.items.armor.swift.pants"), - (0.33, "common.items.armor.agile.pants"), - (0.33, "common.items.armor.misc.pants.hunting"), - // shoulders - (0.6, "common.items.armor.misc.shoulder.leather_strip"), - (0.4, "common.items.armor.swift.shoulder"), - (0.4, "common.items.armor.agile.shoulder"), - (0.3, "common.items.armor.misc.shoulder.leather_iron_0"), - (0.3, "common.items.armor.misc.shoulder.leather_iron_1"), - (0.3, "common.items.armor.misc.shoulder.leather_iron_2"), - (0.3, "common.items.armor.misc.shoulder.leather_iron_3"), - //gloves - (0.50, "common.items.armor.swift.hand"), - (0.50, "common.items.armor.agile.hand"), - //backpack - (0.001, "common.items.armor.misc.back.backpack"), - (0.1, "common.items.armor.misc.bag.heavy_seabag"), - // Common Weapons - // swords - (0.10, "common.items.weapons.sword.wood-0"), - (0.10, "common.items.weapons.sword.wood-1"), - (0.10, "common.items.weapons.sword.wood-2"), - (0.10, "common.items.weapons.sword.stone-0"), - (0.10, "common.items.weapons.sword.stone-1"), - (0.10, "common.items.weapons.sword.stone-2"), - (0.05, "common.items.weapons.sword.bronze-0"), - (0.05, "common.items.weapons.sword.bronze-1"), - (0.05, "common.items.weapons.sword.bronze-2"), - // axes - (0.20, "common.items.weapons.axe.orc_axe-0"), - (0.10, "common.items.weapons.axe.worn_iron_axe-0"), - (0.10, "common.items.weapons.axe.worn_iron_axe-1"), - (0.10, "common.items.weapons.axe.worn_iron_axe-2"), - (0.10, "common.items.weapons.axe.worn_iron_axe-3"), - (0.10, "common.items.weapons.axe.worn_iron_axe-4"), - // healing staff - (0.25, "common.items.weapons.sceptre.staff_nature"), - // hammers - (0.15, "common.items.weapons.hammer.flimsy_hammer"), - (0.10, "common.items.weapons.hammer.wood_hammer-0"), - (0.10, "common.items.weapons.hammer.stone_hammer-0"), - (0.10, "common.items.weapons.hammer.stone_hammer-1"), - (0.10, "common.items.weapons.hammer.stone_hammer-2"), - (0.10, "common.items.weapons.hammer.stone_hammer-3"), - (0.05, "common.items.weapons.hammer.worn_iron_hammer-0"), - (0.05, "common.items.weapons.hammer.worn_iron_hammer-1"), - (0.05, "common.items.weapons.hammer.worn_iron_hammer-2"), - (0.05, "common.items.weapons.hammer.worn_iron_hammer-3"), - // bows - (0.20, "common.items.weapons.bow.rawwood-0"), - (0.20, "common.items.weapons.bow.rawwood-1"), - (0.10, "common.items.weapons.bow.wood-0"), - (0.10, "common.items.weapons.bow.wood-1"), - (0.10, "common.items.weapons.bow.wood-2"), - (0.10, "common.items.weapons.bow.wood-3"), - (0.10, "common.items.weapons.bow.wood-4"), - (0.05, "common.items.weapons.bow.bone-0"), - (0.05, "common.items.weapons.bow.bone-1"), - (0.05, "common.items.weapons.bow.bone-2"), - (0.05, "common.items.weapons.bow.bone-3"), - // Uncommon Weapons - // swords - (0.04, "common.items.weapons.sword.iron-0"), - (0.04, "common.items.weapons.sword.iron-1"), - (0.04, "common.items.weapons.sword.iron-2"), - (0.04, "common.items.weapons.sword.iron-3"), - (0.04, "common.items.weapons.sword.iron-4"), - (0.04, "common.items.weapons.sword.iron-5"), - (0.04, "common.items.weapons.sword.iron-6"), - (0.04, "common.items.weapons.sword.iron-7"), - (0.04, "common.items.weapons.sword.iron-8"), - (0.04, "common.items.weapons.sword.iron-9"), - (0.04, "common.items.weapons.sword.iron-10"), - (0.03, "common.items.weapons.sword.steel-0"), - (0.03, "common.items.weapons.sword.steel-1"), - (0.03, "common.items.weapons.sword.steel-2"), - (0.03, "common.items.weapons.sword.steel-3"), - (0.03, "common.items.weapons.sword.steel-4"), - (0.03, "common.items.weapons.sword.steel-5"), - (0.03, "common.items.weapons.sword.steel-6"), - (0.03, "common.items.weapons.sword.steel-7"), - (0.03, "common.items.weapons.sword.steel-8"), - // axes - (0.15, "common.items.weapons.axe.bronze_axe-0"), - (0.15, "common.items.weapons.axe.bronze_axe-1"), - (0.15, "common.items.weapons.axe.bronze_axe-2"), - (0.04, "common.items.weapons.axe.iron_axe-0"), - (0.04, "common.items.weapons.axe.iron_axe-1"), - (0.04, "common.items.weapons.axe.iron_axe-2"), - (0.04, "common.items.weapons.axe.iron_axe-3"), - (0.04, "common.items.weapons.axe.iron_axe-4"), - (0.04, "common.items.weapons.axe.iron_axe-5"), - (0.04, "common.items.weapons.axe.iron_axe-6"), - (0.04, "common.items.weapons.axe.iron_axe-7"), - (0.04, "common.items.weapons.axe.iron_axe-8"), - (0.04, "common.items.weapons.axe.iron_axe-9"), - (0.04, "common.items.weapons.axe.steel_axe-0"), - (0.04, "common.items.weapons.axe.steel_axe-1"), - (0.04, "common.items.weapons.axe.steel_axe-2"), - (0.04, "common.items.weapons.axe.steel_axe-3"), - (0.04, "common.items.weapons.axe.steel_axe-4"), - (0.04, "common.items.weapons.axe.steel_axe-5"), - (0.04, "common.items.weapons.axe.steel_axe-6"), - // healing staff - (0.5, "common.items.weapons.sceptre.staff_nature"), - // staves - (0.40, "common.items.weapons.staff.bone_staff"), - (0.40, "common.items.weapons.staff.crimson_eye"), - (0.20, "common.items.weapons.staff.aurora"), - (0.20, "common.items.weapons.staff.frostwood_torch"), - // hammers - (0.15, "common.items.weapons.hammer.bronze_hammer-0"), - (0.15, "common.items.weapons.hammer.bronze_hammer-1"), - (0.04, "common.items.weapons.hammer.iron_hammer-0"), - (0.04, "common.items.weapons.hammer.iron_hammer-1"), - (0.04, "common.items.weapons.hammer.iron_hammer-2"), - (0.04, "common.items.weapons.hammer.iron_hammer-3"), - (0.04, "common.items.weapons.hammer.iron_hammer-4"), - (0.04, "common.items.weapons.hammer.iron_hammer-5"), - (0.04, "common.items.weapons.hammer.iron_hammer-6"), - (0.04, "common.items.weapons.hammer.iron_hammer-7"), - (0.04, "common.items.weapons.hammer.iron_hammer-8"), - (0.05, "common.items.weapons.hammer.steel_hammer-0"), - (0.05, "common.items.weapons.hammer.steel_hammer-1"), - (0.05, "common.items.weapons.hammer.steel_hammer-2"), - (0.05, "common.items.weapons.hammer.steel_hammer-3"), - (0.05, "common.items.weapons.hammer.steel_hammer-4"), - (0.05, "common.items.weapons.hammer.steel_hammer-5"), - // bows - (0.04, "common.items.weapons.bow.hardwood-0"), - (0.04, "common.items.weapons.bow.hardwood-1"), - (0.04, "common.items.weapons.bow.hardwood-2"), - (0.04, "common.items.weapons.bow.hardwood-3"), - (0.04, "common.items.weapons.bow.hardwood-4"), - (0.04, "common.items.weapons.bow.hardwood-5"), - (0.03, "common.items.weapons.bow.metal-0"), - (0.03, "common.items.weapons.bow.metal-1"), - (0.03, "common.items.weapons.bow.metal-2"), - (0.03, "common.items.weapons.bow.metal-3"), - (0.03, "common.items.weapons.bow.metal-4"), - // Rare Weapons - // swords - (0.20, "common.items.weapons.sword.cobalt-0"), - (0.20, "common.items.weapons.sword.cobalt-1"), - (0.20, "common.items.weapons.sword.cobalt-2"), - (0.20, "common.items.weapons.sword.cobalt-3"), - (0.10, "common.items.weapons.sword.bloodsteel-0"), - (0.10, "common.items.weapons.sword.bloodsteel-1"), - (0.10, "common.items.weapons.sword.bloodsteel-2"), - // axes - (0.20, "common.items.weapons.axe.bloodsteel_axe-0"), - (0.20, "common.items.weapons.axe.bloodsteel_axe-1"), - (0.20, "common.items.weapons.axe.bloodsteel_axe-2"), - // healing staff - (0.25, "common.items.weapons.sceptre.staff_nature"), - // staves - (0.2, "common.items.weapons.staff.infused_tower"), - (0.10, "common.items.weapons.staff.lava_rod"), - (0.10, "common.items.weapons.staff.dragon_tongue"), - (0.10, "common.items.weapons.staff.flamethrower_0"), - (0.04, "common.items.weapons.staff.bent_fuse"), - (0.04, "common.items.weapons.sceptre.emerald"), - (0.04, "common.items.weapons.staff.orc_iron"), - // hammers - (0.01, "common.items.weapons.hammer.cobalt_hammer-0"), - (0.01, "common.items.weapons.hammer.cobalt_hammer-1"), - (0.01, "common.items.weapons.hammer.runic_hammer"), - (0.1, "common.items.weapons.hammer.ramshead_hammer"), - // bows - (0.20, "common.items.weapons.bow.frostwood-0"), - (0.20, "common.items.weapons.bow.frostwood-1"), - (0.20, "common.items.weapons.bow.frostwood-2"), - (0.10, "common.items.weapons.bow.eldwood-0"), - (0.10, "common.items.weapons.bow.eldwood-1"), - (0.10, "common.items.weapons.bow.eldwood-2"), -] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_fish.ron b/assets/common/loot_tables/loot_table_fish.ron deleted file mode 100644 index c7268289e5..0000000000 --- a/assets/common/loot_tables/loot_table_fish.ron +++ /dev/null @@ -1,3 +0,0 @@ -[ - (1, "common.items.food.fish"), -] diff --git a/assets/common/loot_tables/loot_table_food.ron b/assets/common/loot_tables/loot_table_food.ron deleted file mode 100644 index 85257308bb..0000000000 --- a/assets/common/loot_tables/loot_table_food.ron +++ /dev/null @@ -1,14 +0,0 @@ -[ - // simple - (3, "common.items.food.cheese"), - (3, "common.items.food.apple"), - (3, "common.items.food.mushroom"), - (1, "common.items.food.coconut"), - (1, "common.items.food.lettuce"), - (1, "common.items.food.tomato"), - (2, "common.items.food.carrot"), - // crafted - (0.05, "common.items.food.apple_mushroom_curry"), - (0.10, "common.items.food.apple_stick"), - (0.10, "common.items.food.mushroom_stick"), -] diff --git a/assets/common/loot_tables/loot_table_humanoids.ron b/assets/common/loot_tables/loot_table_humanoids.ron deleted file mode 100644 index cbaeadef71..0000000000 --- a/assets/common/loot_tables/loot_table_humanoids.ron +++ /dev/null @@ -1,31 +0,0 @@ -[ - // Crafting Ingredients - (2, "common.items.crafting_ing.empty_vial"), - (0.10, "common.items.crafting_ing.diamond"), - (4, "common.items.crafting_ing.cloth_scraps"), - // Consumables - (0.2, "common.items.consumable.potion_minor"), - // Ring - (0.02, "common.items.armor.misc.ring.gold"), - // Utility - (0.05, "common.items.utility.collar"), - // Food - (1, "common.items.food.coconut"), - (0.05, "common.items.food.apple_mushroom_curry"), - (0.10, "common.items.food.apple_stick"), - (0.10, "common.items.food.mushroom_stick"), - // Weapons - (0.10, "common.items.weapons.sword.wood-0"), - (0.10, "common.items.weapons.sword.wood-1"), - (0.10, "common.items.weapons.sword.wood-2"), - (0.10, "common.items.weapons.axe.worn_iron_axe-0"), - (0.10, "common.items.weapons.axe.worn_iron_axe-1"), - (0.10, "common.items.weapons.axe.worn_iron_axe-2"), - (0.10, "common.items.weapons.axe.worn_iron_axe-3"), - (0.10, "common.items.weapons.axe.worn_iron_axe-4"), - (0.25, "common.items.weapons.sceptre.staff_nature"), - (0.15, "common.items.weapons.hammer.flimsy_hammer"), - (0.10, "common.items.weapons.hammer.wood_hammer-0"), - (0.15, "common.items.weapons.bow.rawwood-0"), - (0.15, "common.items.weapons.bow.rawwood-1"), -] diff --git a/assets/common/loot_tables/loot_table_husk.ron b/assets/common/loot_tables/loot_table_husk.ron deleted file mode 100644 index eb55933d9a..0000000000 --- a/assets/common/loot_tables/loot_table_husk.ron +++ /dev/null @@ -1,3 +0,0 @@ -[ - (1, "common.items.crafting_ing.stones"), -] diff --git a/assets/common/loot_tables/loot_table_maneater.ron b/assets/common/loot_tables/loot_table_maneater.ron deleted file mode 100644 index 524a6b2030..0000000000 --- a/assets/common/loot_tables/loot_table_maneater.ron +++ /dev/null @@ -1,5 +0,0 @@ -[ - (1, "common.items.flowers.red"), - (1, "common.items.crafting_ing.twigs"), - (0.5, "common.items.food.coconut"), -] diff --git a/assets/common/loot_tables/loot_table_miniboss.ron b/assets/common/loot_tables/loot_table_miniboss.ron deleted file mode 100644 index 8c926aca5b..0000000000 --- a/assets/common/loot_tables/loot_table_miniboss.ron +++ /dev/null @@ -1,15 +0,0 @@ -[ - // armor - (1, "common.items.armor.cultist.belt"), - (1, "common.items.armor.cultist.chest"), - (1, "common.items.armor.cultist.foot"), - (1, "common.items.armor.cultist.hand"), - (1, "common.items.armor.cultist.pants"), - (1, "common.items.armor.cultist.shoulder"), - (1, "common.items.armor.misc.back.dungeon_purple"), - (1, "common.items.armor.misc.ring.skull"), - // weapons - (1, "common.items.weapons.staff.cultist_staff"), - (1, "common.items.weapons.hammer.cultist_purp_2h-0"), - (1, "common.items.weapons.sword.cultist"), -] diff --git a/assets/common/loot_tables/loot_table_raptor.ron b/assets/common/loot_tables/loot_table_raptor.ron deleted file mode 100644 index 2561842b99..0000000000 --- a/assets/common/loot_tables/loot_table_raptor.ron +++ /dev/null @@ -1,4 +0,0 @@ -[ - (2, "common.items.crafting_ing.raptor_feather"), - (1, "common.items.crafting_ing.leather_scraps"), -] diff --git a/assets/common/loot_tables/loot_table_rocks.ron b/assets/common/loot_tables/loot_table_rocks.ron deleted file mode 100644 index 83a5e7a33c..0000000000 --- a/assets/common/loot_tables/loot_table_rocks.ron +++ /dev/null @@ -1,6 +0,0 @@ -[ - (1, "common.items.crafting_ing.stones"), - (0.05, "common.items.crafting_ing.diamond"), - (0.10, "common.items.ore.velorite"), - (0.20, "common.items.ore.veloritefrag"), -] diff --git a/assets/common/loot_tables/loot_table_saurok.ron b/assets/common/loot_tables/loot_table_saurok.ron deleted file mode 100644 index 830f8dc884..0000000000 --- a/assets/common/loot_tables/loot_table_saurok.ron +++ /dev/null @@ -1,19 +0,0 @@ -[ - (2, "common.items.crafting_ing.empty_vial"), - (0.01, "common.items.crafting_ing.diamond"), - (3, "common.items.crafting_ing.cloth_scraps"), - (2, "common.items.crafting_ing.leather_scraps"), - // Consumables - (0.5, "common.items.consumable.potion_minor"), - // Ring - (0.2, "common.items.armor.misc.ring.gold"), - // Utility - (0.1, "common.items.utility.collar"), - // Bag - (0.1, "common.items.armor.misc.bag.liana_kit"), - // Food - (2.0, "common.items.food.coconut"), - (0.3, "common.items.food.apple_mushroom_curry"), - (0.6, "common.items.food.apple_stick"), - (0.8, "common.items.food.mushroom_stick"), -] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_troll.ron b/assets/common/loot_tables/loot_table_troll.ron deleted file mode 100644 index 9c15f4cc66..0000000000 --- a/assets/common/loot_tables/loot_table_troll.ron +++ /dev/null @@ -1,4 +0,0 @@ -[ - (1, "common.items.crafting_ing.leather_troll"), - (0.25, "common.items.crafting_ing.leather_scraps"), -] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_villager.ron b/assets/common/loot_tables/loot_table_villager.ron deleted file mode 100644 index 341a7f26d8..0000000000 --- a/assets/common/loot_tables/loot_table_villager.ron +++ /dev/null @@ -1,45 +0,0 @@ -[ - // Crafting Ingredients - (2, "common.items.crafting_ing.bowl"), - (1, "common.items.crafting_ing.empty_vial"), - (0.10, "common.items.crafting_ing.diamond"), - (1, "common.items.crafting_ing.cloth_scraps"), - // Consumables - (0.2, "common.items.consumable.potion_minor"), - // Armour - (1, "common.items.armor.misc.chest.worker_green_0"), - (1, "common.items.armor.misc.chest.worker_green_1"), - (1, "common.items.armor.misc.chest.worker_orange_0"), - (1, "common.items.armor.misc.chest.worker_orange_1"), - (1, "common.items.armor.misc.chest.worker_purple_0"), - (1, "common.items.armor.misc.chest.worker_purple_1"), - (1, "common.items.armor.misc.chest.worker_red_0"), - (1, "common.items.armor.misc.chest.worker_red_1"), - (1, "common.items.armor.misc.chest.worker_yellow_0"), - (1, "common.items.armor.misc.chest.worker_yellow_1"), - (1, "common.items.armor.misc.pants.worker_blue"), - // Utility - (0.05, "common.items.utility.collar"), - // Food - (0.5, "common.items.food.coconut"), - (0.5, "common.items.food.lettuce"), - (0.75, "common.items.food.carrot"), - (0.75, "common.items.food.tomato"), - (0.05, "common.items.food.apple_mushroom_curry"), - (0.10, "common.items.food.apple_stick"), - (0.10, "common.items.food.mushroom_stick"), - // Weapons - (0.15, "common.items.weapons.sword.wood-0"), - (0.15, "common.items.weapons.sword.wood-1"), - (0.15, "common.items.weapons.sword.wood-2"), - (0.10, "common.items.weapons.axe.worn_iron_axe-0"), - (0.10, "common.items.weapons.axe.worn_iron_axe-1"), - (0.10, "common.items.weapons.axe.worn_iron_axe-2"), - (0.10, "common.items.weapons.axe.worn_iron_axe-3"), - (0.10, "common.items.weapons.axe.worn_iron_axe-4"), - (0.25, "common.items.weapons.sceptre.staff_nature"), - (0.15, "common.items.weapons.hammer.flimsy_hammer"), - (0.10, "common.items.weapons.hammer.wood_hammer-0"), - (0.15, "common.items.weapons.bow.rawwood-0"), - (0.15, "common.items.weapons.bow.rawwood-1"), -] diff --git a/assets/common/loot_tables/loot_table_weapon_common.ron b/assets/common/loot_tables/loot_table_weapon_common.ron deleted file mode 100644 index afa2715550..0000000000 --- a/assets/common/loot_tables/loot_table_weapon_common.ron +++ /dev/null @@ -1,45 +0,0 @@ -[ - // swords - (0.15, "common.items.weapons.sword.starter"), - (0.10, "common.items.weapons.sword.wood-0"), - (0.10, "common.items.weapons.sword.wood-1"), - (0.10, "common.items.weapons.sword.wood-2"), - (0.05, "common.items.weapons.sword.stone-0"), - (0.05, "common.items.weapons.sword.stone-1"), - (0.05, "common.items.weapons.sword.stone-2"), - // axes - (0.30, "common.items.weapons.axe.starter_axe"), - (0.20, "common.items.weapons.axe.orc_axe-0"), - (0.10, "common.items.weapons.axe.worn_iron_axe-0"), - (0.10, "common.items.weapons.axe.worn_iron_axe-1"), - (0.10, "common.items.weapons.axe.worn_iron_axe-2"), - (0.10, "common.items.weapons.axe.worn_iron_axe-3"), - (0.10, "common.items.weapons.axe.worn_iron_axe-4"), - // healing staff - (0.30, "common.items.weapons.sceptre.starter_sceptre"), - (0.10, "common.items.weapons.sceptre.moon0"), - (0.10, "common.items.weapons.sceptre.druids_arbor"), - // staves - (1.00, "common.items.weapons.staff.starter_staff"), - // hammers - (0.15, "common.items.weapons.hammer.starter_hammer"), - (0.15, "common.items.weapons.hammer.flimsy_hammer"), - (0.10, "common.items.weapons.hammer.wood_hammer-0"), - (0.10, "common.items.weapons.hammer.stone_hammer-0"), - (0.10, "common.items.weapons.hammer.stone_hammer-1"), - (0.10, "common.items.weapons.hammer.stone_hammer-2"), - (0.10, "common.items.weapons.hammer.stone_hammer-3"), - (0.05, "common.items.weapons.hammer.worn_iron_hammer-0"), - (0.05, "common.items.weapons.hammer.worn_iron_hammer-1"), - (0.05, "common.items.weapons.hammer.worn_iron_hammer-2"), - (0.05, "common.items.weapons.hammer.worn_iron_hammer-3"), - // bows - (0.15, "common.items.weapons.bow.starter"), - (0.10, "common.items.weapons.bow.rawwood-0"), - (0.10, "common.items.weapons.bow.rawwood-1"), - (0.05, "common.items.weapons.bow.wood-0"), - (0.05, "common.items.weapons.bow.wood-1"), - (0.05, "common.items.weapons.bow.wood-2"), - (0.05, "common.items.weapons.bow.wood-3"), - (0.05, "common.items.weapons.bow.wood-4"), -] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_weapon_rare.ron b/assets/common/loot_tables/loot_table_weapon_rare.ron deleted file mode 100644 index 28484be0bc..0000000000 --- a/assets/common/loot_tables/loot_table_weapon_rare.ron +++ /dev/null @@ -1,42 +0,0 @@ -[ - // swords - (0.20, "common.items.weapons.sword.cobalt-0"), - (0.20, "common.items.weapons.sword.cobalt-1"), - (0.20, "common.items.weapons.sword.cobalt-2"), - (0.20, "common.items.weapons.sword.cobalt-3"), - (0.10, "common.items.weapons.sword.bloodsteel-0"), - (0.10, "common.items.weapons.sword.bloodsteel-1"), - (0.10, "common.items.weapons.sword.bloodsteel-2"), - // axes - (0.20, "common.items.weapons.axe.bloodsteel_axe-0"), - (0.20, "common.items.weapons.axe.bloodsteel_axe-1"), - (0.20, "common.items.weapons.axe.bloodsteel_axe-2"), - (0.30, "common.items.weapons.axe.cobalt_axe-0"), - (0.30, "common.items.weapons.axe.cobalt_axe-1"), - (0.10, "common.items.weapons.axe.malachite_axe-0"), - // healing staff - (0.15, "common.items.weapons.sceptre.loops0"), - (0.10, "common.items.weapons.sceptre.fork0"), - (0.10, "common.items.weapons.sceptre.emerald"), - (0.10, "common.items.weapons.sceptre.coralline_cane"), - // staves - (1.00, "common.items.weapons.staff.crimson_eye"), - (0.7, "common.items.weapons.staff.aurora"), - (0.7, "common.items.weapons.staff.frostwood_torch"), - (0.5, "common.items.weapons.staff.lava_rod"), - (0.5, "common.items.weapons.staff.dragon_tongue"), - (0.75, "common.items.weapons.staff.infused_tower"), - (0.5, "common.items.weapons.staff.flamethrower_0"), - // hammers - (0.30, "common.items.weapons.hammer.cobalt_hammer-0"), - (0.30, "common.items.weapons.hammer.cobalt_hammer-1"), - (0.15, "common.items.weapons.hammer.runic_hammer"), - (0.15, "common.items.weapons.hammer.ramshead_hammer"), - // bows - (0.20, "common.items.weapons.bow.frostwood-0"), - (0.20, "common.items.weapons.bow.frostwood-1"), - (0.20, "common.items.weapons.bow.frostwood-2"), - (0.10, "common.items.weapons.bow.eldwood-0"), - (0.10, "common.items.weapons.bow.eldwood-1"), - (0.10, "common.items.weapons.bow.eldwood-2"), -] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_weapon_uncommon.ron b/assets/common/loot_tables/loot_table_weapon_uncommon.ron deleted file mode 100644 index ec870786e0..0000000000 --- a/assets/common/loot_tables/loot_table_weapon_uncommon.ron +++ /dev/null @@ -1,91 +0,0 @@ -[ - // swords - (0.15, "common.items.weapons.sword.bronze-0"), - (0.15, "common.items.weapons.sword.bronze-1"), - (0.15, "common.items.weapons.sword.bronze-2"), - (0.04, "common.items.weapons.sword.iron-0"), - (0.04, "common.items.weapons.sword.iron-1"), - (0.04, "common.items.weapons.sword.iron-2"), - (0.04, "common.items.weapons.sword.iron-3"), - (0.04, "common.items.weapons.sword.iron-4"), - (0.04, "common.items.weapons.sword.iron-5"), - (0.04, "common.items.weapons.sword.iron-6"), - (0.04, "common.items.weapons.sword.iron-7"), - (0.04, "common.items.weapons.sword.iron-8"), - (0.04, "common.items.weapons.sword.iron-9"), - (0.04, "common.items.weapons.sword.iron-10"), - (0.03, "common.items.weapons.sword.steel-0"), - (0.03, "common.items.weapons.sword.steel-1"), - (0.03, "common.items.weapons.sword.steel-2"), - (0.03, "common.items.weapons.sword.steel-3"), - (0.03, "common.items.weapons.sword.steel-4"), - (0.03, "common.items.weapons.sword.steel-5"), - (0.03, "common.items.weapons.sword.steel-6"), - (0.03, "common.items.weapons.sword.steel-7"), - (0.03, "common.items.weapons.sword.steel-8"), - // axes - (0.15, "common.items.weapons.axe.bronze_axe-0"), - (0.15, "common.items.weapons.axe.bronze_axe-1"), - (0.15, "common.items.weapons.axe.bronze_axe-2"), - (0.04, "common.items.weapons.axe.iron_axe-0"), - (0.04, "common.items.weapons.axe.iron_axe-1"), - (0.04, "common.items.weapons.axe.iron_axe-2"), - (0.04, "common.items.weapons.axe.iron_axe-3"), - (0.04, "common.items.weapons.axe.iron_axe-4"), - (0.04, "common.items.weapons.axe.iron_axe-5"), - (0.04, "common.items.weapons.axe.iron_axe-6"), - (0.04, "common.items.weapons.axe.iron_axe-7"), - (0.04, "common.items.weapons.axe.iron_axe-8"), - (0.04, "common.items.weapons.axe.iron_axe-9"), - (0.04, "common.items.weapons.axe.steel_axe-0"), - (0.04, "common.items.weapons.axe.steel_axe-1"), - (0.04, "common.items.weapons.axe.steel_axe-2"), - (0.04, "common.items.weapons.axe.steel_axe-3"), - (0.04, "common.items.weapons.axe.steel_axe-4"), - (0.04, "common.items.weapons.axe.steel_axe-5"), - (0.04, "common.items.weapons.axe.steel_axe-6"), - // healing staff - (0.5, "common.items.weapons.sceptre.staff_nature"), - (0.15, "common.items.weapons.sceptre.root_green0"), - (0.25, "common.items.weapons.sceptre.totem_green"), - // staves - (1.00, "common.items.weapons.staff.bone_staff"), - (0.7, "common.items.weapons.staff.heated_arm"), - (0.7, "common.items.weapons.staff.golden_khakkara"), - (0.7, "common.items.weapons.staff.fiery_wishing_rod"), - (0.7, "common.items.weapons.staff.solar"), - // hammers - (0.15, "common.items.weapons.hammer.bronze_hammer-0"), - (0.15, "common.items.weapons.hammer.bronze_hammer-1"), - (0.04, "common.items.weapons.hammer.iron_hammer-0"), - (0.04, "common.items.weapons.hammer.iron_hammer-1"), - (0.04, "common.items.weapons.hammer.iron_hammer-2"), - (0.04, "common.items.weapons.hammer.iron_hammer-3"), - (0.04, "common.items.weapons.hammer.iron_hammer-4"), - (0.04, "common.items.weapons.hammer.iron_hammer-5"), - (0.04, "common.items.weapons.hammer.iron_hammer-6"), - (0.04, "common.items.weapons.hammer.iron_hammer-7"), - (0.04, "common.items.weapons.hammer.iron_hammer-8"), - (0.05, "common.items.weapons.hammer.steel_hammer-0"), - (0.05, "common.items.weapons.hammer.steel_hammer-1"), - (0.05, "common.items.weapons.hammer.steel_hammer-2"), - (0.05, "common.items.weapons.hammer.steel_hammer-3"), - (0.05, "common.items.weapons.hammer.steel_hammer-4"), - (0.05, "common.items.weapons.hammer.steel_hammer-5"), - // bows - (0.15, "common.items.weapons.bow.bone-0"), - (0.15, "common.items.weapons.bow.bone-1"), - (0.15, "common.items.weapons.bow.bone-2"), - (0.15, "common.items.weapons.bow.bone-3"), - (0.04, "common.items.weapons.bow.hardwood-0"), - (0.04, "common.items.weapons.bow.hardwood-1"), - (0.04, "common.items.weapons.bow.hardwood-2"), - (0.04, "common.items.weapons.bow.hardwood-3"), - (0.04, "common.items.weapons.bow.hardwood-4"), - (0.04, "common.items.weapons.bow.hardwood-5"), - (0.03, "common.items.weapons.bow.metal-0"), - (0.03, "common.items.weapons.bow.metal-1"), - (0.03, "common.items.weapons.bow.metal-2"), - (0.03, "common.items.weapons.bow.metal-3"), - (0.03, "common.items.weapons.bow.metal-4"), -] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_wendigo.ron b/assets/common/loot_tables/loot_table_wendigo.ron deleted file mode 100644 index cb0ef91842..0000000000 --- a/assets/common/loot_tables/loot_table_wendigo.ron +++ /dev/null @@ -1,3 +0,0 @@ -[ - (1, "common.items.crafting_ing.icy_fang"), -] \ No newline at end of file diff --git a/assets/common/loot_tables/materials/common.ron b/assets/common/loot_tables/materials/common.ron new file mode 100644 index 0000000000..ec557fe1b9 --- /dev/null +++ b/assets/common/loot_tables/materials/common.ron @@ -0,0 +1,6 @@ +[ + (1.0, Item("common.items.crafting_ing.bowl")), + (1.0, Item("common.items.crafting_ing.empty_vial")), + (2.0, Item("common.items.crafting_ing.cloth_scraps")), + (1.0, Item("common.items.crafting_ing.leather_scraps")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/materials/gems.ron b/assets/common/loot_tables/materials/gems.ron new file mode 100644 index 0000000000..ed6df318db --- /dev/null +++ b/assets/common/loot_tables/materials/gems.ron @@ -0,0 +1,8 @@ +[ + (3.0, Item("common.items.crafting_ing.topaz")), + (3.0, Item("common.items.crafting_ing.amethyst")), + (1.6, Item("common.items.crafting_ing.sapphire")), + (1.2, Item("common.items.crafting_ing.emerald")), + (0.8, Item("common.items.crafting_ing.ruby")), + (0.4, Item("common.items.crafting_ing.diamond")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/materials/underground.ron b/assets/common/loot_tables/materials/underground.ron new file mode 100644 index 0000000000..2ff78e7df9 --- /dev/null +++ b/assets/common/loot_tables/materials/underground.ron @@ -0,0 +1,6 @@ +[ + (2.0, Item("common.items.crafting_ing.stones")), + (0.5, Item("common.items.ore.veloritefrag")), + (0.25, Item("common.items.ore.velorite")), + (0.25, LootTable("common.loot_tables.materials.gems")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/mindflayer.ron b/assets/common/loot_tables/mindflayer.ron deleted file mode 100644 index d5fb91477d..0000000000 --- a/assets/common/loot_tables/mindflayer.ron +++ /dev/null @@ -1,17 +0,0 @@ -[ - // Crafting material - (2.0, "common.items.crafting_ing.mindflayer_bag_damaged"), - // Legendary weapons - (1.0, "common.items.weapons.sword.caladbolg"), - (1.0, "common.items.weapons.axe.parashu"), - (1.0, "common.items.weapons.hammer.mjolnir"), - (1.0, "common.items.weapons.bow.sagitta"), - (0.5, "common.items.weapons.staff.phoenix"), - (0.5, "common.items.weapons.staff.laevateinn"), - (0.5, "common.items.weapons.sceptre.root_evil"), - (0.5, "common.items.weapons.sceptre.caduceus"), - - // Rare misc items - (0.5, "common.items.boss_drops.lantern"), - (0.5, "common.items.glider.glider_purp"), -] \ No newline at end of file diff --git a/assets/common/loot_tables/miniboss.ron b/assets/common/loot_tables/miniboss.ron new file mode 100644 index 0000000000..6a272f201d --- /dev/null +++ b/assets/common/loot_tables/miniboss.ron @@ -0,0 +1,8 @@ +[ + // armor + (6.0, LootTable("common.loot_tables.armor.cultist")), + (1.0, Item("common.items.armor.misc.back.dungeon_purple")), + (1.0, Item("common.items.armor.misc.ring.skull")), + // weapons + (3.0, LootTable("common.loot_tables.weapons.cultist")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/sprite/chest-buried.ron b/assets/common/loot_tables/sprite/chest-buried.ron new file mode 100644 index 0000000000..1d6ae13b6f --- /dev/null +++ b/assets/common/loot_tables/sprite/chest-buried.ron @@ -0,0 +1,6 @@ +[ + (1.0, LootTable("common.loot_tables.weapons.tier-1")), + (1.0, LootTable("common.loot_tables.armor.cloth")), + (1.0, LootTable("common.loot_tables.armor.swift")), + (1.0, LootTable("common.loot_tables.fallback")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/sprite/chest.ron b/assets/common/loot_tables/sprite/chest.ron new file mode 100644 index 0000000000..98f99d2ec4 --- /dev/null +++ b/assets/common/loot_tables/sprite/chest.ron @@ -0,0 +1,8 @@ +[ + (1.0, LootTable("common.loot_tables.weapons.tier-0")), + (1.0, LootTable("common.loot_tables.weapons.tier-1")), + (1.0, LootTable("common.loot_tables.armor.cloth")), + (1.0, LootTable("common.loot_tables.armor.swift")), + (0.1, LootTable("common.loot_tables.armor.plate")), + (1.0, LootTable("common.loot_tables.fallback")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/sprite/crate.ron b/assets/common/loot_tables/sprite/crate.ron new file mode 100644 index 0000000000..a2b2cc9f74 --- /dev/null +++ b/assets/common/loot_tables/sprite/crate.ron @@ -0,0 +1,4 @@ +[ + (1.0, LootTable("common.loot_tables.materials.common")), + (2.0, LootTable("common.loot_tables.food.prepared")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/sprite/mud.ron b/assets/common/loot_tables/sprite/mud.ron new file mode 100644 index 0000000000..74779a5e51 --- /dev/null +++ b/assets/common/loot_tables/sprite/mud.ron @@ -0,0 +1,6 @@ +[ + (1.0, LootTable("common.loot_tables.materials.common")), + (1.0, LootTable("common.loot_tables.weapons.tier-0")), + (1.0, LootTable("common.loot_tables.materials.underground")), + (1.0, LootTable("common.loot_tables.fallback")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/villager.ron b/assets/common/loot_tables/villager.ron new file mode 100644 index 0000000000..844c780773 --- /dev/null +++ b/assets/common/loot_tables/villager.ron @@ -0,0 +1,18 @@ +[ + // Crafting Ingredients + (4.0, LootTable("common.loot_tables.materials.common")), + // Consumables + (0.2, Item("common.items.consumable.potion_minor")), + // Armour + (10.0, LootTable("common.loot_tables.armor.cloth")), + // Utility + (0.05, Item("common.items.utility.collar")), + // Food + (2.0, LootTable("common.loot_tables.food.farm_ingredients")), + (0.25, LootTable("common.loot_tables.food.prepared")), + // Weapons + (0.5, LootTable("common.loot_tables.weapons.sword.wood")), + (0.5, LootTable("common.loot_tables.weapons.hammer.stone")), + (0.5, LootTable("common.loot_tables.weapons.bow.rawwood")), + (0.5, LootTable("common.loot_tables.weapons.starter")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/axe/bloodsteel.ron b/assets/common/loot_tables/weapons/axe/bloodsteel.ron new file mode 100644 index 0000000000..6bea84d63c --- /dev/null +++ b/assets/common/loot_tables/weapons/axe/bloodsteel.ron @@ -0,0 +1,5 @@ +[ + (1.0, Item("common.items.weapons.axe.bloodsteel_axe-0")), + (1.0, Item("common.items.weapons.axe.bloodsteel_axe-1")), + (1.0, Item("common.items.weapons.axe.bloodsteel_axe-2")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/axe/bronze.ron b/assets/common/loot_tables/weapons/axe/bronze.ron new file mode 100644 index 0000000000..9cfe1fd020 --- /dev/null +++ b/assets/common/loot_tables/weapons/axe/bronze.ron @@ -0,0 +1,5 @@ +[ + (1.0, Item("common.items.weapons.axe.bronze_axe-0")), + (1.0, Item("common.items.weapons.axe.bronze_axe-1")), + (1.0, Item("common.items.weapons.axe.bronze_axe-2")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/axe/cobalt.ron b/assets/common/loot_tables/weapons/axe/cobalt.ron new file mode 100644 index 0000000000..706962b998 --- /dev/null +++ b/assets/common/loot_tables/weapons/axe/cobalt.ron @@ -0,0 +1,4 @@ +[ + (1.0, Item("common.items.weapons.axe.cobalt_axe-0")), + (1.0, Item("common.items.weapons.axe.cobalt_axe-1")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/axe/iron.ron b/assets/common/loot_tables/weapons/axe/iron.ron new file mode 100644 index 0000000000..1acdbf400f --- /dev/null +++ b/assets/common/loot_tables/weapons/axe/iron.ron @@ -0,0 +1,12 @@ +[ + (1.0, Item("common.items.weapons.axe.iron_axe-0")), + (1.0, Item("common.items.weapons.axe.iron_axe-1")), + (1.0, Item("common.items.weapons.axe.iron_axe-2")), + (1.0, Item("common.items.weapons.axe.iron_axe-3")), + (1.0, Item("common.items.weapons.axe.iron_axe-4")), + (1.0, Item("common.items.weapons.axe.iron_axe-5")), + (1.0, Item("common.items.weapons.axe.iron_axe-6")), + (1.0, Item("common.items.weapons.axe.iron_axe-7")), + (1.0, Item("common.items.weapons.axe.iron_axe-8")), + (1.0, Item("common.items.weapons.axe.iron_axe-9")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/axe/steel.ron b/assets/common/loot_tables/weapons/axe/steel.ron new file mode 100644 index 0000000000..5288490d5a --- /dev/null +++ b/assets/common/loot_tables/weapons/axe/steel.ron @@ -0,0 +1,9 @@ +[ + (1.0, Item("common.items.weapons.axe.steel_axe-0")), + (1.0, Item("common.items.weapons.axe.steel_axe-1")), + (1.0, Item("common.items.weapons.axe.steel_axe-2")), + (1.0, Item("common.items.weapons.axe.steel_axe-3")), + (1.0, Item("common.items.weapons.axe.steel_axe-4")), + (1.0, Item("common.items.weapons.axe.steel_axe-5")), + (1.0, Item("common.items.weapons.axe.steel_axe-6")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/axe/worn-iron.ron b/assets/common/loot_tables/weapons/axe/worn-iron.ron new file mode 100644 index 0000000000..ca15454aac --- /dev/null +++ b/assets/common/loot_tables/weapons/axe/worn-iron.ron @@ -0,0 +1,7 @@ +[ + (1.0, Item("common.items.weapons.axe.worn_iron_axe-0")), + (1.0, Item("common.items.weapons.axe.worn_iron_axe-1")), + (1.0, Item("common.items.weapons.axe.worn_iron_axe-2")), + (1.0, Item("common.items.weapons.axe.worn_iron_axe-3")), + (1.0, Item("common.items.weapons.axe.worn_iron_axe-4")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/bow/bone.ron b/assets/common/loot_tables/weapons/bow/bone.ron new file mode 100644 index 0000000000..e12d53e09d --- /dev/null +++ b/assets/common/loot_tables/weapons/bow/bone.ron @@ -0,0 +1,6 @@ +[ + (1.0, Item("common.items.weapons.bow.bone-0")), + (1.0, Item("common.items.weapons.bow.bone-1")), + (1.0, Item("common.items.weapons.bow.bone-2")), + (1.0, Item("common.items.weapons.bow.bone-3")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/bow/eldwood.ron b/assets/common/loot_tables/weapons/bow/eldwood.ron new file mode 100644 index 0000000000..59e51a4f8c --- /dev/null +++ b/assets/common/loot_tables/weapons/bow/eldwood.ron @@ -0,0 +1,5 @@ +[ + (1.0, Item("common.items.weapons.bow.eldwood-0")), + (1.0, Item("common.items.weapons.bow.eldwood-1")), + (1.0, Item("common.items.weapons.bow.eldwood-2")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/bow/frostwood.ron b/assets/common/loot_tables/weapons/bow/frostwood.ron new file mode 100644 index 0000000000..a07c74d1d7 --- /dev/null +++ b/assets/common/loot_tables/weapons/bow/frostwood.ron @@ -0,0 +1,5 @@ +[ + (1.0, Item("common.items.weapons.bow.frostwood-0")), + (1.0, Item("common.items.weapons.bow.frostwood-1")), + (1.0, Item("common.items.weapons.bow.frostwood-2")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/bow/hardwood.ron b/assets/common/loot_tables/weapons/bow/hardwood.ron new file mode 100644 index 0000000000..803ddf75d5 --- /dev/null +++ b/assets/common/loot_tables/weapons/bow/hardwood.ron @@ -0,0 +1,8 @@ +[ + (1.0, Item("common.items.weapons.bow.hardwood-0")), + (1.0, Item("common.items.weapons.bow.hardwood-1")), + (1.0, Item("common.items.weapons.bow.hardwood-2")), + (1.0, Item("common.items.weapons.bow.hardwood-3")), + (1.0, Item("common.items.weapons.bow.hardwood-4")), + (1.0, Item("common.items.weapons.bow.hardwood-5")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/bow/metal.ron b/assets/common/loot_tables/weapons/bow/metal.ron new file mode 100644 index 0000000000..edfd8fc956 --- /dev/null +++ b/assets/common/loot_tables/weapons/bow/metal.ron @@ -0,0 +1,7 @@ +[ + (1.0, Item("common.items.weapons.bow.metal-0")), + (1.0, Item("common.items.weapons.bow.metal-1")), + (1.0, Item("common.items.weapons.bow.metal-2")), + (1.0, Item("common.items.weapons.bow.metal-3")), + (1.0, Item("common.items.weapons.bow.metal-4")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/bow/rawwood.ron b/assets/common/loot_tables/weapons/bow/rawwood.ron new file mode 100644 index 0000000000..cd03cc78e1 --- /dev/null +++ b/assets/common/loot_tables/weapons/bow/rawwood.ron @@ -0,0 +1,4 @@ +[ + (1.0, Item("common.items.weapons.bow.rawwood-0")), + (1.0, Item("common.items.weapons.bow.rawwood-1")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/bow/wood.ron b/assets/common/loot_tables/weapons/bow/wood.ron new file mode 100644 index 0000000000..e2629960ae --- /dev/null +++ b/assets/common/loot_tables/weapons/bow/wood.ron @@ -0,0 +1,7 @@ +[ + (1.0, Item("common.items.weapons.bow.wood-0")), + (1.0, Item("common.items.weapons.bow.wood-1")), + (1.0, Item("common.items.weapons.bow.wood-2")), + (1.0, Item("common.items.weapons.bow.wood-3")), + (1.0, Item("common.items.weapons.bow.wood-4")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/cave.ron b/assets/common/loot_tables/weapons/cave.ron new file mode 100644 index 0000000000..6270e72836 --- /dev/null +++ b/assets/common/loot_tables/weapons/cave.ron @@ -0,0 +1,5 @@ +[ + (1.0, Item("common.items.weapons.sceptre.sceptre_velorite_0")), + (1.0, Item("common.items.weapons.bow.velorite")), + (1.0, Item("common.items.weapons.axe.malachite_axe-0")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/cultist.ron b/assets/common/loot_tables/weapons/cultist.ron new file mode 100644 index 0000000000..dbb9d9b2bd --- /dev/null +++ b/assets/common/loot_tables/weapons/cultist.ron @@ -0,0 +1,5 @@ +[ + (1.0, Item("common.items.weapons.sword.cultist")), + (1.0, Item("common.items.weapons.hammer.cultist_purp_2h-0")), + (1.0, Item("common.items.weapons.staff.cultist_staff")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/hammer/bloodsteel.ron b/assets/common/loot_tables/weapons/hammer/bloodsteel.ron new file mode 100644 index 0000000000..72d10c43b0 --- /dev/null +++ b/assets/common/loot_tables/weapons/hammer/bloodsteel.ron @@ -0,0 +1,4 @@ +[ + (1.0, Item("common.items.weapons.hammer.runic_hammer")), + (1.0, Item("common.items.weapons.hammer.ramshead_hammer")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/hammer/bronze.ron b/assets/common/loot_tables/weapons/hammer/bronze.ron new file mode 100644 index 0000000000..f5bd4c550e --- /dev/null +++ b/assets/common/loot_tables/weapons/hammer/bronze.ron @@ -0,0 +1,4 @@ +[ + (1.0, Item("common.items.weapons.hammer.bronze_hammer-0")), + (1.0, Item("common.items.weapons.hammer.bronze_hammer-1")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/hammer/cobalt.ron b/assets/common/loot_tables/weapons/hammer/cobalt.ron new file mode 100644 index 0000000000..bdd436bf89 --- /dev/null +++ b/assets/common/loot_tables/weapons/hammer/cobalt.ron @@ -0,0 +1,4 @@ +[ + (1.0, Item("common.items.weapons.hammer.cobalt_hammer-0")), + (1.0, Item("common.items.weapons.hammer.cobalt_hammer-1")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/hammer/iron.ron b/assets/common/loot_tables/weapons/hammer/iron.ron new file mode 100644 index 0000000000..e2aba04a42 --- /dev/null +++ b/assets/common/loot_tables/weapons/hammer/iron.ron @@ -0,0 +1,11 @@ +[ + (1.0, Item("common.items.weapons.hammer.iron_hammer-0")), + (1.0, Item("common.items.weapons.hammer.iron_hammer-1")), + (1.0, Item("common.items.weapons.hammer.iron_hammer-2")), + (1.0, Item("common.items.weapons.hammer.iron_hammer-3")), + (1.0, Item("common.items.weapons.hammer.iron_hammer-4")), + (1.0, Item("common.items.weapons.hammer.iron_hammer-5")), + (1.0, Item("common.items.weapons.hammer.iron_hammer-6")), + (1.0, Item("common.items.weapons.hammer.iron_hammer-7")), + (1.0, Item("common.items.weapons.hammer.iron_hammer-8")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/hammer/steel.ron b/assets/common/loot_tables/weapons/hammer/steel.ron new file mode 100644 index 0000000000..c607bf58f5 --- /dev/null +++ b/assets/common/loot_tables/weapons/hammer/steel.ron @@ -0,0 +1,8 @@ +[ + (1.0, Item("common.items.weapons.hammer.steel_hammer-0")), + (1.0, Item("common.items.weapons.hammer.steel_hammer-1")), + (1.0, Item("common.items.weapons.hammer.steel_hammer-2")), + (1.0, Item("common.items.weapons.hammer.steel_hammer-3")), + (1.0, Item("common.items.weapons.hammer.steel_hammer-4")), + (1.0, Item("common.items.weapons.hammer.steel_hammer-5")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/hammer/stone.ron b/assets/common/loot_tables/weapons/hammer/stone.ron new file mode 100644 index 0000000000..f1f5d6df25 --- /dev/null +++ b/assets/common/loot_tables/weapons/hammer/stone.ron @@ -0,0 +1,6 @@ +[ + (1.0, Item("common.items.weapons.hammer.stone_hammer-0")), + (1.0, Item("common.items.weapons.hammer.stone_hammer-1")), + (1.0, Item("common.items.weapons.hammer.stone_hammer-2")), + (1.0, Item("common.items.weapons.hammer.stone_hammer-3")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/hammer/worn-iron.ron b/assets/common/loot_tables/weapons/hammer/worn-iron.ron new file mode 100644 index 0000000000..66e28f07ab --- /dev/null +++ b/assets/common/loot_tables/weapons/hammer/worn-iron.ron @@ -0,0 +1,6 @@ +[ + (1.0, Item("common.items.weapons.hammer.worn_iron_hammer-0")), + (1.0, Item("common.items.weapons.hammer.worn_iron_hammer-1")), + (1.0, Item("common.items.weapons.hammer.worn_iron_hammer-2")), + (1.0, Item("common.items.weapons.hammer.worn_iron_hammer-3")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/legendary.ron b/assets/common/loot_tables/weapons/legendary.ron new file mode 100644 index 0000000000..349bccf5c7 --- /dev/null +++ b/assets/common/loot_tables/weapons/legendary.ron @@ -0,0 +1,10 @@ +[ + (1.0, Item("common.items.weapons.sword.caladbolg")), + (1.0, Item("common.items.weapons.hammer.mjolnir")), + (1.0, Item("common.items.weapons.axe.parashu")), + (1.0, Item("common.items.weapons.bow.sagitta")), + (0.5, Item("common.items.weapons.staff.phoenix")), + (0.5, Item("common.items.weapons.staff.laevateinn")), + (0.5, Item("common.items.weapons.sceptre.root_evil")), + (0.5, Item("common.items.weapons.sceptre.caduceus")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/sceptre/bamboo.ron b/assets/common/loot_tables/weapons/sceptre/bamboo.ron new file mode 100644 index 0000000000..73c42b180b --- /dev/null +++ b/assets/common/loot_tables/weapons/sceptre/bamboo.ron @@ -0,0 +1,4 @@ +[ + (1.0, Item("common.items.weapons.sceptre.divine_gohei")), + (1.0, Item("common.items.weapons.sceptre.root_green0")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/sceptre/eldwood.ron b/assets/common/loot_tables/weapons/sceptre/eldwood.ron new file mode 100644 index 0000000000..0166b47695 --- /dev/null +++ b/assets/common/loot_tables/weapons/sceptre/eldwood.ron @@ -0,0 +1,3 @@ +[ + (1.0, Item("common.items.weapons.sceptre.emerald")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/sceptre/frostwood.ron b/assets/common/loot_tables/weapons/sceptre/frostwood.ron new file mode 100644 index 0000000000..60faff5c1d --- /dev/null +++ b/assets/common/loot_tables/weapons/sceptre/frostwood.ron @@ -0,0 +1,4 @@ +[ + (1.0, Item("common.items.weapons.sceptre.fork0")), + (1.0, Item("common.items.weapons.sceptre.loops0")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/sceptre/hardwood.ron b/assets/common/loot_tables/weapons/sceptre/hardwood.ron new file mode 100644 index 0000000000..bc31a7cb01 --- /dev/null +++ b/assets/common/loot_tables/weapons/sceptre/hardwood.ron @@ -0,0 +1,4 @@ +[ + (1.0, Item("common.items.weapons.sceptre.druids_arbor")), + (1.0, Item("common.items.weapons.sceptre.staff_nature")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/sceptre/ironwood.ron b/assets/common/loot_tables/weapons/sceptre/ironwood.ron new file mode 100644 index 0000000000..d8f78f38be --- /dev/null +++ b/assets/common/loot_tables/weapons/sceptre/ironwood.ron @@ -0,0 +1,5 @@ +[ + (1.0, Item("common.items.weapons.sceptre.coralline_cane")), + (1.0, Item("common.items.weapons.sceptre.moon0")), + (1.0, Item("common.items.weapons.sceptre.totem_green")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/staff/bamboo.ron b/assets/common/loot_tables/weapons/staff/bamboo.ron new file mode 100644 index 0000000000..f3f72e222c --- /dev/null +++ b/assets/common/loot_tables/weapons/staff/bamboo.ron @@ -0,0 +1,5 @@ +[ + (1.0, Item("common.items.weapons.staff.bone_staff")), + (1.0, Item("common.items.weapons.staff.fiery_wishing_rod")), + (1.0, Item("common.items.weapons.staff.ley_seeker")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/staff/eldwood.ron b/assets/common/loot_tables/weapons/staff/eldwood.ron new file mode 100644 index 0000000000..3160289679 --- /dev/null +++ b/assets/common/loot_tables/weapons/staff/eldwood.ron @@ -0,0 +1,4 @@ +[ + (1.0, Item("common.items.weapons.staff.dragon_tongue")), + (1.0, Item("common.items.weapons.staff.ruby_rod")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/staff/frostwood.ron b/assets/common/loot_tables/weapons/staff/frostwood.ron new file mode 100644 index 0000000000..cd3b274b30 --- /dev/null +++ b/assets/common/loot_tables/weapons/staff/frostwood.ron @@ -0,0 +1,4 @@ +[ + (1.0, Item("common.items.weapons.staff.frostwood_torch")), + (1.0, Item("common.items.weapons.staff.aurora")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/staff/hardwood.ron b/assets/common/loot_tables/weapons/staff/hardwood.ron new file mode 100644 index 0000000000..a5619070ab --- /dev/null +++ b/assets/common/loot_tables/weapons/staff/hardwood.ron @@ -0,0 +1,6 @@ +[ + (1.0, Item("common.items.weapons.staff.heated_arm")), + (1.0, Item("common.items.weapons.staff.infused_tower")), + (1.0, Item("common.items.weapons.staff.solar")), + (1.0, Item("common.items.weapons.staff.lava_rod")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/staff/ironwood.ron b/assets/common/loot_tables/weapons/staff/ironwood.ron new file mode 100644 index 0000000000..5d031c451c --- /dev/null +++ b/assets/common/loot_tables/weapons/staff/ironwood.ron @@ -0,0 +1,5 @@ +[ + (1.0, Item("common.items.weapons.staff.flamethrower_0")), + (1.0, Item("common.items.weapons.staff.golden_khakkara")), + (1.0, Item("common.items.weapons.staff.orc_iron")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/staff/wood.ron b/assets/common/loot_tables/weapons/staff/wood.ron new file mode 100644 index 0000000000..e85342e7e6 --- /dev/null +++ b/assets/common/loot_tables/weapons/staff/wood.ron @@ -0,0 +1,4 @@ +[ + (1.0, Item("common.items.weapons.staff.crimson_eye")), + (1.0, Item("common.items.weapons.staff.bent_fuse")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/starter.ron b/assets/common/loot_tables/weapons/starter.ron new file mode 100644 index 0000000000..6cd133e0aa --- /dev/null +++ b/assets/common/loot_tables/weapons/starter.ron @@ -0,0 +1,8 @@ +[ + (1.0, Item("common.items.weapons.sword.starter")), + (1.0, Item("common.items.weapons.hammer.starter_hammer")), + (1.0, Item("common.items.weapons.bow.starter")), + (1.0, Item("common.items.weapons.axe.starter_axe")), + (1.0, Item("common.items.weapons.staff.starter_staff")), + (1.0, Item("common.items.weapons.sceptre.starter_sceptre")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/sword/bloodsteel.ron b/assets/common/loot_tables/weapons/sword/bloodsteel.ron new file mode 100644 index 0000000000..da08d3a973 --- /dev/null +++ b/assets/common/loot_tables/weapons/sword/bloodsteel.ron @@ -0,0 +1,5 @@ +[ + (1.0, Item("common.items.weapons.sword.bloodsteel-0")), + (1.0, Item("common.items.weapons.sword.bloodsteel-1")), + (1.0, Item("common.items.weapons.sword.bloodsteel-2")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/sword/bronze.ron b/assets/common/loot_tables/weapons/sword/bronze.ron new file mode 100644 index 0000000000..5ab30d738f --- /dev/null +++ b/assets/common/loot_tables/weapons/sword/bronze.ron @@ -0,0 +1,5 @@ +[ + (1.0, Item("common.items.weapons.sword.bronze-0")), + (1.0, Item("common.items.weapons.sword.bronze-1")), + (1.0, Item("common.items.weapons.sword.bronze-2")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/sword/cobalt.ron b/assets/common/loot_tables/weapons/sword/cobalt.ron new file mode 100644 index 0000000000..fe77f59554 --- /dev/null +++ b/assets/common/loot_tables/weapons/sword/cobalt.ron @@ -0,0 +1,6 @@ +[ + (1.0, Item("common.items.weapons.sword.cobalt-0")), + (1.0, Item("common.items.weapons.sword.cobalt-1")), + (1.0, Item("common.items.weapons.sword.cobalt-2")), + (1.0, Item("common.items.weapons.sword.cobalt-3")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/sword/iron.ron b/assets/common/loot_tables/weapons/sword/iron.ron new file mode 100644 index 0000000000..ae2b6b13c8 --- /dev/null +++ b/assets/common/loot_tables/weapons/sword/iron.ron @@ -0,0 +1,13 @@ +[ + (1.0, Item("common.items.weapons.sword.iron-0")), + (1.0, Item("common.items.weapons.sword.iron-1")), + (1.0, Item("common.items.weapons.sword.iron-2")), + (1.0, Item("common.items.weapons.sword.iron-3")), + (1.0, Item("common.items.weapons.sword.iron-4")), + (1.0, Item("common.items.weapons.sword.iron-5")), + (1.0, Item("common.items.weapons.sword.iron-6")), + (1.0, Item("common.items.weapons.sword.iron-7")), + (1.0, Item("common.items.weapons.sword.iron-8")), + (1.0, Item("common.items.weapons.sword.iron-9")), + (1.0, Item("common.items.weapons.sword.iron-10")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/sword/steel.ron b/assets/common/loot_tables/weapons/sword/steel.ron new file mode 100644 index 0000000000..c672fdf04f --- /dev/null +++ b/assets/common/loot_tables/weapons/sword/steel.ron @@ -0,0 +1,11 @@ +[ + (1.0, Item("common.items.weapons.sword.steel-0")), + (1.0, Item("common.items.weapons.sword.steel-1")), + (1.0, Item("common.items.weapons.sword.steel-2")), + (1.0, Item("common.items.weapons.sword.steel-3")), + (1.0, Item("common.items.weapons.sword.steel-4")), + (1.0, Item("common.items.weapons.sword.steel-5")), + (1.0, Item("common.items.weapons.sword.steel-6")), + (1.0, Item("common.items.weapons.sword.steel-7")), + (1.0, Item("common.items.weapons.sword.steel-8")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/sword/stone.ron b/assets/common/loot_tables/weapons/sword/stone.ron new file mode 100644 index 0000000000..95fcf3ec45 --- /dev/null +++ b/assets/common/loot_tables/weapons/sword/stone.ron @@ -0,0 +1,5 @@ +[ + (1.0, Item("common.items.weapons.sword.stone-0")), + (1.0, Item("common.items.weapons.sword.stone-1")), + (1.0, Item("common.items.weapons.sword.stone-2")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/sword/wood.ron b/assets/common/loot_tables/weapons/sword/wood.ron new file mode 100644 index 0000000000..d09908a5e8 --- /dev/null +++ b/assets/common/loot_tables/weapons/sword/wood.ron @@ -0,0 +1,5 @@ +[ + (1.0, Item("common.items.weapons.sword.wood-0")), + (1.0, Item("common.items.weapons.sword.wood-1")), + (1.0, Item("common.items.weapons.sword.wood-2")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/tier-0.ron b/assets/common/loot_tables/weapons/tier-0.ron new file mode 100644 index 0000000000..8e721ef96d --- /dev/null +++ b/assets/common/loot_tables/weapons/tier-0.ron @@ -0,0 +1,7 @@ +[ + (1.0, LootTable("common.loot_tables.weapons.sword.stone")), + (1.0, LootTable("common.loot_tables.weapons.axe.worn-iron")), + (1.0, LootTable("common.loot_tables.weapons.hammer.worn-iron")), + (1.0, LootTable("common.loot_tables.weapons.bow.wood")), + (1.0, LootTable("common.loot_tables.weapons.staff.wood")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/tier-1.ron b/assets/common/loot_tables/weapons/tier-1.ron new file mode 100644 index 0000000000..802c6b6d14 --- /dev/null +++ b/assets/common/loot_tables/weapons/tier-1.ron @@ -0,0 +1,8 @@ +[ + (1.0, LootTable("common.loot_tables.weapons.sword.bronze")), + (1.0, LootTable("common.loot_tables.weapons.axe.bronze")), + (1.0, LootTable("common.loot_tables.weapons.hammer.bronze")), + (1.0, LootTable("common.loot_tables.weapons.bow.bone")), + (1.0, LootTable("common.loot_tables.weapons.staff.bamboo")), + (1.0, LootTable("common.loot_tables.weapons.sceptre.bamboo")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/tier-2.ron b/assets/common/loot_tables/weapons/tier-2.ron new file mode 100644 index 0000000000..c9e45409c9 --- /dev/null +++ b/assets/common/loot_tables/weapons/tier-2.ron @@ -0,0 +1,8 @@ +[ + (1.0, LootTable("common.loot_tables.weapons.sword.iron")), + (1.0, LootTable("common.loot_tables.weapons.axe.iron")), + (1.0, LootTable("common.loot_tables.weapons.hammer.iron")), + (1.0, LootTable("common.loot_tables.weapons.bow.hardwood")), + (1.0, LootTable("common.loot_tables.weapons.staff.hardwood")), + (1.0, LootTable("common.loot_tables.weapons.sceptre.hardwood")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/tier-3.ron b/assets/common/loot_tables/weapons/tier-3.ron new file mode 100644 index 0000000000..a709edd68c --- /dev/null +++ b/assets/common/loot_tables/weapons/tier-3.ron @@ -0,0 +1,8 @@ +[ + (1.0, LootTable("common.loot_tables.weapons.sword.steel")), + (1.0, LootTable("common.loot_tables.weapons.axe.steel")), + (1.0, LootTable("common.loot_tables.weapons.hammer.steel")), + (1.0, LootTable("common.loot_tables.weapons.bow.metal")), + (1.0, LootTable("common.loot_tables.weapons.staff.ironwood")), + (1.0, LootTable("common.loot_tables.weapons.sceptre.ironwood")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/tier-4.ron b/assets/common/loot_tables/weapons/tier-4.ron new file mode 100644 index 0000000000..d8a69c8f72 --- /dev/null +++ b/assets/common/loot_tables/weapons/tier-4.ron @@ -0,0 +1,8 @@ +[ + (1.0, LootTable("common.loot_tables.weapons.sword.cobalt")), + (1.0, LootTable("common.loot_tables.weapons.axe.cobalt")), + (1.0, LootTable("common.loot_tables.weapons.hammer.cobalt")), + (1.0, LootTable("common.loot_tables.weapons.bow.frostwood")), + (1.0, LootTable("common.loot_tables.weapons.staff.frostwood")), + (1.0, LootTable("common.loot_tables.weapons.sceptre.frostwood")), +] \ No newline at end of file diff --git a/assets/common/loot_tables/weapons/tier-5.ron b/assets/common/loot_tables/weapons/tier-5.ron new file mode 100644 index 0000000000..2c43153ade --- /dev/null +++ b/assets/common/loot_tables/weapons/tier-5.ron @@ -0,0 +1,8 @@ +[ + (1.0, LootTable("common.loot_tables.weapons.sword.bloodsteel")), + (1.0, LootTable("common.loot_tables.weapons.axe.bloodsteel")), + (1.0, LootTable("common.loot_tables.weapons.hammer.bloodsteel")), + (1.0, LootTable("common.loot_tables.weapons.bow.eldwood")), + (1.0, LootTable("common.loot_tables.weapons.staff.eldwood")), + (1.0, LootTable("common.loot_tables.weapons.sceptre.eldwood")), +] \ No newline at end of file diff --git a/assets/voxygen/voxel/sprite_manifest.ron b/assets/voxygen/voxel/sprite_manifest.ron index 296dcefae6..1afc97ac66 100644 --- a/assets/voxygen/voxel/sprite_manifest.ron +++ b/assets/voxygen/voxel/sprite_manifest.ron @@ -2190,7 +2190,7 @@ GrassBlue: Some(( wind_sway: 1.0, )), // Underwater Chests -ChestBurried: Some(( +ChestBuried: Some(( variations: [ ( model: "voxygen.voxel.sprite.underwater_chests.chest_skull", diff --git a/common/src/bin/csv_export/main.rs b/common/src/bin/csv_export/main.rs index 4cccbc707d..8ed25823cf 100644 --- a/common/src/bin/csv_export/main.rs +++ b/common/src/bin/csv_export/main.rs @@ -17,7 +17,7 @@ use veloren_common::{ ItemKind, }, }, - lottery::Lottery, + lottery::{LootSpec, Lottery}, }; #[derive(StructOpt)] @@ -219,11 +219,17 @@ fn all_items() -> Result<(), Box> { fn loot_table(loot_table: &str) -> Result<(), Box> { let mut wtr = csv::Writer::from_path("loot_table.csv")?; - wtr.write_record(&["Item", "Relative Chance"])?; + wtr.write_record(&[ + "Relative Chance", + "Kind", + "Item", + "Lower Amount", + "Upper Amount", + ])?; let loot_table = "common.loot_tables.".to_owned() + loot_table; - let loot_table = Lottery::::load_expect(&loot_table).read(); + let loot_table = Lottery::::load_expect(&loot_table).read(); for (i, (chance, item)) in loot_table.iter().enumerate() { let chance = if let Some((next_chance, _)) = loot_table.iter().nth(i + 1) { @@ -236,7 +242,19 @@ fn loot_table(loot_table: &str) -> Result<(), Box> { .div(10_f32.powi(5)) .to_string(); - wtr.write_record(&[item, &chance])?; + match item { + LootSpec::Item(item) => wtr.write_record(&[&chance, "Item", item, "", ""])?, + LootSpec::ItemQuantity(item, lower, upper) => wtr.write_record(&[ + &chance, + "Item", + item, + &lower.to_string(), + &upper.to_string(), + ])?, + LootSpec::LootTable(table) => { + wtr.write_record(&[&chance, "LootTable", table, "", ""])? + }, + } } wtr.flush()?; diff --git a/common/src/bin/csv_import/main.rs b/common/src/bin/csv_import/main.rs index ef6fd0c4da..7755dd2ed6 100644 --- a/common/src/bin/csv_import/main.rs +++ b/common/src/bin/csv_import/main.rs @@ -6,11 +6,17 @@ use serde::Serialize; use std::{error::Error, fs::File, io::Write}; use structopt::StructOpt; -use comp::item::{ - armor::{ArmorKind, Protection}, - ItemDesc, ItemKind, ItemTag, Quality, +use veloren_common::{ + assets::ASSETS_PATH, + comp::{ + self, + item::{ + armor::{ArmorKind, Protection}, + ItemDesc, ItemKind, ItemTag, Quality, + }, + }, + lottery::LootSpec, }; -use veloren_common::{assets::ASSETS_PATH, comp}; #[derive(StructOpt)] struct Cli { @@ -372,17 +378,42 @@ fn loot_table(loot_table: &str) -> Result<(), Box> { .map(|(i, x)| (x.to_string(), i)) .collect(); - let mut items = Vec::<(f32, String)>::new(); + let mut items = Vec::<(f32, LootSpec)>::new(); for record in rdr.records() { if let Ok(ref record) = record { - let item = record.get(headers["Item"]).expect("No item"); + let item = match record.get(headers["Kind"]).expect("No loot specifier") { + "Item" => { + if let (Some(Ok(lower)), Some(Ok(upper))) = ( + record.get(headers["Lower Amount"]).map(|a| a.parse()), + record.get(headers["Upper Amount"]).map(|a| a.parse()), + ) { + LootSpec::ItemQuantity( + record.get(headers["Item"]).expect("No item").to_string(), + lower, + upper, + ) + } else { + LootSpec::Item(record.get(headers["Item"]).expect("No item").to_string()) + } + }, + "LootTable" => LootSpec::LootTable( + record + .get(headers["Item"]) + .expect("No loot table") + .to_string(), + ), + a => panic!( + "Loot specifier kind must be either \"Item\" or \"LootTable\"\n{}", + a + ), + }; let chance: f32 = record .get(headers["Relative Chance"]) .expect("No chance for item in entry") .parse() .expect("Not an f32 for chance in entry"); - items.push((chance, item.to_string())); + items.push((chance, item)); } } @@ -393,7 +424,9 @@ fn loot_table(loot_table: &str) -> Result<(), Box> { let mut path = ASSETS_PATH.clone(); path.push("common"); path.push("loot_tables"); - path.push(loot_table); + for part in loot_table.split(".") { + path.push(part); + } path.set_extension("ron"); let path_str = path.to_str().expect("File path not unicode?!"); diff --git a/common/src/comp/inventory/item/mod.rs b/common/src/comp/inventory/item/mod.rs index e86661dd85..9b9fea40f2 100644 --- a/common/src/comp/inventory/item/mod.rs +++ b/common/src/comp/inventory/item/mod.rs @@ -13,13 +13,12 @@ use crate::{ CharacterAbility, }, effect::Effect, - lottery::Lottery, + lottery::{LootSpec, Lottery}, recipe::RecipeInput, terrain::{Block, SpriteKind}, }; use core::mem; use crossbeam_utils::atomic::AtomicCell; -use rand::prelude::*; use serde::{Deserialize, Serialize}; use specs::{Component, DerefFlaggedStorage}; use specs_idvs::IdvStorage; @@ -579,7 +578,6 @@ impl Item { pub fn try_reclaim_from_block(block: Block) -> Option { let chosen; - let mut rng = rand::thread_rng(); Some(Item::new_from_asset_expect(match block.get_sprite()? { SpriteKind::Apple => "common.items.food.apple", SpriteKind::Mushroom => "common.items.food.mushroom", @@ -601,44 +599,21 @@ impl Item { // Containers // IMPORTANT: Add any new container to `SpriteKind::is_container` SpriteKind::Chest => { - chosen = Lottery::::load_expect(match rng.gen_range(0..7) { - 0 => "common.loot_tables.loot_table_weapon_uncommon", - 1 => "common.loot_tables.loot_table_weapon_common", - 2 => "common.loot_tables.loot_table_armor_light", - 3 => "common.loot_tables.loot_table_armor_cloth", - 4 => "common.loot_tables.loot_table_armor_heavy", - _ => "common.loot_tables.loot_table_armor_misc", - }) - .read(); - chosen.choose() + chosen = Lottery::::load_expect("common.loot_tables.sprite.chest").read(); + return Some(chosen.choose().to_item()); }, - SpriteKind::ChestBurried => { - chosen = Lottery::::load_expect(match rng.gen_range(0..7) { - 1 => "common.loot_tables.loot_table_weapon_common", - 2 => "common.loot_tables.loot_table_armor_light", - 3 => "common.loot_tables.loot_table_armor_cloth", - _ => "common.loot_tables.loot_table_armor_misc", - }) - .read(); - chosen.choose() + SpriteKind::ChestBuried => { + chosen = Lottery::::load_expect("common.loot_tables.sprite.chest-buried") + .read(); + return Some(chosen.choose().to_item()); }, SpriteKind::Mud => { - chosen = Lottery::::load_expect(match rng.gen_range(0..5) { - 0 => "common.loot_tables.loot_table_crafting", - 1 => "common.loot_tables.loot_table_weapon_common", - 2 => "common.loot_tables.loot_table_armor_misc", - _ => "common.loot_tables.loot_table_rocks", - }) - .read(); - chosen.choose() + chosen = Lottery::::load_expect("common.loot_tables.sprite.mud").read(); + return Some(chosen.choose().to_item()); }, SpriteKind::Crate => { - chosen = Lottery::::load_expect(match rng.gen_range(0..4) { - 0 => "common.loot_tables.loot_table_crafting", - _ => "common.loot_tables.loot_table_food", - }) - .read(); - chosen.choose() + chosen = Lottery::::load_expect("common.loot_tables.sprite.crate").read(); + return Some(chosen.choose().to_item()); }, SpriteKind::Beehive => "common.items.crafting_ing.honey", diff --git a/common/src/comp/inventory/trade_pricing.rs b/common/src/comp/inventory/trade_pricing.rs index de4953a7cc..2d23d461d2 100644 --- a/common/src/comp/inventory/trade_pricing.rs +++ b/common/src/comp/inventory/trade_pricing.rs @@ -1,5 +1,6 @@ use crate::{ assets::{self, AssetExt}, + lottery::{LootSpec, Lottery}, recipe::{default_recipe_book, RecipeInput}, trade::Good, }; @@ -7,7 +8,7 @@ use assets_manager::AssetGuard; use hashbrown::HashMap; use lazy_static::lazy_static; use serde::Deserialize; -use tracing::info; +use tracing::{info, warn}; #[derive(Debug)] struct Entry { @@ -37,18 +38,40 @@ lazy_static! { static ref TRADE_PRICING: TradePricing = TradePricing::read(); } +#[derive(Clone)] struct ProbabilityFile { pub content: Vec<(f32, String)>, } impl assets::Asset for ProbabilityFile { - type Loader = assets::LoadFrom, assets::RonLoader>; + type Loader = assets::LoadFrom, assets::RonLoader>; const EXTENSION: &'static str = "ron"; } -impl From> for ProbabilityFile { - fn from(content: Vec<(f32, String)>) -> ProbabilityFile { Self { content } } +impl From> for ProbabilityFile { + fn from(content: Vec<(f32, LootSpec)>) -> ProbabilityFile { + Self { + content: content + .into_iter() + .flat_map(|(a, b)| match b { + LootSpec::Item(c) => vec![(a, c)].into_iter(), + LootSpec::ItemQuantity(c, d, e) => { + vec![(a * (d + e) as f32 / 2.0, c)].into_iter() + }, + LootSpec::LootTable(c) => { + let total = Lottery::::load_expect(&c).read().total(); + ProbabilityFile::load_expect_cloned(&c) + .content + .into_iter() + .map(|(d, e)| (a * d / total, e)) + .collect::>() + .into_iter() + }, + }) + .collect(), + } + } } #[derive(Debug, Deserialize)] @@ -294,6 +317,10 @@ impl TradePricing { Some(TradePricing::COIN_ITEM.into()) } else { let table = self.get_list(good); + if table.is_empty() { + warn!("Good: {:?}, was unreachable.", good); + return None; + } let upper = table.len(); let lower = table .iter() @@ -313,13 +340,12 @@ impl TradePricing { pub fn get_material(item: &str) -> (Good, f32) { if item == TradePricing::COIN_ITEM { - (Good::Coin, 1.0 / TRADE_PRICING.coin_scale) + (Good::Coin, 1.0) } else { - TRADE_PRICING - .material_cache - .get(item) - .cloned() - .unwrap_or((Good::Terrain(crate::terrain::BiomeKind::Void), 0.0)) + TRADE_PRICING.material_cache.get(item).cloned().map_or( + (Good::Terrain(crate::terrain::BiomeKind::Void), 0.0), + |(a, b)| (a, b * TRADE_PRICING.coin_scale), + ) } } diff --git a/common/src/lottery.rs b/common/src/lottery.rs index 556008d112..1bfa155472 100644 --- a/common/src/lottery.rs +++ b/common/src/lottery.rs @@ -26,9 +26,12 @@ // Cheese drop rate = 3/X = 29.6% // Coconut drop rate = 1/X = 9.85% -use crate::assets; +use crate::{ + assets::{self, AssetExt}, + comp::Item, +}; use rand::prelude::*; -use serde::{de::DeserializeOwned, Deserialize}; +use serde::{de::DeserializeOwned, Deserialize, Serialize}; #[derive(Clone, Debug, PartialEq, Deserialize)] pub struct Lottery { @@ -72,21 +75,95 @@ impl Lottery { pub fn total(&self) -> f32 { self.total } } -#[cfg(test)] -mod tests { - use super::*; - use crate::{assets::AssetExt, comp::Item}; +#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)] +pub enum LootSpec { + /// Asset specifier + Item(String), + /// Asset specifier, lower range, upper range + ItemQuantity(String, u32, u32), + /// Loot table + LootTable(String), +} - #[test] - fn test_loot_table() { - let test = Lottery::::load_expect("common.loot_tables.loot_table"); - - for (_, item_asset_specifier) in test.read().iter() { - assert!( - Item::new_from_asset(item_asset_specifier).is_ok(), - "Invalid loot table item '{}'", - item_asset_specifier - ); +impl LootSpec { + pub fn to_item(&self) -> Item { + match self { + Self::Item(item) => Item::new_from_asset_expect(&item), + Self::ItemQuantity(item, lower, upper) => { + let range = *lower..=*upper; + let quantity = thread_rng().gen_range(range); + let mut item = Item::new_from_asset_expect(&item); + let _ = item.set_amount(quantity); + item + }, + Self::LootTable(table) => Lottery::::load_expect(&table) + .read() + .choose() + .to_item(), + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::{ + assets::{AssetExt, Error}, + comp::Item, + }; + + #[test] + fn test_loot_tables() { + #[derive(Clone)] + struct LootTableList(Vec>); + impl assets::Compound for LootTableList { + fn load( + cache: &assets::AssetCache, + specifier: &str, + ) -> Result { + let list = cache + .load::(specifier)? + .read() + .iter() + .map(|spec| Lottery::::load_cloned(spec)) + .collect::>()?; + + Ok(LootTableList(list)) + } + } + + fn validate_table_contents(table: Lottery) { + for (_, item) in table.iter() { + match item { + LootSpec::Item(item) => { + Item::new_from_asset_expect(&item); + }, + LootSpec::ItemQuantity(item, lower, upper) => { + assert!( + *lower > 0, + "Lower quantity must be more than 0. It is {}.", + lower + ); + assert!( + upper >= lower, + "Upper quantity must be at least the value of lower quantity. Upper \ + value: {}, low value: {}.", + upper, + lower + ); + Item::new_from_asset_expect(&item); + }, + LootSpec::LootTable(loot_table) => { + let loot_table = Lottery::::load_expect_cloned(&loot_table); + validate_table_contents(loot_table); + }, + } + } + } + + let loot_tables = LootTableList::load_expect_cloned("common.loot_tables.*").0; + for loot_table in loot_tables { + validate_table_contents(loot_table); } } } diff --git a/common/src/terrain/sprite.rs b/common/src/terrain/sprite.rs index 14658221f2..4d3fdd77f7 100644 --- a/common/src/terrain/sprite.rs +++ b/common/src/terrain/sprite.rs @@ -105,7 +105,7 @@ make_case_elim!( VialEmpty = 0x4E, PotionMinor = 0x4F, GrassBlue = 0x50, - ChestBurried = 0x51, + ChestBuried = 0x51, Mud = 0x52, FireBowlGround = 0x53, CaveMushroom = 0x54, @@ -182,7 +182,7 @@ impl SpriteKind { SpriteKind::WardrobeDouble => 3.0, SpriteKind::Pot => 0.90, SpriteKind::Mud => 0.36, - SpriteKind::ChestBurried => 0.91, + SpriteKind::ChestBuried => 0.91, SpriteKind::StonyCoral => 1.4, // TODO: Find suitable heights. SpriteKind::BarrelCactus @@ -233,7 +233,7 @@ impl SpriteKind { SpriteKind::VialEmpty => true, SpriteKind::PotionMinor => true, SpriteKind::Bowl => true, - SpriteKind::ChestBurried => true, + SpriteKind::ChestBuried => true, SpriteKind::Mud => true, SpriteKind::Seashells => true, _ => false, @@ -244,7 +244,7 @@ impl SpriteKind { pub fn is_container(&self) -> bool { matches!( self, - SpriteKind::Chest | SpriteKind::ChestBurried | SpriteKind::Mud | SpriteKind::Crate, + SpriteKind::Chest | SpriteKind::ChestBuried | SpriteKind::Mud | SpriteKind::Crate, ) } diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index 1cbb08b29c..4269a6f08a 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -15,10 +15,10 @@ use common::{ chat::{KillSource, KillType}, inventory::item::MaterialStatManifest, object, Alignment, Body, CharacterState, Energy, EnergyChange, Group, Health, HealthChange, - HealthSource, Inventory, Item, Player, Poise, PoiseChange, PoiseSource, Pos, Stats, + HealthSource, Inventory, Player, Poise, PoiseChange, PoiseSource, Pos, Stats, }, event::{EventBus, ServerEvent}, - lottery::Lottery, + lottery::{LootSpec, Lottery}, outcome::Outcome, resources::Time, rtsim::RtSimEntity, @@ -31,7 +31,6 @@ use common::{ use common_net::{msg::ServerGeneral, sync::WorldSyncExt}; use common_sys::state::BlockChange; use hashbrown::HashSet; -use rand::prelude::*; use specs::{join::Join, saveload::MarkerAllocator, Entity as EcsEntity, WorldExt}; use tracing::error; use vek::{Vec2, Vec3}; @@ -341,110 +340,66 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc // Decide for a loot drop before turning into a lootbag let old_body = state.ecs().write_storage::().remove(entity); - let mut rng = rand::thread_rng(); - let mut lottery = || { - Lottery::::load_expect(match old_body { - Some(common::comp::Body::Humanoid(_)) => match rng.gen_range(0..4) { - 0 => "common.loot_tables.loot_table_humanoids", - 1 => "common.loot_tables.loot_table_armor_light", - 2 => "common.loot_tables.loot_table_armor_cloth", - 3 => "common.loot_tables.loot_table_weapon_common", - 4 => "common.loots_tables.loot_table_armor_misc", - _ => "common.loot_tables.loot_table_humanoids", - }, + let lottery = || { + Lottery::::load_expect(match old_body { + Some(common::comp::Body::Humanoid(_)) => "common.loot_tables.creature.humanoid", Some(common::comp::Body::QuadrupedSmall(quadruped_small)) => { match quadruped_small.species { - quadruped_small::Species::Dodarock => match rng.gen_range(0..6) { - 1 => "common.loot_tables.loot_table_rocks", - _ => "common.loot_tables.loot_table_rocks", - }, - _ => match rng.gen_range(0..4) { - 0 => "common.loot_tables.loot_table_food", - 2 => "common.loot_tables.loot_table_animal_parts", - _ => "common.loot_tables.loot_table_animal_parts", + quadruped_small::Species::Dodarock => { + "common.loot_tables.creature.quad_small.dodarock" }, + _ => "common.loot_tables.creature.quad_small.default", } }, - Some(common::comp::Body::QuadrupedMedium(quadruped_medium)) => { - match quadruped_medium.species { - quadruped_medium::Species::Frostfang - | quadruped_medium::Species::Roshwalr => { - "common.loot_tables.loot_table_animal_ice" - }, - _ => match rng.gen_range(0..4) { - 0 => "common.loot_tables.loot_table_food", - 2 => "common.loot_tables.loot_table_animal_parts", - _ => "common.loot_tables.loot_table_animal_parts", - }, - } + Some(Body::QuadrupedMedium(quadruped_medium)) => match quadruped_medium.species { + quadruped_medium::Species::Frostfang | quadruped_medium::Species::Roshwalr => { + "common.loot_tables.creature.quad_medium.ice" + }, + _ => "common.loot_tables.creature.quad_medium.default", }, - Some(common::comp::Body::BirdMedium(_)) => match rng.gen_range(0..3) { - 0 => "common.loot_tables.loot_table_food", - _ => "common.loot_tables.loot_table", + Some(common::comp::Body::BirdMedium(_)) => { + "common.loot_tables.creature.bird_medium" }, - Some(common::comp::Body::FishMedium(_)) => "common.loot_tables.loot_table_fish", - Some(common::comp::Body::FishSmall(_)) => "common.loot_tables.loot_table_fish", + Some(common::comp::Body::FishMedium(_)) => "common.loot_tables.creature.fish", + Some(common::comp::Body::FishSmall(_)) => "common.loot_tables.creature.fish", Some(common::comp::Body::BipedLarge(biped_large)) => match biped_large.species { - biped_large::Species::Wendigo => match rng.gen_range(0..7) { - 0 => "common.loot_tables.loot_table_food", - 1 => "common.loot_tables.loot_table_wendigo", - 2 => "common.loot_tables.loot_table_weapon_uncommon", - _ => "common.loot_tables.loot_table_cave_large", - }, - biped_large::Species::Troll => match rng.gen_range(0..10) { - 0 => "common.loot_tables.loot_table_food", - 1 => "common.loot_tables.loot_table_cave_large", - 2 => "common.loot_tables.loot_table_weapon_uncommon", - _ => "common.loot_tables.loot_table_troll", + biped_large::Species::Wendigo => { + "common.loot_tables.creature.biped_large.wendigo" }, + biped_large::Species::Troll => "common.loot_tables.creature.biped_large.troll", biped_large::Species::Occultsaurok | biped_large::Species::Mightysaurok - | biped_large::Species::Slysaurok => "common.loot_tables.loot_table_saurok", - _ => match rng.gen_range(0..4) { - 0 => "common.loot_tables.loot_table_food", - 1 => "common.loot_tables.loot_table_armor_nature", - _ => "common.loot_tables.loot_table_cave_large", + | biped_large::Species::Slysaurok => { + "common.loot_tables.creature.biped_large.saurok" }, + _ => "common.loot_tables.creature.biped_large.default", }, - Some(common::comp::Body::Golem(_)) => match rng.gen_range(0..9) { - 0 => "common.loot_tables.loot_table_food", - 2 => "common.loot_tables.loot_table_armor_light", - 3 => "common.loot_tables.loot_table_armor_heavy", - 5 => "common.loot_tables.loot_table_weapon_common", - 6 => "common.loot_tables.loot_table_weapon_uncommon", - 7 => "common.loot_tables.loot_table_weapon_rare", - _ => "common.loot_tables.loot_table", - }, + Some(common::comp::Body::Golem(_)) => "common.loot_tables.creature.golem", Some(common::comp::Body::Theropod(theropod)) => match theropod.species { theropod::Species::Sandraptor | theropod::Species::Snowraptor - | theropod::Species::Woodraptor => match rng.gen_range(0..3) { - 0 => "common.loot_tables.loot_table_raptor", - _ => "common.loot_tables.loot_table_animal_parts", + | theropod::Species::Woodraptor => { + "common.loot_tables.creature.theropod.raptor" }, - _ => "common.loot_tables.loot_table_animal_parts", + _ => "common.loot_tables.creature.theropod.default", }, - Some(common::comp::Body::Dragon(_)) => "common.loot_tables.loot_table_weapon_rare", + Some(common::comp::Body::Dragon(_)) => "common.loot_tables.creature.dragon", Some(common::comp::Body::QuadrupedLow(quadruped_low)) => { match quadruped_low.species { quadruped_low::Species::Maneater => { - "common.loot_tables.loot_table_maneater" - }, - _ => match rng.gen_range(0..3) { - 0 => "common.loot_tables.loot_table_food", - 1 => "common.loot_tables.loot_table_animal_parts", - _ => "common.loot_tables.loot_table", + "common.loot_tables.creature.quad_low.maneater" }, + _ => "common.loot_tables.creature.quad_low.default", } }, - _ => "common.loot_tables.loot_table", + _ => "common.loot_tables.fallback", }) }; let item = { let mut item_drops = state.ecs().write_storage::(); item_drops.remove(entity).map_or_else( - || Item::new_from_asset_expect(lottery().read().choose()), + || lottery().read().choose().to_item(), |item_drop| item_drop.0, ) }; diff --git a/world/src/layer/scatter.rs b/world/src/layer/scatter.rs index 3c3d03ab1b..be3e34b2be 100644 --- a/world/src/layer/scatter.rs +++ b/world/src/layer/scatter.rs @@ -282,7 +282,7 @@ pub fn apply_scatter_to(canvas: &mut Canvas, rng: &mut impl Rng) { ) }), // Underwater chests - (ChestBurried, true, |_, col| { + (ChestBuried, true, |_, col| { ( MUSH_FACT * 1.0e-6 diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index c05e5107d9..7ee5468d6b 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -16,7 +16,7 @@ use common::{ {self}, }, generation::{ChunkSupplement, EntityInfo}, - lottery::Lottery, + lottery::{LootSpec, Lottery}, store::{Id, Store}, terrain::{Block, BlockKind, SpriteKind, Structure, StructuresGroup, TerrainChunkSize}, vol::{BaseVol, ReadVol, RectSizedVol, RectVolSize, WriteVol}, @@ -552,57 +552,26 @@ impl Floor { { // Bad let chosen = match room.difficulty { - 0 => { - Lottery::::load_expect(match dynamic_rng.gen_range(0..4) { - 0 => "common.loot_tables.loot_table_humanoids", - 1 => "common.loot_tables.loot_table_armor_cloth", - _ => "common.loot_tables.loot_table_weapon_common", - }) - }, - 1 => { - Lottery::::load_expect(match dynamic_rng.gen_range(0..4) { - 0 => "common.loot_tables.loot_table_humanoids", - 1 => "common.loot_tables.loot_table_armor_light", - _ => "common.loot_tables.loot_table_weapon_uncommon", - }) - }, - 2 => { - Lottery::::load_expect(match dynamic_rng.gen_range(0..4) { - 0 => "common.loot_tables.loot_table_humanoids", - 1 => "common.loot_tables.loot_table_armor_heavy", - _ => "common.loot_tables.loot_table_weapon_rare", - }) - }, - 3 => { - Lottery::::load_expect(match dynamic_rng.gen_range(0..10) { - 0 => "common.loot_tables.loot_table_humanoids", - 1 => "common.loot_tables.loot_table_armor_heavy", - 2 => "common.loot_tables.loot_table_weapon_rare", - _ => "common.loot_tables.loot_table_cultists", - }) - }, - 4 => { - Lottery::::load_expect(match dynamic_rng.gen_range(0..6) { - 0 => "common.loot_tables.loot_table_humanoids", - 1 => "common.loot_tables.loot_table_armor_misc", - 2 => "common.loot_tables.loot_table_weapon_rare", - _ => "common.loot_tables.loot_table_cultists", - }) - }, - 5 => { - Lottery::::load_expect(match dynamic_rng.gen_range(0..5) { - 0 => "common.loot_tables.loot_table_humanoids", - 1 => "common.loot_tables.loot_table_armor_misc", - 2 => "common.loot_tables.loot_table_weapon_rare", - _ => "common.loot_tables.loot_table_cultists", - }) - }, - _ => Lottery::::load_expect( - "common.loot_tables.loot_table_armor_misc", + 0 => Lottery::::load_expect( + "common.loot_tables.dungeon.tier-0.enemy", ), + 1 => Lottery::::load_expect( + "common.loot_tables.dungeon.tier-1.enemy", + ), + 2 => Lottery::::load_expect( + "common.loot_tables.dungeon.tier-2.enemy", + ), + 3 => Lottery::::load_expect( + "common.loot_tables.dungeon.tier-3.enemy", + ), + 4 => Lottery::::load_expect( + "common.loot_tables.dungeon.tier-4.enemy", + ), + 5 => Lottery::::load_expect( + "common.loot_tables.dungeon.tier-5.enemy", + ), + _ => Lottery::::load_expect("common.loot_tables.fallback"), }; - let chosen = chosen.read(); - let chosen = chosen.choose(); //let is_giant = // RandomField::new(room.seed.wrapping_add(1)).chance(Vec3::from(tile_pos), // 0.2) && !room.boss; @@ -617,7 +586,7 @@ impl Floor { .with_alignment(comp::Alignment::Enemy) .with_loadout_config(loadout_builder::LoadoutConfig::CultistAcolyte) .with_skillset_config(common::skillset_builder::SkillSetConfig::CultistAcolyte) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) + .with_loot_drop(chosen.read().choose().to_item()) .with_level(dynamic_rng.gen_range((room.difficulty as f32).powf(1.25) + 3.0..(room.difficulty as f32).powf(1.5) + 4.0).round() as u16); let entity = match room.difficulty { 0 => entity @@ -632,7 +601,7 @@ impl Floor { .with_skillset_config( common::skillset_builder::SkillSetConfig::Gnarling, ) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) + .with_loot_drop(chosen.read().choose().to_item()) .with_main_tool(comp::Item::new_from_asset_expect( match dynamic_rng.gen_range(0..5) { 0 => { @@ -661,7 +630,7 @@ impl Floor { .with_skillset_config( common::skillset_builder::SkillSetConfig::Adlet, ) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) + .with_loot_drop(chosen.read().choose().to_item()) .with_main_tool(comp::Item::new_from_asset_expect( match dynamic_rng.gen_range(0..5) { 0 => "common.items.npc_weapons.biped_small.adlet.adlet_bow", @@ -686,7 +655,7 @@ impl Floor { .with_skillset_config( common::skillset_builder::SkillSetConfig::Sahagin, ) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) + .with_loot_drop(chosen.read().choose().to_item()) .with_main_tool(comp::Item::new_from_asset_expect( match dynamic_rng.gen_range(0..5) { 0 => { @@ -714,7 +683,7 @@ impl Floor { .with_skillset_config( common::skillset_builder::SkillSetConfig::Haniwa, ) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) + .with_loot_drop(chosen.read().choose().to_item()) .with_main_tool(comp::Item::new_from_asset_expect( match dynamic_rng.gen_range(0..5) { 0 => { @@ -742,7 +711,7 @@ impl Floor { .with_skillset_config( common::skillset_builder::SkillSetConfig::Myrmidon, ) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) + .with_loot_drop(chosen.read().choose().to_item()) .with_main_tool(comp::Item::new_from_asset_expect( match dynamic_rng.gen_range(0..5) { 0 => { @@ -767,7 +736,7 @@ impl Floor { .with_skillset_config( common::skillset_builder::SkillSetConfig::Warlock, ) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) + .with_loot_drop(chosen.read().choose().to_item()) .with_main_tool(comp::Item::new_from_asset_expect( "common.items.weapons.staff.cultist_staff", )), @@ -783,7 +752,7 @@ impl Floor { .with_skillset_config( common::skillset_builder::SkillSetConfig::Warlord, ) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) + .with_loot_drop(chosen.read().choose().to_item()) .with_main_tool(comp::Item::new_from_asset_expect( match dynamic_rng.gen_range(0..5) { 0 => "common.items.weapons.axe.malachite_axe-0", @@ -818,103 +787,112 @@ impl Floor { if tile_pos == boss_spawn_tile && tile_wcenter.xy() == wpos2d { let chosen = match room.difficulty { - 0 => Lottery::::load_expect( - "common.loot_tables.loot_table_weapon_uncommon", + 0 => Lottery::::load_expect( + "common.loot_tables.weapons.tier-0", ), - 1 => Lottery::::load_expect( - "common.loot_tables.loot_table_weapon_uncommon", + 1 => Lottery::::load_expect( + "common.loot_tables.weapons.tier-1", ), - 2 => Lottery::::load_expect( - "common.loot_tables.loot_table_armor_heavy", + 2 => Lottery::::load_expect( + "common.loot_tables.weapons.tier-2", ), - 3 => Lottery::::load_expect( - "common.loot_tables.loot_table_weapon_rare", + 3 => Lottery::::load_expect( + "common.loot_tables.weapons.tier-3", ), - 4 => Lottery::::load_expect( - "common.loot_tables.loot_table_miniboss", + 4 => Lottery::::load_expect( + "common.loot_tables.weapons.tier-4", ), - 5 => Lottery::::load_expect( - match dynamic_rng.gen_range(0..3) { - 0 => "common.loot_tables.mindflayer", - _ => "common.loot_tables.loot_table_miniboss", - }, - ), - _ => Lottery::::load_expect( - "common.loot_tables.loot_table_armor_misc", + 5 => Lottery::::load_expect( + "common.loot_tables.dungeon.tier-5.boss", ), + _ => { + Lottery::::load_expect("common.loot_tables.fallback") + }, }; let chosen = chosen.read(); let chosen = chosen.choose(); let entity = match room.difficulty { - 0 => vec![ - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::BipedLarge( - comp::biped_large::Body::random_with( - dynamic_rng, - &comp::biped_large::Species::Harvester, + 0 => { + vec![ + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::BipedLarge( + comp::biped_large::Body::random_with( + dynamic_rng, + &comp::biped_large::Species::Harvester, + ), + )) + .with_name("Harvester".to_string()) + .with_loot_drop(chosen.to_item()), + ] + }, + 1 => { + vec![ + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::BipedLarge( + comp::biped_large::Body::random_with( + dynamic_rng, + &comp::biped_large::Species::Yeti, + ), + )) + .with_name("Yeti".to_string()) + .with_loot_drop(chosen.to_item()), + ] + }, + 2 => { + vec![ + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::BipedLarge( + comp::biped_large::Body::random_with( + dynamic_rng, + &comp::biped_large::Species::Tidalwarrior, + ), + )) + .with_name("Tidal Warrior".to_string()) + .with_loot_drop(chosen.to_item()), + ] + }, + 3 => { + vec![ + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::Golem( + comp::golem::Body::random_with( + dynamic_rng, + &comp::golem::Species::ClayGolem, + ), + )) + .with_name("Clay Golem".to_string()) + .with_loot_drop(chosen.to_item()), + ] + }, + 4 => { + vec![ + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::BipedLarge( + comp::biped_large::Body::random_with( + dynamic_rng, + &comp::biped_large::Species::Minotaur, + ), + )) + .with_name("Minotaur".to_string()) + .with_loot_drop(chosen.to_item()), + ] + }, + 5 => { + vec![ + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::BipedLarge( + comp::biped_large::Body::random_with( + dynamic_rng, + &comp::biped_large::Species::Mindflayer, + ), + )) + .with_name("Mindflayer".to_string()) + .with_loot_drop(chosen.to_item()) + .with_skillset_config( + common::skillset_builder::SkillSetConfig::Mindflayer, ), - )) - .with_name("Harvester".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), - ], - 1 => vec![ - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::BipedLarge( - comp::biped_large::Body::random_with( - dynamic_rng, - &comp::biped_large::Species::Yeti, - ), - )) - .with_name("Yeti".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), - ], - 2 => vec![ - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::BipedLarge( - comp::biped_large::Body::random_with( - dynamic_rng, - &comp::biped_large::Species::Tidalwarrior, - ), - )) - .with_name("Tidal Warrior".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), - ], - 3 => vec![ - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::Golem( - comp::golem::Body::random_with( - dynamic_rng, - &comp::golem::Species::ClayGolem, - ), - )) - .with_name("Clay Golem".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), - ], - 4 => vec![ - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::BipedLarge( - comp::biped_large::Body::random_with( - dynamic_rng, - &comp::biped_large::Species::Minotaur, - ), - )) - .with_name("Minotaur".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), - ], - 5 => vec![ - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::BipedLarge( - comp::biped_large::Body::random_with( - dynamic_rng, - &comp::biped_large::Species::Mindflayer, - ), - )) - .with_name("Mindflayer".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) - .with_skillset_config( - common::skillset_builder::SkillSetConfig::Mindflayer, - ), - ], + ] + }, _ => { vec![EntityInfo::at(tile_wcenter.map(|e| e as f32)).with_body( comp::Body::QuadrupedSmall( @@ -961,136 +939,135 @@ impl Floor { if tile_pos == miniboss_spawn_tile && tile_wcenter.xy() == wpos2d { let chosen = match room.difficulty { - 0 => Lottery::::load_expect( - "common.loot_tables.loot_table_animal_parts", + 0 => Lottery::::load_expect( + "common.loot_tables.weapons.tier-0", ), - 1 => Lottery::::load_expect( - "common.loot_tables.loot_table_animal_parts", + 1 => Lottery::::load_expect( + "common.loot_tables.weapons.tier-1", ), - 2 => Lottery::::load_expect( - "common.loot_tables.loot_table_animal_parts", + 2 => Lottery::::load_expect( + "common.loot_tables.weapons.tier-2", ), - 3 => Lottery::::load_expect( - "common.loot_tables.loot_table_weapon_rare", + 3 => Lottery::::load_expect( + "common.loot_tables.weapons.tier-3", ), - 4 => Lottery::::load_expect( - "common.loot_tables.loot_table_weapon_rare", - ), - 5 => Lottery::::load_expect( - "common.loot_tables.loot_table_husk", - ), - _ => Lottery::::load_expect( - "common.loot_tables.loot_table_armor_misc", + 4 => Lottery::::load_expect( + "common.loot_tables.weapons.tier-4", ), + 5 => { + Lottery::::load_expect("common.loot_tables.cultists") + }, + _ => { + Lottery::::load_expect("common.loot_tables.fallback") + }, }; - let chosen = chosen.read(); - let chosen = chosen.choose(); let entity = match room.difficulty { - 0 => vec![ - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::QuadrupedMedium( - comp::quadruped_medium::Body::random_with( - dynamic_rng, - &comp::quadruped_medium::Species::Bonerattler, - ), - )) - .with_name("Bonerattler".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), - ], - 1 => vec![ - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::QuadrupedMedium( - comp::quadruped_medium::Body::random_with( - dynamic_rng, - &comp::quadruped_medium::Species::Bonerattler, - ) - )) - .with_name("Bonerattler".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect( - chosen - )); - 3 - ], + 0 => { + vec![ + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::QuadrupedMedium( + comp::quadruped_medium::Body::random_with( + dynamic_rng, + &comp::quadruped_medium::Species::Bonerattler, + ), + )) + .with_name("Bonerattler".to_string()) + .with_loot_drop(chosen.read().choose().to_item()), + ] + }, + 1 => { + vec![ + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::QuadrupedMedium( + comp::quadruped_medium::Body::random_with( + dynamic_rng, + &comp::quadruped_medium::Species::Bonerattler, + ), + )) + .with_name("Bonerattler".to_string()) + .with_loot_drop(chosen.read().choose().to_item()); + 3 + ] + }, 2 => { let mut entities = Vec::new(); entities.resize_with(6, || { - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::QuadrupedLow( - comp::quadruped_low::Body::random_with( - dynamic_rng, - &comp::quadruped_low::Species::Hakulaq, - ), - )) - .with_name("Hakulaq".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::QuadrupedLow( + comp::quadruped_low::Body::random_with( + dynamic_rng, + &comp::quadruped_low::Species::Hakulaq, + ), + )) + .with_name("Hakulaq".to_string()) + .with_loot_drop(chosen.read().choose().to_item()) }); entities }, - 3 => vec![ - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::Humanoid( - comp::humanoid::Body::random(), - )) - .with_name("Animal Trainer".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)) - .with_loadout_config(loadout_builder::LoadoutConfig::CultistAcolyte) - .with_skillset_config( - common::skillset_builder::SkillSetConfig::CultistAcolyte - ) - .with_main_tool(comp::Item::new_from_asset_expect( - match dynamic_rng.gen_range(0..6) { - 0 => "common.items.weapons.axe.malachite_axe-0", - 1..=2 => "common.items.weapons.sword.cultist", - 3 => { - "common.items.weapons.hammer.cultist_purp_2h-0" + 3 => { + let mut entities = Vec::new(); + entities.push( + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::Humanoid(comp::humanoid::Body::random())) + .with_name("Animal Trainer".to_string()) + .with_loot_drop(chosen.read().choose().to_item()) + .with_loadout_config(loadout_builder::LoadoutConfig::CultistAcolyte) + .with_skillset_config( + common::skillset_builder::SkillSetConfig::CultistAcolyte + ) + .with_main_tool(comp::Item::new_from_asset_expect( + match dynamic_rng.gen_range(0..6) { + 0 => "common.items.weapons.axe.malachite_axe-0", + 1..=2 => "common.items.weapons.sword.cultist", + 3 => { + "common.items.weapons.hammer.cultist_purp_2h-0" + }, + 4 => "common.items.weapons.staff.cultist_staff", + _ => "common.items.weapons.bow.bone-1", }, - 4 => "common.items.weapons.staff.cultist_staff", - _ => "common.items.weapons.bow.bone-1", - }, - )), - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::QuadrupedMedium( - comp::quadruped_medium::Body::random_with( - dynamic_rng, - &comp::quadruped_medium::Species::Darkhound, - ), - )) - .with_name("Tamed Darkhound".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::QuadrupedMedium( - comp::quadruped_medium::Body::random_with( - dynamic_rng, - &comp::quadruped_medium::Species::Darkhound, - ), - )) - .with_name("Tamed Darkhound".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), - ], - 4 => vec![ - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::BipedLarge( - comp::biped_large::Body::random_with( - dynamic_rng, - &comp::biped_large::Species::Dullahan, - ), - )) - .with_name("Dullahan Guard".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect(chosen)), - ], + )), + ); + entities.resize_with(entities.len() + 2, || { + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::QuadrupedMedium( + comp::quadruped_medium::Body::random_with( + dynamic_rng, + &comp::quadruped_medium::Species::Darkhound, + ), + )) + .with_name("Tamed Darkhound".to_string()) + .with_loot_drop(chosen.read().choose().to_item()) + }); + entities + }, + 4 => { + vec![ + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::BipedLarge( + comp::biped_large::Body::random_with( + dynamic_rng, + &comp::biped_large::Species::Dullahan, + ), + )) + .with_name("Dullahan Guard".to_string()) + .with_loot_drop(chosen.read().choose().to_item()), + ] + }, 5 => { let mut entities = Vec::new(); entities.resize_with(10, || { - EntityInfo::at(tile_wcenter.map(|e| e as f32)) - .with_body(comp::Body::BipedSmall( - comp::biped_small::Body::random_with( - dynamic_rng, - &comp::biped_small::Species::Husk, - ), - )) - .with_name("Cultist Husk".to_string()) - .with_loot_drop(comp::Item::new_from_asset_expect("common.items.crafting_ing.stones")) - .with_loadout_config(loadout_builder::LoadoutConfig::Husk) + EntityInfo::at(tile_wcenter.map(|e| e as f32)) + .with_body(comp::Body::BipedSmall( + comp::biped_small::Body::random_with( + dynamic_rng, + &comp::biped_small::Species::Husk, + ), + )) + .with_name("Cultist Husk".to_string()) + .with_loot_drop(chosen.read().choose().to_item()) + .with_loadout_config( + loadout_builder::LoadoutConfig::Husk, + ) }); entities },