feat: add special action modules for domestic and war triggers

- Implemented '발명' and '인덕' domestic special action modules with modifiers for technology research and population management.
- Added '의술' and '징병' war special action modules to enhance healing and recruitment capabilities during battles.
- Created a general trigger for city healing in '의술' and integrated it with the war action pipeline.
- Developed a comprehensive registry and loader for special action modules to streamline their usage in the game logic.
- Enhanced test coverage for special action modules, ensuring correct application of modifiers and trigger functionalities.
This commit is contained in:
2026-01-03 08:01:04 +00:00
parent eb361e1bed
commit 64953e39a5
29 changed files with 1250 additions and 28 deletions
@@ -1,3 +1,5 @@
import type { GeneralActionModule } from '../../triggers/general-action.js';
export interface TurnCommandEnv {
develCost: number;
trainDelta: number;
@@ -21,4 +23,5 @@ export interface TurnCommandEnv {
baseGold: number;
baseRice: number;
maxResourceActionAmount: number;
generalActionModules?: Array<GeneralActionModule>;
}
@@ -431,5 +431,6 @@ export const commandSpec: GeneralTurnCommandSpec = {
category: '내정',
reqArg: false,
args: {},
createDefinition: (env: TurnCommandEnv) => new ActionDefinition([], env),
createDefinition: (env: TurnCommandEnv) =>
new ActionDefinition(env.generalActionModules ?? [], env),
};
@@ -473,5 +473,6 @@ export const commandSpec: GeneralTurnCommandSpec = {
category: '인사',
reqArg: false,
args: {},
createDefinition: (env: TurnCommandEnv) => new ActionDefinition([], env),
createDefinition: (env: TurnCommandEnv) =>
new ActionDefinition(env.generalActionModules ?? [], env),
};
@@ -614,5 +614,6 @@ export const commandSpec: GeneralTurnCommandSpec = {
category: '내정',
reqArg: true,
args: {},
createDefinition: (_env: TurnCommandEnv) => new ActionDefinition([], {}),
createDefinition: (env: TurnCommandEnv) =>
new ActionDefinition(env.generalActionModules ?? [], {}),
};
@@ -504,5 +504,6 @@ export const commandSpec: GeneralTurnCommandSpec = {
category: '계략',
reqArg: true,
args: { destCityId: 0 },
createDefinition: (env: TurnCommandEnv) => new ActionDefinition([], env),
createDefinition: (env: TurnCommandEnv) =>
new ActionDefinition(env.generalActionModules ?? [], env),
};
@@ -450,5 +450,6 @@ export const commandSpec: NationTurnCommandSpec = {
category: '전략',
reqArg: false,
args: {},
createDefinition: (env: TurnCommandEnv) => new ActionDefinition([], env),
createDefinition: (env: TurnCommandEnv) =>
new ActionDefinition(env.generalActionModules ?? [], env),
};