From 65151bf17578d0c75247a77483ba62402d9b08ad Mon Sep 17 00:00:00 2001 From: Monty Marz Date: Thu, 30 Apr 2020 20:43:24 +0000 Subject: [PATCH] Villagers and Cultists --- CHANGELOG.md | 3 + .../common/items/armor/belt/cultist_belt.ron | 8 + .../items/armor/chest/cultist_chest_blue.ron | 8 + .../armor/chest/cultist_chest_purple.ron | 8 + .../items/armor/chest/worker_green_0.ron | 8 + .../items/armor/chest/worker_green_1.ron | 8 + .../items/armor/chest/worker_orange_0.ron | 8 + .../items/armor/chest/worker_orange_1.ron | 8 + .../items/armor/chest/worker_purple_0.ron | 8 + .../items/armor/chest/worker_purple_1.ron | 8 + .../common/items/armor/chest/worker_red_0.ron | 8 + .../common/items/armor/chest/worker_red_1.ron | 8 + .../items/armor/chest/worker_yellow_0.ron | 8 + .../items/armor/chest/worker_yellow_1.ron | 8 + .../common/items/armor/foot/cultist_boots.ron | 8 + .../items/armor/hand/cultist_hands_blue.ron | 8 + .../items/armor/hand/cultist_hands_purple.ron | 8 + .../items/armor/pants/cultist_legs_blue.ron | 8 + .../items/armor/pants/cultist_legs_purple.ron | 8 + .../items/armor/pants/worker_blue_0.ron | 8 + .../armor/shoulder/cultist_shoulder_blue.ron | 8 + .../shoulder/cultist_shoulder_purple.ron | 8 + assets/common/items/debug/cultist_belt.ron | 8 + assets/common/items/debug/cultist_boots.ron | 8 + .../common/items/debug/cultist_chest_blue.ron | 8 + .../common/items/debug/cultist_hands_blue.ron | 8 + .../common/items/debug/cultist_legs_blue.ron | 8 + .../items/debug/cultist_shoulder_blue.ron | 8 + assets/common/items/debug/plate_0.ron | 8 - assets/common/items/debug/plate_feet.ron | 8 - assets/common/items/debug/plate_green_0.ron | 8 - .../common/items/debug/plate_green_legs.ron | 8 - assets/common/items/debug/plate_hand.ron | 8 - assets/common/items/debug/plate_shoulder.ron | 8 - .../items/weapons/{ => axe}/starter_axe.ron | 0 .../items/weapons/{ => bow}/starter_bow.ron | 2 +- .../weapons/{ => dagger}/starter_dagger.ron | 0 .../items/weapons/{ => hammer}/hammer_1.ron | 0 .../weapons/{ => hammer}/starter_hammer.ron | 0 .../items/weapons/{ => shield}/shield_1.ron | 0 .../items/weapons/{ => staff}/staff_1.ron | 0 .../weapons/{ => staff}/staff_nature.ron | 0 .../weapons/{ => staff}/starter_staff.ron | 0 .../weapons/{ => sword}/short_sword_0.ron | 0 .../weapons/{ => sword}/starter_sword.ron | 0 .../items/weapons/{ => sword}/wood_sword.ron | 0 .../{ => sword}/zweihander_sword_0.ron | 0 assets/common/items/weapons/tool/broom.ron | 10 + .../common/items/weapons/tool/fishing_rod.ron | 10 + assets/common/items/weapons/tool/hoe.ron | 10 + assets/common/items/weapons/tool/pickaxe.ron | 10 + .../common/items/weapons/tool/pitchfork.ron | 10 + assets/common/items/weapons/tool/rake.ron | 10 + assets/common/items/weapons/tool/shovel-0.ron | 10 + assets/common/items/weapons/tool/shovel-1.ron | 10 + assets/voxygen/element/buttons/inv_slot.png | Bin 318 -> 320 bytes assets/voxygen/element/icons/bow_m2.vox | Bin 55614 -> 1096 bytes assets/voxygen/element/icons/item_apple.vox | Bin 56231 -> 1748 bytes assets/voxygen/element/icons/item_cheese.png | Bin 1304 -> 245 bytes assets/voxygen/element/icons/item_cheese.vox | Bin 0 -> 1680 bytes assets/voxygen/element/icons/item_flower.vox | Bin 56791 -> 1952 bytes assets/voxygen/element/icons/item_grass.vox | Bin 56512 -> 2028 bytes assets/voxygen/item_image_manifest.ron | 153 +++++++++++++-- assets/voxygen/voxel/armor/belt/cultist.vox | Bin 0 -> 1536 bytes .../voxel/armor/belt/cultist_right.vox | Bin 0 -> 1388 bytes assets/voxygen/voxel/armor/chest/cultist.vox | Bin 0 -> 2792 bytes .../voxel/armor/chest/shirt_white-0.vox | Bin 0 -> 2672 bytes .../voxel/armor/chest/worker_green-0.vox | Bin 0 -> 2696 bytes .../voxel/armor/chest/worker_red-0.vox | Bin 0 -> 2696 bytes .../voxel/armor/chest/worker_white-0.vox | Bin 0 -> 2696 bytes assets/voxygen/voxel/armor/foot/cultist.vox | Bin 0 -> 1480 bytes .../voxel/armor/hand/cultist_right.vox | Bin 0 -> 1344 bytes assets/voxygen/voxel/armor/pants/cultist.vox | Bin 0 -> 1992 bytes .../voxel/armor/pants/worker_blue-0.vox | Bin 0 -> 1912 bytes .../voxel/armor/shoulder/cultist_right.vox | Bin 0 -> 1388 bytes .../voxel/humanoid_armor_belt_manifest.ron | 4 + .../voxel/humanoid_armor_chest_manifest.ron | 50 +++++ .../voxel/humanoid_armor_foot_manifest.ron | 4 + .../voxel/humanoid_armor_hand_manifest.ron | 21 +++ .../voxel/humanoid_armor_pants_manifest.ron | 12 ++ .../humanoid_armor_shoulder_manifest.ron | 20 ++ .../voxel/humanoid_main_weapon_manifest.ron | 71 ++++++- assets/voxygen/voxel/object/cheese-0.vox | Bin 0 -> 3880 bytes assets/voxygen/voxel/object/cheese-1.vox | Bin 0 -> 4828 bytes .../voxel/object/dungeon_door_metal-0.vox | Bin 0 -> 1140 bytes assets/voxygen/voxel/object/item_cheese.vox | Bin 0 -> 2800 bytes assets/voxygen/voxel/weapon/bow/longbow-0.vox | Bin 0 -> 1344 bytes assets/voxygen/voxel/weapon/bow/longbow-1.vox | Bin 0 -> 1304 bytes .../bow/{simple-bow.vox => rare_bow-0.vox} | Bin .../voxygen/voxel/weapon/bow/shortbow-0.vox | Bin 0 -> 1280 bytes .../voxygen/voxel/weapon/bow/shortbow-1.vox | Bin 0 -> 1280 bytes assets/voxygen/voxel/weapon/tool/broom-0.vox | Bin 0 -> 1840 bytes .../voxel/weapon/tool/fishing_rod_blue-0.vox | Bin 0 -> 1392 bytes .../weapon/tool/fishing_rod_orange-0.vox | Bin 0 -> 1392 bytes assets/voxygen/voxel/weapon/tool/hoe_blue.vox | Bin 0 -> 1332 bytes .../voxygen/voxel/weapon/tool/hoe_green.vox | Bin 0 -> 1416 bytes .../voxel/weapon/tool/pickaxe_green-0.vox | Bin 0 -> 1332 bytes .../voxygen/voxel/weapon/tool/pitchfork-0.vox | Bin 0 -> 1296 bytes assets/voxygen/voxel/weapon/tool/rake-0.vox | Bin 0 -> 1344 bytes .../voxygen/voxel/weapon/tool/shovel_blue.vox | Bin 0 -> 1300 bytes .../voxygen/voxel/weapon/tool/shovel_gold.vox | Bin 0 -> 1376 bytes .../voxel/weapon/tool/shovel_green.vox | Bin 0 -> 1300 bytes .../voxygen/voxel/weapon/tool/shovel_red.vox | Bin 0 -> 1300 bytes common/src/comp/body/humanoid.rs | 50 ++--- common/src/comp/inventory/item/armor.rs | 54 +++++- common/src/comp/inventory/item/mod.rs | 16 +- common/src/comp/inventory/item/tool.rs | 28 ++- server/src/sys/terrain.rs | 48 +++-- voxygen/src/anim/character/dash.rs | 6 - voxygen/src/anim/character/mod.rs | 47 +++-- voxygen/src/anim/character/run.rs | 4 +- voxygen/src/anim/character/wield.rs | 176 ++++++++++-------- voxygen/src/anim/mod.rs | 3 - .../audio/sfx/event_mapper/movement/tests.rs | 6 +- voxygen/src/menu/char_selection/ui.rs | 24 ++- voxygen/src/scene/figure/load.rs | 53 +++++- voxygen/src/scene/simple.rs | 2 +- voxygen/src/scene/terrain.rs | 2 +- world/src/site/dungeon/mod.rs | 12 +- world/src/site/settlement/mod.rs | 16 +- 120 files changed, 962 insertions(+), 269 deletions(-) create mode 100644 assets/common/items/armor/belt/cultist_belt.ron create mode 100644 assets/common/items/armor/chest/cultist_chest_blue.ron create mode 100644 assets/common/items/armor/chest/cultist_chest_purple.ron create mode 100644 assets/common/items/armor/chest/worker_green_0.ron create mode 100644 assets/common/items/armor/chest/worker_green_1.ron create mode 100644 assets/common/items/armor/chest/worker_orange_0.ron create mode 100644 assets/common/items/armor/chest/worker_orange_1.ron create mode 100644 assets/common/items/armor/chest/worker_purple_0.ron create mode 100644 assets/common/items/armor/chest/worker_purple_1.ron create mode 100644 assets/common/items/armor/chest/worker_red_0.ron create mode 100644 assets/common/items/armor/chest/worker_red_1.ron create mode 100644 assets/common/items/armor/chest/worker_yellow_0.ron create mode 100644 assets/common/items/armor/chest/worker_yellow_1.ron create mode 100644 assets/common/items/armor/foot/cultist_boots.ron create mode 100644 assets/common/items/armor/hand/cultist_hands_blue.ron create mode 100644 assets/common/items/armor/hand/cultist_hands_purple.ron create mode 100644 assets/common/items/armor/pants/cultist_legs_blue.ron create mode 100644 assets/common/items/armor/pants/cultist_legs_purple.ron create mode 100644 assets/common/items/armor/pants/worker_blue_0.ron create mode 100644 assets/common/items/armor/shoulder/cultist_shoulder_blue.ron create mode 100644 assets/common/items/armor/shoulder/cultist_shoulder_purple.ron create mode 100644 assets/common/items/debug/cultist_belt.ron create mode 100644 assets/common/items/debug/cultist_boots.ron create mode 100644 assets/common/items/debug/cultist_chest_blue.ron create mode 100644 assets/common/items/debug/cultist_hands_blue.ron create mode 100644 assets/common/items/debug/cultist_legs_blue.ron create mode 100644 assets/common/items/debug/cultist_shoulder_blue.ron delete mode 100644 assets/common/items/debug/plate_0.ron delete mode 100644 assets/common/items/debug/plate_feet.ron delete mode 100644 assets/common/items/debug/plate_green_0.ron delete mode 100644 assets/common/items/debug/plate_green_legs.ron delete mode 100644 assets/common/items/debug/plate_hand.ron delete mode 100644 assets/common/items/debug/plate_shoulder.ron rename assets/common/items/weapons/{ => axe}/starter_axe.ron (100%) rename assets/common/items/weapons/{ => bow}/starter_bow.ron (84%) rename assets/common/items/weapons/{ => dagger}/starter_dagger.ron (100%) rename assets/common/items/weapons/{ => hammer}/hammer_1.ron (100%) rename assets/common/items/weapons/{ => hammer}/starter_hammer.ron (100%) rename assets/common/items/weapons/{ => shield}/shield_1.ron (100%) rename assets/common/items/weapons/{ => staff}/staff_1.ron (100%) rename assets/common/items/weapons/{ => staff}/staff_nature.ron (100%) rename assets/common/items/weapons/{ => staff}/starter_staff.ron (100%) rename assets/common/items/weapons/{ => sword}/short_sword_0.ron (100%) rename assets/common/items/weapons/{ => sword}/starter_sword.ron (100%) rename assets/common/items/weapons/{ => sword}/wood_sword.ron (100%) rename assets/common/items/weapons/{ => sword}/zweihander_sword_0.ron (100%) create mode 100644 assets/common/items/weapons/tool/broom.ron create mode 100644 assets/common/items/weapons/tool/fishing_rod.ron create mode 100644 assets/common/items/weapons/tool/hoe.ron create mode 100644 assets/common/items/weapons/tool/pickaxe.ron create mode 100644 assets/common/items/weapons/tool/pitchfork.ron create mode 100644 assets/common/items/weapons/tool/rake.ron create mode 100644 assets/common/items/weapons/tool/shovel-0.ron create mode 100644 assets/common/items/weapons/tool/shovel-1.ron create mode 100644 assets/voxygen/element/icons/item_cheese.vox create mode 100644 assets/voxygen/voxel/armor/belt/cultist.vox create mode 100644 assets/voxygen/voxel/armor/belt/cultist_right.vox create mode 100644 assets/voxygen/voxel/armor/chest/cultist.vox create mode 100644 assets/voxygen/voxel/armor/chest/shirt_white-0.vox create mode 100644 assets/voxygen/voxel/armor/chest/worker_green-0.vox create mode 100644 assets/voxygen/voxel/armor/chest/worker_red-0.vox create mode 100644 assets/voxygen/voxel/armor/chest/worker_white-0.vox create mode 100644 assets/voxygen/voxel/armor/foot/cultist.vox create mode 100644 assets/voxygen/voxel/armor/hand/cultist_right.vox create mode 100644 assets/voxygen/voxel/armor/pants/cultist.vox create mode 100644 assets/voxygen/voxel/armor/pants/worker_blue-0.vox create mode 100644 assets/voxygen/voxel/armor/shoulder/cultist_right.vox create mode 100644 assets/voxygen/voxel/object/cheese-0.vox create mode 100644 assets/voxygen/voxel/object/cheese-1.vox create mode 100644 assets/voxygen/voxel/object/dungeon_door_metal-0.vox create mode 100644 assets/voxygen/voxel/object/item_cheese.vox create mode 100644 assets/voxygen/voxel/weapon/bow/longbow-0.vox create mode 100644 assets/voxygen/voxel/weapon/bow/longbow-1.vox rename assets/voxygen/voxel/weapon/bow/{simple-bow.vox => rare_bow-0.vox} (100%) create mode 100644 assets/voxygen/voxel/weapon/bow/shortbow-0.vox create mode 100644 assets/voxygen/voxel/weapon/bow/shortbow-1.vox create mode 100644 assets/voxygen/voxel/weapon/tool/broom-0.vox create mode 100644 assets/voxygen/voxel/weapon/tool/fishing_rod_blue-0.vox create mode 100644 assets/voxygen/voxel/weapon/tool/fishing_rod_orange-0.vox create mode 100644 assets/voxygen/voxel/weapon/tool/hoe_blue.vox create mode 100644 assets/voxygen/voxel/weapon/tool/hoe_green.vox create mode 100644 assets/voxygen/voxel/weapon/tool/pickaxe_green-0.vox create mode 100644 assets/voxygen/voxel/weapon/tool/pitchfork-0.vox create mode 100644 assets/voxygen/voxel/weapon/tool/rake-0.vox create mode 100644 assets/voxygen/voxel/weapon/tool/shovel_blue.vox create mode 100644 assets/voxygen/voxel/weapon/tool/shovel_gold.vox create mode 100644 assets/voxygen/voxel/weapon/tool/shovel_green.vox create mode 100644 assets/voxygen/voxel/weapon/tool/shovel_red.vox diff --git a/CHANGELOG.md b/CHANGELOG.md index ee13ff795a..63ee5cbffc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,6 +65,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added a Level of Detail (LoD) system for terrain sprites and entities - Added owl, hyena, parrot npcs - Added dungeon entrances +- Villagers tools and clothing +- Cultists clothing ### Changed @@ -80,6 +82,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Asset cleanup to lower client-size - Rewrote the humanoid skeleton to be more ideal for attack animations - Arrows can no longer hurt their owners +- Increased overall character scale ### Removed diff --git a/assets/common/items/armor/belt/cultist_belt.ron b/assets/common/items/armor/belt/cultist_belt.ron new file mode 100644 index 0000000000..1b2765d2c8 --- /dev/null +++ b/assets/common/items/armor/belt/cultist_belt.ron @@ -0,0 +1,8 @@ +Item( + name: "Cultist Belt", + description: "Belt\n\nArmor: 0\n\n", + kind: Armor( + kind: Belt(Cultist), + stats: (20), + ), +) diff --git a/assets/common/items/armor/chest/cultist_chest_blue.ron b/assets/common/items/armor/chest/cultist_chest_blue.ron new file mode 100644 index 0000000000..2039ea6d76 --- /dev/null +++ b/assets/common/items/armor/chest/cultist_chest_blue.ron @@ -0,0 +1,8 @@ +Item( + name: "Blue Cultist Chest", + description: "Chest\n\nArmor: 0\n\n", + kind: Armor( + kind: Chest(CultistBlue), + stats: (20), + ), +) diff --git a/assets/common/items/armor/chest/cultist_chest_purple.ron b/assets/common/items/armor/chest/cultist_chest_purple.ron new file mode 100644 index 0000000000..a3bf40b1ff --- /dev/null +++ b/assets/common/items/armor/chest/cultist_chest_purple.ron @@ -0,0 +1,8 @@ +Item( + name: "Purple Cultist Chest", + description: "Chest\n\nArmor: 0\n\n", + kind: Armor( + kind: Chest(CultistPurple), + stats: (20), + ), +) diff --git a/assets/common/items/armor/chest/worker_green_0.ron b/assets/common/items/armor/chest/worker_green_0.ron new file mode 100644 index 0000000000..d474d10ddf --- /dev/null +++ b/assets/common/items/armor/chest/worker_green_0.ron @@ -0,0 +1,8 @@ +Item( + name: "Green Worker Shirt", + description: "Chest\n\nArmor: 0\n\n", + kind: Armor( + kind: Chest(WorkerGreen0), + stats: (20), + ), +) diff --git a/assets/common/items/armor/chest/worker_green_1.ron b/assets/common/items/armor/chest/worker_green_1.ron new file mode 100644 index 0000000000..bae09a6fe9 --- /dev/null +++ b/assets/common/items/armor/chest/worker_green_1.ron @@ -0,0 +1,8 @@ +Item( + name: "Green Worker Shirt", + description: "Chest\n\nArmor: 0\n\n", + kind: Armor( + kind: Chest(WorkerGreen1), + stats: (20), + ), +) diff --git a/assets/common/items/armor/chest/worker_orange_0.ron b/assets/common/items/armor/chest/worker_orange_0.ron new file mode 100644 index 0000000000..6de8ffca79 --- /dev/null +++ b/assets/common/items/armor/chest/worker_orange_0.ron @@ -0,0 +1,8 @@ +Item( + name: "Orange Worker Shirt", + description: "Chest\n\nArmor: 0\n\n", + kind: Armor( + kind: Chest(WorkerOrange0), + stats: (20), + ), +) diff --git a/assets/common/items/armor/chest/worker_orange_1.ron b/assets/common/items/armor/chest/worker_orange_1.ron new file mode 100644 index 0000000000..02e1f57b77 --- /dev/null +++ b/assets/common/items/armor/chest/worker_orange_1.ron @@ -0,0 +1,8 @@ +Item( + name: "Orange Worker Shirt", + description: "Chest\n\nArmor: 0\n\n", + kind: Armor( + kind: Chest(WorkerOrange1), + stats: (20), + ), +) diff --git a/assets/common/items/armor/chest/worker_purple_0.ron b/assets/common/items/armor/chest/worker_purple_0.ron new file mode 100644 index 0000000000..f9fc9b26a5 --- /dev/null +++ b/assets/common/items/armor/chest/worker_purple_0.ron @@ -0,0 +1,8 @@ +Item( + name: "Purple Worker Shirt", + description: "Chest\n\nArmor: 0\n\n", + kind: Armor( + kind: Chest(WorkerPurple0), + stats: (20), + ), +) diff --git a/assets/common/items/armor/chest/worker_purple_1.ron b/assets/common/items/armor/chest/worker_purple_1.ron new file mode 100644 index 0000000000..b183b6607b --- /dev/null +++ b/assets/common/items/armor/chest/worker_purple_1.ron @@ -0,0 +1,8 @@ +Item( + name: "Purple Worker Shirt", + description: "Chest\n\nArmor: 0\n\n", + kind: Armor( + kind: Chest(WorkerPurple1), + stats: (20), + ), +) diff --git a/assets/common/items/armor/chest/worker_red_0.ron b/assets/common/items/armor/chest/worker_red_0.ron new file mode 100644 index 0000000000..0cbdffed32 --- /dev/null +++ b/assets/common/items/armor/chest/worker_red_0.ron @@ -0,0 +1,8 @@ +Item( + name: "Red Worker Shirt", + description: "Chest\n\nArmor: 0\n\n", + kind: Armor( + kind: Chest(WorkerRed0), + stats: (20), + ), +) diff --git a/assets/common/items/armor/chest/worker_red_1.ron b/assets/common/items/armor/chest/worker_red_1.ron new file mode 100644 index 0000000000..5edb6ef876 --- /dev/null +++ b/assets/common/items/armor/chest/worker_red_1.ron @@ -0,0 +1,8 @@ +Item( + name: "Red Worker Shirt", + description: "Chest\n\nArmor: 0\n\n", + kind: Armor( + kind: Chest(WorkerRed1), + stats: (20), + ), +) diff --git a/assets/common/items/armor/chest/worker_yellow_0.ron b/assets/common/items/armor/chest/worker_yellow_0.ron new file mode 100644 index 0000000000..c79a242550 --- /dev/null +++ b/assets/common/items/armor/chest/worker_yellow_0.ron @@ -0,0 +1,8 @@ +Item( + name: "Yellow Worker Shirt", + description: "Chest\n\nArmor: 0\n\n", + kind: Armor( + kind: Chest(WorkerYellow0), + stats: (20), + ), +) diff --git a/assets/common/items/armor/chest/worker_yellow_1.ron b/assets/common/items/armor/chest/worker_yellow_1.ron new file mode 100644 index 0000000000..2200e50e91 --- /dev/null +++ b/assets/common/items/armor/chest/worker_yellow_1.ron @@ -0,0 +1,8 @@ +Item( + name: "Yellow Worker Shirt", + description: "Chest\n\nArmor: 0\n\n", + kind: Armor( + kind: Chest(WorkerYellow1), + stats: (20), + ), +) diff --git a/assets/common/items/armor/foot/cultist_boots.ron b/assets/common/items/armor/foot/cultist_boots.ron new file mode 100644 index 0000000000..70d134e5fe --- /dev/null +++ b/assets/common/items/armor/foot/cultist_boots.ron @@ -0,0 +1,8 @@ +Item( + name: "Cultist Boots", + description: "Feet\n\nArmor: 0\n\n", + kind: Armor( + kind: Foot(Cultist), + stats: (20), + ), +) diff --git a/assets/common/items/armor/hand/cultist_hands_blue.ron b/assets/common/items/armor/hand/cultist_hands_blue.ron new file mode 100644 index 0000000000..c6d3076b58 --- /dev/null +++ b/assets/common/items/armor/hand/cultist_hands_blue.ron @@ -0,0 +1,8 @@ +Item( + name: "Blue Cultist Gloves", + description: "Hands\n\nArmor: 0\n\n", + kind: Armor( + kind: Hand(CultistBlue), + stats: (20), + ), +) diff --git a/assets/common/items/armor/hand/cultist_hands_purple.ron b/assets/common/items/armor/hand/cultist_hands_purple.ron new file mode 100644 index 0000000000..fb89f73edd --- /dev/null +++ b/assets/common/items/armor/hand/cultist_hands_purple.ron @@ -0,0 +1,8 @@ +Item( + name: "Purple Cultist Gloves", + description: "Hands\n\nArmor: 0\n\n", + kind: Armor( + kind: Hand(CultistPurple), + stats: (20), + ), +) diff --git a/assets/common/items/armor/pants/cultist_legs_blue.ron b/assets/common/items/armor/pants/cultist_legs_blue.ron new file mode 100644 index 0000000000..5ad8a8c25a --- /dev/null +++ b/assets/common/items/armor/pants/cultist_legs_blue.ron @@ -0,0 +1,8 @@ +Item( + name: "Blue Cultist Skirt", + description: "Legs\n\nArmor: 0\n\n", + kind: Armor( + kind: Pants(CultistBlue), + stats: (20), + ), +) diff --git a/assets/common/items/armor/pants/cultist_legs_purple.ron b/assets/common/items/armor/pants/cultist_legs_purple.ron new file mode 100644 index 0000000000..39550047d6 --- /dev/null +++ b/assets/common/items/armor/pants/cultist_legs_purple.ron @@ -0,0 +1,8 @@ +Item( + name: "Purple Cultist Skirt", + description: "Legs\n\nArmor: 0\n\n", + kind: Armor( + kind: Pants(CultistPurple), + stats: (20), + ), +) diff --git a/assets/common/items/armor/pants/worker_blue_0.ron b/assets/common/items/armor/pants/worker_blue_0.ron new file mode 100644 index 0000000000..8fc56c4ee6 --- /dev/null +++ b/assets/common/items/armor/pants/worker_blue_0.ron @@ -0,0 +1,8 @@ +Item( + name: "Blue Worker Pants", + description: "Legs\n\nArmor: 0\n\n", + kind: Armor( + kind: Pants(WorkerBlue0), + stats: (20), + ), +) diff --git a/assets/common/items/armor/shoulder/cultist_shoulder_blue.ron b/assets/common/items/armor/shoulder/cultist_shoulder_blue.ron new file mode 100644 index 0000000000..1e4d3965c8 --- /dev/null +++ b/assets/common/items/armor/shoulder/cultist_shoulder_blue.ron @@ -0,0 +1,8 @@ +Item( + name: "Blue Cultist Mantle", + description: "Shoulders\n\nArmor: 0\n\nA strong shoulder to lean on.\n\n", + kind: Armor( + kind: Shoulder(CultistBlue), + stats: (20), + ), +) diff --git a/assets/common/items/armor/shoulder/cultist_shoulder_purple.ron b/assets/common/items/armor/shoulder/cultist_shoulder_purple.ron new file mode 100644 index 0000000000..095d218bf3 --- /dev/null +++ b/assets/common/items/armor/shoulder/cultist_shoulder_purple.ron @@ -0,0 +1,8 @@ +Item( + name: "Purple Cultist Mantle", + description: "Shoulders\n\nArmor: 0\n\nA strong shoulder to lean on.\n\n", + kind: Armor( + kind: Shoulder(CultistPurple), + stats: (20), + ), +) diff --git a/assets/common/items/debug/cultist_belt.ron b/assets/common/items/debug/cultist_belt.ron new file mode 100644 index 0000000000..1b2765d2c8 --- /dev/null +++ b/assets/common/items/debug/cultist_belt.ron @@ -0,0 +1,8 @@ +Item( + name: "Cultist Belt", + description: "Belt\n\nArmor: 0\n\n", + kind: Armor( + kind: Belt(Cultist), + stats: (20), + ), +) diff --git a/assets/common/items/debug/cultist_boots.ron b/assets/common/items/debug/cultist_boots.ron new file mode 100644 index 0000000000..70d134e5fe --- /dev/null +++ b/assets/common/items/debug/cultist_boots.ron @@ -0,0 +1,8 @@ +Item( + name: "Cultist Boots", + description: "Feet\n\nArmor: 0\n\n", + kind: Armor( + kind: Foot(Cultist), + stats: (20), + ), +) diff --git a/assets/common/items/debug/cultist_chest_blue.ron b/assets/common/items/debug/cultist_chest_blue.ron new file mode 100644 index 0000000000..2039ea6d76 --- /dev/null +++ b/assets/common/items/debug/cultist_chest_blue.ron @@ -0,0 +1,8 @@ +Item( + name: "Blue Cultist Chest", + description: "Chest\n\nArmor: 0\n\n", + kind: Armor( + kind: Chest(CultistBlue), + stats: (20), + ), +) diff --git a/assets/common/items/debug/cultist_hands_blue.ron b/assets/common/items/debug/cultist_hands_blue.ron new file mode 100644 index 0000000000..c6d3076b58 --- /dev/null +++ b/assets/common/items/debug/cultist_hands_blue.ron @@ -0,0 +1,8 @@ +Item( + name: "Blue Cultist Gloves", + description: "Hands\n\nArmor: 0\n\n", + kind: Armor( + kind: Hand(CultistBlue), + stats: (20), + ), +) diff --git a/assets/common/items/debug/cultist_legs_blue.ron b/assets/common/items/debug/cultist_legs_blue.ron new file mode 100644 index 0000000000..5ad8a8c25a --- /dev/null +++ b/assets/common/items/debug/cultist_legs_blue.ron @@ -0,0 +1,8 @@ +Item( + name: "Blue Cultist Skirt", + description: "Legs\n\nArmor: 0\n\n", + kind: Armor( + kind: Pants(CultistBlue), + stats: (20), + ), +) diff --git a/assets/common/items/debug/cultist_shoulder_blue.ron b/assets/common/items/debug/cultist_shoulder_blue.ron new file mode 100644 index 0000000000..1e4d3965c8 --- /dev/null +++ b/assets/common/items/debug/cultist_shoulder_blue.ron @@ -0,0 +1,8 @@ +Item( + name: "Blue Cultist Mantle", + description: "Shoulders\n\nArmor: 0\n\nA strong shoulder to lean on.\n\n", + kind: Armor( + kind: Shoulder(CultistBlue), + stats: (20), + ), +) diff --git a/assets/common/items/debug/plate_0.ron b/assets/common/items/debug/plate_0.ron deleted file mode 100644 index c7195ae78f..0000000000 --- a/assets/common/items/debug/plate_0.ron +++ /dev/null @@ -1,8 +0,0 @@ -Item( - name: "Iron Belt", - description: "Belt\n\nArmor: 0\n\n", - kind: Armor( - kind: Belt(Plate0), - stats: (20), - ), -) diff --git a/assets/common/items/debug/plate_feet.ron b/assets/common/items/debug/plate_feet.ron deleted file mode 100644 index 9cb67b8a09..0000000000 --- a/assets/common/items/debug/plate_feet.ron +++ /dev/null @@ -1,8 +0,0 @@ -Item( - name: "Iron Feet", - description: "Feet\n\nArmor: 0\n\n", - kind: Armor( - kind: Foot(Plate0), - stats: (20), - ), -) diff --git a/assets/common/items/debug/plate_green_0.ron b/assets/common/items/debug/plate_green_0.ron deleted file mode 100644 index 23b22609a1..0000000000 --- a/assets/common/items/debug/plate_green_0.ron +++ /dev/null @@ -1,8 +0,0 @@ -Item( - name: "Iron Chestplate", - description: "Chest\n\nArmor: 0", - kind: Armor( - kind: Chest(PlateGreen0), - stats: (20), - ), -) diff --git a/assets/common/items/debug/plate_green_legs.ron b/assets/common/items/debug/plate_green_legs.ron deleted file mode 100644 index 2502369711..0000000000 --- a/assets/common/items/debug/plate_green_legs.ron +++ /dev/null @@ -1,8 +0,0 @@ -Item( - name: "Iron Legguards", - description: "Legs\n\nArmor: 0\n\n", - kind: Armor( - kind: Pants(PlateGreen0), - stats: (20), - ), -) diff --git a/assets/common/items/debug/plate_hand.ron b/assets/common/items/debug/plate_hand.ron deleted file mode 100644 index 3f3e122290..0000000000 --- a/assets/common/items/debug/plate_hand.ron +++ /dev/null @@ -1,8 +0,0 @@ -Item( - name: "Iron Handguards", - description: "Hands\n\nArmor: 0\n\n", - kind: Armor( - kind: Hand(Plate0), - stats: (20), - ), -) diff --git a/assets/common/items/debug/plate_shoulder.ron b/assets/common/items/debug/plate_shoulder.ron deleted file mode 100644 index 75035d21ab..0000000000 --- a/assets/common/items/debug/plate_shoulder.ron +++ /dev/null @@ -1,8 +0,0 @@ -Item( - name: "Iron Shoulderguards", - description: "Shoulders\n\nArmor: 0\n\A strong shoulder to lean on.", - kind: Armor( - kind: Shoulder(Plate0), - stats: (20), - ), -) diff --git a/assets/common/items/weapons/starter_axe.ron b/assets/common/items/weapons/axe/starter_axe.ron similarity index 100% rename from assets/common/items/weapons/starter_axe.ron rename to assets/common/items/weapons/axe/starter_axe.ron diff --git a/assets/common/items/weapons/starter_bow.ron b/assets/common/items/weapons/bow/starter_bow.ron similarity index 84% rename from assets/common/items/weapons/starter_bow.ron rename to assets/common/items/weapons/bow/starter_bow.ron index 4dcc9ed424..9be6b10661 100644 --- a/assets/common/items/weapons/starter_bow.ron +++ b/assets/common/items/weapons/bow/starter_bow.ron @@ -3,7 +3,7 @@ Item( description: "Bow\n\nPower: 5\n\nSomeone carved his initials into it...\n\n", kind: Tool( ( - kind: Bow(BasicBow), + kind: Bow(ShortBow0), equip_time_millis: 400, ) ), diff --git a/assets/common/items/weapons/starter_dagger.ron b/assets/common/items/weapons/dagger/starter_dagger.ron similarity index 100% rename from assets/common/items/weapons/starter_dagger.ron rename to assets/common/items/weapons/dagger/starter_dagger.ron diff --git a/assets/common/items/weapons/hammer_1.ron b/assets/common/items/weapons/hammer/hammer_1.ron similarity index 100% rename from assets/common/items/weapons/hammer_1.ron rename to assets/common/items/weapons/hammer/hammer_1.ron diff --git a/assets/common/items/weapons/starter_hammer.ron b/assets/common/items/weapons/hammer/starter_hammer.ron similarity index 100% rename from assets/common/items/weapons/starter_hammer.ron rename to assets/common/items/weapons/hammer/starter_hammer.ron diff --git a/assets/common/items/weapons/shield_1.ron b/assets/common/items/weapons/shield/shield_1.ron similarity index 100% rename from assets/common/items/weapons/shield_1.ron rename to assets/common/items/weapons/shield/shield_1.ron diff --git a/assets/common/items/weapons/staff_1.ron b/assets/common/items/weapons/staff/staff_1.ron similarity index 100% rename from assets/common/items/weapons/staff_1.ron rename to assets/common/items/weapons/staff/staff_1.ron diff --git a/assets/common/items/weapons/staff_nature.ron b/assets/common/items/weapons/staff/staff_nature.ron similarity index 100% rename from assets/common/items/weapons/staff_nature.ron rename to assets/common/items/weapons/staff/staff_nature.ron diff --git a/assets/common/items/weapons/starter_staff.ron b/assets/common/items/weapons/staff/starter_staff.ron similarity index 100% rename from assets/common/items/weapons/starter_staff.ron rename to assets/common/items/weapons/staff/starter_staff.ron diff --git a/assets/common/items/weapons/short_sword_0.ron b/assets/common/items/weapons/sword/short_sword_0.ron similarity index 100% rename from assets/common/items/weapons/short_sword_0.ron rename to assets/common/items/weapons/sword/short_sword_0.ron diff --git a/assets/common/items/weapons/starter_sword.ron b/assets/common/items/weapons/sword/starter_sword.ron similarity index 100% rename from assets/common/items/weapons/starter_sword.ron rename to assets/common/items/weapons/sword/starter_sword.ron diff --git a/assets/common/items/weapons/wood_sword.ron b/assets/common/items/weapons/sword/wood_sword.ron similarity index 100% rename from assets/common/items/weapons/wood_sword.ron rename to assets/common/items/weapons/sword/wood_sword.ron diff --git a/assets/common/items/weapons/zweihander_sword_0.ron b/assets/common/items/weapons/sword/zweihander_sword_0.ron similarity index 100% rename from assets/common/items/weapons/zweihander_sword_0.ron rename to assets/common/items/weapons/sword/zweihander_sword_0.ron diff --git a/assets/common/items/weapons/tool/broom.ron b/assets/common/items/weapons/tool/broom.ron new file mode 100644 index 0000000000..8edc349d37 --- /dev/null +++ b/assets/common/items/weapons/tool/broom.ron @@ -0,0 +1,10 @@ +Item( + name: "Broom", + description: "", + kind: Tool ( + ( + kind: Farming(Broom), + equip_time_millis: 400, + ) + ), +) diff --git a/assets/common/items/weapons/tool/fishing_rod.ron b/assets/common/items/weapons/tool/fishing_rod.ron new file mode 100644 index 0000000000..4c28cd5598 --- /dev/null +++ b/assets/common/items/weapons/tool/fishing_rod.ron @@ -0,0 +1,10 @@ +Item( + name: "Fishing Rod", + description: "", + kind: Tool ( + ( + kind: Farming(FishingRod0), + equip_time_millis: 400, + ) + ), +) diff --git a/assets/common/items/weapons/tool/hoe.ron b/assets/common/items/weapons/tool/hoe.ron new file mode 100644 index 0000000000..528eb22309 --- /dev/null +++ b/assets/common/items/weapons/tool/hoe.ron @@ -0,0 +1,10 @@ +Item( + name: "Hoe", + description: "", + kind: Tool ( + ( + kind: Farming(Hoe0), + equip_time_millis: 400, + ) + ), +) diff --git a/assets/common/items/weapons/tool/pickaxe.ron b/assets/common/items/weapons/tool/pickaxe.ron new file mode 100644 index 0000000000..197724284b --- /dev/null +++ b/assets/common/items/weapons/tool/pickaxe.ron @@ -0,0 +1,10 @@ +Item( + name: "Pickaxe", + description: "", + kind: Tool ( + ( + kind: Farming(Pickaxe0), + equip_time_millis: 400, + ) + ), +) diff --git a/assets/common/items/weapons/tool/pitchfork.ron b/assets/common/items/weapons/tool/pitchfork.ron new file mode 100644 index 0000000000..ca2474db74 --- /dev/null +++ b/assets/common/items/weapons/tool/pitchfork.ron @@ -0,0 +1,10 @@ +Item( + name: "Pitchfork", + description: "", + kind: Tool ( + ( + kind: Farming(Pitchfork), + equip_time_millis: 400, + ) + ), +) diff --git a/assets/common/items/weapons/tool/rake.ron b/assets/common/items/weapons/tool/rake.ron new file mode 100644 index 0000000000..43aa815603 --- /dev/null +++ b/assets/common/items/weapons/tool/rake.ron @@ -0,0 +1,10 @@ +Item( + name: "Rake", + description: "", + kind: Tool ( + ( + kind: Farming(Rake), + equip_time_millis: 400, + ) + ), +) diff --git a/assets/common/items/weapons/tool/shovel-0.ron b/assets/common/items/weapons/tool/shovel-0.ron new file mode 100644 index 0000000000..2cd8adb761 --- /dev/null +++ b/assets/common/items/weapons/tool/shovel-0.ron @@ -0,0 +1,10 @@ +Item( + name: "Shovel", + description: "", + kind: Tool ( + ( + kind: Farming(Shovel0), + equip_time_millis: 400, + ) + ), +) diff --git a/assets/common/items/weapons/tool/shovel-1.ron b/assets/common/items/weapons/tool/shovel-1.ron new file mode 100644 index 0000000000..033d72b89a --- /dev/null +++ b/assets/common/items/weapons/tool/shovel-1.ron @@ -0,0 +1,10 @@ +Item( + name: "Shovel", + description: "", + kind: Tool ( + ( + kind: Farming(Shovel1), + equip_time_millis: 400, + ) + ), +) diff --git a/assets/voxygen/element/buttons/inv_slot.png b/assets/voxygen/element/buttons/inv_slot.png index a30ea33329bbe02dbf3eb2dd1ea00ab213f9e4a5..0501fe790bfa59c659cc03a05ab2947658a9ee6a 100644 GIT binary patch delta 227 zcmV<90383m0>A>0Wq-y=L_t(|+U%LJ4Z|Q1MURYt8=$)>vVPu$m`1LF|kK8^=`Rda?`h4`9M=imGOfD<{yx%D=LZhi2+ z^S1G?Z8K(y@pvxF=_dcu6ytmY=Hd@XGsj6aXV4N~AFwdaU|i7*%IJgSZe`U6Q_>P& zAJ726swb#`3aEgR0qNYzNe)rRP62@Qt%Q?o2wGwRfb@NilLqg##1i@-;|yBO;4j8b d?%xof0RT%eJwhc1Y0&@x002ovPDHLkV1nw1YJ>m) delta 225 zcmV<703QFq0=@!}Wq-s;L_t(|+U%LJ4Z|Q5L_bNJ#<&S|p2ABYWsA7-KoD9$=e)cqDao2#%_T;unB+ZvJ!oq;4|`)avtG?h z2$Q-#w*dSe)I3wsc_gPI-u0t)>%#1jAj b|NjF313x(O=H|_B00000NkvXXu0mjfKVxHg diff --git a/assets/voxygen/element/icons/bow_m2.vox b/assets/voxygen/element/icons/bow_m2.vox index 84229e144bf48c11c509a01d1d645bc54ff86dc9..5b18adae1a0156ddc4935c87c0bcece059ba5b77 100644 GIT binary patch delta 71 zcmdnDiTMPFO_+a#!ZZd3246={KOn_m!ot81>>1_C1L6PyBNC2?jPe9Z!@*`PCLR_5 DxPl2G literal 55614 zcmdtqdwdkt6$kLEh$5hX2>}9zH33P23A3BsB)r2TLLdZ45FrA?COg?3vf174Zk|oC z5TznT5L3Vw1ZpW-3Ia{2*0vZZwX~E{q`oPo)@t9jwbnk5_uSbm(u`RHq zv}9Cg5c|ANeo}1XW8MODN*4{b4n=1he{x-}p$3k{+}>C2dca*{B+7$Gwdwa)xWjtH zAB^f1rdO}<_L1#8hWt-~fd4aOIi?{%9+<~{w(fPP|#`4l+K8S5y zM&>}{A+F8h#vWPr?pdtrk>%)~#aGlLE2n!F&vuV2XZI|guO3;h?pZhXmX+H*izl#0 ztvt>uoilTWh%JA9em*rfH`A4Eg68f%O=*cA())>t)X}kkQ|VAqJC)4W$h~qhHP_9j z_Kii zT}K45NtGnK|P zXHsrk0gVhNQtIYp%G^Ji>@SX^VJifUSto067c}LBAhAS_-_(yp>#Zb?CDO)mL+F4u zlrBykNi^>cYL)lfak;-N_qXNV+92rgV}d#k2s(3A#sz}*6$*N`RL~`_pmG^EEETlX zBiri)&B_q8Dqm3DY(YC^`(kG@nT4s;v^br%8xCr|Cy%!KW>LpO_tHE2O`0$wiKaM4 z)BNe_WGv02>Un}%Rtnk^6?9^Ypxl&XD#{!~D{`|bJbNN7%}gTGIg&Qd8B6cJa)=72 z*lFS26RCXB460sTLQTPP+WKHMwH??%7f$V_sjl(V@zfg1%F3eQ2}8)~bdo(Im2$K1 zq)Cnp+WNpKI=nZPUOkgZm(Go+U2@E}{esRuFX*k81T~rIw6i6LUO!n(@4Zn*;Z1{S z^V5lR^!y0AM5F(2|M;}7e*3V2|Fges)db4P$)QK{_Rs|TKAOC7Jr$=VP~qqybn!kx z2h-CjBO`-+X?0XQ_ZW$mCK?(ZO2>CtYq&O9-a9ENbpO~^nl^bGc{XjJ;j4zxxo5`G z@$wP0&1UN{|D4CQmY1ESu#c#5#{p`2vW*@&c8VT<;R3lr8)@45Jv9G`6I6EO0u>Y# z&=vU#6aC~)A5fnQf-XNN)b(AK_tz(#mk+6W&OYvwPk!7vZeO@Ig^IUmG^k(@y}2u) zN3OFVgQl0LmsXE+vcLRpv84DUAIOd07W~~py|tr_A)}uRbdOn8RU0w*b)wfBrq>tc zJUhRH^l-4&>*E)omTgzPA|a#Fie0J$$9gE%!mk|N42G>RM}_XFDyMOq?$x+0OUrgy zq20>Nx1xG0%2NYX`D+{aI#dtc?+L5mS`ELwaWrhl(eN_kX!wT2(eQ(fqv5v@j)q^z zIGUTGH2tA81E4hg%-}pXw?Jubh0+Xy((uoEaGskXP@3DIGzm}|{%Ix7b2Ai5lLVz1 z2BjGer5ORG;lE+Qd8dtp((vEi;jGQ=P?{7d&1fi%4N7wdlqMBQlLn<31Em=YrQv_) zgY##BaZs9cC`|^GCKF0C9!hf;lqL&GlMSVr0Hx8OGc z2$be1l;#+e<{MC&HYiOyl;${;=9^HOXQ4FDL214PrFkAo^KB^2cc3)ih0>gW(!2nr z>44IlgwmXX(tHm}a~ewXeJIU~P?{e=Y0f}teh8)c5tQaEl;+1!nsZQ^pFnBOLuq~r zrMUp5c?n8$5lZtjD9y`InpdDSuR>{FgVMYXrFjEN^Cpz$5|rlWP@2n7nqNR^u0Uyi z38i@pO7kly&D&6#Uqfl$fzrGSrTGn%=C@Fq-$7}952g77l;)36nm<8l-h~>RF%`XP4{ZtmZfF8tk7;{=37y{73Hacs{FMLd>yKX?)QXM5MDTQUYcy> z?RvS#C2A}qP^TJdf*vEDZmMJ<*wZ!L3{-Iq-HeT^g6aXX$>DO@V!N6Kcfjj6xU);M zxinS99X8xNsFtl+7wj=3)$u{|b(ps`e zrQ2`a{Ob91^8;$#8@#@H)E71)zMx-Csh!7|8XKd_t*ZKZ< yWEC@_QCaMoX;Z5mzX(-AMTUf3jVio)WtYgUBE?iI$$jiL`K3Bn8h$?~*gpdGhXp?X diff --git a/assets/voxygen/element/icons/item_apple.vox b/assets/voxygen/element/icons/item_apple.vox index 93797aac7face86a8645b062bcbaa59a807563cc..b7d71183e83b7c46609dc8eb935374f04e21468e 100644 GIT binary patch delta 665 zcmWmAO^Ve(7=_`JRMl7iNk)zo?4`6I(gPI~L>xMD7k3SfAh-e-;J}Fk7vZ#>K3NL?mPszuta%@;PuLtO~Gj zr-&4GWfW92&N?Q{7;MvMM>$*N5$sN8{}gRkLPkMFv;FJu;n^X?U4|IXO7TINbwNc# z$AmfFYr&9qjd1V?FvRqrl+MazL1nL@W5S&1W61R3;PZY^U}1=v7vzgFS;$H@_B$rb zSn|EbLKz+bhFItpy5+3Gx}ve)F=571PI8qV0t~Sp_%oHSMyY32vT@KcVXh}F2#o?F q5^_7KH14A@cjgH*Vm~P%qxOp$*)cuN6Z4Ga^6u4(Yx$qwz4`x4{Gw0* literal 56231 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 o-*B38_63^}$jAeWxFVdQ&MBb@0E+`zi2wiq literal 1304 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 literal 56791 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 H6=MGeyPum? diff --git a/assets/voxygen/element/icons/item_grass.vox b/assets/voxygen/element/icons/item_grass.vox index 23a18f7ed1ba9c3bb9861d679278c7b9d968be12..7c12db0e6fb80ab02145621924e2c96efe8f4588 100644 GIT binary patch literal 2028 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 diff --git a/assets/voxygen/item_image_manifest.ron b/assets/voxygen/item_image_manifest.ron index a2c33550b6..17e2998392 100644 --- a/assets/voxygen/item_image_manifest.ron +++ b/assets/voxygen/item_image_manifest.ron @@ -4,8 +4,8 @@ ({ // Weapons // Bows - Tool(Bow(BasicBow)): VoxTrans( - "voxel.weapon.bow.simple-bow", + Tool(Bow(ShortBow0)): VoxTrans( + "voxel.weapon.bow.shortbow-0", (0.0, 0.0, 0.0), (90.0, 90.0, 0.0), 1.0, ), // Daggers @@ -16,38 +16,38 @@ // Swords Tool(Sword(Short0)): VoxTrans( "voxel.weapon.sword.short_2h-0", - (0.0, 9.0, 0.0), (-90.0, 90.0, 0.0), 2.4, + (-3.0, 3.0, 0.0), (-135.0, 90.0, 0.0), 1.60, ), Tool(Sword(BasicSword)): VoxTrans( "voxel.weapon.sword.rusty_2h", - (0.0, 9.0, 0.0), (-90.0, 90.0, 0.0), 2.4, + (0.0, 0.0, 0.0), (-135.0, 90.0, 0.0), 1.3, ), Tool(Sword(Zweihander0)): VoxTrans( "voxel.weapon.sword.zweihander_2h-0", - (0.0, 9.0, 0.0), (-90.0, 90.0, 0.0), 2.4, + (0.0, 0.0, 0.0), (-135.0, 90.0, 0.0), 1.2, ), Tool(Sword(WoodTraining)): VoxTrans( "voxel.weapon.sword.wood_2h", - (0.0, 9.0, 0.0), (-90.0, 90.0, 0.0), 2.4, + (0.0, 0.0, 0.0), (-135.0, 90.0, 0.0), 1.3, ), // Axes Tool(Axe(BasicAxe)): VoxTrans( "voxel.weapon.axe.rusty_2h", - (0.0, -8.0, 0.0), (-90.0, 90.0, 0.0), 2.0, + (1.0, -1.0, 0.0), (-135.0, 90.0, 0.0), 1.2, ), // Hammers Tool(Hammer(BasicHammer)): VoxTrans( "voxel.weapon.hammer.rusty_2h", - (0.0, -8.0, 0.0), (-90.0, 90.0, 0.0), 2.0, + (2.0, -1.0, 0.0), (-135.0, 90.0, 0.0), 1.1, ), // Staffs Tool(Staff(BasicStaff)): VoxTrans( "voxel.weapon.staff.wood-fire", - (0.0, -9.0, 0.0), (90.0, 90.0, 0.0), 2.5, + (1.0, 0.0, 0.0), (-310., 90.0, 0.0), 1.2, ), Tool(Staff(Sceptre)): VoxTrans( "voxel.weapon.staff.wood-nature", - (0.0, -9.0, 0.0), (90.0, 90.0, 0.0), 2.5, + (1.0, -1.0, 0.0), (-310., 90.0, 0.0), 1.2, ), // Shields Tool(Shield(BasicShield)): VoxTrans( @@ -61,6 +61,48 @@ Lantern(Green0): Png( "element.icons.lantern_green-0", ), + // Farming Equipment + Tool(Farming(Broom)): VoxTrans( + "voxel.weapon.tool.broom-0", + (0.0, 0.0, 0.0), (-135.0, 90.0, 0.0), 1.1, + ), + Tool(Farming(Hoe0)): VoxTrans( + "voxel.weapon.tool.hoe_green", + (0.0, 0.0, 0.0), (130.0, 35.0, 180.0), 1.0, + ), + Tool(Farming(Hoe1)): VoxTrans( + "voxel.weapon.tool.hoe_blue", + (0.0, 0.0, 0.0), (130.0, 35.0, 180.0), 1.0, + ), + Tool(Farming(Pitchfork)): VoxTrans( + "voxel.weapon.tool.pitchfork-0", + (0.0, 0.0, 0.0), (-135.0, 90.0, 0.0), 1.1, + ), + Tool(Farming(Rake)): VoxTrans( + "voxel.weapon.tool.rake-0", + (0.0, 0.0, 0.0), (-135.0, 90.0, 0.0), 1.0, + ), + Tool(Farming(FishingRod0)): VoxTrans( + "voxel.weapon.tool.fishing_rod_blue-0", + (0.0, 0.0, 0.0), (90.0, 90.0, 0.0), 1.5, + ), + Tool(Farming(FishingRod0)): VoxTrans( + "voxel.weapon.tool.fishing_rod_orange-0", + (0.0, 0.0, 0.0), (90.0, 90.0, 0.0), 1.0, + ), + Tool(Farming(Pickaxe0)): VoxTrans( + "voxel.weapon.tool.pickaxe_green-0", + (0.0, 0.0, 0.0), (-135.0, 90.0, 0.0), 1.0, + ), + Tool(Farming(Shovel0)): VoxTrans( + "voxel.weapon.tool.shovel_green", + (0.0, 0.0, 0.0), (-135.0, 90.0, 0.0), 1.2, + ), + Tool(Farming(Shovel1)): VoxTrans( + "voxel.weapon.tool.shovel_gold", + (0.0, 0.0, 0.0), (-135.0, 90.0, 0.0), 1.2, + ), + // Other Utility(Collar): Png( "element.icons.collar", @@ -79,6 +121,92 @@ "voxel.armor.chest.rugged-0", (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, ), + // Cultist Clothing + Armor(Chest(CultistPurple)): VoxTrans( + "voxel.armor.chest.cultist", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Pants(CultistPurple)): VoxTrans( + "voxel.armor.pants.cultist", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Belt(Cultist)): VoxTrans( + "voxel.armor.belt.cultist", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.4, + ), + Armor(Foot(Cultist)): VoxTrans( + "voxel.armor.foot.cultist", + (0.0, 0.0, 0.0), (-95.0, 140.0, 0.0), 1.1, + ), + Armor(Hand(CultistPurple)): VoxTrans( + "voxel.armor.hand.cultist_right", + (0.0, -1.0, 0.0), (-90.0, 135.0, 0.0), 1.0, + ), + Armor(Shoulder(CultistPurple)): VoxTrans( + "voxel.armor.shoulder.cultist_right", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Chest(CultistBlue)): VoxTrans( + "voxel.armor.chest.cultist", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Pants(CultistBlue)): VoxTrans( + "voxel.armor.pants.cultist", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Hand(CultistBlue)): VoxTrans( + "voxel.armor.hand.cultist_right", + (0.0, -1.0, 0.0), (-90.0, 135.0, 0.0), 1.0, + ), + Armor(Shoulder(CultistBlue)): VoxTrans( + "voxel.armor.shoulder.cultist_right", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + // Villager Clothing + Armor(Pants(WorkerBlue0)): VoxTrans( + "voxel.armor.pants.worker_blue-0", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Chest(WorkerGreen0)): VoxTrans( + "voxel.armor.chest.worker_green-0", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Chest(WorkerGreen1)): VoxTrans( + "voxel.armor.chest.shirt_white-0", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Chest(WorkerRed0)): VoxTrans( + "voxel.armor.chest.worker_green-0", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Chest(WorkerRed1)): VoxTrans( + "voxel.armor.chest.shirt_white-0", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Chest(WorkerPurple0)): VoxTrans( + "voxel.armor.chest.worker_green-0", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Chest(WorkerPurple1)): VoxTrans( + "voxel.armor.chest.shirt_white-0", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Chest(WorkerYellow0)): VoxTrans( + "voxel.armor.chest.worker_green-0", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Chest(WorkerYellow1)): VoxTrans( + "voxel.armor.chest.shirt_white-0", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Chest(WorkerOrange0)): VoxTrans( + "voxel.armor.chest.worker_green-0", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Chest(WorkerOrange1)): VoxTrans( + "voxel.armor.chest.shirt_white-0", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), // Assassin Set Armor(Chest(Assassin)): VoxTrans( "voxel.armor.chest.assa", @@ -284,9 +412,10 @@ "voxel.object.potion_red", (0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.8, ), - Consumable(Cheese): Png( + Consumable(Cheese): VoxTrans( "element.icons.item_cheese", - ), + (0.0, 0.0, 0.0), (-90.0, 90.0, 0.0), 0.9, + ), Consumable(Potion): VoxTrans( "voxel.object.potion_red", (0.0, 0.0, 0.0), (90.0, 90.0, 0.0), 1.0, diff --git a/assets/voxygen/voxel/armor/belt/cultist.vox b/assets/voxygen/voxel/armor/belt/cultist.vox new file mode 100644 index 0000000000000000000000000000000000000000..a1374d982db165b0ad247315b173b80a882e20fb GIT binary patch literal 1536 zcmbu;Urbw790%~lhjX*+@mVY8uuw zOSZZhTu_FDY2vJC8Xk;TNhO+@AX&&<(kzB7#+QZc!8ds`#<#EEGM^022XFGpJ?DJy zzu!6M2K$dz%!x=}SKu&D@|!6#7zp_v&UJX~AO{(A^jIkHy~YNQ*GbtjX4o=elEtu6Ns&P&S!9!@Gb2R?nPibo4$>5JQe==x7TM$=&0tQ73^K_gn;fK@ z%*Y^*zA+Vwk|qr(OHYmT6ET;vlgAT=&Xeq8Dx@0HfcIDQe==x z7TM$=O))1$2AO1$O%Bow=A_6VlPt2yLAuF|3^K_go0P>dGRY!k>#T)+ve;I(;yNj= zlj1t5u_FifcWo^w*AP77@i^|y2zsuqq00Fues?;ty4shE@MYke2g>smp?zo{{I7Mw zn{0#lO-OhLWd1S8S`qU41jXZmI)4rJqy>(!;E{x&U|LZ0g`m0bA@q*tA#}a~?=C-% z?zmuJR`BYg;OtMlcfbYrmBZ9jp z1*xe@yz{1O>zr%nq|<3+vsr9zZepO>g)zSev4P!~8*N1VrB=+HI)ItcE+9LPx~d{{ zG?wGgv%4`GY(=2|V5Cg}w z`t6-q{M3VAZq?%M?K*tScV<$8>~(=#d=#Sy$|Z~n89}9-fJcI;l73W64?>)eiJ)M5 zg!2*=9PkQ;pAtm71s`(!-|EMYNnm5`f7jpC)PyUoNz^yYqkZxMN)x5H`I+F(ac|E-Z&iF~d3g z=ltic%RTGZU>1>6z}c${NPM2bdrLR)(GTm`cX|??7m_&i$qEM3>+tz}xW`Ws2jLH> xb-~7W_rGt0`|H2*zkfk&d%m99`UkhonB>MEl;v*TxqlobZ7-v&esQ~NH-TD7Mda-1rfxhWi3mkNKrz!6pewj%SvolgY9P1 zq+Qzv8)7RZ!JR>4qZNY;K((e%I4Tb_w+QNe>k3Ee2heN>%WnUEu66KUmCF-OmhFC-? zIx)mjYD8%|F~rj917+yM5Q`{_P7JXu<{flmh~;3tQw6n?PAsBCk7&`|Ml@$>&eEKv zIg768#1KpCurhRFh-LJMvgnq+Xc#Svc?aD=XS9fNvbU4Hopx^%*2;7nW!Tq@Xw7qN z*q3hThHmIYS#*nT(TQ@f)2Z4+y2$pk#&@i^{J2|BK=p)}_&{E?G`)zvOL zg>Qo2|0|h(7n%q5An;Bre6vlEfCCbF95VL|WX*-lESE6CbkHTmUyc2FzCW}yW zs~mX)g0i!MT{D7~6@k3Y`LPVh^wW^V9E_J|VgC7C+Hd-i>g;i&#$uW`=7K zf1?pI$M<1sxD80pp{mq{mf9j5c)0?@eT|583KB;Jv+oO5J`pr{+z3{dVW43*qU}xS zt8^h;UxC7?2-VI^$d<0AL7qEWw8nUvoke{7};^Jb| z_`GP?{TyDb^&!wwgYH+FF!|vQEPUa`Z?`LP?@kr2a^_M}kiH@Ch@Zqr6h#t2u?(R^ zj>0Q_D3xxMNe4n)k5heu$sw-Gm|&kzF!+LCtX=RKuRrSj@$)ROvG%{;zpkzhmm6nM zT{DN~@pC9h6yVmEg1bk!b(2Z>d_Ihgjp5afMMxrs+-NSAuRQpMXWZO79uF>`pGIr* z6oxKcK>lDJ?tHrw%b@~Han1g@{`P%#ufx4*M2`cfugoLy)e=5lyot|$TF0If<7hoM ziv!nJ(3@I^-|xqLK8j=z{0Xxz*!c0m^KEc{{a2oU;nsh)ZM>0ubdDLjX4|@lIlFkr R-cjT?y@|r=h3)Q@zX3C#KcWBt literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/armor/chest/cultist.vox b/assets/voxygen/voxel/armor/chest/cultist.vox new file mode 100644 index 0000000000000000000000000000000000000000..0fab598becca0c1d73b1cf61eb0a886240d29f40 GIT binary patch literal 2792 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 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/armor/chest/worker_green-0.vox b/assets/voxygen/voxel/armor/chest/worker_green-0.vox new file mode 100644 index 0000000000000000000000000000000000000000..dc30bb8f394dfb372a90f9eae1f9b087fdb079b7 GIT binary patch literal 2696 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 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/armor/chest/worker_white-0.vox b/assets/voxygen/voxel/armor/chest/worker_white-0.vox new file mode 100644 index 0000000000000000000000000000000000000000..78c7a95d68a0087d0daf32f96de4d3503712909a GIT binary patch literal 2696 zcmbu=Uu>0k9mnzCpXc}Id7jf{bEQI=P+B)QhXn+-LItrv>(;R`8Iz2HXbfZ{b#ZBy zW^0;VtZoSsT*nBTiCEDz#F*hmD$(o$$wF{Rvn;q66GO;i@Y)Mwj5iht`5-_Nh-e81wvWz3$D(cwmW!Q(b0lz3v_=*UpyhR2LG zrZA=%jA^meBGbws*Ywu(6$pq($S6_4JL(9CNXRHr!F%cmh)BpNQNb6~5fG7(QKEtm zrdb5j3V}KjGD`L;Y9aEPk&sasOCOd#EPYt|u=HW+!}b=|(ubuFOCOd#EPYt|u)WUN z72a8TA%lp7j1m=UGR~9p%kWr#SO~w`E3UUaDNXRHrp>Ah_r9U!=NXRHrwQJF~ zLbR(R5;98mym8F}!8m$#^y=u<(W`4#aMrEx*74psdUo{e=-JV;qi09YuCFFzXxzd% z@{T+LA`&u6RH(@`$acUmEDPs3=Q)Rfh=hz16>2gKvK=rC*uoW@D>#RMh=hz16>2gK zvK{SwARp*CkViy9Mv01AO{R#BdAVjpLPp7+H=cRjczZ@llbaGrBq3j{&nkC41f! z%&Xw@RrE$v^d)5OOZF-_TQDy&wqRZb^CE+c5*4+Y3~w~EBJ0RHvWQ5?C{aKnoJSt zJ+hCI`@)81u%S01A){o^yFg#mT%fN&UxB^?eT8NP@2Mkr>PW~a*{k3S>InQ1h)BpN z*{j;MKrL_vCHF-Pe4g9S7i~mBM)0hWkP-O95s{D)Tq2*yC-QXQStB7M6s(bu5nLvp z$!GF(>sccqBNVKWknz|9+qbp1#XI{&V}c6RF0rAOK&y*cvB zPj&lXmo^``U&G(ts^;u~%y5tyt7Oi6M&@#t2G?%V&Q063Z~HFY`<782GwPT&x^u>; z>*q!b3k$k&dzJ@-~_CojSVm4xRnNB7OL!rP4zyw3(Ji z@O#|A$>)sDy=HXjtkHXKvmP`$Gi>y$$BeE$X*A0ExxGd+huEJm+R-#RxXEZ@$mkze zPHXpl-8wSdtI6G~bn5VWO?_>nPCd0lCk}6u7S3pOUzfJ5U#^{BUZul(H)`x5qv@|3 z%|2^%@fD-~W!)NSeO?Fp*JylbKzmzVI&$Aq9e?0%%^zH=(XVdP*f)1+>Y4pI_QI2z z{LZLmUK-Q<*_UXXso^yVVxxZudr{5V(9$BR~rZ?#Fn>+NEKkm`^vDiQeZ)&K8Ty<2 zRio>_{`mD>=kxWy>i_x*>elt<7l9u)*YC{TT;8gE()E+}+J|oK-?jZ|EgtxWmaaYb K@4Z_!uI8V*D|8(I literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/armor/foot/cultist.vox b/assets/voxygen/voxel/armor/foot/cultist.vox new file mode 100644 index 0000000000000000000000000000000000000000..3953bee979c6df2cc0d9c2f77d0ed52252396915 GIT binary patch literal 1480 zcmbu;UrbY190%~B4qJ?jKf)M{6{VBnkRe;66`5HeN;)#>mPVV# zM5`{$uptuMl4)g2!^1MxkxE>AV8jq-(wK#qWiN*Kut(k&=5M0z@c`+1UVo=AT%9C+SJcrcY`$fSdZ!ohO}10F|-;g}*#OvVgS zq{$>vtdSy3CW&T^6lpSvlaCpsNRvryJZ6w0O{SG^VNRM1G1%K+Z-c!J_GV6+OcKQ! zDbi$;Xx2!PCX>WujTC7zN%B}DMVd@2-@=?U8KT%*vA1Gx#oo+GlS!gjBSo4_E7#0P zlVLI@O-3GL(qxF{yqfcB&dHcG8HzD!GBjh-bYSo9j*Sn)Zvh^OL;??|1YK8GP-%aR zKkarbFZWnO_&#{!sS5lKv<~b-;KO!!Q!S7{9whQCWcDS7-=lS#NKVl4%Q<4P6r}K_akxQFfN`xhWJNeOrDP*J9h!Ax39uxv!SHW z2DjUdId^aE3ntHP#r$;-e!uI(gL^gjnmw~=LGG5oC4P!i6y*|u zTZT{}N8phVDy0`y(uFYB<77xMImC5|3HEpegRcor&J{L&QPT20%4+8~yH@@JUe!zw literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/armor/hand/cultist_right.vox b/assets/voxygen/voxel/armor/hand/cultist_right.vox new file mode 100644 index 0000000000000000000000000000000000000000..6c9c2d0005b0fcbd780d08941d01bfdeba66453a GIT binary patch literal 1344 zcmbu8TTGlq6vxju^EGL_1?0X|?v*Z(BA0>);?lB~rP5uBl6Fhc7)VQ2VnIVF*)(af zHQ1n(5~_(6(QJ4yA`&E;J|JmGZL(<$X^bxo>4T5F8RLV=&$D2BFjOD>l3&i5|Cw`U z=6o}q!Q*+;BGT3rII2dp z$JMc`bzJqu_8GAQRuRXB9K|SBaUIo+YKl>;;u_VgYKl>;;##XUwT`QG6vuJasi~~4wk1M*8TjU3N%Eyr z-*o{08;y8p>Ja}fB=QI{`y{fKPEwnY(Jz$xiz!W}*>Iq~qm9gSv=AKF8-t*benoqq50p%y<7iDT#n7<~h&IxzE*0E2R^$Xt~ z6YifDV&nO|`<7?RCj0~o3k$^KaW*$MX|MLs=PzKSeIL`kl|)~uW%|q^CVQJ8K1*p~ zIt`V%9C=|My`8m0T7}V5!pz&k$_GMCj)y==5nVO=8Emejvm~9q>TJdj?`5gGoN%a# z$ZJQ5o;}Hx^QRekGt9)L2upL9S-*9IR z%aCx$D|A0A3^fZMs{XL^^TP~mto`rvS5;MUwRVQ`idpK%E|N8x#qH08dnW~AF}z+c zLqkKn)Ut?-j*vE(#`5*;e|X-bcPA%@tCyx|te>Rk%4IUUGr0TJUY5gIOlr^m+5g16 zM6DAYaR$%8x$AR`e!j%}i?{gb`*jYS9i#E$3`ag$p<`hkpU=kw-HPm1_zk-*Y<#!9 szYV=#{}tC)xb@C4vt!<0u|)EogZ*UIy-IfZ{7!S_Pb6(OumAu6 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/armor/pants/cultist.vox b/assets/voxygen/voxel/armor/pants/cultist.vox new file mode 100644 index 0000000000000000000000000000000000000000..b978c351296f47eeee47aa40423b53b8f39b7618 GIT binary patch literal 1992 zcmbu;UrbhY9LMqRIlps$=REdjl86e1h?s&-!#@~d1}Z5U0$NP*Pp#<`$tBd7GUlfE zXXY#962035~RqGv8eVSB8P)Vf)p7ti@ASH z4hN3}DKgp2TYKp3fb*;$F+37#DOq4aYiL2ELxdO}2~si(g7zQ?n2#QKBuJ4VvyeO_ zhl59g6d5ve!QQ};!@(m#iVT@WoF9?H!6QM644K8`F*zJO5~RpvGaoQt(CR$vM+}dI zTAIx)Y;_i%h!Ddgp%w&Tdl-bw6gEbP;gKLEvoK_?kh$nVgcu$PQe@~cN1qE@Lq{JX z#PCRvB14Zw^hI0`4iRE_BuJ6T_Qb3!rUwyXcqB;40#6R-!@ZFwhvztPNqk|RP4j|3@M5OID)jtDV4 z5~O57OdgXXLJW@tX*TnYnOL`XZ81E@2{x`-S@Yn-VzgQX z9l0t#ov*UN87jXqM^m<$N)DUm_nVeqG1)8JzbloUeNuKYS10G>Xz1C=y8S|dv~H%V z7`YBV;a8kJU>g3wbalvd^J{)rn=aIvzTIfLv)eRydZtdio&R8;JkpSC^@O&norps*%PnXx^+mEnhT4>tCF!UCqnXw$9YE-8Ary z>B{@2io$%=m6d2)#R7G#u2gebo?4d_==7S|8r`u_EsZs5dwqkt_ixpyL%Y@WR*QO% zwP|$dxW=!YS58ijrcTOHQBje~ON&*p;2Ax?s8qGf%hm8wrFxG}*YKys`uS#=?%bNE zkGbdQplR%~snDv?g$~WIHWk@U&9v<*wr0(;29?-aweUO+G@E*N@?1Jit4d8fo-=i> zHhoC_pXS#O1Jd2=|9k$$ix=z6vH>kDzo4pMTxnr?h%y1kWGcW_XprKRfZ?9|I^ zFUoqlG`VB4E}eV$A0Eo*-6<^8nPX?QqN-0jPaW6P9aD7ctJ%8LGEIFvv%f$8Y+v?T zTQ-fUV~=$3+>m-cAJuyouj!-j$F+3-Nv$|Cp!J_z(Wa4cRaaN*9!s$l`dx0^boaZ5 t>$}VQ^F&lCA$+mOXj;%6*zz`I-tA4nL~b{seIJcEbPw literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/armor/pants/worker_blue-0.vox b/assets/voxygen/voxel/armor/pants/worker_blue-0.vox new file mode 100644 index 0000000000000000000000000000000000000000..c9369034b0be91f99dd15e77082137ba65f844c5 GIT binary patch literal 1912 zcmbu;Z)jIl9LMqR{deyDX@%xoZnL>&{`vhB*PKq*Y;AK>=YO3Ion{gf9m|p-L&xxe zQ^CYsYp6lCR*VthQdv^?z(j@#Lu5$=AtKT99z;Y>KD~e1qcD5Wg%|gn^Evl-&-eW9 zY1**0=!}`It7%xz&01o!#)jtlr?MTc31G-VY~9w}uqdFxH3rWt?VDxDGYM@5(jI&S zaEOs01@p<_BY;DU1SwcR4j%y=VkAg`MWj9W2;dMSK?)XG#*4@i&~}JvCrD*8^H{H! z4$R9q#IzHb=do@w1aOFvAO-Wu;Uj=Uj07oIKn@=P9AYF$!9sHQ2;dMSK?)X;!$$yz z7ztAF9GPRiNV0A7slm^Lh~N-2=6OCfkRe0_hZqUWXAXP>2ob>{MuHS9U>{ zMuHS9WFCA32ob>{MuHT)h&c!lB7#GV1imA4)Po2PF=M_3)ET5hL~w}Vc>#5jAw&d+ z7zsR|905W^aEOt>3&;^5L^gH$Ppk!1cw+2d`E^55gcM{URhi7 z@E~z^#MRZ+r3byHRp&=FGv^QemXo9F*VknuU1<2~i6&L&s&dC-)xTAxbbp1cK9aRf zkPSR58_iX9$x^LZTB~if>oxzPDQPo3-EErEW6J%)wClhMy?u0}4)t!;yH}o9U6*N7 zpXtqE)1f=2inZHSwWURMJNBu3q*?{-IVwJtugu^KmEN4A)AP&KHG6?ti{@zAHIr@O z{hf)d?-|+U9G#dmSwk;P)!kPLq}4B|l9C(n1Aal@LDTRDrt3qdTbJlpn+EDlUvDfAI}XLc`C*K133X76(K?yix> z1~hMGu9hvFp*640)$XPxYFlmUe%;i6z;x}jsk|^>4Vf3UqkMtd>nhZg$yMv30-ahp zOCvi=)V#4qZM)X1YyWngJiJGp?=-9DSer(Mj%)nJc}<)+QPZYOR#8!rO4G$EUocxQ zFHEa`S*bRxs8G+*=^Fl|SU=v%=-%yl`iOUq44THSntuM?)Y&>$=eo-@dSSVK{i#vy zCnxFD=Q+A`Cr|e@qm^_P{E>HQ`BDk&XM<%uK8>(0~7Pfd5X z^XU!_DxFTNqoYG>S6!BMcWP?;R9!jy=s!H1pRdBgLcM>iPgRw@YB_ma({?_m+h5Mo zmF7J4vSS4`F5l3H-;QhX{u8P?(yuiiUsL17aaC7W z>j6u#1o~aUxas~kkJfje@9V$vzmK3Ed%rsP@C-gSBgu|GDa$@Qy>_3bRlK2slHteA GwZ8xguufzE literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/armor/shoulder/cultist_right.vox b/assets/voxygen/voxel/armor/shoulder/cultist_right.vox new file mode 100644 index 0000000000000000000000000000000000000000..76eb745193849cd8a2559aa1425384515676c0ec GIT binary patch literal 1388 zcmbu8T})eL7{{M;-nW(b6)L4bnFR_HT9zRn0};fsQAe4qV`#%VhQ>fPR*73R&DJza zwz@62pbQDq#97faTo|#EN;JDbvXHr?Sqxc>Hw)Q?m)sfS-QR!Nt_;%)Px8xie&;>U z^PKaX_k@B&m2)D}-yJx}AVU_B!9dvmWL|hs<*|ox=twwFXXLMn1c+gkK0}PtCQ(Ea z!=MvIv|$7dlTH-TCSB2qB3jWkohYI;-9jgdXbatH1WYTPXkv(Y(iAhO#AGj%y-fBp z*^6${i6YuG4;hM16w!*V>Ds)k7`3Kb=oUJoCWe)@t*mX$*H+`Ep@Pa#tgB9%CeKa9 zx^zWXbVVnIrfa&U6T`w>3*DklAKt&WTlCh*1UwRn1n$oWdatjc+Wr^*u-mb^+Mi#- zH-Yc}l|r8b9m9Lzf4d8wR6E3PfkYmM%s&HJbD*$aP%a*ioEPkx6LhW!7eHp8hAi1JS!=_>^ToLPQaR99g$@yLpWs*WJDEKrSo~P9 zx*)jy9o;9G_X~bFEVy@Eke;f-<#(N1F@K&XlgS{L%VBeK69X+yjQib)57c39tO<$N z+c0-xA7;k7f!sXms~zZUs=$Gl>o68-L!?iTJSIrJCs_GN(CTs`;H|-M>uyAQ+7a?P zFy2y*sr@^V9ce)LP&XoP9z^2QQCvB99PxL;n7$Z6cHt7%Z(fJZWpRs2)Ey&#vxWq@|B#H`&pi)LrCCA{F z5UM4J8tFxt^EeX{OpkIdF~L5MVB`fstVi$(uRrSj@pB5;So`1a-`w1ct8FPXG|r=A z@&d||Ww`aF;O46pVsL6UJ4M~kt1?ZG!Z=j7gTxp4L3EV?>oFnZ+@ zN=Hg?=i8lF4wqquGyCWK^Y`Uz9U06adIC6mZ2`%zviNZ6CO-XX9eYkqqU%Bm2R>iH zU}haYpAYx>C{jT1C)B!Nb)>k#0(;&qJn_R zBTz(bijSgz8pVS0XtkmZ3D(w{rq(E0tw}YuRGYT8XuA3vC;4T4=UaP!_s*Jq&YYQ3 zXP>*HD2gegCR~mbUpuoXW=xnn_KfZee!8`r1hePNo$x`X;O9{FrL>hr(N>g2ds!B3 z6>7TciW&^qs%Upm8hT*B8hWUQ0F|Y0i*}1T@YDf~XhJK;T(ICAJ{llGf=thN=6Zba z5V($zs54rF39JdM0Z$#!h$hI?HQ2~^i1-j7a-ASU&9zPJPkaY7pb-*vMr&{xFXKUk z#C1k}O%GztdbB9YW(h@EHp;SWugbD%y6dWJR8>iKWxJ(z73)mdtPDM{rX;(v-J7xz zy8E_l7|U94;2}V=cn;6uxw6fn9t{v(*^#);)W(+$>+!)u@MU{M6J)5tgtBP^YXURS z0FgRDrmn$8zH7vf_-KSgouQ_-2|w`}5FjRe$WVjJWz%QAJ48sCy{NBQU(-Vq6h%dD z6}eU9R*_rPFx_=kHLI#>H&w-%tH_O>sT!4`2Ns;EICE7qboVX$EPZg`ZPgYa(yv_A zG!73Oc!!5ZG`XrHQyX8A8@^{I8qf#{GSpx~MQ*GCADDqgG(o1WQ5&nKi_D13fCvdP zy&7!7PxuKRjc9@lHMm?ge8$UokRWsIYkD<3NKh1p+zh#)r6D&%Zq$`&RFxq&!+A60 zW;ko6!x+O^Gi}Zo&YIz@vCh)Bth4mNQwNCFG?T@5%yjq;A3OxEBP7URydgJy&s;P> zq)w2b1``aqnGP425%>&<)Cn?mjoN6)4Ie_pM-!US8f@ZsN%)EV5UCTIp{91(aNh7T zpAU&TqrPTd&3ZIJQP@UNS~9a86>3V$S+krq%RP!3OIDVwY=;AHELqXF^sOZ;OIDWi zWjSA#^JU2j-&wL^pR=4XOIG+0xlU*X<1JY+*W-K38MEA*_>iHd?*gA0@B(|$gl4n` z7x5x;l;ZvZJm7*#*v6;Mo4T>Z5N#kkW;uL^ z4-UKwWEaRTkX;};MoreGS@Yjz?#4e@DKts(1d2F!A8Ds#E;BCBbv~R z)~HQ^bBCYsAyOwaqcyl3cz!WE<3Xa%sIOUHGY=9JMdTeV@{SgHM~gi7W1H!&tH?VV zHP|Zhj>bAe4~&W2r}V%>=L5e)T057Xo5^#qc%qFS!O_h2njO%8np>O;X{B32{Qe<+sn*`01;Bg z>+aR8uj!!)y<%L;sKS2vo?D2Yw|5=Td(FGG>Eem{&r7fBpN}2ZH3Nt0Upw~c;DmYl zaOD=gHn&r6O#v74YDMe$db(?%b}XBq_qSiFiw5Y$jlHD(XX|%6d+FrvzB+xPq5r-xR&O7=Sx2_^*N4xJ(`Uz8 zw0g;9I{n*~I{k+Ydh_uX{rgv~(#uhQKYE@{Jh?#kEbpxYyKmE-KU|^>t6Q~v@o+tS z_aH43aUy2rX&!)wUhe zbo<7>+JE3?wY3e_q|1A2UVA@HnSO~jY;9`Gfl1o>0n5|nL9-(zFF4Dv~ z!_=~{ucmj7($)jpbnE6-I(yABo4V*btJy%cHoP-IbQw zmumMrAE;}`{aSS2Lt1nE_Zsl%A)PV4MPHfO#>~ewVDWN&XT}_zvwn|eF1b;&R&CVm zXWrKN3vSYo&CjXd{7x0^cWCwDcQk#^N%hUvbg&C@fRf1{mC zpHWxKJsNt!C{65nl@|41r8#{%^n(FwG;8uK9awWzBhDYFS-nT->S5EgtfN!y-@8&v z`_0pf{WodPgq51vZ;<{pbfXpy8m=!+|AV{qbN%9%N3?b4F0EL7i>_a_T-PqXRx{?z z(A25pb;amm8Z>mUhV<{HQ>RYp({HRt4pn|tr|0CjC%I$sUAIg IsQU@HmNq<>1O4yQqcmzZwWIn4< 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 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/object/dungeon_door_metal-0.vox b/assets/voxygen/voxel/object/dungeon_door_metal-0.vox new file mode 100644 index 0000000000000000000000000000000000000000..616ea940fa73d850d6c4af5e0ffa8cab74db35dd GIT binary patch literal 1140 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 SetCby?k4}f?%uh3a^yDz^Gfdk literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/weapon/bow/longbow-1.vox b/assets/voxygen/voxel/weapon/bow/longbow-1.vox new file mode 100644 index 0000000000000000000000000000000000000000..ad1494e8d565c4cbcd5e45f81f4befa3e7aab2bc GIT binary patch literal 1304 zcmc(eUuctO6vj`|B#lk2X_F@Xy)CE^s2Wsb}lpz)^nJ8X#L5c`6q$@Jm%8;=wm%A8acfXz33A(xM(ia|ndCv2m z_d8!+zMjq7JR>5~*%Ihdh{-I{9SHfe(?*v;m8mLJZQC9S%qi2WZUJH45Y}Dqh{2E& zqd~nfB^gF#MoLT>N>fVACZ#zg7PHc#v?w!`nY+bc)!eFnk#doqlcmg3Z`&;vl_5JU zmTavrRD1h*%-4DHl`fsnr8B#=*R3=~R3&LABzSbh9g%@jRXdoJm^6-q%etw4K&Oi9g=_Hx#B)zT#zWh(weJ%=jdGH*o zqH?Se@tcuI7IHBUnQ>w76x{oTrE%e=#n7>gVG*vY9;kj&4IdFEKM|4>!rg1?eZob*aAT`5zgGyUKhh(_ z-_`nIp|w)j*&rNl6V7TqSXV@!zl?!k1tWWEh`za&k$tTsPrSu1<9$>uchOW+%BJ-d z?CDucq(g|kEsVV+3{yv|NhXP_% zJ-9>0tnkB4VXjxH_g7n6%OQy&#v$bL=NK>P{f;i&VO;Z)k`jLIg{~kB@;j}phwoRz zXgf4F|KtB(_v#s5Z=Yg&_dWXe!O_tPVwVz}p1RGaU(K@S;7QiKKgOmD({x{*<*E7f n{J+olf4P2zkG`{KF_}#MYnBeuJ0OE0sf=WzKW)1`H$H$6-1a=AKN{r@gO#%oiAYLru~FcTkO(5eMGQ6>F}C@~{@5R5?7!EZs|{-F$Dcj$=KVa+`*}Xk z^ZkDKw6ELb9u$$5I)AH@{ALzu^9Ow?i9pSuNK#}fHf;|2Zz?COa%^C-Q>=RUf<8TaP^g&{v^=4Rvf6tJbTgr0_K+C471D{|;>Tuf~1I|SF)5!%*Dcy9+M4(+6OPmt)* z5V5gOn7(xmo6W|&Ob2eao6@3uDoftt-LfKlHKnY3ubSwQ`HX*&&v$n`%-k#HbDbF* z74F^;e)?AE?JneOq@1ZM_5A*Q8$BoN^j~sv?S2+BsbC*(VXi*pFPkfbpW<@6eMwjH;fSo69d9&>Da~{-mB&@WWCVYJ%F@|NZ}! zD^9bvX@bpdcj?&$2ZzRpT#RvY;ufEMGtIKS$5?rIm^J4oX}dbjGyCcJ|K0CZx<0|j e@9cRTkH=rAC4@xJ^ZNeP9yk9}_jK;59{C&c>p*n? literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/weapon/bow/shortbow-1.vox b/assets/voxygen/voxel/weapon/bow/shortbow-1.vox new file mode 100644 index 0000000000000000000000000000000000000000..9dff83e1714497efbcfc62dcc3e7e5dde8d2c36f GIT binary patch literal 1280 zcmc(ee@N7K7{{OcrI+WAJH1^~OK)aN&tdsvrcLXdUU`<*Wpj15$Xt{hu_h5EN8qla zA6SPIZLnr7L`EbfS2POj2#Fv@xQM}$h-mYV{jonr^xv!JYJ;}5?aw{%{=T30^L(D? z^L)M^KJ9Bax`#xhrQYAFB)^zN+WbLZYC@J##l}rR|8?brl_ow0=@g@MiNT<3 zm=%+uON>TkW2cyn>YHZ8Z0Zz?NqzIISj?T0WLDoYD@hiuNm5QyPF7CVxV1|xR@HN~ zW{&C<)hViNnzyM=RZdl%rktjnu07MWXS(JxbgvAp%TV90GuU+oyUym&bq>`I^)uDa z>{`F-{d&=JCak);ns7MGqXD7m^b`x6&-l&hBpz=eVHf2=evbn01p2iy5JubQ{bLn5Tkl2>R1lQFQ+S*EZcL&E0?4b9P zAkjl1Vq=GyzIhs(&BmKq4%}`xWyJ+lmA=ig@?w0oWvpFUL-gQ0#?KV+!)*^U-<9yC z?im{u?pzZde=qcQ7jY_5!PJEYe*LkHp5u1l1wO&R)myc>Eu8iA192b#;H_UKIbn?$y{UHS!$3NkF3j literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/weapon/tool/broom-0.vox b/assets/voxygen/voxel/weapon/tool/broom-0.vox new file mode 100644 index 0000000000000000000000000000000000000000..f8862611c10fe8479336ccef1113311f90b3dd1b GIT binary patch literal 1840 zcmeIx@k`uw9LMqZ=kxjA-O80M=iPLTyC3E+Dp+$@;~03BxAc~&+b-uBX+sCQ1O*N9 zHq*d1FhL?4Oc)1ZkrG(oD*UNI^h?zGWl+D?Z?WI|@zqoM5B6j9g$JMa>&@r$;eB83 z`^LcK%xyF4@9uk@#hy!;UF<6t4j%-bfJ11;<&kpVBTvDz59cl8g1zk`#HhW?xEO-Z zxCkMnU4#&k5n^P7I2j>9MmR)9c!G@ZBpIQOjBuEY@Dv&0X);1R8Q~c+!VxmUvt;;& zw1oz8L)yb4YWRaSMs`Ot4j$%@rX4&i(1(Xb)bOwvd*ESl`tUGoOgng(Yn*rRFyB~p z@UTE19u`rZWGINrdso`NU z_Q1p9oP~!axDy^`DdtZxe~S52ypt5~B*i;PU3c)Xkg7U(SVRpEi?IhD7UwKHEWw@d zFgtd`!Nc6K>kb~~>BGYUeRxZ(1fqtORY7uor&1y0B#Mr}Xar$xktd^jkpwD{Y)t9?1I{4S~9W*y9oldKzrA4i+ zt?KCLP&S)YE|*hRSC0a5CKh>slFLtOu*QtwLFKMLbtj2ruy4v5PsSCZD9q!ls=#ZAi zOS(BZqSeY<`egcw?#x})-RhJ!muB_(&3S!!=ZNlaH|Vc#O!^T&HA)ZKq=$K(Ja)cPBOb?X1$ToL9?GS?y!jbn2b=bY}jRx^CT8 zVf{0m-`rDqdtcYS{$4eH%R}bZRNcQ;^BS$M*LNpQ=+DtnHFpfD^UY07um7s!gU6Mv zWi|6)Mzu?vo8jC?bvj*{QvQQwJ?`_>hc9UVUC@eAgkWyLCA%<4BqzB?a6t;H4R&EP zkVeu-nn)8VlQQ+0Ni)?JyD(YE4zh#pcaoh{cadFWH`z`0*oE9f&#k1D>Rz(fEhJ@y zb7e(P3~hz7BAJu{CM#T$6@|+R^(k)2tSCZKvz)70!PTFJwnEKHCbgfNRJ$aryj4Vi_0Ks4okw^rwSPY3o0;yCAx~?OW z$zXML6}emv`FtLwQVHd98Qa_2*xlVlrBcD+;UTKkDr&VF>h(HKPfyWkG|+4|(Q362 zy2=o9F{IoK%hwokeuhT@hMf>YCBkqNW2h$?8YzbNIzwp8jfv}C!~;Ie25(?-{1%p@ zA*{#8u{je(aXyZ%^fY#sQ`lQu#6j)>p5?Q6URuYC@+MApig>lRg)c`87iSE=KQQ1M z<+}|ycLNt83{MQhGv|RX>qDRrK=?@*(SstysiR@PjG?DaNRY)C3Y}Qdv|N zMiXk{qG(c*hQ?^qvLS8gN4jZO-E?6$raz#&{)xAT_BV9rP2N0nX3jmCxr@1}4%mQ2bZlNBz>io#`u`V_ZhRumzrS}2a5&&}I^lA;Fg7*@uh$E|-;Y2bfM76)NF;(-EQUlPfmA95UDuJz z<*>TCihMqgLZN_ixr|Dsg6-{X?C$QOTCL*n@DR0H4fT2*jYb2fr>AH(n`pIKXt&!4 zjWEPq3@JCm@->FMpW#t}VJE~;jW8U=7#c~2W{Tmx&Jdb#W9qsW@qiEW!5c_V-okP; zg!T9&Hs_)!Eyl5xnZ?d>3VUm59ONJ1Sz!gw%j(Wy~*7Ci8+_z)-t5PlLy^dO34J&DEFi&$%|q4co?=bah2W_5US8<=?b z7&o`}5!^pUq;`gxlQ#4>pRw`wD;o4I7xezv?EaU75HeOPJ`E4!S0)38cNV_v30}VY ifuZCO{0%>f=S4IYXkU@`J*9n@>+%Ht(+PC`0Dk~{5>+Aq literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/weapon/tool/hoe_blue.vox b/assets/voxygen/voxel/weapon/tool/hoe_blue.vox new file mode 100644 index 0000000000000000000000000000000000000000..45c9b0e9408d9011a49316e0aaf15b477ee137ce GIT binary patch literal 1332 zcmeIyT}zW;90u_J?&sOmw9K~^6M1&fPE=U9Rryxq~zq z3QO>yB{+zISmX#suwLk>PCDtpPW%L&b<{Vwx>jGILvOhF-Pa#(c<%e)xi>lQ+!K*# zaQrS2r&VNT+zfRz3m2=jF&CNn1#|p2ZLS-PQer4gQc9=FVkn)_)SA+?l+tu+Ww$w% z)9*yekV&%-rnUyoDvx|*08)r7osLn1eoH2^g7@d(;c1CZiT`;Ea+zN{R_v+$s zIA9nCTrL*|2M6JHyW#bE;q&?6_xlkFg%F8EFgZDicsvf%G?7duvAn#DR4Ro`CWCxF zk3ykW)?@d8qWC&wd-H7@;nDJl3!stybh67lQjv_rBMs6;O^~4l5 z7vtDkS-?)}0iI`;u%BPW%R(9ln>oDRTF2Y{E_^-e!LJVjd}F@%0mnnYNdT9|E@60f z7@j2$d|4lYPl5>Vgb}O6F!yE-EA=cU;sZ82{_zS@Z3K@ru+l_v3_`~USyB6sLt|S amgk81<2@h|AEf8yy`{R>_C!iVSkc{uOOIq$`}A6ppSS4u?# zllK^^U{z{%(hPOAgo~;=$YrvyXif$#9Jt~{)0Lr#3Tjqj4Rw6E1EJe|k|I+1QVk&AR9J#-?ybRvCpBK>qC z1M~qyDSNL*geZ%>*FrR+6Cp}tr`h{8&EBUog|2jVIy;>mQ|L=I-r)lE2rf91aHz!+_K2#K_19TrL+p9uK@;FMK{9 zLZJ{MkqBb37!rvDOw&XvmBPx(3exE`ve_&Og#wDjA~rWSQ7V;CE|;;lw}(olf@-yj zTCIkoqa)Pobu=0cG@DKMhZQ1Dg~X`B(p81DN8zzoVau;j4k^5hDAeK#^@PF)Q^7wz ziiztkM7?gz`fgw`cneEmKh~l_WM;z1&quM5oW|Bt0^6&L*iApgi|jHE3Tt>(%;0b< zk2l*Jcz4i)Z^wQ3{ZRqm$&UfxWE42{TORZ!4(G%R<*nw|nAEC-?OdU319)H35`>&|+TTc1@$aMZ=*NIjjyMh0G1Fb*6 EAH3pDivR!s literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/weapon/tool/pickaxe_green-0.vox b/assets/voxygen/voxel/weapon/tool/pickaxe_green-0.vox new file mode 100644 index 0000000000000000000000000000000000000000..a02fd1f0f967cd92c7208172a4f84104052d61a0 GIT binary patch literal 1332 zcmeH{-)mA~7{}k&sYmCJ<1xB%49~^9*#_2}HEiIqbUByle%Q8SyU3Af1m){=iKiFmTz=sd-`+lG2ocCOuYq2SL zlQ9+z3|}QNS;yG;uo^PA7F2D7NZ5&~X?6G~xm6bku4ghASdbgYdMD<)H*d(sENldU&#zq;k zf%c4qAjxBwF9w+Q&()d3;egZWgv;eZcXv13Za2JMFMK{9{C+<|p%5aG2x74q5{U#< zRYfY5!ra^((&;p^*(?f$0*b{VmY0`NDwR+!m$9+2fl8%Q^V3*Q-@wD{EVc>@*e+(Uvy#V?)g?UJl5n_p3g2Hc z;2rV)G;q`d94qJ=>O${CFFdmz_;Nl3?gS8C4FY5}DqKMa>o%oha!r>l;=lTw^ zl~3r1cfecoB6pNSZG!r8)OX*6{&WV)-4ae(&+nbZ!GnIh-5$Wly+M55SMc>Ph#w!q T`1R$=Nyq;0`v<;2>ksf7&=WsB literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/weapon/tool/pitchfork-0.vox b/assets/voxygen/voxel/weapon/tool/pitchfork-0.vox new file mode 100644 index 0000000000000000000000000000000000000000..4b786a5a05e8e4e7cf96e854faa1e33adc222358 GIT binary patch literal 1296 zcmeIx-%C?*7{~GFoE>MS<)TDy%kFau9Y_o6XtU{ITZFqKT;B8f>ryZ5L^< z6qX>-5*)|@vB(juU{-jQ5Z&~{ZiKq6yXd}~;L|hu54?;Xc=6_3JYUZDz_}KfGOrVn z-!*cTL%$`Wi4oP)SbN|RSv@ndsfarAfm<6J6GSo#I&upVR}{>G#B?IlnFO80t>fys z_1t6JSz~4CNX_SJ5i^BL?$tPr(yi^MHlhCYhyGTVKSLuu~^XC+Y77J3Wvi1 zS(f2+I^pqn;Pd$q2m}xcg`lb`VzC%zXJ-+Q$B|4Xk;!C`%jK}RxQKi{k3ykOCZK?@SfA;PXo zP;7k|K5vCzwqwG10TK5Qro9U0{ca@2y-0`s$VSJoG#$e7Tm-A}8+e$U!A52to4EwG zmeP2#oW-+^7VPh|;m1n?-m&)v;GhpURM0crgZ{~W*k|mJQ!-q4T=1@X5iA7}ej3JH zWe(|AX_zjJ!ZN0!Kehnd&D$8vuE4pn4o~qhMz^X^clNOG;te#u%OSr%5)FT?Du^~U z;dOU6zDJ`lTE}3&zJ+A*GrEFZaA*#s4pPu2c`wC#_Zu(}Pe8ew$5H3`y>r-mFo3t4 igZQ*FgfF`azU{m5^P?BPzFs-%vH$n}fiF<||Nj8{Yd&-U literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/weapon/tool/rake-0.vox b/assets/voxygen/voxel/weapon/tool/rake-0.vox new file mode 100644 index 0000000000000000000000000000000000000000..2da2b72642081a891c06123ab24a5876498759cc GIT binary patch literal 1344 zcmeIy-Ahw(9LMqB+0Gu^Ec0O+6PXw8Mh7eBN`|zpoXy$Vd|2vPG!YeCgAKMIcaa85 zVF?l~!GR3KB1f=-S>aVebQ5JaLfzI~bl*+z>0|u|UPfPd@#b87f1LBXIM+fG?dw8_ zpm*>pBWxNWMh6vN?a>2AMMgSJ6O+o|FZO6IkR*$CNkdwaC6+WQQd=aA%xYLIt7G+S z4QpVHY%P0&J;~Owr`URnq;9ZCGHDuk9;+i&W4)v%nKYy&9qCClHAoVvNKG zQwMM&$)qJc8AvoYNh*>_OL{UiHwn>V5-O5OOL{W2m_{yN^a}aUH3+lW42#7A ztJR9m&Q93vb~v3*xLhu{-ER1NJ_G^*ghC-iA`vKxf>g+c+vViBcM3ESJ-D3{BqR4S-etMIf71grv)E`g~t0&%CnEtkNO zM4vf0bW3s;wQ+^NTg8fL0_>mqDVj((=rKt#( zXD6{5zk!FzX>4TXu$fI@YblK<%L{n6QIGwdMtpxMfOquX1RQh$haPkcbig)dgJaqO zSIPzN9WVT=euRr*j6WU6Y-JYdS7}%-4Z%9Bz!sZF_s!erU08v8WgWi4V+?Ioq3rBo z{>2-V_$`Nge2)@Nxh{ynoOdkliD0uZ z5kdQes2`+o!+;6H6nzL=+E2 zA25gph~}e4c<{JEB%Ua`##~Ap(W8Ife?pZ6%JHBaNgNxgM1o2-jv%TeaYTvxZ6=8W z%ro3RJ3`_)=6U7?rky#+yvV%7l$n=#ohu5792-5}Bey79_6Q9PFL!ow6Wu zBquv3JB6LXjw31T6m~9lE_NKr#m=RW;O4d5GD&XU=c+Py|89uSe_T8s4^&l!*XzaD z*cg019|C~@G)+S=7(_T6Ml2RXB9TBUm4aay$Y!%xU0sD~nkWOHSNzb58bZ%Qh%_Te zwv$+Vw}`dw8cLr_Q18vaJ8NJfo5SRjXSltwh2YjM!mR_$?Db&0|BBp)@38nTeLg?( z_LDSqWMmm%hKKPhlYz%K3;&}%6k10ZN)91l1yDRJ!dl>YMV|N4jvHnk`inYF%jpaJ K?-%&{0sH}f@kki} literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/weapon/tool/shovel_gold.vox b/assets/voxygen/voxel/weapon/tool/shovel_gold.vox new file mode 100644 index 0000000000000000000000000000000000000000..0526930b9f9745d2b07d783e1f9fc0e2de404a48 GIT binary patch literal 1376 zcmeH{-%C?r7{{NpbB81<2@h|AEf8yKM`WL$NfzSE8&-p$tyyv|*_Y>3I+aeMl z8ofu!U0q~i)Qq$rH!KTjB^Su_j5&Hy;es`C{7}Thfg7UAplGztUQs-v6N|+o8c|i| z+MuX9-NL@LThvqZY5EM^Mz_;v>2tJ|K5vNF46)b@#bUFHYO^XtH1-9iW==yC z7tiJ5d!o6lqPuw34ntI;br|EfZw~Q3{+8SAhR5T9*Xu=ZZ!dg49|C~@g25m{p%5aG z2x74q5{U#-sT54pL?)BL{QNw!*(~z;JW8b!%H=XvR#s4{RIstJfvv4ARI63gYBkjB zb?oi!;o#r^jYb2_W)tCVLCh;i^$BJ#39$3*BVW`?h0HX6oad>Fa$D2h{YET_k?I-A1U!VEUE5Ah;Dhn>2)@q25{@g#issGhLJoB|%G2Gcf{MDy2c7Ew&wu)CQV>B#?lKu#hgA zHo+!cNSjDvCLz=)8)AZ&bfYUbF4_&hz@2~M^|SaBT=pbyo^zgaKa2Ayx;(y5M3KPk zLk7_h(ZZ}A964zai33H~n9D2r?D0SE8BisGvOFkD630X;k)V=^BZw+V98uzaQ;x(T z<{56E9VhV|^E~qcbC@~8yvV%7l$n=#ohu57921AkiXfO}5}Be|79_5l%4e+uhS%$brfKl`d>4L_kCBrYommBTNQlUBlHglzdsZ3gY(l098Cg!KPF}-;97LSv*v+T)DULgN^tu~B#pFN#M+7>hiw$n#zeBNDrTr|G*mEvGN= KzhB_*2k-}0<42nS literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/weapon/tool/shovel_red.vox b/assets/voxygen/voxel/weapon/tool/shovel_red.vox new file mode 100644 index 0000000000000000000000000000000000000000..ebe849919bd7229643d3e4ddc6403fcd349710e6 GIT binary patch literal 1300 zcmeH{-)mA~9EZQ}Ij&z@S$bTZXhB#=oGu{)tcDT7N>9JMi$F_c^@pIq!RM9>i8A_lYPP zoV(8=8X{Vp(?cVF2Sn0IqA~W$sy=u8uY1{oNEL$eLSkgb#A6bwFfl?>h0I7YKQ|SG zG{io`$cGzQ7)4kFYPYFR{(+%e>ANMM#W^A&Wx7VkXIA782jfY?Fn%mAjQY zBU`yyxhdQfZj7vOQ@Gi<*|;&XjhjsoVpJh%)GXvte$Q29;ohAfnNBumx7(qrDjW_6 zoK7b^9uIszA2dya-|t5#6hb5tK`a(SGMR*~>qw{5$Y!%B6bdL7i>Op8s8*}k+S)?B zUPq(RK(pCItJOlg-G*Tp=yW>hcDv~Hdg%B22uuy0W1TZx_1^1F0-Zd|@l7`^3Ai}$0 z#M^N!zgGXDS7|Cjsxn0~A}w7>|#`XZTP$D#2Ldc_p6rVi?bDcI=H^!|8Q; M0{{C2{`>)c0|OLCUjP6A literal 0 HcmV?d00001 diff --git a/common/src/comp/body/humanoid.rs b/common/src/comp/body/humanoid.rs index 4c243bc599..5164933e7d 100644 --- a/common/src/comp/body/humanoid.rs +++ b/common/src/comp/body/humanoid.rs @@ -271,7 +271,7 @@ pub const DWARF_SKIN_COLORS: [Skin; 14] = [ Skin::Iron, Skin::Steel, ]; -pub const ELF_SKIN_COLORS: [Skin; 14] = [ +pub const ELF_SKIN_COLORS: [Skin; 13] = [ Skin::Skin1, Skin::Skin2, Skin::Skin3, @@ -285,7 +285,7 @@ pub const ELF_SKIN_COLORS: [Skin; 14] = [ Skin::Skin12, Skin::ElfOne, Skin::ElfTwo, - Skin::ElfThree, + //Skin::ElfThree, ]; pub const HUMAN_SKIN_COLORS: [Skin; 18] = [ Skin::Skin1, @@ -563,26 +563,26 @@ pub enum Skin { DanariFour = 11, ElfOne = 12, ElfTwo = 13, - ElfThree = 14, - OrcOne = 15, - OrcTwo = 16, - OrcThree = 17, - UndeadOne = 18, - UndeadTwo = 19, - UndeadThree = 20, - Skin7 = 21, - Skin8 = 22, - Skin9 = 23, - Skin10 = 24, - Skin11 = 25, - Skin12 = 26, - Skin13 = 27, - Skin14 = 28, - Skin15 = 29, - Skin16 = 30, - Skin17 = 31, - Skin18 = 32, - OrcFour = 33, + //ElfThree = 14, + OrcOne = 14, + OrcTwo = 15, + OrcThree = 16, + UndeadOne = 17, + UndeadTwo = 18, + UndeadThree = 19, + Skin7 = 20, + Skin8 = 21, + Skin9 = 22, + Skin10 = 23, + Skin11 = 24, + Skin12 = 25, + Skin13 = 26, + Skin14 = 27, + Skin15 = 28, + Skin16 = 29, + Skin17 = 30, + Skin18 = 31, + OrcFour = 32, } impl Skin { pub fn rgb(self) -> Rgb { @@ -613,7 +613,7 @@ impl Skin { Self::DanariFour => (40, 85, 105), Self::ElfOne => (178, 164, 186), Self::ElfTwo => (132, 139, 161), - Self::ElfThree => (148, 128, 202), + //Self::ElfThree => (230, 188, 198), Self::OrcOne => (61, 130, 42), Self::OrcTwo => (82, 117, 36), Self::OrcThree => (71, 94, 42), @@ -653,7 +653,7 @@ impl Skin { Self::DanariFour => (53, 96, 116), Self::ElfOne => (190, 176, 199), //178, 164, 186 Self::ElfTwo => (137, 144, 167), - Self::ElfThree => (156, 138, 209), + //Self::ElfThree => (242, 199, 209), Self::OrcOne => (83, 165, 56), Self::OrcTwo => (92, 132, 46), Self::OrcThree => (84, 110, 54), @@ -693,7 +693,7 @@ impl Skin { Self::DanariFour => (34, 80, 99), Self::ElfOne => (170, 155, 175), //170, 157, 179 Self::ElfTwo => (126, 132, 153), - Self::ElfThree => (137, 121, 194), + //Self::ElfThree => (217, 178, 187), Self::OrcOne => (55, 114, 36), Self::OrcTwo => (70, 104, 29), Self::OrcThree => (60, 83, 32), diff --git a/common/src/comp/inventory/item/armor.rs b/common/src/comp/inventory/item/armor.rs index 74885598be..76b6c4472d 100644 --- a/common/src/comp/inventory/item/armor.rs +++ b/common/src/comp/inventory/item/armor.rs @@ -15,8 +15,20 @@ pub enum Chest { ClothBlue0 = 12, ClothGreen0 = 13, Rugged0 = 14, + WorkerGreen0 = 15, + WorkerGreen1 = 16, + WorkerRed0 = 17, + WorkerRed1 = 18, + WorkerPurple0 = 19, + WorkerPurple1 = 20, + WorkerYellow0 = 21, + WorkerYellow1 = 22, + WorkerOrange0 = 23, + WorkerOrange1 = 24, + CultistPurple = 25, + CultistBlue = 26, } -pub const ALL_CHESTS: [Chest; 14] = [ +pub const ALL_CHESTS: [Chest; 26] = [ Chest::Blue, Chest::Brown, Chest::Dark, @@ -31,6 +43,18 @@ pub const ALL_CHESTS: [Chest; 14] = [ Chest::ClothBlue0, Chest::ClothGreen0, Chest::Rugged0, + Chest::WorkerGreen0, + Chest::WorkerGreen1, + Chest::WorkerRed0, + Chest::WorkerRed1, + Chest::WorkerPurple0, + Chest::WorkerPurple1, + Chest::WorkerYellow0, + Chest::WorkerYellow1, + Chest::WorkerOrange0, + Chest::WorkerOrange1, + Chest::CultistPurple, + Chest::CultistBlue, ]; #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] @@ -47,8 +71,9 @@ pub enum Belt { ClothPurple0 = 8, ClothBlue0 = 9, ClothGreen0 = 10, + Cultist = 11, } -pub const ALL_BELTS: [Belt; 11] = [ +pub const ALL_BELTS: [Belt; 12] = [ Belt::None, Belt::Dark, Belt::TurqCloth, @@ -60,6 +85,7 @@ pub const ALL_BELTS: [Belt; 11] = [ Belt::ClothPurple0, Belt::ClothBlue0, Belt::ClothGreen0, + Belt::Cultist, ]; #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] @@ -79,8 +105,11 @@ pub enum Pants { ClothBlue0 = 11, ClothGreen0 = 12, Rugged0 = 13, + WorkerBlue0 = 14, + CultistPurple = 15, + CultistBlue = 16, } -pub const ALL_PANTS: [Pants; 14] = [ +pub const ALL_PANTS: [Pants; 17] = [ Pants::None, Pants::Blue, Pants::Brown, @@ -95,6 +124,9 @@ pub const ALL_PANTS: [Pants; 14] = [ Pants::ClothBlue0, Pants::ClothGreen0, Pants::Rugged0, + Pants::WorkerBlue0, + Pants::CultistPurple, + Pants::CultistBlue, ]; #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] @@ -107,8 +139,10 @@ pub enum Hand { ClothPurple0 = 5, ClothBlue0 = 6, ClothGreen0 = 7, + CultistPurple = 8, + CultistBlue = 9, } -pub const ALL_HANDS: [Hand; 7] = [ +pub const ALL_HANDS: [Hand; 9] = [ Hand::Cloth, Hand::Assassin, Hand::Plate0, @@ -116,6 +150,8 @@ pub const ALL_HANDS: [Hand; 7] = [ Hand::ClothPurple0, Hand::ClothBlue0, Hand::ClothGreen0, + Hand::CultistPurple, + Hand::CultistBlue, ]; #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] @@ -130,8 +166,9 @@ pub enum Foot { ClothPurple0 = 7, ClothBlue0 = 8, ClothGreen0 = 9, + Cultist = 10, } -pub const ALL_FEET: [Foot; 9] = [ +pub const ALL_FEET: [Foot; 10] = [ Foot::Dark, Foot::Sandal0, Foot::Jester, @@ -141,6 +178,7 @@ pub const ALL_FEET: [Foot; 9] = [ Foot::ClothPurple0, Foot::ClothBlue0, Foot::ClothGreen0, + Foot::Cultist, ]; #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] @@ -155,8 +193,10 @@ pub enum Shoulder { ClothPurple0 = 7, ClothBlue0 = 8, ClothGreen0 = 9, + CultistPurple = 10, + CultistBlue = 11, } -pub const ALL_SHOULDERS: [Shoulder; 9] = [ +pub const ALL_SHOULDERS: [Shoulder; 11] = [ Shoulder::Brown1, Shoulder::Chain, Shoulder::Assassin, @@ -166,6 +206,8 @@ pub const ALL_SHOULDERS: [Shoulder; 9] = [ Shoulder::ClothPurple0, Shoulder::ClothBlue0, Shoulder::ClothGreen0, + Shoulder::CultistPurple, + Shoulder::CultistBlue, ]; #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] #[repr(u32)] diff --git a/common/src/comp/inventory/item/mod.rs b/common/src/comp/inventory/item/mod.rs index 3e818a0393..294c6e947a 100644 --- a/common/src/comp/inventory/item/mod.rs +++ b/common/src/comp/inventory/item/mod.rs @@ -136,12 +136,12 @@ impl Item { "common.items.cheese", "common.items.potion_minor", "common.items.collar", - "common.items.weapons.starter_sword", - "common.items.weapons.starter_axe", - "common.items.weapons.staff_nature", - "common.items.weapons.starter_hammer", - "common.items.weapons.starter_bow", - "common.items.weapons.starter_staff", + "common.items.weapons.sword.starter_sword", + "common.items.weapons.axe.starter_axe", + "common.items.weapons.staff.staff_nature", + "common.items.weapons.hammer.starter_hammer", + "common.items.weapons.bow.starter_bow", + "common.items.weapons.staff.starter_staff", "common.items.armor.belt.plate_0", "common.items.armor.belt.leather_0", "common.items.armor.chest.plate_green_0", @@ -155,8 +155,8 @@ impl Item { "common.items.armor.shoulder.leather_0", "common.items.armor.hand.leather_0", "common.items.armor.hand.plate_0", - "common.items.weapons.wood_sword", - "common.items.weapons.short_sword_0", + "common.items.weapons.sword.wood_sword", + "common.items.weapons.sword.short_sword_0", "common.items.armor.belt.cloth_blue_0", "common.items.armor.chest.cloth_blue_0", "common.items.armor.foot.cloth_blue_0", diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 12fbd4b6f0..275b78f912 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -22,7 +22,11 @@ pub enum HammerKind { } #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] pub enum BowKind { - BasicBow, + ShortBow0, + ShortBow1, + LongBow0, + LongBow1, + RareBow0, } #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] pub enum DaggerKind { @@ -37,6 +41,19 @@ pub enum StaffKind { pub enum ShieldKind { BasicShield, } +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] +pub enum FarmKind { + Broom, + Hoe0, + Hoe1, + Pitchfork, + Rake, + FishingRod0, + FishingRod1, + Pickaxe0, + Shovel0, + Shovel1, +} #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] pub enum DebugKind { @@ -54,6 +71,7 @@ pub enum ToolKind { Staff(StaffKind), Shield(ShieldKind), Debug(DebugKind), + Farming(FarmKind), /// This is an placeholder item, it is used by non-humanoid npcs to attack Empty, } @@ -114,6 +132,14 @@ impl Tool { range: 3.5, max_angle: 60.0, }], + Farming(_) => vec![BasicMelee { + energy_cost: 1, + buildup_duration: Duration::from_millis(700), + recover_duration: Duration::from_millis(150), + base_healthchange: -5, + range: 3.0, + max_angle: 60.0, + }], Bow(_) => vec![BasicRanged { energy_cost: 0, holdable: true, diff --git a/server/src/sys/terrain.rs b/server/src/sys/terrain.rs index dab026bf29..76458cb2ba 100644 --- a/server/src/sys/terrain.rs +++ b/server/src/sys/terrain.rs @@ -149,23 +149,33 @@ impl<'a> System<'a> for Sys { comp::Alignment::Npc => comp::Loadout { active_item, second_item: None, - shoulder: Some(assets::load_expect_cloned( - "common.items.armor.shoulder.leather_0", - )), + shoulder: None, chest: Some(assets::load_expect_cloned( - "common.items.armor.chest.leather_0", + match rand::thread_rng().gen_range(0, 10) { + 0 => "common.items.armor.chest.worker_green_0", + 1 => "common.items.armor.chest.worker_green_1", + 2 => "common.items.armor.chest.worker_red_0", + 3 => "common.items.armor.chest.worker_red_1", + 4 => "common.items.armor.chest.worker_purple_0", + 5 => "common.items.armor.chest.worker_purple_1", + 6 => "common.items.armor.chest.worker_yellow_0", + 7 => "common.items.armor.chest.worker_yellow_1", + 8 => "common.items.armor.chest.worker_orange_0", + _ => "common.items.armor.chest.worker_orange_1", + }, )), belt: Some(assets::load_expect_cloned( - "common.items.armor.belt.plate_0", - )), - hand: Some(assets::load_expect_cloned( - "common.items.armor.hand.plate_0", + "common.items.armor.belt.leather_0", )), + hand: None, pants: Some(assets::load_expect_cloned( - "common.items.armor.pants.plate_green_0", + "common.items.armor.pants.worker_blue_0", )), foot: Some(assets::load_expect_cloned( - "common.items.armor.foot.leather_0", + match rand::thread_rng().gen_range(0, 2) { + 0 => "common.items.armor.foot.leather_0", + _ => "common.items.armor.starter.sandals_0", + }, )), back: None, ring: None, @@ -178,27 +188,27 @@ impl<'a> System<'a> for Sys { active_item, second_item: None, shoulder: Some(assets::load_expect_cloned( - "common.items.armor.shoulder.leather_0", + "common.items.armor.shoulder.cultist_shoulder_purple", )), chest: Some(assets::load_expect_cloned( - "common.items.armor.chest.plate_green_0", + "common.items.armor.chest.cultist_chest_purple", )), belt: Some(assets::load_expect_cloned( - "common.items.armor.belt.plate_0", + "common.items.armor.belt.cultist_belt", )), hand: Some(assets::load_expect_cloned( - "common.items.armor.hand.plate_0", + "common.items.armor.hand.cultist_hands_purple", )), pants: Some(assets::load_expect_cloned( - "common.items.armor.pants.plate_green_0", + "common.items.armor.pants.cultist_legs_purple", )), foot: Some(assets::load_expect_cloned( - "common.items.armor.foot.plate_0", + "common.items.armor.foot.cultist_boots", )), back: None, ring: None, neck: None, - lantern: None, + lantern: Some(assets::load_expect_cloned("common.items.lantern.black_0")), head: None, tabard: None, }, @@ -233,7 +243,7 @@ impl<'a> System<'a> for Sys { body = comp::Body::Humanoid(body_new); stats = comp::Stats::new( format!( - "Fearless Giant {}", + "Gentle {} Giant", get_npc_name(&NPC_NAMES.humanoid, body_new.race) ), body, @@ -242,7 +252,7 @@ impl<'a> System<'a> for Sys { loadout = comp::Loadout { active_item: Some(comp::ItemConfig { item: assets::load_expect_cloned( - "common.items.weapons.zweihander_sword_0", + "common.items.weapons.sword.zweihander_sword_0", ), ability1: Some(CharacterAbility::BasicMelee { energy_cost: 0, diff --git a/voxygen/src/anim/character/dash.rs b/voxygen/src/anim/character/dash.rs index 4993b8f703..8d223b9b37 100644 --- a/voxygen/src/anim/character/dash.rs +++ b/voxygen/src/anim/character/dash.rs @@ -76,12 +76,6 @@ impl Animation for DashAnimation { }, _ => {}, } - next.head.offset = Vec3::new( - 0.0, - -2.0 + skeleton_attr.head.0, - skeleton_attr.head.1 + 12.0, - ); - next.head.ori = Quaternion::rotation_x(0.5); next.lantern.offset = Vec3::new( skeleton_attr.lantern.0, diff --git a/voxygen/src/anim/character/mod.rs b/voxygen/src/anim/character/mod.rs index 743fc40798..0265ffcb16 100644 --- a/voxygen/src/anim/character/mod.rs +++ b/voxygen/src/anim/character/mod.rs @@ -31,7 +31,6 @@ pub use self::{ use super::{Bone, Skeleton}; use crate::render::FigureBoneData; use common::comp; - #[derive(Clone, Default)] pub struct CharacterSkeleton { head: Bone, @@ -168,18 +167,18 @@ impl SkeletonAttr { pub fn calculate_scale(body: &comp::humanoid::Body) -> f32 { use comp::humanoid::{BodyType::*, Race::*}; match (body.race, body.body_type) { - (Orc, Male) => 0.95, - (Orc, Female) => 0.8, - (Human, Male) => 0.8, - (Human, Female) => 0.75, - (Elf, Male) => 0.85, - (Elf, Female) => 0.8, - (Dwarf, Male) => 0.7, - (Dwarf, Female) => 0.65, - (Undead, Male) => 0.8, - (Undead, Female) => 0.75, - (Danari, Male) => 0.58, - (Danari, Female) => 0.58, + (Orc, Male) => 0.95 * 1.2, + (Orc, Female) => 0.85 * 1.2, + (Human, Male) => 0.85 * 1.2, + (Human, Female) => 0.8 * 1.2, + (Elf, Male) => 0.85 * 1.2, + (Elf, Female) => 0.8 * 1.2, + (Dwarf, Male) => 0.7 * 1.2, + (Dwarf, Female) => 0.65 * 1.2, + (Undead, Male) => 0.8 * 1.2, + (Undead, Female) => 0.75 * 1.2, + (Danari, Male) => 0.58 * 1.2, + (Danari, Female) => 0.58 * 1.2, } } } @@ -192,27 +191,27 @@ impl<'a> From<&'a comp::humanoid::Body> for SkeletonAttr { head_scale: match (body.race, body.body_type) { (Orc, Male) => 0.9, (Orc, Female) => 1.0, - (Human, Male) => 1.0, - (Human, Female) => 1.0, - (Elf, Male) => 0.95, - (Elf, Female) => 1.0, + (Human, Male) => 0.9, + (Human, Female) => 0.9, + (Elf, Male) => 0.9, + (Elf, Female) => 0.9, (Dwarf, Male) => 1.0, (Dwarf, Female) => 1.0, - (Undead, Male) => 1.0, - (Undead, Female) => 1.0, + (Undead, Male) => 0.9, + (Undead, Female) => 0.9, (Danari, Male) => 1.15, (Danari, Female) => 1.15, }, head: match (body.race, body.body_type) { (Orc, Male) => (0.0, 14.0), (Orc, Female) => (0.0, 14.0), - (Human, Male) => (0.0, 14.5), - (Human, Female) => (0.0, 14.0), - (Elf, Male) => (0.0, 14.5), - (Elf, Female) => (0.0, 14.5), + (Human, Male) => (0.3, 13.5), + (Human, Female) => (-0.6, 13.5), + (Elf, Male) => (0.0, 13.5), + (Elf, Female) => (0.0, 13.5), (Dwarf, Male) => (0.0, 14.5), (Dwarf, Female) => (0.0, 14.0), - (Undead, Male) => (0.5, 14.5), + (Undead, Male) => (0.5, 13.6), (Undead, Female) => (0.5, 14.5), (Danari, Male) => (0.5, 14.0), (Danari, Female) => (0.5, 14.0), diff --git a/voxygen/src/anim/character/run.rs b/voxygen/src/anim/character/run.rs index 0e2ad0ef0f..4a7dd9a4f5 100644 --- a/voxygen/src/anim/character/run.rs +++ b/voxygen/src/anim/character/run.rs @@ -23,7 +23,7 @@ impl Animation for RunAnimation { let walkintensity = if speed > 5.0 { 1.0 } else { 0.7 }; let walk = if speed > 5.0 { 1.0 } else { 0.5 }; - let lower = if speed > 5.0 { 0.0 } else { 2.0 }; + let lower = if speed > 5.0 { 0.0 } else { 1.0 }; let snapfoot = if speed > 5.0 { 1.1 } else { 2.0 }; let lab = 1.0; let long = (((5.0) @@ -101,7 +101,7 @@ impl Animation for RunAnimation { next.chest.offset = Vec3::new( 0.0, skeleton_attr.chest.0, - skeleton_attr.chest.1 + 1.0 + short * 1.1 - lower, + skeleton_attr.chest.1 + 2.0 + short * 1.1 - lower, ); next.chest.ori = Quaternion::rotation_z(short * 0.3 * walkintensity); next.chest.scale = Vec3::one(); diff --git a/voxygen/src/anim/character/wield.rs b/voxygen/src/anim/character/wield.rs index 4458f2df08..cd426e5b46 100644 --- a/voxygen/src/anim/character/wield.rs +++ b/voxygen/src/anim/character/wield.rs @@ -20,8 +20,23 @@ impl Animation for WieldAnimation { let lab = 1.0; let mut next = (*skeleton).clone(); + let head_look = Vec2::new( + ((global_time + anim_time) as f32 / 10.0) + .floor() + .mul(7331.0) + .sin() + * 0.2, + ((global_time + anim_time) as f32 / 10.0) + .floor() + .mul(1337.0) + .sin() + * 0.1, + ); + let slow_cos = (anim_time as f32 * 6.0 + PI).cos(); let ultra_slow = (anim_time as f32 * 1.0 + PI).sin(); + let slow = (anim_time as f32 * 3.0 + PI).sin(); + let ultra_slow_cos = (anim_time as f32 * 3.0 + PI).cos(); let short = (((5.0) / (1.5 + 3.5 * ((anim_time as f32 * lab as f32 * 16.0).sin()).powf(2.0 as f32))) @@ -30,6 +45,59 @@ impl Animation for WieldAnimation { let noisea = (anim_time as f32 * 11.0 + PI / 6.0).sin(); let noiseb = (anim_time as f32 * 19.0 + PI / 4.0).sin(); let wave = (anim_time as f32 * 16.0).sin(); + + if velocity > 0.5 { + next.torso.offset = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; + next.torso.ori = Quaternion::rotation_x(-0.2); + next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; + + next.back.offset = Vec3::new(0.0, -2.8, 7.25); + next.back.ori = Quaternion::rotation_x( + (-0.25 + short * 0.3 + noisea * 0.4 + noiseb * 0.4).min(-0.1), + ); + next.back.scale = Vec3::one() * 1.02; + } else { + next.head.offset = Vec3::new( + 0.0, + -2.0 + skeleton_attr.head.0, + skeleton_attr.head.1 + ultra_slow * 0.1, + ); + next.head.ori = + Quaternion::rotation_z(head_look.x) * Quaternion::rotation_x(head_look.y.abs()); + next.head.scale = Vec3::one() * skeleton_attr.head_scale; + + next.chest.offset = Vec3::new( + 0.0 + slow_cos * 0.5, + skeleton_attr.chest.0, + skeleton_attr.chest.1 + ultra_slow * 0.5, + ); + next.torso.offset = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; + next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; + + next.l_foot.offset = Vec3::new(-3.4, -2.5, 9.0); + next.l_foot.ori = Quaternion::rotation_x(ultra_slow_cos * 0.035 - 0.2); + next.l_foot.scale = Vec3::one(); + + next.r_foot.offset = Vec3::new(3.4, 3.5, 9.0); + next.r_foot.ori = Quaternion::rotation_x(ultra_slow * 0.035); + next.r_foot.scale = Vec3::one(); + + next.chest.ori = + Quaternion::rotation_y(ultra_slow_cos * 0.04) * Quaternion::rotation_z(0.15); + next.chest.scale = Vec3::one(); + + next.belt.offset = Vec3::new(0.0, skeleton_attr.belt.0, skeleton_attr.belt.1); + next.belt.ori = + Quaternion::rotation_y(ultra_slow_cos * 0.03) * Quaternion::rotation_z(0.22); + next.belt.scale = Vec3::one() * 1.02; + + next.back.offset = Vec3::new(0.0, skeleton_attr.back.0, skeleton_attr.back.1); + next.back.ori = Quaternion::rotation_x(-0.2); + next.back.scale = Vec3::one() * 1.02; + next.shorts.offset = Vec3::new(0.0, skeleton_attr.shorts.0, skeleton_attr.shorts.1); + next.shorts.ori = Quaternion::rotation_z(0.3); + next.shorts.scale = Vec3::one(); + } match active_tool_kind { //TODO: Inventory Some(ToolKind::Sword(_)) => { @@ -151,12 +219,12 @@ impl Animation for WieldAnimation { }, Some(ToolKind::Debug(_)) => { next.l_hand.offset = Vec3::new(-7.0, 4.0, 3.0); - next.l_hand.ori = Quaternion::rotation_x(1.27 + wave * 0.25) + next.l_hand.ori = Quaternion::rotation_x(1.27) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(0.0); next.l_hand.scale = Vec3::one() * 1.01; next.r_hand.offset = Vec3::new(7.0, 2.5, -1.25); - next.r_hand.ori = Quaternion::rotation_x(1.27 + wave * 0.25) + next.r_hand.ori = Quaternion::rotation_x(1.27) * Quaternion::rotation_y(0.0) * Quaternion::rotation_z(-0.3); next.r_hand.scale = Vec3::one() * 1.01; @@ -166,86 +234,38 @@ impl Animation for WieldAnimation { * Quaternion::rotation_z(wave * -0.25); next.main.scale = Vec3::one(); }, + Some(ToolKind::Farming(_)) => { + if velocity < 0.5 { + next.head.ori = Quaternion::rotation_z(head_look.x) + * Quaternion::rotation_x(-0.2 + head_look.y.abs()); + next.head.scale = Vec3::one() * skeleton_attr.head_scale; + } + next.l_hand.offset = Vec3::new(9.0, 1.0, 1.0); + next.l_hand.ori = Quaternion::rotation_x(1.57) * Quaternion::rotation_y(0.0); + next.l_hand.scale = Vec3::one() * 1.05; + next.r_hand.offset = Vec3::new(9.0, 1.0, 11.0); + next.r_hand.ori = Quaternion::rotation_x(1.57) + * Quaternion::rotation_y(0.0) + * Quaternion::rotation_z(0.0); + next.r_hand.scale = Vec3::one() * 1.05; + next.main.offset = Vec3::new(7.5, 7.5, 13.2); + next.main.ori = Quaternion::rotation_x(0.0) + * Quaternion::rotation_y(3.14) + * Quaternion::rotation_z(0.0); + next.main.scale = Vec3::one(); + + next.control.offset = Vec3::new(-11.0 + slow * 2.0, 1.8, 4.0); + next.control.ori = Quaternion::rotation_x(ultra_slow * 0.1) + * Quaternion::rotation_y(0.6 + ultra_slow * 0.1) + * Quaternion::rotation_z(ultra_slow_cos * 0.1); + next.control.scale = Vec3::one(); + }, _ => {}, } - if velocity > 0.5 { - next.torso.offset = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; - next.torso.ori = Quaternion::rotation_x(-0.2); - next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; + next.l_control.scale = Vec3::one(); - next.back.offset = Vec3::new(0.0, -2.8, 7.25); - next.back.ori = Quaternion::rotation_x( - (-0.25 + short * 0.3 + noisea * 0.4 + noiseb * 0.4).min(-0.1), - ); - next.back.scale = Vec3::one() * 1.02; - - next.l_control.offset = Vec3::new(0.0, 0.0, 0.0); - next.l_control.ori = Quaternion::rotation_x(0.0); - next.l_control.scale = Vec3::one(); - - next.r_control.offset = Vec3::new(0.0, 0.0, 0.0); - next.r_control.ori = Quaternion::rotation_x(0.0); - next.r_control.scale = Vec3::one(); - } else { - let head_look = Vec2::new( - ((global_time + anim_time) as f32 / 10.0) - .floor() - .mul(7331.0) - .sin() - * 0.2, - ((global_time + anim_time) as f32 / 10.0) - .floor() - .mul(1337.0) - .sin() - * 0.1, - ); - next.head.offset = Vec3::new( - 0.0, - -2.0 + skeleton_attr.head.0, - skeleton_attr.head.1 + ultra_slow * 0.1, - ); - next.head.ori = - Quaternion::rotation_z(head_look.x) * Quaternion::rotation_x(head_look.y.abs()); - next.head.scale = Vec3::one() * skeleton_attr.head_scale; - - next.chest.offset = Vec3::new( - 0.0 + slow_cos * 0.5, - skeleton_attr.chest.0, - skeleton_attr.chest.1 + ultra_slow * 0.5, - ); - next.chest.ori = - Quaternion::rotation_y(ultra_slow_cos * 0.04) * Quaternion::rotation_z(0.15); - next.chest.scale = Vec3::one(); - - next.belt.offset = Vec3::new(0.0, skeleton_attr.belt.0, skeleton_attr.belt.1); - next.belt.ori = - Quaternion::rotation_y(ultra_slow_cos * 0.03) * Quaternion::rotation_z(0.22); - next.belt.scale = Vec3::one() * 1.02; - - next.back.offset = Vec3::new(0.0, skeleton_attr.back.0, skeleton_attr.back.1); - next.back.ori = Quaternion::rotation_x(-0.2); - next.back.scale = Vec3::one() * 1.02; - - next.shorts.offset = Vec3::new(0.0, skeleton_attr.shorts.0, skeleton_attr.shorts.1); - next.shorts.ori = Quaternion::rotation_z(0.3); - next.shorts.scale = Vec3::one(); - - next.l_foot.offset = Vec3::new(-3.4, -2.5, 9.0); - next.l_foot.ori = Quaternion::rotation_x(ultra_slow_cos * 0.035 - 0.2); - next.l_foot.scale = Vec3::one(); - - next.r_foot.offset = Vec3::new(3.4, 3.5, 9.0); - next.r_foot.ori = Quaternion::rotation_x(ultra_slow * 0.035); - next.r_foot.scale = Vec3::one(); - - next.torso.offset = Vec3::new(0.0, 0.0, 0.0) * skeleton_attr.scaler; - next.torso.scale = Vec3::one() / 11.0 * skeleton_attr.scaler; - - next.l_control.scale = Vec3::one(); - - next.r_control.scale = Vec3::one(); - } + next.r_control.scale = Vec3::one(); next } diff --git a/voxygen/src/anim/mod.rs b/voxygen/src/anim/mod.rs index 60e67508c6..b5f3484e4b 100644 --- a/voxygen/src/anim/mod.rs +++ b/voxygen/src/anim/mod.rs @@ -60,9 +60,6 @@ pub trait Skeleton: Send + Sync + 'static { fn interpolate(&mut self, target: &Self, dt: f32); } -// rustc complains that `SkeletonAttr` fields are never read. -// Pls remove when they are. - pub trait Animation { type Skeleton: Skeleton; type Dependency; diff --git a/voxygen/src/audio/sfx/event_mapper/movement/tests.rs b/voxygen/src/audio/sfx/event_mapper/movement/tests.rs index f8b6b91187..16edeb4b30 100644 --- a/voxygen/src/audio/sfx/event_mapper/movement/tests.rs +++ b/voxygen/src/audio/sfx/event_mapper/movement/tests.rs @@ -331,7 +331,7 @@ fn maps_wield_while_equipping() { let mut loadout = Loadout::default(); loadout.active_item = Some(ItemConfig { - item: assets::load_expect_cloned("common.items.weapons.starter_axe"), + item: assets::load_expect_cloned("common.items.weapons.axe.starter_axe"), ability1: None, ability2: None, ability3: None, @@ -368,7 +368,7 @@ fn maps_unwield() { let mut loadout = Loadout::default(); loadout.active_item = Some(ItemConfig { - item: assets::load_expect_cloned("common.items.weapons.starter_bow"), + item: assets::load_expect_cloned("common.items.weapons.bow.starter_bow"), ability1: None, ability2: None, ability3: None, @@ -395,7 +395,7 @@ fn maps_unwield() { Some(&loadout), ); - assert_eq!(result, SfxEvent::Unwield(ToolKind::Bow(BowKind::BasicBow))); + assert_eq!(result, SfxEvent::Unwield(ToolKind::Bow(BowKind::ShortBow0))); } #[test] diff --git a/voxygen/src/menu/char_selection/ui.rs b/voxygen/src/menu/char_selection/ui.rs index 4ea9422a5e..ee155ac723 100644 --- a/voxygen/src/menu/char_selection/ui.rs +++ b/voxygen/src/menu/char_selection/ui.rs @@ -13,7 +13,7 @@ use crate::{ use client::Client; use common::{ assets, - assets::load_expect, + assets::{load, load_expect}, comp::{self, humanoid}, }; use conrod_core::{ @@ -23,14 +23,15 @@ use conrod_core::{ widget::{text_box::Event as TextBoxEvent, Button, Image, Rectangle, Scrollbar, Text, TextBox}, widget_ids, Borderable, Color, Colorable, Labelable, Positionable, Sizeable, UiCell, Widget, }; +use log::error; use std::sync::Arc; -const STARTER_HAMMER: &str = "common.items.weapons.starter_hammer"; -const STARTER_BOW: &str = "common.items.weapons.starter_bow"; -const STARTER_AXE: &str = "common.items.weapons.starter_axe"; -const STARTER_STAFF: &str = "common.items.weapons.starter_staff"; -const STARTER_SWORD: &str = "common.items.weapons.starter_sword"; -const STARTER_DAGGER: &str = "common.items.weapons.starter_dagger"; +const STARTER_HAMMER: &str = "common.items.weapons.hammer.starter_hammer"; +const STARTER_BOW: &str = "common.items.weapons.bow.starter_bow"; +const STARTER_AXE: &str = "common.items.weapons.axe.starter_axe"; +const STARTER_STAFF: &str = "common.items.weapons.staff.starter_staff"; +const STARTER_SWORD: &str = "common.items.weapons.sword.starter_sword"; +const STARTER_DAGGER: &str = "common.items.weapons.dagger.starter_dagger"; // UI Color-Theme const UI_MAIN: Color = Color::Rgba(0.61, 0.70, 0.70, 1.0); // Greenish Blue @@ -342,7 +343,14 @@ impl CharSelectionUi { .as_ref() .and_then(|d| d.tool.as_ref()) .map(|tool| comp::ItemConfig { - item: (*load_expect::(&tool)).clone(), + item: (*load::(&tool).unwrap_or_else(|err| { + error!( + "Could not load item {} maybe it no longer exists: {:?}", + &tool, err + ); + load_expect("common.items.weapons.sword.starter_sword") + })) + .clone(), ability1: None, ability2: None, ability3: None, diff --git a/voxygen/src/scene/figure/load.rs b/voxygen/src/scene/figure/load.rs index d5cc47a654..c3a223cf6d 100644 --- a/voxygen/src/scene/figure/load.rs +++ b/voxygen/src/scene/figure/load.rs @@ -112,6 +112,7 @@ struct ArmorVoxSpec { struct SidedArmorVoxSpec { left: ArmorVoxSpec, right: ArmorVoxSpec, + color: Option<[u8; 3]>, } #[derive(Serialize, Deserialize)] @@ -371,7 +372,7 @@ impl HumArmorShoulderSpec { &self.0.default }; - let shoulder_segment = color_segment( + let mut shoulder_segment = color_segment( if flipped { graceful_load_mat_segment_flipped(&spec.left.vox_spec.0) } else { @@ -393,6 +394,16 @@ impl HumArmorShoulderSpec { spec.right.vox_spec.1 }; + if let Some(color) = if flipped { + spec.left.color + } else { + spec.right.color + } { + let shoulder_color = Vec3::from(color); + shoulder_segment = + shoulder_segment.map_rgb(|rgb| recolor_grey(rgb, Rgb::from(shoulder_color))); + } + generate_mesh(&shoulder_segment, Vec3::from(offset)) } @@ -500,7 +511,7 @@ impl HumArmorHandSpec { &self.0.default }; - let hand_segment = color_segment( + let mut hand_segment = color_segment( if flipped { graceful_load_mat_segment_flipped(&spec.left.vox_spec.0) } else { @@ -517,6 +528,15 @@ impl HumArmorHandSpec { spec.right.vox_spec.1 }; + if let Some(color) = if flipped { + spec.left.color + } else { + spec.right.color + } { + let hand_color = Vec3::from(color); + hand_segment = hand_segment.map_rgb(|rgb| recolor_grey(rgb, Rgb::from(hand_color))); + } + generate_mesh(&hand_segment, Vec3::from(offset)) } @@ -567,13 +587,18 @@ impl HumArmorBeltSpec { &self.0.default }; - let belt_segment = color_segment( + let mut belt_segment = color_segment( graceful_load_mat_segment(&spec.vox_spec.0), body.race.skin_color(body.skin), body.race.hair_color(body.hair_color), body.race.eye_color(body.eye_color), ); + if let Some(color) = spec.color { + let belt_color = Vec3::from(color); + belt_segment = belt_segment.map_rgb(|rgb| recolor_grey(rgb, Rgb::from(belt_color))); + } + generate_mesh(&belt_segment, Vec3::from(spec.vox_spec.1)) } } @@ -606,12 +631,16 @@ impl HumArmorBackSpec { &self.0.default }; - let back_segment = color_segment( + let mut back_segment = color_segment( graceful_load_mat_segment(&spec.vox_spec.0), body.race.skin_color(body.skin), body.race.hair_color(body.hair_color), body.race.eye_color(body.eye_color), ); + if let Some(color) = spec.color { + let back_color = Vec3::from(color); + back_segment = back_segment.map_rgb(|rgb| recolor_grey(rgb, Rgb::from(back_color))); + } generate_mesh(&back_segment, Vec3::from(spec.vox_spec.1)) } @@ -702,7 +731,7 @@ impl HumArmorFootSpec { &self.0.default }; - let foot_segment = color_segment( + let mut foot_segment = color_segment( if flipped { graceful_load_mat_segment_flipped(&spec.vox_spec.0) } else { @@ -713,6 +742,11 @@ impl HumArmorFootSpec { body.race.eye_color(body.eye_color), ); + if let Some(color) = spec.color { + let foot_color = Vec3::from(color); + foot_segment = foot_segment.map_rgb(|rgb| recolor_grey(rgb, Rgb::from(foot_color))); + } + generate_mesh(&foot_segment, Vec3::from(spec.vox_spec.1)) } @@ -755,7 +789,7 @@ impl HumMainWeaponSpec { let spec = match self.0.get(tool_kind) { Some(spec) => spec, None => { - error!("No hand specification exists for {:?}", tool_kind); + error!("No tool/weapon specification exists for {:?}", tool_kind); return load_mesh("not_found", Vec3::new(-1.5, -1.5, -7.0), generate_mesh); }, }; @@ -789,12 +823,17 @@ impl HumArmorLanternSpec { &self.0.default }; - let lantern_segment = color_segment( + let mut lantern_segment = color_segment( graceful_load_mat_segment(&spec.vox_spec.0), body.race.skin_color(body.skin), body.race.hair_color(body.hair_color), body.race.eye_color(body.eye_color), ); + if let Some(color) = spec.color { + let lantern_color = Vec3::from(color); + lantern_segment = + lantern_segment.map_rgb(|rgb| recolor_grey(rgb, Rgb::from(lantern_color))); + } generate_mesh(&lantern_segment, Vec3::from(spec.vox_spec.1)) } diff --git a/voxygen/src/scene/simple.rs b/voxygen/src/scene/simple.rs index d400d69c53..c4c8f4e235 100644 --- a/voxygen/src/scene/simple.rs +++ b/voxygen/src/scene/simple.rs @@ -89,7 +89,7 @@ impl Scene { let mut camera = Camera::new(resolution.x / resolution.y, CameraMode::ThirdPerson); camera.set_focus_pos(Vec3::unit_z() * 1.5); - camera.set_distance(3.0); // 4.2 + camera.set_distance(3.4); camera.set_orientation(Vec3::new(0.0, 0.0, 0.0)); Self { diff --git a/voxygen/src/scene/terrain.rs b/voxygen/src/scene/terrain.rs index 9370c0f7a8..8f15a120dc 100644 --- a/voxygen/src/scene/terrain.rs +++ b/voxygen/src/scene/terrain.rs @@ -1832,7 +1832,7 @@ impl Terrain { (BlockKind::Coconut, 0), make_models( "voxygen.voxel.sprite.fruit.coconut", - Vec3::new(-6.0, -6.0, 0.0), + Vec3::new(-6.0, -6.0, 2.0), Vec3::one(), ), ), diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index 9a19332ff4..651a819bb8 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -406,12 +406,12 @@ impl Floor { .with_body(comp::Body::Humanoid(comp::humanoid::Body::random())) .with_automatic_name() .with_main_tool(assets::load_expect_cloned(match rng.gen_range(0, 6) { - 0 => "common.items.weapons.starter_axe", - 1 => "common.items.weapons.starter_sword", - 2 => "common.items.weapons.short_sword_0", - 3 => "common.items.weapons.hammer_1", - 4 => "common.items.weapons.starter_staff", - _ => "common.items.weapons.starter_bow", + 0 => "common.items.weapons.axe.starter_axe", + 1 => "common.items.weapons.sword.starter_sword", + 2 => "common.items.weapons.sword.short_sword_0", + 3 => "common.items.weapons.hammer.hammer_1", + 4 => "common.items.weapons.staff.starter_staff", + _ => "common.items.weapons.bow.starter_bow", })); supplement.add_entity(entity); diff --git a/world/src/site/settlement/mod.rs b/world/src/site/settlement/mod.rs index cba520fa10..8bffeb2c19 100644 --- a/world/src/site/settlement/mod.rs +++ b/world/src/site/settlement/mod.rs @@ -813,13 +813,15 @@ impl Settlement { }) .do_if(rng.gen(), |entity| { entity.with_main_tool(assets::load_expect_cloned( - match rng.gen_range(0, 6) { - 0 => "common.items.weapons.starter_axe", - 1 => "common.items.weapons.starter_sword", - 2 => "common.items.weapons.short_sword_0", - 3 => "common.items.weapons.hammer_1", - 4 => "common.items.weapons.starter_staff", - _ => "common.items.weapons.starter_bow", + match rng.gen_range(0, 8) { + 0 => "common.items.weapons.tool.broom", + 1 => "common.items.weapons.tool.hoe", + 2 => "common.items.weapons.tool.pickaxe", + 3 => "common.items.weapons.tool.pitchfork", + 4 => "common.items.weapons.tool.rake", + 5 => "common.items.weapons.tool.shovel-0", + 6 => "common.items.weapons.tool.shovel-1", + _ => "common.items.weapons.bow.starter_bow", }, )) })