A Typescript server emulator for Box Critters, a defunct virtual world.
at main 2.3 kB view raw
1export type CritterId = 2 | "hamster" 3 | "snail" 4 | "lizard" 5 | "beaver" 6 | "raccoon" 7 | "penguin" 8 | "huggable"; 9 10export type Trigger = { 11 hex: string; 12 world?: { joinRoom: string }; 13 room?: { hide: Array<string> }; 14 server?: { 15 grantItem?: string | Array<string>; 16 hasItems?: Array<string>; 17 joinGame?: string; 18 addEgg?: string; 19 }; 20}; 21 22export type Room = { 23 roomId: string; 24 name: string; 25 width: number; 26 height: number; 27 startX: number; 28 startY: number; 29 startR: number; 30 media: { 31 background: string; 32 foreground?: string; 33 treasure?: string; 34 navMesh: string; 35 music?: string; 36 video?: string; 37 }; 38 layout: string; 39 triggers: Array<Trigger>; 40 spriteSheet: string; 41 extra: null; 42 partyExclusive?: Array<string>; 43}; 44 45export type LocalPlayer = { 46 playerId: string; 47 nickname: string; 48 critterId: CritterId; 49 ignore: Array<string>; 50 friends: Array<string>; 51 inventory: Array<string>; 52 gear: Array<string>; 53 /** Eggs is the term used to describe any object used in a scavenger hunt. Any prop name found in that list will be hidden and replaced with it's "_found" suffix prop counterpart */ 54 eggs: Array<string>; 55 coins: number; 56 isMember: boolean | false; 57 isGuest: boolean | false; 58 isTeam: boolean | false; 59 x: number | 440; 60 y: number | 210; 61 rotation: number | 180; 62 mutes: Array<unknown>; 63 64 _partyId: string; 65 _mods: Array<string>; 66 67 // deno-lint-ignore no-explicit-any 68 [key: string]: any; 69}; 70 71export type PlayerCrumb = { 72 /** Player ID */ 73 i: string; 74 /** Player Nickname */ 75 n: string; 76 /** Critter (Hamster, Beaver, Lizard, Snail, etc) */ 77 c: CritterId; 78 x: number; 79 y: number; 80 r: number; 81 /** Gear (equipped items) */ 82 g: Array<string>; 83 84 /** Message */ 85 m: string; 86 /** Emote */ 87 e: string; 88 89 _roomId: string; 90}; 91 92export type ShopData = { 93 lastItem: { itemId: string; cost: number }; 94 freeItem: { itemId: string; cost: number }; 95 nextItem: { itemId: string; cost: number }; 96 collection: Array<{ itemId: string; cost: number }>; 97}; 98 99export type PartySchedule = { 100 [key: string]: { 101 start: string | null; 102 end: string | null; 103 }; 104}; 105 106export type SocketHandlerContext = { 107 localPlayer: null | LocalPlayer; 108 localCrumb: null | PlayerCrumb; 109};