diff --git a/CHANGELOG.md b/CHANGELOG.md index 31e03ccaf6..63ee5cbffc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -63,6 +63,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added non-uniform block heights - Added `/sudo` command - 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 @@ -78,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/common/npc_names.json b/assets/common/npc_names.json index b7add4fb9d..bced2a7ad1 100644 --- a/assets/common/npc_names.json +++ b/assets/common/npc_names.json @@ -433,6 +433,10 @@ "holladon": { "keyword": "holladon", "generic": "Holladon" + }, + "hyena": { + "keyword": "hyena", + "generic": "Hyena" } } }, @@ -463,6 +467,14 @@ "eagle": { "keyword": "eagle", "generic": "Eagle" + }, + "snowyowl": { + "keyword": "snowyowl", + "generic": "Snowy Owl" + }, + "parrot": { + "keyword": "parrot", + "generic": "Parrot" } } }, diff --git a/assets/voxygen/element/buttons/inv_slot.png b/assets/voxygen/element/buttons/inv_slot.png index 0e90ce0d71..3526eed1c1 100644 --- a/assets/voxygen/element/buttons/inv_slot.png +++ b/assets/voxygen/element/buttons/inv_slot.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9ce200dd3b21561d5ddafb2f0a7d22708495185f80aaf84cde4f9160a1494c56 -size 318 +oid sha256:6059f16ab4b46dbc90e7fba91316b92a96207e394efd95c2033443dcae0137f7 +size 320 diff --git a/assets/voxygen/element/icons/bow_m2.vox b/assets/voxygen/element/icons/bow_m2.vox index 0c783aae59..5c72c044e8 100644 --- a/assets/voxygen/element/icons/bow_m2.vox +++ b/assets/voxygen/element/icons/bow_m2.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:02c27a577018459fef92bc1144666316bffa31464f525c77b0960a21801b2c66 -size 55614 +oid sha256:7d354540b2dbbc48569d8127a0a7a4d6169c9070489310d55575be944e34791f +size 1096 diff --git a/assets/voxygen/element/icons/item_apple.vox b/assets/voxygen/element/icons/item_apple.vox index 18fb62f43f..b4a60bd3fb 100644 --- a/assets/voxygen/element/icons/item_apple.vox +++ b/assets/voxygen/element/icons/item_apple.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1be6cb5e8b2b0ebb8efe9dc6e180bcfabc7b55695908479afbebfe163d9d2178 -size 56231 +oid sha256:bec86131cd09411c3b1516d602ecf0db3632d7c7ca5db0408743325e8d2ccfff +size 1748 diff --git a/assets/voxygen/element/icons/item_cheese.png b/assets/voxygen/element/icons/item_cheese.png index aa77752c2f..e20c21aa7e 100644 --- a/assets/voxygen/element/icons/item_cheese.png +++ b/assets/voxygen/element/icons/item_cheese.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dbebea679ed840e54e99441f52d4dd613876b52fcca3d88227ac85685e36ca1f -size 1304 +oid sha256:6b73e44bddd679b83b8d2e668589e06316b419777c9ac3818c00fdd01a18affe +size 245 diff --git a/assets/voxygen/element/icons/item_cheese.vox b/assets/voxygen/element/icons/item_cheese.vox new file mode 100644 index 0000000000..5bfc15c670 --- /dev/null +++ b/assets/voxygen/element/icons/item_cheese.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f086a745accda8521bcb21215024b40b111bae815b73937d87a8fd838038e61f +size 1680 diff --git a/assets/voxygen/element/icons/item_flower.vox b/assets/voxygen/element/icons/item_flower.vox index 3c1534c865..5c3f463733 100644 --- a/assets/voxygen/element/icons/item_flower.vox +++ b/assets/voxygen/element/icons/item_flower.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5847dc60e18f08f5f2a1669d81d39d612664a654db05ffd144f2195e1452f652 -size 56791 +oid sha256:c9a76b7ab46aa89611bf1b8a7fa3a8941db497e195e15e7647ca6e72d7465b8b +size 1952 diff --git a/assets/voxygen/element/icons/item_grass.vox b/assets/voxygen/element/icons/item_grass.vox index 59916e0beb..3f57c504eb 100644 --- a/assets/voxygen/element/icons/item_grass.vox +++ b/assets/voxygen/element/icons/item_grass.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7da1daf731e78a6f83544eb6f8ebea201844004f844b5cd7deb878292741f430 -size 56512 +oid sha256:698591d27979b5c7872b70cdff1f7fc1761ee6f5da1a3b61ba4a0aaf8db76d7e +size 2028 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/shaders/figure-vert.glsl b/assets/voxygen/shaders/figure-vert.glsl index 0d528d0a03..48840127a0 100644 --- a/assets/voxygen/shaders/figure-vert.glsl +++ b/assets/voxygen/shaders/figure-vert.glsl @@ -39,7 +39,7 @@ void main() { uint bone_idx = (v_ao_bone >> 2) & 0x3Fu; mat4 combined_mat = model_mat * bones[bone_idx].bone_mat; - vec3 pos = vec3((uvec3(v_pos_norm) >> uvec3(0, 8, 16)) & uvec3(0xFFu)) - 128.0; + vec3 pos = (vec3((uvec3(v_pos_norm) >> uvec3(0, 9, 18)) & uvec3(0x1FFu)) - 256.0) / 2.0; f_pos = ( combined_mat * @@ -51,7 +51,7 @@ void main() { // First 3 normals are negative, next 3 are positive vec3 normals[6] = vec3[](vec3(-1,0,0), vec3(1,0,0), vec3(0,-1,0), vec3(0,1,0), vec3(0,0,-1), vec3(0,0,1)); - vec3 norm = normals[(v_pos_norm >> 24) & 0x7u]; + vec3 norm = normals[(v_pos_norm >> 29) & 0x7u]; // Calculate normal here rather than for each pixel in the fragment shader f_norm = normalize(( diff --git a/assets/voxygen/voxel/armor/belt/cultist.vox b/assets/voxygen/voxel/armor/belt/cultist.vox new file mode 100644 index 0000000000..3e4198a56f --- /dev/null +++ b/assets/voxygen/voxel/armor/belt/cultist.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17af982f825432b2284678331539553224ed035f7cc3ef0b17a7c0d0598bb64b +size 1536 diff --git a/assets/voxygen/voxel/armor/belt/cultist_right.vox b/assets/voxygen/voxel/armor/belt/cultist_right.vox new file mode 100644 index 0000000000..4c8d1d2e21 --- /dev/null +++ b/assets/voxygen/voxel/armor/belt/cultist_right.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbc592036cc6cc7a9c514420b73938bb762d04039a48485c7009a6e3d14761a3 +size 1388 diff --git a/assets/voxygen/voxel/armor/chest/chest_none.vox b/assets/voxygen/voxel/armor/chest/chest_none.vox index 1e9089c6b0..dbe488be63 100644 --- a/assets/voxygen/voxel/armor/chest/chest_none.vox +++ b/assets/voxygen/voxel/armor/chest/chest_none.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aaf05edac3fb92fab781293452dd074f915763bc3650cf79c4dbf356da3cfb23 -size 57075 +oid sha256:19ce5a0ccf3ed427296539202df2e6ea65f00abec4058195527a2c285bc117de +size 2632 diff --git a/assets/voxygen/voxel/armor/chest/cultist.vox b/assets/voxygen/voxel/armor/chest/cultist.vox new file mode 100644 index 0000000000..8f6650a63d --- /dev/null +++ b/assets/voxygen/voxel/armor/chest/cultist.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11d101fab4091587164ce170580ff5a46ffd3900447aed3da671286c75fc45b7 +size 2792 diff --git a/assets/voxygen/voxel/armor/chest/shirt_white-0.vox b/assets/voxygen/voxel/armor/chest/shirt_white-0.vox new file mode 100644 index 0000000000..7fb4a2a95e --- /dev/null +++ b/assets/voxygen/voxel/armor/chest/shirt_white-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f284b918667b8b712abd5272239b0665afe56ee6197a35b0fdda5dd605852a75 +size 2672 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 0000000000..33c8855660 --- /dev/null +++ b/assets/voxygen/voxel/armor/chest/worker_green-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18ef4546a55ec987b988197120690d7f81a6b23706c65aef709d8434f1ae8820 +size 2696 diff --git a/assets/voxygen/voxel/armor/chest/worker_red-0.vox b/assets/voxygen/voxel/armor/chest/worker_red-0.vox new file mode 100644 index 0000000000..44828ed711 --- /dev/null +++ b/assets/voxygen/voxel/armor/chest/worker_red-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1b9ee402c5868efcfd16a24966e49e8654154421a2ea8580b9e3e5638e645d5 +size 2696 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 0000000000..971fa032cf --- /dev/null +++ b/assets/voxygen/voxel/armor/chest/worker_white-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d47c82c22c1c7cb9dd0e0f373b1fdaef1d95f1dd05c30fa91dcb9bfc23ef1e8 +size 2696 diff --git a/assets/voxygen/voxel/armor/foot/cultist.vox b/assets/voxygen/voxel/armor/foot/cultist.vox new file mode 100644 index 0000000000..f50a18f286 --- /dev/null +++ b/assets/voxygen/voxel/armor/foot/cultist.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33c9b6672542960d68f04cf1663407acbb1295f239eb9a57160a42c9378a3903 +size 1480 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 0000000000..5d4575ac66 --- /dev/null +++ b/assets/voxygen/voxel/armor/hand/cultist_right.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48ed6b4cfd1d0b5a07f6acd7dba498e24ddf90ceda6b9da013631482b79720cc +size 1344 diff --git a/assets/voxygen/voxel/armor/pants/cultist.vox b/assets/voxygen/voxel/armor/pants/cultist.vox new file mode 100644 index 0000000000..63ecfd37c9 --- /dev/null +++ b/assets/voxygen/voxel/armor/pants/cultist.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd7dd211beccb86e8d3d7043a05aaca1ff86431feaa82ecac077d44fab0437ad +size 1992 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 0000000000..d300361315 --- /dev/null +++ b/assets/voxygen/voxel/armor/pants/worker_blue-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a8d842c70578240e29479ff463b8b11b8bd971c57248aa66095f7b92ece3eba +size 1912 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 0000000000..3b379f41ea --- /dev/null +++ b/assets/voxygen/voxel/armor/shoulder/cultist_right.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bc9b9f841bb61199dc69e3ca52c83a38cab00b36e5a4fa7eaae33312b26383d +size 1388 diff --git a/assets/voxygen/voxel/bird_medium_center_manifest.ron b/assets/voxygen/voxel/bird_medium_center_manifest.ron index 2d7b1ceebd..d89959dc10 100644 --- a/assets/voxygen/voxel/bird_medium_center_manifest.ron +++ b/assets/voxygen/voxel/bird_medium_center_manifest.ron @@ -114,15 +114,15 @@ (Eagle, Male): ( head: ( offset: (-2.0, -2.0, -3.5), - center: ("npc.eagle.female.head"), + center: ("npc.eagle.male.head"), ), torso: ( offset: (-3.0, -4.5, -4.5), - center: ("npc.eagle.female.torso"), + center: ("npc.eagle.male.torso"), ), tail: ( offset: (-2.0, -3.5, -3.5), - center: ("npc.eagle.female.tail"), + center: ("npc.eagle.male.tail"), ) ), (Eagle, Female): ( @@ -139,5 +139,60 @@ center: ("npc.eagle.female.tail"), ) ), -}) - + (Snowyowl, Male): ( + head: ( + offset: (-3.5, -4.5, -4.0), + center: ("npc.snowyowl.male.head"), + ), + torso: ( + offset: (-3.5, -5.0, -3.0), + center: ("npc.snowyowl.male.torso"), + ), + tail: ( + offset: (-2.5, -3.0, -2.0), + center: ("npc.snowyowl.male.tail"), + ) + ), + (Snowyowl, Female): ( + head: ( + offset: (-3.5, -4.5, -4.0), + center: ("npc.snowyowl.female.head"), + ), + torso: ( + offset: (-3.5, -5.0, -3.0), + center: ("npc.snowyowl.female.torso"), + ), + tail: ( + offset: (-2.5, -3.0, -2.0), + center: ("npc.snowyowl.female.tail"), + ) + ), + (Parrot, Male): ( + head: ( + offset: (-1.5, -1.5, -2.5), + center: ("npc.parrot.male.head"), + ), + torso: ( + offset: (-1.5, -3.5, -3.5), + center: ("npc.parrot.male.torso"), + ), + tail: ( + offset: (-1.5, -4.5, -1.5), + center: ("npc.parrot.male.tail"), + ) + ), + (Parrot, Female): ( + head: ( + offset: (-1.5, -1.5, -2.5), + center: ("npc.parrot.female.head"), + ), + torso: ( + offset: (-1.5, -3.5, -3.5), + center: ("npc.parrot.female.torso"), + ), + tail: ( + offset: (-1.5, -4.5, -1.5), + center: ("npc.parrot.female.tail"), + ) + ), +}) \ No newline at end of file diff --git a/assets/voxygen/voxel/bird_medium_lateral_manifest.ron b/assets/voxygen/voxel/bird_medium_lateral_manifest.ron index 909c2fc823..fcde79c0ca 100644 --- a/assets/voxygen/voxel/bird_medium_lateral_manifest.ron +++ b/assets/voxygen/voxel/bird_medium_lateral_manifest.ron @@ -179,4 +179,76 @@ lateral: ("npc.eagle.female.leg_r"), ) ), -}) + (Snowyowl, Male): ( + wing_l: ( + offset: (-1.0, -2.5, -8.0), + lateral: ("npc.snowyowl.male.wing_l"), + ), + wing_r: ( + offset: (-1.0, -2.5, -8.0), + lateral: ("npc.snowyowl.male.wing_r"), + ), + foot_l: ( + offset: (-1.0, 0.0, -6.5), + lateral: ("npc.snowyowl.male.leg_l"), + ), + foot_r: ( + offset: (-1.0, 0.0, -6.5), + lateral: ("npc.snowyowl.male.leg_r"), + ) + ), + (Snowyowl, Female): ( + wing_l: ( + offset: (-1.0, -2.5, -8.0), + lateral: ("npc.snowyowl.female.wing_l"), + ), + wing_r: ( + offset: (-1.0, -2.5, -8.0), + lateral: ("npc.snowyowl.female.wing_r"), + ), + foot_l: ( + offset: (-1.0, 0.0, -6.5), + lateral: ("npc.snowyowl.female.leg_l"), + ), + foot_r: ( + offset: (-1.0, 0.0, -6.5), + lateral: ("npc.snowyowl.female.leg_r"), + ) + ), + (Parrot, Male): ( + wing_l: ( + offset: (-0.5, -2.5, -8.0), + lateral: ("npc.parrot.female.wing"), + ), + wing_r: ( + offset: (-0.5, -2.5, -8.0), + lateral: ("npc.parrot.female.wing"), + ), + foot_l: ( + offset: (-1.0, 0.0, -3.0), + lateral: ("npc.parrot.female.leg_l"), + ), + foot_r: ( + offset: (-1.0, 0.0, -3.0), + lateral: ("npc.parrot.female.leg_r"), + ) + ), + (Parrot, Female): ( + wing_l: ( + offset: (-0.5, -2.5, -8.0), + lateral: ("npc.parrot.female.wing"), + ), + wing_r: ( + offset: (-0.5, -2.5, -8.0), + lateral: ("npc.parrot.female.wing"), + ), + foot_l: ( + offset: (-1.0, 0.0, -3.0), + lateral: ("npc.parrot.female.leg_l"), + ), + foot_r: ( + offset: (-1.0, 0.0, -3.0), + lateral: ("npc.parrot.female.leg_r"), + ) + ), +}) \ No newline at end of file diff --git a/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron b/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron index 10fd3396d4..5ad79789a8 100644 --- a/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron @@ -48,5 +48,9 @@ vox_spec: ("armor.belt.cloth_green-0", (-5.0, -3.5, 2.0)), color: None ), + Cultist: ( + vox_spec: ("armor.belt.cultist", (-5.0, -3.5, 1.0)), + color: None + ), }, )) diff --git a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron index f64477d328..35879ad875 100644 --- a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron @@ -60,5 +60,55 @@ vox_spec: ("armor.chest.rugged-0", (-7.0, -3.5, 2.0)), color: None ), + // Villagers + WorkerGreen0:( + vox_spec: ("armor.chest.worker_white-0", (-7.0, -3.5, 2.0)), + color: Some((88, 108, 65)) + ), + WorkerGreen1:( + vox_spec: ("armor.chest.shirt_white-0", (-7.0, -3.5, 2.0)), + color: Some((88, 108, 65)) + ), + WorkerRed0:( + vox_spec: ("armor.chest.worker_white-0", (-7.0, -3.5, 2.0)), + color: Some((124, 38, 46)) + ), + WorkerRed1:( + vox_spec: ("armor.chest.shirt_white-0", (-7.0, -3.5, 2.0)), + color: Some((124, 38, 46)) + ), + WorkerPurple0:( + vox_spec: ("armor.chest.worker_white-0", (-7.0, -3.5, 2.0)), + color: Some((64, 47, 56)) + ), + WorkerPurple1:( + vox_spec: ("armor.chest.shirt_white-0", (-7.0, -3.5, 2.0)), + color: Some((64, 47, 56)) + ), + WorkerYellow0:( + vox_spec: ("armor.chest.worker_white-0", (-7.0, -3.5, 2.0)), + color: Some((184, 132, 40)) + ), + WorkerYellow1:( + vox_spec: ("armor.chest.shirt_white-0", (-7.0, -3.5, 2.0)), + color: Some((184, 132, 40)) + ), + WorkerOrange0:( + vox_spec: ("armor.chest.worker_white-0", (-7.0, -3.5, 2.0)), + color: Some((135, 82, 67)) + ), + WorkerOrange1:( + vox_spec: ("armor.chest.shirt_white-0", (-7.0, -3.5, 2.0)), + color: Some((135, 82, 67)) + ), + // Cultists + CultistPurple: ( + vox_spec: ("armor.chest.cultist", (-7.0, -3.5, 2.0)), + color: Some((30, 0, 64)) + ), + CultistBlue: ( + vox_spec: ("armor.chest.cultist", (-7.0, -3.5, 2.0)), + color: Some((57, 81, 132)) + ), }, )) diff --git a/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron b/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron index ed7d87f038..0dd7e45e6d 100644 --- a/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron @@ -40,5 +40,9 @@ vox_spec: ("armor.foot.cloth_sandals", (-2.5, -3.5, -9.0)), color: None ), + Cultist: ( + vox_spec: ("armor.foot.cultist", (-2.5, -3.5, -9.0)), + color: None + ), }, )) diff --git a/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron b/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron index bb6f5fcb47..99344042b1 100644 --- a/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron @@ -80,5 +80,26 @@ color: None ) ), + CultistPurple: ( + left: ( + vox_spec: ("armor.hand.cultist_right", (-3.0, -1.5, -7.0)), + color: Some((30, 0, 64)) + ), + right: ( + vox_spec: ("armor.hand.cultist_right", (-2.0, -1.5, -7.0)), + color: Some((30, 0, 64)) + ) + ), + CultistBlue: ( + left: ( + vox_spec: ("armor.hand.cultist_right", (-3.0, -1.5, -7.0)), + color: Some((57, 81, 132)) + ), + right: ( + vox_spec: ("armor.hand.cultist_right", (-2.0, -1.5, -7.0)), + color: Some((57, 81, 132)) + ) + ), + }, )) diff --git a/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron b/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron index 9ddb0f00f4..9de82d6acb 100644 --- a/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron @@ -56,5 +56,17 @@ vox_spec: ("armor.pants.rugged-0", (-5.0, -3.5, 1.0)), color: None ), + WorkerBlue0:( + vox_spec: ("armor.pants.worker_blue-0", (-5.0, -3.5, 1.0)), + color: None + ), + CultistPurple: ( + vox_spec: ("armor.pants.cultist", (-5.0, -3.5, 1.0)), + color: Some((30, 0, 64)) + ), + CultistBlue : ( + vox_spec: ("armor.pants.cultist", (-5.0, -3.5, 1.0)), + color: Some((57, 81, 132)) + ), }, )) diff --git a/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron b/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron index 9789b7292b..cf01dba1b4 100644 --- a/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron @@ -111,5 +111,25 @@ color: None ) ), + CultistPurple: ( + left: ( + vox_spec: ("armor.shoulder.cultist_right", (-2.0, -3.5, 0.0)), + color: Some((30, 0, 64)) + ), + right: ( + vox_spec: ("armor.shoulder.cultist_right", (-2.9, -3.5, 0.0)), + color: Some((30, 0, 64)) + ) + ), + CultistBlue: ( + left: ( + vox_spec: ("armor.shoulder.cultist_right", (-2.0, -3.5, 0.0)), + color: Some((57, 81, 132)) + ), + right: ( + vox_spec: ("armor.shoulder.cultist_right", (-2.9, -3.5, 0.0)), + color: Some((57, 81, 132)) + ) + ), }, )) diff --git a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron index 04e8a06384..3dbd51ec8c 100644 --- a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron +++ b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron @@ -1,4 +1,4 @@ -({ +({ //Swords Sword(BasicSword): ( vox_spec: ("weapon.sword.rusty_2h", (-1.5, -6.5, -4.0)), color: None @@ -19,34 +19,99 @@ vox_spec: ("weapon.sword.short_2h-0", (-1.5, -6.5, -1.0)), color: None ), + // Axes Axe(BasicAxe): ( vox_spec: ("weapon.axe.rusty_2h", (-1.5, -5.0, -4.0)), color: None ), + // Hammers Hammer(BasicHammer): ( vox_spec: ("weapon.hammer.rusty_2h", (-2.5, -5.5, -4.0)), color: None ), + // Daggers Dagger(BasicDagger): ( vox_spec: ("weapon.hammer.rusty_2h", (-2.5, -5.5, -4.0)), // TODO color: None ), + // Shields Shield(BasicShield): ( vox_spec: ("weapon.shield.wood-0", (-2.5, -6.5, -2.0)), color: None ), - Bow(BasicBow): ( - vox_spec: ("weapon.bow.simple-bow", (-1.0, -6.0, -2.0)), + // Bows + Bow(ShortBow0): ( + vox_spec: ("weapon.bow.shortbow-0", (-1.0, -6.0, 2.5)), color: None ), + Bow(ShortBow1): ( + vox_spec: ("weapon.bow.shortbow-1", (-1.0, -6.0, 2.5)), + color: None + ), + Bow(LongBow0): ( + vox_spec: ("weapon.bow.longbow-0", (-1.0, -6.0, 2.5)), + color: None + ), + Bow(LongBow1): ( + vox_spec: ("weapon.bow.longbow-1", (-1.0, -6.0, 2.5)), + color: None + ), + Bow(RareBow0): ( + vox_spec: ("weapon.bow.rare_bow-0", (-1.0, -6.0, 2.5)), + color: None + ), + // Farming Equipment + Farming(Broom): ( + vox_spec: ("weapon.tool.broom-0", (-1.5, -4.0, -4.0)), + color: None + ), + Farming(Hoe0): ( + vox_spec: ("weapon.tool.hoe_green", (-2.5, -4.5, -4.0)), + color: None + ), + Farming(Hoe1): ( + vox_spec: ("weapon.tool.hoe_blue", (-2.5, -4.5, -4.0)), + color: None + ), + Farming(Pitchfork): ( + vox_spec: ("weapon.tool.pitchfork-0", (-1.0, -3.5, -4.0)), + color: None + ), + Farming(FishingRod0): ( + vox_spec: ("weapon.tool.fishing_rod_blue-0", (-2.5, -4.5, -4.0)), + color: None + ), + Farming(Rake): ( + vox_spec: ("weapon.tool.rake-0", (-1.0, -5.5, -4.0)), + color: None + ), + Farming(FishingRod1): ( + vox_spec: ("weapon.tool.fishing_rod_orange-0", (-2.5, -4.5, -4.0)), + color: None + ), + Farming(Pickaxe0): ( + vox_spec: ("weapon.tool.pickaxe_green-0", (-1.5, -7.5, -4.0)), + color: None + ), + Farming(Shovel0): ( + vox_spec: ("weapon.tool.shovel_green", (-1.0, -2.5, -4.0)), + color: None + ), + Farming(Shovel1): ( + vox_spec: ("weapon.tool.shovel_gold", (-1.0, -2.5, -4.0)), + color: None + ), + // Staves Staff(BasicStaff): ( vox_spec: ("weapon.staff.wood-fire", (-1.0, -6.0, -3.0)), color: None ), + // Sceptres Staff(Sceptre): ( vox_spec: ("weapon.staff.wood-nature", (-1.0, -6.0, -5.0)), color: None ), + // Misc Debug(Boost): ( vox_spec: ("weapon.debug_wand", (-1.5, -9.5, -4.0)), color: None diff --git a/assets/voxygen/voxel/npc/eagle/female/head.vox b/assets/voxygen/voxel/npc/eagle/female/head.vox index 3aeffecc8c..7e9b90a8bb 100644 --- a/assets/voxygen/voxel/npc/eagle/female/head.vox +++ b/assets/voxygen/voxel/npc/eagle/female/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b36eeef95b39217885e50d9c33d711187a90b1245a088c54d045ea484ca18491 -size 1608 +oid sha256:ffd195f8da588b1e0820fa1a485f3eb614cf333db8d23c4196bf5d37704b4d9b +size 56359 diff --git a/assets/voxygen/voxel/npc/eagle/female/leg_l.vox b/assets/voxygen/voxel/npc/eagle/female/leg_l.vox index 31b8befb4f..9af164237c 100644 --- a/assets/voxygen/voxel/npc/eagle/female/leg_l.vox +++ b/assets/voxygen/voxel/npc/eagle/female/leg_l.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30a26bcede8cd210e71cc743ce08cc29ff76df8b55be39ca81ba1ac93d20d909 -size 1168 +oid sha256:3320d3347b0985ed30004d006a1af88560e2e72ba9240782bb3063318237a8fb +size 55935 diff --git a/assets/voxygen/voxel/npc/eagle/female/leg_r.vox b/assets/voxygen/voxel/npc/eagle/female/leg_r.vox index fdf449ec92..5cc9a0d963 100644 --- a/assets/voxygen/voxel/npc/eagle/female/leg_r.vox +++ b/assets/voxygen/voxel/npc/eagle/female/leg_r.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5bda2e9383f59ec4317f8e3c57175fe2acafa5a067fa8c9c1eef9e4650fef46 -size 1168 +oid sha256:e5a13d38921242ff84e2c0b4c57dfa5b411edbb33f45f0030bcde460c9c30f5d +size 55935 diff --git a/assets/voxygen/voxel/npc/eagle/female/tail.vox b/assets/voxygen/voxel/npc/eagle/female/tail.vox index 1d805965b7..3d5781c99d 100644 --- a/assets/voxygen/voxel/npc/eagle/female/tail.vox +++ b/assets/voxygen/voxel/npc/eagle/female/tail.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:615dc2933805af3f0be6241021305ef5da3490d28e3774bf83d8030e5ef966db -size 1192 +oid sha256:7ba93bbb5eea8ed012ddff0a6b41183250dc185e4f5525a30424932b32d6c765 +size 55959 diff --git a/assets/voxygen/voxel/npc/eagle/female/torso.vox b/assets/voxygen/voxel/npc/eagle/female/torso.vox index 17a4a09ea4..99a75779b2 100644 --- a/assets/voxygen/voxel/npc/eagle/female/torso.vox +++ b/assets/voxygen/voxel/npc/eagle/female/torso.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8a7bf5e7a20fc8b2a924eee317123760f9ceba4f714e1a5ad6e34735111b634c -size 2136 +oid sha256:8069c0886888fa3dc741ff0eb7c4701ffe93f3cff5017a6c7c4fff248ea4da1d +size 56911 diff --git a/assets/voxygen/voxel/npc/eagle/female/wing_l.vox b/assets/voxygen/voxel/npc/eagle/female/wing_l.vox index 71dbf9a9b8..945571cf36 100644 --- a/assets/voxygen/voxel/npc/eagle/female/wing_l.vox +++ b/assets/voxygen/voxel/npc/eagle/female/wing_l.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a8c4852cb663caf77805a111f8b4d8ae27b17bf5819e281d3f1b3d6f0866250 -size 1532 +oid sha256:d7be8776a3f86210e4154384ef5511151192b189dcfd752dc19e2b4870be3472 +size 56295 diff --git a/assets/voxygen/voxel/npc/eagle/female/wing_r.vox b/assets/voxygen/voxel/npc/eagle/female/wing_r.vox index 53ddbe5680..d229ec73eb 100644 --- a/assets/voxygen/voxel/npc/eagle/female/wing_r.vox +++ b/assets/voxygen/voxel/npc/eagle/female/wing_r.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a9efd962517729b3aaedebf4d8bb08914885670edd5fbb134f49f28cf837c2f -size 1532 +oid sha256:579a144b10cefe371fcc16f60625887f4ad99cc8433fc0fc9e3c6bc4361d41eb +size 56295 diff --git a/assets/voxygen/voxel/npc/eagle/male/head.vox b/assets/voxygen/voxel/npc/eagle/male/head.vox index 3aeffecc8c..7e9b90a8bb 100644 --- a/assets/voxygen/voxel/npc/eagle/male/head.vox +++ b/assets/voxygen/voxel/npc/eagle/male/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b36eeef95b39217885e50d9c33d711187a90b1245a088c54d045ea484ca18491 -size 1608 +oid sha256:ffd195f8da588b1e0820fa1a485f3eb614cf333db8d23c4196bf5d37704b4d9b +size 56359 diff --git a/assets/voxygen/voxel/npc/eagle/male/leg_l.vox b/assets/voxygen/voxel/npc/eagle/male/leg_l.vox index 31b8befb4f..9af164237c 100644 --- a/assets/voxygen/voxel/npc/eagle/male/leg_l.vox +++ b/assets/voxygen/voxel/npc/eagle/male/leg_l.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:30a26bcede8cd210e71cc743ce08cc29ff76df8b55be39ca81ba1ac93d20d909 -size 1168 +oid sha256:3320d3347b0985ed30004d006a1af88560e2e72ba9240782bb3063318237a8fb +size 55935 diff --git a/assets/voxygen/voxel/npc/eagle/male/leg_r.vox b/assets/voxygen/voxel/npc/eagle/male/leg_r.vox index fdf449ec92..5cc9a0d963 100644 --- a/assets/voxygen/voxel/npc/eagle/male/leg_r.vox +++ b/assets/voxygen/voxel/npc/eagle/male/leg_r.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e5bda2e9383f59ec4317f8e3c57175fe2acafa5a067fa8c9c1eef9e4650fef46 -size 1168 +oid sha256:e5a13d38921242ff84e2c0b4c57dfa5b411edbb33f45f0030bcde460c9c30f5d +size 55935 diff --git a/assets/voxygen/voxel/npc/eagle/male/tail.vox b/assets/voxygen/voxel/npc/eagle/male/tail.vox index 1d805965b7..89de841150 100644 --- a/assets/voxygen/voxel/npc/eagle/male/tail.vox +++ b/assets/voxygen/voxel/npc/eagle/male/tail.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:615dc2933805af3f0be6241021305ef5da3490d28e3774bf83d8030e5ef966db -size 1192 +oid sha256:04378f81b5f5cce6ad5d6126217e5ad0ce3b1c59095b154d957cbf3dddc38fd4 +size 55959 diff --git a/assets/voxygen/voxel/npc/eagle/male/torso.vox b/assets/voxygen/voxel/npc/eagle/male/torso.vox index 17a4a09ea4..99a75779b2 100644 --- a/assets/voxygen/voxel/npc/eagle/male/torso.vox +++ b/assets/voxygen/voxel/npc/eagle/male/torso.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8a7bf5e7a20fc8b2a924eee317123760f9ceba4f714e1a5ad6e34735111b634c -size 2136 +oid sha256:8069c0886888fa3dc741ff0eb7c4701ffe93f3cff5017a6c7c4fff248ea4da1d +size 56911 diff --git a/assets/voxygen/voxel/npc/eagle/male/wing_l.vox b/assets/voxygen/voxel/npc/eagle/male/wing_l.vox index 71dbf9a9b8..945571cf36 100644 --- a/assets/voxygen/voxel/npc/eagle/male/wing_l.vox +++ b/assets/voxygen/voxel/npc/eagle/male/wing_l.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5a8c4852cb663caf77805a111f8b4d8ae27b17bf5819e281d3f1b3d6f0866250 -size 1532 +oid sha256:d7be8776a3f86210e4154384ef5511151192b189dcfd752dc19e2b4870be3472 +size 56295 diff --git a/assets/voxygen/voxel/npc/eagle/male/wing_r.vox b/assets/voxygen/voxel/npc/eagle/male/wing_r.vox index 53ddbe5680..d229ec73eb 100644 --- a/assets/voxygen/voxel/npc/eagle/male/wing_r.vox +++ b/assets/voxygen/voxel/npc/eagle/male/wing_r.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a9efd962517729b3aaedebf4d8bb08914885670edd5fbb134f49f28cf837c2f -size 1532 +oid sha256:579a144b10cefe371fcc16f60625887f4ad99cc8433fc0fc9e3c6bc4361d41eb +size 56295 diff --git a/assets/voxygen/voxel/npc/hyena/female/chest.vox b/assets/voxygen/voxel/npc/hyena/female/chest.vox new file mode 100644 index 0000000000..b17066fdc7 --- /dev/null +++ b/assets/voxygen/voxel/npc/hyena/female/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:637e62b0a5d3eeb9d029c177cfebf5d756770f4c328e12123d938a82c6347455 +size 57259 diff --git a/assets/voxygen/voxel/npc/hyena/female/foot_bl.vox b/assets/voxygen/voxel/npc/hyena/female/foot_bl.vox new file mode 100644 index 0000000000..b878edabf2 --- /dev/null +++ b/assets/voxygen/voxel/npc/hyena/female/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:177489285a01e175402ec4c2fc12cc01446ba36ad4abc7c5e843b1a9c157d176 +size 55727 diff --git a/assets/voxygen/voxel/npc/hyena/female/foot_br.vox b/assets/voxygen/voxel/npc/hyena/female/foot_br.vox new file mode 100644 index 0000000000..75a40b49bd --- /dev/null +++ b/assets/voxygen/voxel/npc/hyena/female/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63a1228b6a3d021b58cb38f10ada645352fc51523703f965c026e432f847ab8f +size 55727 diff --git a/assets/voxygen/voxel/npc/hyena/female/foot_fl.vox b/assets/voxygen/voxel/npc/hyena/female/foot_fl.vox new file mode 100644 index 0000000000..4dbda92c7e --- /dev/null +++ b/assets/voxygen/voxel/npc/hyena/female/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cc757e64f3b5f7109df888d1549eac48555251aa03d69884ffa3bfe41eaac5d +size 55755 diff --git a/assets/voxygen/voxel/npc/hyena/female/foot_fr.vox b/assets/voxygen/voxel/npc/hyena/female/foot_fr.vox new file mode 100644 index 0000000000..f9c83ee8ed --- /dev/null +++ b/assets/voxygen/voxel/npc/hyena/female/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a545bd32088e335ec2ab921098110ae41522ae7d4d815803f005bd2440689d03 +size 55755 diff --git a/assets/voxygen/voxel/npc/hyena/female/head.vox b/assets/voxygen/voxel/npc/hyena/female/head.vox new file mode 100644 index 0000000000..6dd7361de0 --- /dev/null +++ b/assets/voxygen/voxel/npc/hyena/female/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:640a8b9d79048abe27f5dedbbb8c13eb1fd388ffcfe432cf0146ac4dd7c98617 +size 56011 diff --git a/assets/voxygen/voxel/npc/hyena/male/chest.vox b/assets/voxygen/voxel/npc/hyena/male/chest.vox new file mode 100644 index 0000000000..b17066fdc7 --- /dev/null +++ b/assets/voxygen/voxel/npc/hyena/male/chest.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:637e62b0a5d3eeb9d029c177cfebf5d756770f4c328e12123d938a82c6347455 +size 57259 diff --git a/assets/voxygen/voxel/npc/hyena/male/foot_bl.vox b/assets/voxygen/voxel/npc/hyena/male/foot_bl.vox new file mode 100644 index 0000000000..b878edabf2 --- /dev/null +++ b/assets/voxygen/voxel/npc/hyena/male/foot_bl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:177489285a01e175402ec4c2fc12cc01446ba36ad4abc7c5e843b1a9c157d176 +size 55727 diff --git a/assets/voxygen/voxel/npc/hyena/male/foot_br.vox b/assets/voxygen/voxel/npc/hyena/male/foot_br.vox new file mode 100644 index 0000000000..75a40b49bd --- /dev/null +++ b/assets/voxygen/voxel/npc/hyena/male/foot_br.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63a1228b6a3d021b58cb38f10ada645352fc51523703f965c026e432f847ab8f +size 55727 diff --git a/assets/voxygen/voxel/npc/hyena/male/foot_fl.vox b/assets/voxygen/voxel/npc/hyena/male/foot_fl.vox new file mode 100644 index 0000000000..4dbda92c7e --- /dev/null +++ b/assets/voxygen/voxel/npc/hyena/male/foot_fl.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cc757e64f3b5f7109df888d1549eac48555251aa03d69884ffa3bfe41eaac5d +size 55755 diff --git a/assets/voxygen/voxel/npc/hyena/male/foot_fr.vox b/assets/voxygen/voxel/npc/hyena/male/foot_fr.vox new file mode 100644 index 0000000000..f9c83ee8ed --- /dev/null +++ b/assets/voxygen/voxel/npc/hyena/male/foot_fr.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a545bd32088e335ec2ab921098110ae41522ae7d4d815803f005bd2440689d03 +size 55755 diff --git a/assets/voxygen/voxel/npc/hyena/male/head.vox b/assets/voxygen/voxel/npc/hyena/male/head.vox new file mode 100644 index 0000000000..6dd7361de0 --- /dev/null +++ b/assets/voxygen/voxel/npc/hyena/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:640a8b9d79048abe27f5dedbbb8c13eb1fd388ffcfe432cf0146ac4dd7c98617 +size 56011 diff --git a/assets/voxygen/voxel/npc/parrot/female/head.vox b/assets/voxygen/voxel/npc/parrot/female/head.vox new file mode 100644 index 0000000000..5d7c990133 --- /dev/null +++ b/assets/voxygen/voxel/npc/parrot/female/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66c365bb5e8149927759c82af7eb881228a49abb04243021800fd2be29ca5c4b +size 55827 diff --git a/assets/voxygen/voxel/npc/parrot/female/leg_l.vox b/assets/voxygen/voxel/npc/parrot/female/leg_l.vox new file mode 100644 index 0000000000..d977d83d76 --- /dev/null +++ b/assets/voxygen/voxel/npc/parrot/female/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:844daecb446b9e9d12521c5b56a6040e1e3cd0e494391a5fddfb4369dd50e97f +size 55599 diff --git a/assets/voxygen/voxel/npc/parrot/female/leg_r.vox b/assets/voxygen/voxel/npc/parrot/female/leg_r.vox new file mode 100644 index 0000000000..3fec4b1c02 --- /dev/null +++ b/assets/voxygen/voxel/npc/parrot/female/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:949103f9884dc1ed422037e616a310e9b577515aa9075879591465a3c076b11e +size 55599 diff --git a/assets/voxygen/voxel/npc/parrot/female/tail.vox b/assets/voxygen/voxel/npc/parrot/female/tail.vox new file mode 100644 index 0000000000..78fa5607cd --- /dev/null +++ b/assets/voxygen/voxel/npc/parrot/female/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ca097a4bf6730a3585944f368a67a6aa751a620d909548ec78a167f273a4d95 +size 55711 diff --git a/assets/voxygen/voxel/npc/parrot/female/torso.vox b/assets/voxygen/voxel/npc/parrot/female/torso.vox new file mode 100644 index 0000000000..9bfa6d80aa --- /dev/null +++ b/assets/voxygen/voxel/npc/parrot/female/torso.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ff169f4873e685cf808d265ccb8da38f5fe2c04bd0e38cb0c8e4e650cbde606 +size 55887 diff --git a/assets/voxygen/voxel/npc/parrot/female/wing.vox b/assets/voxygen/voxel/npc/parrot/female/wing.vox new file mode 100644 index 0000000000..e3e9bae821 --- /dev/null +++ b/assets/voxygen/voxel/npc/parrot/female/wing.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f7358b05929a0825d3bb9ef3fd91e47cd8e646cb50a19c9902885623a39c702 +size 55707 diff --git a/assets/voxygen/voxel/npc/parrot/male/head.vox b/assets/voxygen/voxel/npc/parrot/male/head.vox new file mode 100644 index 0000000000..5d7c990133 --- /dev/null +++ b/assets/voxygen/voxel/npc/parrot/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66c365bb5e8149927759c82af7eb881228a49abb04243021800fd2be29ca5c4b +size 55827 diff --git a/assets/voxygen/voxel/npc/parrot/male/leg_l.vox b/assets/voxygen/voxel/npc/parrot/male/leg_l.vox new file mode 100644 index 0000000000..d977d83d76 --- /dev/null +++ b/assets/voxygen/voxel/npc/parrot/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:844daecb446b9e9d12521c5b56a6040e1e3cd0e494391a5fddfb4369dd50e97f +size 55599 diff --git a/assets/voxygen/voxel/npc/parrot/male/leg_r.vox b/assets/voxygen/voxel/npc/parrot/male/leg_r.vox new file mode 100644 index 0000000000..3fec4b1c02 --- /dev/null +++ b/assets/voxygen/voxel/npc/parrot/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:949103f9884dc1ed422037e616a310e9b577515aa9075879591465a3c076b11e +size 55599 diff --git a/assets/voxygen/voxel/npc/parrot/male/tail.vox b/assets/voxygen/voxel/npc/parrot/male/tail.vox new file mode 100644 index 0000000000..78fa5607cd --- /dev/null +++ b/assets/voxygen/voxel/npc/parrot/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ca097a4bf6730a3585944f368a67a6aa751a620d909548ec78a167f273a4d95 +size 55711 diff --git a/assets/voxygen/voxel/npc/parrot/male/torso.vox b/assets/voxygen/voxel/npc/parrot/male/torso.vox new file mode 100644 index 0000000000..9bfa6d80aa --- /dev/null +++ b/assets/voxygen/voxel/npc/parrot/male/torso.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ff169f4873e685cf808d265ccb8da38f5fe2c04bd0e38cb0c8e4e650cbde606 +size 55887 diff --git a/assets/voxygen/voxel/npc/parrot/male/wing.vox b/assets/voxygen/voxel/npc/parrot/male/wing.vox new file mode 100644 index 0000000000..e3e9bae821 --- /dev/null +++ b/assets/voxygen/voxel/npc/parrot/male/wing.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f7358b05929a0825d3bb9ef3fd91e47cd8e646cb50a19c9902885623a39c702 +size 55707 diff --git a/assets/voxygen/voxel/npc/sheep/male/head.vox b/assets/voxygen/voxel/npc/sheep/male/head.vox index b73deee331..81eacd37ea 100644 --- a/assets/voxygen/voxel/npc/sheep/male/head.vox +++ b/assets/voxygen/voxel/npc/sheep/male/head.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9afd4b0377c1a29586d614cd40b1b8bafb9bbc0e6655386eb2a4c97e9ed645a6 -size 1568 +oid sha256:bafb91f085e9328bc9432855165cab42b26aee02ebc23d3deff48ef77df5cbb0 +size 56403 diff --git a/assets/voxygen/voxel/npc/snowyowl/female/head.vox b/assets/voxygen/voxel/npc/snowyowl/female/head.vox new file mode 100644 index 0000000000..5233239b84 --- /dev/null +++ b/assets/voxygen/voxel/npc/snowyowl/female/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:566aa6781dd74473afc16d3ff16f77427c69f3725f1aca5596371c2b03a97390 +size 56655 diff --git a/assets/voxygen/voxel/npc/snowyowl/female/leg_l.vox b/assets/voxygen/voxel/npc/snowyowl/female/leg_l.vox new file mode 100644 index 0000000000..c6f0c929ec --- /dev/null +++ b/assets/voxygen/voxel/npc/snowyowl/female/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed574df7ee18a8c146347449442a1a5bd78915d35a69059fd56257a32e3d512f +size 55679 diff --git a/assets/voxygen/voxel/npc/snowyowl/female/leg_r.vox b/assets/voxygen/voxel/npc/snowyowl/female/leg_r.vox new file mode 100644 index 0000000000..bae9b62566 --- /dev/null +++ b/assets/voxygen/voxel/npc/snowyowl/female/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1775296d1871876b2d45afc759964f135bab071e92d27984b6a3b5a4495cc05f +size 55679 diff --git a/assets/voxygen/voxel/npc/snowyowl/female/tail.vox b/assets/voxygen/voxel/npc/snowyowl/female/tail.vox new file mode 100644 index 0000000000..3052142f41 --- /dev/null +++ b/assets/voxygen/voxel/npc/snowyowl/female/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ad90ce412f238f4ccba6c6f178a60292414795d0bf1c8a785df5bade6e9f587 +size 55787 diff --git a/assets/voxygen/voxel/npc/snowyowl/female/torso.vox b/assets/voxygen/voxel/npc/snowyowl/female/torso.vox new file mode 100644 index 0000000000..d8ea6b7177 --- /dev/null +++ b/assets/voxygen/voxel/npc/snowyowl/female/torso.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c27bab60f306c074147bb7ddd32c51b51f9fd132997d4911c60696bd9fb45d3 +size 56611 diff --git a/assets/voxygen/voxel/npc/snowyowl/female/wing_l.vox b/assets/voxygen/voxel/npc/snowyowl/female/wing_l.vox new file mode 100644 index 0000000000..743fb4dbba --- /dev/null +++ b/assets/voxygen/voxel/npc/snowyowl/female/wing_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cabfd81ba0a052193a41b534589cf1fb5a3eae68a6d491ac778b72d3fb3e25e2 +size 55843 diff --git a/assets/voxygen/voxel/npc/snowyowl/female/wing_r.vox b/assets/voxygen/voxel/npc/snowyowl/female/wing_r.vox new file mode 100644 index 0000000000..1d39ae0be4 --- /dev/null +++ b/assets/voxygen/voxel/npc/snowyowl/female/wing_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8272e4d9d53d60af121fe9a2f4499e8c269e107b0c04a24fd52f1305ac222158 +size 55843 diff --git a/assets/voxygen/voxel/npc/snowyowl/male/head.vox b/assets/voxygen/voxel/npc/snowyowl/male/head.vox new file mode 100644 index 0000000000..5233239b84 --- /dev/null +++ b/assets/voxygen/voxel/npc/snowyowl/male/head.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:566aa6781dd74473afc16d3ff16f77427c69f3725f1aca5596371c2b03a97390 +size 56655 diff --git a/assets/voxygen/voxel/npc/snowyowl/male/leg_l.vox b/assets/voxygen/voxel/npc/snowyowl/male/leg_l.vox new file mode 100644 index 0000000000..c6f0c929ec --- /dev/null +++ b/assets/voxygen/voxel/npc/snowyowl/male/leg_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed574df7ee18a8c146347449442a1a5bd78915d35a69059fd56257a32e3d512f +size 55679 diff --git a/assets/voxygen/voxel/npc/snowyowl/male/leg_r.vox b/assets/voxygen/voxel/npc/snowyowl/male/leg_r.vox new file mode 100644 index 0000000000..bae9b62566 --- /dev/null +++ b/assets/voxygen/voxel/npc/snowyowl/male/leg_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1775296d1871876b2d45afc759964f135bab071e92d27984b6a3b5a4495cc05f +size 55679 diff --git a/assets/voxygen/voxel/npc/snowyowl/male/tail.vox b/assets/voxygen/voxel/npc/snowyowl/male/tail.vox new file mode 100644 index 0000000000..3052142f41 --- /dev/null +++ b/assets/voxygen/voxel/npc/snowyowl/male/tail.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ad90ce412f238f4ccba6c6f178a60292414795d0bf1c8a785df5bade6e9f587 +size 55787 diff --git a/assets/voxygen/voxel/npc/snowyowl/male/torso.vox b/assets/voxygen/voxel/npc/snowyowl/male/torso.vox new file mode 100644 index 0000000000..d8ea6b7177 --- /dev/null +++ b/assets/voxygen/voxel/npc/snowyowl/male/torso.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c27bab60f306c074147bb7ddd32c51b51f9fd132997d4911c60696bd9fb45d3 +size 56611 diff --git a/assets/voxygen/voxel/npc/snowyowl/male/wing_l.vox b/assets/voxygen/voxel/npc/snowyowl/male/wing_l.vox new file mode 100644 index 0000000000..743fb4dbba --- /dev/null +++ b/assets/voxygen/voxel/npc/snowyowl/male/wing_l.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cabfd81ba0a052193a41b534589cf1fb5a3eae68a6d491ac778b72d3fb3e25e2 +size 55843 diff --git a/assets/voxygen/voxel/npc/snowyowl/male/wing_r.vox b/assets/voxygen/voxel/npc/snowyowl/male/wing_r.vox new file mode 100644 index 0000000000..1d39ae0be4 --- /dev/null +++ b/assets/voxygen/voxel/npc/snowyowl/male/wing_r.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8272e4d9d53d60af121fe9a2f4499e8c269e107b0c04a24fd52f1305ac222158 +size 55843 diff --git a/assets/voxygen/voxel/object/cheese-0.vox b/assets/voxygen/voxel/object/cheese-0.vox new file mode 100644 index 0000000000..358bfa9f7b --- /dev/null +++ b/assets/voxygen/voxel/object/cheese-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b3d0c5d1570b1f2be971f8f4c5ab714ec80670f4b75584663bb85d7b8389566 +size 3880 diff --git a/assets/voxygen/voxel/object/cheese-1.vox b/assets/voxygen/voxel/object/cheese-1.vox new file mode 100644 index 0000000000..0bebe248d1 --- /dev/null +++ b/assets/voxygen/voxel/object/cheese-1.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d743b162f487ececa3cc56fb4e2959d94e4f222e9dc26e88b31c58737ca459d +size 4828 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 0000000000..4a276715f5 --- /dev/null +++ b/assets/voxygen/voxel/object/dungeon_door_metal-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48e6cf93b1511ddf6aafe8d48e27627d548ee4fff1b3d0a991f215f87e041954 +size 1140 diff --git a/assets/voxygen/voxel/object/item_cheese.vox b/assets/voxygen/voxel/object/item_cheese.vox new file mode 100644 index 0000000000..f4fd6f036f --- /dev/null +++ b/assets/voxygen/voxel/object/item_cheese.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3dac6a29adb728d8e334d57f74fb5426173b63bae5b262b01310b3878d7b7fac +size 2800 diff --git a/assets/voxygen/voxel/quadruped_small_central_manifest.ron b/assets/voxygen/voxel/quadruped_small_central_manifest.ron index 5a48727736..90cd011fdd 100644 --- a/assets/voxygen/voxel/quadruped_small_central_manifest.ron +++ b/assets/voxygen/voxel/quadruped_small_central_manifest.ron @@ -44,7 +44,7 @@ (Sheep, Male):( head: ( - offset: (-5.0, -4.5, -3.5), + offset: (-6.0, -5.5, -4.0), central: ("npc.sheep.male.head"), ), chest: ( @@ -251,4 +251,26 @@ central: ("npc.holladon.female.chest"), ), ), -}) + + (Hyena, Male):( + head: ( + offset: (-3.0, -2.0, -4.0), + central: ("npc.hyena.male.head"), + ), + chest: ( + offset: (-3.0, -9.0, -5.0), + central: ("npc.hyena.male.chest"), + ), + ), + + (Hyena, Female):( + head: ( + offset: (-3.0, -2.0, -4.0), + central: ("npc.hyena.female.head"), + ), + chest: ( + offset: (-3.0, -9.0, -5.0), + central: ("npc.hyena.female.chest"), + ), + ), +}) \ No newline at end of file diff --git a/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron b/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron index 17657d7b07..c93f32789c 100644 --- a/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron +++ b/assets/voxygen/voxel/quadruped_small_lateral_manifest.ron @@ -447,4 +447,41 @@ lateral: ("npc.holladon.female.foot_br"), ), ), -}) + (Hyena, Male): ( + left_front: ( + offset: (-1.5, -2.0, -5.0), + lateral: ("npc.hyena.male.foot_fl"), + ), + right_front: ( + offset: (-1.5, -2.0, -5.0), + lateral: ("npc.hyena.male.foot_fr"), + ), + left_back: ( + offset: (-1.5, -2.0, -4.5), + lateral: ("npc.hyena.male.foot_bl"), + ), + right_back: ( + offset: (-1.5, -2.0, -4.5), + lateral: ("npc.hyena.male.foot_br"), + ), + ), + + (Hyena, Female): ( + left_front: ( + offset: (-1.5, -2.0, -5.0), + lateral: ("npc.hyena.female.foot_fl"), + ), + right_front: ( + offset: (-1.5, -2.0, -5.0), + lateral: ("npc.hyena.female.foot_fr"), + ), + left_back: ( + offset: (-1.5, -2.0, -4.5), + lateral: ("npc.hyena.female.foot_bl"), + ), + right_back: ( + offset: (-1.5, -2.0, -4.5), + lateral: ("npc.hyena.female.foot_br"), + ), + ), +}) \ No newline at end of file diff --git a/assets/voxygen/voxel/weapon/bow/longbow-0.vox b/assets/voxygen/voxel/weapon/bow/longbow-0.vox new file mode 100644 index 0000000000..e956eaaaa7 --- /dev/null +++ b/assets/voxygen/voxel/weapon/bow/longbow-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7d815a611985f6f19d36ce7ceb6a630d4fee08020bd8e6e0396144942319d6f +size 1344 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 0000000000..5906188402 --- /dev/null +++ b/assets/voxygen/voxel/weapon/bow/longbow-1.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ecdbc73501d98920192b2d7bbaa807e808cef73537c3c7baddb71ccec0841dee +size 1304 diff --git a/assets/voxygen/voxel/weapon/bow/simple-bow.vox b/assets/voxygen/voxel/weapon/bow/rare_bow-0.vox similarity index 100% rename from assets/voxygen/voxel/weapon/bow/simple-bow.vox rename to assets/voxygen/voxel/weapon/bow/rare_bow-0.vox diff --git a/assets/voxygen/voxel/weapon/bow/shortbow-0.vox b/assets/voxygen/voxel/weapon/bow/shortbow-0.vox new file mode 100644 index 0000000000..0c734f2d28 --- /dev/null +++ b/assets/voxygen/voxel/weapon/bow/shortbow-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:972a0dbabd53640607a0ca01b2d4a5339cee6ba047f54fe29485ac64f6fbb224 +size 1280 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 0000000000..706d123a4e --- /dev/null +++ b/assets/voxygen/voxel/weapon/bow/shortbow-1.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75cc0f9b5646ffd5b40b18759d62073d9a462f226e1e00b48edcbcec69433f94 +size 1280 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 0000000000..20fd9b14c9 --- /dev/null +++ b/assets/voxygen/voxel/weapon/tool/broom-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78b1e49a908a080cba558d26e1f219f54d480f3164ffd50276e095d69f1bbebe +size 1840 diff --git a/assets/voxygen/voxel/weapon/tool/fishing_rod_blue-0.vox b/assets/voxygen/voxel/weapon/tool/fishing_rod_blue-0.vox new file mode 100644 index 0000000000..7c1cda5d50 --- /dev/null +++ b/assets/voxygen/voxel/weapon/tool/fishing_rod_blue-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61abd147bb54246bd9e98bd5648170808b2f91750b27215ff7d0ba09ad895c06 +size 1392 diff --git a/assets/voxygen/voxel/weapon/tool/fishing_rod_orange-0.vox b/assets/voxygen/voxel/weapon/tool/fishing_rod_orange-0.vox new file mode 100644 index 0000000000..693af6b1d5 --- /dev/null +++ b/assets/voxygen/voxel/weapon/tool/fishing_rod_orange-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83c1e5d44d9fd4343454c7466d9709a7a210efde4ad630424aaa022be4976218 +size 1392 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 0000000000..6597fd2b03 --- /dev/null +++ b/assets/voxygen/voxel/weapon/tool/hoe_blue.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a900f50b949558bd0c255bb1c7ed18304f25437d1abeaf8b786707dce293e4b0 +size 1332 diff --git a/assets/voxygen/voxel/weapon/tool/hoe_green.vox b/assets/voxygen/voxel/weapon/tool/hoe_green.vox new file mode 100644 index 0000000000..4fc7e1e026 --- /dev/null +++ b/assets/voxygen/voxel/weapon/tool/hoe_green.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:112a5202018014bc7e428dc0dbea1666b9701ad278b7e49653ded46478bf8b66 +size 1416 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 0000000000..881ce3dd2d --- /dev/null +++ b/assets/voxygen/voxel/weapon/tool/pickaxe_green-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb14e6b65cf47a702dd5b29b9e36f34f580ca6cd4d379e6fb01ae4192128daff +size 1332 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 0000000000..d6291321bd --- /dev/null +++ b/assets/voxygen/voxel/weapon/tool/pitchfork-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dde68d35c0d3316e518420e0c9176ebbc7c4b7f75a1314ddbabb9a70fcc0c8b +size 1296 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 0000000000..5b916a2599 --- /dev/null +++ b/assets/voxygen/voxel/weapon/tool/rake-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e346f6cd750ca9891c60950eecfba69139b2a912495bf876c0d9cc102e9c02a +size 1344 diff --git a/assets/voxygen/voxel/weapon/tool/shovel_blue.vox b/assets/voxygen/voxel/weapon/tool/shovel_blue.vox new file mode 100644 index 0000000000..4604ae7cfe --- /dev/null +++ b/assets/voxygen/voxel/weapon/tool/shovel_blue.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98cc8cbe4ed9e5bb329edd1c23f4297dc6dd6e82c047a3c81081ecaf95a1cf09 +size 1300 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 0000000000..ed5f298caa --- /dev/null +++ b/assets/voxygen/voxel/weapon/tool/shovel_gold.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:877621fec38c6a11972f267a5905fbc73cf226eaab62c05b8c27b847c77bf932 +size 1376 diff --git a/assets/voxygen/voxel/weapon/tool/shovel_green.vox b/assets/voxygen/voxel/weapon/tool/shovel_green.vox new file mode 100644 index 0000000000..45424b070f --- /dev/null +++ b/assets/voxygen/voxel/weapon/tool/shovel_green.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6be13988461679f51cab13c53b6a8837ee9725c86a69a75d8d2529629eebeaa0 +size 1300 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 0000000000..c45b6075c5 --- /dev/null +++ b/assets/voxygen/voxel/weapon/tool/shovel_red.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a60b1f1c1001a2ccad3945fa9ee0a533d2610e6015bfaac74f9a08cb9349a40 +size 1300 diff --git a/assets/world/manifests/dungeon_entrances.ron b/assets/world/manifests/dungeon_entrances.ron new file mode 100644 index 0000000000..a90c39e368 --- /dev/null +++ b/assets/world/manifests/dungeon_entrances.ron @@ -0,0 +1,48 @@ +( + [ ( + specifier: "world.structure.dungeon.jungle_temple.entrance.1", + center: (50, 40, 10) + ), + ( + specifier: "world.structure.dungeon.pillar_entrance.round.1", + center: (21, 17, 28) + ), + ( + specifier: "world.structure.dungeon.pillar_entrance.round.2", + center: (20, 28, 15) + ), + ( + specifier: "world.structure.dungeon.pillar_entrance.1", + center: (18, 16, 17) + ), + ( + specifier: "world.structure.dungeon.pillar_entrance.2", + center: (18, 16, 17) + ), + ( + specifier: "world.structure.dungeon.pillar_entrance.3", + center: (18, 16, 17) + ), + ( + specifier: "world.structure.dungeon.pillar_entrance.4", + center: (18, 16, 17) + ), + ( + specifier: "world.structure.dungeon.pillar_entrance.5", + center: (18, 16, 17) + ), + ( + specifier: "world.structure.dungeon.pillar_entrance.6", + center: (18, 16, 17) + ), + ( + specifier: "world.structure.dungeon.temperate_entrance.ruins_4", + center: (13, 11, 14) + ), + ( + specifier: "world.structure.dungeon.misc_entrance.tower-ruin", + center: (13, 16, 9) + ), + + ] +) diff --git a/assets/world/manifests/quirky.ron b/assets/world/manifests/quirky.ron index 487c05d9c1..762845cdfb 100644 --- a/assets/world/manifests/quirky.ron +++ b/assets/world/manifests/quirky.ron @@ -1,9 +1,5 @@ ( - [ - ( - specifier: "world.structure.natural.tower-ruin", - center: (11, 14, 5) - ), + [ ( specifier: "world.structure.natural.witch-hut", center: (10, 13, 9) diff --git a/assets/world/module/human/balcony_upstairs.vox b/assets/world/module/human/balcony_upstairs.vox deleted file mode 100644 index 49e0d6826e..0000000000 --- a/assets/world/module/human/balcony_upstairs.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a61471613997d50f2e3739e6417df4c60dfc83b8091859e8ed038fb8aca79e55 -size 1416 diff --git a/assets/world/module/human/chimney_roof.vox b/assets/world/module/human/chimney_roof.vox deleted file mode 100644 index 47a118d2a0..0000000000 --- a/assets/world/module/human/chimney_roof.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:77920b4223fd4a05145ef2dd38e5fea91c7b0b1eb72fe1efa4325059e7429eb9 -size 1916 diff --git a/assets/world/module/human/corner_ground.vox b/assets/world/module/human/corner_ground.vox deleted file mode 100644 index c1510a2220..0000000000 --- a/assets/world/module/human/corner_ground.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0ca6e6840e0eb1265d20b6781e05189ca33378238441d2d4174392c53d3faa31 -size 3468 diff --git a/assets/world/module/human/corner_roof.vox b/assets/world/module/human/corner_roof.vox deleted file mode 100644 index 0571175893..0000000000 --- a/assets/world/module/human/corner_roof.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dd97dbd7f0e27d4320d2bc91bd6d7799a9d7dec02e22c8b9f447f8982a7186d7 -size 1676 diff --git a/assets/world/module/human/corner_upstairs.vox b/assets/world/module/human/corner_upstairs.vox deleted file mode 100644 index 21eec101d6..0000000000 --- a/assets/world/module/human/corner_upstairs.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2da5a6887ddb073b54745c13d4dedf1ff6d1d5a0a84f7005181b7f69a97a5541 -size 3432 diff --git a/assets/world/module/human/door_big.vox b/assets/world/module/human/door_big.vox deleted file mode 100644 index 03e2a5d720..0000000000 --- a/assets/world/module/human/door_big.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:716c2f9e7c7fbdd2a0ce1b261967233d262223f905d4c2a23774527920211358 -size 3992 diff --git a/assets/world/module/human/door_ground.vox b/assets/world/module/human/door_ground.vox deleted file mode 100644 index be08e4ac12..0000000000 --- a/assets/world/module/human/door_ground.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ac34b6009acbce1d2a33bb527719b25e75e295d9f53ec83f1ecd45e0d4d3eb2f -size 3992 diff --git a/assets/world/module/human/floor_ground.vox b/assets/world/module/human/floor_ground.vox deleted file mode 100644 index bfb5262b55..0000000000 --- a/assets/world/module/human/floor_ground.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9d143fd09da40dcdc3c26c662ed969dce98d6115c7d1fdc7a08e0be2a0fd1548 -size 4012 diff --git a/assets/world/module/human/floor_roof.vox b/assets/world/module/human/floor_roof.vox deleted file mode 100644 index a11cc4523e..0000000000 --- a/assets/world/module/human/floor_roof.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c58e5556c76ee6eac8d7f83af8ab66c237d85897fa62f8359872c15852df63bf -size 4012 diff --git a/assets/world/module/human/floor_upstairs.vox b/assets/world/module/human/floor_upstairs.vox deleted file mode 100644 index 9b5c26e2fa..0000000000 --- a/assets/world/module/human/floor_upstairs.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dbcf0cf859fce0ecf8f302f669610317331a804cff57e5638a1872a52020c981 -size 4012 diff --git a/assets/world/module/human/stair_ground.vox b/assets/world/module/human/stair_ground.vox deleted file mode 100644 index bf6aafd99b..0000000000 --- a/assets/world/module/human/stair_ground.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f6e10cd6387dfbcf578f5dae2d243b8a35f17e2596856d7b8332ac05809f826b -size 2040 diff --git a/assets/world/module/human/wall_ground.vox b/assets/world/module/human/wall_ground.vox deleted file mode 100644 index 091e29aaf2..0000000000 --- a/assets/world/module/human/wall_ground.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:973892a68060cc889ec4b726dcb9794249442c2c6f3a59c6e8d4958f8cb1fb2e -size 4012 diff --git a/assets/world/module/human/wall_roof.vox b/assets/world/module/human/wall_roof.vox deleted file mode 100644 index 6a1e5a12ff..0000000000 --- a/assets/world/module/human/wall_roof.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5b884335c307d2d0e82712c477c7ce33ad2f6b6ecdaa08a432142300c335b1ee -size 4012 diff --git a/assets/world/module/human/wall_upstairs.vox b/assets/world/module/human/wall_upstairs.vox deleted file mode 100644 index 745551a64b..0000000000 --- a/assets/world/module/human/wall_upstairs.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d8dac53854429015007dfd44242e902f1d04fe1f11ef818a30225564607cef6e -size 4012 diff --git a/assets/world/module/human/window_corner_ground.vox b/assets/world/module/human/window_corner_ground.vox deleted file mode 100644 index 28832b71ed..0000000000 --- a/assets/world/module/human/window_corner_ground.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3f8c0f37b21ce04eb82519c25b0e2d51e88a6f7119735e2119b050d57852af1a -size 3468 diff --git a/assets/world/module/human/window_corner_upstairs.vox b/assets/world/module/human/window_corner_upstairs.vox deleted file mode 100644 index eed11a6960..0000000000 --- a/assets/world/module/human/window_corner_upstairs.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:55059992a984bcc56428a252af3f037243113aa5e682c20a364814432bc48fe2 -size 3428 diff --git a/assets/world/module/human/window_ground.vox b/assets/world/module/human/window_ground.vox deleted file mode 100644 index f257ec5a60..0000000000 --- a/assets/world/module/human/window_ground.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3680a888f0879adc54510d7acf229c530e57645cf13f226c83833eb0ffa5f45a -size 3724 diff --git a/assets/world/module/human/window_upstairs.vox b/assets/world/module/human/window_upstairs.vox deleted file mode 100644 index df35d807f3..0000000000 --- a/assets/world/module/human/window_upstairs.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aa292366a8bc36921c42705db54e3c4ac88d7c833c20f4729b524b9f94aa7803 -size 4012 diff --git a/assets/world/module/wall/corner_ground.vox b/assets/world/module/wall/corner_ground.vox deleted file mode 100644 index 768eca471b..0000000000 --- a/assets/world/module/wall/corner_ground.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:45748af2727abb70d77986e85dd9af2383381fd66efac50228d6d9eb068709e6 -size 2716 diff --git a/assets/world/module/wall/corner_mid.vox b/assets/world/module/wall/corner_mid.vox deleted file mode 100644 index bb36fa2b9e..0000000000 --- a/assets/world/module/wall/corner_mid.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6bfcb87955e2c7d3c05b818ec0275fc6e6942b91423941d7056fbb16cadea98b -size 2660 diff --git a/assets/world/module/wall/corner_top.vox b/assets/world/module/wall/corner_top.vox deleted file mode 100644 index 224239b371..0000000000 --- a/assets/world/module/wall/corner_top.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b185a18df4c044445463670caa04cbc9662398f799069a73b3c7b556ae542b78 -size 3312 diff --git a/assets/world/module/wall/edge_ground.vox b/assets/world/module/wall/edge_ground.vox deleted file mode 100644 index 5f646c9192..0000000000 --- a/assets/world/module/wall/edge_ground.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c60695392ae89d3bf9ba8927d25c39b1da5eb173ac174238720604b9ca982eda -size 2608 diff --git a/assets/world/module/wall/edge_mid.vox b/assets/world/module/wall/edge_mid.vox deleted file mode 100644 index d894dfc34f..0000000000 --- a/assets/world/module/wall/edge_mid.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d5212e3429fd9f1877a3bdd6017400960c817cfae75c4e4f2f03509f6c07757f -size 2536 diff --git a/assets/world/module/wall/edge_top.vox b/assets/world/module/wall/edge_top.vox deleted file mode 100644 index cbeea4032a..0000000000 --- a/assets/world/module/wall/edge_top.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e53559945372e8e5924f6b6c7b97d6d35c9c7a5b4050b0c553e27a080587a8b9 -size 3268 diff --git a/assets/world/module/wall/end_top.vox b/assets/world/module/wall/end_top.vox deleted file mode 100644 index 8e246035af..0000000000 --- a/assets/world/module/wall/end_top.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:df2dadec6a2f6862f9d7397051ae3ba74d6ed0fe5447a402893ab192dfca5735 -size 2120 diff --git a/assets/world/module/wall/single_top.vox b/assets/world/module/wall/single_top.vox deleted file mode 100644 index dbf9f207d2..0000000000 --- a/assets/world/module/wall/single_top.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:038b24785d2894a2fb15a479fe0277a3be1fcbadb02459bf5293cffaf4e7767a -size 3188 diff --git a/assets/world/structure/dungeon/jungle_temple/entrance/1.vox b/assets/world/structure/dungeon/jungle_temple/entrance/1.vox new file mode 100644 index 0000000000..cdef59e45a --- /dev/null +++ b/assets/world/structure/dungeon/jungle_temple/entrance/1.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4776ba6109db31fce86354e8599e60b9a6e5ba4bd46b3f27ad9fafc36adde02 +size 491808 diff --git a/assets/world/structure/natural/tower-ruin.vox b/assets/world/structure/dungeon/misc_entrance/tower-ruin.vox similarity index 100% rename from assets/world/structure/natural/tower-ruin.vox rename to assets/world/structure/dungeon/misc_entrance/tower-ruin.vox diff --git a/assets/world/structure/dungeon/pillar_entrance/1.vox b/assets/world/structure/dungeon/pillar_entrance/1.vox new file mode 100644 index 0000000000..72446dca7e --- /dev/null +++ b/assets/world/structure/dungeon/pillar_entrance/1.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6171ea50e20bcf61b293aeb6b065379c720c86212a442037e734eee8f15a1d4c +size 78056 diff --git a/assets/world/structure/dungeon/pillar_entrance/2.vox b/assets/world/structure/dungeon/pillar_entrance/2.vox new file mode 100644 index 0000000000..5587d162c6 --- /dev/null +++ b/assets/world/structure/dungeon/pillar_entrance/2.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:063773bdd9f2a949ede616eeb4bd909d1ba8d8588b223344870c929ed0e54b3f +size 80208 diff --git a/assets/world/structure/dungeon/pillar_entrance/3.vox b/assets/world/structure/dungeon/pillar_entrance/3.vox new file mode 100644 index 0000000000..287d00532d --- /dev/null +++ b/assets/world/structure/dungeon/pillar_entrance/3.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:912a62e77ab47135c7aec62d5d9c4d8ab6681129d02b99ca0da05c2c533fa54f +size 80680 diff --git a/assets/world/structure/dungeon/pillar_entrance/4.vox b/assets/world/structure/dungeon/pillar_entrance/4.vox new file mode 100644 index 0000000000..f9e8e1030d --- /dev/null +++ b/assets/world/structure/dungeon/pillar_entrance/4.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81b784fb9eaac194420bd392a0f654a3426a9569b72f4e245054a40a63eae0e9 +size 92924 diff --git a/assets/world/structure/dungeon/pillar_entrance/5.vox b/assets/world/structure/dungeon/pillar_entrance/5.vox new file mode 100644 index 0000000000..40ae42a88b --- /dev/null +++ b/assets/world/structure/dungeon/pillar_entrance/5.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c77203935805917bcf58c43b1824e9332e9e46104317b17292c28527c786795 +size 82340 diff --git a/assets/world/structure/dungeon/pillar_entrance/6.vox b/assets/world/structure/dungeon/pillar_entrance/6.vox new file mode 100644 index 0000000000..7a75508f5a --- /dev/null +++ b/assets/world/structure/dungeon/pillar_entrance/6.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:228025703e2d75982f4357a4e821fa0277c937d5f8bdc0a3d104d00c6f4aa30d +size 74852 diff --git a/assets/world/structure/dungeon/pillar_entrance/round/1.vox b/assets/world/structure/dungeon/pillar_entrance/round/1.vox new file mode 100644 index 0000000000..8d8ab442e0 --- /dev/null +++ b/assets/world/structure/dungeon/pillar_entrance/round/1.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a80872a97434486f088ea47ca97ec94736855674da065e80f03dbf72ada532c +size 141607 diff --git a/assets/world/structure/dungeon/pillar_entrance/round/2.vox b/assets/world/structure/dungeon/pillar_entrance/round/2.vox new file mode 100644 index 0000000000..dbe746c517 --- /dev/null +++ b/assets/world/structure/dungeon/pillar_entrance/round/2.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:959adda39a28692133217afec98ba0ac6f8e009c968e0b3b1fbcd30a464673c6 +size 76000 diff --git a/assets/world/structure/dungeon/temperate_entrance/ruins_4.vox b/assets/world/structure/dungeon/temperate_entrance/ruins_4.vox new file mode 100644 index 0000000000..9a78312a9a --- /dev/null +++ b/assets/world/structure/dungeon/temperate_entrance/ruins_4.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bf9a8a38d5e42b1cf731df40cda238104dd9f17b261d0ce48f89da8f683a376 +size 63972 diff --git a/assets/world/tree/desert_palm_old/1.vox b/assets/world/tree/desert_palm_old/1.vox deleted file mode 100644 index bec36a7ddf..0000000000 --- a/assets/world/tree/desert_palm_old/1.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:abe347ac442a2afc287869f9d2256c5af2b6507f4d1fa370f39769a95119713c -size 2568 diff --git a/assets/world/tree/desert_palm_old/10.vox b/assets/world/tree/desert_palm_old/10.vox deleted file mode 100644 index e05ad08d54..0000000000 --- a/assets/world/tree/desert_palm_old/10.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:10cebeb0facf61c5e5b01e0cb4a2c53d3871677f3c120ac14164afc89df32b87 -size 3004 diff --git a/assets/world/tree/desert_palm_old/2.vox b/assets/world/tree/desert_palm_old/2.vox deleted file mode 100644 index a182725d0a..0000000000 --- a/assets/world/tree/desert_palm_old/2.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:caca1a9c7c717e3dcc2fe5787e69139d816ddd2cb0cb5ad54c51298f28764a9e -size 3056 diff --git a/assets/world/tree/desert_palm_old/3.vox b/assets/world/tree/desert_palm_old/3.vox deleted file mode 100644 index 60a255cea8..0000000000 --- a/assets/world/tree/desert_palm_old/3.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:51016319e64f1df1a5121e14a488aacf35e29c5676fcba4ffcc595c439c22508 -size 3452 diff --git a/assets/world/tree/desert_palm_old/4.vox b/assets/world/tree/desert_palm_old/4.vox deleted file mode 100644 index c523f8be06..0000000000 --- a/assets/world/tree/desert_palm_old/4.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5460e522e7026bf2f0f1b4f46f7d7fcff0e675c8cfcb216f39978f61f2bb4a96 -size 3156 diff --git a/assets/world/tree/desert_palm_old/5.vox b/assets/world/tree/desert_palm_old/5.vox deleted file mode 100644 index 282c8bce65..0000000000 --- a/assets/world/tree/desert_palm_old/5.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:71ad147f6040ddca601f6eb35f06963bca0b5a0c9fdc9f848605487212bbd475 -size 3012 diff --git a/assets/world/tree/desert_palm_old/6.vox b/assets/world/tree/desert_palm_old/6.vox deleted file mode 100644 index 0b4b8b6d25..0000000000 --- a/assets/world/tree/desert_palm_old/6.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e139c706a46394f4f84f0a3c948976a96c08d41b683a14bd47559d54f688a9e4 -size 2980 diff --git a/assets/world/tree/desert_palm_old/7.vox b/assets/world/tree/desert_palm_old/7.vox deleted file mode 100644 index 9631bc5e3f..0000000000 --- a/assets/world/tree/desert_palm_old/7.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ff5522828c67a45e8debcf1137fd871cab50e1dcd7d0d8d8fe1d82571284e6b1 -size 3236 diff --git a/assets/world/tree/desert_palm_old/8.vox b/assets/world/tree/desert_palm_old/8.vox deleted file mode 100644 index 2e87ef74b0..0000000000 --- a/assets/world/tree/desert_palm_old/8.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4d2711eabe9972f49449441e2ef0742b07b6e718cf4a81bbaba24c98ebc05b5a -size 3124 diff --git a/assets/world/tree/desert_palm_old/9.vox b/assets/world/tree/desert_palm_old/9.vox deleted file mode 100644 index f81f3e583f..0000000000 --- a/assets/world/tree/desert_palm_old/9.vox +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:db651fae2577f2d6d0e2c5e74484dba793edffe914313b90a1aaf0aafb22fffa -size 3156 diff --git a/common/src/comp/body/bird_medium.rs b/common/src/comp/body/bird_medium.rs index 6447925f3a..363c6c1867 100644 --- a/common/src/comp/body/bird_medium.rs +++ b/common/src/comp/body/bird_medium.rs @@ -32,6 +32,8 @@ pub enum Species { Goose = 2, Peacock = 3, Eagle = 4, + Snowyowl = 5, + Parrot = 6, } /// Data representing per-species generic data. @@ -44,6 +46,8 @@ pub struct AllSpecies { pub goose: SpeciesMeta, pub peacock: SpeciesMeta, pub eagle: SpeciesMeta, + pub snowyowl: SpeciesMeta, + pub parrot: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -57,16 +61,20 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Goose => &self.goose, Species::Peacock => &self.peacock, Species::Eagle => &self.eagle, + Species::Snowyowl => &self.snowyowl, + Species::Parrot => &self.parrot, } } } -pub const ALL_SPECIES: [Species; 5] = [ +pub const ALL_SPECIES: [Species; 7] = [ Species::Duck, Species::Chicken, Species::Goose, Species::Peacock, Species::Eagle, + Species::Snowyowl, + Species::Parrot, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { 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/body/quadruped_small.rs b/common/src/comp/body/quadruped_small.rs index 3b8dd5a26c..51e5376828 100644 --- a/common/src/comp/body/quadruped_small.rs +++ b/common/src/comp/body/quadruped_small.rs @@ -39,6 +39,7 @@ pub enum Species { Quokka = 9, Dodarock = 10, Holladon = 11, + Hyena = 12, } /// Data representing per-species generic data. @@ -58,6 +59,7 @@ pub struct AllSpecies { pub quokka: SpeciesMeta, pub dodarock: SpeciesMeta, pub holladon: SpeciesMeta, + pub hyena: SpeciesMeta, } impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies { @@ -78,11 +80,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies Species::Quokka => &self.quokka, Species::Dodarock => &self.dodarock, Species::Holladon => &self.holladon, + Species::Hyena => &self.hyena, } } } -pub const ALL_SPECIES: [Species; 12] = [ +pub const ALL_SPECIES: [Species; 13] = [ Species::Pig, Species::Fox, Species::Sheep, @@ -95,6 +98,7 @@ pub const ALL_SPECIES: [Species; 12] = [ Species::Quokka, Species::Dodarock, Species::Holladon, + Species::Hyena, ]; impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies { 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..2a6aa52f6d 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -1,3 +1,6 @@ +// Note: If you changes here "break" old character saves you can change the +// version in voxygen\src\meta.rs in order to reset save files to being empty + use crate::comp::{ body::object, projectile, Body, CharacterAbility, Gravity, HealthChange, HealthSource, LightEmitter, Projectile, @@ -22,7 +25,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 +44,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 +74,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 +135,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/common/src/terrain/structure.rs b/common/src/terrain/structure.rs index 8bdf71586e..14ea9806be 100644 --- a/common/src/terrain/structure.rs +++ b/common/src/terrain/structure.rs @@ -5,12 +5,13 @@ use crate::{ volumes::dyna::{Dyna, DynaError}, }; use dot_vox::DotVoxData; -use std::{fs::File, io::BufReader}; +use std::{fs::File, io::BufReader, sync::Arc}; use vek::*; #[derive(Copy, Clone, PartialEq)] pub enum StructureBlock { None, + Grass, TemperateLeaves, PineLeaves, Acacia, @@ -50,6 +51,21 @@ pub struct Structure { } impl Structure { + pub fn load_group(specifier: &str) -> Vec> { + let spec = assets::load::(&["world.manifests.", specifier].concat()); + return spec + .unwrap() + .0 + .iter() + .map(|sp| { + assets::load_map(&sp.specifier[..], |s: Structure| { + s.with_center(Vec3::from(sp.center)) + }) + .unwrap() + }) + .collect(); + } + pub fn with_center(mut self, center: Vec3) -> Self { self.center = center; self @@ -113,6 +129,7 @@ impl Asset for Structure { 5 => StructureBlock::Mangrove, 6 => StructureBlock::GreenSludge, 7 => StructureBlock::Fruit, + 8 => StructureBlock::Grass, 9 => StructureBlock::Liana, 10 => StructureBlock::Chest, 11 => StructureBlock::Coconut, @@ -150,3 +167,19 @@ impl Asset for Structure { } } } + +#[derive(Deserialize)] +struct StructureSpec { + specifier: String, + center: [i32; 3], +} +#[derive(Deserialize)] +struct StructuresSpec(Vec); + +impl Asset for StructuresSpec { + const ENDINGS: &'static [&'static str] = &["ron"]; + + fn parse(buf_reader: BufReader) -> Result { + ron::de::from_reader(buf_reader).map_err(assets::Error::parse_error) + } +} 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/bird_medium/mod.rs b/voxygen/src/anim/bird_medium/mod.rs index 78a9ed1217..d5fab6015e 100644 --- a/voxygen/src/anim/bird_medium/mod.rs +++ b/voxygen/src/anim/bird_medium/mod.rs @@ -103,7 +103,9 @@ impl<'a> From<&'a comp::bird_medium::Body> for SkeletonAttr { (Chicken, _) => (4.0, 3.0), (Goose, _) => (5.0, 5.0), (Peacock, _) => (4.0, 7.0), - (Eagle, _) => (3.5, 5.0), + (Eagle, _) => (2.5, 5.0), + (Snowyowl, _) => (2.5, 5.0), + (Parrot, _) => (0.5, 4.5), }, chest: match (body.species, body.body_type) { (Duck, _) => (0.0, 5.0), @@ -111,6 +113,8 @@ impl<'a> From<&'a comp::bird_medium::Body> for SkeletonAttr { (Goose, _) => (0.0, 8.0), (Peacock, _) => (0.0, 10.0), (Eagle, _) => (0.0, 8.0), + (Snowyowl, _) => (0.0, 4.5), + (Parrot, _) => (0.0, 5.0), }, tail: match (body.species, body.body_type) { (Duck, _) => (-3.0, 1.5), @@ -118,6 +122,8 @@ impl<'a> From<&'a comp::bird_medium::Body> for SkeletonAttr { (Goose, _) => (-5.0, 3.0), (Peacock, _) => (-5.5, 2.0), (Eagle, _) => (-8.0, -4.0), + (Snowyowl, _) => (-6.0, -2.0), + (Parrot, _) => (-8.0, -2.0), }, wing: match (body.species, body.body_type) { (Duck, _) => (2.75, 0.0, 1.0), @@ -125,6 +131,8 @@ impl<'a> From<&'a comp::bird_medium::Body> for SkeletonAttr { (Goose, _) => (3.75, -1.0, 2.0), (Peacock, _) => (3.0, 0.0, 1.0), (Eagle, _) => (3.0, -8.0, 4.0), + (Snowyowl, _) => (3.5, -5.5, 4.0), + (Parrot, _) => (2.0, -4.5, 3.0), }, foot: match (body.species, body.body_type) { (Duck, _) => (2.0, -1.5, 4.0), @@ -132,6 +140,8 @@ impl<'a> From<&'a comp::bird_medium::Body> for SkeletonAttr { (Goose, _) => (2.0, -1.5, 7.0), (Peacock, _) => (2.0, -2.5, 8.0), (Eagle, _) => (2.0, -2.0, 8.0), + (Snowyowl, _) => (1.5, -2.5, 7.0), + (Parrot, _) => (1.5, -3.0, 3.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..a3ff928ea7 100644 --- a/voxygen/src/anim/character/mod.rs +++ b/voxygen/src/anim/character/mod.rs @@ -168,18 +168,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) => 1.14, + (Orc, Female) => 1.02, + (Human, Male) => 1.02, + (Human, Female) => 0.96, + (Elf, Male) => 1.02, + (Elf, Female) => 0.96, + (Dwarf, Male) => 0.84, + (Dwarf, Female) => 0.78, + (Undead, Male) => 0.96, + (Undead, Female) => 0.9, + (Danari, Male) => 0.696, + (Danari, Female) => 0.696, } } } @@ -192,27 +192,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.0, 13.8), + (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/anim/quadruped_small/mod.rs b/voxygen/src/anim/quadruped_small/mod.rs index b043d01751..3e17cce90c 100644 --- a/voxygen/src/anim/quadruped_small/mod.rs +++ b/voxygen/src/anim/quadruped_small/mod.rs @@ -104,6 +104,7 @@ impl<'a> From<&'a comp::quadruped_small::Body> for SkeletonAttr { (Quokka, _) => (10.0, 10.0), (Dodarock, _) => (8.0, 9.0), (Holladon, _) => (8.0, 8.0), + (Hyena, _) => (7.5, 13.0), }, chest: match (body.species, body.body_type) { (Pig, _) => (0.0, 8.0), @@ -118,6 +119,7 @@ impl<'a> From<&'a comp::quadruped_small::Body> for SkeletonAttr { (Quokka, _) => (2.0, 8.0), (Dodarock, _) => (-2.0, 8.0), (Holladon, _) => (-2.0, 6.0), + (Hyena, _) => (-2.0, 9.0), }, feet_f: match (body.species, body.body_type) { (Pig, _) => (3.0, 5.0, 2.0), @@ -132,6 +134,7 @@ impl<'a> From<&'a comp::quadruped_small::Body> for SkeletonAttr { (Quokka, _) => (3.0, 5.0, 3.0), (Dodarock, _) => (3.5, 5.0, 4.0), (Holladon, _) => (3.0, 5.0, 4.0), + (Hyena, _) => (2.5, 5.0, 6.0), }, feet_b: match (body.species, body.body_type) { (Pig, _) => (3.0, -2.0, 2.0), @@ -146,6 +149,7 @@ impl<'a> From<&'a comp::quadruped_small::Body> for SkeletonAttr { (Quokka, _) => (3.0, -4.0, 3.0), (Dodarock, _) => (4.5, -3.0, 4.0), (Holladon, _) => (4.0, -4.0, 3.0), + (Hyena, _) => (2.5, -7.0, 6.0), }, } } 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/meta.rs b/voxygen/src/meta.rs index af884eee76..71d66087f9 100644 --- a/voxygen/src/meta.rs +++ b/voxygen/src/meta.rs @@ -4,6 +4,7 @@ use log::warn; use serde_derive::{Deserialize, Serialize}; use std::{fs, io::Write, path::PathBuf}; +const VALID_VERSION: u32 = 0; // Change this if you broke charsaves #[derive(Clone, Debug, Serialize, Deserialize)] #[repr(C)] pub struct CharacterData { @@ -13,11 +14,12 @@ pub struct CharacterData { } #[derive(Clone, Debug, Default, Serialize, Deserialize)] -#[serde(default)] +//#[serde(default)] #[repr(C)] pub struct Meta { pub characters: Vec, pub selected_character: usize, + pub version: u32, } impl Meta { @@ -38,8 +40,12 @@ impl Meta { let path = Self::get_meta_path(); if let Ok(file) = fs::File::open(&path) { - match ron::de::from_reader(file) { - Ok(s) => return s, + match ron::de::from_reader::<_, Meta>(file) { + Ok(s) => { + if s.version == VALID_VERSION { + return s; + } + }, Err(e) => { log::warn!("Failed to parse meta file! Fallback to default. {}", e); // Rename the corrupted settings file diff --git a/voxygen/src/render/pipelines/figure.rs b/voxygen/src/render/pipelines/figure.rs index b5ab23693b..adc2597247 100644 --- a/voxygen/src/render/pipelines/figure.rs +++ b/voxygen/src/render/pipelines/figure.rs @@ -59,11 +59,11 @@ impl Vertex { }; Self { pos_norm: pos - .map2(Vec3::new(0, 8, 16), |e, shift| { - ((e + 128.0) as u32) << shift + .map2(Vec3::new(0, 9, 18), |e, shift| { + (((e * 2.0 + 256.0) as u32) & 0x3FF) << shift }) .reduce_bitor() - | (norm_bits << 24), + | (norm_bits << 29), col: col .map2(Rgb::new(0, 8, 16), |e, shift| ((e * 255.0) as u32) << shift) .reduce_bitor(), 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 fe4ae60df4..4173889e02 100644 --- a/voxygen/src/scene/simple.rs +++ b/voxygen/src/scene/simple.rs @@ -106,8 +106,9 @@ 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(start_angle, 0.0, 0.0)); + Self { globals: renderer.create_consts(&[Globals::default()]).unwrap(), lights: renderer.create_consts(&[Light::default(); 32]).unwrap(), diff --git a/voxygen/src/scene/terrain.rs b/voxygen/src/scene/terrain.rs index ea5a9fd982..009843052b 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/block/mod.rs b/world/src/block/mod.rs index c7707dfabf..5be9a5e011 100644 --- a/world/src/block/mod.rs +++ b/world/src/block/mod.rs @@ -538,7 +538,6 @@ impl StructureInfo { .and_then(|b| { block_from_structure( *b, - volume.default_kind(), block_pos, self.pos.into(), self.seed, @@ -552,11 +551,10 @@ impl StructureInfo { pub fn block_from_structure( sblock: StructureBlock, - default_kind: BlockKind, pos: Vec3, structure_pos: Vec2, structure_seed: u32, - _sample: &ColumnSample, + sample: &ColumnSample, ) -> Option { let field = RandomField::new(structure_seed + 0); @@ -587,6 +585,10 @@ pub fn block_from_structure( match sblock { StructureBlock::None => None, + StructureBlock::Grass => Some(Block::new( + BlockKind::Normal, + sample.surface_color.map(|e| (e * 255.0) as u8), + )), StructureBlock::TemperateLeaves => Some(Block::new( BlockKind::Leaves, Lerp::lerp( @@ -671,7 +673,7 @@ pub fn block_from_structure( )), StructureBlock::Hollow => Some(Block::empty()), StructureBlock::Normal(color) => { - Some(Block::new(default_kind, color)).filter(|block| !block.is_empty()) + Some(Block::new(BlockKind::Normal, color)).filter(|block| !block.is_empty()) }, } } diff --git a/world/src/block/natural.rs b/world/src/block/natural.rs index 232708dad6..1ea1103ae9 100644 --- a/world/src/block/natural.rs +++ b/world/src/block/natural.rs @@ -5,11 +5,9 @@ use crate::{ util::{RandomPerm, Sampler, SmallCache, UnitChooser}, CONFIG, }; -use common::{assets, assets::Asset, terrain::Structure}; +use common::terrain::Structure; use lazy_static::lazy_static; -use ron; -use serde::Deserialize; -use std::{fs::File, io::BufReader, sync::Arc, u32}; +use std::{sync::Arc, u32}; use vek::*; static VOLUME_RAND: RandomPerm = RandomPerm::new(0xDB21C052); @@ -76,47 +74,16 @@ pub fn structure_gen<'a>( }) } -#[derive(Deserialize)] -struct StructureSpec { - specifier: String, - center: [i32; 3], -} -#[derive(Deserialize)] -struct StructuresSpec(Vec); - -impl Asset for StructuresSpec { - const ENDINGS: &'static [&'static str] = &["ron"]; - - fn parse(buf_reader: BufReader) -> Result { - ron::de::from_reader(buf_reader).map_err(assets::Error::parse_error) - } -} - -fn load_structures(specifier: &str) -> Vec> { - let spec = assets::load::(&["world.manifests.", specifier].concat()); - return spec - .unwrap() - .0 - .iter() - .map(|sp| { - assets::load_map(&sp.specifier[..], |s: Structure| { - s.with_center(Vec3::from(sp.center)) - }) - .unwrap() - }) - .collect(); -} - lazy_static! { - pub static ref OAKS: Vec> = load_structures("oaks"); - pub static ref OAK_STUMPS: Vec> = load_structures("oak_stumps"); - pub static ref PINES: Vec> = load_structures("pines"); - pub static ref PALMS: Vec> = load_structures("palms"); - pub static ref SNOW_PINES: Vec> = load_structures("snow_pines"); - pub static ref ACACIAS: Vec> = load_structures("acacias"); - pub static ref FRUIT_TREES: Vec> = load_structures("fruit_trees"); - pub static ref BIRCHES: Vec> = load_structures("birch"); - pub static ref MANGROVE_TREES: Vec> = load_structures("mangrove_trees"); - pub static ref QUIRKY: Vec> = load_structures("quirky"); - pub static ref QUIRKY_DRY: Vec> = load_structures("quirky_dry"); + pub static ref OAKS: Vec> = Structure::load_group("oaks"); + pub static ref OAK_STUMPS: Vec> = Structure::load_group("oak_stumps"); + pub static ref PINES: Vec> = Structure::load_group("pines"); + pub static ref PALMS: Vec> = Structure::load_group("palms"); + pub static ref SNOW_PINES: Vec> = Structure::load_group("snow_pines"); + pub static ref ACACIAS: Vec> = Structure::load_group("acacias"); + pub static ref FRUIT_TREES: Vec> = Structure::load_group("fruit_trees"); + pub static ref BIRCHES: Vec> = Structure::load_group("birch"); + pub static ref MANGROVE_TREES: Vec> = Structure::load_group("mangrove_trees"); + pub static ref QUIRKY: Vec> = Structure::load_group("quirky"); + pub static ref QUIRKY_DRY: Vec> = Structure::load_group("quirky_dry"); } diff --git a/world/src/civ/mod.rs b/world/src/civ/mod.rs index 51621a4c14..68fd7c5b1a 100644 --- a/world/src/civ/mod.rs +++ b/world/src/civ/mod.rs @@ -96,21 +96,26 @@ impl Civs { // Flatten ground around sites for site in this.sites.iter() { - if let SiteKind::Settlement = &site.kind { - } else { - continue; - } - let radius = 48i32; + let wpos = site.center * Vec2::from(TerrainChunkSize::RECT_SIZE).map(|e: u32| e as i32); + let flatten_radius = match &site.kind { + SiteKind::Settlement => 10.0, + SiteKind::Dungeon => 2.0, + }; + + let (raise, raise_dist): (f32, i32) = match &site.kind { + SiteKind::Settlement => (10.0, 6), + _ => (0.0, 0), + }; + // Flatten ground - let flatten_radius = 10.0; if let Some(center_alt) = ctx.sim.get_alt_approx(wpos) { for offs in Spiral2d::new().take(radius.pow(2) as usize) { let center_alt = center_alt - + if offs.magnitude_squared() <= 6i32.pow(2) { - 16.0 + + if offs.magnitude_squared() <= raise_dist.pow(2) { + raise } else { 0.0 }; // Raise the town centre up a little @@ -341,7 +346,7 @@ impl Civs { let site = self.sites.insert(site_fn(place)); // Find neighbors - const MAX_NEIGHBOR_DISTANCE: f32 = 250.0; + const MAX_NEIGHBOR_DISTANCE: f32 = 500.0; let mut nearby = self .sites .iter_ids() diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index a696907e7a..651a819bb8 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -1,5 +1,6 @@ use super::SpawnRules; use crate::{ + block::block_from_structure, column::ColumnSample, sim::WorldSim, site::BlockMask, @@ -11,11 +12,12 @@ use common::{ comp, generation::{ChunkSupplement, EntityInfo}, store::{Id, Store}, - terrain::{Block, BlockKind, TerrainChunkSize}, + terrain::{Block, BlockKind, Structure, TerrainChunkSize}, vol::{BaseVol, ReadVol, RectSizedVol, RectVolSize, Vox, WriteVol}, }; +use lazy_static::lazy_static; use rand::prelude::*; -use std::f32; +use std::{f32, sync::Arc}; use vek::*; impl WorldSim { @@ -34,6 +36,7 @@ impl WorldSim { pub struct Dungeon { origin: Vec2, alt: i32, + seed: u32, #[allow(dead_code)] noise: RandomField, floors: Vec, @@ -44,16 +47,19 @@ pub struct GenCtx<'a, R: Rng> { rng: &'a mut R, } +const ALT_OFFSET: i32 = -2; + impl Dungeon { pub fn generate(wpos: Vec2, sim: Option<&WorldSim>, rng: &mut impl Rng) -> Self { let mut ctx = GenCtx { sim, rng }; let this = Self { - origin: wpos, + origin: wpos - TILE_SIZE / 2, alt: ctx .sim .and_then(|sim| sim.get_alt_approx(wpos)) .unwrap_or(0.0) as i32 + 6, + seed: ctx.rng.gen(), noise: RandomField::new(ctx.rng.gen()), floors: (0..6) .scan(Vec2::zero(), |stair_tile, level| { @@ -71,8 +77,9 @@ impl Dungeon { pub fn radius(&self) -> f32 { 1200.0 } - pub fn spawn_rules(&self, _wpos: Vec2) -> SpawnRules { + pub fn spawn_rules(&self, wpos: Vec2) -> SpawnRules { SpawnRules { + trees: wpos.distance_squared(self.origin) > 64i32.pow(2), ..SpawnRules::default() } } @@ -80,9 +87,16 @@ impl Dungeon { pub fn apply_to<'a>( &'a self, wpos2d: Vec2, - _get_column: impl FnMut(Vec2) -> Option<&'a ColumnSample<'a>>, + mut get_column: impl FnMut(Vec2) -> Option<&'a ColumnSample<'a>>, vol: &mut (impl BaseVol + RectSizedVol + ReadVol + WriteVol), ) { + lazy_static! { + pub static ref ENTRANCES: Vec> = + Structure::load_group("dungeon_entrances"); + } + + let entrance = &ENTRANCES[self.seed as usize % ENTRANCES.len()]; + for y in 0..vol.size_xy().y as i32 { for x in 0..vol.size_xy().x as i32 { let offs = Vec2::new(x, y); @@ -90,7 +104,30 @@ impl Dungeon { let wpos2d = wpos2d + offs; let rpos = wpos2d - self.origin; - let mut z = self.alt; + // Apply the dungeon entrance + let col_sample = if let Some(col) = get_column(offs) { + col + } else { + continue; + }; + for z in entrance.get_bounds().min.z..entrance.get_bounds().max.z { + let wpos = Vec3::new(offs.x, offs.y, self.alt + z + ALT_OFFSET); + let spos = Vec3::new(rpos.x - TILE_SIZE / 2, rpos.y - TILE_SIZE / 2, z); + if let Some(block) = entrance + .get(spos) + .ok() + .copied() + .map(|sb| { + block_from_structure(sb, spos, self.origin, self.seed, col_sample) + }) + .unwrap_or(None) + { + let _ = vol.set(wpos, block); + } + } + + // Apply the dungeon internals + let mut z = self.alt + ALT_OFFSET; for floor in &self.floors { z -= floor.total_depth(); @@ -123,17 +160,17 @@ impl Dungeon { let offs = Vec2::new(rng.gen_range(-1.0, 1.0), rng.gen_range(-1.0, 1.0)) .try_normalized() .unwrap_or(Vec2::unit_y()) - * 16.0; + * 12.0; supplement.add_entity( EntityInfo::at( - Vec3::new(self.origin.x, self.origin.y, self.alt + 4).map(|e| e as f32) + Vec3::new(self.origin.x, self.origin.y, self.alt + 16).map(|e| e as f32) + Vec3::from(offs), ) .into_waypoint(), ); } - let mut z = self.alt; + let mut z = self.alt + ALT_OFFSET; for floor in &self.floors { z -= floor.total_depth(); let origin = Vec3::new(self.origin.x, self.origin.y, z); @@ -369,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", }, )) })