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 position: Vector3
var is_starving := false
func _init(
_id: int,
_npc_name: String,
@@ -47,6 +49,14 @@ func simulate_tick(village: SimVillage) -> void:
current_task = "rest"
energy += 20.0
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:
current_task = "gather_food"
+10 -4
View File
@@ -37,15 +37,21 @@ func update_modifiers() -> 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:
"gather_food":
food += 2.0
food += 2.0 * productivity
"gather_wood":
wood += 2.0
wood += 2.0 * productivity
"patrol":
safety += 1.0
safety += 1.0 * productivity
"study":
knowledge += 1.0
knowledge += 1.0 * productivity
"eat":
food -= 1.0
"rest":
+7
View File
@@ -94,3 +94,10 @@ func add_safety(amount: float) -> void:
func add_knowledge(amount: float) -> void:
village.knowledge += amount
village_changed.emit(village)
func get_starving_count() -> int:
var count := 0
for npc in npcs:
if npc.is_starving:
count += 1
return count