feat(vagrant): v0.18.0 — Stone-Age round-out (stone_hammer+knap-gate, chop_tree, break_branch, sharpen_stick) in content pack

This commit is contained in:
calic
2026-07-28 12:09:25 +00:00
parent e9085c0317
commit 60093522f5
3 changed files with 68 additions and 3 deletions

View File

@@ -54,6 +54,29 @@ return function(c)
material = { stone = 0.6, wood = 0.3, fiber = 0.1 },
affordance = { chopping = true }, atlas = "tc", uv = "spade" }
-- World-gathered (round-out)
c.T{ id = "branch", name = "Branch",
desc = "A long springy branch. Snap it into sticks.",
weight = 1.5, vol = 0.006, material = { wood = 1.0 },
atlas = "tc", uv = "log_pile1", scale = 0.85 }
c.T{ id = "tree", name = "Tree",
desc = "A standing tree. Chop it down for logs.",
weight = 400, vol = 1.0, material = { wood = 1.0 },
atlas = "tc", uv = "log_pile1", scale = 1.6 }
-- Crafted tools
c.T{ id = "stone_hammer", name = "Stone Hammer",
desc = "A stone lashed to a haft. Pounds and knaps.",
weight = 1.5, vol = 0.001,
material = { stone = 0.6, wood = 0.3, fiber = 0.1 },
affordance = { hammering = true }, atlas = "tc", uv = "spade" }
c.T{ id = "sharpened_stick", name = "Sharpened Stick",
desc = "A stick whittled to a point. A crude spear.",
weight = 0.3, vol = 0.0005, material = { wood = 1.0 },
affordance = { piercing = true }, atlas = "tc", uv = "log_pile1", scale = 0.9 }
-- ---- recipes -----------------------------------------------------
-- saw_planks: input matched by MATERIAL (mostly wood AND heavy), a light
-- plank fails weight>5. Needs a cutting TOOL (not consumed). ×4 output.
@@ -66,9 +89,10 @@ return function(c)
c.R{ id = "knap_sharp_stone",
inputs = { { template = "rock", count = 1 } },
tools = { { match = { ["affordance.hammering"] = true } } },
outputs = { { template = "sharp_stone", count = 1 } },
name = "Knap Sharp Stone",
description = "Strike a rock to flake off a sharp-edged stone." }
description = "Strike a rock with a hammerstone to flake off a sharp edge." }
c.R{ id = "twist_cordage",
inputs = { { template = "plant_fiber", count = 3 } },
@@ -86,10 +110,44 @@ return function(c)
name = "Haft Stone Axe",
description = "Bind a sharp stone to a stick with cordage." }
-- Round-out recipes
c.R{ id = "craft_stone_hammer",
inputs = {
{ template = "rock", count = 1 },
{ template = "stick", count = 1 },
{ template = "cordage", count = 1 },
},
outputs = { { template = "stone_hammer", count = 1 } },
name = "Haft Stone Hammer",
description = "Lash a stone to a stick for a pounding tool (enables knapping)." }
c.R{ id = "break_branch",
inputs = { { template = "branch", count = 1 } },
outputs = { { template = "stick", count = 2 } }, -- multi-output from one branch
name = "Break Branch",
description = "Snap a branch over your knee into two sticks." }
c.R{ id = "chop_tree",
inputs = { { template = "tree", count = 1 } },
tools = { { match = { ["affordance.chopping"] = true } } },
outputs = { { template = "log", count = 2 } }, -- closes the loop: axe -> logs -> planks
name = "Chop Tree",
description = "Fell a tree with a chopping edge — yields two logs." }
c.R{ id = "sharpen_stick",
inputs = { { template = "stick", count = 1 } },
tools = { { match = { ["affordance.cutting"] = true } } },
outputs = { { template = "sharpened_stick", count = 1 } },
name = "Sharpen Stick",
description = "Whittle a stick to a point with a cutting edge." }
-- ---- world spawns (backpack sits at 350,400) ---------------------
c.S{ template = "log", x = 110, y = 400 }
c.S{ template = "sharp_stone", x = 110, y = 330 }
for i = 1, 3 do
c.S{ template = "plant_fiber", x = 50, y = 300 + (i - 1) * 28 }
end
c.S{ template = "branch", x = 50, y = 250 }
c.S{ template = "branch", x = 85, y = 250 }
c.S{ template = "tree", x = 200, y = 190 }
end