fix: 전투 이펙트와 차등 하네스 호환성을 복원한다

Ref 기준의 판정 순서, 난수 소비, 아이템·특기 이펙트와 로그 형식을 맞춘다.

전체 전투 결과와 이벤트·상태·난수 trace를 엄격 비교하고 fixture 및 출병 예약 회귀를 보강한다.
This commit is contained in:
2026-08-24 03:37:56 +00:00
parent 32bab36320
commit 95cf68dffd
21 changed files with 1499 additions and 319 deletions
+14 -5
View File
@@ -192,10 +192,16 @@ export class WarUnitGeneral<
return truncate ? Math.trunc(clamped) : clamped;
}
private resolveMainStat(armType: number, withInjury = true): number {
const leadership = this.getComputedStat('leadership', this.general.stats.leadership, { withInjury });
const strength = this.getComputedStat('strength', this.general.stats.strength, { withInjury });
const intelligence = this.getComputedStat('intelligence', this.general.stats.intelligence, { withInjury });
private resolveMainStat(armType: number, withInjury = true, truncate = true): number {
const leadership = this.getComputedStat('leadership', this.general.stats.leadership, {
withInjury,
truncate,
});
const strength = this.getComputedStat('strength', this.general.stats.strength, { withInjury, truncate });
const intelligence = this.getComputedStat('intelligence', this.general.stats.intelligence, {
withInjury,
truncate,
});
if (armType === this.config.armTypes.wizard) {
return intelligence;
@@ -279,7 +285,10 @@ export class WarUnitGeneral<
return 0;
}
const mainStat = this.resolveMainStat(armType, false);
// GameUnitDetail::getCriticalRatio requests each Ref stat with
// useFloor=false, so action bonuses such as 징병's +25% leadership must
// retain their fractional part until after the probability is formed.
const mainStat = this.resolveMainStat(armType, false, false);
const coef =
armType === this.config.armTypes.wizard ||
armType === this.config.armTypes.siege ||