feat: add signature officer tactics

This commit is contained in:
2026-07-13 07:36:39 +09:00
parent 26a4d78185
commit cd1abbe815
11 changed files with 535 additions and 44 deletions

View File

@@ -12,7 +12,12 @@ import {
type EquipmentSlot,
type ItemDefinition
} from '../data/battleItems';
import { compareUnitStrategyCoverage, getUnitStrategyCoverage, getUnitStrategyNames } from '../data/battleUsables';
import {
compareUnitStrategyCoverage,
getUnitSignatureStrategy,
getUnitStrategyCoverage,
getUnitStrategyNames
} from '../data/battleUsables';
import { getUnitClass, terrainRules, type TerrainType, type UnitClassKey } from '../data/battleRules';
import { defaultBattleScenario, getBattleScenario, type BattleScenarioDefinition, type BattleScenarioId } from '../data/battles';
import { getSortieFlow } from '../data/campaignFlow';
@@ -15693,6 +15698,28 @@ export class CampScene extends Phaser.Scene {
private sortieStrategyLine(unitId: string) {
const names = getUnitStrategyNames([unitId]);
const signature = getUnitSignatureStrategy(unitId);
if (signature) {
const effectParts = signature.effect === 'heal'
? [`회복${signature.power}`]
: signature.effect === 'focus'
? [
'강화',
...(signature.attackBonus ? [`공+${signature.attackBonus}`] : []),
...(signature.hitBonus ? [`명+${signature.hitBonus}`] : []),
...(signature.duration ? [`${signature.duration}`] : [])
]
: [
`피해${signature.power}`,
...(signature.accuracyBonus ? [`명+${signature.accuracyBonus}`] : []),
...(signature.criticalBonus ? [`치+${signature.criticalBonus}`] : []),
...(signature.statusEffect
? [`${signature.statusEffect === 'burn' ? '화상' : '혼란'}${signature.statusDuration ?? 1}`]
: [])
];
const otherNames = names.filter((name) => name !== signature.name);
return `고유 ${signature.name} · ${effectParts.join(' ')} · 사거리${signature.range}${otherNames.length > 0 ? ` · ${otherNames.join('·')}` : ''}`;
}
return names.length > 0 ? `전법 ${names.join('·')}` : '전법 없음';
}