@zerospacegg/iolin
Version:
Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)
123 lines • 3.27 kB
JavaScript
/**
* Marran Mercenary Faction Classes - Gold Standard Architecture
* Class definitions for the alien defensive sniper faction
*/
import { FactionTalent, Topbar } from "../engine/ability.js";
import { Building } from "../engine/building.js";
import { MercFaction } from "../engine/faction.js";
import { Unit } from "../engine/unit.js";
/**
* Marran-specific talent that automatically sets abilityOf to "marran"
*/
export class MarranTalent extends FactionTalent {
get type() {
return "ability";
}
constructor(props) {
super(props);
this.factionName = "Marran";
}
get abilityOf() {
return "marran";
}
}
/**
* Marran Topbar class with faction-specific settings
*/
export class MarranTopbar extends Topbar {
get type() {
return "ability";
}
constructor(props) {
super(props);
this.description = "";
}
get abilityOf() {
return "marran";
}
get faction() {
return "marran";
}
get factionName() {
return "Marran";
}
get subtype() {
return "topbar";
}
}
/**
* Marran faction class extending Faction - Gold Standard
*/
export class MarranFaction extends MercFaction {
get type() {
return "faction";
}
constructor() {
super();
this.faction = MarranFaction.factionSlug;
this.factionName = MarranFaction.factionName;
// Marran are alien master snipers with defensive philosophy
}
}
MarranFaction.factionSlug = "marran";
MarranFaction.factionName = "Marran";
/**
* Base Marran merc unit class - alien defensive specialists - Gold Standard
*/
export class MarranMercUnit extends Unit {
get type() {
return "unit";
}
get unitType() {
return "merc";
}
// Readonly properties that all Marran units share
constructor() {
super();
// Common Marran unit properties - emphasis on shields and precision
this.armorType = "medium";
this.speed = 450; // Default balanced speed
this.faction = "marran";
this.factionName = "Marran";
}
}
/**
* Marran hero unit class - legendary defensive commanders - Gold Standard
*/
export class MarranHeroUnit extends Unit {
get type() {
return "unit";
}
get unitType() {
return "hero";
}
// Readonly properties that all Marran heroes share
constructor() {
super();
// Common Marran hero properties - superior defensive capabilities
this.armorType = "heavy";
this.speed = 500; // Heroes are faster
this.tier = "T2"; // Heroes start at T2
this.faction = "marran";
this.factionName = "Marran";
}
}
/**
* Marran outpost building class - alien defensive installations - Gold Standard
*/
export class MarranMercOutpost extends Building {
get buildingType() {
return "special";
}
// Readonly properties
constructor() {
super();
// Common Marran building properties - mobile fortress concept
this.hp = 1200;
this.armor = 1;
this.speed = 250; // Mobile outpost capability
this.faction = "marran";
this.factionName = "Marran";
}
}
//# sourceMappingURL=marran.js.map