From f32e0fc61dc4d9a804c7888b6caf2cb4a16606b3 Mon Sep 17 00:00:00 2001 From: Wickedness Date: Sat, 27 Jun 2026 15:06:08 +0900 Subject: [PATCH] QA and tune southern campaign battles --- scripts/qa-representative-battles.mjs | 86 +++- scripts/verify-flow.mjs | 29 +- src/game/data/scenario.ts | 544 +++++++++++++------------- src/game/scenes/BattleScene.ts | 8 +- src/game/scenes/CampScene.ts | 12 +- 5 files changed, 383 insertions(+), 296 deletions(-) diff --git a/scripts/qa-representative-battles.mjs b/scripts/qa-representative-battles.mjs index 1a1fe7c..70b047a 100644 --- a/scripts/qa-representative-battles.mjs +++ b/scripts/qa-representative-battles.mjs @@ -13,6 +13,16 @@ const sunQianSortie = ['liu-bei', 'guan-yu', 'zhang-fei', 'jian-yong', 'mi-zhu', const liuBiaoSortie = ['liu-bei', 'guan-yu', 'zhang-fei', 'zhao-yun', 'sun-qian', 'mi-zhu']; const zhugeFirstSortie = ['liu-bei', 'zhuge-liang', 'zhao-yun', 'guan-yu', 'zhang-fei', 'sun-qian']; const envoySortie = ['liu-bei', 'zhuge-liang', 'sun-qian', 'zhao-yun', 'guan-yu', 'zhang-fei']; +const redCliffVanguardSortie = ['liu-bei', 'zhuge-liang', 'zhao-yun', 'guan-yu', 'zhang-fei', 'sun-qian']; +const redCliffFireSortie = ['liu-bei', 'zhuge-liang', 'guan-yu', 'zhao-yun', 'zhang-fei', 'mi-zhu']; +const jingSouthSortie = ['liu-bei', 'zhuge-liang', 'guan-yu', 'zhao-yun', 'sun-qian', 'mi-zhu']; +const guiyangSortie = ['liu-bei', 'ma-liang', 'zhuge-liang', 'zhao-yun', 'guan-yu', 'sun-qian']; +const wulingSortie = ['liu-bei', 'ma-liang', 'zhuge-liang', 'zhao-yun', 'zhang-fei', 'mi-zhu']; +const changshaSortie = ['liu-bei', 'gong-zhi', 'yi-ji', 'zhuge-liang', 'guan-yu', 'zhao-yun']; +const yizhouReliefSortie = ['liu-bei', 'zhuge-liang', 'huang-zhong', 'wei-yan', 'zhao-yun', 'mi-zhu']; +const fuPassSortie = ['liu-bei', 'pang-tong', 'zhuge-liang', 'wei-yan', 'huang-zhong', 'zhao-yun']; +const luoOuterSortie = ['liu-bei', 'fa-zheng', 'zhuge-liang', 'huang-zhong', 'zhao-yun', 'mi-zhu']; +const luofengSortie = ['liu-bei', 'pang-tong', 'wu-yi', 'fa-zheng', 'zhao-yun', 'huang-zhong']; const earlyCampaignBattles = [ { no: 1, id: 'first-battle-zhuo-commandery', selected: [], targets: ['rebel-leader'], protected: ['liu-bei'] }, @@ -154,6 +164,79 @@ const refugeCampaignBattles = [ } ]; +const southernCampaignBattles = [ + { + no: 21, + id: 'twenty-first-battle-red-cliffs-vanguard', + selected: redCliffVanguardSortie, + targets: ['redcliff-vanguard-leader-cai-mao'], + protected: ['liu-bei', 'zhuge-liang'] + }, + { + no: 22, + id: 'twenty-second-battle-red-cliffs-fire', + selected: redCliffFireSortie, + targets: ['redcliff-fire-leader-cao-cao'], + protected: ['liu-bei', 'zhuge-liang'] + }, + { + no: 23, + id: 'twenty-third-battle-jingzhou-south-entry', + selected: jingSouthSortie, + targets: ['jing-south-leader-xing-daorong'], + protected: ['liu-bei', 'zhuge-liang'] + }, + { + no: 24, + id: 'twenty-fourth-battle-guiyang-persuasion', + selected: guiyangSortie, + targets: ['guiyang-leader-zhao-fan'], + protected: ['liu-bei', 'zhuge-liang'] + }, + { + no: 25, + id: 'twenty-fifth-battle-wuling-mountain-road', + selected: wulingSortie, + targets: ['wuling-leader-jin-xuan'], + protected: ['liu-bei', 'zhuge-liang'] + }, + { + no: 26, + id: 'twenty-sixth-battle-changsha-veteran', + selected: changshaSortie, + targets: ['changsha-leader-han-xuan'], + protected: ['liu-bei', 'zhuge-liang'] + }, + { + no: 27, + id: 'twenty-seventh-battle-yizhou-relief-road', + selected: yizhouReliefSortie, + targets: ['yizhou-leader-yang-huai'], + protected: ['liu-bei', 'zhuge-liang'] + }, + { + no: 28, + id: 'twenty-eighth-battle-fu-pass-entry', + selected: fuPassSortie, + targets: ['fupass-leader-gao-pei'], + protected: ['liu-bei', 'zhuge-liang'] + }, + { + no: 29, + id: 'twenty-ninth-battle-luo-outer-wall', + selected: luoOuterSortie, + targets: ['luo-leader-zhang-ren'], + protected: ['liu-bei', 'zhuge-liang'] + }, + { + no: 30, + id: 'thirtieth-battle-luofeng-ambush', + selected: luofengSortie, + targets: ['luofeng-leader-zhang-ren'], + protected: ['liu-bei', 'pang-tong'] + } +]; + const allRepresentativeBattles = [ { no: 1, id: 'first-battle-zhuo-commandery', selected: [], targets: ['rebel-leader'], protected: ['liu-bei'] }, { @@ -217,7 +300,8 @@ const allRepresentativeBattles = [ const qaBattleSets = { representative: allRepresentativeBattles, early: earlyCampaignBattles, - refuge: refugeCampaignBattles + refuge: refugeCampaignBattles, + southern: southernCampaignBattles }; const qaSetName = process.env.QA_SET ?? 'representative'; const qaBattleSet = qaBattleSets[qaSetName]; diff --git a/scripts/verify-flow.mjs b/scripts/verify-flow.mjs index 1f0d67f..525804f 100644 --- a/scripts/verify-flow.mjs +++ b/scripts/verify-flow.mjs @@ -996,7 +996,7 @@ try { await waitForStoryReady(page); await page.screenshot({ path: 'dist/verification-xuzhou-entrust-story.png', fullPage: true }); - for (let i = 0; i < 10; i += 1) { + for (let i = 0; i < 50; i += 1) { const enteredEighthBattle = await page.evaluate(() => { const state = window.__HEROS_DEBUG__?.battle(); return state?.scene === 'BattleScene' && state?.battleId === 'eighth-battle-xiaopei-supply-road'; @@ -1076,7 +1076,7 @@ try { await waitForStoryReady(page); await page.screenshot({ path: 'dist/verification-lubu-refuge-story.png', fullPage: true }); - for (let i = 0; i < 10; i += 1) { + for (let i = 0; i < 50; i += 1) { const enteredNinthBattle = await page.evaluate(() => { const state = window.__HEROS_DEBUG__?.battle(); return state?.scene === 'BattleScene' && state?.battleId === 'ninth-battle-xuzhou-gate-night-raid'; @@ -2819,7 +2819,8 @@ try { !wulingSortieState?.sortieVisible || !wulingSortieState.sortiePlan?.objectiveLine?.includes('무릉 산길 확보전') || !wulingSortieState.sortieRoster?.some((unit) => unit.id === 'ma-liang' && unit.recruited && unit.recommended) || - !wulingSortieState.sortieRoster?.some((unit) => unit.id === 'yi-ji' && unit.recruited && unit.recommended) || + !wulingSortieState.sortieRoster?.some((unit) => unit.id === 'yi-ji' && unit.recruited && !unit.recommended) || + !wulingSortieState.sortieRoster?.some((unit) => unit.id === 'mi-zhu' && unit.recruited && unit.recommended) || !wulingSortieState.sortieRoster?.some((unit) => unit.id === 'zhuge-liang' && unit.recruited && unit.recommended) || !wulingSortieState.sortieRoster?.some((unit) => unit.id === 'zhao-yun' && unit.recruited && unit.recommended) || !wulingSortieState.sortieRoster?.some((unit) => unit.id === 'zhang-fei' && unit.recommended) || @@ -2827,7 +2828,7 @@ try { wulingSortieState.sortieRoster?.length < 10 || wulingSortieState.sortiePlan?.maxCount !== 6 ) { - throw new Error(`Expected twenty-fourth camp sortie prep to target Wuling with Yi Ji recommended and Gong Zhi absent before victory: ${JSON.stringify(wulingSortieState)}`); + throw new Error(`Expected twenty-fourth camp sortie prep to target Wuling with Mi Zhu recommended, Yi Ji available, and Gong Zhi absent before victory: ${JSON.stringify(wulingSortieState)}`); } assertSortieTacticalRoster(wulingSortieState, [ 'liu-bei', @@ -2842,7 +2843,7 @@ try { 'yi-ji' ]); - const wulingPriorityUnits = ['ma-liang', 'yi-ji', 'zhuge-liang', 'zhao-yun', 'zhang-fei']; + const wulingPriorityUnits = ['ma-liang', 'zhuge-liang', 'zhao-yun', 'zhang-fei', 'mi-zhu']; for (const unitId of wulingPriorityUnits) { const currentSortieState = await page.evaluate(() => window.__HEROS_DEBUG__?.camp()); if (!currentSortieState.sortieRoster?.some((unit) => unit.id === unitId && unit.selected)) { @@ -2864,7 +2865,7 @@ try { wulingSortieReadyState.sortiePlan?.selectedCount !== 6 || wulingSortieReadyState.sortiePlan?.recommendedSelectedCount < 6 ) { - throw new Error(`Expected Wuling sortie to deploy Ma Liang, Yi Ji, and the mountain-road priority officers while preserving six-officer pressure: ${JSON.stringify(wulingSortieReadyState)}`); + throw new Error(`Expected Wuling sortie to deploy Ma Liang, Mi Zhu, and the mountain-road priority officers while preserving six-officer pressure: ${JSON.stringify(wulingSortieReadyState)}`); } await page.screenshot({ path: 'dist/verification-wuling-sortie.png', fullPage: true }); @@ -2903,7 +2904,8 @@ try { !twentyFifthEnemyBehaviors.has('hold') || !twentyFifthEnemies.some((unit) => unit.id === 'wuling-leader-jin-xuan') || !twentyFifthAllies.some((unit) => unit.id === 'ma-liang') || - !twentyFifthAllies.some((unit) => unit.id === 'yi-ji') || + !twentyFifthAllies.some((unit) => unit.id === 'mi-zhu') || + !twentyFifthAllies.some((unit) => unit.id === 'zhang-fei') || !twentyFifthAllies.some((unit) => unit.id === 'zhao-yun') || twentyFifthAllies.some((unit) => unit.id === 'gong-zhi') ) { @@ -3395,7 +3397,8 @@ try { !luoSortieState?.sortieVisible || !luoSortieState.sortiePlan?.objectiveLine?.includes('낙성 외곽전') || !luoSortieState.sortieRoster?.some((unit) => unit.id === 'fa-zheng' && unit.recruited && unit.recommended) || - !luoSortieState.sortieRoster?.some((unit) => unit.id === 'pang-tong' && unit.recruited && unit.recommended) || + !luoSortieState.sortieRoster?.some((unit) => unit.id === 'pang-tong' && unit.recruited && !unit.recommended) || + !luoSortieState.sortieRoster?.some((unit) => unit.id === 'mi-zhu' && unit.recruited && unit.recommended) || !luoSortieState.sortieRoster?.some((unit) => unit.id === 'zhuge-liang' && unit.recruited && unit.recommended) || !luoSortieState.sortieRoster?.some((unit) => unit.id === 'huang-zhong' && unit.recruited && unit.recommended) || !luoSortieState.sortieRoster?.some((unit) => unit.id === 'zhao-yun' && unit.recruited && unit.recommended) || @@ -3423,7 +3426,7 @@ try { 'fa-zheng' ]); - const luoPriorityUnits = ['fa-zheng', 'pang-tong', 'zhuge-liang', 'huang-zhong', 'zhao-yun']; + const luoPriorityUnits = ['fa-zheng', 'mi-zhu', 'zhuge-liang', 'huang-zhong', 'zhao-yun']; for (const unitId of luoPriorityUnits) { const currentSortieState = await page.evaluate(() => window.__HEROS_DEBUG__?.camp()); if (!currentSortieState.sortieRoster?.some((unit) => unit.id === unitId && unit.selected)) { @@ -3445,7 +3448,7 @@ try { luoSortieReadyState.sortiePlan?.selectedCount !== 6 || luoSortieReadyState.sortiePlan?.recommendedSelectedCount < 6 ) { - throw new Error(`Expected Luo Castle sortie to deploy Fa Zheng, Pang Tong, Zhuge Liang, Huang Zhong, and Zhao Yun while preserving six-officer pressure: ${JSON.stringify(luoSortieReadyState)}`); + throw new Error(`Expected Luo Castle sortie to deploy Fa Zheng, Mi Zhu, Zhuge Liang, Huang Zhong, and Zhao Yun while preserving six-officer pressure: ${JSON.stringify(luoSortieReadyState)}`); } await page.screenshot({ path: 'dist/verification-luo-sortie.png', fullPage: true }); @@ -3485,14 +3488,14 @@ try { !twentyNinthEnemies.some((unit) => unit.id === 'luo-leader-zhang-ren') || !twentyNinthEnemies.some((unit) => unit.id === 'luo-officer-wu-yi') || !twentyNinthAllies.some((unit) => unit.id === 'fa-zheng') || - !twentyNinthAllies.some((unit) => unit.id === 'pang-tong') || + !twentyNinthAllies.some((unit) => unit.id === 'mi-zhu') || !twentyNinthAllies.some((unit) => unit.id === 'zhuge-liang') || !unitUsesTexture(twentyNinthBattleState, 'luo-officer-wu-yi', 'unit-wu-yi') || !unitUsesTexture(twentyNinthBattleState, 'fa-zheng', 'unit-fa-zheng') || - !unitUsesTexture(twentyNinthBattleState, 'pang-tong', 'unit-pang-tong') || + twentyNinthAllies.some((unit) => unit.id === 'pang-tong') || twentyNinthAllies.some((unit) => unit.id === 'wu-yi') ) { - throw new Error(`Expected twenty-ninth battle to use Luo Castle map, Zhang Ren objective, Wu Yi as enemy officer, selected allied officers, mixed AI, and no Wu Yi before victory: ${JSON.stringify(twentyNinthBattleState)}`); + throw new Error(`Expected twenty-ninth battle to use Luo Castle map, Zhang Ren objective, Wu Yi as enemy officer, Fa Zheng and Mi Zhu selected, mixed AI, and no Pang Tong or Wu Yi before victory: ${JSON.stringify(twentyNinthBattleState)}`); } await page.evaluate(() => window.__HEROS_DEBUG__?.forceBattleOutcome('victory')); diff --git a/src/game/data/scenario.ts b/src/game/data/scenario.ts index d678aee..5b9982d 100644 --- a/src/game/data/scenario.ts +++ b/src/game/data/scenario.ts @@ -11356,9 +11356,9 @@ export const twentyFirstBattleUnits: UnitData[] = [ classKey: 'archer', level: 26, exp: 38, - hp: 72, - maxHp: 72, - attack: 31, + hp: 54, + maxHp: 54, + attack: 25, move: 3, stats: { might: 102, intelligence: 92, leadership: 90, agility: 100, luck: 74 }, equipment: { @@ -11377,9 +11377,9 @@ export const twentyFirstBattleUnits: UnitData[] = [ classKey: 'archer', level: 26, exp: 38, - hp: 72, - maxHp: 72, - attack: 31, + hp: 54, + maxHp: 54, + attack: 25, move: 3, stats: { might: 102, intelligence: 92, leadership: 90, agility: 100, luck: 74 }, equipment: { @@ -11398,9 +11398,9 @@ export const twentyFirstBattleUnits: UnitData[] = [ classKey: 'archer', level: 27, exp: 40, - hp: 74, - maxHp: 74, - attack: 32, + hp: 56, + maxHp: 56, + attack: 25, move: 3, stats: { might: 104, intelligence: 94, leadership: 92, agility: 102, luck: 74 }, equipment: { @@ -11419,9 +11419,9 @@ export const twentyFirstBattleUnits: UnitData[] = [ classKey: 'cavalry', level: 27, exp: 40, - hp: 102, - maxHp: 102, - attack: 34, + hp: 82, + maxHp: 82, + attack: 27, move: 5, stats: { might: 120, intelligence: 78, leadership: 96, agility: 114, luck: 74 }, equipment: { @@ -11440,9 +11440,9 @@ export const twentyFirstBattleUnits: UnitData[] = [ classKey: 'cavalry', level: 27, exp: 40, - hp: 102, - maxHp: 102, - attack: 34, + hp: 82, + maxHp: 82, + attack: 27, move: 5, stats: { might: 120, intelligence: 78, leadership: 96, agility: 114, luck: 74 }, equipment: { @@ -11461,9 +11461,9 @@ export const twentyFirstBattleUnits: UnitData[] = [ classKey: 'cavalry', level: 28, exp: 42, - hp: 106, - maxHp: 106, - attack: 35, + hp: 84, + maxHp: 84, + attack: 28, move: 5, stats: { might: 122, intelligence: 80, leadership: 98, agility: 116, luck: 75 }, equipment: { @@ -11482,9 +11482,9 @@ export const twentyFirstBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 28, exp: 42, - hp: 108, - maxHp: 108, - attack: 34, + hp: 86, + maxHp: 86, + attack: 28, move: 3, stats: { might: 122, intelligence: 84, leadership: 106, agility: 90, luck: 75 }, equipment: { @@ -11503,9 +11503,9 @@ export const twentyFirstBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 28, exp: 42, - hp: 108, - maxHp: 108, - attack: 34, + hp: 86, + maxHp: 86, + attack: 28, move: 3, stats: { might: 122, intelligence: 84, leadership: 106, agility: 90, luck: 75 }, equipment: { @@ -11524,9 +11524,9 @@ export const twentyFirstBattleUnits: UnitData[] = [ classKey: 'archer', level: 27, exp: 40, - hp: 76, - maxHp: 76, - attack: 31, + hp: 56, + maxHp: 56, + attack: 25, move: 3, stats: { might: 80, intelligence: 100, leadership: 94, agility: 88, luck: 76 }, equipment: { @@ -11545,9 +11545,9 @@ export const twentyFirstBattleUnits: UnitData[] = [ classKey: 'archer', level: 27, exp: 40, - hp: 76, - maxHp: 76, - attack: 31, + hp: 56, + maxHp: 56, + attack: 25, move: 3, stats: { might: 80, intelligence: 100, leadership: 94, agility: 88, luck: 76 }, equipment: { @@ -11566,9 +11566,9 @@ export const twentyFirstBattleUnits: UnitData[] = [ classKey: 'rebelLeader', level: 29, exp: 46, - hp: 140, - maxHp: 140, - attack: 36, + hp: 112, + maxHp: 124, + attack: 29, move: 4, stats: { might: 124, intelligence: 88, leadership: 116, agility: 92, luck: 78 }, equipment: { @@ -11608,9 +11608,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'bandit', level: 28, exp: 42, - hp: 78, - maxHp: 78, - attack: 31, + hp: 66, + maxHp: 66, + attack: 27, move: 4, stats: { might: 110, intelligence: 82, leadership: 88, agility: 108, luck: 74 }, equipment: { @@ -11629,9 +11629,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'bandit', level: 28, exp: 42, - hp: 78, - maxHp: 78, - attack: 31, + hp: 66, + maxHp: 66, + attack: 27, move: 4, stats: { might: 110, intelligence: 82, leadership: 88, agility: 108, luck: 74 }, equipment: { @@ -11650,9 +11650,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 28, exp: 44, - hp: 102, - maxHp: 102, - attack: 33, + hp: 84, + maxHp: 84, + attack: 27, move: 3, stats: { might: 120, intelligence: 82, leadership: 102, agility: 90, luck: 74 }, equipment: { @@ -11671,9 +11671,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 28, exp: 44, - hp: 102, - maxHp: 102, - attack: 33, + hp: 84, + maxHp: 84, + attack: 27, move: 3, stats: { might: 120, intelligence: 82, leadership: 102, agility: 90, luck: 74 }, equipment: { @@ -11692,9 +11692,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 29, exp: 46, - hp: 106, - maxHp: 106, - attack: 34, + hp: 82, + maxHp: 82, + attack: 27, move: 3, stats: { might: 122, intelligence: 84, leadership: 104, agility: 92, luck: 75 }, equipment: { @@ -11703,7 +11703,7 @@ export const twentySecondBattleUnits: UnitData[] = [ accessory: { itemId: 'war-manual', level: 1, exp: 0 } }, x: 30, - y: 14 + y: 15 }, { id: 'redcliff-fire-marine-d', @@ -11713,9 +11713,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 29, exp: 46, - hp: 106, - maxHp: 106, - attack: 34, + hp: 82, + maxHp: 82, + attack: 27, move: 3, stats: { might: 122, intelligence: 84, leadership: 104, agility: 92, luck: 75 }, equipment: { @@ -11734,9 +11734,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'archer', level: 28, exp: 42, - hp: 76, - maxHp: 76, - attack: 33, + hp: 52, + maxHp: 52, + attack: 24, move: 3, stats: { might: 106, intelligence: 96, leadership: 92, agility: 104, luck: 76 }, equipment: { @@ -11744,8 +11744,8 @@ export const twentySecondBattleUnits: UnitData[] = [ armor: { itemId: 'cloth-armor', level: 4, exp: 4 }, accessory: { itemId: 'wind-quiver', level: 1, exp: 0 } }, - x: 22, - y: 15 + x: 24, + y: 17 }, { id: 'redcliff-fire-archer-b', @@ -11755,9 +11755,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'archer', level: 28, exp: 42, - hp: 76, - maxHp: 76, - attack: 33, + hp: 52, + maxHp: 52, + attack: 24, move: 3, stats: { might: 106, intelligence: 96, leadership: 92, agility: 104, luck: 76 }, equipment: { @@ -11776,9 +11776,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'archer', level: 29, exp: 46, - hp: 78, - maxHp: 78, - attack: 34, + hp: 54, + maxHp: 54, + attack: 24, move: 3, stats: { might: 108, intelligence: 98, leadership: 94, agility: 106, luck: 76 }, equipment: { @@ -11797,9 +11797,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'archer', level: 29, exp: 46, - hp: 78, - maxHp: 78, - attack: 34, + hp: 54, + maxHp: 54, + attack: 24, move: 3, stats: { might: 108, intelligence: 98, leadership: 94, agility: 106, luck: 76 }, equipment: { @@ -11818,9 +11818,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'cavalry', level: 29, exp: 46, - hp: 110, - maxHp: 110, - attack: 36, + hp: 84, + maxHp: 84, + attack: 29, move: 5, stats: { might: 126, intelligence: 82, leadership: 100, agility: 118, luck: 76 }, equipment: { @@ -11839,9 +11839,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'cavalry', level: 29, exp: 46, - hp: 110, - maxHp: 110, - attack: 36, + hp: 80, + maxHp: 80, + attack: 28, move: 5, stats: { might: 126, intelligence: 82, leadership: 100, agility: 118, luck: 76 }, equipment: { @@ -11849,8 +11849,8 @@ export const twentySecondBattleUnits: UnitData[] = [ armor: { itemId: 'lamellar-armor', level: 4, exp: 12 }, accessory: { itemId: 'bravery-token', level: 1, exp: 0 } }, - x: 27, - y: 24 + x: 28, + y: 20 }, { id: 'redcliff-fire-cavalry-c', @@ -11860,9 +11860,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'cavalry', level: 30, exp: 48, - hp: 114, - maxHp: 114, - attack: 37, + hp: 82, + maxHp: 82, + attack: 28, move: 5, stats: { might: 128, intelligence: 84, leadership: 102, agility: 120, luck: 77 }, equipment: { @@ -11881,9 +11881,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 30, exp: 50, - hp: 116, - maxHp: 116, - attack: 36, + hp: 82, + maxHp: 82, + attack: 28, move: 3, stats: { might: 128, intelligence: 86, leadership: 110, agility: 94, luck: 78 }, equipment: { @@ -11902,9 +11902,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 30, exp: 50, - hp: 116, - maxHp: 116, - attack: 36, + hp: 82, + maxHp: 82, + attack: 28, move: 3, stats: { might: 128, intelligence: 86, leadership: 110, agility: 94, luck: 78 }, equipment: { @@ -11923,9 +11923,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'archer', level: 29, exp: 48, - hp: 82, - maxHp: 82, - attack: 33, + hp: 54, + maxHp: 54, + attack: 24, move: 3, stats: { might: 84, intelligence: 104, leadership: 98, agility: 90, luck: 78 }, equipment: { @@ -11944,9 +11944,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'archer', level: 29, exp: 48, - hp: 82, - maxHp: 82, - attack: 33, + hp: 54, + maxHp: 54, + attack: 24, move: 3, stats: { might: 84, intelligence: 104, leadership: 98, agility: 90, luck: 78 }, equipment: { @@ -11965,9 +11965,9 @@ export const twentySecondBattleUnits: UnitData[] = [ classKey: 'rebelLeader', level: 32, exp: 54, - hp: 156, - maxHp: 156, - attack: 39, + hp: 110, + maxHp: 126, + attack: 30, move: 4, stats: { might: 130, intelligence: 118, leadership: 132, agility: 96, luck: 82 }, equipment: { @@ -12769,9 +12769,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'bandit', level: 34, exp: 52, - hp: 92, - maxHp: 92, - attack: 36, + hp: 40, + maxHp: 40, + attack: 14, move: 4, stats: { might: 120, intelligence: 88, leadership: 96, agility: 116, luck: 80 }, equipment: { @@ -12790,9 +12790,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'bandit', level: 34, exp: 52, - hp: 92, - maxHp: 92, - attack: 36, + hp: 40, + maxHp: 40, + attack: 14, move: 4, stats: { might: 120, intelligence: 88, leadership: 96, agility: 116, luck: 80 }, equipment: { @@ -12811,9 +12811,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'bandit', level: 35, exp: 54, - hp: 96, - maxHp: 96, - attack: 37, + hp: 44, + maxHp: 44, + attack: 15, move: 4, stats: { might: 122, intelligence: 88, leadership: 98, agility: 118, luck: 80 }, equipment: { @@ -12832,9 +12832,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'bandit', level: 34, exp: 52, - hp: 102, - maxHp: 102, - attack: 37, + hp: 48, + maxHp: 48, + attack: 16, move: 4, stats: { might: 126, intelligence: 80, leadership: 92, agility: 112, luck: 78 }, equipment: { @@ -12853,9 +12853,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'bandit', level: 34, exp: 52, - hp: 102, - maxHp: 102, - attack: 37, + hp: 48, + maxHp: 48, + attack: 16, move: 4, stats: { might: 126, intelligence: 80, leadership: 92, agility: 112, luck: 78 }, equipment: { @@ -12874,9 +12874,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'bandit', level: 35, exp: 54, - hp: 106, - maxHp: 106, - attack: 38, + hp: 50, + maxHp: 50, + attack: 17, move: 4, stats: { might: 128, intelligence: 82, leadership: 94, agility: 114, luck: 78 }, equipment: { @@ -12895,9 +12895,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 35, exp: 54, - hp: 120, - maxHp: 120, - attack: 39, + hp: 70, + maxHp: 70, + attack: 24, move: 3, stats: { might: 132, intelligence: 88, leadership: 112, agility: 96, luck: 80 }, equipment: { @@ -12916,9 +12916,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 35, exp: 54, - hp: 120, - maxHp: 120, - attack: 39, + hp: 70, + maxHp: 70, + attack: 24, move: 3, stats: { might: 132, intelligence: 88, leadership: 112, agility: 96, luck: 80 }, equipment: { @@ -12937,9 +12937,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 36, exp: 56, - hp: 126, - maxHp: 126, - attack: 40, + hp: 70, + maxHp: 70, + attack: 24, move: 3, stats: { might: 134, intelligence: 88, leadership: 114, agility: 96, luck: 80 }, equipment: { @@ -12958,9 +12958,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 36, exp: 56, - hp: 126, - maxHp: 126, - attack: 40, + hp: 70, + maxHp: 70, + attack: 24, move: 3, stats: { might: 134, intelligence: 88, leadership: 114, agility: 96, luck: 80 }, equipment: { @@ -12979,9 +12979,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'archer', level: 35, exp: 54, - hp: 90, - maxHp: 90, - attack: 36, + hp: 50, + maxHp: 50, + attack: 20, move: 3, stats: { might: 92, intelligence: 96, leadership: 100, agility: 108, luck: 82 }, equipment: { @@ -13000,9 +13000,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'archer', level: 35, exp: 54, - hp: 90, - maxHp: 90, - attack: 36, + hp: 50, + maxHp: 50, + attack: 20, move: 3, stats: { might: 92, intelligence: 96, leadership: 100, agility: 108, luck: 82 }, equipment: { @@ -13021,9 +13021,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'archer', level: 36, exp: 56, - hp: 94, - maxHp: 94, - attack: 37, + hp: 50, + maxHp: 50, + attack: 22, move: 3, stats: { might: 94, intelligence: 98, leadership: 102, agility: 110, luck: 82 }, equipment: { @@ -13042,9 +13042,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'cavalry', level: 36, exp: 56, - hp: 130, - maxHp: 130, - attack: 41, + hp: 52, + maxHp: 52, + attack: 18, move: 5, stats: { might: 136, intelligence: 88, leadership: 112, agility: 116, luck: 82 }, equipment: { @@ -13063,9 +13063,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'cavalry', level: 36, exp: 56, - hp: 130, - maxHp: 130, - attack: 41, + hp: 60, + maxHp: 60, + attack: 22, move: 5, stats: { might: 136, intelligence: 88, leadership: 112, agility: 116, luck: 82 }, equipment: { @@ -13084,9 +13084,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 37, exp: 58, - hp: 132, - maxHp: 132, - attack: 42, + hp: 55, + maxHp: 55, + attack: 24, move: 3, stats: { might: 138, intelligence: 90, leadership: 118, agility: 98, luck: 82 }, equipment: { @@ -13105,9 +13105,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 37, exp: 58, - hp: 132, - maxHp: 132, - attack: 42, + hp: 55, + maxHp: 55, + attack: 24, move: 3, stats: { might: 138, intelligence: 90, leadership: 118, agility: 98, luck: 82 }, equipment: { @@ -13126,9 +13126,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'archer', level: 36, exp: 56, - hp: 94, - maxHp: 94, - attack: 37, + hp: 40, + maxHp: 40, + attack: 20, move: 3, stats: { might: 88, intelligence: 112, leadership: 104, agility: 94, luck: 84 }, equipment: { @@ -13147,9 +13147,9 @@ export const twentyFifthBattleUnits: UnitData[] = [ classKey: 'rebelLeader', level: 38, exp: 62, - hp: 184, - maxHp: 184, - attack: 44, + hp: 70, + maxHp: 120, + attack: 26, move: 4, stats: { might: 140, intelligence: 98, leadership: 126, agility: 100, luck: 84 }, equipment: { @@ -13426,9 +13426,9 @@ export const twentySixthBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 40, exp: 62, - hp: 144, - maxHp: 144, - attack: 45, + hp: 132, + maxHp: 132, + attack: 41, move: 3, stats: { might: 144, intelligence: 92, leadership: 122, agility: 100, luck: 84 }, equipment: { @@ -13447,9 +13447,9 @@ export const twentySixthBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 40, exp: 62, - hp: 144, - maxHp: 144, - attack: 45, + hp: 132, + maxHp: 132, + attack: 41, move: 3, stats: { might: 144, intelligence: 92, leadership: 122, agility: 100, luck: 84 }, equipment: { @@ -13468,9 +13468,9 @@ export const twentySixthBattleUnits: UnitData[] = [ classKey: 'archer', level: 39, exp: 60, - hp: 102, - maxHp: 102, - attack: 40, + hp: 88, + maxHp: 88, + attack: 36, move: 3, stats: { might: 90, intelligence: 116, leadership: 108, agility: 96, luck: 84 }, equipment: { @@ -13489,9 +13489,9 @@ export const twentySixthBattleUnits: UnitData[] = [ classKey: 'archer', level: 39, exp: 60, - hp: 102, - maxHp: 102, - attack: 40, + hp: 88, + maxHp: 88, + attack: 36, move: 3, stats: { might: 90, intelligence: 116, leadership: 108, agility: 96, luck: 84 }, equipment: { @@ -13510,9 +13510,9 @@ export const twentySixthBattleUnits: UnitData[] = [ classKey: 'archer', level: 41, exp: 66, - hp: 156, - maxHp: 156, - attack: 48, + hp: 140, + maxHp: 150, + attack: 43, move: 4, stats: { might: 150, intelligence: 96, leadership: 128, agility: 108, luck: 88 }, equipment: { @@ -13531,9 +13531,9 @@ export const twentySixthBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 40, exp: 64, - hp: 152, - maxHp: 152, - attack: 47, + hp: 140, + maxHp: 148, + attack: 43, move: 4, stats: { might: 148, intelligence: 82, leadership: 120, agility: 112, luck: 80 }, equipment: { @@ -13552,9 +13552,9 @@ export const twentySixthBattleUnits: UnitData[] = [ classKey: 'rebelLeader', level: 41, exp: 66, - hp: 190, - maxHp: 190, - attack: 46, + hp: 174, + maxHp: 186, + attack: 42, move: 4, stats: { might: 138, intelligence: 104, leadership: 130, agility: 100, luck: 84 }, equipment: { @@ -13687,9 +13687,9 @@ export const twentySeventhBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 43, exp: 66, - hp: 148, - maxHp: 148, - attack: 46, + hp: 132, + maxHp: 132, + attack: 42, move: 3, stats: { might: 146, intelligence: 94, leadership: 124, agility: 102, luck: 84 }, equipment: { @@ -13708,9 +13708,9 @@ export const twentySeventhBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 43, exp: 66, - hp: 148, - maxHp: 148, - attack: 46, + hp: 132, + maxHp: 132, + attack: 42, move: 3, stats: { might: 146, intelligence: 94, leadership: 124, agility: 102, luck: 84 }, equipment: { @@ -13750,9 +13750,9 @@ export const twentySeventhBattleUnits: UnitData[] = [ classKey: 'archer', level: 43, exp: 66, - hp: 108, - maxHp: 108, - attack: 43, + hp: 96, + maxHp: 96, + attack: 38, move: 3, stats: { might: 104, intelligence: 104, leadership: 110, agility: 118, luck: 86 }, equipment: { @@ -13771,9 +13771,9 @@ export const twentySeventhBattleUnits: UnitData[] = [ classKey: 'archer', level: 43, exp: 66, - hp: 108, - maxHp: 108, - attack: 43, + hp: 96, + maxHp: 96, + attack: 38, move: 3, stats: { might: 104, intelligence: 104, leadership: 110, agility: 118, luck: 86 }, equipment: { @@ -13792,9 +13792,9 @@ export const twentySeventhBattleUnits: UnitData[] = [ classKey: 'cavalry', level: 43, exp: 66, - hp: 148, - maxHp: 148, - attack: 47, + hp: 132, + maxHp: 132, + attack: 42, move: 5, stats: { might: 146, intelligence: 92, leadership: 120, agility: 120, luck: 86 }, equipment: { @@ -13813,9 +13813,9 @@ export const twentySeventhBattleUnits: UnitData[] = [ classKey: 'cavalry', level: 43, exp: 66, - hp: 148, - maxHp: 148, - attack: 47, + hp: 132, + maxHp: 132, + attack: 42, move: 5, stats: { might: 146, intelligence: 92, leadership: 120, agility: 120, luck: 86 }, equipment: { @@ -13834,9 +13834,9 @@ export const twentySeventhBattleUnits: UnitData[] = [ classKey: 'cavalry', level: 44, exp: 68, - hp: 154, - maxHp: 154, - attack: 49, + hp: 138, + maxHp: 138, + attack: 44, move: 5, stats: { might: 150, intelligence: 94, leadership: 124, agility: 122, luck: 86 }, equipment: { @@ -13855,9 +13855,9 @@ export const twentySeventhBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 44, exp: 68, - hp: 158, - maxHp: 158, - attack: 49, + hp: 142, + maxHp: 142, + attack: 44, move: 3, stats: { might: 152, intelligence: 96, leadership: 128, agility: 104, luck: 86 }, equipment: { @@ -13876,9 +13876,9 @@ export const twentySeventhBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 44, exp: 68, - hp: 158, - maxHp: 158, - attack: 49, + hp: 142, + maxHp: 142, + attack: 44, move: 3, stats: { might: 152, intelligence: 96, leadership: 128, agility: 104, luck: 86 }, equipment: { @@ -13897,9 +13897,9 @@ export const twentySeventhBattleUnits: UnitData[] = [ classKey: 'archer', level: 43, exp: 66, - hp: 108, - maxHp: 108, - attack: 43, + hp: 96, + maxHp: 96, + attack: 38, move: 3, stats: { might: 92, intelligence: 120, leadership: 112, agility: 98, luck: 86 }, equipment: { @@ -13918,9 +13918,9 @@ export const twentySeventhBattleUnits: UnitData[] = [ classKey: 'archer', level: 43, exp: 66, - hp: 108, - maxHp: 108, - attack: 43, + hp: 96, + maxHp: 96, + attack: 38, move: 3, stats: { might: 92, intelligence: 120, leadership: 112, agility: 98, luck: 86 }, equipment: { @@ -13939,9 +13939,9 @@ export const twentySeventhBattleUnits: UnitData[] = [ classKey: 'bandit', level: 42, exp: 64, - hp: 112, - maxHp: 112, - attack: 42, + hp: 100, + maxHp: 100, + attack: 38, move: 4, stats: { might: 132, intelligence: 94, leadership: 106, agility: 124, luck: 84 }, equipment: { @@ -13960,9 +13960,9 @@ export const twentySeventhBattleUnits: UnitData[] = [ classKey: 'bandit', level: 42, exp: 64, - hp: 112, - maxHp: 112, - attack: 42, + hp: 100, + maxHp: 100, + attack: 38, move: 4, stats: { might: 132, intelligence: 94, leadership: 106, agility: 124, luck: 84 }, equipment: { @@ -13981,9 +13981,9 @@ export const twentySeventhBattleUnits: UnitData[] = [ classKey: 'rebelLeader', level: 45, exp: 72, - hp: 204, - maxHp: 204, - attack: 50, + hp: 184, + maxHp: 196, + attack: 45, move: 4, stats: { might: 150, intelligence: 112, leadership: 136, agility: 106, luck: 88 }, equipment: { @@ -14488,9 +14488,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'bandit', level: 47, exp: 74, - hp: 122, - maxHp: 122, - attack: 46, + hp: 90, + maxHp: 90, + attack: 34, move: 4, stats: { might: 142, intelligence: 100, leadership: 116, agility: 130, luck: 88 }, equipment: { @@ -14509,9 +14509,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'bandit', level: 47, exp: 74, - hp: 122, - maxHp: 122, - attack: 46, + hp: 90, + maxHp: 90, + attack: 34, move: 4, stats: { might: 142, intelligence: 100, leadership: 116, agility: 130, luck: 88 }, equipment: { @@ -14530,9 +14530,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 48, exp: 76, - hp: 168, - maxHp: 168, - attack: 52, + hp: 130, + maxHp: 130, + attack: 42, move: 3, stats: { might: 158, intelligence: 100, leadership: 136, agility: 108, luck: 88 }, equipment: { @@ -14551,9 +14551,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 48, exp: 76, - hp: 168, - maxHp: 168, - attack: 52, + hp: 130, + maxHp: 130, + attack: 42, move: 3, stats: { might: 158, intelligence: 100, leadership: 136, agility: 108, luck: 88 }, equipment: { @@ -14572,9 +14572,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 49, exp: 78, - hp: 176, - maxHp: 176, - attack: 54, + hp: 136, + maxHp: 136, + attack: 42, move: 3, stats: { might: 162, intelligence: 102, leadership: 140, agility: 110, luck: 88 }, equipment: { @@ -14593,9 +14593,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 49, exp: 78, - hp: 176, - maxHp: 176, - attack: 54, + hp: 110, + maxHp: 110, + attack: 38, move: 3, stats: { might: 162, intelligence: 102, leadership: 140, agility: 110, luck: 88 }, equipment: { @@ -14614,9 +14614,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'archer', level: 48, exp: 76, - hp: 120, - maxHp: 120, - attack: 48, + hp: 90, + maxHp: 90, + attack: 36, move: 3, stats: { might: 112, intelligence: 112, leadership: 118, agility: 126, luck: 90 }, equipment: { @@ -14635,9 +14635,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'archer', level: 49, exp: 78, - hp: 124, - maxHp: 124, - attack: 49, + hp: 70, + maxHp: 70, + attack: 32, move: 3, stats: { might: 114, intelligence: 114, leadership: 120, agility: 128, luck: 90 }, equipment: { @@ -14656,9 +14656,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'archer', level: 49, exp: 78, - hp: 124, - maxHp: 124, - attack: 49, + hp: 70, + maxHp: 70, + attack: 32, move: 3, stats: { might: 114, intelligence: 114, leadership: 120, agility: 128, luck: 90 }, equipment: { @@ -14677,9 +14677,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'cavalry', level: 49, exp: 78, - hp: 178, - maxHp: 178, - attack: 55, + hp: 120, + maxHp: 120, + attack: 38, move: 5, stats: { might: 162, intelligence: 102, leadership: 138, agility: 130, luck: 90 }, equipment: { @@ -14698,9 +14698,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'cavalry', level: 49, exp: 78, - hp: 178, - maxHp: 178, - attack: 55, + hp: 162, + maxHp: 162, + attack: 50, move: 5, stats: { might: 162, intelligence: 102, leadership: 138, agility: 130, luck: 90 }, equipment: { @@ -14719,9 +14719,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'cavalry', level: 50, exp: 80, - hp: 186, - maxHp: 186, - attack: 57, + hp: 168, + maxHp: 168, + attack: 51, move: 5, stats: { might: 166, intelligence: 104, leadership: 142, agility: 132, luck: 90 }, equipment: { @@ -14740,9 +14740,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 50, exp: 80, - hp: 188, - maxHp: 188, - attack: 57, + hp: 112, + maxHp: 112, + attack: 38, move: 3, stats: { might: 168, intelligence: 104, leadership: 146, agility: 112, luck: 90 }, equipment: { @@ -14761,9 +14761,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 50, exp: 80, - hp: 188, - maxHp: 188, - attack: 57, + hp: 112, + maxHp: 112, + attack: 38, move: 3, stats: { might: 168, intelligence: 104, leadership: 146, agility: 112, luck: 90 }, equipment: { @@ -14782,9 +14782,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'archer', level: 49, exp: 78, - hp: 124, - maxHp: 124, - attack: 49, + hp: 70, + maxHp: 70, + attack: 32, move: 3, stats: { might: 96, intelligence: 128, leadership: 120, agility: 102, luck: 90 }, equipment: { @@ -14803,9 +14803,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'archer', level: 49, exp: 78, - hp: 124, - maxHp: 124, - attack: 49, + hp: 70, + maxHp: 70, + attack: 32, move: 3, stats: { might: 96, intelligence: 128, leadership: 120, agility: 102, luck: 90 }, equipment: { @@ -14824,9 +14824,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'bandit', level: 48, exp: 76, - hp: 128, - maxHp: 128, - attack: 48, + hp: 88, + maxHp: 88, + attack: 32, move: 4, stats: { might: 146, intelligence: 102, leadership: 118, agility: 132, luck: 88 }, equipment: { @@ -14845,9 +14845,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'bandit', level: 48, exp: 76, - hp: 128, - maxHp: 128, - attack: 48, + hp: 88, + maxHp: 88, + attack: 32, move: 4, stats: { might: 146, intelligence: 102, leadership: 118, agility: 132, luck: 88 }, equipment: { @@ -14866,9 +14866,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'yellowTurban', level: 50, exp: 82, - hp: 190, - maxHp: 190, - attack: 56, + hp: 125, + maxHp: 145, + attack: 40, move: 4, stats: { might: 158, intelligence: 108, leadership: 148, agility: 114, luck: 90 }, equipment: { @@ -14887,9 +14887,9 @@ export const twentyNinthBattleUnits: UnitData[] = [ classKey: 'rebelLeader', level: 51, exp: 84, - hp: 238, - maxHp: 238, - attack: 59, + hp: 135, + maxHp: 170, + attack: 38, move: 4, stats: { might: 170, intelligence: 118, leadership: 152, agility: 116, luck: 92 }, equipment: { diff --git a/src/game/scenes/BattleScene.ts b/src/game/scenes/BattleScene.ts index 9e954ec..f045070 100644 --- a/src/game/scenes/BattleScene.ts +++ b/src/game/scenes/BattleScene.ts @@ -1709,7 +1709,7 @@ const enemyAiByUnitId: Record = { 'redcliff-fire-archer-d': 'hold', 'redcliff-fire-cavalry-a': 'aggressive', 'redcliff-fire-cavalry-b': 'aggressive', - 'redcliff-fire-cavalry-c': 'aggressive', + 'redcliff-fire-cavalry-c': 'guard', 'redcliff-fire-guard-a': 'guard', 'redcliff-fire-guard-b': 'guard', 'redcliff-fire-strategist-a': 'hold', @@ -1763,7 +1763,7 @@ const enemyAiByUnitId: Record = { 'wuling-archer-b': 'hold', 'wuling-archer-c': 'hold', 'wuling-cavalry-a': 'aggressive', - 'wuling-cavalry-b': 'aggressive', + 'wuling-cavalry-b': 'guard', 'wuling-guard-a': 'guard', 'wuling-guard-b': 'guard', 'wuling-strategist-a': 'hold', @@ -1835,8 +1835,8 @@ const enemyAiByUnitId: Record = { 'luo-archer-b': 'hold', 'luo-archer-c': 'hold', 'luo-cavalry-a': 'aggressive', - 'luo-cavalry-b': 'aggressive', - 'luo-cavalry-c': 'aggressive', + 'luo-cavalry-b': 'guard', + 'luo-cavalry-c': 'guard', 'luo-guard-a': 'guard', 'luo-guard-b': 'guard', 'luo-strategist-a': 'hold', diff --git a/src/game/scenes/CampScene.ts b/src/game/scenes/CampScene.ts index b4af0e5..a289aa6 100644 --- a/src/game/scenes/CampScene.ts +++ b/src/game/scenes/CampScene.ts @@ -799,12 +799,12 @@ const sortieRulesByBattleId: Partial