feat: add consequence with modifiers for properties
This commit is contained in:
@@ -29,7 +29,7 @@ func _init(
|
|||||||
position = Vector3(randf_range(-8.0, 8.0), 0.0, randf_range(-8.0, 8.0))
|
position = Vector3(randf_range(-8.0, 8.0), 0.0, randf_range(-8.0, 8.0))
|
||||||
|
|
||||||
func simulate_tick(village: SimVillage) -> void:
|
func simulate_tick(village: SimVillage) -> void:
|
||||||
hunger += 5.0
|
hunger += 5.0 * village.food_modifier
|
||||||
energy -= 2.0
|
energy -= 2.0
|
||||||
|
|
||||||
hunger = clamp(hunger, 0.0, 100.0)
|
hunger = clamp(hunger, 0.0, 100.0)
|
||||||
|
|||||||
@@ -1,11 +1,41 @@
|
|||||||
class_name SimVillage
|
class_name SimVillage
|
||||||
extends RefCounted
|
extends RefCounted
|
||||||
|
|
||||||
|
const DEBUG_LOGS := true
|
||||||
|
|
||||||
var food := 20.0
|
var food := 20.0
|
||||||
var wood := 10.0
|
var wood := 10.0
|
||||||
var safety := 50.0
|
var safety := 50.0
|
||||||
var knowledge := 0.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:
|
func apply_npc_task(npc: SimNPC) -> void:
|
||||||
match npc.current_task:
|
match npc.current_task:
|
||||||
"gather_food":
|
"gather_food":
|
||||||
@@ -27,6 +57,7 @@ func apply_npc_task(npc: SimNPC) -> void:
|
|||||||
wood = max(wood, 0.0)
|
wood = max(wood, 0.0)
|
||||||
safety = clamp(safety, 0.0, 100.0)
|
safety = clamp(safety, 0.0, 100.0)
|
||||||
knowledge = max(knowledge, 0.0)
|
knowledge = max(knowledge, 0.0)
|
||||||
|
update_modifiers()
|
||||||
|
|
||||||
func get_summary() -> String:
|
func get_summary() -> String:
|
||||||
return "Village | food: %s | wood: %s | safety: %s | knowledge: %s" % [
|
return "Village | food: %s | wood: %s | safety: %s | knowledge: %s" % [
|
||||||
@@ -35,3 +66,7 @@ func get_summary() -> String:
|
|||||||
round(safety),
|
round(safety),
|
||||||
round(knowledge)
|
round(knowledge)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
func debug_log(message: String) -> void:
|
||||||
|
if DEBUG_LOGS:
|
||||||
|
print("[Village] ", message)
|
||||||
|
|||||||
+9
-1
@@ -27,9 +27,17 @@ Food: %s
|
|||||||
Wood: %s
|
Wood: %s
|
||||||
Safety: %s
|
Safety: %s
|
||||||
Knowledge: %s
|
Knowledge: %s
|
||||||
|
|
||||||
|
Food Mod: %.2f
|
||||||
|
Safety Mod: %.2f
|
||||||
|
Knowledge Mod: %.2f
|
||||||
""" % [
|
""" % [
|
||||||
round(village.food),
|
round(village.food),
|
||||||
round(village.wood),
|
round(village.wood),
|
||||||
round(village.safety),
|
round(village.safety),
|
||||||
round(village.knowledge)
|
round(village.knowledge),
|
||||||
|
|
||||||
|
village.food_modifier,
|
||||||
|
village.safety_modifier,
|
||||||
|
village.knowledge_modifier
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user