@zerospacegg/iolin
Version:
Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)
62 lines • 2.05 kB
TypeScript
/**
* Faction - Base faction class for ZeroSpace factions
* Ported from faction.pkl with static properties for subclasses
*/
import { FactionTalent } from "./ability.js";
import { Entity } from "./entity.js";
export type FactionType = "main" | "mercenary" | "nonplayer";
/**
* Base Faction class - extends Entity with faction-specific properties
* Usage: new Faction("Grell", (faction) => { faction.mercHeroesAllowed = false; })
*/
export declare abstract class Faction extends Entity {
get type(): string;
static factionSlug: string;
static factionName: string;
mercHeroesAllowed: boolean;
heroes: string[];
units: string[];
buildings: string[];
guestHeroes: string[];
topbars: Record<string, any>;
talents: Record<string, FactionTalent>;
commanders: Record<string, any>;
abstract get factionType(): FactionType;
get slug(): string;
/**
* Wire up unlock relationships by reading unlockedBy and setting unlocked states
* Call this at the end of faction constructor to set up dependencies
*/
wireUpUnlocks(): void;
/** Get all child entity IDs for ecosystem linking - includes topbars and talents */
get children(): Record<string, [string, string]>;
/**
* JSON.stringify() calls this automatically
*/
toJSON(): Record<string, any>;
}
export declare abstract class MainFaction extends Faction {
get subtype(): FactionType;
get factionType(): FactionType;
constructor();
private addBaseFactionTalents;
get techTree(): {
faction: string;
mainBase: any;
builder: any;
harvester: any;
supply: any;
tree: any;
};
get unitClasses(): any[];
get buildingClasses(): any[];
}
export declare abstract class MercFaction extends Faction {
get subtype(): FactionType;
get factionType(): FactionType;
}
export declare abstract class NonPlayerFaction extends Faction {
get subtype(): FactionType;
get factionType(): FactionType;
}
//# sourceMappingURL=faction.d.ts.map