UNPKG

@zerospacegg/iolin

Version:

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

200 lines 7.3 kB
/** * Grell Faction * Bio-symbiotic faction with infusion mechanics */ import { GrellFaction, GrellTalent, GrellTopbar } from "./grell-classes.js"; // Import all Grell buildings - using new class names import AdvancedAugmentationPool from "./grell/building/advanced-augmentation-pool.js"; import AugmentationPool from "./grell/building/augmentation-pool.js"; import Cultivator from "./grell/building/cultivator.js"; import GrellExtractor from "./grell/building/grell-extractor.js"; import Incubator from "./grell/building/incubator.js"; import LargeIncubator from "./grell/building/large-incubator.js"; import MediumIncubator from "./grell/building/medium-incubator.js"; import NourishingPod from "./grell/building/nourishing-pod.js"; import RootColony from "./grell/building/root-colony.js"; import SkrellingNest from "./grell/building/skrelling-nest.js"; import SpecialAugmentationPool from "./grell/building/special-augmentation-pool.js"; // Import Grell units - using new class names import Behemoth from "./grell/unit/behemoth.js"; import GrellHarvester from "./grell/unit/grell-harvester.js"; import Harbinger from "./grell/unit/harbinger.js"; import Lasher from "./grell/unit/lasher.js"; import ManEater from "./grell/unit/man-eater.js"; import Reaver from "./grell/unit/reaver.js"; import Seedling from "./grell/unit/seedling.js"; import Skrelling from "./grell/unit/skrelling.js"; import Stinger from "./grell/unit/stinger.js"; import Thresher from "./grell/unit/thresher.js"; import Weaver from "./grell/unit/weaver.js"; // Import Grell hero - using new class name import Vynthra from "./grell/hero/vynthra.js"; // Import adopted heroes from Grell faction import GrellMera from "./grell/hero/grell-mera.js"; import GrellTechHero from "./grell/hero/grell-tech-hero.js"; // Import Vynthra coop commander export class Grell extends GrellFaction { constructor() { super(); this.name = "Grell"; this.name = "Grell"; this.uuid = "73d5cdb2-5fa5-465a-a9ea-231cc987aedb"; this.buildings = [ RootColony.id, Cultivator.id, GrellExtractor.id, Incubator.id, NourishingPod.id, AugmentationPool.id, MediumIncubator.id, SkrellingNest.id, LargeIncubator.id, AdvancedAugmentationPool.id, SpecialAugmentationPool.id, ]; this.units = [ Stinger.id, Seedling.id, GrellHarvester.id, Skrelling.id, Weaver.id, Reaver.id, Lasher.id, ManEater.id, Thresher.id, Harbinger.id, Behemoth.id, ]; this.heroes = [GrellMera.id, GrellTechHero.id, Vynthra.id]; this.topbars.undergroundTransport = new GrellTopbar({ name: "Underground Transport", topbarType: "recall", slot: 1, description: "Transports all selected units via underground worm. Cannot cross water.", cooldown: 60, hotkey: "Q", energyCost: 5, energyType: "topbar", }); this.topbars.infuse = new GrellTopbar({ name: "Infuse", topbarType: "special", slot: 2, description: "Enhances selected unit with biomass, providing various bonuses.", hotkey: "W", variableEnergyCost: "supply x2", }); this.topbars.flowers = new GrellTopbar({ name: "Flowers", topbarType: "ultimate", slot: 3, cooldown: 180, description: "Flowers deal damage to enemies and spawn hallucinations of friendly units. 20s duration.", hotkey: "E", energyCost: 30, energyType: "topbar", }); this.topbars.treeOfLife = new GrellTopbar({ name: "Tree of Life", topbarType: "ultimate", slot: 4, cooldown: 120, description: "Revives units killed nearby and heals friendly units. Radius: 1500. Starting energy: 30.", hotkey: "R", energyCost: 50, energyType: "topbar", }); this.talents.bioNourishment = new GrellTalent({ name: "Bio Nourishment", level: 1, description: "+30% Healing and Regeneration from all sources for all units.", apply() { }, }); this.talents.cultivatorRange = new GrellTalent({ name: "Cultivator Range", level: 1, description: "+100% Vision range and Biomass collection range for Cultivators.", apply() { }, }); this.talents.flourishment = new GrellTalent({ name: "Flourishment", level: 2, description: "+50% Build speed for all structures.", apply() { }, }); this.talents.battleInfusion = new GrellTalent({ name: "Battle Infusion", level: 3, description: "Infusion happens 4x faster and gives the unit +12% movement speed.", apply() { }, }); this.talents.improvedInfusion = new GrellTalent({ name: "Improved Infusion", level: 3, description: "Ranged units: +200 attack range. Melee units: +20% max health.", apply() { }, }); this.talents.improvedSpeed = new GrellTalent({ name: "Improved Speed", level: 4, description: "+12% Attack speed and Move speed for all units.", apply() { }, }); this.talents.flowers = new GrellTalent({ name: "Flowers", level: 5, description: "Unlocks the Flowers topbar ability.", unlockedBy: [this.topbars.flowers.id], }); this.talents.flowers.apply = () => { this.topbars.flowers.unlocked = true; }; this.talents.treeOfLife = new GrellTalent({ name: "Tree of Life", level: 5, description: "Unlocks the Tree of Life topbar ability.", unlockedBy: [this.topbars.treeOfLife.id], }); this.talents.treeOfLife.apply = () => { this.topbars.treeOfLife.unlocked = true; }; // Wire up unlock relationships this.wireUpUnlocks(); } // Provide entity classes for techTree generation get buildingClasses() { return [ RootColony, GrellExtractor, Incubator, MediumIncubator, LargeIncubator, AugmentationPool, AdvancedAugmentationPool, SpecialAugmentationPool, Cultivator, SkrellingNest, NourishingPod, ]; } get unitClasses() { return [ Seedling, GrellHarvester, Skrelling, Lasher, Stinger, Reaver, Weaver, Thresher, ManEater, Behemoth, Harbinger, Vynthra, ]; } } Grell.src = "src/zerospace/faction/grell.ts"; // Export the class as default export default Grell; //# sourceMappingURL=grell.js.map