@zerospacegg/iolin
Version:
Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)
90 lines • 4.08 kB
JavaScript
"use strict";
/**
* Root Colony - Foundational Grell base building
* The living heart of Grell expansion with unit production, biomass generation, and defensive capabilities
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.RootColony = void 0;
const ability_js_1 = require("../../../../engine/ability.cjs");
const turret_js_1 = require("../../../../engine/turret.cjs");
const grell_classes_js_1 = require("../../grell-classes.cjs");
const grell_harvester_js_1 = require("../unit/grell-harvester.cjs");
const seedling_js_1 = require("../unit/seedling.cjs");
const cultivator_js_1 = require("./cultivator.cjs");
const grell_extractor_js_1 = require("./grell-extractor.cjs");
const nourishing_pod_js_1 = require("./nourishing-pod.cjs");
class RootColony extends grell_classes_js_1.GrellBaseBuilding {
constructor() {
super();
this.hotkey = "Q";
this.unlocksMercTier = "T0";
this.description = "Mining outpost which builds extractors to mine Hexite. Can be upgraded to attack. Spawns seedling immediately upon completion.";
this.name = "Root Colony";
this.tier = "T0";
this.hp = 2000;
this.shields = 0;
this.armor = 2;
this.maxAddOns = 1;
this.providesBiomass = 1500;
this.description =
"Mining outpost which builds extractors to mine Hexite. Can be upgraded to attack. Spawns seedling immediately upon completion.";
this.uuid = "9f01463e-8972-4011-8364-6714d89d0a1e";
// Setup Grell passives after UUID is assigned
this.setupGrellPassives();
// Production capabilities
this.createdBy = [seedling_js_1.Seedling.id]; // Built by Seedling
this.unlockedBy = [];
this.upgradedBy = [];
// Creates units and buildings
this.creates = [seedling_js_1.Seedling.id, grell_harvester_js_1.GrellHarvester.id, grell_extractor_js_1.GrellExtractor.id];
this.unlocks = [nourishing_pod_js_1.NourishingPod.id, cultivator_js_1.Cultivator.id, seedling_js_1.Seedling.id, grell_harvester_js_1.GrellHarvester.id];
// Home Base spell - set as primary base for recall priority
this.spells.homeBase = new ability_js_1.Spell({
name: "Home Base",
hotkey: "U",
cooldown: 0.2,
targets: ["self"],
description: "Set this base as primary",
parentId: this.id,
parentUUID: this.uuid,
});
// Biomass spreading passive inherited automatically from GrellBaseBuilding
// Capture colony instance for turret apply method
const colony = this;
// Defensive attack (unlocked by turret)
this.attacks.attack = new ability_js_1.Attack({
name: "Attack",
description: "Defensive attack system that targets air and ground units",
damage: 23,
cooldown: 0.66,
range: 2000,
targets: ["air", "ground"],
unlocked: false,
parentId: this.id,
parentUUID: this.uuid,
});
// Defensive turret capability
this.turrets.rootColonyAttacker = new turret_js_1.Turret({
name: "Root Colony Attacker",
description: "Adds a defensive turret and +1 armor",
hexiteCost: 200,
buildTime: 5,
hp: 500,
unlocked: false,
apply() {
// Add armor bonus
colony.armor = (colony.armor || 0) + 1;
// Unlock attack ability
colony.attacks.attack.unlocked = true;
},
});
// Set up unlock relationships after both are created
this.attacks.attack.unlockedBy = [this.turrets.rootColonyAttacker.id];
this.turrets.rootColonyAttacker.unlocks = [this.attacks.attack.id];
}
}
exports.RootColony = RootColony;
// Static property for source path
RootColony.src = "src/zerospace/faction/grell/building/root-colony.ts";
exports.default = RootColony;
//# sourceMappingURL=root-colony.js.map