Wolves with a den, fishing, and a mixed diet

Wolves
- Den: a boulder cave at the foot of the rim, sited from the seed (away
  from the sea and spawn, mouth toward the valley, clearing in front)
- Grace period: no wolves days 1-2; they move in on day 3 and howl; hunting
  from night 4; pack of 2, 3 from day 6, 4 from day 9; replaced by day
- Wary pack hunters: circle and dart in one at a time; a lit campfire is a
  safe zone, a torch makes them hesitate, walls block bites (line of
  sight); hit one and the pack turns; hurt wolves flee; a lone wolf is
  timid; by day they defend the den; home at dawn
- Glowing eyes, synthesised howls, can't sleep with wolves prowling
- Wolf pelt and Wolf Cloak (+25 warmth)
- Animals take a committed detour around obstacles

Fishing
- Fishing rod (workbench); cast a float onto the lake, 1.5 s to land a bite
- Perch and rarer trout; faster bites at dawn/dusk and in rain; grill them
- Visible fish near the shore that jump with splash rings

Mixed diet
- Foods belong to meat, fish or greens; each level runs down over ~1.5 days
- One group low: no healing; two low: Malnourished (health drains);
  all three good: Balanced diet (heal x1.5); HUD diet bars; saved

Tests: test_wolves and test_fishing_diet; run_all.sh covers 9 suites
This commit is contained in:
Paul Bailey
2026-11-04 11:32:16 +00:00
parent 67bf85523d
commit f174221268
23 changed files with 2069 additions and 21 deletions

View File

@@ -137,7 +137,10 @@
"mesh": "berries",
"food": {
"hunger": 9,
"health": 2
"health": 2,
"diet": {
"plants": 14
}
}
},
{
@@ -149,7 +152,10 @@
"mesh": "mushroom",
"food": {
"hunger": 6,
"health": 0
"health": 0,
"diet": {
"plants": 10
}
}
},
{
@@ -161,7 +167,10 @@
"mesh": "roasted_mushroom",
"food": {
"hunger": 24,
"health": 8
"health": 8,
"diet": {
"plants": 30
}
}
},
{
@@ -277,7 +286,10 @@
"mesh": "raw_meat",
"food": {
"hunger": 5,
"health": -4
"health": -4,
"diet": {
"meat": 8
}
}
},
{
@@ -290,6 +302,9 @@
"food": {
"hunger": 34,
"health": 12,
"diet": {
"meat": 40
},
"buff": {
"id": "well_fed",
"name": "Well fed",
@@ -374,6 +389,98 @@
"warmth": 15,
"wet_chill": 0.6
}
},
{
"id": "wolf_pelt",
"name": "Wolf Pelt",
"category": "resource",
"stack": 20,
"description": "Thick grey fur. The warmest thing on the island.",
"mesh": "wolf_pelt"
},
{
"id": "wolf_cloak",
"name": "Wolf Cloak",
"category": "tool",
"stack": 1,
"description": "Right-click to wear it (+25 warmth, wet barely chills you). Take it off from the inventory screen.",
"mesh": "wolf_cloak",
"wear": {
"warmth": 25,
"wet_chill": 0.35
}
},
{
"id": "fishing_rod",
"name": "Fishing Rod",
"category": "tool",
"stack": 1,
"description": "LMB casts into the lake. When the float dips, click quickly to land the fish.",
"mesh": "fishing_rod",
"fishing": {
"cast_speed": 12.0,
"stamina": 4
}
},
{
"id": "perch",
"name": "Perch",
"category": "food",
"stack": 20,
"description": "A small lake fish. Grill it at a campfire. (Fish)",
"mesh": "perch",
"food": {
"hunger": 4,
"health": -2,
"diet": {
"fish": 8
}
}
},
{
"id": "trout",
"name": "Trout",
"category": "food",
"stack": 20,
"description": "A fine, fat lake trout. Bites best at dawn and dusk. (Fish)",
"mesh": "trout",
"food": {
"hunger": 6,
"health": -2,
"diet": {
"fish": 12
}
}
},
{
"id": "grilled_perch",
"name": "Grilled Perch",
"category": "food",
"stack": 20,
"description": "Flaky and good. (Fish)",
"mesh": "grilled_perch",
"food": {
"hunger": 18,
"health": 6,
"diet": {
"fish": 30
}
}
},
{
"id": "grilled_trout",
"name": "Grilled Trout",
"category": "food",
"stack": 20,
"description": "Rich and filling. (Fish)",
"mesh": "grilled_trout",
"food": {
"hunger": 28,
"health": 10,
"diet": {
"fish": 45
}
}
}
]
}

View File

@@ -185,6 +185,46 @@
"hide": 4,
"fiber": 4
}
},
{
"id": "wolf_cloak",
"output": "wolf_cloak",
"count": 1,
"station": "workbench",
"inputs": {
"wolf_pelt": 3,
"hide": 2,
"fiber": 4
}
},
{
"id": "fishing_rod",
"output": "fishing_rod",
"count": 1,
"station": "workbench",
"inputs": {
"stick": 2,
"fiber": 3,
"flint": 1
}
},
{
"id": "grilled_perch",
"output": "grilled_perch",
"count": 1,
"station": "campfire",
"inputs": {
"perch": 1
}
},
{
"id": "grilled_trout",
"output": "grilled_trout",
"count": 1,
"station": "campfire",
"inputs": {
"trout": 1
}
}
]
}