Add simple container recipe
This commit is contained in:
@@ -564,7 +564,9 @@ Target deliverable: A small group can join a server, spawn into one biome, gathe
|
||||
- [x] Add campfire recipe.
|
||||
- [x] Add shelter recipe.
|
||||
- [x] Add recipes or gather paths for primitive shelter structure parts.
|
||||
- [ ] Add simple container recipe.
|
||||
- [x] Add simple container recipe. Added `simple_container` item and recipe
|
||||
data assets, using wood, fiber, and hide as MVP ingredients for later
|
||||
placed-storage/container systems.
|
||||
- [x] Add bandage or basic treatment recipe.
|
||||
- [ ] Add crafting UI.
|
||||
- [x] Add multiplayer authority checks.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -145,6 +145,11 @@ awkward-object handling, and hard over-encumbrance rules for later systems.
|
||||
Those systems should build on the existing total-weight hook instead of adding a
|
||||
parallel inventory burden model.
|
||||
|
||||
The 0.1.G `simple_container` recipe is intentionally only a craftable inventory
|
||||
item. It uses wood, fiber, and hide so the survival loop can produce a storage
|
||||
foundation now, while actual placed-container inventory, permissions, volume,
|
||||
and persistence remain later system work.
|
||||
|
||||
## Equipment Slot Decision
|
||||
|
||||
Dedicated equipment slots are deferred for the 0.1.E MVP. Current MVP tools,
|
||||
|
||||
@@ -73,7 +73,10 @@ Early runtime systems should remain small and explicit:
|
||||
temperature, injury, and survival damage.
|
||||
- Inventory component/classes: item stacks, item definitions, resource intake,
|
||||
and crafting inputs/outputs.
|
||||
- Crafting component/classes: recipes, validation, output creation.
|
||||
- Crafting component/classes: recipes, validation, output creation. Current
|
||||
primitive recipes include campfire, shelter parts, primitive shelter, basic
|
||||
tool, bandage, and `simple_container`; the simple container is an inventory
|
||||
craftable foundation for later placed storage and trade-container systems.
|
||||
- Interaction component/classes: player-facing use/gather/build entry points.
|
||||
- Resource actors: gatherable wood, stone, fiber, water, wildlife, and future
|
||||
natural resources.
|
||||
|
||||
@@ -103,6 +103,15 @@ ITEMS = [
|
||||
"unit_weight": 25.0,
|
||||
"max_stack_size": 1,
|
||||
},
|
||||
{
|
||||
"asset": "DA_Item_SimpleContainer",
|
||||
"item_id": "simple_container",
|
||||
"display_name": "Simple Container",
|
||||
"description": "A crude hide-and-frame container for early storage, trade, and later placed-container systems.",
|
||||
"item_type": unreal.AgrarianItemType.STRUCTURE,
|
||||
"unit_weight": 8.0,
|
||||
"max_stack_size": 5,
|
||||
},
|
||||
{
|
||||
"asset": "DA_Item_BasicTool",
|
||||
"item_id": "basic_tool",
|
||||
|
||||
@@ -13,6 +13,7 @@ ITEM_DISPLAY = {
|
||||
"primitive_roof_panel": ("Primitive Roof Panel", 4.0),
|
||||
"campfire": ("Campfire", 12.0),
|
||||
"primitive_shelter": ("Primitive Shelter", 25.0),
|
||||
"simple_container": ("Simple Container", 8.0),
|
||||
"basic_tool": ("Basic Tool", 1.2),
|
||||
"bandage": ("Bandage", 0.1),
|
||||
}
|
||||
@@ -78,6 +79,15 @@ RECIPES = [
|
||||
"craft_seconds": 6.0,
|
||||
"requires_campfire": False,
|
||||
},
|
||||
{
|
||||
"asset": "DA_Recipe_SimpleContainer",
|
||||
"recipe_id": "simple_container",
|
||||
"display_name": "Simple Container",
|
||||
"ingredients": [("wood", 3), ("fiber", 6), ("hide", 2)],
|
||||
"result": ("simple_container", 1),
|
||||
"craft_seconds": 10.0,
|
||||
"requires_campfire": False,
|
||||
},
|
||||
{
|
||||
"asset": "DA_Recipe_Bandage",
|
||||
"recipe_id": "bandage",
|
||||
|
||||
@@ -15,6 +15,7 @@ EXPECTED_ITEMS = {
|
||||
"DA_Item_PrimitiveRoofPanel": ("primitive_roof_panel", unreal.AgrarianItemType.STRUCTURE),
|
||||
"DA_Item_Campfire": ("campfire", unreal.AgrarianItemType.STRUCTURE),
|
||||
"DA_Item_PrimitiveShelter": ("primitive_shelter", unreal.AgrarianItemType.STRUCTURE),
|
||||
"DA_Item_SimpleContainer": ("simple_container", unreal.AgrarianItemType.STRUCTURE),
|
||||
"DA_Item_BasicTool": ("basic_tool", unreal.AgrarianItemType.TOOL),
|
||||
"DA_Item_Bandage": ("bandage", unreal.AgrarianItemType.MEDICINE),
|
||||
}
|
||||
|
||||
@@ -40,6 +40,11 @@ EXPECTED_RECIPES = {
|
||||
"ingredients": {"wood": 1, "stone": 2, "fiber": 1},
|
||||
"result": ("basic_tool", 1),
|
||||
},
|
||||
"DA_Recipe_SimpleContainer": {
|
||||
"recipe_id": "simple_container",
|
||||
"ingredients": {"wood": 3, "fiber": 6, "hide": 2},
|
||||
"result": ("simple_container", 1),
|
||||
},
|
||||
"DA_Recipe_Bandage": {
|
||||
"recipe_id": "bandage",
|
||||
"ingredients": {"fiber": 3, "hide": 1},
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
EXPECTED = {
|
||||
ROOT / "Scripts" / "setup_item_definitions.py": [
|
||||
'"asset": "DA_Item_SimpleContainer"',
|
||||
'"item_id": "simple_container"',
|
||||
'"display_name": "Simple Container"',
|
||||
"early storage, trade, and later placed-container systems",
|
||||
],
|
||||
ROOT / "Scripts" / "verify_item_definitions.py": [
|
||||
'"DA_Item_SimpleContainer": ("simple_container", unreal.AgrarianItemType.STRUCTURE)',
|
||||
],
|
||||
ROOT / "Scripts" / "setup_recipe_definitions.py": [
|
||||
'"asset": "DA_Recipe_SimpleContainer"',
|
||||
'"recipe_id": "simple_container"',
|
||||
'("wood", 3)',
|
||||
'("fiber", 6)',
|
||||
'("hide", 2)',
|
||||
'"result": ("simple_container", 1)',
|
||||
],
|
||||
ROOT / "Scripts" / "verify_recipe_definitions.py": [
|
||||
'"DA_Recipe_SimpleContainer"',
|
||||
'"ingredients": {"wood": 3, "fiber": 6, "hide": 2}',
|
||||
'"result": ("simple_container", 1)',
|
||||
],
|
||||
ROOT / "AGRARIAN_DEVELOPMENT_ROADMAP.md": [
|
||||
"[x] Add simple container recipe.",
|
||||
],
|
||||
ROOT / "Docs" / "TechnicalDesignDocument.md": [
|
||||
"`simple_container`",
|
||||
"foundation for later placed storage and trade-container systems",
|
||||
],
|
||||
ROOT / "Docs" / "InventoryDataModel.md": [
|
||||
"The 0.1.G `simple_container` recipe is intentionally only a craftable inventory",
|
||||
"actual placed-container inventory, permissions, volume",
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def main() -> None:
|
||||
missing = []
|
||||
for path, snippets in EXPECTED.items():
|
||||
text = path.read_text(encoding="utf-8")
|
||||
for snippet in snippets:
|
||||
if snippet not in text:
|
||||
missing.append(f"{path.relative_to(ROOT)}: {snippet}")
|
||||
|
||||
if missing:
|
||||
raise RuntimeError("Simple container recipe verification failed: " + "; ".join(missing))
|
||||
|
||||
print("PASS: simple container item and recipe definitions are scripted, verified, and tracked in the roadmap.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user