Merge branch 'juliancoffee/new_travelers' into 'master'

New travelers

See merge request veloren/veloren!3180
This commit is contained in:
Samuel Keiffer 2022-02-08 20:52:45 +00:00
commit c946e945cf
31 changed files with 610 additions and 49 deletions

View File

@ -45,6 +45,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Generate random name for site2 sites
- Shader dithering to remove banding from scenes with large colour gradients
- Convert giant trees to site2
- Add new upgraded travelers
### Changed

View File

@ -1,19 +0,0 @@
(
name: Automatic,
body: RandomWith("humanoid"),
alignment: Alignment(Npc),
loadout: Extended(
hands: TwoHanded(Choice([
(1, Some(Item("common.items.weapons.sword.iron-0"))),
(1, Some(Item("common.items.weapons.bow.hardwood-2"))),
(1, Some(Item("common.items.weapons.axe.steel_axe-0"))),
(1, Some(Item("common.items.weapons.staff.frostwood_torch"))),
])),
base_asset: Loadout("common.loadout.world.traveler"),
inventory: [],
),
loot: LootTable("common.loot_tables.creature.humanoid"),
meta: [
SkillSetAsset("common.skillset.preset.rank5.fullskill"),
],
)

View File

@ -0,0 +1,27 @@
(
name: Name("Greenhorn Traveler"),
body: RandomWith("humanoid"),
alignment: Alignment(Npc),
loadout: Extended(
hands: TwoHanded(Choice([
(1.0, Some(Item("common.items.weapons.sword.bronze-0"))),
(1.0, Some(Item("common.items.weapons.axe.bronze_axe-0"))),
(1.0, Some(Item("common.items.weapons.hammer.bronze_hammer-0"))),
(1.0, Some(Item("common.items.weapons.bow.bone-0"))),
(1.0, Some(Item("common.items.weapons.staff.fiery_wishing_rod"))),
(1.0, Some(Item("common.items.weapons.sceptre.root_green0"))),
])),
base_asset: Choice([
(1, "common.loadout.world.traveler0.bronze"),
(1, "common.loadout.world.traveler0.linen"),
(1, "common.loadout.world.traveler0.rawhide"),
]),
inventory: [
(5, "common.items.consumable.potion_minor"),
],
),
loot: LootTable("common.loot_tables.world.traveler0"),
meta: [
SkillSetAsset("common.skillset.preset.rank1.fullskill"),
],
)

View File

@ -0,0 +1,27 @@
(
name: Name("Traveler"),
body: RandomWith("humanoid"),
alignment: Alignment(Npc),
loadout: Extended(
hands: TwoHanded(Choice([
(1.0, Some(Item("common.items.weapons.sword.iron-0"))),
(1.0, Some(Item("common.items.weapons.axe.iron_axe-0"))),
(1.0, Some(Item("common.items.weapons.hammer.iron_hammer-0"))),
(1.0, Some(Item("common.items.weapons.bow.hardwood-0"))),
(1.0, Some(Item("common.items.weapons.staff.heated_arm"))),
(1.0, Some(Item("common.items.weapons.sceptre.staff_nature"))),
])),
base_asset: Choice([
(1, "common.loadout.world.traveler1.iron"),
(1, "common.loadout.world.traveler1.leather"),
(1, "common.loadout.world.traveler1.wool"),
]),
inventory: [
(25, "common.items.consumable.potion_minor"),
],
),
loot: LootTable("common.loot_tables.world.traveler1"),
meta: [
SkillSetAsset("common.skillset.preset.rank2.fullskill"),
],
)

View File

@ -0,0 +1,38 @@
(
name: Name("Well-versed Traveler"),
body: RandomWith("humanoid"),
alignment: Alignment(Npc),
loadout: Extended(
hands: TwoHanded(Choice([
// T3
(1.0, Some(Item("common.items.weapons.sword.steel-0"))),
(1.0, Some(Item("common.items.weapons.axe.steel_axe-0"))),
(1.0, Some(Item("common.items.weapons.hammer.steel_hammer-0"))),
(1.0, Some(Item("common.items.weapons.bow.metal-0"))),
(1.0, Some(Item("common.items.weapons.staff.golden_khakkara"))),
(1.0, Some(Item("common.items.weapons.sceptre.totem_green"))),
// T4
(1.0, Some(Item("common.items.weapons.sword.cobalt-0"))),
(1.0, Some(Item("common.items.weapons.axe.cobalt_axe-0"))),
(1.0, Some(Item("common.items.weapons.hammer.cobalt_hammer-0"))),
(1.0, Some(Item("common.items.weapons.bow.frostwood-0"))),
(1.0, Some(Item("common.items.weapons.staff.aurora"))),
(1.0, Some(Item("common.items.weapons.sceptre.loops0"))),
])),
base_asset: Choice([
(1, "common.loadout.world.traveler2.steel"),
(1, "common.loadout.world.traveler2.silk"),
(1, "common.loadout.world.traveler2.scale"),
(1, "common.loadout.world.traveler2.cobalt"),
(1, "common.loadout.world.traveler2.druid"),
(1, "common.loadout.world.traveler2.carapace"),
]),
inventory: [
(50, "common.items.consumable.potion_med"),
],
),
loot: LootTable("common.loot_tables.world.traveler2"),
meta: [
SkillSetAsset("common.skillset.preset.rank3.fullskill"),
],
)

View File

@ -0,0 +1,40 @@
(
name: Name("Experienced Traveler"),
body: RandomWith("humanoid"),
alignment: Alignment(Npc),
loadout: Extended(
hands: TwoHanded(Choice([
// T5
(1.0, Some(Item("common.items.weapons.sword.bloodsteel-0"))),
(1.0, Some(Item("common.items.weapons.axe.bloodsteel_axe-0"))),
(1.0, Some(Item("common.items.weapons.hammer.runic_hammer"))),
(1.0, Some(Item("common.items.weapons.bow.eldwood-0"))),
(1.0, Some(Item("common.items.weapons.staff.ruby_rod"))),
(1.0, Some(Item("common.items.weapons.sceptre.emerald"))),
// legendary
(1.0, Some(Item("common.items.weapons.sword.caladbolg"))),
(1.0, Some(Item("common.items.weapons.hammer.mjolnir"))),
(1.0, Some(Item("common.items.weapons.axe.parashu"))),
(1.0, Some(Item("common.items.weapons.bow.sagitta"))),
(0.5, Some(Item("common.items.weapons.staff.phoenix"))),
(0.5, Some(Item("common.items.weapons.staff.laevateinn"))),
(0.5, Some(Item("common.items.weapons.sceptre.root_evil"))),
(0.5, Some(Item("common.items.weapons.sceptre.caduceus"))),
])),
base_asset: Choice([
(1, "common.loadout.world.traveler3.bloodsteel"),
(1, "common.loadout.world.traveler3.moonweave"),
(1, "common.loadout.world.traveler3.primal"),
(1, "common.loadout.world.traveler3.orichalcum"),
(1, "common.loadout.world.traveler3.sunsilk"),
(1, "common.loadout.world.traveler3.dragonscale"),
]),
inventory: [
(50, "common.items.consumable.potion_big"),
],
),
loot: LootTable("common.loot_tables.world.traveler3"),
meta: [
SkillSetAsset("common.skillset.preset.rank5.fullskill"),
],
)

View File

@ -0,0 +1,17 @@
({
Armor(Chest): Item("common.items.armor.mail.bronze.chest"),
Armor(Legs): Item("common.items.armor.mail.bronze.pants"),
Armor(Shoulders): Item("common.items.armor.mail.bronze.shoulder"),
Armor(Hands): Item("common.items.armor.mail.bronze.hand"),
Armor(Feet): Item("common.items.armor.mail.bronze.foot"),
Armor(Belt): Item("common.items.armor.mail.bronze.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.mail.bronze.back"))),
(1.0, None),
]),
Lantern: Choice([
(1.0, Some(Item("common.items.lantern.black_0"))),
]),
})

View File

@ -0,0 +1,17 @@
({
Armor(Chest): Item("common.items.armor.cloth.linen.chest"),
Armor(Legs): Item("common.items.armor.cloth.linen.pants"),
Armor(Shoulders): Item("common.items.armor.cloth.linen.shoulder"),
Armor(Hands): Item("common.items.armor.cloth.linen.hand"),
Armor(Feet): Item("common.items.armor.cloth.linen.foot"),
Armor(Belt): Item("common.items.armor.cloth.linen.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.cloth.linen.back"))),
(1.0, None),
]),
Lantern: Choice([
(1.0, Some(Item("common.items.lantern.black_0"))),
]),
})

View File

@ -0,0 +1,17 @@
({
Armor(Chest): Item("common.items.armor.hide.rawhide.chest"),
Armor(Legs): Item("common.items.armor.hide.rawhide.pants"),
Armor(Shoulders): Item("common.items.armor.hide.rawhide.shoulder"),
Armor(Hands): Item("common.items.armor.hide.rawhide.hand"),
Armor(Feet): Item("common.items.armor.hide.rawhide.foot"),
Armor(Belt): Item("common.items.armor.hide.rawhide.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.hide.rawhide.back"))),
(1.0, None),
]),
Lantern: Choice([
(1.0, Some(Item("common.items.lantern.black_0"))),
]),
})

View File

@ -0,0 +1,22 @@
({
Armor(Chest): Item("common.items.armor.mail.iron.chest"),
Armor(Legs): Item("common.items.armor.mail.iron.pants"),
Armor(Shoulders): Item("common.items.armor.mail.iron.shoulder"),
Armor(Hands): Item("common.items.armor.mail.iron.hand"),
Armor(Feet): Item("common.items.armor.mail.iron.foot"),
Armor(Belt): Item("common.items.armor.mail.iron.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.misc.back.backpack"))),
(1.0, Some(Item("common.items.npc_armor.back.backpack_blue"))),
(1.0, Some(Item("common.items.armor.mail.iron.back"))),
(1.0, None),
]),
Lantern: Choice([
(1.0, Some(Item("common.items.lantern.black_0"))),
(1.0, Some(Item("common.items.lantern.blue_0"))),
(1.0, Some(Item("common.items.lantern.green_0"))),
(1.0, Some(Item("common.items.lantern.red_0"))),
]),
})

View File

@ -1,14 +1,15 @@
({
Armor(Chest): Item("common.items.npc_armor.chest.leather_blue"),
Armor(Legs): Item("common.items.npc_armor.pants.leather_blue"),
Armor(Chest): Item("common.items.armor.hide.leather.chest"),
Armor(Legs): Item("common.items.armor.hide.leather.pants"),
Armor(Shoulders): Item("common.items.armor.hide.leather.shoulder"),
Armor(Hands): Item("common.items.armor.hide.leather.hand"),
Armor(Feet): Item("common.items.armor.hide.leather.foot"),
Armor(Belt): Item("common.items.armor.hide.leather.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.hide.rawhide.back"))),
(1.0, Some(Item("common.items.armor.misc.back.backpack"))),
(1.0, Some(Item("common.items.npc_armor.back.backpack_blue"))),
(1.0, Some(Item("common.items.npc_armor.back.leather_blue"))),
(1.0, Some(Item("common.items.armor.hide.leather.back"))),
(1.0, None),
]),

View File

@ -0,0 +1,22 @@
({
Armor(Chest): Item("common.items.armor.cloth.woolen.chest"),
Armor(Legs): Item("common.items.armor.cloth.woolen.pants"),
Armor(Shoulders): Item("common.items.armor.cloth.woolen.shoulder"),
Armor(Hands): Item("common.items.armor.cloth.woolen.hand"),
Armor(Feet): Item("common.items.armor.cloth.woolen.foot"),
Armor(Belt): Item("common.items.armor.cloth.woolen.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.misc.back.backpack"))),
(1.0, Some(Item("common.items.npc_armor.back.backpack_blue"))),
(1.0, Some(Item("common.items.armor.cloth.woolen.back"))),
(1.0, None),
]),
Lantern: Choice([
(1.0, Some(Item("common.items.lantern.black_0"))),
(1.0, Some(Item("common.items.lantern.blue_0"))),
(1.0, Some(Item("common.items.lantern.green_0"))),
(1.0, Some(Item("common.items.lantern.red_0"))),
]),
})

View File

@ -0,0 +1,22 @@
({
Armor(Chest): Item("common.items.armor.hide.carapace.chest"),
Armor(Legs): Item("common.items.armor.hide.carapace.pants"),
Armor(Shoulders): Item("common.items.armor.hide.carapace.shoulder"),
Armor(Hands): Item("common.items.armor.hide.carapace.hand"),
Armor(Feet): Item("common.items.armor.hide.carapace.foot"),
Armor(Belt): Item("common.items.armor.hide.carapace.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.misc.back.backpack"))),
(1.0, Some(Item("common.items.npc_armor.back.backpack_blue"))),
(1.0, Some(Item("common.items.armor.hide.carapace.back"))),
(1.0, None),
]),
Lantern: Choice([
(1.0, Some(Item("common.items.lantern.black_0"))),
(1.0, Some(Item("common.items.lantern.blue_0"))),
(1.0, Some(Item("common.items.lantern.green_0"))),
(1.0, Some(Item("common.items.lantern.geode_purp"))),
]),
})

View File

@ -0,0 +1,22 @@
({
Armor(Chest): Item("common.items.armor.mail.cobalt.chest"),
Armor(Legs): Item("common.items.armor.mail.cobalt.pants"),
Armor(Shoulders): Item("common.items.armor.mail.cobalt.shoulder"),
Armor(Hands): Item("common.items.armor.mail.cobalt.hand"),
Armor(Feet): Item("common.items.armor.mail.cobalt.foot"),
Armor(Belt): Item("common.items.armor.mail.cobalt.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.misc.back.backpack"))),
(1.0, Some(Item("common.items.npc_armor.back.backpack_blue"))),
(1.0, Some(Item("common.items.armor.mail.cobalt.back"))),
(1.0, None),
]),
Lantern: Choice([
(1.0, Some(Item("common.items.lantern.black_0"))),
(1.0, Some(Item("common.items.lantern.blue_0"))),
(1.0, Some(Item("common.items.lantern.green_0"))),
(1.0, Some(Item("common.items.lantern.geode_purp"))),
]),
})

View File

@ -0,0 +1,22 @@
({
Armor(Chest): Item("common.items.armor.cloth.druid.chest"),
Armor(Legs): Item("common.items.armor.cloth.druid.pants"),
Armor(Shoulders): Item("common.items.armor.cloth.druid.shoulder"),
Armor(Hands): Item("common.items.armor.cloth.druid.hand"),
Armor(Feet): Item("common.items.armor.cloth.druid.foot"),
Armor(Belt): Item("common.items.armor.cloth.druid.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.misc.back.backpack"))),
(1.0, Some(Item("common.items.npc_armor.back.backpack_blue"))),
(1.0, Some(Item("common.items.armor.cloth.druid.back"))),
(1.0, None),
]),
Lantern: Choice([
(1.0, Some(Item("common.items.lantern.black_0"))),
(1.0, Some(Item("common.items.lantern.blue_0"))),
(1.0, Some(Item("common.items.lantern.green_0"))),
(1.0, Some(Item("common.items.lantern.geode_purp"))),
]),
})

View File

@ -0,0 +1,22 @@
({
Armor(Chest): Item("common.items.armor.hide.scale.chest"),
Armor(Legs): Item("common.items.armor.hide.scale.pants"),
Armor(Shoulders): Item("common.items.armor.hide.scale.shoulder"),
Armor(Hands): Item("common.items.armor.hide.scale.hand"),
Armor(Feet): Item("common.items.armor.hide.scale.foot"),
Armor(Belt): Item("common.items.armor.hide.scale.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.misc.back.backpack"))),
(1.0, Some(Item("common.items.npc_armor.back.backpack_blue"))),
(1.0, Some(Item("common.items.armor.hide.scale.back"))),
(1.0, None),
]),
Lantern: Choice([
(1.0, Some(Item("common.items.lantern.black_0"))),
(1.0, Some(Item("common.items.lantern.blue_0"))),
(1.0, Some(Item("common.items.lantern.green_0"))),
(1.0, Some(Item("common.items.lantern.geode_purp"))),
]),
})

View File

@ -0,0 +1,22 @@
({
Armor(Chest): Item("common.items.armor.cloth.silken.chest"),
Armor(Legs): Item("common.items.armor.cloth.silken.pants"),
Armor(Shoulders): Item("common.items.armor.cloth.silken.shoulder"),
Armor(Hands): Item("common.items.armor.cloth.silken.hand"),
Armor(Feet): Item("common.items.armor.cloth.silken.foot"),
Armor(Belt): Item("common.items.armor.cloth.silken.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.misc.back.backpack"))),
(1.0, Some(Item("common.items.npc_armor.back.backpack_blue"))),
(1.0, Some(Item("common.items.armor.cloth.silken.back"))),
(1.0, None),
]),
Lantern: Choice([
(1.0, Some(Item("common.items.lantern.black_0"))),
(1.0, Some(Item("common.items.lantern.blue_0"))),
(1.0, Some(Item("common.items.lantern.green_0"))),
(1.0, Some(Item("common.items.lantern.geode_purp"))),
]),
})

View File

@ -0,0 +1,22 @@
({
Armor(Chest): Item("common.items.armor.mail.steel.chest"),
Armor(Legs): Item("common.items.armor.mail.steel.pants"),
Armor(Shoulders): Item("common.items.armor.mail.steel.shoulder"),
Armor(Hands): Item("common.items.armor.mail.steel.hand"),
Armor(Feet): Item("common.items.armor.mail.steel.foot"),
Armor(Belt): Item("common.items.armor.mail.steel.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.misc.back.backpack"))),
(1.0, Some(Item("common.items.npc_armor.back.backpack_blue"))),
(1.0, Some(Item("common.items.armor.mail.steel.back"))),
(1.0, None),
]),
Lantern: Choice([
(1.0, Some(Item("common.items.lantern.black_0"))),
(1.0, Some(Item("common.items.lantern.blue_0"))),
(1.0, Some(Item("common.items.lantern.green_0"))),
(1.0, Some(Item("common.items.lantern.geode_purp"))),
]),
})

View File

@ -0,0 +1,24 @@
({
Armor(Chest): Item("common.items.armor.mail.bloodsteel.chest"),
Armor(Legs): Item("common.items.armor.mail.bloodsteel.pants"),
Armor(Shoulders): Item("common.items.armor.mail.bloodsteel.shoulder"),
Armor(Hands): Item("common.items.armor.mail.bloodsteel.hand"),
Armor(Feet): Item("common.items.armor.mail.bloodsteel.foot"),
Armor(Belt): Item("common.items.armor.mail.bloodsteel.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.misc.back.backpack"))),
(1.0, Some(Item("common.items.npc_armor.back.backpack_blue"))),
(1.0, Some(Item("common.items.armor.mail.bloodsteel.back"))),
(1.0, None),
]),
Lantern: Choice([
(1.0, Some(Item("common.items.lantern.black_0"))),
(1.0, Some(Item("common.items.lantern.blue_0"))),
(1.0, Some(Item("common.items.lantern.green_0"))),
(1.0, Some(Item("common.items.lantern.red_0"))),
(1.0, Some(Item("common.items.lantern.geode_purp"))),
(1.0, Some(Item("common.items.boss_drops.lantern"))),
]),
})

View File

@ -0,0 +1,24 @@
({
Armor(Chest): Item("common.items.armor.hide.dragonscale.chest"),
Armor(Legs): Item("common.items.armor.hide.dragonscale.pants"),
Armor(Shoulders): Item("common.items.armor.hide.dragonscale.shoulder"),
Armor(Hands): Item("common.items.armor.hide.dragonscale.hand"),
Armor(Feet): Item("common.items.armor.hide.dragonscale.foot"),
Armor(Belt): Item("common.items.armor.hide.dragonscale.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.misc.back.backpack"))),
(1.0, Some(Item("common.items.npc_armor.back.backpack_blue"))),
(1.0, Some(Item("common.items.armor.hide.dragonscale.back"))),
(1.0, None),
]),
Lantern: Choice([
(1.0, Some(Item("common.items.lantern.black_0"))),
(1.0, Some(Item("common.items.lantern.blue_0"))),
(1.0, Some(Item("common.items.lantern.green_0"))),
(1.0, Some(Item("common.items.lantern.red_0"))),
(1.0, Some(Item("common.items.lantern.geode_purp"))),
(1.0, Some(Item("common.items.boss_drops.lantern"))),
]),
})

View File

@ -0,0 +1,24 @@
({
Armor(Chest): Item("common.items.armor.cloth.moonweave.chest"),
Armor(Legs): Item("common.items.armor.cloth.moonweave.pants"),
Armor(Shoulders): Item("common.items.armor.cloth.moonweave.shoulder"),
Armor(Hands): Item("common.items.armor.cloth.moonweave.hand"),
Armor(Feet): Item("common.items.armor.cloth.moonweave.foot"),
Armor(Belt): Item("common.items.armor.cloth.moonweave.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.misc.back.backpack"))),
(1.0, Some(Item("common.items.npc_armor.back.backpack_blue"))),
(1.0, Some(Item("common.items.armor.cloth.moonweave.back"))),
(1.0, None),
]),
Lantern: Choice([
(1.0, Some(Item("common.items.lantern.black_0"))),
(1.0, Some(Item("common.items.lantern.blue_0"))),
(1.0, Some(Item("common.items.lantern.green_0"))),
(1.0, Some(Item("common.items.lantern.red_0"))),
(1.0, Some(Item("common.items.lantern.geode_purp"))),
(1.0, Some(Item("common.items.boss_drops.lantern"))),
]),
})

View File

@ -0,0 +1,24 @@
({
Armor(Chest): Item("common.items.armor.mail.orichalcum.chest"),
Armor(Legs): Item("common.items.armor.mail.orichalcum.pants"),
Armor(Shoulders): Item("common.items.armor.mail.orichalcum.shoulder"),
Armor(Hands): Item("common.items.armor.mail.orichalcum.hand"),
Armor(Feet): Item("common.items.armor.mail.orichalcum.foot"),
Armor(Belt): Item("common.items.armor.mail.orichalcum.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.misc.back.backpack"))),
(1.0, Some(Item("common.items.npc_armor.back.backpack_blue"))),
(1.0, Some(Item("common.items.armor.mail.orichalcum.back"))),
(1.0, None),
]),
Lantern: Choice([
(1.0, Some(Item("common.items.lantern.black_0"))),
(1.0, Some(Item("common.items.lantern.blue_0"))),
(1.0, Some(Item("common.items.lantern.green_0"))),
(1.0, Some(Item("common.items.lantern.red_0"))),
(1.0, Some(Item("common.items.lantern.geode_purp"))),
(1.0, Some(Item("common.items.boss_drops.lantern"))),
]),
})

View File

@ -0,0 +1,24 @@
({
Armor(Chest): Item("common.items.armor.hide.primal.chest"),
Armor(Legs): Item("common.items.armor.hide.primal.pants"),
Armor(Shoulders): Item("common.items.armor.hide.primal.shoulder"),
Armor(Hands): Item("common.items.armor.hide.primal.hand"),
Armor(Feet): Item("common.items.armor.hide.primal.foot"),
Armor(Belt): Item("common.items.armor.hide.primal.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.misc.back.backpack"))),
(1.0, Some(Item("common.items.npc_armor.back.backpack_blue"))),
(1.0, Some(Item("common.items.armor.hide.primal.back"))),
(1.0, None),
]),
Lantern: Choice([
(1.0, Some(Item("common.items.lantern.black_0"))),
(1.0, Some(Item("common.items.lantern.blue_0"))),
(1.0, Some(Item("common.items.lantern.green_0"))),
(1.0, Some(Item("common.items.lantern.red_0"))),
(1.0, Some(Item("common.items.lantern.geode_purp"))),
(1.0, Some(Item("common.items.boss_drops.lantern"))),
]),
})

View File

@ -0,0 +1,24 @@
({
Armor(Chest): Item("common.items.armor.cloth.sunsilk.chest"),
Armor(Legs): Item("common.items.armor.cloth.sunsilk.pants"),
Armor(Shoulders): Item("common.items.armor.cloth.sunsilk.shoulder"),
Armor(Hands): Item("common.items.armor.cloth.sunsilk.hand"),
Armor(Feet): Item("common.items.armor.cloth.sunsilk.foot"),
Armor(Belt): Item("common.items.armor.cloth.sunsilk.belt"),
Armor(Back): Choice([
(1.0, Some(Item("common.items.armor.misc.back.backpack"))),
(1.0, Some(Item("common.items.npc_armor.back.backpack_blue"))),
(1.0, Some(Item("common.items.armor.cloth.sunsilk.back"))),
(1.0, None),
]),
Lantern: Choice([
(1.0, Some(Item("common.items.lantern.black_0"))),
(1.0, Some(Item("common.items.lantern.blue_0"))),
(1.0, Some(Item("common.items.lantern.green_0"))),
(1.0, Some(Item("common.items.lantern.red_0"))),
(1.0, Some(Item("common.items.lantern.geode_purp"))),
(1.0, Some(Item("common.items.boss_drops.lantern"))),
]),
})

View File

@ -4,4 +4,4 @@
(1.0, LootTable("common.loot_tables.weapons.hammer.stone")),
(1.0, LootTable("common.loot_tables.weapons.bow.wood")),
(1.0, LootTable("common.loot_tables.weapons.staff.wood")),
]
]

View File

@ -0,0 +1,8 @@
[
//Currency
(4.0, ItemQuantity("common.items.utility.coins", 50, 200)),
//Food
(4.0, LootTable("common.loot_tables.food.prepared")),
//Flowers, pretty
(2.0, ItemQuantity("common.items.flowers.red", 3, 6)),
]

View File

@ -0,0 +1,13 @@
[
//Currency
(3.0, ItemQuantity("common.items.utility.coins", 50, 200)),
(2.0, ItemQuantity("common.items.utility.coins", 200, 500)),
//Food
(3.0, LootTable("common.loot_tables.food.prepared")),
//Ores
(2.0, ItemQuantity("common.items.mineral.ore.iron", 2, 7)),
//Hides
(2.0, ItemQuantity("common.items.crafting_ing.hide.animal_hide", 5, 15)),
//Flowers, pretty
(2.0, ItemQuantity("common.items.flowers.red", 3, 6)),
]

View File

@ -0,0 +1,19 @@
[
//Currency
(3.0, ItemQuantity("common.items.utility.coins", 200, 500)),
(2.0, ItemQuantity("common.items.utility.coins", 2000, 5000)),
//Food
(3.0, LootTable("common.loot_tables.food.prepared")),
//Ores
(2.0, ItemQuantity("common.items.mineral.ore.coal", 5, 15)),
(2.0, ItemQuantity("common.items.mineral.ore.iron", 2, 7)),
(1.0, ItemQuantity("common.items.mineral.ore.cobalt", 2, 5)),
(0.1, ItemQuantity("common.items.mineral.gem.diamond", 2, 5)),
//Hides
(2.0, ItemQuantity("common.items.crafting_ing.hide.animal_hide", 5, 15)),
(2.0, ItemQuantity("common.items.crafting_ing.hide.scales", 5, 15)),
(1.0, ItemQuantity("common.items.crafting_ing.hide.carapace", 3, 10)),
(1.0, ItemQuantity("common.items.crafting_ing.hide.tough_hide", 3, 10)),
//Flowers, very pretty
(2.0, ItemQuantity("common.items.flowers.red", 5, 10)),
]

View File

@ -0,0 +1,23 @@
[
//Currency
(2.0, ItemQuantity("common.items.utility.coins", 200, 500)),
(1.0, ItemQuantity("common.items.utility.coins", 2000, 5000)),
//Food
(4.0, LootTable("common.loot_tables.food.prepared")),
//Ores
(2.0, ItemQuantity("common.items.mineral.ore.coal", 10, 30)),
(2.0, ItemQuantity("common.items.mineral.ore.iron", 4, 14)),
(1.0, ItemQuantity("common.items.mineral.ore.cobalt", 4, 10)),
(0.1, ItemQuantity("common.items.mineral.gem.diamond", 4, 10)),
//Hides
(2.0, ItemQuantity("common.items.crafting_ing.hide.animal_hide", 10, 30)),
(2.0, ItemQuantity("common.items.crafting_ing.hide.scales", 10, 30)),
(1.0, ItemQuantity("common.items.crafting_ing.hide.carapace", 6, 20)),
(1.0, ItemQuantity("common.items.crafting_ing.hide.tough_hide", 6, 20)),
(0.3, ItemQuantity("common.items.crafting_ing.hide.plate", 1, 8)),
(0.1, ItemQuantity("common.items.crafting_ing.hide.rugged_hide", 1, 6)),
//Flowers, very pretty
(3.0, ItemQuantity("common.items.flowers.red", 10, 20)),
(2.0, ItemQuantity("common.items.flowers.moonbell", 6, 12)),
(1.0, ItemQuantity("common.items.flowers.pyrebloom", 3, 6)),
]

View File

@ -1,9 +1,5 @@
use super::*;
use common::{
comp::inventory::{
loadout_builder::{make_food_bag, make_potion_bag},
slot::ArmorSlot,
},
resources::Time,
rtsim::{Memory, MemoryItem},
store::Id,
@ -31,7 +27,7 @@ pub struct Entity {
#[derive(Clone, Copy, strum::EnumIter)]
pub enum RtSimEntityKind {
Random,
Wanderer,
Cultist,
Villager,
Merchant,
@ -66,7 +62,7 @@ impl Entity {
pub fn get_body(&self) -> comp::Body {
match self.kind {
RtSimEntityKind::Random => {
RtSimEntityKind::Wanderer => {
match self.rng(PERM_GENUS).gen::<f32>() {
// we want 5% airships, 45% birds, 50% humans
x if x < 0.05 => {
@ -111,7 +107,7 @@ impl Entity {
let site = match self.kind {
/*
// Travelling merchants (don't work for some reason currently)
RtSimEntityKind::Random if self.rng(PERM_TRADE).gen_bool(0.5) => {
RtSimEntityKind::Wanderer if self.rng(PERM_TRADE).gen_bool(0.5) => {
match self.brain.route {
Travel::Path { target_id, .. } => Some(target_id),
_ => None,
@ -128,7 +124,15 @@ impl Entity {
pub fn get_entity_config(&self) -> &str {
match self.get_body() {
comp::Body::Humanoid(_) => humanoid_config(self.kind),
comp::Body::Humanoid(_) => {
let rank = match self.rng(PERM_LEVEL).gen_range::<u8, _>(0..=20) {
0..=2 => TravelerRank::Rank0,
3..=9 => TravelerRank::Rank1,
10..=17 => TravelerRank::Rank2,
18.. => TravelerRank::Rank3,
};
humanoid_config(self.kind, rank)
},
comp::Body::BirdMedium(b) => bird_medium_config(b),
comp::Body::BirdLarge(b) => bird_large_config(b),
_ => unimplemented!(),
@ -141,19 +145,12 @@ impl Entity {
pub fn get_adhoc_loadout(
&self,
) -> fn(LoadoutBuilder, Option<&trade::SiteInformation>) -> LoadoutBuilder {
let body = self.get_body();
let kind = self.kind;
// give potions to traveler humanoids or return loadout as is otherwise
match (body, kind) {
(comp::Body::Humanoid(_), RtSimEntityKind::Random) => |l, _| {
l.bag(ArmorSlot::Bag1, Some(make_potion_bag(100)))
.bag(ArmorSlot::Bag2, Some(make_food_bag(100)))
},
(_, RtSimEntityKind::Merchant) => {
|l, trade| l.with_creator(world::site::settlement::merchant_loadout, trade)
},
_ => |l, _| l,
if let RtSimEntityKind::Merchant = kind {
|l, trade| l.with_creator(world::site::settlement::merchant_loadout, trade)
} else {
|l, _| l
}
}
@ -797,10 +794,23 @@ impl Brain {
}
}
fn humanoid_config(kind: RtSimEntityKind) -> &'static str {
#[derive(strum::EnumIter)]
enum TravelerRank {
Rank0,
Rank1,
Rank2,
Rank3,
}
fn humanoid_config(kind: RtSimEntityKind, rank: TravelerRank) -> &'static str {
match kind {
RtSimEntityKind::Cultist => "common.entity.dungeon.tier-5.cultist",
RtSimEntityKind::Random => "common.entity.world.traveler",
RtSimEntityKind::Wanderer => match rank {
TravelerRank::Rank0 => "common.entity.world.traveler0",
TravelerRank::Rank1 => "common.entity.world.traveler1",
TravelerRank::Rank2 => "common.entity.world.traveler2",
TravelerRank::Rank3 => "common.entity.world.traveler3",
},
RtSimEntityKind::Villager => "common.entity.village.villager",
RtSimEntityKind::Merchant => "common.entity.village.merchant",
}
@ -886,8 +896,10 @@ mod tests {
}
// Humanoid test
for kind in RtSimEntityKind::iter() {
let config = humanoid_config(kind);
std::mem::drop(EntityInfo::at(dummy_pos).with_asset_expect(config, &mut dummy_rng));
for rank in TravelerRank::iter() {
let config = humanoid_config(kind, rank);
std::mem::drop(EntityInfo::at(dummy_pos).with_asset_expect(config, &mut dummy_rng));
}
}
}
}

View File

@ -133,7 +133,7 @@ pub fn init(
seed: thread_rng().gen(),
controller: RtSimController::default(),
last_time_ticked: 0.0,
kind: RtSimEntityKind::Random,
kind: RtSimEntityKind::Wanderer,
brain: Default::default(),
});
}