- Equipment 클래스를 11개 슬롯으로 확장 (원본 Main.dfm 충실) - TaskInfo에 몬스터 정보(baseName, part) 추가 - Stats에 현재 HP/MP 필드 추가 - 히스토리 기능 구현 (plotHistory, questHistory) - pq_logic winEquip/winStatIndex 원본 로직 개선 - 퀘스트 몬스터 처리 로직 구현 - SaveData 직렬화 확장
26 lines
939 B
Dart
26 lines
939 B
Dart
import 'package:askiineverdie/src/core/engine/game_mutations.dart';
|
|
import 'package:askiineverdie/src/core/model/game_state.dart';
|
|
import 'package:askiineverdie/src/core/util/pq_logic.dart';
|
|
|
|
/// Applies quest/act rewards to the GameState using shared RNG.
|
|
class RewardService {
|
|
RewardService(this.mutations);
|
|
|
|
final GameMutations mutations;
|
|
|
|
GameState applyReward(GameState state, RewardKind reward) {
|
|
switch (reward) {
|
|
case RewardKind.spell:
|
|
return mutations.winSpell(state, state.stats.wis, state.traits.level);
|
|
case RewardKind.equip:
|
|
// 원본 Main.pas:797 - Random(Equips.Items.Count) (11개 슬롯)
|
|
final slotIndex = state.rng.nextInt(Equipment.slotCount);
|
|
return mutations.winEquipByIndex(state, state.traits.level, slotIndex);
|
|
case RewardKind.stat:
|
|
return mutations.winStat(state);
|
|
case RewardKind.item:
|
|
return mutations.winItem(state);
|
|
}
|
|
}
|
|
}
|