Add tactical pressure cues to first battle
This commit is contained in:
@@ -267,6 +267,12 @@
|
|||||||
"base": { "hp": 24, "atk": 9, "def": 4 }
|
"base": { "hp": 24, "atk": 9, "def": 4 }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "set_ai_target_priority",
|
||||||
|
"unit_id": "xiahou_dun",
|
||||||
|
"priority": 9,
|
||||||
|
"text": "동쪽 잔병이 하후돈의 선봉을 노린다."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -298,6 +304,12 @@
|
|||||||
"base": { "hp": 24, "atk": 9, "def": 4 }
|
"base": { "hp": 24, "atk": 9, "def": 4 }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "set_ai_target_priority",
|
||||||
|
"unit_id": "cao_cao",
|
||||||
|
"priority": 11,
|
||||||
|
"text": "남쪽 약탈대가 조조의 본진을 노린다."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ func _init() -> void:
|
|||||||
|
|
||||||
_check_priority_action(state, failures)
|
_check_priority_action(state, failures)
|
||||||
_check_priority_changes_enemy_targeting(state, failures)
|
_check_priority_changes_enemy_targeting(state, failures)
|
||||||
|
_check_reinforcement_priority_events(failures)
|
||||||
|
|
||||||
if failures.is_empty():
|
if failures.is_empty():
|
||||||
print("event ai priority smoke ok")
|
print("event ai priority smoke ok")
|
||||||
@@ -57,6 +58,38 @@ func _check_priority_changes_enemy_targeting(state, failures: Array[String]) ->
|
|||||||
failures.append("AI priority did not affect nearest target scoring: %s" % str(target.get("id", "")))
|
failures.append("AI priority did not affect nearest target scoring: %s" % str(target.get("id", "")))
|
||||||
|
|
||||||
|
|
||||||
|
func _check_reinforcement_priority_events(failures: Array[String]) -> void:
|
||||||
|
var state = BattleStateScript.new()
|
||||||
|
if not state.load_battle("res://data/scenarios/001_yellow_turbans.json"):
|
||||||
|
failures.append("Could not load stage 1 priority event scenario")
|
||||||
|
return
|
||||||
|
|
||||||
|
var logs: Array[String] = []
|
||||||
|
var feedback: Array[Dictionary] = []
|
||||||
|
state.log_added.connect(func(message: String) -> void:
|
||||||
|
logs.append(message)
|
||||||
|
)
|
||||||
|
state.combat_feedback_requested.connect(func(unit_id: String, text: String, kind: String) -> void:
|
||||||
|
feedback.append({"unit_id": unit_id, "text": text, "kind": kind})
|
||||||
|
)
|
||||||
|
|
||||||
|
state._run_events("turn_start", "enemy", 4)
|
||||||
|
if int(state.get_unit("xiahou_dun").get("ai_target_priority", 0)) != 9:
|
||||||
|
failures.append("Turn 4 reinforcement did not pressure Xiahou Dun")
|
||||||
|
if not logs.has("동쪽 잔병이 하후돈의 선봉을 노린다."):
|
||||||
|
failures.append("Turn 4 reinforcement priority log missing")
|
||||||
|
if not _feedback_has(feedback, "xiahou_dun", "표적", "priority"):
|
||||||
|
failures.append("Turn 4 reinforcement priority feedback missing")
|
||||||
|
|
||||||
|
state._run_events("turn_start", "enemy", 7)
|
||||||
|
if int(state.get_unit("cao_cao").get("ai_target_priority", 0)) != 11:
|
||||||
|
failures.append("Turn 7 reinforcement did not pressure Cao Cao")
|
||||||
|
if not logs.has("남쪽 약탈대가 조조의 본진을 노린다."):
|
||||||
|
failures.append("Turn 7 reinforcement priority log missing")
|
||||||
|
if not _feedback_has(feedback, "cao_cao", "표적", "priority"):
|
||||||
|
failures.append("Turn 7 reinforcement priority feedback missing")
|
||||||
|
|
||||||
|
|
||||||
func _feedback_has(feedback: Array[Dictionary], expected_unit_id: String, expected_text: String, expected_kind: String) -> bool:
|
func _feedback_has(feedback: Array[Dictionary], expected_unit_id: String, expected_text: String, expected_kind: String) -> bool:
|
||||||
for entry in feedback:
|
for entry in feedback:
|
||||||
if (
|
if (
|
||||||
|
|||||||
Reference in New Issue
Block a user