ZeroSpace.gg

Protectorate

Main Faction

import { MainFaction } from "../../engine/faction.js"; import { ProtectorateTalent, ProtectorateTopbar } from "../../defaults/protectorate.js"; /** * Protectorate Faction Entity - Modern Class Architecture */ class ProtectorateFactionEntity extends MainFaction { override uuid: string; static override src = "src/zerospace/faction/protectorate.ts"; constructor() { super(); this.name = "Protectorate"; this.uuid = "91c4e008-9cef-40b5-aeea-cf74df4838f3"; this.faction = "protectorate"; this.factionName = "Protectorate"; this.mercHeroesAllowed = true; this.description = "The military arm of humanity in the Orion sector, the Protectorate fields a versatile and resilient force. With a balanced mix of infantry, tanks, and mechs supported by strategic air power, they are built to adapt and endure. Protectorate forces thrive on veterancy, growing more formidable as they gain experience in battle. This adaptability allows them to excel in a variety of combat scenarios, whether holding the line or pushing forward."; this.buildings = [ "faction/protectorate/building/operating-tower", "faction/protectorate/building/assembly-plant", "faction/protectorate/building/war-foundry", "faction/protectorate/building/prot-barracks", "faction/protectorate/building/research-lab", "faction/protectorate/building/mechanical-research-lab", "faction/protectorate/building/supply-platform", "faction/protectorate/building/airstrip", "faction/protectorate/building/skydock", "faction/protectorate/building/light-turret", "faction/protectorate/building/prot-extractor", ]; this.units = [ "faction/protectorate/unit/prot-build-drone", "faction/protectorate/unit/protectorate-prospector", "faction/protectorate/unit/recon-drone", "faction/protectorate/unit/commando", "faction/protectorate/unit/bastion", "faction/protectorate/unit/predator", "faction/protectorate/unit/ironwing", "faction/protectorate/unit/hellfire", "faction/protectorate/unit/titan", "faction/protectorate/unit/cyclops", "faction/protectorate/unit/juggernaut", "faction/protectorate/unit/sentinel", "faction/protectorate/unit/strider", "faction/protectorate/unit/griffin", "faction/protectorate/unit/hauler", "faction/protectorate/unit/sol-invictus", ]; this.heroes = [ "faction/protectorate/hero/prefect-aster", "faction/protectorate/hero/marv", "faction/protectorate/hero/mera", ]; this.commanders = ["coop/commander/aster-commander"]; this.topbars.beamUp = new ProtectorateTopbar({ name: "Beam Up", topbarType: "recall", slot: 1, description: "Teleport a unit to any Operating Tower and heal it by 100. \nCosts 0.5 power per supply. \nBeam Up will default to your primary Operating Tower. Click on minimap after casting to choose an alternate one.", hotkey: "Q", }); this.topbars.protectiveShield = new ProtectorateTopbar({ name: "Protective Shield", topbarType: "special", slot: 2, description: "Grant a unit 50 + 45% of max health as a shield", hotkey: "W", energyCost: 25, cooldown: 45, }); this.topbars.airstrike = new ProtectorateTopbar({ name: "Airstrike", topbarType: "ultimate", slot: 3, description: "Calls down an Airstrike, dealing 200 damage to ground units. \nRequires Airstrips.", hotkey: "E", energyCost: 75, cooldown: 120, }); this.topbars.solInvictus = new ProtectorateTopbar({ name: "Sol Invictus", topbarType: "ultimate", slot: 4, description: "Call down Sol Invictus", wikiDescription: "Calls down [[faction/protectorate/unit/sol-invictus]].", hotkey: "R", energyCost: 100, cooldown: 180, }); this.talents.rapidReconstitution = new ProtectorateTalent({ name: "Rapid Reconstitution", level: 1, description: "-70% Beam Up delay. \n+100% healed amount.", }); this.talents.battleHardened = new ProtectorateTalent({ name: "Battle Hardened", level: 1, description: "+25% faster Veterancy gain. \nHeroes can gain veterancy", }); this.talents.defensiveBarriers = new ProtectorateTalent({ name: "Defensive Barriers", level: 2, description: "Buildings gain +125 shields", }); this.talents.reinforcements = new ProtectorateTalent({ name: "Reinforcements", level: 3, description: "Call down reinforcements of the selected type", }); this.talents.airstrike = new ProtectorateTalent({ name: "Airstrike", level: 3, description: "Unlocks the Airstrike topbar ability. \nCalls down an Airstrike, dealing 200 damage to ground units. \nRequires Airstrips.", wikiDescription: "Unlocks the [[faction/protectorate/topbar/airstrike]] topbar ability. \nCalls down an Airstrike, dealing 200 damage to ground units. \nRequires Airstrips.", unlocks: [this.topbars.airstrike.id], }); this.talents.advancedWeaponry = new ProtectorateTalent({ name: "Advanced Weaponry", level: 4, description: "+15% damage and range.", }); this.talents.forceMultiplier = new ProtectorateTalent({ name: "Force Multiplier", level: 5, description: "-50% cooldown for Reinforcement and Airstrike. \nReinforcement can deploy heavy unit types.", }); this.talents.solInvictus = new ProtectorateTalent({ name: "Sol Invictus", level: 5, description: "Unlocks the legendary Sol Invictus unit", wikiDescription: "Unlocks the [[faction/protectorate/topbar/sol-invictus]] ability to call down [[faction/protectorate/unit/sol-invictus]].", unlocks: [this.topbars.solInvictus.id], }); this.talents.combatMastery = new ProtectorateTalent({ name: "Combat Mastery", level: 6, description: "Increases current level of all uits by 1. \nUnits now spawn at level 1.\n+100% faster veterancy gain\n", }); this.talents.airstrike.apply = () => { this.topbars.airstrike!.unlocked = true; }; this.wireUpUnlocks(); } } export default ProtectorateFactionEntity;