feat: add initial starvation consequence

This commit is contained in:
Rijad Zuzo
2026-06-20 18:18:00 +02:00
parent d185dcacf3
commit 852d10f7ae
4 changed files with 29 additions and 5 deletions
+10
View File
@@ -11,6 +11,8 @@ var intelligence: float
var current_task: String = "idle" var current_task: String = "idle"
var position: Vector3 var position: Vector3
var is_starving := false
func _init( func _init(
_id: int, _id: int,
_npc_name: String, _npc_name: String,
@@ -48,6 +50,14 @@ func simulate_tick(village: SimVillage) -> void:
energy += 20.0 energy += 20.0
return return
is_starving = hunger >= 90.0
if is_starving:
energy -= 8.0
hunger = clamp(hunger, 0.0, 100.0)
energy = clamp(energy, 0.0, 100.0)
if village.food < 15.0: if village.food < 15.0:
current_task = "gather_food" current_task = "gather_food"
return return
+10 -4
View File
@@ -37,15 +37,21 @@ func update_modifiers() -> void:
func apply_npc_task(npc: SimNPC) -> void: 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: match npc.current_task:
"gather_food": "gather_food":
food += 2.0 food += 2.0 * productivity
"gather_wood": "gather_wood":
wood += 2.0 wood += 2.0 * productivity
"patrol": "patrol":
safety += 1.0 safety += 1.0 * productivity
"study": "study":
knowledge += 1.0 knowledge += 1.0 * productivity
"eat": "eat":
food -= 1.0 food -= 1.0
"rest": "rest":
+7
View File
@@ -94,3 +94,10 @@ func add_safety(amount: float) -> void:
func add_knowledge(amount: float) -> void: func add_knowledge(amount: float) -> void:
village.knowledge += amount village.knowledge += amount
village_changed.emit(village) village_changed.emit(village)
func get_starving_count() -> int:
var count := 0
for npc in npcs:
if npc.is_starving:
count += 1
return count
+2 -1
View File
@@ -27,6 +27,7 @@ func _on_village_changed(village: SimVillage) -> void:
Wood: %s Wood: %s
Safety: %s Safety: %s
Knowledge: %s Knowledge: %s
Starving: %s
Food Mod: %.2f Food Mod: %.2f
Safety Mod: %.2f Safety Mod: %.2f
@@ -36,7 +37,7 @@ func _on_village_changed(village: SimVillage) -> void:
round(village.wood), round(village.wood),
round(village.safety), round(village.safety),
round(village.knowledge), round(village.knowledge),
simulation_manager.get_starving_count(),
village.food_modifier, village.food_modifier,
village.safety_modifier, village.safety_modifier,
village.knowledge_modifier village.knowledge_modifier