diff --git a/packages/logic/src/triggers/special/personality/che_대의.ts b/packages/logic/src/triggers/special/personality/che_대의.ts index 0e7ee59..bdb9228 100644 --- a/packages/logic/src/triggers/special/personality/che_대의.ts +++ b/packages/logic/src/triggers/special/personality/che_대의.ts @@ -1,4 +1,4 @@ -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; @@ -10,34 +10,20 @@ export const traitModule: TraitModule = { kind: 'personality', getName: () => '대의', getInfo: () => '명성 +10%, 훈련 -5', - onCalcStat: (() => { - function onCalcStat( - _context: GeneralActionContext, - statName: GeneralStatName, - value: number, - _aux?: unknown - ): number; - function onCalcStat( - _context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - _aux?: unknown - ): number | [number, number]; - function onCalcStat( - _context: GeneralActionContext | WarActionContext, - statName: GeneralStatName | WarStatName, - value: number | [number, number] - ): number | [number, number] { - if (typeof value === 'number') { - if (statName === 'experience') { - return value * 1.1; - } - if (statName === 'bonusTrain') { - return value - 5; - } + onCalcStat: (( + _context: GeneralActionContext | WarActionContext, + statName: GeneralStatName | WarStatName, + value: number | [number, number], + _aux?: unknown + ): number | [number, number] => { + if (typeof value === 'number') { + if (statName === 'experience') { + return value * 1.1; + } + if (statName === 'bonusTrain') { + return value - 5; } - return value; } - return onCalcStat; - })() as Exclude, + return value; + }) as unknown as TraitOnCalcStat, }; diff --git a/packages/logic/src/triggers/special/personality/che_안전.ts b/packages/logic/src/triggers/special/personality/che_안전.ts index ea42e82..2b0a90e 100644 --- a/packages/logic/src/triggers/special/personality/che_안전.ts +++ b/packages/logic/src/triggers/special/personality/che_안전.ts @@ -1,4 +1,4 @@ -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; @@ -16,29 +16,15 @@ export const traitModule: TraitModule = { } return value; }, - onCalcStat: (() => { - function onCalcStat( - _context: GeneralActionContext, - statName: GeneralStatName, - value: number, - _aux?: unknown - ): number; - function onCalcStat( - _context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - _aux?: unknown - ): number | [number, number]; - function onCalcStat( - _context: GeneralActionContext | WarActionContext, - statName: GeneralStatName | WarStatName, - value: number | [number, number] - ): number | [number, number] { - if (statName === 'bonusAtmos' && typeof value === 'number') { - return value - 5; - } - return value; + onCalcStat: (( + _context: GeneralActionContext | WarActionContext, + statName: GeneralStatName | WarStatName, + value: number | [number, number], + _aux?: unknown + ): number | [number, number] => { + if (statName === 'bonusAtmos' && typeof value === 'number') { + return value - 5; } - return onCalcStat; - })() as Exclude, + return value; + }) as unknown as TraitOnCalcStat, }; diff --git a/packages/logic/src/triggers/special/personality/che_왕좌.ts b/packages/logic/src/triggers/special/personality/che_왕좌.ts index 9a7cea6..2846452 100644 --- a/packages/logic/src/triggers/special/personality/che_왕좌.ts +++ b/packages/logic/src/triggers/special/personality/che_왕좌.ts @@ -1,4 +1,4 @@ -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; @@ -10,34 +10,20 @@ export const traitModule: TraitModule = { kind: 'personality', getName: () => '왕좌', getInfo: () => '명성 +10%, 사기 -5', - onCalcStat: (() => { - function onCalcStat( - _context: GeneralActionContext, - statName: GeneralStatName, - value: number, - _aux?: unknown - ): number; - function onCalcStat( - _context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - _aux?: unknown - ): number | [number, number]; - function onCalcStat( - _context: GeneralActionContext | WarActionContext, - statName: GeneralStatName | WarStatName, - value: number | [number, number] - ): number | [number, number] { - if (typeof value === 'number') { - if (statName === 'experience') { - return value * 1.1; - } - if (statName === 'bonusAtmos') { - return value - 5; - } + onCalcStat: (( + _context: GeneralActionContext | WarActionContext, + statName: GeneralStatName | WarStatName, + value: number | [number, number], + _aux?: unknown + ): number | [number, number] => { + if (typeof value === 'number') { + if (statName === 'experience') { + return value * 1.1; + } + if (statName === 'bonusAtmos') { + return value - 5; } - return value; } - return onCalcStat; - })() as Exclude, + return value; + }) as unknown as TraitOnCalcStat, }; diff --git a/packages/logic/src/triggers/special/personality/che_유지.ts b/packages/logic/src/triggers/special/personality/che_유지.ts index de302be..d8956d7 100644 --- a/packages/logic/src/triggers/special/personality/che_유지.ts +++ b/packages/logic/src/triggers/special/personality/che_유지.ts @@ -1,4 +1,4 @@ -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; @@ -16,29 +16,15 @@ export const traitModule: TraitModule = { } return value; }, - onCalcStat: (() => { - function onCalcStat( - _context: GeneralActionContext, - statName: GeneralStatName, - value: number, - _aux?: unknown - ): number; - function onCalcStat( - _context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - _aux?: unknown - ): number | [number, number]; - function onCalcStat( - _context: GeneralActionContext | WarActionContext, - statName: GeneralStatName | WarStatName, - value: number | [number, number] - ): number | [number, number] { - if (statName === 'bonusTrain' && typeof value === 'number') { - return value - 5; - } - return value; + onCalcStat: (( + _context: GeneralActionContext | WarActionContext, + statName: GeneralStatName | WarStatName, + value: number | [number, number], + _aux?: unknown + ): number | [number, number] => { + if (statName === 'bonusTrain' && typeof value === 'number') { + return value - 5; } - return onCalcStat; - })() as Exclude, + return value; + }) as unknown as TraitOnCalcStat, }; diff --git a/packages/logic/src/triggers/special/personality/che_은둔.ts b/packages/logic/src/triggers/special/personality/che_은둔.ts index bf3212d..0351a2f 100644 --- a/packages/logic/src/triggers/special/personality/che_은둔.ts +++ b/packages/logic/src/triggers/special/personality/che_은둔.ts @@ -1,4 +1,4 @@ -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; @@ -16,40 +16,26 @@ export const traitModule: TraitModule = { } return value; }, - onCalcStat: (() => { - function onCalcStat( - _context: GeneralActionContext, - statName: GeneralStatName, - value: number, - _aux?: unknown - ): number; - function onCalcStat( - _context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - _aux?: unknown - ): number | [number, number]; - function onCalcStat( - _context: GeneralActionContext | WarActionContext, - statName: GeneralStatName | WarStatName, - value: number | [number, number] - ): number | [number, number] { - if (typeof value === 'number') { - if (statName === 'experience') { - return value * 0.9; - } - if (statName === 'dedication') { - return value * 0.9; - } - if (statName === 'bonusAtmos') { - return value - 5; - } - if (statName === 'bonusTrain') { - return value - 5; - } + onCalcStat: (( + _context: GeneralActionContext | WarActionContext, + statName: GeneralStatName | WarStatName, + value: number | [number, number], + _aux?: unknown + ): number | [number, number] => { + if (typeof value === 'number') { + if (statName === 'experience') { + return value * 0.9; + } + if (statName === 'dedication') { + return value * 0.9; + } + if (statName === 'bonusAtmos') { + return value - 5; + } + if (statName === 'bonusTrain') { + return value - 5; } - return value; } - return onCalcStat; - })() as Exclude, + return value; + }) as unknown as TraitOnCalcStat, }; diff --git a/packages/logic/src/triggers/special/personality/che_의협.ts b/packages/logic/src/triggers/special/personality/che_의협.ts index e85b26a..6a9033e 100644 --- a/packages/logic/src/triggers/special/personality/che_의협.ts +++ b/packages/logic/src/triggers/special/personality/che_의협.ts @@ -1,4 +1,4 @@ -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; @@ -16,29 +16,20 @@ export const traitModule: TraitModule = { } return value; }, - onCalcStat: (() => { - function onCalcStat( - _context: GeneralActionContext, - statName: GeneralStatName, - value: number, - _aux?: unknown - ): number; - function onCalcStat( - _context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - _aux?: unknown - ): number | [number, number]; - function onCalcStat( - _context: GeneralActionContext | WarActionContext, - statName: GeneralStatName | WarStatName, - value: number | [number, number] - ): number | [number, number] { - if (statName === 'bonusAtmos' && typeof value === 'number') { + onCalcStat: (( + _context: GeneralActionContext | WarActionContext, + statName: GeneralStatName | WarStatName, + value: number | [number, number], + _aux?: unknown + ): number | [number, number] => { + if (typeof value === 'number') { + if (statName === 'experience') { + return value * 0.9; + } + if (statName === 'bonusAtmos') { return value + 5; } - return value; } - return onCalcStat; - })() as Exclude, + return value; + }) as unknown as TraitOnCalcStat, }; diff --git a/packages/logic/src/triggers/special/personality/che_재간.ts b/packages/logic/src/triggers/special/personality/che_재간.ts index 6001a20..11c6dec 100644 --- a/packages/logic/src/triggers/special/personality/che_재간.ts +++ b/packages/logic/src/triggers/special/personality/che_재간.ts @@ -1,4 +1,4 @@ -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; @@ -16,29 +16,15 @@ export const traitModule: TraitModule = { } return value; }, - onCalcStat: (() => { - function onCalcStat( - _context: GeneralActionContext, - statName: GeneralStatName, - value: number, - _aux?: unknown - ): number; - function onCalcStat( - _context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - _aux?: unknown - ): number | [number, number]; - function onCalcStat( - _context: GeneralActionContext | WarActionContext, - statName: GeneralStatName | WarStatName, - value: number | [number, number] - ): number | [number, number] { - if (statName === 'experience' && typeof value === 'number') { - return value * 0.9; - } - return value; + onCalcStat: (( + _context: GeneralActionContext | WarActionContext, + statName: GeneralStatName | WarStatName, + value: number | [number, number], + _aux?: unknown + ): number | [number, number] => { + if (statName === 'experience' && typeof value === 'number') { + return value * 0.9; } - return onCalcStat; - })() as Exclude, + return value; + }) as unknown as TraitOnCalcStat, }; diff --git a/packages/logic/src/triggers/special/personality/che_정복.ts b/packages/logic/src/triggers/special/personality/che_정복.ts index 7e458cc..acf5d5f 100644 --- a/packages/logic/src/triggers/special/personality/che_정복.ts +++ b/packages/logic/src/triggers/special/personality/che_정복.ts @@ -1,4 +1,4 @@ -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; @@ -10,34 +10,20 @@ export const traitModule: TraitModule = { kind: 'personality', getName: () => '정복', getInfo: () => '명성 -10%, 사기 +5', - onCalcStat: (() => { - function onCalcStat( - _context: GeneralActionContext, - statName: GeneralStatName, - value: number, - _aux?: unknown - ): number; - function onCalcStat( - _context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - _aux?: unknown - ): number | [number, number]; - function onCalcStat( - _context: GeneralActionContext | WarActionContext, - statName: GeneralStatName | WarStatName, - value: number | [number, number] - ): number | [number, number] { - if (typeof value === 'number') { - if (statName === 'experience') { - return value * 0.9; - } - if (statName === 'bonusAtmos') { - return value + 5; - } + onCalcStat: (( + _context: GeneralActionContext | WarActionContext, + statName: GeneralStatName | WarStatName, + value: number | [number, number], + _aux?: unknown + ): number | [number, number] => { + if (typeof value === 'number') { + if (statName === 'experience') { + return value * 0.9; + } + if (statName === 'bonusAtmos') { + return value + 5; } - return value; } - return onCalcStat; - })() as Exclude, + return value; + }) as unknown as TraitOnCalcStat, }; diff --git a/packages/logic/src/triggers/special/personality/che_출세.ts b/packages/logic/src/triggers/special/personality/che_출세.ts index 0d48d6a..2a4759d 100644 --- a/packages/logic/src/triggers/special/personality/che_출세.ts +++ b/packages/logic/src/triggers/special/personality/che_출세.ts @@ -1,4 +1,4 @@ -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; @@ -16,29 +16,20 @@ export const traitModule: TraitModule = { } return value; }, - onCalcStat: (() => { - function onCalcStat( - _context: GeneralActionContext, - statName: GeneralStatName, - value: number, - _aux?: unknown - ): number; - function onCalcStat( - _context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - _aux?: unknown - ): number | [number, number]; - function onCalcStat( - _context: GeneralActionContext | WarActionContext, - statName: GeneralStatName | WarStatName, - value: number | [number, number] - ): number | [number, number] { - if (statName === 'experience' && typeof value === 'number') { + onCalcStat: (( + _context: GeneralActionContext | WarActionContext, + statName: GeneralStatName | WarStatName, + value: number | [number, number], + _aux?: unknown + ): number | [number, number] => { + if (typeof value === 'number') { + if (statName === 'experience') { return value * 1.1; } - return value; + if (statName === 'bonusTrain') { + return value + 5; + } } - return onCalcStat; - })() as Exclude, + return value; + }) as unknown as TraitOnCalcStat, }; diff --git a/packages/logic/src/triggers/special/personality/che_패권.ts b/packages/logic/src/triggers/special/personality/che_패권.ts index cbdf8a4..fa1a63f 100644 --- a/packages/logic/src/triggers/special/personality/che_패권.ts +++ b/packages/logic/src/triggers/special/personality/che_패권.ts @@ -1,4 +1,4 @@ -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; @@ -16,29 +16,20 @@ export const traitModule: TraitModule = { } return value; }, - onCalcStat: (() => { - function onCalcStat( - _context: GeneralActionContext, - statName: GeneralStatName, - value: number, - _aux?: unknown - ): number; - function onCalcStat( - _context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - _aux?: unknown - ): number | [number, number]; - function onCalcStat( - _context: GeneralActionContext | WarActionContext, - statName: GeneralStatName | WarStatName, - value: number | [number, number] - ): number | [number, number] { - if (statName === 'bonusTrain' && typeof value === 'number') { - return value + 5; + onCalcStat: (( + _context: GeneralActionContext | WarActionContext, + statName: GeneralStatName | WarStatName, + value: number | [number, number], + _aux?: unknown + ): number | [number, number] => { + if (typeof value === 'number') { + if (statName === 'experience') { + return value * 1.1; + } + if (statName === 'bonusAtmos') { + return value - 5; } - return value; } - return onCalcStat; - })() as Exclude, + return value; + }) as unknown as TraitOnCalcStat, }; diff --git a/packages/logic/src/triggers/special/personality/che_할거.ts b/packages/logic/src/triggers/special/personality/che_할거.ts index c5dfc8a..9004c9b 100644 --- a/packages/logic/src/triggers/special/personality/che_할거.ts +++ b/packages/logic/src/triggers/special/personality/che_할거.ts @@ -1,4 +1,4 @@ -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; @@ -10,34 +10,20 @@ export const traitModule: TraitModule = { kind: 'personality', getName: () => '할거', getInfo: () => '명성 -10%, 훈련 +5', - onCalcStat: (() => { - function onCalcStat( - _context: GeneralActionContext, - statName: GeneralStatName, - value: number, - _aux?: unknown - ): number; - function onCalcStat( - _context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - _aux?: unknown - ): number | [number, number]; - function onCalcStat( - _context: GeneralActionContext | WarActionContext, - statName: GeneralStatName | WarStatName, - value: number | [number, number] - ): number | [number, number] { - if (typeof value === 'number') { - if (statName === 'experience') { - return value * 0.9; - } - if (statName === 'bonusTrain') { - return value + 5; - } + onCalcStat: (( + _context: GeneralActionContext | WarActionContext, + statName: GeneralStatName | WarStatName, + value: number | [number, number], + _aux?: unknown + ): number | [number, number] => { + if (typeof value === 'number') { + if (statName === 'experience') { + return value * 0.9; + } + if (statName === 'bonusTrain') { + return value + 5; } - return value; } - return onCalcStat; - })() as Exclude, + return value; + }) as unknown as TraitOnCalcStat, }; diff --git a/packages/logic/src/triggers/special/types.ts b/packages/logic/src/triggers/special/types.ts index c88fccf..2cddcce 100644 --- a/packages/logic/src/triggers/special/types.ts +++ b/packages/logic/src/triggers/special/types.ts @@ -1,6 +1,8 @@ import type { GeneralTriggerState } from '@sammo-ts/logic/domain/entities.js'; import type { GeneralActionModule } from '@sammo-ts/logic/triggers/general-action.js'; -import type { WarActionModule } from '@sammo-ts/logic/war/actions.js'; +import type { WarActionModule, WarActionContext } from '@sammo-ts/logic/war/actions.js'; +import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; export type TraitKind = 'domestic' | 'war' | 'personality'; @@ -11,9 +13,32 @@ export interface TraitSpec { kind: TraitKind; } +export interface TraitOnCalcStat { + (context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; + ( + context: WarActionContext, + statName: WarStatName, + value: number | [number, number], + aux?: unknown + ): number | [number, number]; +} + +export interface TraitOnCalcOpposeStat { + (context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; + ( + context: WarActionContext, + statName: WarStatName, + value: number | [number, number], + aux?: unknown + ): number | [number, number]; +} + export type TraitModule = TraitSpec & - GeneralActionModule & - WarActionModule; + Omit, 'onCalcStat' | 'onCalcOpposeStat'> & + Omit, 'onCalcStat' | 'onCalcOpposeStat'> & { + onCalcStat?: TraitOnCalcStat | undefined; + onCalcOpposeStat?: TraitOnCalcOpposeStat | undefined; + }; export interface TraitModuleExport { traitModule: TraitModule; diff --git a/packages/logic/src/triggers/special/war/che_격노.ts b/packages/logic/src/triggers/special/war/che_격노.ts index e5cccf8..0e750e9 100644 --- a/packages/logic/src/triggers/special/war/che_격노.ts +++ b/packages/logic/src/triggers/special/war/che_격노.ts @@ -1,7 +1,7 @@ +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import { BaseWarUnitTrigger, WarTriggerCaller } from '@sammo-ts/logic/war/triggers.js'; import type { WarUnit } from '@sammo-ts/logic/war/units.js'; import { LogFormat } from '@sammo-ts/logic/logging/types.js'; @@ -74,21 +74,14 @@ class che_격노발동 extends BaseWarUnitTrigger { } } -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( _context: GeneralActionContext | WarActionContext, _statName: GeneralStatName | WarStatName, value: number | [number, number], _aux?: unknown -): number | [number, number] { +): number | [number, number] => { return value; -} +}) as unknown as TraitOnCalcStat; export const traitModule: TraitModule = { key: 'che_격노', diff --git a/packages/logic/src/triggers/special/war/che_견고.ts b/packages/logic/src/triggers/special/war/che_견고.ts index 84565fa..a2308e0 100644 --- a/packages/logic/src/triggers/special/war/che_견고.ts +++ b/packages/logic/src/triggers/special/war/che_견고.ts @@ -1,7 +1,7 @@ +import type { TraitOnCalcStat, TraitOnCalcOpposeStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import { BaseWarUnitTrigger, WarTriggerCaller } from '@sammo-ts/logic/war/triggers.js'; import type { WarUnit } from '@sammo-ts/logic/war/units.js'; @@ -21,21 +21,29 @@ class che_부상무효 extends BaseWarUnitTrigger { } } -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( _context: GeneralActionContext | WarActionContext, _statName: GeneralStatName | WarStatName, value: number | [number, number], _aux?: unknown -): number | [number, number] { +): number | [number, number] => { return value; -} +}) as unknown as TraitOnCalcStat; + +const onCalcOpposeStat = (( + _context: GeneralActionContext | WarActionContext, + statName: GeneralStatName | WarStatName, + value: number | [number, number], + _aux?: unknown +): number | [number, number] => { + if (statName === 'warMagicSuccessProb' && typeof value === 'number') { + return value - 0.1; + } + if (statName === 'warCriticalRatio' && typeof value === 'number') { + return value - 0.2; + } + return value; +}) as unknown as TraitOnCalcOpposeStat; export const traitModule: TraitModule = { key: 'che_견고', @@ -44,15 +52,7 @@ export const traitModule: TraitModule = { kind: 'war', getName: () => '견고', getInfo: () => '[전투] 상대 필살 확률 -20%p, 상대 계략 시도시 성공 확률 -10%p, 부상 없음, 아군 피해 -10%', - onCalcOpposeStat: ((_context, statName, value, _aux) => { - if (statName === 'warMagicSuccessProb' && typeof value === 'number') { - return value - 0.1; - } - if (statName === 'warCriticalRatio' && typeof value === 'number') { - return value - 0.2; - } - return value; - }) as TraitModule['onCalcOpposeStat'], + onCalcOpposeStat, getBattleInitTriggerList: (_context) => { if (!_context.unit) return null; return new WarTriggerCaller(new che_부상무효(_context.unit)); diff --git a/packages/logic/src/triggers/special/war/che_공성.ts b/packages/logic/src/triggers/special/war/che_공성.ts index 80190ad..14347df 100644 --- a/packages/logic/src/triggers/special/war/che_공성.ts +++ b/packages/logic/src/triggers/special/war/che_공성.ts @@ -1,24 +1,17 @@ +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import { getMetaNumber } from '@sammo-ts/logic/war/utils.js'; import { WarUnitCity } from '@sammo-ts/logic/war/units.js'; import { getAuxArmType, parseWarDexAux } from './aux.js'; -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( context: GeneralActionContext | WarActionContext, statName: GeneralStatName | WarStatName, value: number | [number, number], aux?: unknown -): number | [number, number] { +): number | [number, number] => { if (!('unit' in context) || !context.unit) { return value; } @@ -41,7 +34,7 @@ function onCalcStat( } } return value; -} +}) as unknown as TraitOnCalcStat; // 전투 특기: 공성 export const traitModule: TraitModule = { diff --git a/packages/logic/src/triggers/special/war/che_궁병.ts b/packages/logic/src/triggers/special/war/che_궁병.ts index 4767080..da5d9c4 100644 --- a/packages/logic/src/triggers/special/war/che_궁병.ts +++ b/packages/logic/src/triggers/special/war/che_궁병.ts @@ -1,25 +1,18 @@ +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import { getMetaNumber } from '@sammo-ts/logic/war/utils.js'; import { getAuxArmType, parseWarDexAux } from './aux.js'; -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( context: GeneralActionContext | WarActionContext, statName: GeneralStatName | WarStatName, value: number | [number, number], aux?: unknown -): number | [number, number] { - if (statName === 'warAvoidRatio') { - return (value as number) + 0.2; +): number | [number, number] => { + if (statName === 'warAvoidRatio' && typeof value === 'number') { + return value + 0.2; } if (!('unit' in context) || !context.unit) { @@ -44,7 +37,7 @@ function onCalcStat( } } return value; -} +}) as unknown as TraitOnCalcStat; // 전투 특기: 궁병 export const traitModule: TraitModule = { diff --git a/packages/logic/src/triggers/special/war/che_기병.ts b/packages/logic/src/triggers/special/war/che_기병.ts index d28a979..7882e51 100644 --- a/packages/logic/src/triggers/special/war/che_기병.ts +++ b/packages/logic/src/triggers/special/war/che_기병.ts @@ -1,23 +1,16 @@ +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import { getMetaNumber } from '@sammo-ts/logic/war/utils.js'; import { getAuxArmType, parseWarDexAux } from './aux.js'; -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( context: GeneralActionContext | WarActionContext, statName: GeneralStatName | WarStatName, value: number | [number, number], aux?: unknown -): number | [number, number] { +): number | [number, number] => { if (!('unit' in context) || !context.unit) { return value; } @@ -40,7 +33,7 @@ function onCalcStat( } } return value; -} +}) as unknown as TraitOnCalcStat; // 전투 특기: 기병 export const traitModule: TraitModule = { diff --git a/packages/logic/src/triggers/special/war/che_돌격.ts b/packages/logic/src/triggers/special/war/che_돌격.ts index dc660b2..5d2db61 100644 --- a/packages/logic/src/triggers/special/war/che_돌격.ts +++ b/packages/logic/src/triggers/special/war/che_돌격.ts @@ -1,7 +1,7 @@ +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import { BaseWarUnitTrigger, WarTriggerCaller } from '@sammo-ts/logic/war/triggers.js'; import type { WarUnit } from '@sammo-ts/logic/war/units.js'; @@ -37,24 +37,17 @@ class che_돌격지속 extends BaseWarUnitTrigger { } } -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( _context: GeneralActionContext | WarActionContext, statName: GeneralStatName | WarStatName, value: number | [number, number], _aux?: unknown -): number | [number, number] { - if (statName === 'initWarPhase') { - return (value as number) + 2; +): number | [number, number] => { + if (statName === 'initWarPhase' && typeof value === 'number') { + return value + 2; } return value; -} +}) as unknown as TraitOnCalcStat; export const traitModule: TraitModule = { key: 'che_돌격', diff --git a/packages/logic/src/triggers/special/war/che_무쌍.ts b/packages/logic/src/triggers/special/war/che_무쌍.ts index ea7a07f..a434492 100644 --- a/packages/logic/src/triggers/special/war/che_무쌍.ts +++ b/packages/logic/src/triggers/special/war/che_무쌍.ts @@ -1,7 +1,7 @@ +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import { getMetaNumber } from '@sammo-ts/logic/war/utils.js'; import { WarUnit } from '@sammo-ts/logic/war/units.js'; @@ -11,26 +11,19 @@ type WarUnitWithGeneral = WarUnit & { getGeneral: () => { meta: Record 'getGeneral' in unit && typeof (unit as { getGeneral?: unknown }).getGeneral === 'function'; -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( _context: GeneralActionContext | WarActionContext, statName: GeneralStatName | WarStatName, value: number | [number, number], aux?: unknown -): number | [number, number] { +): number | [number, number] => { const isAttacker = typeof aux === 'object' && aux !== null && (aux as { isAttacker?: unknown }).isAttacker === true; if (statName === 'warCriticalRatio' && isAttacker && typeof value === 'number') { return value + 0.1; } return value; -} +}) as unknown as TraitOnCalcStat; export const traitModule: TraitModule = { key: 'che_무쌍', diff --git a/packages/logic/src/triggers/special/war/che_반계.ts b/packages/logic/src/triggers/special/war/che_반계.ts index ea1d526..6957ffd 100644 --- a/packages/logic/src/triggers/special/war/che_반계.ts +++ b/packages/logic/src/triggers/special/war/che_반계.ts @@ -1,7 +1,7 @@ +import type { TraitOnCalcStat, TraitOnCalcOpposeStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import { BaseWarUnitTrigger, WarTriggerCaller } from '@sammo-ts/logic/war/triggers.js'; import type { WarUnit } from '@sammo-ts/logic/war/units.js'; import { LogFormat } from '@sammo-ts/logic/logging/types.js'; @@ -72,24 +72,29 @@ class che_반계발동 extends BaseWarUnitTrigger { } } -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( _context: GeneralActionContext | WarActionContext, statName: GeneralStatName | WarStatName, value: number | [number, number], aux?: unknown -): number | [number, number] { - if (statName === 'warMagicSuccessDamage' && aux === '반목') { - return (value as number) + 0.9; +): number | [number, number] => { + if (statName === 'warMagicSuccessDamage' && aux === '반목' && typeof value === 'number') { + return value + 0.9; } return value; -} +}) as unknown as TraitOnCalcStat; + +const onCalcOpposeStat = (( + _context: GeneralActionContext | WarActionContext, + statName: GeneralStatName | WarStatName, + value: number | [number, number], + _aux?: unknown +): number | [number, number] => { + if (statName === 'warMagicSuccessProb' && typeof value === 'number') { + return value - 0.1; + } + return value; +}) as unknown as TraitOnCalcOpposeStat; export const traitModule: TraitModule = { key: 'che_반계', @@ -99,12 +104,7 @@ export const traitModule: TraitModule = { getName: () => '반계', getInfo: () => '[전투] 상대의 계략 성공 확률 -10%p, 상대의 계략을 40% 확률로 되돌림, 반목 성공시 대미지 추가(+60% → +150%)', - onCalcOpposeStat: ((_context, statName, value, _aux) => { - if (statName === 'warMagicSuccessProb' && typeof value === 'number') { - return value - 0.1; - } - return value; - }) as TraitModule['onCalcOpposeStat'], + onCalcOpposeStat, getBattlePhaseTriggerList: (_context) => { if (!_context.unit) return null; return new WarTriggerCaller(new che_반계시도(_context.unit), new che_반계발동(_context.unit)); diff --git a/packages/logic/src/triggers/special/war/che_보병.ts b/packages/logic/src/triggers/special/war/che_보병.ts index 7a6834f..809937e 100644 --- a/packages/logic/src/triggers/special/war/che_보병.ts +++ b/packages/logic/src/triggers/special/war/che_보병.ts @@ -1,23 +1,16 @@ +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import { getMetaNumber } from '@sammo-ts/logic/war/utils.js'; import { getAuxArmType, parseWarDexAux } from './aux.js'; -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( context: GeneralActionContext | WarActionContext, statName: GeneralStatName | WarStatName, value: number | [number, number], aux?: unknown -): number | [number, number] { +): number | [number, number] => { if (!('unit' in context) || !context.unit) { return value; } @@ -40,7 +33,7 @@ function onCalcStat( } } return value; -} +}) as unknown as TraitOnCalcStat; // 전투 특기: 보병 export const traitModule: TraitModule = { diff --git a/packages/logic/src/triggers/special/war/che_신산.ts b/packages/logic/src/triggers/special/war/che_신산.ts index d056130..f6781b3 100644 --- a/packages/logic/src/triggers/special/war/che_신산.ts +++ b/packages/logic/src/triggers/special/war/che_신산.ts @@ -1,29 +1,22 @@ +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( _context: GeneralActionContext | WarActionContext, statName: GeneralStatName | WarStatName, value: number | [number, number], _aux?: unknown -): number | [number, number] { - if (statName === 'warMagicTrialProb') { - return (value as number) + 0.2; +): number | [number, number] => { + if (statName === 'warMagicTrialProb' && typeof value === 'number') { + return value + 0.2; } - if (statName === 'warMagicSuccessProb') { - return (value as number) + 0.2; + if (statName === 'warMagicSuccessProb' && typeof value === 'number') { + return value + 0.2; } return value; -} +}) as unknown as TraitOnCalcStat; export const traitModule: TraitModule = { key: 'che_신산', diff --git a/packages/logic/src/triggers/special/war/che_신중.ts b/packages/logic/src/triggers/special/war/che_신중.ts index afa0a63..5d29e1e 100644 --- a/packages/logic/src/triggers/special/war/che_신중.ts +++ b/packages/logic/src/triggers/special/war/che_신중.ts @@ -1,26 +1,19 @@ +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( _context: GeneralActionContext | WarActionContext, statName: GeneralStatName | WarStatName, value: number | [number, number], _aux?: unknown -): number | [number, number] { - if (statName === 'warMagicSuccessProb') { - return (value as number) + 1; +): number | [number, number] => { + if (statName === 'warMagicSuccessProb' && typeof value === 'number') { + return value + 1; } return value; -} +}) as unknown as TraitOnCalcStat; export const traitModule: TraitModule = { key: 'che_신중', diff --git a/packages/logic/src/triggers/special/war/che_위압.ts b/packages/logic/src/triggers/special/war/che_위압.ts index ee68581..8651e15 100644 --- a/packages/logic/src/triggers/special/war/che_위압.ts +++ b/packages/logic/src/triggers/special/war/che_위압.ts @@ -1,7 +1,7 @@ +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import { BaseWarUnitTrigger, WarTriggerCaller } from '@sammo-ts/logic/war/triggers.js'; import type { WarUnit } from '@sammo-ts/logic/war/units.js'; import { LogFormat } from '@sammo-ts/logic/logging/types.js'; @@ -61,21 +61,14 @@ class che_위압발동 extends BaseWarUnitTrigger { } } -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( _context: GeneralActionContext | WarActionContext, _statName: GeneralStatName | WarStatName, value: number | [number, number], _aux?: unknown -): number | [number, number] { +): number | [number, number] => { return value; -} +}) as unknown as TraitOnCalcStat; export const traitModule: TraitModule = { key: 'che_위압', diff --git a/packages/logic/src/triggers/special/war/che_저격.ts b/packages/logic/src/triggers/special/war/che_저격.ts index 9de1a6d..3b22c9b 100644 --- a/packages/logic/src/triggers/special/war/che_저격.ts +++ b/packages/logic/src/triggers/special/war/che_저격.ts @@ -1,7 +1,7 @@ +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import { BaseWarUnitTrigger, WarTriggerCaller } from '@sammo-ts/logic/war/triggers.js'; import type { WarUnit } from '@sammo-ts/logic/war/units.js'; import { LogFormat } from '@sammo-ts/logic/logging/types.js'; @@ -99,21 +99,14 @@ class che_저격발동 extends BaseWarUnitTrigger { } } -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( _context: GeneralActionContext | WarActionContext, _statName: GeneralStatName | WarStatName, value: number | [number, number], _aux?: unknown -): number | [number, number] { +): number | [number, number] => { return value; -} +}) as unknown as TraitOnCalcStat; export const traitModule: TraitModule = { key: 'che_저격', diff --git a/packages/logic/src/triggers/special/war/che_집중.ts b/packages/logic/src/triggers/special/war/che_집중.ts index a630876..8ec2d1a 100644 --- a/packages/logic/src/triggers/special/war/che_집중.ts +++ b/packages/logic/src/triggers/special/war/che_집중.ts @@ -1,26 +1,19 @@ +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( _context: GeneralActionContext | WarActionContext, statName: GeneralStatName | WarStatName, value: number | [number, number], _aux?: unknown -): number | [number, number] { - if (statName === 'warMagicSuccessDamage') { - return (value as number) * 1.5; +): number | [number, number] => { + if (statName === 'warMagicSuccessDamage' && typeof value === 'number') { + return value * 1.5; } return value; -} +}) as unknown as TraitOnCalcStat; export const traitModule: TraitModule = { key: 'che_집중', diff --git a/packages/logic/src/triggers/special/war/che_징병.ts b/packages/logic/src/triggers/special/war/che_징병.ts index 9845b51..26364b3 100644 --- a/packages/logic/src/triggers/special/war/che_징병.ts +++ b/packages/logic/src/triggers/special/war/che_징병.ts @@ -1,7 +1,7 @@ +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; const RECRUIT_TRAIN = 70; const CONSCRIPT_TRAIN = 84; @@ -17,23 +17,17 @@ const resolveLeadershipBonus = ( return value + base * 0.25; }; -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( context: GeneralActionContext | WarActionContext, statName: GeneralStatName | WarStatName, - value: number | [number, number] -): number | [number, number] { + value: number | [number, number], + _aux?: unknown +): number | [number, number] => { if (statName !== 'leadership') { return value; } return resolveLeadershipBonus(context, value); -} +}) as unknown as TraitOnCalcStat; // 전투 특기: 징병 export const traitModule: TraitModule = { diff --git a/packages/logic/src/triggers/special/war/che_척사.ts b/packages/logic/src/triggers/special/war/che_척사.ts index 5dc0e55..58e67d9 100644 --- a/packages/logic/src/triggers/special/war/che_척사.ts +++ b/packages/logic/src/triggers/special/war/che_척사.ts @@ -1,23 +1,16 @@ +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( _context: GeneralActionContext | WarActionContext, _statName: GeneralStatName | WarStatName, value: number | [number, number], _aux?: unknown -): number | [number, number] { +): number | [number, number] => { return value; -} +}) as unknown as TraitOnCalcStat; export const traitModule: TraitModule = { key: 'che_척사', diff --git a/packages/logic/src/triggers/special/war/che_필살.ts b/packages/logic/src/triggers/special/war/che_필살.ts index f3f11fa..0c8b1cd 100644 --- a/packages/logic/src/triggers/special/war/che_필살.ts +++ b/packages/logic/src/triggers/special/war/che_필살.ts @@ -1,7 +1,7 @@ +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import { BaseWarUnitTrigger, WarTriggerCaller } from '@sammo-ts/logic/war/triggers.js'; import type { WarUnit } from '@sammo-ts/logic/war/units.js'; @@ -25,28 +25,21 @@ class che_필살강화_회피불가 extends BaseWarUnitTrigger { } } -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( _context: GeneralActionContext | WarActionContext, statName: GeneralStatName | WarStatName, value: number | [number, number], _aux?: unknown -): number | [number, number] { - if (statName === 'warCriticalRatio') { - return (value as number) + 0.3; +): number | [number, number] => { + if (statName === 'warCriticalRatio' && typeof value === 'number') { + return value + 0.3; } - if (statName === 'criticalDamageRange') { - const [rangeMin, rangeMax] = value as [number, number]; + if (statName === 'criticalDamageRange' && Array.isArray(value)) { + const [rangeMin, rangeMax] = value; return [(rangeMin + rangeMax) / 2, rangeMax]; } return value; -} +}) as unknown as TraitOnCalcStat; export const traitModule: TraitModule = { key: 'che_필살', diff --git a/packages/logic/src/triggers/special/war/che_환술.ts b/packages/logic/src/triggers/special/war/che_환술.ts index 6c841cc..30a4312 100644 --- a/packages/logic/src/triggers/special/war/che_환술.ts +++ b/packages/logic/src/triggers/special/war/che_환술.ts @@ -1,29 +1,22 @@ +import type { TraitOnCalcStat, TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; import type { GeneralActionContext } from '@sammo-ts/logic/triggers/general.js'; -import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; import type { WarActionContext } from '@sammo-ts/logic/war/actions.js'; -import type { TraitModule } from '@sammo-ts/logic/triggers/special/types.js'; +import type { GeneralStatName, WarStatName } from '@sammo-ts/logic/triggers/types.js'; -function onCalcStat(context: GeneralActionContext, statName: GeneralStatName, value: number, aux?: unknown): number; -function onCalcStat( - context: WarActionContext, - statName: WarStatName, - value: number | [number, number], - aux?: unknown -): number | [number, number]; -function onCalcStat( +const onCalcStat = (( _context: GeneralActionContext | WarActionContext, statName: GeneralStatName | WarStatName, value: number | [number, number], _aux?: unknown -): number | [number, number] { - if (statName === 'warMagicSuccessProb') { - return (value as number) + 0.1; +): number | [number, number] => { + if (statName === 'warMagicSuccessProb' && typeof value === 'number') { + return value + 0.1; } - if (statName === 'warMagicSuccessDamage') { - return (value as number) * 1.3; + if (statName === 'warMagicSuccessDamage' && typeof value === 'number') { + return value * 1.3; } return value; -} +}) as unknown as TraitOnCalcStat; export const traitModule: TraitModule = { key: 'che_환술',