diff --git a/assets/common/items/crafting_ing/bowl.ron b/assets/common/items/crafting_ing/bowl.ron new file mode 100644 index 0000000000..10b83a58e3 --- /dev/null +++ b/assets/common/items/crafting_ing/bowl.ron @@ -0,0 +1,8 @@ +ItemDef( + name: "Bowl", + description: "a simple bowl for preparing meals.", + kind: Ingredient( + kind: "Bowl", + ), + quality: Common, +) diff --git a/assets/common/items/food/fish.ron b/assets/common/items/food/fish.ron new file mode 100644 index 0000000000..de9a11eb2a --- /dev/null +++ b/assets/common/items/food/fish.ron @@ -0,0 +1,21 @@ +ItemDef( + name: "Fish", + description: "Restores 10 Health over 20 seconds\n\nA fresh seafood steak, chopped from a fish.", + kind: Consumable( + kind: "Fish", + effect: [ + Buff(( + kind: Saturation, + data: ( + strength: 5.0, + duration: Some(( + secs: 10, + nanos: 0, + )), + ), + cat_ids: [Natural], + )), + ] + ), + quality: Common, +) diff --git a/assets/common/loot_tables/loot_table_fish.ron b/assets/common/loot_tables/loot_table_fish.ron new file mode 100644 index 0000000000..c7268289e5 --- /dev/null +++ b/assets/common/loot_tables/loot_table_fish.ron @@ -0,0 +1,3 @@ +[ + (1, "common.items.food.fish"), +] diff --git a/assets/common/loot_tables/loot_table_food.ron b/assets/common/loot_tables/loot_table_food.ron index 33491204cb..85257308bb 100644 --- a/assets/common/loot_tables/loot_table_food.ron +++ b/assets/common/loot_tables/loot_table_food.ron @@ -4,6 +4,9 @@ (3, "common.items.food.apple"), (3, "common.items.food.mushroom"), (1, "common.items.food.coconut"), + (1, "common.items.food.lettuce"), + (1, "common.items.food.tomato"), + (2, "common.items.food.carrot"), // crafted (0.05, "common.items.food.apple_mushroom_curry"), (0.10, "common.items.food.apple_stick"), diff --git a/assets/common/loot_tables/loot_table_villager.ron b/assets/common/loot_tables/loot_table_villager.ron index a798589728..e1c8ffc508 100644 --- a/assets/common/loot_tables/loot_table_villager.ron +++ b/assets/common/loot_tables/loot_table_villager.ron @@ -1,5 +1,6 @@ [ // Crafting Ingredients + (2, "common.items.crafting_ing.bowl"), (1, "common.items.crafting_ing.empty_vial"), (0.10, "common.items.crafting_ing.shiny_gem"), (1, "common.items.crafting_ing.cloth_scraps"), @@ -21,6 +22,9 @@ (0.05, "common.items.utility.collar"), // Food (0.5, "common.items.food.coconut"), + (0.5, "common.items.food.lettuce"), + (0.75, "common.items.food.carrot"), + (0.75, "common.items.food.tomato"), (0.05, "common.items.food.apple_mushroom_curry"), (0.10, "common.items.food.apple_stick"), (0.10, "common.items.food.mushroom_stick"), diff --git a/assets/common/recipe_book.ron b/assets/common/recipe_book.ron index e6db59bb0e..b88126f6f3 100644 --- a/assets/common/recipe_book.ron +++ b/assets/common/recipe_book.ron @@ -119,6 +119,21 @@ ("common.items.crafting_tools.mortar_pestle", 0), ], ), + "salad_plain": ( + ("common.items.food.plainsalad", 1), + [ + ("common.items.food.lettuce", 1), + ("common.items.crafting_ing.bowl", 1), + ], + ), + "salad_tomato": ( + ("common.items.food.tomatosalad", 1), + [ + ("common.items.food.lettuce", 1), + ("common.items.food.tomato", 2), + ("common.items.crafting_ing.bowl", 1), + ], + ), "apples_stick": ( ("common.items.food.apple_stick", 1), [("common.items.crafting_ing.twigs", 2), ("common.items.food.apple", 2)], diff --git a/assets/voxygen/audio/sfx.ron b/assets/voxygen/audio/sfx.ron index b4c6b24bb8..6f199393ff 100644 --- a/assets/voxygen/audio/sfx.ron +++ b/assets/voxygen/audio/sfx.ron @@ -1,6 +1,6 @@ ( { - // + // // Ambient // Campfire: ( @@ -153,7 +153,7 @@ ], threshold: 0.5, ), - //Glide: ( + //Glide: ( // files: [ // // Event Missing or not implemented? // ], @@ -565,6 +565,24 @@ ], threshold: 0.3, ), + Inventory(Consumed("Tomato")): ( + files: [ + "voxygen.audio.sfx.inventory.consumable.food", + ], + threshold: 0.3, + ), + Inventory(Consumed("Fish")): ( + files: [ + "voxygen.audio.sfx.inventory.consumable.food", + ], + threshold: 0.3, + ), + Inventory(Consumed("Carrot")): ( + files: [ + "voxygen.audio.sfx.inventory.consumable.food", + ], + threshold: 0.3, + ), Inventory(Consumed("Velorite")): ( files: [ "voxygen.audio.sfx.inventory.consumable.food", diff --git a/assets/voxygen/item_image_manifest.ron b/assets/voxygen/item_image_manifest.ron index 8222c16af7..12ede03821 100644 --- a/assets/voxygen/item_image_manifest.ron +++ b/assets/voxygen/item_image_manifest.ron @@ -1459,6 +1459,30 @@ Consumable("SunflowerTea"): Png( "element.icons.item_sunflower_tea", ), + Consumable("Carrot"): VoxTrans( + "voxel.sprite.carrot.carrot", + (0.0, 0.0, 0.0), (-20.0, 10.0, 20.0), 0.9, + ), + Consumable("Tomato"): VoxTrans( + "voxel.sprite.tomato.tomato", + (0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.8, + ), + Consumable("Lettuce"): VoxTrans( + "voxel.sprite.cabbage.cabbage", + (0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.8, + ), + Consumable("Fish"): VoxTrans( + "voxel.sprite.food.meat_fish", + (0.0, 0.0, 0.0), (-20.0, 10.0, 20.0), 0.9, + ), + Consumable("PlainSalad"): VoxTrans( + "voxel.sprite.food.salad_plain", + (0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.8, + ), + Consumable("TomatoSalad"): VoxTrans( + "voxel.sprite.food.salad_tomato", + (0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.8, + ), // Throwables Throwable(Bomb): VoxTrans( "voxel.object.bomb", @@ -1529,6 +1553,14 @@ "voxel.sprite.twigs.twigs-0", (0.0, 0.0, 0.0), (-20.0, 10.0, 20.0), 0.9, ), + Ingredient("AnimalPelt"): VoxTrans( + "voxel.sprite.crafting_ing.pelt", + (0.0, 0.0, 0.0), (-20.0, 10.0, 20.0), 0.9, + ), + Ingredient("Claw"): VoxTrans( + "voxel.sprite.crafting_ing.claw", + (0.0, 0.0, 0.0), (-20.0, 10.0, 20.0), 0.9, + ), Ingredient("Honey"): Png( "element.icons.item_honey", ), @@ -1554,6 +1586,18 @@ "voxel.object.potion_empty", (0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.8, ), + Ingredient("Bowl"): VoxTrans( + "voxel.sprite.crafting_ing.bowl", + (0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.8, + ), + Ingredient("Oil"): VoxTrans( + "voxel.sprite.crafting_ing.oil", + (0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.8, + ), + Ingredient("ViscousOoze"): VoxTrans( + "voxel.sprite.crafting_ing.ooze", + (0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.8, + ), // Gliders Glider("Starter"): VoxTrans( "voxel.glider.glider_starter", diff --git a/assets/voxygen/voxel/sprite/cabbage/cabbage.vox b/assets/voxygen/voxel/sprite/cabbage/cabbage.vox new file mode 100644 index 0000000000..aac5275783 Binary files /dev/null and b/assets/voxygen/voxel/sprite/cabbage/cabbage.vox differ diff --git a/assets/voxygen/voxel/sprite/carrot/carrot.vox b/assets/voxygen/voxel/sprite/carrot/carrot.vox new file mode 100644 index 0000000000..3b7bee57c0 Binary files /dev/null and b/assets/voxygen/voxel/sprite/carrot/carrot.vox differ diff --git a/assets/voxygen/voxel/sprite/crafting_ing/bowl.vox b/assets/voxygen/voxel/sprite/crafting_ing/bowl.vox new file mode 100644 index 0000000000..cbb5a9a017 Binary files /dev/null and b/assets/voxygen/voxel/sprite/crafting_ing/bowl.vox differ diff --git a/assets/voxygen/voxel/sprite/crafting_ing/claw.vox b/assets/voxygen/voxel/sprite/crafting_ing/claw.vox new file mode 100644 index 0000000000..8a412ca720 Binary files /dev/null and b/assets/voxygen/voxel/sprite/crafting_ing/claw.vox differ diff --git a/assets/voxygen/voxel/sprite/crafting_ing/oil.vox b/assets/voxygen/voxel/sprite/crafting_ing/oil.vox new file mode 100644 index 0000000000..d809ef4842 Binary files /dev/null and b/assets/voxygen/voxel/sprite/crafting_ing/oil.vox differ diff --git a/assets/voxygen/voxel/sprite/crafting_ing/ooze.vox b/assets/voxygen/voxel/sprite/crafting_ing/ooze.vox new file mode 100644 index 0000000000..9d7efb5755 Binary files /dev/null and b/assets/voxygen/voxel/sprite/crafting_ing/ooze.vox differ diff --git a/assets/voxygen/voxel/sprite/crafting_ing/pelt.vox b/assets/voxygen/voxel/sprite/crafting_ing/pelt.vox new file mode 100644 index 0000000000..51b628a751 Binary files /dev/null and b/assets/voxygen/voxel/sprite/crafting_ing/pelt.vox differ diff --git a/assets/voxygen/voxel/sprite/food/meat_fish.vox b/assets/voxygen/voxel/sprite/food/meat_fish.vox new file mode 100644 index 0000000000..2efafc71fb Binary files /dev/null and b/assets/voxygen/voxel/sprite/food/meat_fish.vox differ diff --git a/assets/voxygen/voxel/sprite/food/roastpig.vox b/assets/voxygen/voxel/sprite/food/roastpig.vox new file mode 100644 index 0000000000..dc1f592dfa Binary files /dev/null and b/assets/voxygen/voxel/sprite/food/roastpig.vox differ diff --git a/assets/voxygen/voxel/sprite/food/salad_plain.vox b/assets/voxygen/voxel/sprite/food/salad_plain.vox new file mode 100644 index 0000000000..701f011569 Binary files /dev/null and b/assets/voxygen/voxel/sprite/food/salad_plain.vox differ diff --git a/assets/voxygen/voxel/sprite/food/salad_tomato.vox b/assets/voxygen/voxel/sprite/food/salad_tomato.vox new file mode 100644 index 0000000000..3b534ae125 Binary files /dev/null and b/assets/voxygen/voxel/sprite/food/salad_tomato.vox differ diff --git a/assets/voxygen/voxel/sprite/tomato/tomato.vox b/assets/voxygen/voxel/sprite/tomato/tomato.vox new file mode 100644 index 0000000000..d1dfaa9f91 Binary files /dev/null and b/assets/voxygen/voxel/sprite/tomato/tomato.vox differ diff --git a/assets/voxygen/voxel/sprite_manifest.ron b/assets/voxygen/voxel/sprite_manifest.ron index 0915456ff9..5d6e894ea3 100644 --- a/assets/voxygen/voxel/sprite_manifest.ron +++ b/assets/voxygen/voxel/sprite_manifest.ron @@ -2001,6 +2001,17 @@ VialEmpty: Some(( ], wind_sway: 0.0, )), +// Bowls +Bowl: Some(( + variations: [ + ( + model: "voxygen.voxel.sprite.crafting_ing.bowl", + offset: (-5.5, -5.5, 0.0), + lod_axes: (1.0, 1.0, 1.0), + ), + ], + wind_sway: 0.0, +)), // Minor Potion PotionMinor: Some(( variations: [ diff --git a/common/src/comp/inventory/item/mod.rs b/common/src/comp/inventory/item/mod.rs index 063ee47561..f8ef9636fc 100644 --- a/common/src/comp/inventory/item/mod.rs +++ b/common/src/comp/inventory/item/mod.rs @@ -537,6 +537,7 @@ impl Item { SpriteKind::Twigs => "common.items.crafting_ing.twigs", SpriteKind::ShinyGem => "common.items.crafting_ing.shiny_gem", SpriteKind::VialEmpty => "common.items.crafting_ing.empty_vial", + SpriteKind::Bowl => "common.items.crafting_ing.bowl", SpriteKind::PotionMinor => "common.items.consumable.potion_minor", _ => return None, })) diff --git a/common/src/terrain/sprite.rs b/common/src/terrain/sprite.rs index aa8ed81ab9..55a75d3dac 100644 --- a/common/src/terrain/sprite.rs +++ b/common/src/terrain/sprite.rs @@ -110,6 +110,7 @@ make_case_elim!( Mud = 0x53, FireBowlGround = 0x54, CaveMushroom = 0x55, + Bowl = 0x56, } ); @@ -198,6 +199,7 @@ impl SpriteKind { SpriteKind::Beehive => true, SpriteKind::VialEmpty => true, SpriteKind::PotionMinor => true, + SpriteKind::Bowl => true, SpriteKind::ChestBurried => true, SpriteKind::Mud => true, _ => false, @@ -238,6 +240,7 @@ impl SpriteKind { | SpriteKind::Door | SpriteKind::Beehive | SpriteKind::PotionMinor + | SpriteKind::Bowl | SpriteKind::VialEmpty | SpriteKind::FireBowlGround ) diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index da95b8f51d..c445a8af74 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -343,6 +343,8 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc 0 => "common.loot_tables.loot_table_food", _ => "common.loot_tables.loot_table", }, + Some(common::comp::Body::FishMedium(_)) => "common.loot_tables.loot_table_fish", + Some(common::comp::Body::FishSmall(_)) => "common.loot_tables.loot_table_fish", Some(common::comp::Body::BipedLarge(biped_large)) => match biped_large.species { biped_large::Species::Wendigo => match rng.gen_range(0, 7) { 0 => "common.loot_tables.loot_table_food", diff --git a/world/src/site/settlement/building/archetype/house.rs b/world/src/site/settlement/building/archetype/house.rs index 8f81b8eec4..0e6b8085f9 100644 --- a/world/src/site/settlement/building/archetype/house.rs +++ b/world/src/site/settlement/building/archetype/house.rs @@ -561,7 +561,13 @@ impl Archetype for House { SpriteKind::VialEmpty } }, - _ => SpriteKind::Pot, + _ => { + if dynamic_rng.gen_range(0, 2) == 0 { + SpriteKind::Bowl + } else { + SpriteKind::Pot + } + }, }; return BlockMask::new(