@zerospacegg/iolin
Version:
Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)
70 lines • 2.81 kB
JavaScript
/**
* Emperor Projection - Ultimate sacrifice-powered manifestation
* Living vessel for collective thrall souls with devastating power scaling
*/
import { Attack } from "../../../../engine/ability.js";
import { Turret } from "../../../../engine/turret.js";
import { LegionUltimateUnit } from "../../legion-classes.js";
import RitualSite from "../building/ritual-site.js";
export class EmperorProjection extends LegionUltimateUnit {
constructor() {
super();
this.name = "Emperor Projection";
this.tier = "ultimate";
this.fluxCost = 0;
this.buildCount = 1;
this.hexiteCost = 0;
this.buildTime = 0;
this.uuid = "02b5fb2f-8759-4c09-b9bd-0b2c2cf80d49";
// Mutable properties - ultimate sacrifice vessel
this.supply = 0; // Ultimate units don't consume supply
this.hp = 2000; // Base power before soul absorption
this.shields = 0;
this.armor = 2;
this.armorType = "medium";
this.speed = 600;
// Relationships - summoned by ritual site
this.createdBy = [RitualSite.id];
this.unlockedBy = [RitualSite.id];
// Tags for identification and targeting
this.tag("massive");
// Devastating melee attack with building destruction focus
this.attacks.attack = new Attack({
name: "Attack",
damage: 100, // Base damage, scales with soul sacrifice
cooldown: 1.4,
range: 300,
targets: ["ground"],
bonusDamage: [{ multiplier: 3.0, vs: ["building"] }],
splash: { multiplier: 1.0, range: 100 },
parentId: this.id,
parentUUID: this.uuid,
});
// Soul sacrifice mechanics
this.maxAddOns = 30; // Can consume up to 30 supply worth of souls
// Sacrifice system implementation
const emperor = this;
// Thrall Soul sacrifice - supply-based power scaling
this.turrets.thrallSoul = new Turret({
name: "Thrall Soul",
description: "Each 1 supply worth of thralls sacrificed gives +50 HP and +5 attack damage",
subtype: "sacrifice",
hexiteCost: 0,
fluxCost: 0,
buildTime: 0,
hp: 0,
unlocked: true,
apply() {
// Each supply point of thralls sacrificed gives bonuses
emperor.hp = (emperor.hp || 0) + 50;
if (emperor.attacks.attack.damage) {
emperor.attacks.attack.damage += 5;
}
},
});
}
}
// Static property for source path
EmperorProjection.src = "src/zerospace/faction/legion/unit/emperor-projection.ts";
export default EmperorProjection;
//# sourceMappingURL=emperor-projection.js.map