@zerospacegg/iolin
Version:
Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)
219 lines • 8.82 kB
JavaScript
/**
* Protectorate Main Faction
* Technological human faction focused on engineering excellence and adaptive warfare
*
* Faction structure:
* - Advanced technological superiority through superior planning
* - Modular design and systematic coordination
* - Scientific methodology and continuous innovation
* - Adaptive engineering and tactical flexibility
* - Combined arms warfare and force multiplication
*/
import { MainFaction } from "../../engine/faction.js";
// Import all Protectorate entities
import AdvancedFactory from "./protectorate/building/advanced-factory.js";
import Airstrip from "./protectorate/building/airstrip.js";
import Factory from "./protectorate/building/factory.js";
import LightTurret from "./protectorate/building/light-turret.js";
import MechanicalResearchLab from "./protectorate/building/mechanical-research-lab.js";
import OperatingTower from "./protectorate/building/operating-tower.js";
import ProtBarracks from "./protectorate/building/prot-barracks.js";
import ProtExtractor from "./protectorate/building/prot-extractor.js";
import ResearchLab from "./protectorate/building/research-lab.js";
import SpecializedResearchLab from "./protectorate/building/specialized-research-lab.js";
import SupplyPlatform from "./protectorate/building/supply-platform.js";
import Bastion from "./protectorate/unit/bastion.js";
import Commando from "./protectorate/unit/commando.js";
import Cyclops from "./protectorate/unit/cyclops.js";
import Griffin from "./protectorate/unit/griffin.js";
import Hellfire from "./protectorate/unit/hellfire.js";
import Ironwing from "./protectorate/unit/ironwing.js";
import Juggernaut from "./protectorate/unit/juggernaut.js";
import Predator from "./protectorate/unit/predator.js";
import ProtBuildDrone from "./protectorate/unit/prot-build-drone.js";
import ProtHarvester from "./protectorate/unit/prot-harvester.js";
import ProtScoutDrone from "./protectorate/unit/prot-scout-drone.js";
import SolInvictus from "./protectorate/unit/sol-invictus.js";
import Strider from "./protectorate/unit/strider.js";
import Titan from "./protectorate/unit/titan.js";
import { MeraCoop } from "../coop/commander/mera-commander.js";
import Mera from "./protectorate/hero/mera.js";
import PrefectAster from "./protectorate/hero/prefect-aster.js";
import TechHero from "./protectorate/hero/tech-hero.js";
import { ProtectorateTalent, ProtectorateTopbar } from "./protectorate-classes.js";
/**
* Protectorate Faction Entity - Modern Class Architecture
*/
class ProtectorateFactionEntity extends MainFaction {
constructor() {
super();
this.name = "Protectorate";
this.uuid = "91c4e008-9cef-40b5-aeea-cf74df4838f3";
// Set faction properties
this.faction = "protectorate";
this.factionName = "Protectorate";
// Faction lore
// Faction settings
this.mercHeroesAllowed = true;
this.description = `Technological human faction focused on engineering excellence, adaptive warfare, and systematic coordination. The Protectorate excels at combined arms tactics with modular systems, multi-role units, and progressive research trees. Their superior planning, technological innovation, and force multiplication through advanced engineering ensure human survival and dominance through methodical application of technological superiority.`;
// Add all buildings
this.buildings = [
OperatingTower.id,
Factory.id,
AdvancedFactory.id,
ProtBarracks.id,
ResearchLab.id,
MechanicalResearchLab.id,
SupplyPlatform.id,
Airstrip.id,
LightTurret.id,
ProtExtractor.id,
SpecializedResearchLab.id,
];
// Add all units
this.units = [
ProtBuildDrone.id,
ProtHarvester.id,
ProtScoutDrone.id,
Commando.id,
Bastion.id,
Predator.id,
Ironwing.id,
Hellfire.id,
Titan.id,
Cyclops.id,
Juggernaut.id,
Strider.id,
Griffin.id,
SolInvictus.id,
];
// Add heroes
this.heroes = [PrefectAster.id, TechHero.id, Mera.id];
// Add commanders
this.commanders = [MeraCoop.id];
// Set Protectorate-specific topbars
this.topbars.beamUp = new ProtectorateTopbar({
name: "Beam Up",
topbarType: "recall",
slot: 1,
description: "Teleports selected units back to base",
hotkey: "Q",
});
this.topbars.protectiveShield = new ProtectorateTopbar({
name: "Protective Shield",
topbarType: "special",
slot: 2,
description: "Grants shield equal to 30% max HP + 50. Increases current and maximum veterancy by 1",
hotkey: "W",
energyCost: 25,
cooldown: 45,
});
this.topbars.airstrike = new ProtectorateTopbar({
name: "Airstrike",
topbarType: "ultimate",
slot: 3,
description: "Devastating airstrike attack",
hotkey: "E",
energyCost: 75,
cooldown: 120,
});
this.topbars.weaponX = new ProtectorateTopbar({
name: "Weapon X",
topbarType: "ultimate",
slot: 4,
description: "Experimental weapon deployment",
hotkey: "R",
energyCost: 100,
cooldown: 180,
});
// Set Protectorate-specific talents
this.talents.improvedBeamUp = new ProtectorateTalent({
name: "Improved Beam Up",
level: 1,
description: "Beam Up has reduced cooldown and energy cost",
});
this.talents.improvedVeterancy = new ProtectorateTalent({
name: "Improved Veterancy",
level: 1,
description: "Units gain experience faster and veterancy bonuses are increased",
});
this.talents.productionEfficiency = new ProtectorateTalent({
name: "Production Efficiency",
level: 2,
description: "All production buildings build units 25% faster",
});
this.talents.reinforcements = new ProtectorateTalent({
name: "Reinforcements",
level: 3,
description: "Unlocks reinforcement deployments near Operating Tower with 45 second cooldown",
});
this.talents.protectiveShieldPlus = new ProtectorateTalent({
name: "Protective Shield+",
level: 3,
description: "Protective Shield grants +2 veterancy instead of +1",
});
this.talents.advancedWeaponry = new ProtectorateTalent({
name: "Advanced Weaponry",
level: 4,
description: "All units gain +15% damage and improved weapon systems",
});
this.talents.airstrike = new ProtectorateTalent({
name: "Airstrike",
level: 5,
description: "Unlocks the Airstrike topbar ability",
unlockedBy: [this.topbars.airstrike.id],
});
this.talents.solInvictus = new ProtectorateTalent({
name: "Sol Invictus",
level: 5,
description: "Unlocks the legendary Sol Invictus unit",
});
this.talents.veterancySuperiority = new ProtectorateTalent({
name: "Veterancy Superiority",
level: 6,
description: "All units gain 1 veterancy immediately. New units start with 1 veterancy",
});
// Set up talent-topbar unlock relationships
this.talents.airstrike.apply = () => {
this.topbars.airstrike.unlocked = true;
};
}
// Provide entity classes for techTree generation
get buildingClasses() {
return [
OperatingTower,
ProtExtractor,
SupplyPlatform,
ProtBarracks,
Factory,
ResearchLab,
MechanicalResearchLab,
AdvancedFactory,
SpecializedResearchLab,
LightTurret,
Airstrip,
];
}
get unitClasses() {
return [
ProtBuildDrone,
ProtHarvester,
ProtScoutDrone,
Commando,
Bastion,
Predator,
Ironwing,
Hellfire,
Titan,
Cyclops,
Juggernaut,
Strider,
Griffin,
SolInvictus,
];
}
}
ProtectorateFactionEntity.src = "src/zerospace/faction/protectorate.ts";
// Export the faction class as default
export default ProtectorateFactionEntity;
//# sourceMappingURL=protectorate.js.map