feat: add new war traits for various unit types

- Implemented '궁병' trait with bonuses for archer units, including reduced recruitment costs and increased evasion.
- Added '기병' trait providing cavalry units with damage bonuses and reduced recruitment costs.
- Introduced '돌격' trait enhancing attack phases and damage against equal or weaker unit types.
- Created '무쌍' trait that increases damage and reduces damage taken based on the number of victories.
- Developed '반계' trait to reduce enemy strategy success rates and reflect damage back.
- Added '보병' trait with reduced recruitment costs and damage penalties for allies during attacks.
- Implemented '신산' trait enhancing magic success rates for various strategies.
- Created '신중' trait guaranteeing strategy success.
- Added '위압' trait to activate pressure effects on the first phase of battle.
- Implemented '저격' trait allowing for a chance to activate a sniping effect against new opponents.
- Developed '집중' trait to increase damage on successful strategies.
- Created '척사' trait providing damage bonuses against regional and city units while reducing ally damage.
- Implemented '필살' trait enhancing critical hit chances and disabling enemy evasion on critical hits.
- Added '환술' trait to boost magic success rates and damage on successful magic attacks.
This commit is contained in:
2026-01-05 16:43:28 +00:00
parent cf93c28aff
commit 41339176ee
36 changed files with 1673 additions and 4 deletions
+8
View File
@@ -36,6 +36,14 @@ export class WarCrewType {
return this.definition.rice;
}
public reqCities(): boolean {
return this.definition.requirements.some((req) => req.type === 'ReqCities');
}
public reqRegions(): boolean {
return this.definition.requirements.some((req) => req.type === 'ReqRegions');
}
get initSkillTrigger(): string[] {
return this.definition.initSkillTrigger ?? [];
}
+4
View File
@@ -118,6 +118,10 @@ export abstract class WarUnit<TriggerState extends GeneralTriggerState = General
return this.unitId;
}
public getGameConfig(): WarEngineConfig {
return this.config;
}
public getNationVar(key: string): TriggerValue | null {
return resolveNationVar(this.nation, key);
}