feat: author emergent situations and dialogue

This commit is contained in:
Rijad Zuzo
2026-08-12 21:58:12 +02:00
parent 14120115d4
commit d12e9515fb
29 changed files with 856 additions and 143 deletions
@@ -0,0 +1,70 @@
[gd_resource type="Resource" script_class="SituationDefinition" load_steps=10 format=3]
[ext_resource type="Script" path="res://simulation/situations/SituationDefinition.gd" id="1_definition"]
[ext_resource type="Script" path="res://simulation/situations/SituationPredicate.gd" id="2_predicate"]
[ext_resource type="Script" path="res://simulation/situations/SituationAlternativeDefinition.gd" id="3_alternative"]
[sub_resource type="Resource" id="Predicate_pantry_withdrawal"]
script = ExtResource("2_predicate")
predicate_id = &"pantry_withdrawal"
evaluator_id = &"event_type"
parameters = {"event_type": "storage_withdrawn"}
[sub_resource type="Resource" id="Predicate_withdrawal_from_pantry"]
script = ExtResource("2_predicate")
predicate_id = &"withdrawal_from_pantry"
evaluator_id = &"event_participant_id"
parameters = {"entity_id": "village_pantry", "role": "source"}
[sub_resource type="Resource" id="Predicate_withdrawal_of_food"]
script = ExtResource("2_predicate")
predicate_id = &"withdrawal_of_food"
evaluator_id = &"event_payload_equals"
parameters = {"key": "item_id", "value": "food"}
[sub_resource type="Resource" id="Predicate_pantry_empty"]
script = ExtResource("2_predicate")
predicate_id = &"pantry_empty"
evaluator_id = &"state_number_lte"
source = "state"
parameters = {"fact_key": "pantry.food", "value": 0.0}
[sub_resource type="Resource" id="Predicate_pantry_restocked"]
script = ExtResource("2_predicate")
predicate_id = &"pantry_restocked"
evaluator_id = &"event_pantry_supplied"
parameters = {"amount": 1.0, "item_id": "food", "target_id": "village_pantry"}
[sub_resource type="Resource" id="Alternative_restock"]
script = ExtResource("3_alternative")
alternative_id = &"restock_pantry"
display_name = "Restock the pantry"
description = "Bring at least one food item to the village pantry."
resolution_predicate_ids = Array[StringName]([&"pantry_restocked"])
dialogue_topic_ids = Array[StringName]([&"topic_pantry_shortage"])
commitment_terms = {"action_id": "deposit_food", "amount": 1.0, "item_id": "food", "target_id": "village_pantry"}
[sub_resource type="Resource" id="Alternative_endure"]
script = ExtResource("3_alternative")
alternative_id = &"endure_shortage"
display_name = "Endure the shortage"
description = "Make no promise and let the immediate concern pass."
resolution_predicate_ids = Array[StringName]([&"pantry_restocked"])
dialogue_topic_ids = Array[StringName]([&"topic_pantry_shortage"])
[resource]
script = ExtResource("1_definition")
situation_definition_id = &"situation_pantry_shortage"
display_name = "The Pantry Is Empty"
description = "The village pantry has run out of food."
severity = 70
priority = 80
trigger_predicates = [SubResource("Predicate_pantry_withdrawal"), SubResource("Predicate_withdrawal_from_pantry"), SubResource("Predicate_withdrawal_of_food"), SubResource("Predicate_pantry_empty")]
resolution_predicates = [SubResource("Predicate_pantry_restocked")]
expiry_predicate_ids = Array[StringName]([&"age_reached"])
dedupe_key_fields = Array[StringName]([&"world_id", &"source_id"])
expiry_ticks = 200
cooldown_ticks = 50
dialogue_topic_ids = Array[StringName]([&"topic_pantry_shortage"])
dialogue_intent_ids = Array[StringName]([&"accept", &"decline", &"describe_need", &"offer_help", &"report_progress"])
alternatives = [SubResource("Alternative_restock"), SubResource("Alternative_endure")]