UNPKG

@zerospacegg/iolin

Version:

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

95 lines 3.59 kB
/** * Titan - Protectorate medium mech unit * Robot commando with jump capabilities */ import { ProtectorateArmyUnit } from "../../../../defaults/protectorate.js"; import { Attack, Spell, Upgrade } from "../../../../engine/ability.js"; export class Titan extends ProtectorateArmyUnit { // Readonly properties at class level get infuseCost() { return 11; } constructor() { super(); // Auto-generated fixes from dev data comparison // Attack cooldown fix is applied after the attack object is defined this.hexiteCost = 100; this.fluxCost = 100; this.buildTime = 40; this.name = "Titan"; this.tier = "T2.5"; this.supply = 5; this.uuid = "05d86203-d9ef-4ea8-bde2-a8801a1b122f"; // Internal game engine data this.internalId = "Troop_Prot_Atlas_C"; this.internalPath = "/Game/Nova/Archetypes_Troops/Troop_Prot_Atlas.Default__Troop_Prot_Atlas_C"; this.internalTags = ["Attackable.Unit.Troop", "Attackable.ArmorType.Medium"]; this.internalSecondaryTags = ["Mech"]; // Mutable properties in constructor this.hp = 425; this.armor = 0; this.armorType = "medium"; this.speed = 550; this.maxAddOns = 0; this.turnSpeed = 3000; this.pushability = 0.7; this.description = "Light mech walker. Attacks ground and air units."; // Combat abilities this.attacks.attack = new Attack({ name: "Attack", damage: 6, cooldown: 0.5, cooldownBetweenShots: 0.5, range: 1000, targets: ["ground"], shots: 2, volleys: 2, bonusDamage: [{ multiplier: 1.75, vs: ["armor:medium"] }], armorPenetration: 0, delay: 0.1, parentId: this.id, parentUUID: this.uuid, }); this.spells.jump = new Spell({ name: "Jump", description: "Jumps to the target point, bypassing any terrain. Can attack while jumping", hotkey: "D", cooldown: 18, forceAutocast: false, unlocked: false, parentId: this.id, parentUUID: this.uuid, }); // Upgrades this.upgrades.jetpack = new Upgrade({ name: "Jetpack", description: "Unlocks the Jump ability", tier: "T2.5", fluxCost: 100, researchTime: 40, apply: () => { this.spells.jump.unlocked = true; }, parentId: this.id, parentUUID: this.uuid, }); this.upgrades.attackRange = new Upgrade({ name: "Attack Range", description: "Increase Atlas Anti-air attack range by 400", tier: "T3.5", fluxCost: 150, researchTime: 60, parentId: this.id, parentUUID: this.uuid, }); // Entity relationships using static ID references this.createdBy = ["faction/protectorate/building/factory"]; this.upgradedBy = ["faction/protectorate/building/mechanical-research-lab"]; this.unlockedBy = ["faction/protectorate/building/mechanical-research-lab"]; // Tags for identification and targeting this.tags.push("attacker", "spellcaster", "can-be-infused", "can-be-reanimated", "can-be-mind-controlled"); } } Titan.src = "src/zerospace/faction/protectorate/unit/titan.ts"; export default Titan; //# sourceMappingURL=titan.js.map