typed-adventureland
Version:
Strong TypeScript declarations for the game AdventureLand
81 lines (80 loc) • 2.14 kB
TypeScript
import type { ProjectileKey } from "../projectiles/Projectiles";
import type { WeaponKey } from "../items/Weapon";
import type { OffhandType, WeaponType } from "../items/index";
import { Tuple } from "../utils";
import { CharacterEntityCXInfos } from "../../../entities/character-entity";
export type ClassKey = "mage" | "merchant" | "paladin" | "priest" | "ranger" | "rogue" | "warrior";
export interface GClass {
armor: number;
attack: number;
base_slots: {
mainhand: {
gift: number;
level: number;
name: WeaponKey;
};
};
bmresistance?: number;
brave?: boolean;
courage: number;
damage_type: string;
description: string;
doublehand: {
[Type in WeaponType | "great_sword"]?: {
frequency?: number;
miss?: number;
mp_cost?: number;
speed?: number;
};
};
frequency: number;
fzresistance?: number;
hp: number;
looks: Tuple<[string, CharacterEntityCXInfos], 4>;
/** Gained stats per level. */
lstats: {
dex: number;
for: number;
int: number;
str: number;
vit: number;
};
main_stat: string;
mainhand: {
[K in WeaponType]?: {
apiercing?: number;
frequency?: number;
mp_cost?: number;
output?: number;
speed?: number;
};
};
mcourage: number;
mp: number;
mp_cost: number;
offhand: {
[Type in OffhandType]?: {
frequency?: number;
speed?: number;
};
};
output: number;
pcourage: number;
phresistance?: number;
pnresistance?: number;
projectile: ProjectileKey;
range: number;
resistance: number;
side_stat?: string;
speed: number;
/** Base stats the class starts with. */
stats: {
dex: number;
for: number;
int: number;
str: number;
vit: number;
};
stresistance?: number;
xcx?: Array<string>;
}