Add Wuchao camp conversations
This commit is contained in:
@@ -8,6 +8,8 @@ const SCENARIO_PATH := "res://data/scenarios/001_yellow_turbans.json"
|
||||
const CONVERSATION_ID := "northern_woods_cache"
|
||||
const BRANCH_SCENARIO_ID := "003_xingyang_ambush"
|
||||
const BRANCH_SCENARIO_PATH := "res://data/scenarios/003_xingyang_ambush.json"
|
||||
const WUCHAO_SCENARIO_ID := "013_wuchao_raid"
|
||||
const WUCHAO_SCENARIO_PATH := "res://data/scenarios/013_wuchao_raid.json"
|
||||
const SAVE_PATH := "user://campaign_save.json"
|
||||
const MANUAL_SAVE_PATH := "user://campaign_manual_save.json"
|
||||
|
||||
@@ -22,6 +24,7 @@ func _init() -> void:
|
||||
_check_manual_checkpoint_reverts_claim(failures)
|
||||
_check_completed_replay_cannot_claim(failures)
|
||||
_check_conditional_camp_conversations(failures)
|
||||
_check_wuchao_branch_camp_conversations(failures)
|
||||
|
||||
if not _restore_user_file(SAVE_PATH, save_backup):
|
||||
failures.append("could not restore automatic campaign save")
|
||||
@@ -197,6 +200,86 @@ func _check_conditional_camp_conversations(failures: Array[String]) -> void:
|
||||
regroup_scene.free()
|
||||
|
||||
|
||||
func _check_wuchao_branch_camp_conversations(failures: Array[String]) -> void:
|
||||
var base_scene = _new_prebattle_scene_for(failures, "Wuchao base camp", WUCHAO_SCENARIO_ID, WUCHAO_SCENARIO_PATH)
|
||||
if base_scene != null:
|
||||
if base_scene._camp_conversation_by_id("wuchao_night_raid_council").is_empty():
|
||||
failures.append("Wuchao should expose the night raid council conversation")
|
||||
if base_scene._camp_conversation_by_id("wuchao_guo_jia_empty_bowl").is_empty():
|
||||
failures.append("Wuchao should expose Guo Jia's officer conversation")
|
||||
if not base_scene._camp_conversation_by_id("wuchao_fast_raid_supplies").is_empty():
|
||||
failures.append("Wuchao fast raid supplies should be hidden without the prepared raid flag")
|
||||
if not base_scene._camp_conversation_by_id("wuchao_guandu_reserve_wagon").is_empty():
|
||||
failures.append("Wuchao reserve wagon should be hidden without the strengthened defense flag")
|
||||
var merchant: Dictionary = base_scene.state.get_shop_merchant()
|
||||
if str(merchant.get("name", "")) != "Wuchao Night Trader":
|
||||
failures.append("Wuchao shop merchant name should be present")
|
||||
var merchant_lines: Array = merchant.get("lines", [])
|
||||
if merchant_lines.size() < 2:
|
||||
failures.append("Wuchao shop merchant should expose flavor lines")
|
||||
if base_scene._format_talk_status_text(base_scene._camp_conversation_entries()) != "Camp conversations | 2 topics":
|
||||
failures.append("Wuchao base talk status should summarize two non-supply topics")
|
||||
base_scene.free()
|
||||
|
||||
var raid_scene = _new_prebattle_scene_for(
|
||||
failures,
|
||||
"Wuchao prepared raid camp",
|
||||
WUCHAO_SCENARIO_ID,
|
||||
WUCHAO_SCENARIO_PATH,
|
||||
{"prepared_wuchao_raid": true}
|
||||
)
|
||||
if raid_scene != null:
|
||||
var fast_supplies: Dictionary = raid_scene._camp_conversation_by_id("wuchao_fast_raid_supplies")
|
||||
if fast_supplies.is_empty():
|
||||
failures.append("prepared raid flag should expose Wuchao fast supplies")
|
||||
if not raid_scene._camp_conversation_by_id("wuchao_guandu_reserve_wagon").is_empty():
|
||||
failures.append("prepared raid flag should not expose Wuchao reserve wagon")
|
||||
if not fast_supplies.is_empty():
|
||||
if raid_scene._format_talk_status_text(raid_scene._camp_conversation_entries()) != "Camp conversations | 3 topics | 1 supplies ready":
|
||||
failures.append("Wuchao prepared raid talk status should show one ready supply")
|
||||
if not raid_scene._format_camp_conversation_button_text(fast_supplies).contains("Supply Bean"):
|
||||
failures.append("Wuchao fast supplies button should show Bean supply")
|
||||
var before_bean := int(raid_scene.campaign_state.get_inventory_snapshot().get("bean", 0))
|
||||
raid_scene._apply_camp_conversation_effects(fast_supplies)
|
||||
if int(raid_scene.campaign_state.get_inventory_snapshot().get("bean", 0)) != before_bean + 1:
|
||||
failures.append("Wuchao fast supplies should add Bean to campaign inventory")
|
||||
if int(raid_scene.state.get_inventory_snapshot().get("bean", 0)) != before_bean + 1:
|
||||
failures.append("Wuchao fast supplies should refresh battle Bean inventory")
|
||||
if not raid_scene.campaign_state.has_claimed_camp_conversation_effects(WUCHAO_SCENARIO_ID, "wuchao_fast_raid_supplies"):
|
||||
failures.append("Wuchao fast supplies claim should be saved")
|
||||
if raid_scene._format_talk_status_text(raid_scene._camp_conversation_entries()) != "Camp conversations | 3 topics | 1 claimed":
|
||||
failures.append("Wuchao prepared raid talk status should show claimed supply after claim")
|
||||
raid_scene.free()
|
||||
|
||||
var defense_scene = _new_prebattle_scene_for(
|
||||
failures,
|
||||
"Wuchao strengthened defense camp",
|
||||
WUCHAO_SCENARIO_ID,
|
||||
WUCHAO_SCENARIO_PATH,
|
||||
{"strengthened_guandu_defense": true}
|
||||
)
|
||||
if defense_scene != null:
|
||||
var reserve_wagon: Dictionary = defense_scene._camp_conversation_by_id("wuchao_guandu_reserve_wagon")
|
||||
if reserve_wagon.is_empty():
|
||||
failures.append("strengthened defense flag should expose Wuchao reserve wagon")
|
||||
if not defense_scene._camp_conversation_by_id("wuchao_fast_raid_supplies").is_empty():
|
||||
failures.append("strengthened defense flag should not expose Wuchao fast supplies")
|
||||
if not reserve_wagon.is_empty():
|
||||
if defense_scene._format_talk_status_text(defense_scene._camp_conversation_entries()) != "Camp conversations | 3 topics | 1 supplies ready":
|
||||
failures.append("Wuchao strengthened defense talk status should show one ready supply")
|
||||
if not defense_scene._format_camp_conversation_button_text(reserve_wagon).contains("Supply Panacea"):
|
||||
failures.append("Wuchao reserve wagon button should show Panacea supply")
|
||||
var before_panacea := int(defense_scene.campaign_state.get_inventory_snapshot().get("panacea", 0))
|
||||
defense_scene._apply_camp_conversation_effects(reserve_wagon)
|
||||
if int(defense_scene.campaign_state.get_inventory_snapshot().get("panacea", 0)) != before_panacea + 1:
|
||||
failures.append("Wuchao reserve wagon should add Panacea to campaign inventory")
|
||||
if int(defense_scene.state.get_inventory_snapshot().get("panacea", 0)) != before_panacea + 1:
|
||||
failures.append("Wuchao reserve wagon should refresh battle Panacea inventory")
|
||||
if not defense_scene.campaign_state.has_claimed_camp_conversation_effects(WUCHAO_SCENARIO_ID, "wuchao_guandu_reserve_wagon"):
|
||||
failures.append("Wuchao reserve wagon claim should be saved")
|
||||
defense_scene.free()
|
||||
|
||||
|
||||
func _new_prebattle_scene(failures: Array[String], label: String):
|
||||
return _new_prebattle_scene_for(failures, label, SCENARIO_ID, SCENARIO_PATH)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user