yolkbot 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/browser/build/global.js +2 -2
  2. package/browser/build/module.js +2 -2
  3. package/dist/api.js +1 -1
  4. package/dist/bot/GamePlayer.js +1 -1
  5. package/dist/bot.js +1 -1
  6. package/dist/comm/CommIn.js +1 -1
  7. package/dist/comm/CommOut.js +1 -1
  8. package/dist/constants/CommCode.js +1 -1
  9. package/dist/constants/guns.js +1 -1
  10. package/dist/dispatches/BanPlayerDispatch.js +1 -1
  11. package/dist/dispatches/BootPlayerDispatch.js +1 -1
  12. package/dist/dispatches/ChatDispatch.js +1 -1
  13. package/dist/dispatches/FireDispatch.js +1 -1
  14. package/dist/dispatches/GameOptionsDispatch.js +1 -1
  15. package/dist/dispatches/GoToAmmoDispatch.js +1 -1
  16. package/dist/dispatches/GoToCoopDispatch.js +1 -1
  17. package/dist/dispatches/GoToGrenadeDispatch.js +1 -1
  18. package/dist/dispatches/GoToPlayerDispatch.js +1 -1
  19. package/dist/dispatches/GoToSpatulaDispatch.js +1 -1
  20. package/dist/dispatches/LookAtDispatch.js +1 -1
  21. package/dist/dispatches/LookAtPosDispatch.js +1 -1
  22. package/dist/dispatches/MeleeDispatch.js +1 -1
  23. package/dist/dispatches/MovementDispatch.js +1 -1
  24. package/dist/dispatches/PauseDispatch.js +1 -1
  25. package/dist/dispatches/ReloadDispatch.js +1 -1
  26. package/dist/dispatches/ReportPlayerDispatch.js +1 -1
  27. package/dist/dispatches/SaveLoadoutDispatch.js +1 -1
  28. package/dist/dispatches/SpawnDispatch.js +1 -1
  29. package/dist/dispatches/SwapWeaponDispatch.js +1 -1
  30. package/dist/dispatches/SwitchTeamDispatch.js +1 -1
  31. package/dist/dispatches/ThrowGrenadeDispatch.js +1 -1
  32. package/dist/matchmaker.js +1 -1
  33. package/dist/pathing/astar.js +1 -1
  34. package/dist/pathing/binaryheap.js +1 -1
  35. package/dist/pathing/mapnode.js +1 -1
  36. package/dist/socket.js +1 -1
  37. package/dist/types/api.d.ts +13 -6
  38. package/dist/types/bot.d.ts +36 -28
  39. package/dist/util.js +1 -1
  40. package/dist/wasm/bytes.js +1 -1
  41. package/dist/wasm/imports.js +2 -2
  42. package/dist/wasm/utils.js +1 -1
  43. package/dist/wasm/wrapper.js +1 -1
  44. package/package.json +7 -7
  45. package/dist/constants/changelog.js +0 -3
  46. package/dist/constants/housePromo.js +0 -3
  47. package/dist/constants/language.js +0 -49
  48. package/dist/constants/notices.js +0 -3
  49. package/dist/constants/shellNews.js +0 -3
  50. package/dist/constants/shellYoutube.js +0 -3
  51. package/dist/constants/shopItems.js +0 -3
  52. package/dist/constants/sounds.js +0 -3
@@ -1,3 +1,3 @@
1
1
  /* eslint-disable */
2
2
 
3
- class u{constructor(t,i){this.x=i.x,this.y=i.y,this.z=i.z,this.positionStr=`${this.x},${this.y},${this.z}`,this.position={x:this.x,y:this.y,z:this.z},this.meshType=t.split(".").pop(),this.f=0,this.g=0,this.h=0,this.visited=null,this.parent=null,this.closed=null,this.links=[],this.isStair()&&(i.ry?this.ry=i.ry:this.ry=0)}isFull(){return this.meshType==="full"}canWalkThrough(){return this.meshType==="none"||this.meshType==="ladder"}canWalkOn(){return this.meshType==="full"}isLadder(){return this.meshType==="ladder"}isStair(){return this.meshType==="wedge"}isAir(){return this.meshType==="none"}canLink(t,i){const r=this.x-t.x,s=this.z-t.z,e=this.y-t.y,h=Math.abs(r),n=Math.abs(e),l=Math.abs(s);if(h+n+l===0||h+l>1||this.isFull()||t.isFull())return!1;const o=i.at(this.x,this.y-1,this.z),y=i.at(t.x,t.y-1,t.z);if(!o||!y)return!1;const a={0:{x:0,z:-1},1:{x:-1,z:0},2:{x:0,z:1},3:{x:1,z:0}};switch(this.meshType){case"none":return!!(e===1&&t.canWalkThrough()||(o.canWalkOn()||o.isLadder())&&(t.meshType==="none"||t.meshType==="ladder"&&n===0||t.meshType==="wedge"&&e===0&&r===-a[t.ry].x&&s===-a[t.ry].z));case"ladder":return!!(n===1&&t.canWalkThrough()||n===0&&o.canWalkOn()||t.meshType==="ladder"&&(n===1||o.canWalkOn()&&y.canWalkOn()));case"wedge":return this.x+a[this.ry].x===t.x&&this.z+a[this.ry].z===t.z&&this.y+1===t.y||this.x-a[this.ry].x===t.x&&this.z-a[this.ry].z===t.z&&(this.y===t.y||this.y-1===t.y);default:return!1}}flatCenter(){return{x:this.x+.5,y:this.y+0,z:this.z+.5}}flatRadialDistance(t){const i=this.flatCenter();return Math.hypot(i.x-t.x,i.z-t.z)}}class p{list=[];constructor(t){const i={};for(const s of Object.keys(t.data))for(const e of t.data[s])i[e.x<<16|e.y<<8|e.z]=!0,this.list.push(new u(s,e));for(let s=0;s<t.width;s++)for(let e=0;e<t.height;e++)for(let h=0;h<t.depth;h++)i[s<<16|e<<8|h]||this.list.push(new u("SPECIAL.air.none",{x:s,y:e,z:h}));const r=new Map;for(const s of this.list)r.set(s.positionStr,s);for(const s of this.list){const e=[{x:s.x+1,y:s.y,z:s.z},{x:s.x-1,y:s.y,z:s.z},{x:s.x,y:s.y+1,z:s.z},{x:s.x,y:s.y-1,z:s.z},{x:s.x,y:s.y,z:s.z+1},{x:s.x,y:s.y,z:s.z-1}];for(const h of e){const n=`${h.x},${h.y},${h.z}`,l=r.get(n);l&&s.canLink(l,this)&&s.links.push(l)}}}at(t,i,r){if(!this.nodeMap){this.nodeMap=new Map;for(const e of this.list){const h=`${e.x},${e.y},${e.z}`;this.nodeMap.set(h,e)}}const s=`${t},${i},${r}`;return this.nodeMap.get(s)}clean(){for(const t of this.list)t.f=0,t.g=0,t.h=0,t.visited=null,t.parent=null,t.closed=null}hasLineOfSight(t,i){const r=i.x-t.x,s=i.y-t.y,e=i.z-t.z,h=Math.max(Math.abs(r),Math.abs(s),Math.abs(e)),n=r/h,l=s/h,o=e/h;let y=t.x,a=t.y,c=t.z;for(let f=0;f<=h;f++){const x=this.at(Math.round(y),Math.round(a),Math.round(c));if(x&&x.isFull())return!1;y+=n,a+=l,c+=o}return!0}}var d=u;export{u as MapNode,p as NodeList,d as default};
3
+ var d=Object.defineProperty;var f=(c,t)=>d(c,"name",{value:t,configurable:!0});class u{static{f(this,"MapNode")}constructor(t,i){this.x=i.x,this.y=i.y,this.z=i.z,this.positionStr=`${this.x},${this.y},${this.z}`,this.position={x:this.x,y:this.y,z:this.z},this.meshType=t.split(".").pop(),this.f=0,this.g=0,this.h=0,this.visited=null,this.parent=null,this.closed=null,this.links=[],this.isStair()&&(i.ry?this.ry=i.ry:this.ry=0)}isFull(){return this.meshType==="full"}canWalkThrough(){return this.meshType==="none"||this.meshType==="ladder"}canWalkOn(){return this.meshType==="full"}isLadder(){return this.meshType==="ladder"}isStair(){return this.meshType==="wedge"}isAir(){return this.meshType==="none"}canLink(t,i){const r=this.x-t.x,s=this.z-t.z,e=this.y-t.y,h=Math.abs(r),n=Math.abs(e),l=Math.abs(s);if(h+n+l===0||h+l>1||this.isFull()||t.isFull())return!1;const o=i.at(this.x,this.y-1,this.z),y=i.at(t.x,t.y-1,t.z);if(!o||!y)return!1;const a={0:{x:0,z:-1},1:{x:-1,z:0},2:{x:0,z:1},3:{x:1,z:0}};switch(this.meshType){case"none":return!!(e===1&&t.canWalkThrough()||(o.canWalkOn()||o.isLadder())&&(t.meshType==="none"||t.meshType==="ladder"&&n===0||t.meshType==="wedge"&&e===0&&r===-a[t.ry].x&&s===-a[t.ry].z));case"ladder":return!!(n===1&&t.canWalkThrough()||n===0&&o.canWalkOn()||t.meshType==="ladder"&&(n===1||o.canWalkOn()&&y.canWalkOn()));case"wedge":return this.x+a[this.ry].x===t.x&&this.z+a[this.ry].z===t.z&&this.y+1===t.y||this.x-a[this.ry].x===t.x&&this.z-a[this.ry].z===t.z&&(this.y===t.y||this.y-1===t.y);default:return!1}}flatCenter(){return{x:this.x+.5,y:this.y+0,z:this.z+.5}}flatRadialDistance(t){const i=this.flatCenter();return Math.hypot(i.x-t.x,i.z-t.z)}}class M{static{f(this,"NodeList")}list=[];constructor(t){const i={};for(const s of Object.keys(t.data))for(const e of t.data[s])i[e.x<<16|e.y<<8|e.z]=!0,this.list.push(new u(s,e));for(let s=0;s<t.width;s++)for(let e=0;e<t.height;e++)for(let h=0;h<t.depth;h++)i[s<<16|e<<8|h]||this.list.push(new u("SPECIAL.air.none",{x:s,y:e,z:h}));const r=new Map;for(const s of this.list)r.set(s.positionStr,s);for(const s of this.list){const e=[{x:s.x+1,y:s.y,z:s.z},{x:s.x-1,y:s.y,z:s.z},{x:s.x,y:s.y+1,z:s.z},{x:s.x,y:s.y-1,z:s.z},{x:s.x,y:s.y,z:s.z+1},{x:s.x,y:s.y,z:s.z-1}];for(const h of e){const n=`${h.x},${h.y},${h.z}`,l=r.get(n);l&&s.canLink(l,this)&&s.links.push(l)}}}at(t,i,r){if(!this.nodeMap){this.nodeMap=new Map;for(const e of this.list){const h=`${e.x},${e.y},${e.z}`;this.nodeMap.set(h,e)}}const s=`${t},${i},${r}`;return this.nodeMap.get(s)}clean(){for(const t of this.list)t.f=0,t.g=0,t.h=0,t.visited=null,t.parent=null,t.closed=null}hasLineOfSight(t,i){const r=i.x-t.x,s=i.y-t.y,e=i.z-t.z,h=Math.max(Math.abs(r),Math.abs(s),Math.abs(e)),n=r/h,l=s/h,o=e/h;let y=t.x,a=t.y,x=t.z;for(let z=0;z<=h;z++){const p=this.at(Math.round(y),Math.round(a),Math.round(x));if(p&&p.isFull())return!1;y+=n,a+=l,x+=o}return!0}}var T=u;export{u as MapNode,M as NodeList,T as default};
package/dist/socket.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /* eslint-disable */
2
2
 
3
- import r from"./globals.js";import{IsBrowser as i,ProxiesEnabled as l,UserAgent as h}from"./constants/index.js";class k{url="";proxy="";binaryType="";maxRetries=5;constructor(e,t){this.url=e,!l&&t&&(console.error("You cannot pass a proxy to a yolkws in this environment."),process.exit(1)),this.proxy=t}async tryConnect(e=1){const t=new URL(this.url),o=async()=>e===5?!1:await this.tryConnect(e+1);try{this.socket=i?new r.WebSocket(this.url):new r.WebSocket(this.url,{agent:this.proxy?new r.SocksProxyAgent(this.proxy):void 0,headers:{"accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","cache-control":"no-cache",connection:"Upgrade",host:t.host,origin:t.origin.replace("ws","http"),pragma:"no-cache","sec-websocket-extensions":"permessage-deflate; client_max_window_bits","user-agent":h}}),this.binaryType&&(this.socket.binaryType=this.binaryType)}catch(s){return console.error(`Failed to connect on try ${e}, trying again...`,s),await o()}return new Promise(s=>{const n=setTimeout(async()=>{i?this.socket.close():this.socket.terminate(),s(await o())},5e3),c=async a=>{clearTimeout(n),console.error("WebSocket error",a),s(await o())};this.socket.addEventListener("open",async()=>{clearTimeout(n),this.socket.removeEventListener("error",c),s(!0)}),this.socket.addEventListener("error",c)})}get onmessage(){return this.socket?.onmessage}set onmessage(e){this.socket?this.socket.onmessage=e:console.error("set onmessage before socket existed")}get onclose(){return this.socket?.onclose}set onclose(e){this.socket?this.socket.onclose=e:console.error("set onclose before socket existed")}get onerror(){return this.socket?.onerror}set onerror(e){this.socket?this.socket.onerror=e:console.error("set onclose before socket existed")}send(e){return this.socket?.send(e)}close(e){return this.socket?.close(e)}}var p=k;export{p as default};
3
+ var k=Object.defineProperty;var o=(c,e)=>k(c,"name",{value:e,configurable:!0});import n from"./globals.js";import{IsBrowser as l,ProxiesEnabled as u,UserAgent as y}from"./constants/index.js";class g{static{o(this,"yolkws")}url="";proxy="";binaryType="";maxRetries=5;constructor(e,t){this.url=e,!u&&t&&(console.error("You cannot pass a proxy to a yolkws in this environment."),process.exit(1)),this.proxy=t}async tryConnect(e=1){const t=new URL(this.url),r=o(async()=>e===5?!1:await this.tryConnect(e+1),"retryOrQuit");try{this.socket=l?new n.WebSocket(this.url):new n.WebSocket(this.url,{agent:this.proxy?new n.SocksProxyAgent(this.proxy):void 0,headers:{"accept-encoding":"gzip, deflate, br, zstd","accept-language":"en-US,en;q=0.9","cache-control":"no-cache",connection:"Upgrade",host:t.host,origin:t.origin.replace("ws","http"),pragma:"no-cache","sec-websocket-extensions":"permessage-deflate; client_max_window_bits","user-agent":y}}),this.binaryType&&(this.socket.binaryType=this.binaryType)}catch(s){return console.error(`Failed to connect on try ${e}, trying again...`,s),await r()}return new Promise(s=>{const i=setTimeout(async()=>{l?this.socket.close():this.socket.terminate(),s(await r())},5e3),a=o(async h=>{clearTimeout(i),console.error("WebSocket error",h),s(await r())},"errorListener");this.socket.addEventListener("open",async()=>{clearTimeout(i),this.socket.removeEventListener("error",a),s(!0)}),this.socket.addEventListener("error",a)})}get onmessage(){return this.socket?.onmessage}set onmessage(e){this.socket?this.socket.onmessage=e:console.error("set onmessage before socket existed")}get onclose(){return this.socket?.onclose}set onclose(e){this.socket?this.socket.onclose=e:console.error("set onclose before socket existed")}get onerror(){return this.socket?.onerror}set onerror(e){this.socket?this.socket.onerror=e:console.error("set onclose before socket existed")}send(e){return this.socket?.send(e)}close(e){return this.socket?.close(e)}}var f=g;export{f as default};
@@ -16,6 +16,12 @@ interface APIParams {
16
16
  suppressErrors?: boolean;
17
17
  }
18
18
 
19
+ export type QueryServicesError = 'websocket_connect_fail' | 'bad_json' | 'unknown_socket_error' | 'services_closed_early';
20
+ export type AnonError = 'firebase_network_failed' | 'firebase_no_token';
21
+ export type LoginError = AnonLogin | 'firebase_no_credentials' | 'firebase_bad_request' | 'firebase_unknown_error';
22
+ export type EmailVerifyError = 'no_idtoken_passed' | 'firebase_invalid_response';
23
+ export type OobCodeError = 'no_oob_code_passed' | 'firebase_unknown_error';
24
+
19
25
  export class API {
20
26
  instance: string;
21
27
  protocol: string;
@@ -28,11 +34,12 @@ export class API {
28
34
 
29
35
  constructor(params?: APIParams);
30
36
 
31
- queryServices(request: QueryRequest): Promise<QueryResponse | string>;
37
+ queryServices(request: QueryRequest): Promise<QueryResponse | QueryServicesError>;
32
38
 
33
- loginWithCredentials(email: string, password: string): Promise<QueryResponse | string>;
34
- loginWithRefreshToken(refreshToken: string): Promise<QueryResponse | string>;
35
- loginAnonymously(): Promise<QueryResponse | string>;
36
- createAccount(email: string, password: string): Promise<QueryResponse | string>;
37
- sendEmailVerification(idToken?: string): Promise<string>;
39
+ loginWithCredentials(email: string, password: string): Promise<QueryResponse | LoginError>;
40
+ loginWithRefreshToken(refreshToken: string): Promise<QueryResponse | LoginError>;
41
+ loginAnonymously(): Promise<QueryResponse | AnonError>;
42
+ createAccount(email: string, password: string): Promise<QueryResponse | LoginError>;
43
+ sendEmailVerification(idToken?: string): Promise<{ email: string } | EmailVerifyError>;
44
+ verifyOobCode(oobCode: string): Promise<QueryResponse | OobCodeError>;
38
45
  }
@@ -9,13 +9,13 @@ type intents = {
9
9
  LOG_PACKETS: 10,
10
10
  NO_LOGIN: 11,
11
11
  DEBUG_BUFFER: 12,
12
- DEBUG_BEST_TARGET: 14,
13
12
  NO_AFK_KICK: 16,
14
13
  LOAD_MAP: 17,
15
14
  OBSERVE_GAME: 18,
16
15
  NO_REGION_CHECK: 19,
17
16
  NO_EXIT_ON_ERROR: 20,
18
- RENEW_SESSION: 21
17
+ RENEW_SESSION: 21,
18
+ VIP_HIDE_BADGE: 22
19
19
  }
20
20
 
21
21
  import { Character, GamePlayer, Position, View } from './bot/GamePlayer';
@@ -25,7 +25,7 @@ import { MapJSON } from './constants/maps';
25
25
  import { Item } from './constants/items';
26
26
  import { ADispatch } from './dispatches/index';
27
27
  import { NodeList } from './pathing/mapnode';
28
- import { API } from './api';
28
+ import { AnonError, API, LoginError, QueryServicesError } from './api';
29
29
  import { Matchmaker } from './matchmaker';
30
30
  import yolkws from './socket';
31
31
 
@@ -161,10 +161,14 @@ export interface RawLoginData {
161
161
  notification: {
162
162
  id: number;
163
163
  type: {
164
- [key: 'vip' | 'purchases']: {
164
+ vip: {
165
165
  ids: number[];
166
166
  eggs: number;
167
- }
167
+ };
168
+ purchases: {
169
+ ids: number[];
170
+ eggs: number;
171
+ };
168
172
  };
169
173
  read: 0 | 1;
170
174
  }
@@ -339,6 +343,10 @@ export interface FireBullet {
339
343
  dirZ: number;
340
344
  }
341
345
 
346
+ type FindPublicErrors = 'no_region_passed' | 'invalid_region_passed' | 'no_mode_passed' | 'invalid_mode_passed' | 'matchmaker_init_fail' | 'internal_session_error';
347
+ type CreatePrivateErrors = FindPublicErrors | 'invalid_map_passed';
348
+ type BotLoginError = 'account_banned';
349
+
342
350
  export class Bot {
343
351
  static Intents: intents;
344
352
  Intents: intents;
@@ -368,24 +376,23 @@ export class Bot {
368
376
 
369
377
  constructor(params?: BotParams);
370
378
 
371
- loginAnonymously(): Promise<Account | false>;
372
- loginWithRefreshToken(refreshToken: string): Promise<Account | false>;
373
- login(email: string, pass: string): Promise<Account | false>;
374
- createAccount(email: string, pass: string): Promise<Account | false>;
379
+ loginAnonymously(): Promise<Account | BotLoginError | AnonError>;
380
+ loginWithRefreshToken(refreshToken: string): Promise<Account | BotLoginError | LoginError>;
381
+ login(email: string, pass: string): Promise<Account | BotLoginError | LoginError>;
382
+ createAccount(email: string, pass: string): Promise<Account | BotLoginError | LoginError>;
375
383
 
376
- initMatchmaker(): Promise<boolean>;
384
+ initMatchmaker(): Promise<true | BotLoginError | AnonError | 'matchmaker_tryconnect_failed'>;
377
385
 
378
- createPrivateGame(region: string, mode: number, map: string): Promise<RawGameData | string>;
379
- findPublicGame(region: string, mode: number): Promise<RawGameData | string>;
386
+ createPrivateGame(region: string, mode: number, map: string): Promise<RawGameData | FindPublicErrors>;
387
+ findPublicGame(region: string, mode: number): Promise<RawGameData | CreatePrivateErrors>;
380
388
 
381
- join(botName: string, data: string | RawGameData): Promise<void>;
389
+ join(botName: string, data: string | RawGameData): Promise<true | 'matchmaker_init_fail' | 'game_not_found' | 'websocket_tryconnect_fail' | 'invalid_game_object'>;
382
390
 
383
391
  processPacket(data: number[]): void;
384
392
  dispatch(disp: ADispatch): boolean;
385
393
  update(): void;
386
394
 
387
395
  canSee(player: GamePlayer): boolean;
388
- getBestTarget(customFilter?: (player: GamePlayer) => boolean): { player: GamePlayer, inLoS: boolean } | undefined;
389
396
 
390
397
  onAny(cb: Function): void;
391
398
  off(event: string, cb: Function): void;
@@ -398,8 +405,6 @@ export class Bot {
398
405
  on(event: 'challengeComplete', cb: (player: GamePlayer, challengeId: number) => void): void;
399
406
  on(event: 'chat', cb: (player: GamePlayer | undefined, message: string, flags: number) => void): void;
400
407
  on(event: 'close', cb: (code: number) => void): void;
401
- on(event: 'collectAmmo', cb: (player: GamePlayer, weapon: AnyGun) => void): void;
402
- on(event: 'collectGrenade', cb: (player: GamePlayer) => void): void;
403
408
  on(event: 'error', cb: (error: string) => void): void;
404
409
  on(event: 'gameForcePause', cb: () => void): void;
405
410
  on(event: 'gameOptionsChange', cb: (oldOptions: GameOptions, newOptions: GameOptions) => void): void;
@@ -414,6 +419,8 @@ export class Bot {
414
419
  on(event: 'playerBeginStreak', cb: (player: GamePlayer, streakType: number) => void): void;
415
420
  on(event: 'playerChangeCharacter', cb: (player: GamePlayer, oldCharacter: Character, newCharacter: Character) => void): void;
416
421
  on(event: 'playerChangeGun', cb: (player: GamePlayer, oldGunId: number, newGunId: number) => void): void;
422
+ on(event: 'playerCollectAmmo', cb: (player: GamePlayer, weapon: AnyGun, itemId: number) => void): void;
423
+ on(event: 'playerCollectGrenade', cb: (player: GamePlayer, itemId: number) => void): void;
417
424
  on(event: 'playerDamage', cb: (player: GamePlayer, oldHp: number, newHp: number) => void): void;
418
425
  on(event: 'playerDeath', cb: (killed: GamePlayer, killer: GamePlayer) => void): void;
419
426
  on(event: 'playerEndStreak', cb: (player: GamePlayer, streakType: number) => void): void;
@@ -431,27 +438,28 @@ export class Bot {
431
438
  on(event: 'playerRotate', cb: (player: GamePlayer, oldView: View, newView: View) => void): void;
432
439
  on(event: 'playerSwapWeapon', cb: (player: GamePlayer, nowActive: number) => void): void;
433
440
  on(event: 'playerSwitchTeam', cb: (player: GamePlayer, oldTeam: number, newTeam: number) => void): void;
441
+ on(event: 'playerThrowGrenade', cb: (player: GamePlayer, position: Position, dPosition: Position) => void): void;
434
442
  on(event: 'respawnDenied', cb: () => void): void;
435
443
  on(event: 'rocketHit', cb: (pos: Position, damage: number, blastRadius: number) => void): void;
436
444
  on(event: 'selfShieldHit', cb: (newShieldHealth: number, newPlayerHealth: number, dir: { dx: number, dz: number }) => void): void;
437
445
  on(event: 'selfShieldLost', cb: (newPlayerHealth: number, dir: { dx: number, dz: number }) => void): void;
438
446
  on(event: 'sessionExpired', cb: () => void): void;
439
- on(event: 'spawnItem', cb: (itemType: number, itemPosition: Position) => void): void;
447
+ on(event: 'spawnItem', cb: (itemType: number, itemPosition: Position, itemId: number) => void): void;
440
448
  on(event: 'tick', cb: () => void): void;
441
449
 
442
- checkChiknWinner(): Promise<ChiknWinnerStatus>;
443
- playChiknWinner(doPrematureCooldownCheck: boolean): Promise<ChiknWinnerResponse | string>;
444
- resetChiknWinner(): Promise<ChiknWinnerStatus>;
450
+ checkChiknWinner(): Promise<ChiknWinnerStatus | QueryServicesError>;
451
+ playChiknWinner(doPrematureCooldownCheck: boolean): Promise<ChiknWinnerResponse | QueryServicesError | 'hit_daily_limit' | 'on_cooldown' | 'session_expired' | 'unknown_error'>;
452
+ resetChiknWinner(): Promise<ChiknWinnerStatus | QueryServicesError | 'not_enough_eggs' | 'not_at_limit' | 'unknown_error'>;
445
453
 
446
- refreshChallenges(): Promise<Challenges[]>;
447
- claimChallenge(challengeId: number): Promise<{ eggReward: number, updatedChallenges: Challenges[] }>;
448
- rerollChallenge(challengeId: number): Promise<Challenges[]>;
454
+ refreshChallenges(): Promise<Challenges[] | QueryServicesError>;
455
+ claimChallenge(challengeId: number): Promise<{ eggReward: number, updatedChallenges: Challenges[] } | QueryServicesError>;
456
+ rerollChallenge(challengeId: number): Promise<Challenges[] | QueryServicesError>;
449
457
 
450
- refreshBalance(): Promise<number>;
451
- redeemCode(code: string): Promise<{ result: string; eggsGiven: number; itemIds: number[]; }>;
452
- claimURLReward(reward: string): Promise<{ result: string; eggsGiven: number; itemIds: number[]; }>;
453
- claimSocialReward(rewardTag: string): Promise<{ result: string; eggsGiven: number; itemIds: number[]; }>;
454
- buyItem(itemId: number): Promise<{ result: string; currentBalance: number; itemId: number; }>;
458
+ refreshBalance(): Promise<number | QueryServicesError>;
459
+ redeemCode(code: string): Promise<{ result: string; eggsGiven: number; itemIds: number[]; } | QueryServicesError>;
460
+ claimURLReward(reward: string): Promise<{ result: string; eggsGiven: number; itemIds: number[]; } | QueryServicesError>;
461
+ claimSocialReward(rewardTag: string): Promise<{ result: string; eggsGiven: number; itemIds: number[]; } | QueryServicesError>;
462
+ buyItem(itemId: number): Promise<{ result: string; currentBalance: number; itemId: number; } | QueryServicesError>;
455
463
 
456
464
  leave(code?: number): void;
457
465
  logout(): void;
package/dist/util.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /* eslint-disable */
2
2
 
3
- import{IsBrowser as p}from"./constants/index.js";const x=async(c,r)=>{if(p)return await(await fetch(`https://esm.sh/gh/yolkorg/maps/maps/${c}.json?${r}`)).json();{const{existsSync:t,mkdirSync:a,readFileSync:f,writeFileSync:z}=await import("node:fs"),{join:o}=await import("node:path"),{homedir:s}=await import("node:os"),e=o(s(),".yolkbot"),n=o(e,"maps");t(e)||a(e),t(n)||a(n);const i=o(n,`${c}-${r}.json`);if(t(i))return JSON.parse(f(i,"utf-8"));const l=await(await fetch(`https://esm.sh/gh/yolkorg/maps/maps/${c}.json?${r}`)).json();return z(i,JSON.stringify(l,null,4),{flag:"w+"}),l}},m=c=>{let r=0;const t={},a=[];for(const o of c)t[o.x]||(t[o.x]={}),t[o.x][o.y]||(t[o.x][o.y]={}),t[o.x][o.y][o.z]={zone:null};const f=[{x:-1,z:0},{x:1,z:0},{x:0,z:-1},{x:0,z:1}],z=(o,s,e)=>t[o]&&t[o][s]&&t[o][s][e]?t[o][s][e]:null;for(const o of c)if(!t[o.x][o.y][o.z].zone){o.zone=++r,t[o.x][o.y][o.z].zone=o.zone;const s=[o];let e;do{e=0;for(const n of c)if(!t[n.x][n.y][n.z].zone)for(const i of f){const l=z(n.x+i.x,n.y,n.z+i.z);if(l&&l.zone===o.zone){e++,n.zone=o.zone,t[n.x][n.y][n.z].zone=o.zone,s.push(n);break}}}while(e>0);a.push(s)}return a};export{x as fetchMap,m as initKotcZones};
3
+ var y=Object.defineProperty;var f=(s,i)=>y(s,"name",{value:i,configurable:!0});import{IsBrowser as x}from"./constants/index.js";const w=f(async(s,i)=>{if(x)return await(await fetch(`https://esm.sh/gh/yolkorg/maps/maps/${s}.json?${i}`)).json();{const{existsSync:t,mkdirSync:a,readFileSync:z,writeFileSync:p}=await import("node:fs"),{join:o}=await import("node:path"),{homedir:c}=await import("node:os"),e=o(c(),".yolkbot"),n=o(e,"maps");t(e)||a(e),t(n)||a(n);const r=o(n,`${s}-${i}.json`);if(t(r))return JSON.parse(z(r,"utf-8"));const l=await(await fetch(`https://esm.sh/gh/yolkorg/maps/maps/${s}.json?${i}`)).json();return p(r,JSON.stringify(l,null,4),{flag:"w+"}),l}},"fetchMap"),h=f(s=>{let i=0;const t={},a=[];for(const o of s)t[o.x]||(t[o.x]={}),t[o.x][o.y]||(t[o.x][o.y]={}),t[o.x][o.y][o.z]={zone:null};const z=[{x:-1,z:0},{x:1,z:0},{x:0,z:-1},{x:0,z:1}],p=f((o,c,e)=>t[o]&&t[o][c]&&t[o][c][e]?t[o][c][e]:null,"getMapCellAt");for(const o of s)if(!t[o.x][o.y][o.z].zone){o.zone=++i,t[o.x][o.y][o.z].zone=o.zone;const c=[o];let e;do{e=0;for(const n of s)if(!t[n.x][n.y][n.z].zone)for(const r of z){const l=p(n.x+r.x,n.y,n.z+r.z);if(l&&l.zone===o.zone){e++,n.zone=o.zone,t[n.x][n.y][n.z].zone=o.zone,c.push(n);break}}}while(e>0);a.push(c)}return a},"initKotcZones");export{w as fetchMap,h as initKotcZones};