UNPKG

@zerospacegg/iolin

Version:

Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)

62 lines 2.05 kB
/** * 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