From 786ae39fb41e371b5edd0a775f29fd88f95ab44a Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sun, 6 Feb 2022 00:43:46 -0500 Subject: [PATCH] new entities --- assets/common/entity/village/alchemist.ron | 24 +++ assets/common/entity/village/blacksmith.ron | 24 +++ assets/common/entity/village/chef.ron | 24 +++ assets/common/items/armor/alchemist/belt.ron | 17 ++ assets/common/items/armor/alchemist/chest.ron | 17 ++ assets/common/items/armor/alchemist/hat.ron | 17 ++ assets/common/items/armor/alchemist/pants.ron | 17 ++ assets/common/items/armor/blacksmith/belt.ron | 17 ++ .../common/items/armor/blacksmith/chest.ron | 17 ++ assets/common/items/armor/blacksmith/hand.ron | 17 ++ assets/common/items/armor/blacksmith/hat.ron | 17 ++ .../common/items/armor/blacksmith/pants.ron | 17 ++ assets/common/items/armor/chef/belt.ron | 17 ++ assets/common/items/armor/chef/chest.ron | 17 ++ assets/common/items/armor/chef/hat.ron | 17 ++ assets/common/items/armor/chef/pants.ron | 17 ++ assets/common/loadout/village/alchemist.ron | 9 ++ assets/common/loadout/village/blacksmith.ron | 9 ++ assets/common/loadout/village/chef.ron | 7 + assets/voxygen/voxel/armor/alchemist/belt.vox | 3 + .../voxygen/voxel/armor/alchemist/chest.vox | 3 + assets/voxygen/voxel/armor/alchemist/hat.vox | 3 + .../voxygen/voxel/armor/alchemist/pants.vox | 3 + .../voxygen/voxel/armor/blacksmith/belt.vox | 3 + .../voxygen/voxel/armor/blacksmith/chest.vox | 3 + .../voxygen/voxel/armor/blacksmith/hand.vox | 3 + assets/voxygen/voxel/armor/blacksmith/hat.vox | 3 + .../voxygen/voxel/armor/blacksmith/pants.vox | 3 + assets/voxygen/voxel/armor/chef/belt.vox | 3 + assets/voxygen/voxel/armor/chef/chest.vox | 3 + assets/voxygen/voxel/armor/chef/hat.vox | 3 + assets/voxygen/voxel/armor/chef/pants.vox | 3 + .../voxel/humanoid_armor_belt_manifest.ron | 12 ++ .../voxel/humanoid_armor_chest_manifest.ron | 12 ++ .../voxel/humanoid_armor_hand_manifest.ron | 10 ++ .../voxel/humanoid_armor_head_manifest.ron | 147 ++++++++++++++++++ .../voxel/humanoid_armor_pants_manifest.ron | 12 ++ assets/world/style/colors.ron | 1 + common/src/terrain/structure.rs | 1 + server/src/rtsim/entity.rs | 13 +- world/src/all.rs | 9 +- world/src/block/mod.rs | 1 + world/src/layer/tree.rs | 35 +++++ world/src/site2/plot/house.rs | 9 +- 44 files changed, 610 insertions(+), 9 deletions(-) create mode 100644 assets/common/entity/village/alchemist.ron create mode 100644 assets/common/entity/village/blacksmith.ron create mode 100644 assets/common/entity/village/chef.ron create mode 100644 assets/common/items/armor/alchemist/belt.ron create mode 100644 assets/common/items/armor/alchemist/chest.ron create mode 100644 assets/common/items/armor/alchemist/hat.ron create mode 100644 assets/common/items/armor/alchemist/pants.ron create mode 100644 assets/common/items/armor/blacksmith/belt.ron create mode 100644 assets/common/items/armor/blacksmith/chest.ron create mode 100644 assets/common/items/armor/blacksmith/hand.ron create mode 100644 assets/common/items/armor/blacksmith/hat.ron create mode 100644 assets/common/items/armor/blacksmith/pants.ron create mode 100644 assets/common/items/armor/chef/belt.ron create mode 100644 assets/common/items/armor/chef/chest.ron create mode 100644 assets/common/items/armor/chef/hat.ron create mode 100644 assets/common/items/armor/chef/pants.ron create mode 100644 assets/common/loadout/village/alchemist.ron create mode 100644 assets/common/loadout/village/blacksmith.ron create mode 100644 assets/common/loadout/village/chef.ron create mode 100644 assets/voxygen/voxel/armor/alchemist/belt.vox create mode 100644 assets/voxygen/voxel/armor/alchemist/chest.vox create mode 100644 assets/voxygen/voxel/armor/alchemist/hat.vox create mode 100644 assets/voxygen/voxel/armor/alchemist/pants.vox create mode 100644 assets/voxygen/voxel/armor/blacksmith/belt.vox create mode 100644 assets/voxygen/voxel/armor/blacksmith/chest.vox create mode 100644 assets/voxygen/voxel/armor/blacksmith/hand.vox create mode 100644 assets/voxygen/voxel/armor/blacksmith/hat.vox create mode 100644 assets/voxygen/voxel/armor/blacksmith/pants.vox create mode 100644 assets/voxygen/voxel/armor/chef/belt.vox create mode 100644 assets/voxygen/voxel/armor/chef/chest.vox create mode 100644 assets/voxygen/voxel/armor/chef/hat.vox create mode 100644 assets/voxygen/voxel/armor/chef/pants.vox diff --git a/assets/common/entity/village/alchemist.ron b/assets/common/entity/village/alchemist.ron new file mode 100644 index 0000000000..79ca1d9747 --- /dev/null +++ b/assets/common/entity/village/alchemist.ron @@ -0,0 +1,24 @@ +( + name: Name("Alchemist"), + body: RandomWith("humanoid"), + alignment: Alignment(Npc), + + loadout: Extended( + hands: TwoHanded(Choice([ + (1, Some(Item("common.items.weapons.tool.broom"))), + (1, Some(Item("common.items.weapons.tool.hoe"))), + (1, Some(Item("common.items.weapons.tool.pickaxe"))), + (1, Some(Item("common.items.weapons.tool.rake"))), + (1, Some(Item("common.items.weapons.tool.shovel-0"))), + (1, Some(Item("common.items.weapons.tool.shovel-1"))), + ])), + base_asset: Loadout("common.loadout.village.alchemist"), + inventory: [ + (10, "common.items.consumable.potion_big"), + ], + ), + loot: LootTable("common.loot_tables.creature.humanoid"), + meta: [ + SkillSetAsset("common.skillset.preset.rank3.fullskill"), + ], +) \ No newline at end of file diff --git a/assets/common/entity/village/blacksmith.ron b/assets/common/entity/village/blacksmith.ron new file mode 100644 index 0000000000..5a9b827f34 --- /dev/null +++ b/assets/common/entity/village/blacksmith.ron @@ -0,0 +1,24 @@ +( + name: Name("Blacksmith"), + body: RandomWith("humanoid"), + alignment: Alignment(Npc), + + loadout: Extended( + hands: TwoHanded(Choice([ + (1, Some(Item("common.items.weapons.tool.broom"))), + (1, Some(Item("common.items.weapons.tool.hoe"))), + (1, Some(Item("common.items.weapons.tool.pickaxe"))), + (1, Some(Item("common.items.weapons.tool.rake"))), + (1, Some(Item("common.items.weapons.tool.shovel-0"))), + (1, Some(Item("common.items.weapons.tool.shovel-1"))), + ])), + base_asset: Loadout("common.loadout.village.blacksmith"), + inventory: [ + (10, "common.items.consumable.potion_big"), + ], + ), + loot: LootTable("common.loot_tables.creature.humanoid"), + meta: [ + SkillSetAsset("common.skillset.preset.rank3.fullskill"), + ], +) \ No newline at end of file diff --git a/assets/common/entity/village/chef.ron b/assets/common/entity/village/chef.ron new file mode 100644 index 0000000000..112deb0bb1 --- /dev/null +++ b/assets/common/entity/village/chef.ron @@ -0,0 +1,24 @@ +( + name: Name("Chef"), + body: RandomWith("humanoid"), + alignment: Alignment(Npc), + + loadout: Extended( + hands: TwoHanded(Choice([ + (1, Some(Item("common.items.weapons.tool.broom"))), + (1, Some(Item("common.items.weapons.tool.hoe"))), + (1, Some(Item("common.items.weapons.tool.pickaxe"))), + (1, Some(Item("common.items.weapons.tool.rake"))), + (1, Some(Item("common.items.weapons.tool.shovel-0"))), + (1, Some(Item("common.items.weapons.tool.shovel-1"))), + ])), + base_asset: Loadout("common.loadout.village.chef"), + inventory: [ + (10, "common.items.consumable.potion_big"), + ], + ), + loot: LootTable("common.loot_tables.creature.humanoid"), + meta: [ + SkillSetAsset("common.skillset.preset.rank3.fullskill"), + ], +) \ No newline at end of file diff --git a/assets/common/items/armor/alchemist/belt.ron b/assets/common/items/armor/alchemist/belt.ron new file mode 100644 index 0000000000..b2d8addeba --- /dev/null +++ b/assets/common/items/armor/alchemist/belt.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Alchemist Belt", + description: "", + kind: Armor(( + kind: Belt("Alchemist"), + stats: ( + protection: Some(Normal(8.0)), + poise_resilience: Some(Normal(1.0)), + energy_max: Some(2.0), + energy_reward: Some(0.025), + crit_power: Some(0.02), + ), + )), + quality: Epic, + tags: [ + ], +) diff --git a/assets/common/items/armor/alchemist/chest.ron b/assets/common/items/armor/alchemist/chest.ron new file mode 100644 index 0000000000..9a294c2306 --- /dev/null +++ b/assets/common/items/armor/alchemist/chest.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Alchemist Jacket", + description: "", + kind: Armor(( + kind: Chest("Alchemist"), + stats: ( + protection: Some(Normal(48.0)), + poise_resilience: Some(Normal(6.0)), + energy_max: Some(13.5), + energy_reward: Some(0.135), + crit_power: Some(0.125), + ), + )), + quality: Epic, + tags: [ + ], +) diff --git a/assets/common/items/armor/alchemist/hat.ron b/assets/common/items/armor/alchemist/hat.ron new file mode 100644 index 0000000000..84661fd631 --- /dev/null +++ b/assets/common/items/armor/alchemist/hat.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Alchemist Hat", + description: "It seems like a parrot was perched up here.", + kind: Armor(( + kind: Head("Alchemist"), + stats: ( + protection: Some(Normal(4.0)), + poise_resilience: Some(Normal(1.0)), + energy_max: Some(1.0), + energy_reward: Some(0.015), + crit_power: Some(0.02), + ), + )), + quality: High, + tags: [ + ], +) diff --git a/assets/common/items/armor/alchemist/pants.ron b/assets/common/items/armor/alchemist/pants.ron new file mode 100644 index 0000000000..78d3e0420b --- /dev/null +++ b/assets/common/items/armor/alchemist/pants.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Alchemist Pants", + description: "", + kind: Armor(( + kind: Pants("Alchemist"), + stats: ( + protection: Some(Normal(32.0)), + poise_resilience: Some(Normal(4.0)), + energy_max: Some(9.0), + energy_reward: Some(0.1), + crit_power: Some(0.08), + ), + )), + quality: Epic, + tags: [ + ], +) diff --git a/assets/common/items/armor/blacksmith/belt.ron b/assets/common/items/armor/blacksmith/belt.ron new file mode 100644 index 0000000000..573b5fa7fc --- /dev/null +++ b/assets/common/items/armor/blacksmith/belt.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Blacksmith Belt", + description: "", + kind: Armor(( + kind: Belt("Blacksmith"), + stats: ( + protection: Some(Normal(8.0)), + poise_resilience: Some(Normal(1.0)), + energy_max: Some(2.0), + energy_reward: Some(0.025), + crit_power: Some(0.02), + ), + )), + quality: Epic, + tags: [ + ], +) diff --git a/assets/common/items/armor/blacksmith/chest.ron b/assets/common/items/armor/blacksmith/chest.ron new file mode 100644 index 0000000000..c5dc0c28e7 --- /dev/null +++ b/assets/common/items/armor/blacksmith/chest.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Blacksmith Jacket", + description: "", + kind: Armor(( + kind: Chest("Blacksmith"), + stats: ( + protection: Some(Normal(48.0)), + poise_resilience: Some(Normal(6.0)), + energy_max: Some(13.5), + energy_reward: Some(0.135), + crit_power: Some(0.125), + ), + )), + quality: Epic, + tags: [ + ], +) diff --git a/assets/common/items/armor/blacksmith/hand.ron b/assets/common/items/armor/blacksmith/hand.ron new file mode 100644 index 0000000000..e7423094db --- /dev/null +++ b/assets/common/items/armor/blacksmith/hand.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Blacksmith Gloves", + description: "", + kind: Armor(( + kind: Hand("Blacksmith"), + stats: ( + protection: Some(Normal(16.0)), + poise_resilience: Some(Normal(2.0)), + energy_max: Some(4.5), + energy_reward: Some(0.045), + crit_power: Some(0.04), + ), + )), + quality: Epic, + tags: [ + ], +) diff --git a/assets/common/items/armor/blacksmith/hat.ron b/assets/common/items/armor/blacksmith/hat.ron new file mode 100644 index 0000000000..2f8bc4d53d --- /dev/null +++ b/assets/common/items/armor/blacksmith/hat.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Blacksmith Hat", + description: "", + kind: Armor(( + kind: Head("Blacksmith"), + stats: ( + protection: Some(Normal(4.0)), + poise_resilience: Some(Normal(1.0)), + energy_max: Some(1.0), + energy_reward: Some(0.015), + crit_power: Some(0.02), + ), + )), + quality: High, + tags: [ + ], +) diff --git a/assets/common/items/armor/blacksmith/pants.ron b/assets/common/items/armor/blacksmith/pants.ron new file mode 100644 index 0000000000..f0f38bc0ed --- /dev/null +++ b/assets/common/items/armor/blacksmith/pants.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Blacksmith Pants", + description: "", + kind: Armor(( + kind: Pants("Blacksmith"), + stats: ( + protection: Some(Normal(32.0)), + poise_resilience: Some(Normal(4.0)), + energy_max: Some(9.0), + energy_reward: Some(0.1), + crit_power: Some(0.08), + ), + )), + quality: Epic, + tags: [ + ], +) diff --git a/assets/common/items/armor/chef/belt.ron b/assets/common/items/armor/chef/belt.ron new file mode 100644 index 0000000000..d95c5732b5 --- /dev/null +++ b/assets/common/items/armor/chef/belt.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Chef Belt", + description: "", + kind: Armor(( + kind: Belt("Chef"), + stats: ( + protection: Some(Normal(8.0)), + poise_resilience: Some(Normal(1.0)), + energy_max: Some(2.0), + energy_reward: Some(0.025), + crit_power: Some(0.02), + ), + )), + quality: Epic, + tags: [ + ], +) diff --git a/assets/common/items/armor/chef/chest.ron b/assets/common/items/armor/chef/chest.ron new file mode 100644 index 0000000000..74331d5b3d --- /dev/null +++ b/assets/common/items/armor/chef/chest.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Chef Jacket", + description: "", + kind: Armor(( + kind: Chest("Chef"), + stats: ( + protection: Some(Normal(48.0)), + poise_resilience: Some(Normal(6.0)), + energy_max: Some(13.5), + energy_reward: Some(0.135), + crit_power: Some(0.125), + ), + )), + quality: Epic, + tags: [ + ], +) diff --git a/assets/common/items/armor/chef/hat.ron b/assets/common/items/armor/chef/hat.ron new file mode 100644 index 0000000000..471b30db32 --- /dev/null +++ b/assets/common/items/armor/chef/hat.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Chef Hat", + description: "", + kind: Armor(( + kind: Head("Chef"), + stats: ( + protection: Some(Normal(4.0)), + poise_resilience: Some(Normal(1.0)), + energy_max: Some(1.0), + energy_reward: Some(0.015), + crit_power: Some(0.02), + ), + )), + quality: High, + tags: [ + ], +) diff --git a/assets/common/items/armor/chef/pants.ron b/assets/common/items/armor/chef/pants.ron new file mode 100644 index 0000000000..945ad24ed5 --- /dev/null +++ b/assets/common/items/armor/chef/pants.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Chef Pants", + description: "", + kind: Armor(( + kind: Pants("Chef"), + stats: ( + protection: Some(Normal(32.0)), + poise_resilience: Some(Normal(4.0)), + energy_max: Some(9.0), + energy_reward: Some(0.1), + crit_power: Some(0.08), + ), + )), + quality: Epic, + tags: [ + ], +) diff --git a/assets/common/loadout/village/alchemist.ron b/assets/common/loadout/village/alchemist.ron new file mode 100644 index 0000000000..acb93d7707 --- /dev/null +++ b/assets/common/loadout/village/alchemist.ron @@ -0,0 +1,9 @@ +({ + Armor(Chest): Item("common.items.armor.alchemist.chest"), + Armor(Hands): Item("common.items.armor.cloth.druid.hand"), + Armor(Legs): Item("common.items.armor.alchemist.pants"), + Armor(Belt): Item("common.items.armor.alchemist.belt"), + Armor(Feet): Item("common.items.armor.ferocious.foot"), + Armor(Head): Item("common.items.armor.alchemist.hat"), + Lantern: Item("common.items.lantern.black_0"), +}) diff --git a/assets/common/loadout/village/blacksmith.ron b/assets/common/loadout/village/blacksmith.ron new file mode 100644 index 0000000000..0f9ac456a9 --- /dev/null +++ b/assets/common/loadout/village/blacksmith.ron @@ -0,0 +1,9 @@ +({ + Armor(Chest): Item("common.items.armor.blacksmith.chest"), + Armor(Hands): Item("common.items.armor.blacksmith.hand"), + Armor(Legs): Item("common.items.armor.blacksmith.pants"), + Armor(Belt): Item("common.items.armor.blacksmith.belt"), + Armor(Feet): Item("common.items.armor.mail.iron.foot"), + Armor(Head): Item("common.items.armor.blacksmith.hat"), + Lantern: Item("common.items.lantern.black_0"), +}) diff --git a/assets/common/loadout/village/chef.ron b/assets/common/loadout/village/chef.ron new file mode 100644 index 0000000000..1c4b876a46 --- /dev/null +++ b/assets/common/loadout/village/chef.ron @@ -0,0 +1,7 @@ +({ + Armor(Chest): Item("common.items.armor.chef.chest"), + Armor(Hands): Item("common.items.armor.cloth.linen.hand"), + Armor(Legs): Item("common.items.armor.chef.pants"), + Armor(Belt): Item("common.items.armor.chef.belt"), + Armor(Feet): Item("common.items.armor.cloth.linen.foot"), + Armor(Head): Item("common.items.armor.chef.hat"),}) diff --git a/assets/voxygen/voxel/armor/alchemist/belt.vox b/assets/voxygen/voxel/armor/alchemist/belt.vox new file mode 100644 index 0000000000..f0d1ac60d9 --- /dev/null +++ b/assets/voxygen/voxel/armor/alchemist/belt.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c475b02c5119a0e41eddfc2f96aad350bb83b99401cef23f1b17a20175f1c760 +size 1512 diff --git a/assets/voxygen/voxel/armor/alchemist/chest.vox b/assets/voxygen/voxel/armor/alchemist/chest.vox new file mode 100644 index 0000000000..e4d5cb3bf8 --- /dev/null +++ b/assets/voxygen/voxel/armor/alchemist/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eab1f58e12b63b83828c5689534d781fe08848280c9eb2e5e104c5c2fd436d59 +size 2704 diff --git a/assets/voxygen/voxel/armor/alchemist/hat.vox b/assets/voxygen/voxel/armor/alchemist/hat.vox new file mode 100644 index 0000000000..7d4c2056c1 --- /dev/null +++ b/assets/voxygen/voxel/armor/alchemist/hat.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd6cc5ba8c3b5a25d76d7dc03c3c208a0895acb81e09039cfad07dd870ccdac0 +size 1272 diff --git a/assets/voxygen/voxel/armor/alchemist/pants.vox b/assets/voxygen/voxel/armor/alchemist/pants.vox new file mode 100644 index 0000000000..6131dca49c --- /dev/null +++ b/assets/voxygen/voxel/armor/alchemist/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc67d21bc4fe57f1e0ee3557bb15142c2169d7c93551afef37631541d35acbcb +size 2248 diff --git a/assets/voxygen/voxel/armor/blacksmith/belt.vox b/assets/voxygen/voxel/armor/blacksmith/belt.vox new file mode 100644 index 0000000000..14454c76d6 --- /dev/null +++ b/assets/voxygen/voxel/armor/blacksmith/belt.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a80c22cc54845acfd0535f9103bc96adc0dc01f29c6d10b2c217e5bfc727a7a8 +size 1512 diff --git a/assets/voxygen/voxel/armor/blacksmith/chest.vox b/assets/voxygen/voxel/armor/blacksmith/chest.vox new file mode 100644 index 0000000000..1ff0ee36f5 --- /dev/null +++ b/assets/voxygen/voxel/armor/blacksmith/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2510a929c5e730c2d53a00099ce3713f475ec6379f4c402f2f4cfa2f12473eac +size 2712 diff --git a/assets/voxygen/voxel/armor/blacksmith/hand.vox b/assets/voxygen/voxel/armor/blacksmith/hand.vox new file mode 100644 index 0000000000..6d0f794a7b --- /dev/null +++ b/assets/voxygen/voxel/armor/blacksmith/hand.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d942dfb79a3429b57a358425a71126df1ccfe0f68634f7a562b6d2bcb7caca1 +size 1240 diff --git a/assets/voxygen/voxel/armor/blacksmith/hat.vox b/assets/voxygen/voxel/armor/blacksmith/hat.vox new file mode 100644 index 0000000000..a7566b66e3 --- /dev/null +++ b/assets/voxygen/voxel/armor/blacksmith/hat.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ee7d4df72403006e06d8b0cff801a65fd192904376819f9dd6777574aae9bae +size 2000 diff --git a/assets/voxygen/voxel/armor/blacksmith/pants.vox b/assets/voxygen/voxel/armor/blacksmith/pants.vox new file mode 100644 index 0000000000..f06c056c71 --- /dev/null +++ b/assets/voxygen/voxel/armor/blacksmith/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d3e0407544b2dff96f46da014abd63377f35f26343ccee26e42c439171b0dd7 +size 2224 diff --git a/assets/voxygen/voxel/armor/chef/belt.vox b/assets/voxygen/voxel/armor/chef/belt.vox new file mode 100644 index 0000000000..8ad23084a4 --- /dev/null +++ b/assets/voxygen/voxel/armor/chef/belt.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe22d3724d7196012ef52736ded52d681b9347e3b580614638a1548d699d81a3 +size 1512 diff --git a/assets/voxygen/voxel/armor/chef/chest.vox b/assets/voxygen/voxel/armor/chef/chest.vox new file mode 100644 index 0000000000..78b47b7e2e --- /dev/null +++ b/assets/voxygen/voxel/armor/chef/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c22472231134947f32f6c03e5c2885c6f92bf43fc9de3badd95ed31fca556392 +size 2684 diff --git a/assets/voxygen/voxel/armor/chef/hat.vox b/assets/voxygen/voxel/armor/chef/hat.vox new file mode 100644 index 0000000000..296c7bb13d --- /dev/null +++ b/assets/voxygen/voxel/armor/chef/hat.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a068182e50c881056bb9a57a7c35a3a56314bffc0f7eb7c6cda119cbfecdc6bb +size 7992 diff --git a/assets/voxygen/voxel/armor/chef/pants.vox b/assets/voxygen/voxel/armor/chef/pants.vox new file mode 100644 index 0000000000..85d1c76c27 --- /dev/null +++ b/assets/voxygen/voxel/armor/chef/pants.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b20bb4287f3d207fbd9ab86f8c138eb2548381f46ce7cd98379c8f5c5777bb0 +size 2256 diff --git a/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron b/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron index 7a72873235..9ae3a6c953 100644 --- a/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron @@ -108,6 +108,18 @@ vox_spec: ("armor.pirate.belt", (-4.0, -4.0, 2.5)), color: None ), + "Alchemist":( + vox_spec: ("armor.alchemist.belt", (-4.0, -4.0, 2.5)), + color: None + ), + "Blacksmith":( + vox_spec: ("armor.blacksmith.belt", (-4.0, -4.0, 2.0)), + color: None + ), + "Chef":( + vox_spec: ("armor.chef.belt", (-4.0, -4.0, 2.0)), + color: None + ), "Linen":( vox_spec: ("armor.cloth.linen.belt", (-4.0, -4.0, 0.0)), color: None diff --git a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron index d1a5f26e9e..06dd138ee1 100644 --- a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron @@ -178,6 +178,18 @@ vox_spec: ("armor.pirate.chest", (-7.0, -4.0, 2.0)), color: None ), + "Alchemist": ( + vox_spec: ("armor.alchemist.chest", (-7.0, -4.0, 2.0)), + color: None + ), + "Blacksmith": ( + vox_spec: ("armor.blacksmith.chest", (-7.0, -4.0, 2.0)), + color: None + ), + "Chef": ( + vox_spec: ("armor.chef.chest", (-7.0, -4.0, 2.0)), + color: None + ), "Linen": ( vox_spec: ("armor.cloth.linen.chest", (-7.0, -4.0, 2.0)), color: None diff --git a/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron b/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron index 1805201e0b..f6eef95943 100644 --- a/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron @@ -240,6 +240,16 @@ color: None ) ), + "Blacksmith": ( + left: ( + vox_spec: ("armor.blacksmith.hand", (-1.5, -2.5, -4.0)), + color: None + ), + right: ( + vox_spec: ("armor.blacksmith.hand", (-1.5, -2.5, -4.0)), + color: None + ) + ), "Linen": ( left: ( vox_spec: ("armor.cloth.linen.hand", (-1.5, -2.0, -3.0)), diff --git a/assets/voxygen/voxel/humanoid_armor_head_manifest.ron b/assets/voxygen/voxel/humanoid_armor_head_manifest.ron index 73f630ec1d..a6056998b2 100644 --- a/assets/voxygen/voxel/humanoid_armor_head_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_head_manifest.ron @@ -274,6 +274,153 @@ vox_spec: ("armor.pirate.hat", (-3.0, -5.0, 5.0)), color: None ), + // + (Human, Male, "Blacksmith"): ( + vox_spec: ("armor.blacksmith.hat", (-4.0, 0.0, -3.0)), + color: None + ), + (Human, Female, "Blacksmith"): ( + vox_spec: ("armor.blacksmith.hat", (-4.0, 1.0, -3.0)), + color: None + ), + (Elf, Male, "Blacksmith"): ( + vox_spec: ("armor.blacksmith.hat", (-3.0, 0.0, -3.0)), + color: None + ), + (Elf, Female, "Blacksmith"): ( + vox_spec: ("armor.blacksmith.hat", (-3.0, -1.0, -3.0)), + color: None + ), + (Dwarf, Male, "Blacksmith"): ( + vox_spec: ("armor.blacksmith.hat", (-5.0, 1.0, -3.0)), + color: None + ), + (Dwarf, Female, "Blacksmith"): ( + vox_spec: ("armor.blacksmith.hat", (-5.0, 1.0, -3.0)), + color: None + ), + (Danari, Male, "Blacksmith"): ( + vox_spec: ("armor.blacksmith.hat", (-2.0, 0.0, -1.0)), + color: None + ), + (Danari, Female, "Blacksmith"): ( + vox_spec: ("armor.blacksmith.hat", (-2.0, 1.0, -1.0)), + color: None + ), + (Undead, Male, "Blacksmith"): ( + vox_spec: ("armor.blacksmith.hat", (-6.0, 0.0, -1.0)), + color: None + ), + (Undead, Female, "Blacksmith"): ( + vox_spec: ("armor.blacksmith.hat", (-6.0, 0.0, -2.0)), + color: None + ), + (Orc, Male, "Blacksmith"): ( + vox_spec: ("armor.blacksmith.hat", (-3.0, 2.0, 0.0)), + color: None + ), + (Orc, Female, "Blacksmith"): ( + vox_spec: ("armor.blacksmith.hat", (-3.0, -1.0, -3.0)), + color: None + ), + // Alchemist Goggles + (Human, Male, "Alchemist"): ( + vox_spec: ("armor.alchemist.hat", (-4.0, 0.0, 1.0)), + color: None + ), + (Human, Female, "Alchemist"): ( + vox_spec: ("armor.alchemist.hat", (-4.0, 1.0, 1.0)), + color: None + ), + (Elf, Male, "Alchemist"): ( + vox_spec: ("armor.alchemist.hat", (-3.0, 0.0, 1.0)), + color: None + ), + (Elf, Female, "Alchemist"): ( + vox_spec: ("armor.alchemist.hat", (-3.0, -1.0, 1.0)), + color: None + ), + (Dwarf, Male, "Alchemist"): ( + vox_spec: ("armor.alchemist.hat", (-5.0, 1.0, 1.0)), + color: None + ), + (Dwarf, Female, "Alchemist"): ( + vox_spec: ("armor.alchemist.hat", (-5.0, 1.0, 1.0)), + color: None + ), + (Danari, Male, "Alchemist"): ( + vox_spec: ("armor.alchemist.hat", (-2.0, 0.0, 3.0)), + color: None + ), + (Danari, Female, "Alchemist"): ( + vox_spec: ("armor.alchemist.hat", (-2.0, 1.0, 3.0)), + color: None + ), + (Undead, Male, "Alchemist"): ( + vox_spec: ("armor.alchemist.hat", (-6.0, 0.0, 3.0)), + color: None + ), + (Undead, Female, "Alchemist"): ( + vox_spec: ("armor.alchemist.hat", (-6.0, 0.0, 2.0)), + color: None + ), + (Orc, Male, "Alchemist"): ( + vox_spec: ("armor.alchemist.hat", (-3.0, 2.0, 4.0)), + color: None + ), + (Orc, Female, "Alchemist"): ( + vox_spec: ("armor.alchemist.hat", (-3.0, -1.0, 1.0)), + color: None + ), + // Chef hat + (Human, Male, "Chef"): ( + vox_spec: ("armor.chef.hat", (-4.0, -5.0, 5.0)), + color: None + ), + (Human, Female, "Chef"): ( + vox_spec: ("armor.chef.hat", (-4.0, -5.0, 5.0)), + color: None + ), + (Elf, Male, "Chef"): ( + vox_spec: ("armor.chef.hat", (-3.0, -5.0, 5.0)), + color: None + ), + (Elf, Female, "Chef"): ( + vox_spec: ("armor.chef.hat", (-3.0, -6.0, 5.0)), + color: None + ), + (Dwarf, Male, "Chef"): ( + vox_spec: ("armor.chef.hat", (-5.0, -4.0, 5.0)), + color: None + ), + (Dwarf, Female, "Chef"): ( + vox_spec: ("armor.chef.hat", (-5.0, -4.0, 5.0)), + color: None + ), + (Danari, Male, "Chef"): ( + vox_spec: ("armor.chef.hat", (-2.0, -5.0, 7.0)), + color: None + ), + (Danari, Female, "Chef"): ( + vox_spec: ("armor.chef.hat", (-2.0, -5.0, 7.0)), + color: None + ), + (Undead, Male, "Chef"): ( + vox_spec: ("armor.chef.hat", (-6.0, -5.0, 7.0)), + color: None + ), + (Undead, Female, "Chef"): ( + vox_spec: ("armor.chef.hat", (-6.0, -5.0, 6.0)), + color: None + ), + (Orc, Male, "Chef"): ( + vox_spec: ("armor.chef.hat", (-3.0, -3.0, 8.0)), + color: None + ), + (Orc, Female, "Chef"): ( + vox_spec: ("armor.chef.hat", (-3.0, -6.0, 5.0)), + color: None + ), // Straw hat (Human, Male, "Straw"): ( vox_spec: ("armor.misc.head.straw", (-4.0, -5.0, 5.0)), diff --git a/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron b/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron index 0821a71de2..e82429dea1 100644 --- a/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron @@ -136,6 +136,18 @@ vox_spec: ("armor.pirate.pants", (-5.0, -4.0, 1.5)), color: None ), + "Alchemist": ( + vox_spec: ("armor.alchemist.pants", (-5.0, -4.0, 0.5)), + color: None + ), + "Blacksmith": ( + vox_spec: ("armor.blacksmith.pants", (-5.0, -4.0, 0.5)), + color: None + ), + "Chef": ( + vox_spec: ("armor.chef.pants", (-5.0, -4.0, 0.0)), + color: None + ), "Linen": ( vox_spec: ("armor.cloth.linen.pants", (-5.0, -4.0, 0.5)), color: None diff --git a/assets/world/style/colors.ron b/assets/world/style/colors.ron index ce0f153bcc..0024da6795 100644 --- a/assets/world/style/colors.ron +++ b/assets/world/style/colors.ron @@ -25,6 +25,7 @@ //(start: (168, 81, 0), end: (54, 150, 31)), ], PineLeaves: [(start: (0, 60, 50), end: (30, 80, 10))], + FrostpineLeaves: [(start: (24, 89, 85), end: (67, 22, 82))], PalmLeavesInner: [(start: (70, 140, 43), end: (55, 140, 32))], PalmLeavesOuter: [(start: (60, 130, 38), end: (30, 130, 65))], Acacia: [(start: (35, 70, 0), end: (100, 120, 30))], diff --git a/common/src/terrain/structure.rs b/common/src/terrain/structure.rs index e6a283b237..93e6592a7f 100644 --- a/common/src/terrain/structure.rs +++ b/common/src/terrain/structure.rs @@ -37,6 +37,7 @@ make_case_elim!( Chestnut = 19, Baobab = 20, BirchWood = 21, + FrostpineLeaves = 22, } ); diff --git a/server/src/rtsim/entity.rs b/server/src/rtsim/entity.rs index 82c844ee41..643e209b02 100644 --- a/server/src/rtsim/entity.rs +++ b/server/src/rtsim/entity.rs @@ -31,6 +31,9 @@ pub enum RtSimEntityKind { Cultist, Villager, Merchant, + Blacksmith, + Chef, + Alchemist, } const BIRD_MEDIUM_ROSTER: &[comp::bird_medium::Species] = &[ @@ -90,7 +93,12 @@ impl Entity { }, } }, - RtSimEntityKind::Cultist | RtSimEntityKind::Villager | RtSimEntityKind::Merchant => { + RtSimEntityKind::Cultist + | RtSimEntityKind::Villager + | RtSimEntityKind::Chef + | RtSimEntityKind::Alchemist + | RtSimEntityKind::Blacksmith + | RtSimEntityKind::Merchant => { let species = *(&comp::humanoid::ALL_SPECIES) .choose(&mut self.rng(PERM_SPECIES)) .unwrap(); @@ -813,6 +821,9 @@ fn humanoid_config(kind: RtSimEntityKind, rank: TravelerRank) -> &'static str { }, RtSimEntityKind::Villager => "common.entity.village.villager", RtSimEntityKind::Merchant => "common.entity.village.merchant", + RtSimEntityKind::Blacksmith => "common.entity.village.blacksmith", + RtSimEntityKind::Chef => "common.entity.village.chef", + RtSimEntityKind::Alchemist => "common.entity.village.alchemist", } } diff --git a/world/src/all.rs b/world/src/all.rs index b5164e7708..3d70c3bce3 100644 --- a/world/src/all.rs +++ b/world/src/all.rs @@ -16,6 +16,7 @@ pub enum ForestKind { Mangrove, Giant, Swamp, + Frostpine, } pub struct Environment { @@ -34,6 +35,7 @@ impl ForestKind { ForestKind::Chestnut => 0.35..1.5, ForestKind::Cedar => 0.275..1.45, ForestKind::Pine => 0.2..1.4, + ForestKind::Frostpine => 0.2..1.4, ForestKind::Birch => 0.0..0.6, ForestKind::Mangrove => 0.5..1.3, ForestKind::Swamp => 0.5..1.1, @@ -49,7 +51,8 @@ impl ForestKind { ForestKind::Oak => -0.35..0.45, ForestKind::Chestnut => -0.35..0.45, ForestKind::Cedar => -0.65..0.15, - ForestKind::Pine => -1.8..-0.2, + ForestKind::Pine => -0.85..-0.2, + ForestKind::Frostpine => -1.8..-0.8, ForestKind::Birch => -0.7..0.25, ForestKind::Mangrove => 0.35..1.6, ForestKind::Swamp => -0.6..0.8, @@ -75,6 +78,7 @@ impl ForestKind { ForestKind::Chestnut => 0.3, ForestKind::Cedar => 0.3, ForestKind::Pine => 1.0, + ForestKind::Frostpine => 1.0, ForestKind::Birch => 0.65, ForestKind::Mangrove => 2.0, ForestKind::Swamp => 1.0, @@ -90,7 +94,8 @@ impl ForestKind { ForestKind::Oak => 0.4, ForestKind::Chestnut => 0.3, ForestKind::Cedar => 0.3, - ForestKind::Pine => 0.4, + ForestKind::Pine => 0.5, + ForestKind::Frostpine => 0.3, ForestKind::Birch => 0.65, ForestKind::Mangrove => 1.0, ForestKind::Swamp => 0.4, diff --git a/world/src/block/mod.rs b/world/src/block/mod.rs index 4e62b5297e..40175d646b 100644 --- a/world/src/block/mod.rs +++ b/world/src/block/mod.rs @@ -308,6 +308,7 @@ pub fn block_from_structure( // We interpolate all these BlockKinds as needed. StructureBlock::TemperateLeaves | StructureBlock::PineLeaves + | StructureBlock::FrostpineLeaves | StructureBlock::PalmLeavesInner | StructureBlock::PalmLeavesOuter | StructureBlock::Acacia diff --git a/world/src/layer/tree.rs b/world/src/layer/tree.rs index b6c9eb5870..eaf43cc3af 100644 --- a/world/src/layer/tree.rs +++ b/world/src/layer/tree.rs @@ -168,6 +168,16 @@ pub fn apply_trees_to( StructureBlock::TemperateLeaves, ); }, + ForestKind::Frostpine => { + break 'model TreeModel::Procedural( + ProceduralTree::generate( + TreeConfig::frostpine(&mut RandomPerm::new(seed), scale), + &mut RandomPerm::new(seed), + ), + StructureBlock::FrostpineLeaves, + ); + }, + ForestKind::Mangrove => { break 'model TreeModel::Procedural( ProceduralTree::generate( @@ -407,6 +417,31 @@ impl TreeConfig { } } + pub fn frostpine(rng: &mut impl Rng, scale: f32) -> Self { + let scale = scale * (0.8 + rng.gen::().powi(2) * 0.5); + let log_scale = 1.0 + scale.log2().max(0.0); + + Self { + trunk_len: 36.0 * scale, + trunk_radius: 2.3 * scale, + branch_child_len: 0.25 / scale, + branch_child_radius: 0.0, + branch_child_radius_lerp: false, + leaf_radius: 1.3..2.2, + leaf_radius_scaled: 0.4 * log_scale, + straightness: 0.3, + max_depth: 1, + splits: 34.0 * scale..35.0 * scale, + split_range: 0.1..1.2, + branch_len_bias: 0.75, + leaf_vertical_scale: 0.6, + proportionality: 1.0, + inhabited: false, + hanging_sprites: &[(0.0001, SpriteKind::Beehive)], + trunk_block: StructureBlock::Filled(BlockKind::Wood, Rgb::new(79, 102, 105)), + } + } + pub fn jungle(rng: &mut impl Rng, scale: f32) -> Self { let scale = scale * (0.8 + rng.gen::() * 0.5); let log_scale = 1.0 + scale.log2().max(0.0); diff --git a/world/src/site2/plot/house.rs b/world/src/site2/plot/house.rs index ad6e6c60c4..0a2dc707b6 100644 --- a/world/src/site2/plot/house.rs +++ b/world/src/site2/plot/house.rs @@ -324,7 +324,7 @@ impl Structure for House { let roof_rear = painter.prim(Primitive::intersect(roof_empty, roof_rear_wall)); painter.fill( roof_primitive, - Fill::Block(Block::new(BlockKind::Wood, self.roof_color)), + Fill::Brick(BlockKind::Wood, self.roof_color, 24), ); painter.fill(roof_empty, Fill::Block(Block::empty())); let roof_walls = painter.prim(Primitive::union(roof_front, roof_rear)); @@ -1084,10 +1084,7 @@ impl Structure for House { dir: Dir::X, }), }; - painter.fill( - shed, - Fill::Block(Block::new(BlockKind::Wood, self.roof_color)), - ); + painter.fill(shed, Fill::Brick(BlockKind::Wood, self.roof_color, 24)); painter.fill(shed_empty, Fill::Block(Block::empty())); let shed_left_wall = match self.front { 0 => painter.prim(Primitive::Aabb(Aabb { @@ -1435,7 +1432,7 @@ impl Structure for House { ); painter.fill( painter.prim(Primitive::without(dormer_roof, shed)), - Fill::Block(Block::new(BlockKind::Wood, self.roof_color)), + Fill::Brick(BlockKind::Wood, self.roof_color, 24), ); painter.fill(window_cavity, Fill::Block(Block::empty())); painter.fill(