@azurapi/azurapi
Version:
Open Source Azur Lane Local Database
148 lines (147 loc) • 3.62 kB
TypeScript
/**
* Ship types
* @packageDocumentation
*/
import { Identifiable } from './identifiable';
export interface shipAdvancedOptions {
nameOnly?: boolean;
idOnly?: boolean;
language?: string;
}
declare type Url = string;
declare type Stat = 'health' | 'armor' | 'reload' | 'luck' | 'firepower' | 'torpedo' | 'evasion' | 'speed' | 'antiwar' | 'aviation' | 'oilConsumption' | 'accuracy' | 'antisubmarineWarfare' | 'oxygen' | 'ammunition' | 'huntingRange';
declare type Rarity = 'Normal' | 'Rare' | 'Epic' | 'Super Rare' | 'Ultra Rare' | 'Priority' | 'Decisive';
declare type LimitBreaks = string[];
export interface Ship extends Identifiable {
wikiUrl: Url;
names: {
code: string;
en: string;
cn: string;
jp: string;
kr: string;
};
thumbnail: Url;
hexagon: [number, number, number, number, number, number];
class: string;
nationality: string;
hullType: string;
rarity: Rarity;
stars: {
stars: string;
value: number;
};
stats: {
baseStats: Stats;
level100: Stats;
level120: Stats;
level100Retrofit?: Stats;
level120Retrofit?: Stats;
};
slots: [Slot, Slot, Slot];
enhanceValue: Map<Stat, number>;
scrapValue: {
coin: number;
oil: number;
medal: number;
};
skills: Skill[];
skins: Skin[];
gallery: GalleryItem[];
limitBreaks: LimitBreaks[];
fleetTech: {
statsBonus: {
collection?: Bonus;
maxLevel?: Bonus;
};
techPoints: {
collection: number;
maxLimitBreak: number;
maxLevel: number;
total: number;
};
};
retrofit: boolean;
retrofitId: string;
retrofitHullType: string;
retrofitProjects: Map<ProjectID, RetrofitProject>;
construction: {
constructionTime: string;
availableIn: {
light: boolean;
heavy: boolean;
aviation: boolean;
limited: boolean;
exchange: boolean;
};
};
obtainedFrom: {
obtainedFrom: string;
fromMaps: string[];
};
misc: {
artist?: Artist;
web?: Artist;
pixiv?: Artist;
twitter?: Artist;
voice?: Artist;
};
}
interface Bonus {
applicable: string[];
stat: Stat;
bonus: string;
}
declare type Stats = Map<Stat, string | ('' | '*' | '0' | '1' | '2' | '3' | '4' | '5' | '6')[][]>;
interface Slot {
type: string;
minEfficiency: number;
maxEfficiency: number;
}
interface Skill {
icon: Url;
names: {
en: string;
cn: string;
jp: string;
};
description: string;
color: string;
}
interface Skin {
name: string;
chibi: Url;
image: Url;
cn?: Url;
bg?: Url;
background: Url;
info: {
enClient?: string;
cnClient?: string;
jpClient?: string;
cost?: string;
obtainedFrom: string;
live2dModel: boolean;
};
}
interface GalleryItem {
description: string;
url: Url;
}
interface Artist {
name: string;
url: Url;
}
declare type ProjectID = string;
interface RetrofitProject {
name: ProjectID;
attributes: string[];
materials: string[];
coins: number;
level: number;
levelBreakLevel: number;
levelBreakStars: string;
recurrence: number;
require: ProjectID[];
}
export {};