typed-adventureland
Version:
Strong TypeScript declarations for the game AdventureLand
170 lines (169 loc) • 5.8 kB
TypeScript
import type { GameKey } from "../games/Games";
import type { ImagesetKey } from "../imagesets/Imagesets";
import type { DungeonKeyKey, ItemKey } from "../items";
import type { MonsterKey } from "../monsters/Monsters";
import type { NpcKey } from "../npcs/Npcs";
import type { TilesetKey } from "../tilesets/Tilesets";
import type { Tuple } from "../utils";
import { EventKey } from "../events";
import { GGeometry } from "../geometry";
export type MapKey = "abtesting" | "arena" | "bank" | "bank_b" | "bank_u" | "batcave" | "cave" | "cgallery" | "crypt" | "cyberland" | "d_e" | "d2" | "desertland" | "duelland" | "dungeon0" | "gateway" | "goobrawl" | "halloween" | "hut" | "jail" | "level1" | "level2" | "level2e" | "level2n" | "level2s" | "level2w" | "level3" | "level4" | "main" | "mansion" | "mforest" | "mtunnel" | "old_bank" | "old_main" | "original_main" | "resort" | "resort_e" | "shellsisland" | "ship0" | "spider_instance" | "spookytown" | "tavern" | "test" | "tomb" | "tunnel" | "ucliffs" | "uhills" | "winter_cave" | "winter_cove" | "winter_inn" | "winter_inn_rooms" | "winter_instance" | "winterland" | "woffice";
export type MapZoneKey = "fishing" | "mining";
export interface GMap {
animatables?: {
the_door?: {
position: string;
x: number;
y: number;
};
the_lever?: {
position: string;
x: number;
y: number;
};
};
burn_multiplier?: number;
code?: string;
day?: boolean;
data: GGeometry;
doors: Array<[number, number, number, number, MapKey, number] | [number, number, number, number, MapKey, number, number] | [number, number, number, number, MapKey, number, number, "key", DungeonKeyKey] | [number, number, number, number, MapKey, number, number, "ulocked", "complicated"] | [number, number, number, number, MapKey, number, number, "protected" | "ulocked"]>;
drop_norm?: number;
event?: EventKey | "pirateship";
freeze_multiplier?: number;
fx?: string;
ignore?: boolean;
instance?: boolean;
irregular?: boolean;
key: string;
loss?: boolean;
lux?: number;
machines?: Array<{
set: ImagesetKey;
y: number;
x: number;
frames: Array<[number, number, number, number]>;
subframes?: Array<[number, number, number, number]>;
type: GameKey;
}>;
/**
* Merchants on the map that sell validates against
*/
merchants?: Array<{
/** The map the merchant currently is on */
map: MapKey;
/** The unique id of the instance you are in, else a `MapKey` */
in: MapKey | string;
x: number;
y: number;
id: NpcKey;
}>;
monsters?: Array<{
boundaries?: Array<[MapKey, number, number, number, number]>;
boundary?: [number, number, number, number];
count: number;
gatekeeper?: boolean;
grow?: boolean;
polygon?: Array<[number, number]>;
position?: [number, number];
rage?: [number, number, number, number];
random?: boolean;
roam?: boolean;
radius?: number;
stype?: string;
special?: boolean;
type: MonsterKey;
}>;
mount?: boolean;
name: string;
no_bounds?: boolean;
npcs: Array<{
position?: [x: number, y: number] | [number, number, number];
id: NpcKey;
name?: string;
boundary?: [number, number, number, number];
positions?: [[number, number], [number, number, number]];
}>;
old_monsters?: Tuple<{
count: number;
boundary: [number, number, number, number];
type: MonsterKey;
}, 12>;
on_death?: [MapKey, number];
on_exit?: [MapKey, number];
outside?: boolean;
pvp?: boolean;
quirks?: Array<[
number,
number,
number,
number,
string,
string
] | [number, number, number, number, string]>;
ref?: {
c_mid?: [number, number];
cx?: [number, number, number, number];
poof?: {
in: MapKey;
map: MapKey;
x: number;
y: number;
};
u_mid?: [number, number];
};
safe?: boolean;
safe_pvp?: boolean;
small_steps?: boolean;
/**
* direction is the way the character spawns 0 down,1 right, 2 bottom ,3 left.
* size indicates an area you could spawn in with x,y as the center.
*/
spawns: Array<[x: number, y: number] | [x: number, y: number, direction: number] | [x: number, y: number, direction: number, size: number]>;
traps?: [
{
polygon?: Tuple<[number, number], 60>;
position?: [number, number];
type: string;
}
];
unlist?: boolean;
/**
* The position of the upgrade station where you can upgrade
*/
upgrade?: {
map: MapKey;
in: MapKey | string;
x: number;
y: number;
id: NpcKey;
};
/**
* The position of the compound station where you can compound
*/
compound?: {
map: MapKey;
in: MapKey | string;
x: number;
y: number;
id: NpcKey;
};
/**
* Positions where the item is sold.
*/
items?: Partial<Record<ItemKey, Array<{
map: MapKey;
in: MapKey | string;
x: number;
y: number;
id: NpcKey;
}>>>;
weather?: string;
world?: TilesetKey;
zones?: [
{
drop: string;
polygon: Array<[number, number]>;
type: MapZoneKey;
}
];
}