diff --git a/lib/src/core/engine/progress_service.dart b/lib/src/core/engine/progress_service.dart index 3278ce3..8f92eed 100644 --- a/lib/src/core/engine/progress_service.dart +++ b/lib/src/core/engine/progress_service.dart @@ -37,48 +37,48 @@ class ProgressService { /// 새 게임 초기화 (원본 GoButtonClick, Main.pas:741-767) /// Prologue 태스크들을 큐에 추가하고 첫 태스크 시작 GameState initializeNewGame(GameState state) { - // 초기 큐 설정 (원본 753-757줄) + // 초기 큐 설정 - 아스키나라(ASCII-Nara) 세계관 프롤로그 final initialQueue = [ const QueueEntry( kind: QueueKind.task, durationMillis: 10 * 1000, - caption: 'Experiencing an enigmatic and foreboding night vision', + caption: 'Receiving an ominous vision from the Code God', taskType: TaskType.load, ), const QueueEntry( kind: QueueKind.task, durationMillis: 6 * 1000, caption: - "Much is revealed about that wise old bastard you'd " - 'underestimated', + 'The old Compiler Sage reveals a prophecy: ' + '"The Glitch God has awakened"', taskType: TaskType.load, ), const QueueEntry( kind: QueueKind.task, durationMillis: 6 * 1000, caption: - 'A shocking series of events leaves you alone and bewildered, ' - 'but resolute', + 'A sudden Buffer Overflow resets your village, ' + 'leaving you as the sole survivor', taskType: TaskType.load, ), const QueueEntry( kind: QueueKind.task, durationMillis: 4 * 1000, caption: - 'Drawing upon an unexpected reserve of determination, ' - 'you set out on a long and dangerous journey', + 'With unexpected resolve, you embark on a perilous journey ' + 'to the Null Kingdom', taskType: TaskType.load, ), const QueueEntry( kind: QueueKind.plot, durationMillis: 2 * 1000, - caption: 'Loading', + caption: 'Compiling', taskType: TaskType.plot, ), ]; - // 첫 번째 태스크 'Loading' 시작 (원본 752줄) - final taskResult = pq_logic.startTask(state.progress, 'Loading', 2 * 1000); + // 첫 번째 태스크 시작 (원본 752줄) + final taskResult = pq_logic.startTask(state.progress, 'Compiling', 2 * 1000); // ExpBar 초기화 (원본 743-746줄) final expBar = ProgressBarState(position: 0, max: pq_logic.levelUpTime(1)); @@ -89,7 +89,7 @@ class ProgressService { final progress = taskResult.progress.copyWith( exp: expBar, plot: plotBar, - currentTask: const TaskInfo(caption: 'Loading...', type: TaskType.load), + currentTask: const TaskInfo(caption: 'Compiling...', type: TaskType.load), plotStageCount: 1, // Prologue questCount: 0, plotHistory: const [HistoryEntry(caption: 'Prologue', isComplete: false)], @@ -295,7 +295,7 @@ class ProgressService { progress.encumbrance.max > 0) { final taskResult = pq_logic.startTask( progress, - 'Heading to market to sell loot', + 'Heading to the Data Market to trade loot', 4 * 1000, ); progress = taskResult.progress.copyWith( @@ -316,7 +316,7 @@ class ProgressService { if (gold > equipPrice) { final taskResult = pq_logic.startTask( progress, - 'Negotiating purchase of better equipment', + 'Upgrading hardware at the Tech Shop', 5 * 1000, ); progress = taskResult.progress.copyWith( @@ -331,7 +331,7 @@ class ProgressService { // Gold가 부족하면 전장으로 이동 (원본 674-676줄) final taskResult = pq_logic.startTask( progress, - 'Heading to the killing fields', + 'Entering the Debug Zone', 4 * 1000, ); progress = taskResult.progress.copyWith( @@ -370,7 +370,7 @@ class ProgressService { final taskResult = pq_logic.startTask( progress, - 'Executing ${monsterResult.displayName}', + 'Debugging ${monsterResult.displayName}', durationMillis, ); diff --git a/lib/src/core/util/pq_logic.dart b/lib/src/core/util/pq_logic.dart index 9374b9e..9eaff7c 100644 --- a/lib/src/core/util/pq_logic.dart +++ b/lib/src/core/util/pq_logic.dart @@ -498,7 +498,7 @@ QuestResult completeQuest(PqConfig config, DeterministicRandom rng, int level) { } final name = best.split('|').first; return QuestResult( - caption: 'Exterminate ${definite(name, 2)}', + caption: 'Patch ${definite(name, 2)}', reward: reward, monsterName: best, monsterLevel: bestLevel, @@ -506,18 +506,18 @@ QuestResult completeQuest(PqConfig config, DeterministicRandom rng, int level) { ); case 1: final item = interestingItem(config, rng); - return QuestResult(caption: 'Seek ${definite(item, 1)}', reward: reward); + return QuestResult(caption: 'Locate ${definite(item, 1)}', reward: reward); case 2: final item = boringItem(config, rng); - return QuestResult(caption: 'Deliver this $item', reward: reward); + return QuestResult(caption: 'Transfer this $item', reward: reward); case 3: final item = boringItem(config, rng); return QuestResult( - caption: 'Fetch me ${indefinite(item, 1)}', + caption: 'Download ${indefinite(item, 1)}', reward: reward, ); default: - // Placate: 2번 시도하여 레벨에 가장 가까운 몬스터 선택 + // Stabilize: 2번 시도하여 레벨에 가장 가까운 몬스터 선택 // 원본 Main.pas:971-984 (fQuest.Caption := '' 처리됨) var best = ''; var bestLevel = 0; @@ -530,9 +530,9 @@ QuestResult completeQuest(PqConfig config, DeterministicRandom rng, int level) { } } final name = best.split('|').first; - // Placate는 fQuest.Caption := '' 로 비움 → monsterIndex 미저장 + // Stabilize는 fQuest.Caption := '' 로 비움 → monsterIndex 미저장 return QuestResult( - caption: 'Placate ${definite(name, 2)}', + caption: 'Stabilize ${definite(name, 2)}', reward: reward, ); } @@ -803,26 +803,26 @@ List interplotCinematic( switch (rng.nextInt(3)) { case 0: - // 시나리오 1: 우호적 오아시스 + // 시나리오 1: 안전한 캐시 영역 도착 q( QueueKind.task, 1, - 'Exhausted, you arrive at a friendly oasis in a hostile land', + 'Exhausted, you reach a safe Cache Zone in the corrupted network', ); - q(QueueKind.task, 2, 'You greet old friends and meet new allies'); - q(QueueKind.task, 2, 'You are privy to a council of powerful do-gooders'); - q(QueueKind.task, 1, 'There is much to be done. You are chosen!'); + q(QueueKind.task, 2, 'You reconnect with old allies and fork new ones'); + q(QueueKind.task, 2, 'You attend a council of the Debugger Knights'); + q(QueueKind.task, 1, 'Many bugs await. You are chosen to patch them!'); break; case 1: - // 시나리오 2: 강력한 적과의 전투 + // 시나리오 2: 강력한 버그와의 전투 q( QueueKind.task, 1, - 'Your quarry is in sight, but a mighty enemy bars your path!', + 'Your target is in sight, but a critical bug blocks your path!', ); final nemesis = namedMonster(config, rng, level + 3); - q(QueueKind.task, 4, 'A desperate struggle commences with $nemesis'); + q(QueueKind.task, 4, 'A desperate debugging session begins with $nemesis'); var s = rng.nextInt(3); final combatRounds = rng.nextInt(1 + plotCount); @@ -830,16 +830,16 @@ List interplotCinematic( s += 1 + rng.nextInt(2); switch (s % 3) { case 0: - q(QueueKind.task, 2, 'Locked in grim combat with $nemesis'); + q(QueueKind.task, 2, 'Locked in intense debugging with $nemesis'); break; case 1: - q(QueueKind.task, 2, '$nemesis seems to have the upper hand'); + q(QueueKind.task, 2, '$nemesis corrupts your stack trace'); break; case 2: q( QueueKind.task, 2, - 'You seem to gain the advantage over $nemesis', + 'Your patch seems to be working against $nemesis', ); break; } @@ -848,45 +848,45 @@ List interplotCinematic( q( QueueKind.task, 3, - 'Victory! $nemesis is slain! Exhausted, you lose conciousness', + 'Victory! $nemesis is patched! System reboots for recovery', ); q( QueueKind.task, 2, - 'You awake in a friendly place, but the road awaits', + 'You wake up in a Safe Mode, but the kernel awaits', ); break; case 2: - // 시나리오 3: 배신 발견 + // 시나리오 3: 내부자 위협 발견 final guy = impressiveGuy(config, rng); q( QueueKind.task, 2, - "Oh sweet relief! You've reached the kind protection of $guy", + 'What relief! You reach the secure server of $guy', ); q( QueueKind.task, 3, - 'There is rejoicing, and an unnerving encouter with $guy in private', + 'There is celebration, and a suspicious private handshake with $guy', ); q( QueueKind.task, 2, - 'You forget your ${boringItem(config, rng)} and go back to get it', + 'You forget your ${boringItem(config, rng)} and go back to retrieve it', ); - q(QueueKind.task, 2, "What's this!? You overhear something shocking!"); - q(QueueKind.task, 2, 'Could $guy be a dirty double-dealer?'); + q(QueueKind.task, 2, 'What is this!? You intercept a corrupted packet!'); + q(QueueKind.task, 2, 'Could $guy be a backdoor for the Glitch God?'); q( QueueKind.task, 3, - 'Who can possibly be trusted with this news!? -- Oh yes, of course', + 'Who can be trusted with this intel!? -- The Binary Temple, of course', ); break; } - // 마지막에 plot|2|Loading 추가 - q(QueueKind.plot, 2, 'Loading'); + // 마지막에 plot 추가 + q(QueueKind.plot, 2, 'Compiling'); return entries; }