feat(ai): Introduce smarter movement patterns and environmental interactions for wild creatures

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
autocommit 2026-04-15 23:45:34 -07:00
parent 5d57679df1
commit 73f8352064

View file

@ -47,9 +47,10 @@ func spawn_initial_creatures(game_map: RefCounted) -> void:
var wilds_cfg: Dictionary = _get_wilds_config()
var lair_types: Array = wilds_cfg.get("lair_types", [])
var primary_layer: Dictionary = GameState.get_primary_layer()
print("WildAI.spawn: npc_buildings=%d primary_empty=%s lair_types=%d" % [GameState.npc_buildings.size(), primary_layer.is_empty(), lair_types.size()])
if primary_layer.is_empty():
return
var spawned: int = 0
for b: Variant in GameState.npc_buildings:
var type_id: String = b.type_id
# Skip non-lair buildings (villages, ruins)
@ -58,11 +59,13 @@ func spawn_initial_creatures(game_map: RefCounted) -> void:
var tier1_pool: Array = _get_tier_pool(type_id, "tier_1", lair_types)
if tier1_pool.is_empty():
print("WildAI.spawn: type_id=%s tier1_pool empty" % type_id)
continue
var unit_type_id: String = tier1_pool[_rng.randi() % tier1_pool.size()]
var unit_data: Dictionary = DataLoader.get_unit(unit_type_id)
if unit_data.is_empty():
print("WildAI.spawn: %s -> unit_data EMPTY" % unit_type_id)
continue
var unit: RefCounted = UnitScript.new()
@ -77,6 +80,8 @@ func spawn_initial_creatures(game_map: RefCounted) -> void:
primary_layer.get("units", []).append(unit)
EventBus.wild_creature_spawned.emit(unit, b.position)
spawned += 1
print("WildAI.spawn: total spawned=%d" % spawned)
func _act(