From c420331300eac8095ad349f20dfaab4748d53317 Mon Sep 17 00:00:00 2001 From: JiWoong Sul Date: Tue, 13 Jan 2026 15:11:01 +0900 Subject: [PATCH] =?UTF-8?q?refactor(game):=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EC=BA=90=EB=A6=AD=ED=84=B0=20=EC=84=9C=EB=B9=84=EC=8A=A4=20?= =?UTF-8?q?=EB=B0=8F=20=EC=84=B8=EC=85=98=20=EC=BB=A8=ED=8A=B8=EB=A1=A4?= =?UTF-8?q?=EB=9F=AC=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/engine/test_character_service.dart | 22 +++++++++---------- .../game/game_session_controller.dart | 5 +---- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/lib/src/core/engine/test_character_service.dart b/lib/src/core/engine/test_character_service.dart index 3bb6ec1..1039f2c 100644 --- a/lib/src/core/engine/test_character_service.dart +++ b/lib/src/core/engine/test_character_service.dart @@ -1,3 +1,4 @@ +import 'package:asciineverdie/data/skill_data.dart'; import 'package:asciineverdie/src/core/engine/item_service.dart'; import 'package:asciineverdie/src/core/model/combat_stats.dart'; import 'package:asciineverdie/src/core/model/equipment_item.dart'; @@ -5,7 +6,6 @@ import 'package:asciineverdie/src/core/model/equipment_slot.dart'; import 'package:asciineverdie/src/core/model/game_state.dart'; import 'package:asciineverdie/src/core/model/hall_of_fame.dart'; import 'package:asciineverdie/src/core/model/item_stats.dart'; -import 'package:asciineverdie/src/core/model/pq_config.dart'; import 'package:asciineverdie/src/core/util/deterministic_random.dart'; import 'package:asciineverdie/src/core/util/roman.dart'; @@ -14,12 +14,8 @@ import 'package:asciineverdie/src/core/util/roman.dart'; /// 현재 캐릭터를 레벨 100, 고급 장비, 다수의 스킬을 가진 /// 캐릭터로 변환하여 명예의 전당에 등록할 수 있게 함. class TestCharacterService { - TestCharacterService({ - required this.config, - required this.rng, - }); + TestCharacterService({required this.rng}); - final PqConfig config; final DeterministicRandom rng; /// 테스트 캐릭터 데이터 생성 @@ -200,18 +196,22 @@ class TestCharacterService { } /// 테스트용 스킬 생성 (20~30개) + /// + /// SkillData.spellNameToSkill에 정의된 전투 스킬만 선택 List> _generateTestSkills() { - final spells = config.spells; + // 전투에서 실제로 사용 가능한 스킬 목록 + final validSpells = SkillData.spellNameToSkill.keys.toList(); final skillCount = 20 + rng.nextInt(11); // 20~30개 final selectedSpells = {}; final skills = >[]; // 중복 없이 스킬 선택 - while (selectedSpells.length < skillCount && selectedSpells.length < spells.length) { - final index = rng.nextInt(spells.length); - final spell = spells[index].split('|')[0]; + while (selectedSpells.length < skillCount && + selectedSpells.length < validSpells.length) { + final index = rng.nextInt(validSpells.length); + final spell = validSpells[index]; if (selectedSpells.add(spell)) { - // 랭크: I~X 랜덤 (레벨 100 기준 높은 랭크 선호) + // 랭크: V~X 랜덤 (레벨 100 기준 높은 랭크) final rank = _randomHighRank(); skills.add({'name': spell, 'rank': rank}); } diff --git a/lib/src/features/game/game_session_controller.dart b/lib/src/features/game/game_session_controller.dart index 76f3cde..e525794 100644 --- a/lib/src/features/game/game_session_controller.dart +++ b/lib/src/features/game/game_session_controller.dart @@ -385,10 +385,7 @@ class GameSessionController extends ChangeNotifier { await _stopLoop(saveOnStop: false); // TestCharacterService로 테스트 캐릭터 생성 - final testService = TestCharacterService( - config: progressService.config, - rng: _state!.rng, - ); + final testService = TestCharacterService(rng: _state!.rng); final entry = testService.createTestCharacter(_state!);