feat: introduce identity-backed goat

This commit is contained in:
Rijad Zuzo
2026-07-26 22:26:00 +02:00
parent 1f09ebe6b6
commit f79c2bb630
47 changed files with 1903 additions and 96 deletions
+19
View File
@@ -396,6 +396,24 @@ func _run() -> void:
)
_check(outskirt_context_count >= 4, "Jajce discovery should include outskirts/river contexts")
_check(farming_context_count >= 1, "Jajce food discovery should include farming contexts")
var animal_root := world.get_node("WorldObjects/Animals")
var goat := animal_root.get_node("Dunja") as AnimalNode
_check(
animal_root.get_child_count() == 1 and goat != null,
"Jajce should contain one bounded loaded-animal presentation"
)
_check(
(
goat.animal_id == SimulationIds.ANIMAL_DUNJA
and goat.species_id == SimulationIds.SPECIES_GOAT
and goat.display_name == "Dunja"
),
"The authored goat should preserve its stable identity and readable name"
)
_check(
not goat.is_in_group("resource_nodes") and ResourceNode.get_by_id(goat.animal_id) == null,
"The identity-backed goat should remain separate from finite resources"
)
_check(world.has_node("WorldObjects/StorageSites"), "JajceWorld should expose StorageSites")
var pantry := world.get_node("WorldObjects/StorageSites/VillagePantry") as StorageNode
_check(pantry != null, "JajceWorld should include a typed VillagePantry StorageNode")
@@ -448,6 +466,7 @@ func _run() -> void:
var destinations: Array[Vector3] = []
for resource in resources:
destinations.append((resource as ResourceNode).interaction_point.global_position)
destinations.append(goat.get_interaction_position())
destinations.append(pantry.get_interaction_position())
destinations.append(woodpile.get_interaction_position())
for site in activity_root.get_children():