mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Merge branch 'qsto/bosses_loot_overhaul' into 'master'
Bosses loot overhaul See merge request veloren/veloren!4072
This commit is contained in:
commit
78b2443edc
@ -3,7 +3,7 @@
|
||||
name: Name("Yeti"),
|
||||
body: RandomWith("yeti"),
|
||||
alignment: Alignment(Enemy),
|
||||
loot: LootTable("common.loot_tables.dungeon.adlet.boss"),
|
||||
loot: LootTable("common.loot_tables.dungeon.adlet.yeti"),
|
||||
inventory: (
|
||||
loadout: FromBody,
|
||||
),
|
||||
|
@ -3,7 +3,7 @@
|
||||
name: Name("Mindflayer"),
|
||||
body: RandomWith("mindflayer"),
|
||||
alignment: Alignment(Enemy),
|
||||
loot: LootTable("common.loot_tables.dungeon.cultist.boss"),
|
||||
loot: LootTable("common.loot_tables.dungeon.cultist.mindflayer"),
|
||||
inventory: (
|
||||
loadout: FromBody,
|
||||
),
|
@ -3,7 +3,7 @@
|
||||
name: Name("Clay Golem"),
|
||||
body: RandomWith("claygolem"),
|
||||
alignment: Alignment(Enemy),
|
||||
loot: LootTable("common.loot_tables.dungeon.haniwa.boss"),
|
||||
loot: LootTable("common.loot_tables.dungeon.haniwa.claygolem"),
|
||||
inventory: (
|
||||
loadout: FromBody,
|
||||
),
|
@ -3,7 +3,7 @@
|
||||
name: Automatic,
|
||||
body: RandomWith("cyclops"),
|
||||
alignment: Alignment(Enemy),
|
||||
loot: LootTable("common.loot_tables.dungeon.myrmidon.miniboss"),
|
||||
loot: LootTable("common.loot_tables.creature.biped_large.cyclops"),
|
||||
inventory: (
|
||||
loadout: FromBody,
|
||||
),
|
@ -3,7 +3,7 @@
|
||||
name: Name("Minotaur"),
|
||||
body: RandomWith("minotaur"),
|
||||
alignment: Alignment(Enemy),
|
||||
loot: LootTable("common.loot_tables.dungeon.myrmidon.boss"),
|
||||
loot: LootTable("common.loot_tables.dungeon.myrmidon.minotaur"),
|
||||
inventory: (
|
||||
loadout: FromBody,
|
||||
),
|
@ -3,7 +3,7 @@
|
||||
name: Name("Tidal Warrior"),
|
||||
body: RandomWith("tidalwarrior"),
|
||||
alignment: Alignment(Enemy),
|
||||
loot: LootTable("common.loot_tables.dungeon.sahagin.boss"),
|
||||
loot: LootTable("common.loot_tables.dungeon.sahagin.tidalwarrior"),
|
||||
inventory: (
|
||||
loadout: FromBody,
|
||||
),
|
@ -1,11 +1,6 @@
|
||||
[
|
||||
// Necklaces
|
||||
(0.25, Item("common.items.armor.misc.neck.gem_of_resilience")),
|
||||
(0.05, Item("common.items.armor.misc.neck.gold")),
|
||||
// Materials
|
||||
(4.0, LootTable("common.loot_tables.materials.underground")),
|
||||
// Ring
|
||||
(0.05, Item("common.items.armor.misc.ring.gold")),
|
||||
// Lantern
|
||||
(0.1, Item("common.items.lantern.geode_purp")),
|
||||
// Weapons
|
||||
|
@ -1,9 +1,9 @@
|
||||
[
|
||||
(1, All([
|
||||
(1.9, All([
|
||||
Item("common.items.crafting_ing.animal_misc.grim_eyeball"),
|
||||
MultiDrop(Item("common.items.mineral.ingot.iron"), 5, 10),
|
||||
MultiDrop(Item("common.items.utility.coins"), 200, 500),
|
||||
LootTable("common.loot_tables.dungeon.myrmidon.miniboss"),
|
||||
MultiDrop(Item("common.items.mineral.ingot.iron"), 5, 10),
|
||||
],
|
||||
)),
|
||||
(0.1, Item("common.items.weapons.hammer.mjolnir")),
|
||||
]
|
@ -1,8 +1,9 @@
|
||||
[
|
||||
(1, All([
|
||||
MultiDrop(Item("common.items.utility.coins"), 200, 500),
|
||||
LootTable("common.loot_tables.dungeon.myrmidon.miniboss"),
|
||||
MultiDrop(LootTable("common.loot_tables.gliders"), 0, 1),
|
||||
],
|
||||
)),
|
||||
(1.8, All([
|
||||
MultiDrop(Item("common.items.utility.coins"), 200, 500),
|
||||
MultiDrop(Item("common.items.mineral.ingot.bloodsteel"), 2, 4),
|
||||
MultiDrop(Item("common.items.mineral.ingot.silver"), 0, 2),
|
||||
])),
|
||||
(0.1, Item("common.items.glider.morpho")),
|
||||
(0.1, Item("common.items.weapons.sword.caladbolg")),
|
||||
]
|
@ -1,4 +1,7 @@
|
||||
[
|
||||
(0.1, Item("common.items.food.meat.bird_large_raw")),
|
||||
(1.0, Item("common.items.crafting_ing.animal_misc.phoenix_feather")),
|
||||
(1.8, All([
|
||||
MultiDrop(Item("common.items.food.meat.bird_large_raw"), 3, 4),
|
||||
MultiDrop(Item("common.items.crafting_ing.animal_misc.phoenix_feather"), 1, 3),
|
||||
],
|
||||
)),
|
||||
]
|
@ -1,9 +0,0 @@
|
||||
[
|
||||
(1, All([
|
||||
MultiDrop(LootTable("common.loot_tables.weapons.tier-3"), 0, 1),
|
||||
MultiDrop(LootTable("common.loot_tables.armor.tier-3"), 0, 1),
|
||||
MultiDrop(Item("common.items.armor.misc.head.bear_bonnet"), 0, 1),
|
||||
MultiDrop(Item("common.items.armor.misc.head.howl_cowl"), 0, 1),
|
||||
],
|
||||
)),
|
||||
]
|
@ -1,6 +1,8 @@
|
||||
[
|
||||
(1, All([
|
||||
Item("common.items.keys.bone_key"),
|
||||
MultiDrop(Item("common.items.crafting_ing.animal_misc.fur"), 1, 2),
|
||||
MultiDrop(Item("common.items.crafting_ing.leather.thick_leather"), 1, 2),
|
||||
LootTable("common.loot_tables.dungeon.adlet.elder_extra"),
|
||||
],
|
||||
)),
|
||||
|
10
assets/common/loot_tables/dungeon/adlet/yeti.ron
Normal file
10
assets/common/loot_tables/dungeon/adlet/yeti.ron
Normal file
@ -0,0 +1,10 @@
|
||||
[
|
||||
(1.6, All([
|
||||
MultiDrop(Item("common.items.food.meat.beast_large_raw"), 2, 6),
|
||||
MultiDrop(Item("common.items.crafting_ing.hide.rugged_hide"), 1, 3),
|
||||
MultiDrop(Item("common.items.crafting_ing.animal_misc.sharp_fang"), 2, 4),
|
||||
MultiDrop(Item("common.items.crafting_ing.animal_misc.icy_fang"), 2, 6),
|
||||
])),
|
||||
(0.2, Item("common.items.armor.misc.head.bear_bonnet")),
|
||||
(0.2, Item("common.items.armor.misc.head.howl_cowl")),
|
||||
]
|
@ -1,6 +1,4 @@
|
||||
[
|
||||
// TODO: Make this loot table less cluttered
|
||||
// tier equipment (technically worse than other weapons here until modular weapons)
|
||||
(5.0, LootTable("common.loot_tables.weapons.cultist")),
|
||||
(5.0, LootTable("common.loot_tables.weapons.cave")),
|
||||
(10.0, LootTable("common.loot_tables.armor.cultist")),
|
||||
@ -9,7 +7,7 @@
|
||||
(1.0, Item("common.items.glider.skullgrin")),
|
||||
(0.01, Item("common.items.armor.misc.neck.ankh_of_life")),
|
||||
// Legendary weapons
|
||||
(1.0, LootTable("common.loot_tables.weapons.legendary_ranged")),
|
||||
(1.0, Item("common.items.weapons.staff.laevateinn")),
|
||||
// Crafting material
|
||||
// Allow for Eldwood to drop till entity droppers are implemented
|
||||
(1.0, Item("common.items.crafting_ing.mindflayer_bag_damaged")),
|
@ -1,10 +1,13 @@
|
||||
[
|
||||
(1, All([
|
||||
(1.9, All([
|
||||
Item("common.items.keys.quarry_keys.cyclops_eye"),
|
||||
LootTable("common.loot_tables.dungeon.dwarven_quarry.t4"),
|
||||
MultiDrop(LootTable("common.loot_tables.dungeon.dwarven_quarry.t4-mats"), 1, 3),
|
||||
MultiDrop(Item("common.items.utility.coins"), 200, 500),
|
||||
LootTable("common.loot_tables.dungeon.myrmidon.boss"),
|
||||
MultiDrop(Item("common.items.mineral.ingot.iron"), 5, 10),
|
||||
],
|
||||
)),
|
||||
(0.1, All([
|
||||
Item("common.items.keys.quarry_keys.cyclops_eye"),
|
||||
Item("common.items.weapons.hammer.mjolnir"),
|
||||
],
|
||||
)),
|
||||
]
|
@ -1,10 +1,20 @@
|
||||
[
|
||||
(1, All([
|
||||
Item("common.items.keys.quarry_keys.ancient"),
|
||||
LootTable("common.loot_tables.dungeon.dwarven_quarry.t4"),
|
||||
MultiDrop(LootTable("common.loot_tables.dungeon.dwarven_quarry.t4-mats"), 1, 3),
|
||||
MultiDrop(Item("common.items.utility.coins"), 200, 500),
|
||||
LootTable("common.loot_tables.dungeon.myrmidon.boss"),
|
||||
],
|
||||
(1.7, All([
|
||||
Item("common.items.keys.quarry_keys.ancient"),
|
||||
// coins are temporary placeholder for unique drops
|
||||
MultiDrop(Item("common.items.utility.coins"), 200, 500),
|
||||
MultiDrop(Item("common.items.log.eldwood"), 2, 6),
|
||||
],
|
||||
)),
|
||||
(0.1, All([
|
||||
Item("common.items.keys.quarry_keys.ancient"),
|
||||
Item("common.items.weapons.axe.parashu"),
|
||||
],
|
||||
)),
|
||||
(0.2, All([
|
||||
Item("common.items.keys.quarry_keys.ancient"),
|
||||
Item("common.items.armor.misc.neck.carcanet_of_wrath"),
|
||||
],
|
||||
)),
|
||||
|
||||
]
|
@ -9,8 +9,4 @@
|
||||
(3.0, Item("common.items.armor.misc.head.bamboo_twig")),
|
||||
// Chieftain Mask
|
||||
(1.0, Item("common.items.armor.misc.head.gnarling_mask")),
|
||||
// Indirect crafting materials for T2 gear
|
||||
(1.0, MultiDrop(Item("common.items.crafting_ing.sticky_thread"), 2, 5)),
|
||||
(1.0, MultiDrop(Item("common.items.mineral.ore.coal"), 2, 5)),
|
||||
(1.0, MultiDrop(Item("common.items.crafting_ing.leather.leather_strips"), 2, 5)),
|
||||
]
|
@ -6,4 +6,5 @@
|
||||
// Misc
|
||||
(3.0, Item("common.items.armor.misc.neck.scratched")),
|
||||
(2.0, Item("common.items.lantern.pumpkin")),
|
||||
(1.0, Item("common.items.glider.moth")),
|
||||
]
|
@ -1,12 +0,0 @@
|
||||
[
|
||||
// Armor
|
||||
(10.0, LootTable("common.loot_tables.weapons.tier-5")),
|
||||
(10.0, LootTable("common.loot_tables.armor.tier-5")),
|
||||
// Misc
|
||||
(1.0, Item("common.items.armor.misc.neck.carcanet_of_wrath")),
|
||||
// Legendary weapons
|
||||
(1.0, LootTable("common.loot_tables.weapons.legendary_melee")),
|
||||
// Crafting material
|
||||
// Allow for Eldwood to drop till entity droppers are implemented
|
||||
(1.0, MultiDrop(Item("common.items.log.eldwood"), 2, 6)),
|
||||
]
|
@ -2,8 +2,6 @@
|
||||
// Armor
|
||||
(2.0, LootTable("common.loot_tables.weapons.tier-5")),
|
||||
(2.0, LootTable("common.loot_tables.armor.tier-5")),
|
||||
// Food
|
||||
(5.0, LootTable("common.loot_tables.food.prepared")),
|
||||
// Consumables
|
||||
(5.0, MultiDrop(Item("common.items.consumable.potion_minor"), 4, 8)),
|
||||
// lantern
|
||||
|
10
assets/common/loot_tables/dungeon/myrmidon/minotaur.ron
Normal file
10
assets/common/loot_tables/dungeon/myrmidon/minotaur.ron
Normal file
@ -0,0 +1,10 @@
|
||||
[
|
||||
(1.7, All([
|
||||
// coins are temporary placeholder for unique drops
|
||||
MultiDrop(Item("common.items.utility.coins"), 200, 500),
|
||||
MultiDrop(Item("common.items.log.eldwood"), 2, 6),
|
||||
],
|
||||
)),
|
||||
(0.1, Item("common.items.weapons.axe.parashu")),
|
||||
(0.2, Item("common.items.armor.misc.neck.carcanet_of_wrath")),
|
||||
]
|
@ -1,10 +0,0 @@
|
||||
[
|
||||
// Weapons
|
||||
(5.0, LootTable("common.loot_tables.weapons.tier-3")),
|
||||
// Armor
|
||||
(5.0, LootTable("common.loot_tables.armor.tier-3")),
|
||||
// Misc
|
||||
(2.0, Item("common.items.armor.misc.neck.gem_of_resilience")),
|
||||
// Special Loot
|
||||
(0.5, Item("common.items.glider.moonrise")),
|
||||
]
|
@ -0,0 +1,9 @@
|
||||
[
|
||||
// Weapons
|
||||
(4.0, LootTable("common.loot_tables.weapons.tier-3")),
|
||||
// Armor
|
||||
(4.5, LootTable("common.loot_tables.armor.tier-3")),
|
||||
// Special
|
||||
(1.0, Item("common.items.armor.misc.neck.gem_of_resilience")),
|
||||
(0.5, Item("common.items.glider.moonrise")),
|
||||
]
|
@ -1,6 +1,7 @@
|
||||
[
|
||||
(3.0, Item("common.items.crafting_ing.abyssal_heart")),
|
||||
(2.5, Item("common.items.crafting_ing.abyssal_heart")),
|
||||
(3.0, MultiDrop(Item("common.items.crafting_ing.pearl"), 3, 5)),
|
||||
(3.0, MultiDrop(Item("common.items.crafting_ing.brinestone"), 3, 6)),
|
||||
(1.0, Item("common.items.armor.misc.bag.heavy_seabag")),
|
||||
(0.5, Item("common.items.weapons.sceptre.caduceus")),
|
||||
]
|
@ -1,6 +0,0 @@
|
||||
[
|
||||
(0.1, Item("common.items.glider.blue")),
|
||||
(0.05, Item("common.items.glider.morpho")),
|
||||
(0.05, Item("common.items.glider.monarch")),
|
||||
(0.05, Item("common.items.glider.moth")),
|
||||
]
|
@ -1170,12 +1170,6 @@ mod tests {
|
||||
let lootsum3 = loot3.iter().fold(0.0, |s, i| s + i.0);
|
||||
//tracing::trace!("{:?} {}", loot3, lootsum3);
|
||||
assert!((lootsum3 - 1.0).abs() < 1e-5);
|
||||
|
||||
// includes tier-5 modular weapons
|
||||
let loot4 = expand_loot_table("common.loot_tables.dungeon.myrmidon.boss");
|
||||
let lootsum4 = loot4.iter().fold(0.0, |s, i| s + i.0);
|
||||
//tracing::trace!("{:?} {}", loot4, lootsum4);
|
||||
assert!((lootsum4 - 1.0).abs() < 1e-5);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -783,14 +783,14 @@ fn turret_5(dynamic_rng: &mut impl Rng, pos: Vec3<f32>) -> EntityInfo {
|
||||
fn boss_2(dynamic_rng: &mut impl Rng, tile_wcenter: Vec3<i32>) -> Vec<EntityInfo> {
|
||||
vec![
|
||||
EntityInfo::at(tile_wcenter.map(|e| e as f32))
|
||||
.with_asset_expect("common.entity.dungeon.sahagin.boss", dynamic_rng),
|
||||
.with_asset_expect("common.entity.dungeon.sahagin.tidalwarrior", dynamic_rng),
|
||||
]
|
||||
}
|
||||
fn boss_3(dynamic_rng: &mut impl Rng, tile_wcenter: Vec3<i32>) -> Vec<EntityInfo> {
|
||||
let mut entities = Vec::new();
|
||||
entities.resize_with(2, || {
|
||||
EntityInfo::at(tile_wcenter.map(|e| e as f32))
|
||||
.with_asset_expect("common.entity.dungeon.haniwa.boss", dynamic_rng)
|
||||
.with_asset_expect("common.entity.dungeon.haniwa.claygolem", dynamic_rng)
|
||||
});
|
||||
|
||||
entities
|
||||
@ -799,14 +799,14 @@ fn boss_3(dynamic_rng: &mut impl Rng, tile_wcenter: Vec3<i32>) -> Vec<EntityInfo
|
||||
fn boss_4(dynamic_rng: &mut impl Rng, tile_wcenter: Vec3<i32>) -> Vec<EntityInfo> {
|
||||
vec![
|
||||
EntityInfo::at(tile_wcenter.map(|e| e as f32))
|
||||
.with_asset_expect("common.entity.dungeon.myrmidon.boss", dynamic_rng),
|
||||
.with_asset_expect("common.entity.dungeon.myrmidon.minotaur", dynamic_rng),
|
||||
]
|
||||
}
|
||||
|
||||
fn boss_5(dynamic_rng: &mut impl Rng, tile_wcenter: Vec3<i32>) -> Vec<EntityInfo> {
|
||||
vec![
|
||||
EntityInfo::at(tile_wcenter.map(|e| e as f32))
|
||||
.with_asset_expect("common.entity.dungeon.cultist.boss", dynamic_rng),
|
||||
.with_asset_expect("common.entity.dungeon.cultist.mindflayer", dynamic_rng),
|
||||
]
|
||||
}
|
||||
|
||||
@ -838,7 +838,7 @@ fn mini_boss_3(dynamic_rng: &mut impl Rng, tile_wcenter: Vec3<i32>) -> Vec<Entit
|
||||
fn mini_boss_4(dynamic_rng: &mut impl Rng, tile_wcenter: Vec3<i32>) -> Vec<EntityInfo> {
|
||||
vec![
|
||||
EntityInfo::at(tile_wcenter.map(|e| e as f32))
|
||||
.with_asset_expect("common.entity.dungeon.myrmidon.miniboss", dynamic_rng),
|
||||
.with_asset_expect("common.entity.dungeon.myrmidon.cyclops", dynamic_rng),
|
||||
]
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user