// Generated by https://quicktype.io
export interface GameData {
academyTower: AcademyTower[];
ad: Ad[];
affix: AffixElement[];
atlas: Atlas[];
bgm: BgmElement[];
bitmapFont: BitmapFont[];
boots: Boot[];
boss: BossElement[];
bountyName: BountyName[];
bundle: Bundle[];
currency: Currency[];
dailyReward: DailyReward[];
dialogue: Dialogue[];
dorm: Dorm[];
dormbg: Dormbg[];
dungeon: Dungeon[];
emote: Emote[];
eyeColor: Color[];
face: Face[];
faceColor: FaceColor[];
follow: Follow[];
fontStyle: FontStyle[];
fossil: Fossil[];
fsm: FSM[];
gameFeed: GameFeed[];
gender: Gender[];
generic: Generic[];
giftBox: GiftBox[];
hair: HairElement[];
hairColor: Color[];
hat: Hat[];
item: GameDataItem[];
itemTable: ItemTable[];
key: Key[];
mathTownDecor: MathTown[];
mathTownFrame: MathTown[];
mathTownInterior: MathTownInterior[];
mount: Mount[];
name: NameElement[];
nickname: Nickname[];
orb: ORB[];
outfit: Outfit[];
particleEffect: GameDataParticleEffect[];
pet: Pet[];
prizeWheel: PrizeWheel[];
relic: Relic[];
sfx: Sfx[];
singleImage: SingleImage[];
skinColor: Face[];
spell: Spell[];
spellRelic: SpellRelic[];
spine: SpineElement[];
streamedMap: Atlas[];
tiledMap: Atlas[];
tileset: Tileset[];
titan: Titan[];
ui: UI[];
weapon: Weapon[];
}
export interface AcademyTower {
ID: number;
assetID: number;
type: string;
gender: number;
data: AcademyTowerData;
metadata: MemberClass;
name: string;
}
export interface AcademyTowerData {
enabled: boolean;
name: string;
towerID: string;
element: EarthElement;
minLevel: number;
warden: WardenClass | string;
towerEventName: string;
BGM: Bgm;
wardenRoomKeyID: number;
saveWardenDialogueID?: number;
boss?: DataBoss;
achievementMonsterIDs: number[];
battlesPerFloor: number;
battleBG: string;
assets: string[];
fsmIDs: FSMIDs;
itemTableID: number;
floorConfigs?: FloorConfig[];
keystone: Keystone;
afterKeyFoundDialogueIDs?: number[];
betaPopup?: BetaPopup;
dialogueIds?: any[];
dungeonBGM?: number;
exitMap?: string;
eventPrefix?: string;
floorGeneratorConfigs?: { [key: string]: number };
}
export interface Bgm {
dungeon: number;
incomplete: number;
completed?: number;
complete?: number;
}
export interface BetaPopup {
prefabID: number;
cooldownTimeInSeconds: number;
}
export interface DataBoss {
tmxName: string;
ID: number;
attacks: number[];
localizedTextRef: string;
difficulty: number;
maxHP: null;
spineKey: string;
battleBG: string;
}
export enum EarthElement {
Astral = "astral",
Earth = "earth",
Empty = "",
Fire = "fire",
Ice = "ice",
IceFire = "ice & fire",
Mech = "mech",
Plant = "plant",
Shadow = "shadow",
Special = "special",
Storm = "storm",
Water = "water",
Wizard = "wizard",
}
export interface FloorConfig {
generator: number;
dialogueIDs: number[];
}
export interface FSMIDs {
intro: number;
bossBattle: number;
freeWarden: number;
}
export interface Keystone {
zone: string;
x: number;
y: number;
itemID: number;
unlockedDialogueID?: number;
}
export interface WardenClass {
name: string;
spine: string;
atlas: string;
localizedTextRef: string;
freedDialogueIDs: number[];
flipSpine: boolean;
offset: BeijingPigeon;
nameTextPos: BeijingPigeon;
bubbleAnimName?: string;
bubblePopName?: string;
}
export interface BeijingPigeon {
x: number;
y: number;
}
export interface MemberClass {
}
export interface Ad {
ID: number;
assetID: number;
type: AdType;
gender: number;
data: AdData;
metadata: MemberClass;
name: string;
}
export interface AdData {
name: string;
sendDate: null | string;
startDate?: null | string;
expiryDate: null | string;
prefabID?: number;
assets?: string[];
priority?: number;
title?: string;
body?: string;
travelZone?: string;
travelConfirmMessage?: string;
thumbnail?: number;
uiID?: number;
dateTextName?: string;
buttons?: Button[];
testLanes?: number[];
experimentTrackEvent?: string;
videoMessageTitle?: string;
videoMessage?: string;
videoID?: string;
memberSuppression?: boolean;
optimizely?: Optimizely;
filename?: string;
}
export interface Button {
name: ButtonName;
method: string;
parameters?: Array;
showOnStartDate?: boolean;
}
export enum ButtonName {
Empty = "",
GoNowButton = "goNowButton",
PlayVideoButton = "playVideoButton",
WatchVideoButton = "watchVideoButton",
}
export interface Optimizely {
feature: string;
variable?: string;
}
export enum AdType {
Ad = "ad",
}
export interface AffixElement {
ID: number;
assetID: number;
type: FluffyType;
gender: number;
data: AffixData;
metadata: PurpleMetadata;
name: string;
}
export interface AffixData {
label?: string;
opType?: number;
type: string;
value?: number;
name: string;
valuePercent?: number;
amount?: number;
operationType?: number;
version?: number;
elements?: EarthElement[];
highPotency?: boolean;
}
export interface PurpleMetadata {
v?: number;
type?: PurpleType;
vIcon?: number;
assets?: PurpleAssets;
subType?: number;
faceColor?: number;
}
export interface PurpleAssets {
default?: PurpleDefault;
male?: Male;
female?: Female;
}
export interface PurpleDefault {
type: PurpleType;
v: number;
offSet: BeijingPigeon;
}
export enum PurpleType {
Atlas = "atlas",
Multiple = "multiple",
SingleImage = "singleImage",
}
export interface Female {
v: number;
legs: LeftArm;
type: PurpleType;
shirt: LeftArm;
leftArm: LeftArm;
rightArm: LeftArm;
leg?: BeijingPigeon;
iconVersions?: Version[];
assetVersions?: Version[];
noCache?: boolean;
}
export interface Version {
id: string;
}
export interface LeftArm {
x: number;
y: number;
pivot: BeijingPigeon;
handIK?: BeijingPigeon;
}
export interface Male {
v: number;
legs: Legs;
type: PurpleType;
shirt: LeftArm;
leftArm: LeftArm;
rightArm: LeftArm;
leg?: BeijingPigeon;
iconVersions?: Version[];
assetVersions?: Version[];
noCache?: boolean;
}
export interface Legs {
x: number;
y: number;
pivot: Pivot;
}
export interface Pivot {
x: number;
y: number | string;
}
export enum FluffyType {
Affix = "affix",
}
export interface Atlas {
ID: number;
assetID: number;
type: AtlasType;
gender: number;
data: AtlasData;
metadata: AtlasMetadata;
name: string;
}
export interface AtlasData {
filename: string;
name?: string;
}
export interface AtlasMetadata {
assets: FluffyAssets;
}
export interface FluffyAssets {
default: FluffyDefault;
}
export interface FluffyDefault {
v: number;
}
export enum AtlasType {
Atlas = "atlas",
StreamedMap = "streamedMap",
TiledMap = "tiledMap",
}
export interface BgmElement {
ID: number;
assetID: number;
type: BgmType;
gender: number;
data: AtlasData;
metadata: BgmMetadata;
name: string;
}
export interface BgmMetadata {
assets: FluffyAssets;
v?: number;
}
export enum BgmType {
Bgm = "bgm",
}
export interface BitmapFont {
ID: number;
assetID: number;
type: string;
gender: number;
data: BitmapFontData;
metadata: AtlasMetadata;
name: string;
}
export interface BitmapFontData {
filename: string;
}
export interface Boot {
ID: number;
assetID: number;
type: TypeElement;
gender: number;
data: BootData;
metadata: PurpleMetadata;
name: string;
}
export interface BootData {
drop?: number;
name: string;
price?: number;
member: number;
rarity: number;
effects: Array;
flavorText: string;
cost?: CostElement[];
""?: string;
"0"?: number;
"en-us"?: string;
type?: TentacledType;
memberAd?: number;
}
export interface CostElement {
type: TypeElement;
ID: number;
N?: number;
dropChance?: number;
duplicateValue?: number;
}
export enum TypeElement {
Boots = "boots",
Currency = "currency",
Dorm = "dorm",
Empty = "",
Follow = "follow",
Fossil = "fossil",
GiftBox = "giftBox",
Gold = "gold",
Hat = "hat",
Item = "item",
ORB = "orb",
Outfit = "outfit",
Prefab = "prefab",
Weapon = "weapon",
}
export enum TentacledType {
Cover = "cover",
Empty = "",
Hat = "Hat",
Mask = "mask",
Wrap = "wrap",
}
export interface BossElement {
ID: number;
assetID: number;
type: BossType;
gender: number;
data: BossData;
metadata: BossMetadata;
name: string;
}
export interface BossData {
name?: string;
nameKey?: string;
element?: AstralElement;
adventureRewards?: AdventureReward[];
battleCheckpointID?: number;
battle?: Battle;
rockShuffle?: { [key: string]: RockShuffle };
creatureModifiers?: CreatureModifiers;
tree?: Tree;
spiderBattle?: SpiderBattle;
wizard?: Wizard;
lootTableID?: number;
missCooldown?: number;
powerStat?: number;
healthStat?: number;
spells?: number[];
affixIDs?: number[];
relicRingReward?: number;
starReward?: number;
specialSpells?: SpecialSpell[];
unsecureRewards?: UnsecureReward[];
}
export interface AdventureReward {
type: TypeElement;
ID: number;
}
export interface Battle {
hpStat: number;
powerStat?: number;
wyrmAttacks?: number[];
rockAttacks?: number[];
difficulty: number;
phaseHPThresholdPercentage?: number;
undergroundDamageMultiplier?: number;
damageModifier?: number;
hpModifier?: number;
attacks?: number[] | AttacksClass;
health?: number;
castDelay?: number;
yetiAttacks?: number[];
spiderAttacks?: number[];
battleShy?: boolean;
}
export interface AttacksClass {
fire: number[];
water: number[];
plant: number[];
ice: number[];
storm: number[];
shadow: number[];
}
export interface CreatureModifiers {
damage: number;
}
export enum AstralElement {
Astral = "astral",
Ice = "ice",
Shadow = "shadow",
}
export interface RockShuffle {
timeElapsed: DelayClass;
delay: DelayClass;
shuffleCount: UnitLevel;
}
export interface DelayClass {
start: number;
end: number;
}
export interface UnitLevel {
min: number;
max: number;
}
export interface SpecialSpell {
id: number;
cooldown: number;
}
export interface SpiderBattle {
minTeamSize: number;
scale: boolean;
pets: Particles[];
walkIntoBattle: boolean;
targetingEnabled: boolean;
catch: boolean;
adventureRewards: AdventureReward[];
}
export interface Particles {
ID: number;
}
export interface Tree {
creature: Creature;
hpStat: number;
breakThresholds: number[];
}
export interface Creature {
element: AstralElement;
}
export interface UnsecureReward {
type: TypeElement;
ID: number;
minAmountPresent: number;
}
export interface Wizard {
appearance: Appearance;
equipment: Equipment;
}
export interface Appearance {
gender: string;
hair: AppearanceHair;
skinColor: number;
eyeColor: number;
face: number;
}
export interface AppearanceHair {
style: number;
color: number;
}
export interface Equipment {
hat: number;
outfit: number;
weapon: number;
spellRelic: number;
}
export interface BossMetadata {
assets: TentacledAssets;
type?: PurpleType;
}
export interface TentacledAssets {
type?: PurpleType;
default: TentacledDefault;
}
export interface TentacledDefault {
type?: AssetTypeEnum;
x?: number;
w?: number;
h?: number;
v?: number;
hitbox?: DefaultHitbox;
filename?: string;
ID?: number;
rootOffset?: BeijingPigeon;
secondarySpine?: SecondarySpine;
}
export interface DefaultHitbox {
width: number;
height: number;
xOffset: number;
yOffset?: number;
}
export interface SecondarySpine {
ID: number;
v: number;
}
export enum AssetTypeEnum {
Atlas = "atlas",
Spine = "spine",
Spritesheet = "spritesheet",
}
export enum BossType {
Boss = "boss",
}
export interface BountyName {
ID: number;
assetID: number;
type: BountyNameType;
gender: number;
data: BountyNameData;
metadata: MemberClass;
name: string;
}
export interface BountyNameData {
name: string;
value: string;
templateType: TemplateType;
requiredPetIDs: number[];
}
export enum TemplateType {
PetName = "pet-name",
}
export enum BountyNameType {
BountyName = "bountyName",
}
export interface Bundle {
ID: number;
assetID: number;
type: string;
gender: number;
data: BundleData;
metadata: BundleMetadata;
name: string;
}
export interface BundleData {
name: string;
isPurchaseable: boolean;
price: number;
items: CostElement[];
flavorText: string;
}
export interface BundleMetadata {
vIcon: number;
}
export interface Currency {
ID: number;
assetID: number;
type: TypeElement;
gender: number;
data: CurrencyData;
metadata: PurpleMetadata;
name: string;
}
export interface CurrencyData {
drop: number;
name: string;
price: number;
modifier: number;
flavorText: string;
icon?: null | string;
namePlural?: string;
zone?: Zone;
cost?: CostElement[] | CostElement;
}
export enum Zone {
Any = "any",
Empty = "",
}
export interface DailyReward {
ID: number;
assetID: number;
type: string;
gender: number;
data: DailyRewardData;
metadata: MemberClass;
name: string;
}
export interface DailyRewardData {
resetDayIndex: number;
days: Day[];
name: string;
}
export interface Day {
numRequiredQuestions: number;
rewards: CostElement[];
}
export interface Dialogue {
ID: number;
assetID: number;
type: DialogueType;
gender: number;
data: DialogueData;
metadata: MemberClass;
name: string;
}
export interface DialogueData {
audio: Audio;
avatar: Avatar;
textKey: string;
nameKey?: string;
nameKKey?: string;
name?: string;
}
export interface Audio {
d?: number;
s?: number;
tag?: string;
}
export interface Avatar {
atlas?: string;
frameName: FrameName;
animationMod: number | null | string;
spineAttachment: null | string;
dimmed?: boolean;
offsetY?: number;
}
export enum FrameName {
Empty = "",
Face0 = "face_0",
Face1 = "face_1",
Face10 = "face_10",
Face15 = "face_15",
Face2 = "face_2",
Face3 = "face_3",
Face4 = "face_4",
Face5 = "face_5",
Face6 = "face_6",
Face7 = "face_7",
Face8 = "face_8",
Face9 = "face_9",
}
export enum DialogueType {
Dialogue = "dialogue",
}
export interface Dorm {
ID: number;
assetID: number;
type: TypeElement;
gender: number;
data: DormData;
metadata: DormMetadata;
name: string;
}
export interface DormData {
r: number;
name: string;
price: number;
member: number;
rarity: number;
category: Category;
flavorText: string;
cost?: CostElement[];
"en-us"?: string;
}
export enum Category {
Comfy = "Comfy",
Items = "Items",
Lamps = "Lamps",
Plants = "Plants",
Storage = "Storage",
Surface = "Surface",
Wall = "Wall",
}
export interface DormMetadata {
type: StickyType;
vIcon: number;
assets: StickyAssets;
v?: number;
iconAtlas?: string;
}
export interface StickyAssets {
vertical: Vertical;
horizontal?: Horizontal;
sheets?: Sheets;
}
export interface Horizontal {
v: number;
type: HorizontalType;
anchor?: BeijingPigeon;
}
export enum HorizontalType {
Atlas = "atlas",
SingleImage = "singleImage",
Spine = "spine",
}
export interface Sheets {
v: number;
type: PurpleType;
}
export interface Vertical {
v?: number;
type?: HorizontalType;
anchor?: BeijingPigeon;
animated?: boolean;
noCache?: boolean;
ID?: number;
}
export enum StickyType {
Multiple = "multiple",
Spine = "spine",
}
export interface Dormbg {
ID: number;
assetID: number;
type: DormbgType;
gender: number;
data: DormbgData;
metadata: BundleMetadata;
name: string;
}
export interface DormbgData {
x: number;
y: number;
tag: string;
name: string;
price: number;
member: number;
rarity: number;
category: Category;
flavorText: string;
}
export enum DormbgType {
Dormbg = "dormbg",
}
export interface Dungeon {
ID: number;
assetID: number;
type: DungeonType;
gender: number;
data: DungeonData;
metadata: MemberClass;
name: string;
}
export interface DungeonData {
version: number;
name: string;
seed: null;
gridWidth: number;
gridHeight: number;
minCritPathLength: number;
maxCritPathLength: number;
monsterIDs: number[];
minEncounters: number;
maxEncounters: number;
monsterDrops: CostElement[];
goldenPages: number;
minPages: number;
maxPages: number;
battleDifficulty: number;
extraPaths: ExtraPaths;
monsterRooms: Room[];
normalRooms: Room[];
endRoom: Room;
monsterWeights?: number[];
}
export interface Room {
tileMap: string;
fsmId: number;
}
export interface ExtraPaths {
minLength: number;
maxLength: number;
minPaths: number;
maxPaths: number;
}
export enum DungeonType {
Dungeon = "dungeon",
}
export interface Emote {
ID: number;
assetID: number;
type: EmoteType;
gender: number;
data: EmoteData;
metadata: PurpleMetadata;
name: string;
}
export interface EmoteData {
name: string;
isAnimated: number;
}
export enum EmoteType {
Emote = "emote",
}
export interface Color {
ID: number;
assetID: number;
type: EyeColorType;
gender: number;
data: EyeColorData;
metadata: PurpleMetadata;
name: string;
}
export interface EyeColorData {
name: string;
price: number;
colors?: Array;
member: number;
flavorText?: string;
}
export enum EyeColorType {
EyeColor = "eyeColor",
HairColor = "hairColor",
}
export interface Face {
ID: number;
assetID: number;
type: FaceType;
gender: number;
data: FaceData;
metadata: PurpleMetadata;
name: FaceName;
}
export interface FaceData {
price: number;
name: string;
flavorText: FlavorText;
colors?: Array;
}
export enum FlavorText {
BuyingThisWillChangeYourFaceStyle = "Buying this will change your face style!",
BuyingThisWillChangeYourSkinTone = "Buying this will change your skin tone!",
FlavorTextBuyingThisWillChangeYourFaceStyle = "Buying this will change your face style.",
}
export enum FaceName {
Empty = "",
Face17 = "Face-17",
Face18 = "Face-18",
}
export enum FaceType {
Face = "face",
SkinColor = "skinColor",
}
export interface FaceColor {
ID: number;
assetID: number;
type: string;
gender: number;
data: FaceColorData;
metadata: MemberClass;
name: string;
}
export interface FaceColorData {
price: number;
colors: Array;
}
export interface Follow {
ID: number;
assetID: number;
type: TypeElement;
gender: number;
data: FollowData;
metadata: FollowMetadata;
name: string;
}
export interface FollowData {
tag?: string;
name: string;
price?: number;
member?: number;
rarity: number;
flavorText: string;
customPrice?: number;
spriteOffsets?: SpriteOffsets;
numWalkAnimFrames?: number;
numStandAnimFrames?: number;
drop?: number;
particleEffects?: DataParticleEffect[];
cost?: CostElement[];
"en-us"?: string;
}
export interface DataParticleEffect {
ID: number;
x: number;
y: number;
inFront?: boolean;
}
export interface SpriteOffsets {
body?: BeijingPigeon;
tail?: BeijingPigeon;
legs?: BeijingPigeon;
}
export interface FollowMetadata {
assets?: IndigoAssets;
v?: number;
type: NameEnum;
vIcon: number;
icon?: string;
petID?: number;
anchor?: BeijingPigeon;
}
export interface IndigoAssets {
default: Vertical;
prefab?: Prefab;
}
export interface Prefab {
type: TypeElement;
ID: number;
hitbox?: PrefabHitbox;
}
export interface PrefabHitbox {
x: number;
y: number;
width: number;
height: number;
}
export enum NameEnum {
Legacy = "legacy",
Pet = "pet",
Spine = "spine",
}
export interface FontStyle {
ID: number;
assetID: number;
type: FontStyleType;
gender: number;
data: FontStyleData;
metadata: MemberClass;
name: string;
}
export interface FontStyleData {
font: string;
fontSize: number;
fontWeight?: string;
smoothed: boolean;
fill: string;
blendMode?: number;
padding?: BeijingPigeon;
stroke?: string;
strokeThickness?: number;
shadowDistance?: number;
shadowColor?: string;
shadowBlur?: number;
name?: string;
}
export enum FontStyleType {
FontStyle = "fontStyle",
}
export interface Fossil {
ID: number;
assetID: number;
type: TypeElement;
gender: number;
data: FossilData;
metadata: BundleMetadata;
name: string;
}
export interface FossilData {
name: string;
count?: number;
price: number;
rarity: number;
flavorText: string;
recipe?: CostElement[];
}
export interface FSM {
ID: number;
assetID: number;
type: FSMType;
gender: number;
data: FSMData;
metadata: MemberClass;
name: string;
}
export interface FSMData {
version: number;
name?: string;
states: State[];
names?: string;
}
export interface State {
name?: string;
actions: ActionElement[];
transitions?: Transition[];
}
export interface ActionElement {
type: string;
parameters: Parameters;
results?: Results;
wait?: boolean;
}
export interface Parameters {
enable?: boolean;
function?: string;
context?: string;
arguments?: Array;
time?: number | string;
creature?: string;
ID?: number[] | number;
clip?: string;
pack?: string;
sound?: string;
character?: Character;
target?: BeijingPigeon | string;
visible?: boolean;
pathfinder?: Path;
x?: number | null | string;
y?: number | null | string;
height?: number;
xOffset?: number;
wait?: boolean | string;
walkSpeed?: number;
eventName?: EventName;
eventData?: EventData;
overlayMode?: boolean;
player?: string;
flag?: boolean;
name?: string;
value?: boolean | number | string;
variables?: Variables;
screen?: string;
hide?: boolean;
items?: ItemsItem[] | string;
element?: string;
show?: boolean;
yOffset?: number;
delay?: number | string;
intensity?: number;
direction?: string;
path?: BeijingPigeon[];
speed?: number | null;
alpha?: number;
type?: ParametersType;
properties?: EventData;
game?: Game;
breadcrumbName?: string;
featureName?: string;
spine?: string;
animationName?: string;
map?: DefeatZone;
loadingData?: LoadingData;
zone?: string;
quest?: number;
sequence?: number | string;
config?: Config;
positions?: BeijingPigeon[];
animation?: Animation;
layer?: Layer;
randomDelay?: boolean;
fadeIn?: number;
loop?: boolean;
to?: To[];
parent?: string;
animationChain?: string[];
scene?: string;
state?: number | string;
active?: boolean;
animationClip?: string;
transform?: string;
position?: string;
animationController?: string;
data?: string;
defeatZone?: DefeatZone;
rocks?: string;
shuffleCount?: string;
startTimeElapsed?: string;
endTimeElapsed?: string;
startDelay?: string;
endDelay?: string;
controller?: string;
service?: string;
externalFactory?: string;
bossID?: string;
bossSeenID?: string;
locomotion?: string;
createParent?: boolean;
xScale?: number;
yScale?: number;
componentType?: string;
playerIdentifier?: string;
duration?: number | string;
object?: string;
animator?: string;
component?: string;
text?: string;
playerObject?: string;
graphic?: string;
from?: string;
prefabLoader?: string;
count?: string;
offset?: string;
playDuration?: string;
fadeDuration?: number;
saveEnabled?: boolean;
faceTransform?: string;
reenableInputOnClose?: boolean;
cameraTransform?: string;
targetTransform?: string;
cameraFollowController?: string;
enableFollowController?: boolean;
renderComponent?: string;
durationMS?: DurationMSEnum | number;
targetAlpha?: number;
rectTransform?: string;
initialAlpha?: number;
scaleTimeMS?: number;
correctionAmounts?: number[];
correctionTimes?: number[];
}
export enum Animation {
Idle = "idle",
Lantern1Glow = "lantern-1-glow",
Lantern2Glow = "lantern-2-glow",
}
export enum Character {
Florian = "florian",
Gale = "gale",
Merchant = "merchant",
Noot = "noot",
Pippet = "pippet",
Puppetmaster = "puppetmaster",
}
export enum Config {
GoldenPageConfig = "$goldenPageConfig",
MonsterConfig = "$monsterConfig",
PageConfig = "$pageConfig",
}
export enum DefeatZone {
AcademyCR2 = "academy-CR2",
AcademyGH1 = "academy-GH1",
AcademyGH2 = "academy-GH2",
AcademyGH3 = "academy-GH3",
EarthtowerCR = "earthtower-CR",
EarthtowerWR = "earthtower-WR",
HouseExterior = "house-exterior",
IcetowerCR = "icetower-CR",
IcetowerWR = "icetower-WR",
LamplightB3 = "lamplight-B3",
Map = "$map",
ReturnMap = "$returnMap",
TowerTownA0 = "tower_town-A0",
}
export enum DurationMSEnum {
BannerShowTimeMS = "$bannerShowTimeMS",
CardFadeDuration = "$cardFadeDuration",
}
export interface EventData {
type: EventDataType;
name: string;
}
export enum EventDataType {
AcademyArchives = "AcademyArchives",
Tutorial2 = "tutorial_2",
TutorialSteps1 = "tutorial_steps_1",
}
export enum EventName {
GameComplete = "game_complete",
}
export enum Game {
Game = "$game",
}
export interface ItemsItem {
type: string;
ID: number;
data?: PurpleData;
}
export interface PurpleData {
level: number;
stars: number;
}
export enum Layer {
Content = "content",
}
export interface LoadingData {
fadeIn: boolean;
time: number;
fadeOut: boolean;
}
export enum Path {
Path = "$path",
Pathfinder = "$pathfinder",
PlayerPathfinder = "$playerPathfinder",
}
export interface To {
properties: Properties;
duration: number;
ease: Ease;
delay?: number;
}
export enum Ease {
Linear = "Linear",
Quad = "Quad",
QuadEaseOut = "Quad.easeOut",
}
export interface Properties {
alpha?: number;
x?: number;
y?: number;
scaleX?: number;
scaleY?: number;
}
export enum ParametersType {
GameCompleteV3 = "game_complete_v3",
}
export interface Variables {
game?: Game;
monster?: string;
gnome?: string;
path?: Path;
x?: number;
shadowWyrmContainer?: string;
shadowWyrmSpine?: string;
emergeAnimation?: string;
shadowWyrmBoss?: string;
playerLocomotion?: string;
circleTrigger?: string;
monsterTransform?: string;
chatBubble?: string;
monsterWalkAnimator?: string;
monsterWalkPosition?: string;
monsterSpine?: string;
sparklesGameObject?: string;
supply?: string;
playerAnimationController?: string;
supplyTransform?: string;
supplyStartingPosition?: string;
supplyPosition?: string;
rotateSupply?: boolean;
morphExpiration?: string;
}
export interface Results {
isVictory?: string;
newRockPositions?: string;
dialogueSelection?: string;
answerCorrect?: string;
skillData?: string;
responseTime?: string;
instance?: string;
component?: string;
}
export interface Transition {
state: string;
conditions?: Condition[];
}
export interface Condition {
value: string;
lessThan?: number | string;
equals?: string;
type?: ConditionType;
test?: boolean | number | null | string;
}
export enum ConditionType {
Equals = "equals",
GreaterThan = "greaterThan",
NotEquals = "notEquals",
}
export enum FSMType {
FSM = "fsm",
}
export interface GameFeed {
ID: number;
assetID: number;
type: GameFeedType;
gender: number;
data: GameFeedData;
metadata: GameFeedMetadata;
name: string;
}
export interface GameFeedData {
key: string;
category: string;
notification: Notification;
modal: Modal;
feedText: string;
icon: string;
autoShare: boolean;
eventAction: EventAction;
metaData?: MetaData;
}
export enum EventAction {
Empty = "",
MemberAd = "memberAd",
Teleport = "teleport",
}
export interface MetaData {
equals?: MetaDataEquals;
}
export interface MetaDataEquals {
type: TypeElement[];
}
export interface Modal {
title: Title;
body: string;
action: ActionEnum;
}
export enum ActionEnum {
CheckOutLamplightTown = "Check out Lamplight Town",
CheckOutZoneName = "Check out ${zoneName}",
Empty = "",
}
export enum Title {
Empty = "",
YourFriendBoughtANewItem = "Your friend bought a new item!",
YourFriendWonANewItem = "Your friend won a new item!",
}
export interface Notification {
self: string;
friend: string;
}
export interface GameFeedMetadata {
equals?: MetadataEquals;
}
export interface MetadataEquals {
storeID: number[];
type: TypeElement[];
}
export enum GameFeedType {
GameFeed = "gameFeed",
}
export interface Gender {
ID: number;
assetID: number;
type: string;
gender: number;
data: GenderData;
metadata: PurpleMetadata;
name: string;
}
export interface GenderData {
member: number;
name: string;
saveDataID: string;
price: number;
cost: CostElement[];
flavorText: string;
}
export interface Generic {
ID: number;
assetID: number;
type: GenericType;
gender: number;
data: GenericData;
metadata: MemberClass;
name: string;
}
export interface GenericData {
name: string;
sections?: Sections;
groups?: Groups;
bountyPetIDs?: number[];
bountyDurationSeconds?: number;
totalBounties?: number;
totalMemberBounties?: number;
tiers?: { [key: string]: Tier };
monsterPoolPetIDs?: number[];
bountyElementAlignmentChance?: number;
unitLevel?: UnitLevel;
teams?: Teams;
spellTierCount?: number;
maxEnergy?: number;
elementalAdvantages?: ElementalAdvantages;
elementalDisadvantages?: ElementalAdvantages;
allOutAttackDamage?: { [key: string]: { [key: string]: number } };
allOutAttackBossDamage?: { [key: string]: { [key: string]: number } };
minPlayerHeartsOnEndBattle?: number;
difficultySwitchChances?: number[];
singleShot?: Aoe[];
aoe?: Aoe[];
maxTier?: number;
guardianMaps?: { [key: string]: GuardianMap };
dialogueIDs?: number[];
spellMissCoolDown?: number;
restrictedBattleActions?: string[];
opponentBackpacks?: OpponentBackpack[];
itemMaxCount?: ItemMaxCount;
}
export interface Aoe {
level: number;
spellID: number;
}
export interface ElementalAdvantages {
fire: EarthElement[];
water: EarthElement[];
earth: EarthElement[];
plant: EarthElement[];
storm: EarthElement[];
mech: EarthElement[];
ice: EarthElement[];
shadow: EarthElement[];
wizard?: AstralElement[];
astral?: AstralElement[];
}
export interface Groups {
start: number[];
middle: number[];
end: number[];
}
export interface GuardianMap {
zoneName: string;
scenePrefabID: number;
noOrbAlign?: boolean;
}
export interface ItemMaxCount {
follow: number;
hat: number;
outfit: number;
boots: number;
weapon: number;
item: number;
orb: number;
dorm: number;
default: number;
}
export interface OpponentBackpack {
level: number;
itemTableID: number;
}
export interface Sections {
start: EasyPath;
easyPath: EasyPath;
hardPath: EasyPath;
end: EasyPath;
}
export interface EasyPath {
mapPoolName: string;
roomCount: number;
objects: Objects;
maxEncountersPerRoom: number;
}
export interface Objects {
easyEncounter: number;
mediumEncounter: number;
hardEncounter: number;
goalEncounter: number;
basicChest: number;
memberChest: number;
interactable: number;
}
export interface Teams {
limit: UnitLevel;
units: UnitLevel;
}
export interface Tier {
member?: MemberClass;
nonMember?: NonMember;
easy?: Easy;
medium?: Easy;
hard?: Easy;
guardianId?: number;
guardianMapKey?: number;
interactables?: Interactables;
lootTables?: number[];
baseStatsIncreaseAffixIDs?: number[];
missCooldown?: number;
}
export interface Easy {
teamSize: UnitLevel;
possibleAffixIDs: number[];
lootTables: number[];
}
export interface Interactables {
itemTableID: number;
}
export interface NonMember {
possibleAffixIDs: number[];
loot: Loot[];
randomLootTableIDs: number[];
baseStatsIncreaseAffixIDs?: number[];
}
export interface Loot {
itemTableID: number;
dropCount: number;
}
export enum GenericType {
Generic = "generic",
}
export interface GiftBox {
ID: number;
assetID: number;
type: TypeElement;
gender: number;
data: GiftBoxData;
metadata: BundleMetadata;
name: string;
}
export interface GiftBoxData {
name: string;
isPurchaseable: boolean;
questions: number;
items: any[];
}
export interface HairElement {
ID: number;
assetID: number;
type: HairType;
gender: number;
data: EyeColorData;
metadata: HairMetadata;
name: string;
}
export interface HairMetadata {
x: number;
y: number;
pivot: BeijingPigeon;
vIcon: number;
type: PurpleType;
v: number;
noCache?: boolean;
}
export enum HairType {
Hair = "hair",
}
export interface Hat {
ID: number;
assetID: number;
type: TypeElement;
gender: number;
data: BootData;
metadata: HatMetadata;
name: string;
}
export interface HatMetadata {
v: number;
x: number;
y: number;
type: PurpleType;
pivot: BeijingPigeon;
vIcon: number;
hairHide: number[];
hideReplace: number | string;
assetVersions?: Version[];
iconVersions?: Version[];
noCache?: boolean;
cacheError?: boolean;
}
export interface GameDataItem {
ID: number;
assetID: number;
type: TypeElement;
gender: number;
data: FluffyData;
metadata: ItemMetadata;
name: string;
}
export interface FluffyData {
name: string;
price: number;
member: number;
rarity: number;
flavorText: string;
type?: IndecentType;
target?: TargetEnum;
healAmount?: number;
drop?: number;
effect?: EffectClass | null;
effectDescription?: string;
affix?: DataAffix;
subType?: string;
element?: string;
potency?: number;
cost?: CostElement[];
affixID?: number;
}
export interface DataAffix {
type: IndigoType;
elements?: EarthElement[];
amount: number;
highPotency: boolean;
}
export enum IndigoType {
CritChance = "critChance",
Damage = "damage",
ElementalResistance = "elementalResistance",
}
export interface EffectClass {
fx?: string;
transform?: Transform;
ID?: number;
time?: number;
}
export enum Transform {
Dorm = "dorm",
Follow = "follow",
Pet = "pet",
}
export enum TargetEnum {
Team = "team",
Unit = "unit",
}
export enum IndecentType {
Consumable = "consumable",
Food = "food",
Potion = "potion",
}
export interface ItemMetadata {
vIcon: number;
icon?: IconEnum;
assets?: IndecentAssets;
v?: number;
type?: PurpleType;
}
export interface IndecentAssets {
icon?: IconClass;
morphedApperance?: AdventureReward;
}
export interface IconClass {
type: PurpleType;
ID: number;
frame: string;
}
export enum IconEnum {
Empty = "",
Item110 = "item/110",
}
export interface ItemTable {
ID: number;
assetID: number;
type: ItemTableType;
gender: number;
data: ItemTableData;
metadata: MemberClass;
name: string;
}
export interface ItemTableData {
items: Fallback[];
fallback?: Fallback;
name: string;
}
export interface Fallback {
type: TypeElement;
ID?: number;
quantity: UnitLevel | number;
weight?: number;
}
export enum ItemTableType {
ItemTable = "itemTable",
}
export interface Key {
ID: number;
assetID: number;
type: KeyType;
gender: number;
data: KeyData;
metadata: PurpleMetadata;
name: string;
}
export interface KeyData {
name: string;
levels: number;
flavorText: string;
quest?: number | null;
price?: number;
}
export enum KeyType {
Key = "key",
}
export interface MathTown {
ID: number;
assetID: number;
type: MathTownDecorType;
gender: number;
data: MathTownDecorData;
metadata: PurpleMetadata;
name: string;
}
export interface MathTownDecorData {
name: string;
tag?: string;
description: string;
element: number;
decorPositions?: BeijingPigeon[];
}
export enum MathTownDecorType {
MathTownDecor = "mathTownDecor",
MathTownFrame = "mathTownFrame",
}
export interface MathTownInterior {
ID: number;
assetID: number;
type: MathTownInteriorType;
gender: number;
data: MathTownInteriorData;
metadata: PurpleMetadata;
name: string;
}
export interface MathTownInteriorData {
name: string;
tag?: string;
description: string;
element: number;
flavorText?: string;
occupantLevels: number[];
}
export enum MathTownInteriorType {
MathTownInterior = "mathTownInterior",
}
export interface Mount {
ID: number;
assetID: number;
type: string;
gender: number;
data: MountData;
metadata: MountMetadata;
name: string;
}
export interface MountData {
name: string;
flavorText: string;
member: number;
drop?: number;
price: number;
rarity: number;
cost?: CostElement[];
effects: number[];
}
export interface MountMetadata {
vIcon: number;
type: PurpleType;
assets: HilariousAssets;
}
export interface HilariousAssets {
below: Above;
above: Above;
particles: Particles;
}
export interface Above {
type: PurpleType;
v: number;
x: number;
y?: number;
}
export interface NameElement {
ID: number;
assetID: number;
type: NameType;
gender: number;
data: NameData;
metadata: MemberClass;
name: string;
}
export interface NameData {
name: string;
value: string;
type: number;
deprecated?: boolean;
}
export enum NameType {
Name = "name",
}
export interface Nickname {
ID: number;
assetID: number;
type: NicknameType;
gender: number;
data: NicknameData;
metadata: MemberClass;
name: string;
}
export interface NicknameData {
value: string;
name?: string;
}
export enum NicknameType {
Nickname = "nickname",
}
export interface ORB {
ID: number;
assetID: number;
type: TypeElement;
gender: number;
data: ORBData;
metadata: BundleMetadata;
name: string;
}
export interface ORBData {
name: string;
flavorText: string;
tier: number;
rarity: number;
affixIDs: number[];
}
export interface Outfit {
ID: number;
assetID: number;
type: TypeElement;
gender: number;
data: OutfitData;
metadata: PurpleMetadata;
name: string;
}
export interface OutfitData {
drop: number;
name: string;
price?: number;
member: number;
rarity: number;
effects: Array;
flavorText: string;
id?: number;
asset_id?: number;
create_date?: string;
update_date?: string;
cost?: CostElement[];
"en-us"?: string;
}
export interface GameDataParticleEffect {
ID: number;
assetID: number;
type: string;
gender: number;
data: ParticleEffectData;
metadata: MemberClass;
name: string;
}
export interface ParticleEffectData {
name: string;
particle: Particle;
emitter: Emitter;
}
export interface Emitter {
repeat: number;
frequency: UnitLevel | number;
burstFrequency?: UnitLevel;
}
export interface Particle {
image: string;
frame?: string;
lifespan: UnitLevel | number;
vy: UnitLevel;
vx?: UnitLevel;
scale?: Scale;
alpha?: Alpha;
rotation?: Rotation;
animations?: Animations;
}
export interface Alpha {
value: number;
control: BeijingPigeon[];
}
export interface Animations {
clouds: Clouds;
}
export interface Clouds {
frames: string[];
frameRate: number;
loop: boolean;
}
export interface Rotation {
initial: UnitLevel;
delta: UnitLevel;
}
export interface Scale {
value: UnitLevel | number;
control: BeijingPigeon[];
}
export interface Pet {
ID: number;
assetID: number;
type: NameEnum;
gender: number;
data: PetData;
metadata: PetMetadata;
name: string;
}
export interface PetData {
life?: Life;
ordinal?: number;
name: string;
curve: Curve[];
power?: Life;
growth?: string;
rarity?: number;
element: EarthElement;
flavorText: string;
effects?: number[];
price?: number;
statHealth: number;
statPower: number;
foreignSpellPools: Array;
nativeSpells: NativeSpell[];
assetType?: AssetTypeEnum;
R?: number;
special?: boolean;
bench?: Bench[];
member?: number;
adText?: string;
unique?: boolean;
unlockFollow?: number;
epicSpell?: number;
cost?: CostElement[];
}
export interface Bench {
weight?: number;
petID?: number;
spell?: number;
}
export interface Curve {
a?: number;
lvl: number;
e?: number;
evolveID?: number;
}
export enum Life {
A = "A-",
B = "B",
C = "C",
LifeA = "A",
LifeB = "B+",
LifeC = "C-",
PurpleA = "A+",
PurpleB = "B-",
PurpleC = "C+",
}
export interface NativeSpell {
spell: number;
}
export interface PetMetadata {
v?: number;
type: PurpleType;
vIcon: number;
assets: AmbitiousAssets;
uiConfig?: UIConfig;
rewardsExclusive?: boolean;
}
export interface AmbitiousAssets {
small?: Above;
default?: StickyDefault;
reduced?: Reduced;
spine?: AssetsSpine;
}
export interface StickyDefault {
h?: number;
v?: number;
w?: number;
x?: number;
type: AssetTypeEnum;
pivotX?: number;
battleScale: number;
ID?: number;
hitbox?: DefaultHitbox;
flip?: boolean;
}
export interface Reduced {
h: number;
v: number;
w: number;
x: number;
type: AssetTypeEnum;
pivotX?: number;
hitbox?: DefaultHitbox;
}
export interface AssetsSpine {
type: AssetTypeEnum;
ID: number;
battleScale: number;
}
export interface UIConfig {
type: ElementType;
name: NameEnum;
anchorX: number;
anchorY: number;
relativeX: number;
relativeY: number;
spineKey: string;
animation: string;
loop: boolean;
}
export enum ElementType {
Button = "Button",
ButtonToggle = "ButtonToggle",
Graphic = "Graphic",
InputFieldElement = "InputFieldElement",
Mask = "Mask",
PhaserButtonWrapper = "PhaserButtonWrapper",
ScrollBar = "ScrollBar",
ScrollView = "ScrollView",
SlicedBanner = "SlicedBanner",
SlicedGraphic = "SlicedGraphic",
Slider = "Slider",
SpineUI = "SpineUI",
Tab = "Tab",
TabButton = "TabButton",
Text = "Text",
UIElement = "UIElement",
VideoGraphic = "VideoGraphic",
WebFontText = "WebFontText",
WoodSlicedPanel = "WoodSlicedPanel",
}
export interface PrizeWheel {
ID: number;
assetID: number;
type: string;
gender: number;
data: PrizeWheelData;
metadata: null;
name: string;
}
export interface PrizeWheelData {
slots: Slot[];
itemPools: Array;
atlas: string;
wheelSprite: string;
wheelTop: string;
wheelTopOffset: BeijingPigeon;
wheelPointer: string;
wheelPointerOffset?: BeijingPigeon;
itemDistanceScale?: number;
askSpinDialogue?: string;
spinningDialogue?: string;
outOfSpinsDialogue?: string;
spinAgainDialogue?: string;
ticketDialogue?: string;
eventType: string;
name?: string;
maxedItemPrizeSubstitute?: number;
firstSpinDialogueID?: number;
spinDialogueID?: number;
declineSpinDialogueID?: number;
spinningDialogueID?: number;
prizeReceivedDialogueID?: number;
outOfSpinsDialogueID?: number;
spinAgainDialogueID?: number;
firstSpinBreadcrumb?: FirstSpinBreadcrumb;
}
export interface FirstSpinBreadcrumb {
featureName: string;
breadcrumbName: string;
}
export interface Slot {
itemPools: ItemPool[];
weight: number;
}
export interface ItemPool {
index: number;
weight: number;
}
export interface Relic {
ID: number;
assetID: number;
type: RelicType;
gender: number;
data: MountData;
metadata: BundleMetadata;
name: string;
}
export enum RelicType {
Relic = "relic",
}
export interface Sfx {
ID: number;
assetID: number;
type: SfxType;
gender: number;
data: SfxData;
metadata: AtlasMetadata;
name: string;
}
export interface SfxData {
filename: string;
clips?: { [key: string]: Clip };
name?: string;
}
export interface Clip {
d: number;
s: number;
}
export enum SfxType {
Sfx = "sfx",
}
export interface SingleImage {
ID: number;
assetID: number;
type: PurpleType;
gender: number;
data: SingleImageData;
metadata: SingleImageMetadata;
name: string;
}
export interface SingleImageData {
filename?: string;
name?: string;
"en-us"?: string;
}
export interface SingleImageMetadata {
assets: FluffyAssets;
iconAtlas?: number | string;
v?: number;
petID?: number;
}
export interface Spell {
ID: number;
assetID: number;
type: SpellType;
gender: number;
data: SpellData;
metadata: SpellMetadata;
name: string;
}
export interface SpellData {
name: string;
price: number;
damage: number;
element: EarthElement;
animation: string;
heal?: boolean;
type?: SpellType | null;
epicId?: number | null;
baseAttack?: number | string;
statusEffects?: number[];
cost?: CostElement[];
energyCost?: number;
tier?: number;
targetType?: TargetType;
nextTierID?: number;
damageType?: Type;
}
export enum Type {
Aoa = "aoa",
Aoe = "aoe",
Beam = "beam",
Projectile = "projectile",
}
export enum TargetType {
Aoe = "aoe",
Single = "single",
}
export enum SpellType {
EpicAttack = "epic-attack",
Spell = "spell",
}
export interface SpellMetadata {
vIcon: number;
v?: number;
type?: PurpleType;
assets?: string[];
animationData?: AnimationData;
}
export interface AnimationData {
animationType: Type;
createLocation: CreateLocation;
impactLocation: ImpactLocation;
createRotates: boolean;
createBeamDelay: number | string;
travelRotates: boolean;
travelEasing: TravelEasing;
travelDuration: number;
sustainDuration: number;
endDuration: number;
endEasing: EndEasing;
impactRotates: boolean;
impact2Delay: number;
screenDim: boolean;
charFromAnimation: CharFromAnimation;
charToAnimation: CharToAnimation;
charToAnimationDelay: number | null;
charToAnimationLength: number | null;
travelStraight: boolean;
impact2Offset?: Impact2Offset;
fullTeamAttack?: boolean;
castingAnimation?: CastingAnimation;
endingMask?: boolean;
}
export interface CastingAnimation {
type: AssetTypeEnum;
ID: number;
offset: BeijingPigeon;
animation: string;
}
export enum CharFromAnimation {
None = "none",
Vibrate = "vibrate",
}
export enum CharToAnimation {
Damage = "damage",
None = "none",
}
export interface CreateLocation {
createOffsetX: number | null;
createOffsetY: number;
createy?: number;
createx?: number;
}
export enum EndEasing {
ElasticIn = "Elastic.In",
LinearNone = "Linear.None",
}
export interface Impact2Offset {
impact2OffsetX: number;
impact2OffsetY: number;
}
export interface ImpactLocation {
impactx: number | null;
impacty: number | null;
offsety?: number;
offsetx?: number;
}
export enum TravelEasing {
LinearNone = "Linear.None",
QuadraticIn = "Quadratic.In",
}
export interface SpellRelic {
ID: number;
assetID: number;
type: SpellRelicType;
gender: number;
data: SpellRelicData;
metadata: PurpleMetadata;
name: string;
}
export interface SpellRelicData {
spellID: number;
drop: number;
rarity: number;
name: string;
flavorText: string;
lockLevel?: number;
levelLock?: number;
}
export enum SpellRelicType {
SpellRelic = "spellRelic",
}
export interface SpineElement {
ID: number;
assetID: number;
type: AssetTypeEnum;
gender: number;
data: AtlasData;
metadata: SpineMetadata;
name: string;
}
export interface SpineMetadata {
assets: CunningAssets;
type?: PurpleType;
}
export interface CunningAssets {
default: IndigoDefault;
}
export interface IndigoDefault {
v: number;
type?: AssetTypeEnum;
hitbox?: DefaultHitbox;
}
export interface Tileset {
ID: number;
assetID: number;
type: string;
gender: number;
data: TilesetData;
metadata: MemberClass;
name: string;
}
export interface TilesetData {
data: TentacledData;
metadata: AtlasMetadata;
name: string;
}
export interface TentacledData {
name: string;
filename: string;
w: number;
h: number;
}
export interface Titan {
ID: number;
assetID: number;
type: string;
gender: number;
data: TitanData;
metadata: SpineMetadata;
name: string;
}
export interface TitanData {
name: string;
zone: string;
maxHealth: number;
element: EarthElement;
difficulty: number;
spellList: number[];
rewards: Reward[];
spine: string;
}
export interface Reward {
rank: number;
threshold: number;
mailKey: MailKey;
attachments: CostElement[];
mapping: number[];
}
export enum MailKey {
TitanReward = "titanReward",
}
export interface UI {
ID: number;
assetID: number;
type: UIType;
gender: number;
data: UIData;
metadata: MemberClass;
name: string;
}
export interface UIData {
name?: string;
elements?: FluffyElement[];
templates?: Template[];
data?: StickyData;
metadata?: MemberClass;
}
export interface StickyData {
name: string;
elements: PurpleElement[];
}
export interface PurpleElement {
type: ElementType;
name: string;
x: number;
y: number;
width: number;
height: number;
children: any[];
}
export interface FluffyElement {
type: ElementType;
name?: string;
anchorX?: number;
anchorY?: number;
relativeX?: number;
relativeY?: number;
width?: number;
relativeHeight?: number;
atlasID?: number | string;
baseFrameName?: string;
sliceType?: SliceType;
children?: ElementChild[];
relativeWidth?: number;
height?: number;
textKey?: string;
frameName?: string;
x?: number;
y?: number;
activeTrackBaseFrameName?: string;
inactiveTrackBaseFrameName?: string;
showHead?: boolean;
isVertical?: boolean;
isInteractive?: boolean;
thumbAnchor?: BeijingPigeon;
spineKey?: string;
visible?: boolean;
isThreeSlice?: boolean;
frameNameOn?: string;
frameNameOff?: string;
defaultToggleState?: number;
}
export interface ElementChild {
type: ElementType;
name?: string;
relativeWidth?: number;
relativeHeight?: number;
children?: PurpleChild[];
anchorX?: number;
anchorY?: number;
relativeX?: number;
relativeY?: number;
atlasID?: number;
baseFrameName?: string;
text?: string;
visible?: boolean;
layoutConfig?: LayoutConfig;
textKey?: string;
x?: number;
y?: number;
height?: number;
width?: number;
sliceType?: SliceType;
frameName?: string;
fontID?: number;
fontSize?: number;
upStateName?: string;
downStateName?: string;
buttonTextName?: string;
hoverLiftDistance?: number;
atlasName?: AtlasName;
wordWrap?: boolean;
style?: number;
color?: string;
align?: BoundsAlignH;
boundsAlignH?: BoundsAlignH;
boundsAlignV?: BoundsAlignH;
toggle?: boolean;
textOffset?: number;
forceUpperCase?: boolean;
activeTrackBaseFrameName?: string;
inactiveTrackBaseFrameName?: string;
thumbFrameName?: string;
showHead?: boolean;
isVertical?: boolean;
isInteractive?: boolean;
thumbAnchor?: BeijingPigeon;
scaleX?: number;
lineSpacing?: number;
singleImageID?: number;
tint?: number;
overStateName?: FluffyOverStateName;
}
export enum BoundsAlignH {
Bottom = "bottom",
Center = "center",
Left = "left",
Middle = "middle",
Right = "right",
Top = "top",
}
export enum AtlasName {
Empty = "",
UIShared = "ui-shared",
}
export interface PurpleChild {
type: ElementType;
name?: string;
anchorX?: number;
anchorY?: number;
relativeX?: number;
relativeY?: number;
relativeHeight?: number;
relativeWidth?: number;
visible?: boolean;
children?: FluffyChild[];
atlasID?: number;
baseFrameName?: string;
sliceType?: SliceType;
width?: number;
height?: number;
textKey?: string;
fontID?: number;
fontSize?: number;
horizontalAlignment?: BoundsAlignH;
verticalAlignment?: BoundsAlignH;
text?: string;
layoutConfig?: LayoutConfig;
x?: number;
frameName?: string;
tabID?: number;
isThreeSlice?: boolean;
upStateName?: string;
downStateName?: string;
buttonTextName?: string;
hoverLiftDistance?: number;
y?: number;
horizontalFlip?: boolean;
atlasName?: string;
thumbFrameName?: string;
trackFrameName?: string;
color?: string;
style?: number;
boundsAlignH?: BoundsAlignH;
boundsAlignV?: BoundsAlignH;
spineKey?: string;
wordWrap?: boolean;
textOffset?: number;
align?: BoundsAlignH;
groupID?: number;
lineSpacing?: number;
forceUpperCase?: boolean;
isVertical?: boolean;
rotateSprites?: boolean;
anxhorY?: number;
toggle?: boolean;
scaleX?: number;
overStateName?: PurpleOverStateName;
singleImageID?: number;
scaleY?: number;
wordWrapWidth?: number;
}
export interface FluffyChild {
type: ElementType;
name?: string;
anchorX?: number;
anchorY?: number;
relativeX?: number;
relativeY?: number;
atlasID?: number;
frameName?: string;
relativeWidth?: number;
relativeHeight?: number;
children?: TentacledChild[];
baseFrameName?: string;
sliceType?: SliceType;
height?: number;
textKey?: string;
fontID?: number;
fontSize?: number;
horizontalAlignment?: BoundsAlignH;
forceUpperCase?: boolean;
width?: number;
visible?: boolean;
text?: string;
verticalAlignment?: BoundsAlignH;
y?: number;
x?: number;
thumbFrameName?: string;
activeTrackBaseFrameName?: string;
inactiveTrackBaseFrameName?: string;
isVertical?: boolean;
atlasName?: AtlasName;
layoutConfig?: LayoutConfig;
boundsAlignH?: BoundsAlignH;
boundsAlignV?: BoundsAlignH;
style?: number;
color?: string;
wordWrap?: boolean;
scrollContentsName?: string;
enableTouchScroll?: boolean;
trackFrameName?: string;
upStateName?: string;
downStateName?: string;
buttonTextName?: string;
hoverLiftDistance?: number;
toggle?: boolean;
lineSpacing?: number;
align?: BoundsAlignH;
rotateSprites?: boolean;
scaleX?: number;
showHead?: boolean;
isInteractive?: boolean;
thumbAnchor?: BeijingPigeon;
spineKey?: string;
singleImageID?: number;
}
export interface TentacledChild {
type: ElementType;
name?: string;
relativeHeight?: number;
relativeWidth?: number;
text?: string;
fontID?: number;
fontSize?: number;
horizontalAlignment?: BoundsAlignH;
atlasID?: number;
baseFrameName?: string;
sliceType?: SliceType;
height?: number;
textKey?: string;
verticalAlignment?: BoundsAlignH;
visible?: boolean;
anchorX?: number;
anchorY?: number;
relativeX?: number;
relativeY?: number;
frameName?: string;
forceUpperCase?: boolean;
children?: StickyChild[];
activeTrackBaseFrameName?: string;
inactiveTrackBaseFrameName?: string;
endCapAtlas?: string;
endCapFrameName?: string;
showHead?: boolean;
isVertical?: boolean;
isInteractive?: boolean;
scrollContentsName?: string;
enableTouchScroll?: boolean;
width?: number;
thumbFrameName?: string;
trackFrameName?: string;
upStateName?: string;
downStateName?: string;
buttonTextName?: string;
hoverLiftDistance?: number;
y?: number;
style?: number;
color?: string;
boundsAlignH?: BoundsAlignH;
boundsAlignV?: BoundsAlignH;
wordWrap?: boolean;
layoutConfig?: LayoutConfig;
x?: number;
atlasName?: AtlasName;
singleImageID?: number;
tint?: number;
}
export interface StickyChild {
type: ElementType;
name: string;
anchorX?: number;
anchorY?: number;
relativeX?: number;
relativeY?: number;
atlasID?: number;
frameName?: string;
relativeHeight?: number;
relativeWidth?: number;
textKey?: string;
fontID?: number;
fontSize?: number;
horizontalAlignment?: BoundsAlignH;
verticalAlignment?: BoundsAlignH;
layoutConfig?: LayoutConfig;
baseFrameName?: string;
sliceType?: SliceType;
height?: number;
text?: string;
forceUpperCase?: boolean;
children?: IndigoChild[];
style?: number;
wordWrap?: boolean;
wordWrapWidth?: number;
color?: PurpleColor;
lineSpacing?: number;
width?: number;
boundsAlignH?: BoundsAlignH;
boundsAlignV?: BoundsAlignH;
atlasName?: AtlasName;
}
export interface IndigoChild {
type: ElementType;
name: string;
relativeX: number;
relativeY: number;
anchorX: number;
anchorY: number;
style?: number;
fontSize?: number;
color?: string;
boundsAlignH?: BoundsAlignH;
boundsAlignV?: BoundsAlignH;
lineSpacing?: number;
atlasID?: number;
frameName?: string;
width?: number;
height?: number;
activeTrackBaseFrameName?: string;
inactiveTrackBaseFrameName?: string;
thumbFrameName?: string;
showHead?: boolean;
isVertical?: boolean;
isInteractive?: boolean;
thumbAnchor?: BeijingPigeon;
}
export enum PurpleColor {
C16A2C = "#c16a2c",
The363636 = "#363636",
The3687Ba = "#3687ba",
}
export interface LayoutConfig {
type: LayoutConfigType;
alignment: BoundsAlignH;
offset?: number;
spacing?: number;
ignoreInvisible?: boolean;
}
export enum LayoutConfigType {
Horizontal = "horizontal",
Vertical = "vertical",
}
export enum SliceType {
Nine = "nine",
NineScale = "nineScale",
Three = "three",
ThreeScale = "threeScale",
}
export enum PurpleOverStateName {
WatchNowGraphicOverContainer = "watchNowGraphicOverContainer",
}
export enum FluffyOverStateName {
GoNowGraphicOver = "goNowGraphicOver",
WatchVideoGraphicOver = "watchVideoGraphicOver",
}
export interface Template {
type: ElementType;
name: string;
anchorX?: number;
anchorY?: number;
relativeX?: number;
relativeY?: number;
width?: number;
height?: number;
atlasID?: number;
baseFrameName?: string;
sliceType?: SliceType;
children?: TemplateChild[];
frameName?: string;
relativeWidth?: number;
relativeHeight?: number;
visible?: boolean;
x?: number;
y?: number;
layoutConfig?: LayoutConfig;
atlasName?: AtlasName;
text?: string;
style?: number;
boundsAlignH?: BoundsAlignH;
boundsAlignV?: BoundsAlignH;
upStateName?: string;
downStateName?: string;
buttonTextName?: string;
hoverLiftDistance?: number;
toggle?: boolean;
}
export interface TemplateChild {
type: ElementType;
name: string;
relativeWidth?: number;
relativeHeight?: number;
anchorX?: number;
anchorY?: number;
relativeX?: number;
relativeY?: number;
height?: number;
text?: string;
fontID?: number;
fontSize?: number;
horizontalAlignment?: BoundsAlignH;
verticalAlignment?: BoundsAlignH;
visible?: boolean;
atlasID?: number;
baseFrameName?: string;
sliceType?: SliceType;
children?: IndecentChild[];
x?: number;
y?: number;
width?: number;
frameName?: string;
isThreeSlice?: boolean;
textKey?: string;
forceUpperCase?: boolean;
style?: number;
color?: FluffyColor;
boundsAlignH?: BoundsAlignH;
boundsAlignV?: BoundsAlignH;
align?: BoundsAlignH;
wordWrap?: boolean;
upStateName?: string;
downStateName?: string;
buttonTextName?: string;
hoverLiftDistance?: number;
isVertical?: boolean;
spineKey?: string;
atlasName?: AtlasName;
rotateSprites?: boolean;
toggle?: boolean;
}
export interface IndecentChild {
type: ElementType;
name: string;
anchorY?: number;
relativeX?: number;
relativeY?: number;
atlasID?: number;
frameName?: string;
anchorX?: number;
relativeWidth?: number;
relativeHeight?: number;
baseFrameName?: string;
sliceType?: SliceType;
visible?: boolean;
children?: HilariousChild[];
text?: string;
fontID?: number;
fontSize?: number;
horizontalAlignment?: BoundsAlignH;
verticalAlignment?: BoundsAlignH;
height?: number;
activeTrackBaseFrameName?: string;
inactiveTrackBaseFrameName?: string;
thumbFrameName?: string;
thumbAnchor?: BeijingPigeon;
isVertical?: boolean;
isInteractive?: boolean;
width?: number;
wordWrap?: boolean;
color?: string;
textKey?: string;
align?: BoundsAlignH;
boundsAlignH?: BoundsAlignH;
boundsAlignV?: BoundsAlignH;
style?: number;
horizontalFlip?: boolean;
forceUpperCase?: boolean;
x?: number;
y?: number;
atlasName?: AtlasName;
layoutConfig?: LayoutConfig;
showHead?: boolean;
spineKey?: string;
upStateName?: string;
downStateName?: string;
buttonTextName?: string;
hoverLiftDistance?: number;
toggle?: boolean;
textOffset?: number;
url?: string;
autoStart?: boolean;
manuallyCreate?: boolean;
videoScaleX?: number;
videoScaleY?: number;
}
export interface HilariousChild {
type: ElementType;
name: string;
relativeHeight?: number;
relativeWidth?: number;
anchorX?: number;
anchorY?: number;
relativeX?: number;
relativeY?: number;
text?: string;
fontID?: number;
fontSize?: number;
horizontalAlignment?: BoundsAlignH;
verticalAlignment?: BoundsAlignH;
atlasID?: number;
frameName?: string;
textKey?: string;
forceUpperCase?: boolean;
width?: number;
height?: number;
y?: number;
style?: number;
color?: FluffyColor;
boundsAlignH?: BoundsAlignH;
boundsAlignV?: BoundsAlignH;
wordWrap?: boolean;
x?: number;
align?: BoundsAlignH;
children?: AmbitiousChild[];
offset?: number;
activeTrackBaseFrameName?: string;
inactiveTrackBaseFrameName?: string;
endCapAtlas?: string;
endCapFrameName?: string;
showHead?: boolean;
isVertical?: boolean;
isInteractive?: boolean;
baseFrameName?: string;
sliceType?: SliceType;
visible?: boolean;
lineSpacing?: number;
atlasName?: AtlasName;
fieldColour?: string;
placeholderText?: string;
isPassword?: boolean;
hoverLiftDistance?: number;
}
export interface AmbitiousChild {
type: ElementType;
name: string;
textKey?: string;
forceUpperCase?: boolean;
width?: number;
height?: number;
x?: number;
y?: number;
anchorX?: number;
anchorY?: number;
style?: number;
fontSize?: number;
color?: string;
align?: BoundsAlignH;
boundsAlignH?: BoundsAlignH;
boundsAlignV?: BoundsAlignH;
relativeWidth?: number;
relativeHeight?: number;
relativeX?: number;
relativeY?: number;
atlasID?: number;
frameName?: string;
visible?: boolean;
children?: CunningChild[];
text?: string;
wordWrap?: boolean;
baseFrameName?: string;
sliceType?: SliceType;
}
export interface CunningChild {
type: ElementType;
name: string;
text?: string;
relativeX: number;
relativeY: number;
anchorX: number;
anchorY: number;
wordWrap: boolean;
style: number;
boundsAlignH: BoundsAlignH;
boundsAlignV: BoundsAlignH;
textKey?: string;
relativeHeight?: number;
relativeWidth?: number;
fontSize?: number;
color?: PurpleColor;
}
export enum FluffyColor {
Black = "black",
E83E45 = "#E83E45",
Ffffff = "#ffffff",
The000000 = "#000000",
The363636 = "#363636",
The372623 = "#372623",
The865Fb1 = "#865FB1",
}
export enum UIType {
UI = "ui",
}
export interface Weapon {
ID: number;
assetID: number;
type: TypeElement;
gender: number;
data: WeaponData;
metadata: WeaponMetadata;
name: string;
}
export interface WeaponData {
drop: number;
name: string;
price: number;
member: number;
rarity: number;
effects: number[];
flavorText: string;
spellID?: number;
lockLevel?: number;
memberAd?: number;
cost?: CostElement[];
"en-us"?: string;
}
export interface WeaponMetadata {
v: number;
size: number;
type: PurpleType;
angle: number;
vIcon: number;
anchor: BeijingPigeon;
x?: number;
y?: number;
"anchor "?: BeijingPigeon;
assetVersions?: Version[];
iconVersions?: Version[];
noCache?: boolean;
rewardsExclusive?: boolean;
}