- StatsPanel: 스탯 변화 애니메이션 (증감 표시)
- CombatLog: 전투 이벤트 로그 위젯
- NotificationService: 큐 기반 알림 관리
- NotificationOverlay: 레벨업/퀘스트 완료 팝업 알림
- GamePlayScreen: 새 위젯 통합
- 몬스터 데이터 65종 추가 (총 369종)
- 레벨 54-100 엔드게임 몬스터
- 미니보스 10종, 보스 8종
- 아이템 데이터 확장 (총 440+종)
- 무기, 방어구, 방패 고급 아이템
- 주문, 속성, 보링 아이템 추가
- ASCII 애니메이션 카테고리 테마 변경
- beast/insect/humanoid → bug/malware/network
- undead/dragon/slime/demon → system/crypto/ai/boss
- 테스트 기대값 업데이트 (Phase 7 확장 반영)
- balance_constants.dart 생성
- ExpConstants: 경험치 곡선 (baseExp * 1.15^level)
- MonsterType: normal, elite, miniboss, boss, finalBoss
- MonsterTypeMultiplier: 타입별 HP/ATK/DEF/EXP/GOLD 배율
- MonsterBaseStats: 레벨 기반 몬스터 스탯 생성
- BossStats: 5개 보스 정의 (Syntax Error Dragon ~ Glitch God)
- LevelTierSettings: 구간별 난이도 설정 (초반/중반/후반/엔드게임)
- PlayerScaling: 플레이어 레벨업 시 HP/MP 스케일링
- MonsterCombatStats 통합
- MonsterBaseStats.generate() 사용하여 스탯 생성
- monsterType 매개변수 추가로 타입별 몬스터 지원
- 21개 종족 균형 재설계 (스탯 합계 = 0)
- 18개 클래스 균형 재설계 (스탯 합계 = +3)
- Traits에 raceId, classId 필드 추가
- 저장/불러오기에 종족/클래스 ID 추가
- 캐릭터 생성 UI에서 RaceData/ClassData 사용
- 선택 시 스탯 보정 및 패시브 정보 표시
- DeathInfo, DeathCause 클래스 정의 (game_state.dart)
- 사망 원인, 상실 장비 수, 사망 시점 정보 기록
- ShopService 구현 (shop_service.dart)
- 장비 가격 계산 (레벨 * 50 * 희귀도 배율)
- 슬롯별 장비 생성 (프로그래밍 테마)
- 자동 구매 (빈 슬롯에 Common 장비)
- ResurrectionService 구현 (resurrection_service.dart)
- 사망 처리: 모든 장비 상실, 기본 무기만 유지
- 부활 처리: HP/MP 회복, 자동 장비 구매
- progress_service.dart 사망 판정 로직 추가
- 전투 중 HP <= 0 시 사망 처리
- ProgressTickResult에 playerDied 플래그 추가
- progress_loop.dart 사망 시 루프 정지
- onPlayerDied 콜백 추가
- 사망 상태에서 틱 진행 방지
- DeathOverlay 위젯 구현 (death_overlay.dart)
- ASCII 스컬 아트, 사망 원인, 상실 정보 표시
- 부활 버튼
- GameSessionController 사망/부활 상태 관리
- GameSessionStatus.dead 상태 추가
- resurrect() 메서드로 부활 처리
- Skill, SkillType, BuffEffect, SkillState, SkillUseResult 클래스 정의 (skill.dart)
- SkillSystemState를 GameState에 통합 (activeBuffs, skillStates, elapsedMs)
- 프로그래밍 테마 스킬 데이터 정의 (skill_data.dart)
- 공격: Debug Strike, Memory Leak, Core Dump, Kernel Panic 등
- 회복: Hot Reload, Garbage Collection, Quick Fix
- 버프: Safe Mode, Overclock, Firewall
- SkillService 구현 (skill_service.dart)
- 스킬 사용 가능 여부 확인 (MP, 쿨타임)
- 공격/회복/버프 스킬 사용 로직
- 자동 스킬 선택 (HP < 30% → 회복, 보스전 → 강력한 공격, 일반 → MP 효율)
- MP 자연 회복 (비전투: 50ms당 1, 전투: WIS 기반)
- progress_service.dart에 스킬 시스템 통합
- tick()에서 스킬 시간 업데이트 및 버프 만료 처리
- _processCombatTickWithSkills()로 전투 중 자동 스킬 사용
- ItemStats, ItemRarity 클래스 추가 (아이템 스탯/희귀도)
- EquipmentItem 클래스 추가 (개별 장비 아이템)
- ItemService 추가 (아이템 생성/관리/무게 시스템)
- Equipment 클래스 확장 (EquipmentItem 기반, 기존 API 호환)
- CombatStats에서 장비 스탯 반영
- 레거시 세이브 파일 호환성 유지
신규 파일:
- combat_stats.dart: 플레이어 전투 파생 스탯 (ATK, DEF, CRI 등)
- monster_combat_stats.dart: 몬스터 전투 스탯 (레벨 기반 스케일링)
- combat_result.dart: 전투 결과 타입 (AttackResult, CombatTurnResult)
- combat_state.dart: 전투 상태 관리 (HP, 누적 시간, 턴 수)
- combat_calculator.dart: 전투 계산 서비스 (데미지, 명중, 크리티컬)
수정 파일:
- game_state.dart: ProgressState에 currentCombat 필드 추가
- progress_service.dart: 킬 태스크 시 전투 로직 통합
- CombatStats/MonsterCombatStats 기반 전투 시간 계산
- 틱마다 전투 턴 처리 (_processCombatTick)
- 전투 완료 시 플레이어 HP 반영
- 몬스터 수식어 수정 (영어/한국어 모두)
- dead→fallen, crippled→twisted, sick→tainted
- undernourished→ravenous, baby→fledgling 등
- 고아/기아 관련 표현 개선
- orphan→이탈, starvation→고갈, hungry→탐욕스러운
- parentless→떠도는, Exploited→침해당한
- 일시정지 시 ASCII 애니메이션도 함께 정지하도록 수정
- 모든 애니메이션 캐릭터 위치를 전투 기준에 맞춤 (머리=4, 몸통=5, 다리=6)
- townAnimation: 건물 1줄 확장하여 베이스와 다리 같은 줄에 배치
- levelUpAnimation: 캐릭터 1줄 아래로 이동
- questCompleteAnimation: 캐릭터 2줄 아래로 이동
- actCompleteAnimation: 캐릭터 2줄 아래로 이동
- 게임 중 일시 정지/재개 버튼 추가 (테마 버튼 옆)
- 5x 배속이 2x와 동일하게 작동하던 버그 수정
- progress_service.dart clamp 제한을 100ms에서 500ms로 확장
- ASCII 애니메이션 40x8 규격 통일
- townAnimation, walkingAnimation, levelUpAnimation 등 8줄로 통일
- 레거시 애니메이션 TextAlign.left로 정렬 문제 수정
- 캐릭터 프레임 구조 통일 (머리/몸통/다리 3줄)
- 몬스터 크기 enum 실제 프레임 줄 수와 일치하도록 수정
- walkingAnimation, townAnimation 4줄 → 3줄 통일
- character_frames.dart 모든 프레임 폭 6자로 통일
- _compose() 이펙트 Y 위치 동적 계산 (하드코딩 제거)
- withShield() 3줄 캐릭터용으로 수정 (index 3 → index 1)
- BattleComposer 캔버스 시스템 및 배경 합성 추가
- 무기 카테고리별 이펙트, 몬스터 크기/색상 시스템 구현
- game_text_l10n.dart에 게임 데이터 번역 함수 추가
- translateMonster, translateRace, translateKlass
- translateTitle, translateImpressiveTitle
- translateBoringItem, translateInterestingItem
- pq_logic.dart monsterTask에서 몬스터 이름 번역
- completeQuest에서 퀘스트 아이템/몬스터 번역
- impressiveGuy, namedMonster에서 NPC 이름 번역
- interplotCinematic에서 시네마틱 아이템 번역
- dropItemTranslationsKo 추가 (250+ 드롭 아이템 번역)
- translateItemString 함수 리팩터링:
- specialItem 형식 정확히 감지 (itemOfs 검증)
- 몬스터 드롭 형식 지원 ("{monster} {drop}" → "{몬스터}의 {드롭}")
- 인벤토리 아이템이 올바르게 한글로 표시됨
- newCharacterTitle, soldButton 키 추가 (app_en.arb, app_ko.arb)
- new_character_screen.dart 하드코딩 텍스트를 L10n 함수로 변경
- 관련 테스트 업데이트 (widget_test.dart, new_character_screen_test.dart)
변경 내역:
- "Progress Quest - New Character" → L10n.newCharacterTitle
- "Sold!" → L10n.soldButton
- game_text_l10n.dart: BuildContext 없이 사용할 수 있는 게임 텍스트 l10n 파일 생성
- progress_service.dart: 프롤로그/태스크 캡션 l10n 함수 사용으로 변경
- pq_logic.dart: 퀘스트/시네마틱/몬스터 수식어 l10n 함수 사용으로 변경
번역 적용 범위:
- 프롤로그 텍스트 (4개)
- 태스크 캡션 (컴파일, 이동, 디버깅, 판매 등)
- 퀘스트 캡션 (패치, 찾기, 전송, 다운로드, 안정화)
- 시네마틱 텍스트 (캐시 존, 전투, 배신 시나리오)
- 몬스터 수식어 (sick, young, big, special 등 모든 수식어)
- 시간 표시 (초, 분, 시간, 일)
- impressiveGuy, namedMonster 패턴
- pq_logic.dart: 구조화된 결과 타입 (EquipResult, ItemResult) 추가
- pq_logic.dart: 구조화된 생성 함수 (winEquipStructured, winItemStructured 등) 추가
- GameDataL10n: 구조화된 결과 렌더링 함수 추가 (renderEquipResult, renderItemResult)
- GameDataL10n: 문자열 파싱 기반 번역 함수 추가 (translateEquipString, translateItemString)
- game_play_screen.dart: 장비/아이템 목록에 번역 함수 적용
new_character_screen.dart:
- 종족 목록에 GameDataL10n.getRaceName() 적용
- 직업 목록에 GameDataL10n.getKlassName() 적용
game_play_screen.dart:
- 캐릭터 정보의 종족/직업 번역 적용
- 주문 목록에 GameDataL10n.getSpellName() 적용
- game_translations_ko.dart: 한국어 번역 데이터
- 종족/직업/몬스터/무기/갑옷/방패/주문 번역
- 아이템 속성/접미사 번역
- 칭호/특수 아이템 번역
- game_data_l10n.dart: 번역 헬퍼 클래스
- getRaceName(), getKlassName(), getMonsterName() 등
- BuildContext 기반 로케일 감지
- flutter_localizations 및 intl 패키지 추가
- l10n.yaml 설정 파일 및 app_ko.arb 메시지 파일 생성
- 모든 화면(app, front, game_play, new_character, save_picker)의 하드코딩 텍스트를 L10n 키로 변환
- 테스트 파일에 localizationsDelegates 추가하여 L10n 지원
- TaskType별 애니메이션 (전투, 마을, 걷기)
- 몬스터 카테고리별 전투 애니메이션 (7종)
- 특수 애니메이션 (레벨업, 퀘스트 완료, Act 완료)
- 색상 테마 옵션 (green, amber, white, system)
- 테마 설정 SharedPreferences 저장
- 프로그레스 바를 상단으로 이동
- Equipment 클래스를 11개 슬롯으로 확장 (원본 Main.dfm 충실)
- TaskInfo에 몬스터 정보(baseName, part) 추가
- Stats에 현재 HP/MP 필드 추가
- 히스토리 기능 구현 (plotHistory, questHistory)
- pq_logic winEquip/winStatIndex 원본 로직 개선
- 퀘스트 몬스터 처리 로직 구현
- SaveData 직렬화 확장