class_name SimVillage extends RefCounted const DEBUG_LOGS := true var food := 20.0 var wood := 10.0 var safety := 50.0 var knowledge := 0.0 var food_modifier := 1.0 var wood_modifier := 1.0 var safety_modifier := 1.0 var knowledge_modifier := 1.0 func update_modifiers() -> void: food_modifier = 1.0 wood_modifier = 1.0 safety_modifier = 1.0 knowledge_modifier = 1.0 if food <= 0: food_modifier = 2.0 if wood <= 0: wood_modifier = 2.0 if safety < 20: safety_modifier = 2.0 if knowledge > 25: knowledge_modifier = 0.75 debug_log("FoodMod=%s SafetyMod=%s KnowledgeMod=%s" % [ food_modifier, safety_modifier, knowledge_modifier ] ) func apply_npc_task(npc: SimNPC) -> void: var productivity := 1.0 if npc.energy < 20.0: productivity = 0.25 elif npc.energy < 40.0: productivity = 0.5 match npc.current_task: "gather_food": food += 2.0 * productivity "gather_wood": wood += 2.0 * productivity "patrol": safety += 1.0 * productivity "study": knowledge += 1.0 * productivity "eat": food -= 1.0 "rest": pass "wander": safety -= 0.2 food = max(food, 0.0) wood = max(wood, 0.0) safety = clamp(safety, 0.0, 100.0) knowledge = max(knowledge, 0.0) update_modifiers() func get_summary() -> String: return "Village | food: %s | wood: %s | safety: %s | knowledge: %s" % [ round(food), round(wood), round(safety), round(knowledge) ] func debug_log(message: String) -> void: if DEBUG_LOGS: print("[Village] ", message)