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