Add Jieting sortie and Jiang Wei recruitment flow

This commit is contained in:
2026-06-24 03:41:36 +09:00
parent 3c18072c1e
commit a3f56bb787
11 changed files with 934 additions and 72 deletions

View File

@@ -1739,7 +1739,7 @@ try {
if (
progressTabState?.activeTab !== 'progress' ||
progressTabState.campaignProgress?.completedKnown !== 17 ||
progressTabState.campaignProgress?.totalKnown !== 56 ||
progressTabState.campaignProgress?.totalKnown !== 57 ||
progressTabState.campaignProgress?.activeChapter?.title !== '적벽대전' ||
progressTabState.campaignProgress?.latestBattleTitle !== '융중 방문로' ||
progressTabState.campaignProgress?.nextBattleTitle !== '박망파 매복전'
@@ -1891,7 +1891,7 @@ try {
if (
postBowangProgressState?.activeTab !== 'progress' ||
postBowangProgressState.campaignProgress?.completedKnown !== 18 ||
postBowangProgressState.campaignProgress?.totalKnown !== 56 ||
postBowangProgressState.campaignProgress?.totalKnown !== 57 ||
postBowangProgressState.campaignProgress?.activeChapter?.title !== '적벽대전' ||
postBowangProgressState.campaignProgress?.latestBattleTitle !== '박망파 매복전' ||
postBowangProgressState.campaignProgress?.nextBattleTitle !== '장판파 피난로'
@@ -2029,7 +2029,7 @@ try {
if (
postChangbanProgressState?.activeTab !== 'progress' ||
postChangbanProgressState.campaignProgress?.completedKnown !== 19 ||
postChangbanProgressState.campaignProgress?.totalKnown !== 56 ||
postChangbanProgressState.campaignProgress?.totalKnown !== 57 ||
postChangbanProgressState.campaignProgress?.activeChapter?.title !== '적벽대전' ||
postChangbanProgressState.campaignProgress?.latestBattleTitle !== '장판파 피난로' ||
postChangbanProgressState.campaignProgress?.nextBattleTitle !== '강동 사절로'
@@ -2167,7 +2167,7 @@ try {
if (
postJiangdongProgressState?.activeTab !== 'progress' ||
postJiangdongProgressState.campaignProgress?.completedKnown !== 20 ||
postJiangdongProgressState.campaignProgress?.totalKnown !== 56 ||
postJiangdongProgressState.campaignProgress?.totalKnown !== 57 ||
postJiangdongProgressState.campaignProgress?.activeChapter?.title !== '적벽대전' ||
postJiangdongProgressState.campaignProgress?.latestBattleTitle !== '강동 사절로' ||
postJiangdongProgressState.campaignProgress?.nextBattleTitle !== '적벽 전초전'
@@ -2307,7 +2307,7 @@ try {
if (
postRedCliffsProgressState?.activeTab !== 'progress' ||
postRedCliffsProgressState.campaignProgress?.completedKnown !== 21 ||
postRedCliffsProgressState.campaignProgress?.totalKnown !== 56 ||
postRedCliffsProgressState.campaignProgress?.totalKnown !== 57 ||
postRedCliffsProgressState.campaignProgress?.activeChapter?.title !== '적벽대전' ||
postRedCliffsProgressState.campaignProgress?.latestBattleTitle !== '적벽 전초전' ||
postRedCliffsProgressState.campaignProgress?.nextBattleTitle !== '적벽 화공전'
@@ -2447,7 +2447,7 @@ try {
if (
postFireAttackProgressState?.activeTab !== 'progress' ||
postFireAttackProgressState.campaignProgress?.completedKnown !== 22 ||
postFireAttackProgressState.campaignProgress?.totalKnown !== 56 ||
postFireAttackProgressState.campaignProgress?.totalKnown !== 57 ||
postFireAttackProgressState.campaignProgress?.activeChapter?.title !== '형주·익주 확보' ||
postFireAttackProgressState.campaignProgress?.latestBattleTitle !== '적벽 화공전' ||
postFireAttackProgressState.campaignProgress?.nextBattleTitle !== '형주 남부 진입전'
@@ -2590,7 +2590,7 @@ try {
if (
postJingzhouProgressState?.activeTab !== 'progress' ||
postJingzhouProgressState.campaignProgress?.completedKnown !== 23 ||
postJingzhouProgressState.campaignProgress?.totalKnown !== 56 ||
postJingzhouProgressState.campaignProgress?.totalKnown !== 57 ||
postJingzhouProgressState.campaignProgress?.activeChapter?.title !== '형주·익주 확보' ||
postJingzhouProgressState.campaignProgress?.latestBattleTitle !== '형주 남부 진입전' ||
postJingzhouProgressState.campaignProgress?.nextBattleTitle !== '계양 설득전'
@@ -2732,7 +2732,7 @@ try {
if (
postGuiyangProgressState?.activeTab !== 'progress' ||
postGuiyangProgressState.campaignProgress?.completedKnown !== 24 ||
postGuiyangProgressState.campaignProgress?.totalKnown !== 56 ||
postGuiyangProgressState.campaignProgress?.totalKnown !== 57 ||
postGuiyangProgressState.campaignProgress?.activeChapter?.title !== '형주·익주 확보' ||
postGuiyangProgressState.campaignProgress?.latestBattleTitle !== '계양 설득전' ||
postGuiyangProgressState.campaignProgress?.nextBattleTitle !== '무릉 산길 확보전'
@@ -2875,7 +2875,7 @@ try {
if (
postWulingProgressState?.activeTab !== 'progress' ||
postWulingProgressState.campaignProgress?.completedKnown !== 25 ||
postWulingProgressState.campaignProgress?.totalKnown !== 56 ||
postWulingProgressState.campaignProgress?.totalKnown !== 57 ||
postWulingProgressState.campaignProgress?.activeChapter?.title !== '형주·익주 확보' ||
postWulingProgressState.campaignProgress?.latestBattleTitle !== '무릉 산길 확보전' ||
postWulingProgressState.campaignProgress?.nextBattleTitle !== '장사 노장 대면전'
@@ -3024,7 +3024,7 @@ try {
if (
postChangshaProgressState?.activeTab !== 'progress' ||
postChangshaProgressState.campaignProgress?.completedKnown !== 26 ||
postChangshaProgressState.campaignProgress?.totalKnown !== 56 ||
postChangshaProgressState.campaignProgress?.totalKnown !== 57 ||
postChangshaProgressState.campaignProgress?.activeChapter?.title !== '형주·익주 확보' ||
postChangshaProgressState.campaignProgress?.latestBattleTitle !== '장사 노장 대면전' ||
postChangshaProgressState.campaignProgress?.nextBattleTitle !== '익주 원군로'
@@ -3169,7 +3169,7 @@ try {
if (
postYizhouProgressState?.activeTab !== 'progress' ||
postYizhouProgressState.campaignProgress?.completedKnown !== 27 ||
postYizhouProgressState.campaignProgress?.totalKnown !== 56 ||
postYizhouProgressState.campaignProgress?.totalKnown !== 57 ||
postYizhouProgressState.campaignProgress?.activeChapter?.title !== '형주·익주 확보' ||
postYizhouProgressState.campaignProgress?.latestBattleTitle !== '익주 원군로' ||
postYizhouProgressState.campaignProgress?.nextBattleTitle !== '부수관 진입전'
@@ -3316,7 +3316,7 @@ try {
if (
postFuPassProgressState?.activeTab !== 'progress' ||
postFuPassProgressState.campaignProgress?.completedKnown !== 28 ||
postFuPassProgressState.campaignProgress?.totalKnown !== 56 ||
postFuPassProgressState.campaignProgress?.totalKnown !== 57 ||
postFuPassProgressState.campaignProgress?.activeChapter?.title !== '형주·익주 확보' ||
postFuPassProgressState.campaignProgress?.latestBattleTitle !== '부수관 진입전' ||
postFuPassProgressState.campaignProgress?.nextBattleTitle !== '낙성 외곽전'
@@ -3465,7 +3465,7 @@ try {
if (
postLuoProgressState?.activeTab !== 'progress' ||
postLuoProgressState.campaignProgress?.completedKnown !== 29 ||
postLuoProgressState.campaignProgress?.totalKnown !== 56 ||
postLuoProgressState.campaignProgress?.totalKnown !== 57 ||
postLuoProgressState.campaignProgress?.activeChapter?.title !== '형주·익주 확보' ||
postLuoProgressState.campaignProgress?.latestBattleTitle !== '낙성 외곽전' ||
postLuoProgressState.campaignProgress?.nextBattleTitle !== '낙봉파 매복전'
@@ -3611,7 +3611,7 @@ try {
if (
postLuofengProgressState?.activeTab !== 'progress' ||
postLuofengProgressState.campaignProgress?.completedKnown !== 30 ||
postLuofengProgressState.campaignProgress?.totalKnown !== 56 ||
postLuofengProgressState.campaignProgress?.totalKnown !== 57 ||
postLuofengProgressState.campaignProgress?.activeChapter?.title !== '형주·익주 확보' ||
postLuofengProgressState.campaignProgress?.latestBattleTitle !== '낙봉파 매복전' ||
postLuofengProgressState.campaignProgress?.nextBattleTitle !== '낙성 본성 공략'
@@ -3763,7 +3763,7 @@ try {
if (
postLuoMainProgressState?.activeTab !== 'progress' ||
postLuoMainProgressState.campaignProgress?.completedKnown !== 31 ||
postLuoMainProgressState.campaignProgress?.totalKnown !== 56 ||
postLuoMainProgressState.campaignProgress?.totalKnown !== 57 ||
postLuoMainProgressState.campaignProgress?.activeChapter?.title !== '형주·익주 확보' ||
postLuoMainProgressState.campaignProgress?.latestBattleTitle !== '낙성 본성 공략' ||
postLuoMainProgressState.campaignProgress?.nextBattleTitle !== '면죽관 압박전'
@@ -3916,7 +3916,7 @@ try {
if (
postMianzhuProgressState?.activeTab !== 'progress' ||
postMianzhuProgressState.campaignProgress?.completedKnown !== 32 ||
postMianzhuProgressState.campaignProgress?.totalKnown !== 56 ||
postMianzhuProgressState.campaignProgress?.totalKnown !== 57 ||
postMianzhuProgressState.campaignProgress?.activeChapter?.title !== '형주·익주 확보' ||
postMianzhuProgressState.campaignProgress?.latestBattleTitle !== '면죽관 압박전' ||
postMianzhuProgressState.campaignProgress?.nextBattleTitle !== '성도 항복 권고전'
@@ -4070,7 +4070,7 @@ try {
if (
postChengduProgressState?.activeTab !== 'progress' ||
postChengduProgressState.campaignProgress?.completedKnown !== 33 ||
postChengduProgressState.campaignProgress?.totalKnown !== 56 ||
postChengduProgressState.campaignProgress?.totalKnown !== 57 ||
postChengduProgressState.campaignProgress?.activeChapter?.title !== '촉한 건국' ||
postChengduProgressState.campaignProgress?.latestBattleTitle !== '성도 항복 권고전' ||
postChengduProgressState.campaignProgress?.nextBattleTitle !== '가맹관 마초 대면전'
@@ -4225,7 +4225,7 @@ try {
if (
postJiamengProgressState?.activeTab !== 'progress' ||
postJiamengProgressState.campaignProgress?.completedKnown !== 34 ||
postJiamengProgressState.campaignProgress?.totalKnown !== 56 ||
postJiamengProgressState.campaignProgress?.totalKnown !== 57 ||
postJiamengProgressState.campaignProgress?.activeChapter?.title !== '촉한 건국' ||
postJiamengProgressState.campaignProgress?.latestBattleTitle !== '가맹관 마초 대면전' ||
postJiamengProgressState.campaignProgress?.nextBattleTitle !== '양평관 정찰전'
@@ -4381,7 +4381,7 @@ try {
if (
postYangpingProgressState?.activeTab !== 'progress' ||
postYangpingProgressState.campaignProgress?.completedKnown !== 35 ||
postYangpingProgressState.campaignProgress?.totalKnown !== 56 ||
postYangpingProgressState.campaignProgress?.totalKnown !== 57 ||
postYangpingProgressState.campaignProgress?.activeChapter?.title !== '촉한 건국' ||
postYangpingProgressState.campaignProgress?.latestBattleTitle !== '양평관 정찰전' ||
postYangpingProgressState.campaignProgress?.nextBattleTitle !== '정군산 전초전'
@@ -4538,7 +4538,7 @@ try {
if (
postDingjunProgressState?.activeTab !== 'progress' ||
postDingjunProgressState.campaignProgress?.completedKnown !== 36 ||
postDingjunProgressState.campaignProgress?.totalKnown !== 56 ||
postDingjunProgressState.campaignProgress?.totalKnown !== 57 ||
postDingjunProgressState.campaignProgress?.activeChapter?.title !== '촉한 건국' ||
postDingjunProgressState.campaignProgress?.latestBattleTitle !== '정군산 전초전' ||
postDingjunProgressState.campaignProgress?.nextBattleTitle !== '한중 결전'
@@ -4691,7 +4691,7 @@ try {
if (
postHanzhongProgressState?.activeTab !== 'progress' ||
postHanzhongProgressState.campaignProgress?.completedKnown !== 37 ||
postHanzhongProgressState.campaignProgress?.totalKnown !== 56 ||
postHanzhongProgressState.campaignProgress?.totalKnown !== 57 ||
postHanzhongProgressState.campaignProgress?.activeChapter?.title !== '촉한 건국' ||
postHanzhongProgressState.campaignProgress?.latestBattleTitle !== '한중 결전' ||
postHanzhongProgressState.campaignProgress?.nextBattleTitle !== '한중왕 즉위 준비'
@@ -4752,7 +4752,7 @@ try {
if (
postKingCouncilProgressState?.activeTab !== 'progress' ||
postKingCouncilProgressState.campaignProgress?.completedKnown !== 37 ||
postKingCouncilProgressState.campaignProgress?.totalKnown !== 56 ||
postKingCouncilProgressState.campaignProgress?.totalKnown !== 57 ||
postKingCouncilProgressState.campaignProgress?.latestBattleTitle !== '한중 결전' ||
postKingCouncilProgressState.campaignProgress?.nextBattleTitle !== '촉한 건국 선포'
) {
@@ -4812,7 +4812,7 @@ try {
if (
postFoundationProgressState?.activeTab !== 'progress' ||
postFoundationProgressState.campaignProgress?.completedKnown !== 37 ||
postFoundationProgressState.campaignProgress?.totalKnown !== 56 ||
postFoundationProgressState.campaignProgress?.totalKnown !== 57 ||
postFoundationProgressState.campaignProgress?.latestBattleTitle !== '한중 결전' ||
postFoundationProgressState.campaignProgress?.nextBattleTitle !== '형주 방위 전초전'
) {
@@ -4963,7 +4963,7 @@ try {
if (
postJingDefenseProgressState?.activeTab !== 'progress' ||
postJingDefenseProgressState.campaignProgress?.completedKnown !== 38 ||
postJingDefenseProgressState.campaignProgress?.totalKnown !== 56 ||
postJingDefenseProgressState.campaignProgress?.totalKnown !== 57 ||
postJingDefenseProgressState.campaignProgress?.latestBattleTitle !== '형주 방위 전초전' ||
postJingDefenseProgressState.campaignProgress?.nextBattleTitle !== '번성 외곽 압박전'
) {
@@ -5116,7 +5116,7 @@ try {
if (
postFanCastleProgressState?.activeTab !== 'progress' ||
postFanCastleProgressState.campaignProgress?.completedKnown !== 39 ||
postFanCastleProgressState.campaignProgress?.totalKnown !== 56 ||
postFanCastleProgressState.campaignProgress?.totalKnown !== 57 ||
postFanCastleProgressState.campaignProgress?.latestBattleTitle !== '번성 외곽 압박전' ||
postFanCastleProgressState.campaignProgress?.nextBattleTitle !== '한수 수공'
) {
@@ -5270,7 +5270,7 @@ try {
if (
postHanRiverProgressState?.activeTab !== 'progress' ||
postHanRiverProgressState.campaignProgress?.completedKnown !== 40 ||
postHanRiverProgressState.campaignProgress?.totalKnown !== 56 ||
postHanRiverProgressState.campaignProgress?.totalKnown !== 57 ||
postHanRiverProgressState.campaignProgress?.latestBattleTitle !== '한수 수공' ||
postHanRiverProgressState.campaignProgress?.nextBattleTitle !== '번성 공성전'
) {
@@ -5424,7 +5424,7 @@ try {
if (
postFanSiegeProgressState?.activeTab !== 'progress' ||
postFanSiegeProgressState.campaignProgress?.completedKnown !== 41 ||
postFanSiegeProgressState.campaignProgress?.totalKnown !== 56 ||
postFanSiegeProgressState.campaignProgress?.totalKnown !== 57 ||
postFanSiegeProgressState.campaignProgress?.latestBattleTitle !== '번성 공성전' ||
postFanSiegeProgressState.campaignProgress?.nextBattleTitle !== '강릉 나루 경계전'
) {
@@ -5586,7 +5586,7 @@ try {
if (
postJingRearProgressState?.activeTab !== 'progress' ||
postJingRearProgressState.campaignProgress?.completedKnown !== 42 ||
postJingRearProgressState.campaignProgress?.totalKnown !== 56 ||
postJingRearProgressState.campaignProgress?.totalKnown !== 57 ||
postJingRearProgressState.campaignProgress?.latestBattleTitle !== '강릉 나루 경계전' ||
postJingRearProgressState.campaignProgress?.nextBattleTitle !== '공안 성문 변고'
) {
@@ -5741,7 +5741,7 @@ try {
if (
postGonganProgressState?.activeTab !== 'progress' ||
postGonganProgressState.campaignProgress?.completedKnown !== 43 ||
postGonganProgressState.campaignProgress?.totalKnown !== 56 ||
postGonganProgressState.campaignProgress?.totalKnown !== 57 ||
postGonganProgressState.campaignProgress?.latestBattleTitle !== '공안 성문 변고' ||
postGonganProgressState.campaignProgress?.nextBattleTitle !== '맥성 고립전'
) {
@@ -5899,7 +5899,7 @@ try {
if (
postMaichengProgressState?.activeTab !== 'progress' ||
postMaichengProgressState.campaignProgress?.completedKnown !== 44 ||
postMaichengProgressState.campaignProgress?.totalKnown !== 56 ||
postMaichengProgressState.campaignProgress?.totalKnown !== 57 ||
postMaichengProgressState.campaignProgress?.latestBattleTitle !== '맥성 고립전' ||
postMaichengProgressState.campaignProgress?.nextBattleTitle !== '이릉 진격로'
) {
@@ -6056,7 +6056,7 @@ try {
if (
postYilingProgressState?.activeTab !== 'progress' ||
postYilingProgressState.campaignProgress?.completedKnown !== 45 ||
postYilingProgressState.campaignProgress?.totalKnown !== 56 ||
postYilingProgressState.campaignProgress?.totalKnown !== 57 ||
postYilingProgressState.campaignProgress?.latestBattleTitle !== '이릉 진격로' ||
postYilingProgressState.campaignProgress?.nextBattleTitle !== '이릉 화공전'
) {
@@ -6214,7 +6214,7 @@ try {
if (
postYilingFireProgressState?.activeTab !== 'progress' ||
postYilingFireProgressState.campaignProgress?.completedKnown !== 46 ||
postYilingFireProgressState.campaignProgress?.totalKnown !== 56 ||
postYilingFireProgressState.campaignProgress?.totalKnown !== 57 ||
postYilingFireProgressState.campaignProgress?.latestBattleTitle !== '이릉 화공전' ||
postYilingFireProgressState.campaignProgress?.nextBattleTitle !== '백제성 유탁'
) {
@@ -6280,7 +6280,7 @@ try {
if (
postBaidiProgressState?.activeTab !== 'progress' ||
postBaidiProgressState.campaignProgress?.completedKnown !== 46 ||
postBaidiProgressState.campaignProgress?.totalKnown !== 56 ||
postBaidiProgressState.campaignProgress?.totalKnown !== 57 ||
postBaidiProgressState.campaignProgress?.latestBattleTitle !== '이릉 화공전' ||
postBaidiProgressState.campaignProgress?.nextBattleTitle !== '남중 안정로'
) {
@@ -6441,7 +6441,7 @@ try {
if (
postNanzhongProgressState?.activeTab !== 'progress' ||
postNanzhongProgressState.campaignProgress?.completedKnown !== 47 ||
postNanzhongProgressState.campaignProgress?.totalKnown !== 56 ||
postNanzhongProgressState.campaignProgress?.totalKnown !== 57 ||
postNanzhongProgressState.campaignProgress?.latestBattleTitle !== '남중 안정로' ||
postNanzhongProgressState.campaignProgress?.nextBattleTitle !== '맹획 본대전'
) {
@@ -6603,7 +6603,7 @@ try {
if (
postMengHuoProgressState?.activeTab !== 'progress' ||
postMengHuoProgressState.campaignProgress?.completedKnown !== 48 ||
postMengHuoProgressState.campaignProgress?.totalKnown !== 56 ||
postMengHuoProgressState.campaignProgress?.totalKnown !== 57 ||
postMengHuoProgressState.campaignProgress?.latestBattleTitle !== '맹획 본대전' ||
postMengHuoProgressState.campaignProgress?.nextBattleTitle !== '칠종칠금 2차전'
) {
@@ -6765,7 +6765,7 @@ try {
if (
postSecondCaptureProgressState?.activeTab !== 'progress' ||
postSecondCaptureProgressState.campaignProgress?.completedKnown !== 49 ||
postSecondCaptureProgressState.campaignProgress?.totalKnown !== 56 ||
postSecondCaptureProgressState.campaignProgress?.totalKnown !== 57 ||
postSecondCaptureProgressState.campaignProgress?.latestBattleTitle !== '칠종칠금 2차전' ||
postSecondCaptureProgressState.campaignProgress?.nextBattleTitle !== '칠종칠금 3차전'
) {
@@ -6930,7 +6930,7 @@ try {
if (
postThirdCaptureProgressState?.activeTab !== 'progress' ||
postThirdCaptureProgressState.campaignProgress?.completedKnown !== 50 ||
postThirdCaptureProgressState.campaignProgress?.totalKnown !== 56 ||
postThirdCaptureProgressState.campaignProgress?.totalKnown !== 57 ||
postThirdCaptureProgressState.campaignProgress?.latestBattleTitle !== '칠종칠금 3차전' ||
postThirdCaptureProgressState.campaignProgress?.nextBattleTitle !== '칠종칠금 4차전'
) {
@@ -7096,7 +7096,7 @@ try {
if (
postFourthCaptureProgressState?.activeTab !== 'progress' ||
postFourthCaptureProgressState.campaignProgress?.completedKnown !== 51 ||
postFourthCaptureProgressState.campaignProgress?.totalKnown !== 56 ||
postFourthCaptureProgressState.campaignProgress?.totalKnown !== 57 ||
postFourthCaptureProgressState.campaignProgress?.latestBattleTitle !== '칠종칠금 4차전' ||
postFourthCaptureProgressState.campaignProgress?.nextBattleTitle !== '칠종칠금 5차전'
) {
@@ -7262,7 +7262,7 @@ try {
if (
postFifthCaptureProgressState?.activeTab !== 'progress' ||
postFifthCaptureProgressState.campaignProgress?.completedKnown !== 52 ||
postFifthCaptureProgressState.campaignProgress?.totalKnown !== 56 ||
postFifthCaptureProgressState.campaignProgress?.totalKnown !== 57 ||
postFifthCaptureProgressState.campaignProgress?.latestBattleTitle !== '칠종칠금 5차전' ||
postFifthCaptureProgressState.campaignProgress?.nextBattleTitle !== '칠종칠금 6차전'
) {
@@ -7427,7 +7427,7 @@ try {
if (
postSixthCaptureProgressState?.activeTab !== 'progress' ||
postSixthCaptureProgressState.campaignProgress?.completedKnown !== 53 ||
postSixthCaptureProgressState.campaignProgress?.totalKnown !== 56 ||
postSixthCaptureProgressState.campaignProgress?.totalKnown !== 57 ||
postSixthCaptureProgressState.campaignProgress?.latestBattleTitle !== '칠종칠금 6차전' ||
postSixthCaptureProgressState.campaignProgress?.nextBattleTitle !== '칠종칠금 7차전'
) {
@@ -7593,7 +7593,7 @@ try {
if (
postFinalCaptureProgressState?.activeTab !== 'progress' ||
postFinalCaptureProgressState.campaignProgress?.completedKnown !== 54 ||
postFinalCaptureProgressState.campaignProgress?.totalKnown !== 56 ||
postFinalCaptureProgressState.campaignProgress?.totalKnown !== 57 ||
postFinalCaptureProgressState.campaignProgress?.activeChapter?.id !== 'northern-campaign' ||
postFinalCaptureProgressState.campaignProgress?.latestBattleTitle !== '칠종칠금 7차전' ||
!String(postFinalCaptureProgressState.campaignProgress?.nextBattleTitle ?? '').includes('북벌 준비')
@@ -7666,7 +7666,7 @@ try {
if (
postNorthernPrepProgressState?.activeTab !== 'progress' ||
postNorthernPrepProgressState.campaignProgress?.completedKnown !== 54 ||
postNorthernPrepProgressState.campaignProgress?.totalKnown !== 56 ||
postNorthernPrepProgressState.campaignProgress?.totalKnown !== 57 ||
postNorthernPrepProgressState.campaignProgress?.activeChapter?.id !== 'northern-campaign' ||
postNorthernPrepProgressState.campaignProgress?.latestBattleTitle !== '칠종칠금 7차전' ||
postNorthernPrepProgressState.campaignProgress?.nextBattleTitle !== '제1차 북벌 출진로'
@@ -7816,7 +7816,7 @@ try {
if (
postFiftyFifthProgressState?.activeTab !== 'progress' ||
postFiftyFifthProgressState.campaignProgress?.completedKnown !== 55 ||
postFiftyFifthProgressState.campaignProgress?.totalKnown !== 56 ||
postFiftyFifthProgressState.campaignProgress?.totalKnown !== 57 ||
postFiftyFifthProgressState.campaignProgress?.activeChapter?.id !== 'northern-campaign' ||
postFiftyFifthProgressState.campaignProgress?.latestBattleTitle !== '제1차 북벌 출진로' ||
postFiftyFifthProgressState.campaignProgress?.nextBattleTitle !== '천수 진군로'
@@ -7966,14 +7966,169 @@ try {
if (
postFiftySixthProgressState?.activeTab !== 'progress' ||
postFiftySixthProgressState.campaignProgress?.completedKnown !== 56 ||
postFiftySixthProgressState.campaignProgress?.totalKnown !== 56 ||
postFiftySixthProgressState.campaignProgress?.totalKnown !== 57 ||
postFiftySixthProgressState.campaignProgress?.activeChapter?.id !== 'northern-campaign' ||
postFiftySixthProgressState.campaignProgress?.latestBattleTitle !== '천수 진군로'
postFiftySixthProgressState.campaignProgress?.latestBattleTitle !== '천수 진군로' ||
postFiftySixthProgressState.campaignProgress?.nextBattleTitle !== '가정 배치 위기'
) {
throw new Error(`Expected post-fifty-sixth progress tab to complete the Tianshui advance: ${JSON.stringify(postFiftySixthProgressState?.campaignProgress)}`);
throw new Error(`Expected post-fifty-sixth progress tab to complete the Tianshui advance and point toward Jieting: ${JSON.stringify(postFiftySixthProgressState?.campaignProgress)}`);
}
await page.screenshot({ path: 'dist/verification-post-fifty-sixth-progress.png', fullPage: true });
await page.mouse.click(1120, 38);
await page.waitForTimeout(180);
const jietingSortieState = await page.evaluate(() => window.__HEROS_DEBUG__?.camp());
if (
!jietingSortieState?.sortieVisible ||
jietingSortieState.campaign?.step !== 'fifty-sixth-camp' ||
jietingSortieState.campTitle !== '천수 진군로 후 군영' ||
!String(jietingSortieState.sortiePlan?.objectiveLine ?? '').includes('가정 배치 위기') ||
!String(jietingSortieState.sortiePlan?.objectiveLine ?? '').includes('장합') ||
jietingSortieState.sortiePlan?.maxCount !== 7 ||
jietingSortieState.sortiePlan?.recommendedTotal !== 7 ||
!jietingSortieState.sortieRoster?.some((unit) => unit.id === 'zhuge-liang' && unit.selected && unit.required) ||
!jietingSortieState.sortieRoster?.some((unit) => unit.id === 'wang-ping' && unit.recommended) ||
!jietingSortieState.sortieRoster?.some((unit) => unit.id === 'ma-liang' && unit.recommended) ||
!jietingSortieState.sortieRoster?.some((unit) => unit.id === 'huang-quan' && unit.recommended) ||
!jietingSortieState.sortieRoster?.some((unit) => unit.id === 'fa-zheng' && unit.recommended) ||
!jietingSortieState.sortieRoster?.some((unit) => unit.id === 'zhao-yun' && unit.recommended) ||
!jietingSortieState.sortieRoster?.some((unit) => unit.id === 'ma-dai' && unit.recommended) ||
jietingSortieState.sortieRoster?.some((unit) => unit.id === 'liu-bei') ||
jietingSortieState.sortieRoster?.some((unit) => unit.id === 'jiang-wei')
) {
throw new Error(`Expected Jieting sortie to require Zhuge Liang, exclude Liu Bei, and make terrain readers central before Jiang Wei joins: ${JSON.stringify(jietingSortieState)}`);
}
assertSortieTacticalRoster(jietingSortieState, [
'guan-yu', 'zhang-fei', 'jian-yong', 'mi-zhu', 'sun-qian', 'zhao-yun', 'zhuge-liang', 'ma-liang', 'yi-ji', 'gong-zhi', 'huang-zhong', 'wei-yan', 'pang-tong', 'fa-zheng', 'wu-yi', 'yan-yan', 'li-yan', 'huang-quan', 'ma-chao', 'ma-dai', 'wang-ping'
]);
const jietingPriorityUnits = ['wang-ping', 'ma-liang', 'huang-quan', 'fa-zheng', 'zhao-yun', 'ma-dai'];
for (const unitId of jietingPriorityUnits) {
const currentSortieState = await page.evaluate(() => window.__HEROS_DEBUG__?.camp());
if (!currentSortieState.sortieRoster?.some((unit) => unit.id === unitId && unit.selected)) {
const removable = currentSortieState.sortieRoster?.find(
(unit) => unit.selected && !unit.required && !jietingPriorityUnits.includes(unit.id)
);
if (removable) {
await clickSortieRosterUnit(page, removable.id);
}
await clickSortieRosterUnit(page, unitId);
}
}
const jietingSortieReadyState = await page.evaluate(() => window.__HEROS_DEBUG__?.camp());
if (
!jietingPriorityUnits.every((unitId) =>
jietingSortieReadyState.sortieRoster?.some((unit) => unit.id === unitId && unit.selected)
) ||
!jietingSortieReadyState.sortieRoster?.some((unit) => unit.id === 'zhuge-liang' && unit.selected && unit.required) ||
jietingSortieReadyState.sortieRoster?.some((unit) => unit.id === 'liu-bei') ||
jietingSortieReadyState.sortieRoster?.some((unit) => unit.id === 'jiang-wei') ||
jietingSortieReadyState.sortiePlan?.selectedCount !== 7 ||
jietingSortieReadyState.sortiePlan?.recommendedSelectedCount < 7
) {
throw new Error(`Expected Jieting sortie to deploy Zhuge Liang, Wang Ping, Ma Liang, Huang Quan, Fa Zheng, Zhao Yun, and Ma Dai: ${JSON.stringify(jietingSortieReadyState)}`);
}
await page.screenshot({ path: 'dist/verification-fifty-seventh-sortie.png', fullPage: true });
await page.mouse.click(1068, 646);
await page.waitForFunction(() => {
const activeScenes = window.__HEROS_DEBUG__?.activeScenes() ?? [];
return activeScenes.includes('StoryScene');
});
await page.screenshot({ path: 'dist/verification-fifty-seventh-story.png', fullPage: true });
for (let i = 0; i < 50; i += 1) {
const enteredFiftySeventhBattle = await page.evaluate(() => {
const state = window.__HEROS_DEBUG__?.battle();
return state?.scene === 'BattleScene' && state?.battleId === 'fifty-seventh-battle-jieting-crisis';
});
if (enteredFiftySeventhBattle) {
break;
}
await page.keyboard.press('Space');
await page.waitForTimeout(320);
}
await page.waitForFunction(() => {
const state = window.__HEROS_DEBUG__?.battle();
return state?.scene === 'BattleScene' && state?.battleId === 'fifty-seventh-battle-jieting-crisis' && state?.battleOutcome === null && state?.phase === 'idle';
});
await page.screenshot({ path: 'dist/verification-fifty-seventh-battle.png', fullPage: true });
const fiftySeventhBattleState = await page.evaluate(() => window.__HEROS_DEBUG__?.battle());
const fiftySeventhEnemies = fiftySeventhBattleState.units.filter((unit) => unit.faction === 'enemy');
const fiftySeventhAllies = fiftySeventhBattleState.units.filter((unit) => unit.faction === 'ally');
const fiftySeventhEnemyBehaviors = new Set(fiftySeventhEnemies.map((unit) => unit.ai));
if (
fiftySeventhBattleState.camera?.mapWidth !== 114 ||
fiftySeventhBattleState.camera?.mapHeight !== 96 ||
fiftySeventhBattleState.victoryConditionLabel !== '가정 고지와 물길 확보 및 장합 선봉 저지' ||
!fiftySeventhBattleState.objectives?.some((objective) => objective.id === 'repel-zhang-he' && objective.label === '장합 선봉 저지') ||
!fiftySeventhBattleState.objectives?.some((objective) => objective.id === 'contact-jiang-wei' && objective.label === '강유 접촉로 확보') ||
!fiftySeventhBattleState.objectives?.some((objective) => objective.id === 'wang-ping' && objective.label === '왕평 생존') ||
!fiftySeventhBattleState.objectives?.some((objective) => objective.id === 'jieting-waterline' && objective.label === '가정 물길 확보') ||
fiftySeventhEnemies.length < 42 ||
!fiftySeventhEnemyBehaviors.has('aggressive') ||
!fiftySeventhEnemyBehaviors.has('guard') ||
!fiftySeventhEnemyBehaviors.has('hold') ||
!fiftySeventhEnemies.some((unit) => unit.id === 'northern-third-leader-zhang-he') ||
!fiftySeventhEnemies.some((unit) => unit.id === 'northern-third-officer-jiang-wei') ||
!fiftySeventhEnemies.some((unit) => unit.id === 'northern-third-officer-masu-pressure') ||
!fiftySeventhAllies.some((unit) => unit.id === 'zhuge-liang') ||
!fiftySeventhAllies.some((unit) => unit.id === 'wang-ping') ||
!fiftySeventhAllies.some((unit) => unit.id === 'ma-liang') ||
!fiftySeventhAllies.some((unit) => unit.id === 'huang-quan') ||
!fiftySeventhAllies.some((unit) => unit.id === 'fa-zheng') ||
!fiftySeventhAllies.some((unit) => unit.id === 'zhao-yun') ||
!fiftySeventhAllies.some((unit) => unit.id === 'ma-dai') ||
fiftySeventhAllies.some((unit) => unit.id === 'liu-bei') ||
fiftySeventhAllies.some((unit) => unit.id === 'jiang-wei')
) {
throw new Error(`Expected fifty-seventh battle to use the Jieting map, Wang Ping waterline objectives, Jiang Wei contact hook, and mixed Wei AI: ${JSON.stringify(fiftySeventhBattleState)}`);
}
await page.evaluate(() => window.__HEROS_DEBUG__?.forceBattleOutcome('victory'));
await page.waitForFunction(() => {
const state = window.__HEROS_DEBUG__?.battle();
return state?.battleOutcome === 'victory' && state?.phase === 'resolved' && state?.resultVisible === true;
});
await page.mouse.click(738, 642);
await page.waitForFunction(() => {
const activeScenes = window.__HEROS_DEBUG__?.activeScenes() ?? [];
return activeScenes.includes('CampScene');
});
const fiftySeventhCampState = await page.evaluate(() => window.__HEROS_DEBUG__?.camp());
if (
fiftySeventhCampState?.campBattleId !== 'fifty-seventh-battle-jieting-crisis' ||
fiftySeventhCampState.campaign?.step !== 'fifty-seventh-camp' ||
fiftySeventhCampState.campTitle !== '가정 배치 위기 후 군영' ||
fiftySeventhCampState.availableDialogueIds?.length !== 3 ||
!fiftySeventhCampState.availableDialogueIds.every((id) => id.startsWith('northern-third-')) ||
fiftySeventhCampState.availableVisitIds?.length !== 2 ||
!fiftySeventhCampState.availableVisitIds.every((id) => id.startsWith('northern-third-')) ||
fiftySeventhCampState.rosterCollection?.total < 22 ||
!fiftySeventhCampState.campaign?.roster?.some((unit) => unit.id === 'jiang-wei')
) {
throw new Error(`Expected Jieting aftermath camp to add Jiang Wei and expose Jieting recovery events: ${JSON.stringify(fiftySeventhCampState)}`);
}
await page.screenshot({ path: 'dist/verification-fifty-seventh-camp.png', fullPage: true });
await page.mouse.click(966, 38);
await page.waitForTimeout(180);
const postFiftySeventhProgressState = await page.evaluate(() => window.__HEROS_DEBUG__?.camp());
if (
postFiftySeventhProgressState?.activeTab !== 'progress' ||
postFiftySeventhProgressState.campaignProgress?.completedKnown !== 57 ||
postFiftySeventhProgressState.campaignProgress?.totalKnown !== 57 ||
postFiftySeventhProgressState.campaignProgress?.activeChapter?.id !== 'northern-campaign' ||
postFiftySeventhProgressState.campaignProgress?.latestBattleTitle !== '가정 배치 위기'
) {
throw new Error(`Expected post-fifty-seventh progress tab to complete the Jieting crisis and count Jiang Wei's join point: ${JSON.stringify(postFiftySeventhProgressState?.campaignProgress)}`);
}
await page.screenshot({ path: 'dist/verification-post-fifty-seventh-progress.png', fullPage: true });
await page.evaluate(() => {
const game = window.__HEROS_GAME__;
game?.scene.stop('CampScene');
@@ -8005,11 +8160,11 @@ try {
activeScenes: window.__HEROS_DEBUG__?.activeScenes() ?? [],
camp: window.__HEROS_DEBUG__?.camp?.() ?? null
}));
if (!titleContinueState.activeScenes.includes('CampScene') || titleContinueState.camp?.campaign?.step !== 'fifty-sixth-camp') {
throw new Error(`Expected title continue to reopen the Tianshui advance camp: ${JSON.stringify(titleContinueState)}`);
if (!titleContinueState.activeScenes.includes('CampScene') || titleContinueState.camp?.campaign?.step !== 'fifty-seventh-camp') {
throw new Error(`Expected title continue to reopen the Jieting aftermath camp: ${JSON.stringify(titleContinueState)}`);
}
console.log(`Verified title-to-Tianshui-advance flow, recruited officer sortie selection, Ma Liang, Yi Ji, Gong Zhi, Huang Zhong, Wei Yan, Pang Tong, Fa Zheng, Wu Yi, Yan Yan, Li Yan, Huang Quan, Ma Chao, Ma Dai, Wang Ping joins, Luofeng, Luo main gate, Mianzhu, Chengdu surrender, Jiameng, Yangping, Dingjun, Hanzhong decisive battle, King of Hanzhong council, Shu-Han foundation state, Jing Province defense vanguard, Fan Castle vanguard, Han River flood, Fan siege, Jing rear crisis, Gongan collapse, Maicheng isolation, Yiling vanguard, Yiling fire attack, Baidi entrustment, Nanzhong stabilization, Meng Huo pacification, second capture, third capture, fourth capture, fifth capture, sixth capture, final capture, northern campaign preparation, Qishan road first northern expedition, and Tianshui advance state at ${targetUrl}`);
console.log(`Verified title-to-Jieting-crisis flow, recruited officer sortie selection, Ma Liang, Yi Ji, Gong Zhi, Huang Zhong, Wei Yan, Pang Tong, Fa Zheng, Wu Yi, Yan Yan, Li Yan, Huang Quan, Ma Chao, Ma Dai, Wang Ping joins, Luofeng, Luo main gate, Mianzhu, Chengdu surrender, Jiameng, Yangping, Dingjun, Hanzhong decisive battle, King of Hanzhong council, Shu-Han foundation state, Jing Province defense vanguard, Fan Castle vanguard, Han River flood, Fan siege, Jing rear crisis, Gongan collapse, Maicheng isolation, Yiling vanguard, Yiling fire attack, Baidi entrustment, Nanzhong stabilization, Meng Huo pacification, second capture, third capture, fourth capture, fifth capture, sixth capture, final capture, northern campaign preparation, Qishan road first northern expedition, Tianshui advance, Jieting crisis, and Jiang Wei joining state at ${targetUrl}`);
} finally {
await browser?.close();
if (serverProcess && !serverProcess.killed) {