@zerospacegg/iolin
Version:
Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)
200 lines • 7.3 kB
JavaScript
/**
* 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