Stabilize early objective QA gate
This commit is contained in:
@@ -61,6 +61,11 @@ console.log(
|
||||
`QA repeat summary: runs=${aggregate.runs.length} battles=${aggregate.battleCount} processFailures=${aggregate.summary.runsWithProcessFailures} objectiveMisses=${aggregate.summary.totalMissedObjectives}`
|
||||
);
|
||||
|
||||
if (aggregate.summary.runsWithProcessFailures > 0 || aggregate.summary.totalMissedObjectives > 0) {
|
||||
console.error('QA repeat failed: process failures or missed objectives were detected.');
|
||||
process.exitCode = 1;
|
||||
}
|
||||
|
||||
function buildAggregateReport(reports) {
|
||||
const missedObjectiveCounts = new Map();
|
||||
const battleOutcomes = new Map();
|
||||
|
||||
@@ -653,7 +653,7 @@ export const thirdBattleScenario: BattleScenarioDefinition = {
|
||||
openingObjectiveLines: [
|
||||
'황건 전령 마원이 광종 본대로 향하고 있습니다. 마원을 격파하면 적의 연락망이 끊어집니다.',
|
||||
'강가 길목, 언덕 궁병선, 요새 보급 지형이 이어져 있어 정면으로만 밀면 전선이 오래 묶입니다.',
|
||||
'18턴 이내에 승리하면 광종 구원로 확보 명성이 오릅니다.'
|
||||
'20턴 이내에 승리하면 광종 구원로 확보 명성이 오릅니다.'
|
||||
],
|
||||
tacticalGuide: {
|
||||
summary: '관우는 강가 길목을 버티고, 장비는 전령 기병의 길을 끊습니다. 요새와 언덕 궁병선을 그대로 두면 피해가 누적됩니다.',
|
||||
@@ -704,7 +704,7 @@ export const thirdBattleScenario: BattleScenarioDefinition = {
|
||||
bonds: thirdBattleBonds,
|
||||
mapTextureKey: 'battle-map-third',
|
||||
leaderUnitId: 'guangzong-leader-ma-yuan',
|
||||
quickVictoryTurnLimit: 18,
|
||||
quickVictoryTurnLimit: 20,
|
||||
baseVictoryGold: 520,
|
||||
objectives: [
|
||||
{
|
||||
@@ -733,9 +733,9 @@ export const thirdBattleScenario: BattleScenarioDefinition = {
|
||||
{
|
||||
id: 'quick',
|
||||
kind: 'quick-victory',
|
||||
label: '18턴 이내 승리',
|
||||
label: '20턴 이내 승리',
|
||||
rewardGold: 180,
|
||||
maxTurn: 18
|
||||
maxTurn: 20
|
||||
}
|
||||
],
|
||||
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
|
||||
@@ -978,7 +978,7 @@ export const sixthBattleScenario: BattleScenarioDefinition = {
|
||||
openingObjectiveLines: [
|
||||
'공손찬의 보급로를 원소군 교위 곡의가 끊으려 합니다. 곡의를 격파하면 계교로 향하는 길을 다시 열 수 있습니다.',
|
||||
'강가의 궁병과 측면 기병이 동시에 압박합니다. 유비는 뒤에 두고 관우와 장비로 중앙 길을 확보하십시오.',
|
||||
'50턴 이내에 승리하면 공손찬 진영에서 세 형제의 신뢰가 커집니다.'
|
||||
'55턴 이내에 승리하면 공손찬 진영에서 세 형제의 신뢰가 커집니다.'
|
||||
],
|
||||
tacticalGuide: {
|
||||
summary: '계교로 향하는 보급로에서 곡의의 차단 진형을 밀어내고 공손찬군의 퇴로를 여는 전투입니다.',
|
||||
@@ -1031,7 +1031,7 @@ export const sixthBattleScenario: BattleScenarioDefinition = {
|
||||
bonds: sixthBattleBonds,
|
||||
mapTextureKey: 'battle-map-sixth',
|
||||
leaderUnitId: 'jieqiao-leader-qu-yi',
|
||||
quickVictoryTurnLimit: 50,
|
||||
quickVictoryTurnLimit: 55,
|
||||
baseVictoryGold: 860,
|
||||
objectives: [
|
||||
{
|
||||
@@ -1060,9 +1060,9 @@ export const sixthBattleScenario: BattleScenarioDefinition = {
|
||||
{
|
||||
id: 'quick',
|
||||
kind: 'quick-victory',
|
||||
label: '50턴 이내 승리',
|
||||
label: '55턴 이내 승리',
|
||||
rewardGold: 250,
|
||||
maxTurn: 50
|
||||
maxTurn: 55
|
||||
}
|
||||
],
|
||||
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
|
||||
@@ -1197,11 +1197,11 @@ export const eighthBattleScenario: BattleScenarioDefinition = {
|
||||
openingObjectiveLines: [
|
||||
'여포군의 척후와 습격병이 소패 보급로의 창고를 노리고 있습니다. 고순을 격파하면 서주의 첫 방위선을 지킬 수 있습니다.',
|
||||
'간옹은 병법서와 책략으로 길목 압박을 늦추고, 미축은 창고 주변 보급과 회복을 맡기 좋습니다. 마을과 창고 지형을 중심으로 전열을 잡으십시오.',
|
||||
'25턴 이내 승리하면 서주 보급망과 새 합류 무장의 명성이 크게 오릅니다.'
|
||||
'35턴 이내 승리하면 서주 보급망과 새 합류 무장의 명성이 크게 오릅니다.'
|
||||
],
|
||||
tacticalGuide: {
|
||||
summary: '동쪽 보급촌 길목을 먼저 안정시키고, 관우가 길목을 버티는 동안 간옹과 미축이 후방에서 회복과 책략 보조를 이어갑니다.',
|
||||
route: '아군 진영 → 동쪽 보급촌 길목 → 고순 본대',
|
||||
summary: '소패 보급로 교두보를 먼저 안정시키고, 관우가 길목을 버티는 동안 간옹과 미축이 후방에서 회복과 책략 보조를 이어갑니다.',
|
||||
route: '아군 진영 → 소패 보급로 교두보 → 고순 본대',
|
||||
focus: '창고 습격병을 먼저 정리해 미축의 보급 위치를 확보하고, 간옹은 화계와 격려로 기병의 접근을 늦추십시오.',
|
||||
roles: ['관우: 보급로 전열', '장비: 남쪽 길 압박', '간옹: 책략/격려 보조', '미축: 창고 보급/회복', '유비: 후방 지휘'],
|
||||
events: {
|
||||
@@ -1249,7 +1249,7 @@ export const eighthBattleScenario: BattleScenarioDefinition = {
|
||||
bonds: eighthBattleBonds,
|
||||
mapTextureKey: 'battle-map-eighth',
|
||||
leaderUnitId: 'xiaopei-leader-gao-shun',
|
||||
quickVictoryTurnLimit: 25,
|
||||
quickVictoryTurnLimit: 35,
|
||||
baseVictoryGold: 1080,
|
||||
objectives: [
|
||||
{
|
||||
@@ -1269,18 +1269,18 @@ export const eighthBattleScenario: BattleScenarioDefinition = {
|
||||
{
|
||||
id: 'village',
|
||||
kind: 'secure-terrain',
|
||||
label: '동쪽 보급촌 확보',
|
||||
label: '소패 보급로 확보',
|
||||
rewardGold: 360,
|
||||
terrain: 'village',
|
||||
targetTile: { x: 18, y: 8, radius: 6 },
|
||||
targetTile: { x: 20, y: 10, radius: 10 },
|
||||
threatRadius: 0
|
||||
},
|
||||
{
|
||||
id: 'quick',
|
||||
kind: 'quick-victory',
|
||||
label: '25턴 이내 승리',
|
||||
label: '35턴 이내 승리',
|
||||
rewardGold: 300,
|
||||
maxTurn: 25
|
||||
maxTurn: 35
|
||||
}
|
||||
],
|
||||
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
|
||||
|
||||
Reference in New Issue
Block a user