- Add death explosions info

- Add mob bonus info
- Reworked abilities, add child objects
- Add unit morale break behaviour
- Rework UA mod frontend
This commit is contained in:
anibus
2026-03-14 15:05:45 +03:00
parent e0fe94b8ca
commit 9d4bb49713
23 changed files with 882 additions and 266 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
enum ArmorTypeValues {
enum ArmorTypeValues {
InfantryLow = 'Infantry Low',
InfantryMedium = 'Infantry Medium',
InfantryHigh = 'Infantry High',
+4 -7
View File
@@ -2,6 +2,8 @@ import {IModifier} from "./IModifier";
import {IRequirement} from "./IRequirement";
import {IArmorType} from "./IArmorType";
import {IAffectedData} from "./IAffectedData";
import {IPiercing} from "./IPiercing";
import {IAbilityEnvironment} from "./IAbilityEnvironment";
export interface IAbilityShort {
id: number;
@@ -32,7 +34,6 @@ export interface IAbilityFill {
rechargeTimerGlobal?: boolean;
refreshTime?: number;
durationTime?: number;
spawnedEntityName?: string;
radius?: number;
minDamage?: number;
minDamageValue?: number;
@@ -47,10 +48,6 @@ export interface IAbilityFill {
requirements?: IRequirement;
affectedData: IAffectedData,
targetFilter: IArmorType[];
piercings: IAbilityPiercing[];
}
export interface IAbilityPiercing {
armorType: IArmorType
piercingValue: number
piercings: IPiercing[];
abilityEnvironment: IAbilityEnvironment;
}
+26
View File
@@ -0,0 +1,26 @@
import {IModifier} from "./IModifier";
import {IRequirement} from "./IRequirement";
import {IArmorType} from "./IArmorType";
import {IAffectedData} from "./IAffectedData";
import {IAbilityShort} from "./IAbility";
import {IDeathExplosion} from "./IDeathExplosion";
export interface IAbilityEnvironment {
id: number;
modId: number;
filename: string;
name?: string | null;
description?: string | null;
icon?: string | null;
health?: number | null;
armour?: number | null;
healthRegeneration?: number | null;
moveSpeed?: number | null;
sightRadius?: number | null;
detectRadius?: number | null;
lifetime?: number | null;
armorType: IArmorType | null;
armorType2: IArmorType | null;
abilities: IAbilityShort[];
deathExplosions: IDeathExplosion[];
}
+2
View File
@@ -7,6 +7,7 @@ import {IRequirement} from "./IRequirement";
import {IResearchShort} from "./IResearchShort";
import {IAffectedData} from "./IAffectedData";
import {IAbilityShort} from "./IAbility";
import {IDeathExplosion} from "./IDeathExplosion";
export interface IBuilding {
id: number
@@ -42,6 +43,7 @@ export interface IBuilding {
units: IUnitShort[]
affectedResearches: IResearchShort[],
requirements: IRequirement,
deathExplosions: IDeathExplosion[],
hotkey: string
}
+22
View File
@@ -0,0 +1,22 @@
import {IModifier} from "./IModifier";
import {IRequirement} from "./IRequirement";
import {IArmorType} from "./IArmorType";
import {IAffectedData} from "./IAffectedData";
import {IAbilityShort} from "./IAbility";
import {IPiercing} from "./IPiercing";
export interface IDeathExplosion {
id?: number | null;
globalChance: number;
chance: number;
minDamage?: number ;
maxDamage?: number ;
minDamageValue?: number;
moraleDamage?: number;
damageRadius?: number | null;
throwForceMin?: number | null;
throwForceMax?: number | null;
modId?: number | null;
modifiers: IModifier[];
armorPiercing: IPiercing[];
}
+7
View File
@@ -0,0 +1,7 @@
import {IArmorType} from "./IArmorType";
export interface IPiercing {
armorType: IArmorType
piercingValue: number
}
+16
View File
@@ -1,21 +1,37 @@
import {IBuildingShort} from "./IBuildingShort";
import {IBuildingAddonShort} from "./IBuilding";
import {IResearchRequirements} from "./IResearchRequirements";
import {IUnitShort} from "./IUnitShort";
export interface IRequirement {
requirementBuildings: IBuildingShort[];
requirementBuildingsEither: IBuildingShort[];
requirementsGlobalAddons: IBuildingAddonShort[];
requirementResearches: IResearchRequirements[];
requirementSquads: IRequirementSquadsDto[];
requirementResearchesEither: IResearchRequirements[];
replaceWhenDone: Boolean;
requireAddon: IBuildingAddonShort;
requiredTotalPop?: number;
limitSquad?:number;
limitTech?:number;
limitByBuilding ?: IRequirementLimitByBuildingDto;
mobBonus?: IRequirementMobBonusDto;
requirementStructureExclusive?: IBuildingShort;
requirementAddonExclusive?: IBuildingAddonShort;
requiredOwnership: string[];
}
export interface IRequirementSquadsDto{
squad: IUnitShort;
count: number;
}
export interface IRequirementMobBonusDto{
mobvalueRequired: number;
proximityRequired: number;
}
export interface IRequirementLimitByBuildingDto{
building: IBuildingShort;
limit: number;
+8 -6
View File
@@ -5,6 +5,8 @@ import {IRequirement} from "./IRequirement";
import {IModifier} from "./IModifier";
import {IAffectedData} from "./IAffectedData";
import {IAbilityShort} from "./IAbility";
import {IPiercing} from "./IPiercing";
import {IDeathExplosion} from "./IDeathExplosion";
export interface IUnitResponse {
race: string
@@ -54,6 +56,7 @@ export interface IUnit {
faithIncome?: number
powerIncome?: number
requisitionIncome?: number
mobValue?: number
icon: string
modId: number
requirements: IRequirement
@@ -61,9 +64,11 @@ export interface IUnit {
sergeants: ISergeant[]
weapons: WeaponHardpoint[]
modifiers: IModifier[]
moraleBrakeModifiers: IModifier[]
abilities: IAbilityShort[]
affectedData: IAffectedData,
affectedResearches: IResearchShort[],
deathExplosions: IDeathExplosion[],
hotkey?: string,
}
@@ -83,6 +88,7 @@ export interface ISergeant {
faithIncome?: number
powerIncome?: number
requisitionIncome?: number
mobValue?: number
health: number
armour?: number
healthRegeneration: number
@@ -100,6 +106,7 @@ export interface ISergeant {
weapons: WeaponHardpoint[]
abilities: IAbilityShort[]
affectedResearches: IResearchShort[],
deathExplosions: IDeathExplosion[],
hotkey?: string,
}
@@ -147,13 +154,8 @@ export interface IWeapon {
modId: number
requirements: IRequirement
modifiers: IModifier[]
weaponArmorPiercing: IWeaponPiercing[]
weaponArmorPiercing: IPiercing[]
affectedResearches: IResearchShort[],
hotkey?: string,
}
export interface IWeaponPiercing {
armorType: IArmorType
piercingValue: number
}