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 campfire recipe.
|
||||||
- [x] Add shelter recipe.
|
- [x] Add shelter recipe.
|
||||||
- [x] Add recipes or gather paths for primitive shelter structure parts.
|
- [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.
|
- [x] Add bandage or basic treatment recipe.
|
||||||
- [ ] Add crafting UI.
|
- [ ] Add crafting UI.
|
||||||
- [x] Add multiplayer authority checks.
|
- [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
|
Those systems should build on the existing total-weight hook instead of adding a
|
||||||
parallel inventory burden model.
|
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
|
## Equipment Slot Decision
|
||||||
|
|
||||||
Dedicated equipment slots are deferred for the 0.1.E MVP. Current MVP tools,
|
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.
|
temperature, injury, and survival damage.
|
||||||
- Inventory component/classes: item stacks, item definitions, resource intake,
|
- Inventory component/classes: item stacks, item definitions, resource intake,
|
||||||
and crafting inputs/outputs.
|
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.
|
- Interaction component/classes: player-facing use/gather/build entry points.
|
||||||
- Resource actors: gatherable wood, stone, fiber, water, wildlife, and future
|
- Resource actors: gatherable wood, stone, fiber, water, wildlife, and future
|
||||||
natural resources.
|
natural resources.
|
||||||
|
|||||||
@@ -103,6 +103,15 @@ ITEMS = [
|
|||||||
"unit_weight": 25.0,
|
"unit_weight": 25.0,
|
||||||
"max_stack_size": 1,
|
"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",
|
"asset": "DA_Item_BasicTool",
|
||||||
"item_id": "basic_tool",
|
"item_id": "basic_tool",
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ ITEM_DISPLAY = {
|
|||||||
"primitive_roof_panel": ("Primitive Roof Panel", 4.0),
|
"primitive_roof_panel": ("Primitive Roof Panel", 4.0),
|
||||||
"campfire": ("Campfire", 12.0),
|
"campfire": ("Campfire", 12.0),
|
||||||
"primitive_shelter": ("Primitive Shelter", 25.0),
|
"primitive_shelter": ("Primitive Shelter", 25.0),
|
||||||
|
"simple_container": ("Simple Container", 8.0),
|
||||||
"basic_tool": ("Basic Tool", 1.2),
|
"basic_tool": ("Basic Tool", 1.2),
|
||||||
"bandage": ("Bandage", 0.1),
|
"bandage": ("Bandage", 0.1),
|
||||||
}
|
}
|
||||||
@@ -78,6 +79,15 @@ RECIPES = [
|
|||||||
"craft_seconds": 6.0,
|
"craft_seconds": 6.0,
|
||||||
"requires_campfire": False,
|
"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",
|
"asset": "DA_Recipe_Bandage",
|
||||||
"recipe_id": "bandage",
|
"recipe_id": "bandage",
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ EXPECTED_ITEMS = {
|
|||||||
"DA_Item_PrimitiveRoofPanel": ("primitive_roof_panel", unreal.AgrarianItemType.STRUCTURE),
|
"DA_Item_PrimitiveRoofPanel": ("primitive_roof_panel", unreal.AgrarianItemType.STRUCTURE),
|
||||||
"DA_Item_Campfire": ("campfire", unreal.AgrarianItemType.STRUCTURE),
|
"DA_Item_Campfire": ("campfire", unreal.AgrarianItemType.STRUCTURE),
|
||||||
"DA_Item_PrimitiveShelter": ("primitive_shelter", 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_BasicTool": ("basic_tool", unreal.AgrarianItemType.TOOL),
|
||||||
"DA_Item_Bandage": ("bandage", unreal.AgrarianItemType.MEDICINE),
|
"DA_Item_Bandage": ("bandage", unreal.AgrarianItemType.MEDICINE),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,11 @@ EXPECTED_RECIPES = {
|
|||||||
"ingredients": {"wood": 1, "stone": 2, "fiber": 1},
|
"ingredients": {"wood": 1, "stone": 2, "fiber": 1},
|
||||||
"result": ("basic_tool", 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": {
|
"DA_Recipe_Bandage": {
|
||||||
"recipe_id": "bandage",
|
"recipe_id": "bandage",
|
||||||
"ingredients": {"fiber": 3, "hide": 1},
|
"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