@ianlucas/cs2-lib 9.0.0-rc.3 → 9.0.0-rc.4

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.
@@ -45,6 +45,7 @@ declare const CS2_CHARM_DETACHMENT_TOOL_DEFINITION_INDEX = 65;
45
45
  declare const CS2_CONTRACT_TOOL_DEFINITION_INDEX = 62;
46
46
  declare const CS2_NAMETAG_TOOL_DEFINITION_INDEX = 1200;
47
47
  declare const CS2_STATTRAK_SWAP_TOOL_DEFINITION_INDEX = 1324;
48
+ declare const CS2_STICKER_SLAB_TOOL_DEFINITION_INDEX = 1355;
48
49
  declare const CS2_STORAGE_UNIT_TOOL_DEFINITION_INDEX = 1201;
49
50
  declare const CS2_CONTAINER_ITEMS: CS2ItemType[];
50
51
  declare const CS2_DISPLAY_ITEMS: CS2ItemType[];
@@ -66,4 +67,4 @@ declare const CS2_TEAMS_BOTH: CS2Team[];
66
67
  declare const CS2_TEAMS_CT: CS2Team[];
67
68
  declare const CS2_TEAMS_T: CS2Team[];
68
69
  //#endregion
69
- export { CS2_CHARM_DETACHMENT_PACK_CHARGES, CS2_CHARM_DETACHMENT_PACK_TOOL_DEFINITION_INDEX, CS2_CHARM_DETACHMENT_TOOL_DEFINITION_INDEX, CS2_CONTAINER_ITEMS, CS2_CONTRACT_TOOL_DEFINITION_INDEX, CS2_DEFAULT_MAX_WEAR, CS2_DEFAULT_MIN_WEAR, CS2_DISPLAY_ITEMS, CS2_EQUIPMENT_ITEMS, CS2_FALLBACK_PREVIEW_SEED, CS2_GRAPHIC_ART_ITEMS, CS2_KEYCHAINABLE_ITEMS, CS2_KEYCHAIN_POSITION_FACTOR, CS2_MACHINEGUN_MODEL_KEYS, CS2_MAX_BATTLE_SCARRED_WEAR, CS2_MAX_CHARM_DETACHMENT_CHARGES, CS2_MAX_FACTORY_NEW_WEAR, CS2_MAX_FIELD_TESTED_WEAR, CS2_MAX_GRAFFITI_CHARGES, CS2_MAX_KEYCHAINS, CS2_MAX_KEYCHAIN_SEED, CS2_MAX_MINIMAL_WEAR_WEAR, CS2_MAX_PATCHES, CS2_MAX_SEED, CS2_MAX_STATTRAK, CS2_MAX_STICKERS, CS2_MAX_STICKER_ROTATION, CS2_MAX_STICKER_WEAR, CS2_MAX_WEAR, CS2_MAX_WELL_WORN_WEAR, CS2_MIDTIER_LOADOUT_CATEGORIES, CS2_MIN_BATTLE_SCARRED_WEAR, CS2_MIN_CHARGES, CS2_MIN_FACTORY_NEW_WEAR, CS2_MIN_FIELD_TESTED_WEAR, CS2_MIN_KEYCHAIN_SEED, CS2_MIN_MINIMAL_WEAR_WEAR, CS2_MIN_SEED, CS2_MIN_STATTRAK, CS2_MIN_STICKER_ROTATION, CS2_MIN_STICKER_WEAR, CS2_MIN_WEAR, CS2_MIN_WELL_WORN_WEAR, CS2_MISC_LOADOUT_CATEGORIES, CS2_NAMETAGGABLE_ITEMS, CS2_NAMETAG_RE, CS2_NAMETAG_TOOL_DEFINITION_INDEX, CS2_PAINTABLE_ITEMS, CS2_PATCHABLE_ITEMS, CS2_RIFLE_LOADOUT_CATEGORIES, CS2_SEEDABLE_ITEMS, CS2_SNIPER_RIFLE_MODEL_KEYS, CS2_STATTRAKABLE_ITEMS, CS2_STATTRAK_SWAP_TOOL_DEFINITION_INDEX, CS2_STICKERABLE_ITEMS, CS2_STICKER_OFFSET_FACTOR, CS2_STICKER_ROTATION_STEP, CS2_STICKER_SCRAPE_FACTOR, CS2_STICKER_WEAR_FACTOR, CS2_STORAGE_UNIT_TOOL_DEFINITION_INDEX, CS2_TEAMS_BOTH, CS2_TEAMS_CT, CS2_TEAMS_T, CS2_WEAR_FACTOR };
70
+ export { CS2_CHARM_DETACHMENT_PACK_CHARGES, CS2_CHARM_DETACHMENT_PACK_TOOL_DEFINITION_INDEX, CS2_CHARM_DETACHMENT_TOOL_DEFINITION_INDEX, CS2_CONTAINER_ITEMS, CS2_CONTRACT_TOOL_DEFINITION_INDEX, CS2_DEFAULT_MAX_WEAR, CS2_DEFAULT_MIN_WEAR, CS2_DISPLAY_ITEMS, CS2_EQUIPMENT_ITEMS, CS2_FALLBACK_PREVIEW_SEED, CS2_GRAPHIC_ART_ITEMS, CS2_KEYCHAINABLE_ITEMS, CS2_KEYCHAIN_POSITION_FACTOR, CS2_MACHINEGUN_MODEL_KEYS, CS2_MAX_BATTLE_SCARRED_WEAR, CS2_MAX_CHARM_DETACHMENT_CHARGES, CS2_MAX_FACTORY_NEW_WEAR, CS2_MAX_FIELD_TESTED_WEAR, CS2_MAX_GRAFFITI_CHARGES, CS2_MAX_KEYCHAINS, CS2_MAX_KEYCHAIN_SEED, CS2_MAX_MINIMAL_WEAR_WEAR, CS2_MAX_PATCHES, CS2_MAX_SEED, CS2_MAX_STATTRAK, CS2_MAX_STICKERS, CS2_MAX_STICKER_ROTATION, CS2_MAX_STICKER_WEAR, CS2_MAX_WEAR, CS2_MAX_WELL_WORN_WEAR, CS2_MIDTIER_LOADOUT_CATEGORIES, CS2_MIN_BATTLE_SCARRED_WEAR, CS2_MIN_CHARGES, CS2_MIN_FACTORY_NEW_WEAR, CS2_MIN_FIELD_TESTED_WEAR, CS2_MIN_KEYCHAIN_SEED, CS2_MIN_MINIMAL_WEAR_WEAR, CS2_MIN_SEED, CS2_MIN_STATTRAK, CS2_MIN_STICKER_ROTATION, CS2_MIN_STICKER_WEAR, CS2_MIN_WEAR, CS2_MIN_WELL_WORN_WEAR, CS2_MISC_LOADOUT_CATEGORIES, CS2_NAMETAGGABLE_ITEMS, CS2_NAMETAG_RE, CS2_NAMETAG_TOOL_DEFINITION_INDEX, CS2_PAINTABLE_ITEMS, CS2_PATCHABLE_ITEMS, CS2_RIFLE_LOADOUT_CATEGORIES, CS2_SEEDABLE_ITEMS, CS2_SNIPER_RIFLE_MODEL_KEYS, CS2_STATTRAKABLE_ITEMS, CS2_STATTRAK_SWAP_TOOL_DEFINITION_INDEX, CS2_STICKERABLE_ITEMS, CS2_STICKER_OFFSET_FACTOR, CS2_STICKER_ROTATION_STEP, CS2_STICKER_SCRAPE_FACTOR, CS2_STICKER_SLAB_TOOL_DEFINITION_INDEX, CS2_STICKER_WEAR_FACTOR, CS2_STORAGE_UNIT_TOOL_DEFINITION_INDEX, CS2_TEAMS_BOTH, CS2_TEAMS_CT, CS2_TEAMS_T, CS2_WEAR_FACTOR };
@@ -1 +1 @@
1
- import{CS2ItemType as e}from"./economy-types.mjs";import{CS2Team as t}from"./teams.mjs";const n=0,r=999999,i=0,a=1,o=.06,s=.8,c=0,l=.07,u=.070001,d=.15,f=.150001,p=.37,m=.370001,h=.44,g=.440001,_=1,v=1,y=1e3,b=0,x=1,S=-180,C=180,w=1,T=1e5,E=5e4,D=5,O=5,k=1,A=1,j=50,M=2**53-1,N=3,P=.01,F=.1,I=1e-4,L=.5,R=1e-4,z=1e-6,B=/^[A-Za-z0-9`!@#$%^&*-+=(){}\[\]\/\|\\,.?:;'_,。;!\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\s]{0,20}$/u,V=4950,H=65,U=62,W=1200,G=1324,K=1201,q=[e.Container,e.Tool],J=[e.Collectible,e.MusicKit],Y=[e.Weapon,e.Agent,e.Gloves,e.Melee,e.MusicKit],X=[e.Patch,e.Sticker,e.Graffiti,e.Keychain],Z=[e.Melee,e.Weapon],Q=[e.Gloves,e.Melee,e.Weapon],$=[e.Agent],ee=[e.Weapon,e.Melee,e.Gloves,e.Keychain],te=[e.Melee,e.Weapon,e.MusicKit],ne=[e.Weapon],re=[e.Weapon],ie=[`heavy`,`smg`],ae=[`rifle`],oe=[`c4`,`equipment`],se=[`awp`,`g3sg1`,`scar20`,`ssg08`],ce=[`m249`,`negev`],le=[t.T,t.CT],ue=[t.CT],de=[t.T];export{N as CS2_CHARM_DETACHMENT_PACK_CHARGES,V as CS2_CHARM_DETACHMENT_PACK_TOOL_DEFINITION_INDEX,H as CS2_CHARM_DETACHMENT_TOOL_DEFINITION_INDEX,q as CS2_CONTAINER_ITEMS,U as CS2_CONTRACT_TOOL_DEFINITION_INDEX,s as CS2_DEFAULT_MAX_WEAR,o as CS2_DEFAULT_MIN_WEAR,J as CS2_DISPLAY_ITEMS,Y as CS2_EQUIPMENT_ITEMS,E as CS2_FALLBACK_PREVIEW_SEED,X as CS2_GRAPHIC_ART_ITEMS,re as CS2_KEYCHAINABLE_ITEMS,R as CS2_KEYCHAIN_POSITION_FACTOR,ce as CS2_MACHINEGUN_MODEL_KEYS,_ as CS2_MAX_BATTLE_SCARRED_WEAR,M as CS2_MAX_CHARM_DETACHMENT_CHARGES,l as CS2_MAX_FACTORY_NEW_WEAR,p as CS2_MAX_FIELD_TESTED_WEAR,j as CS2_MAX_GRAFFITI_CHARGES,k as CS2_MAX_KEYCHAINS,T as CS2_MAX_KEYCHAIN_SEED,d as CS2_MAX_MINIMAL_WEAR_WEAR,O as CS2_MAX_PATCHES,y as CS2_MAX_SEED,r as CS2_MAX_STATTRAK,D as CS2_MAX_STICKERS,C as CS2_MAX_STICKER_ROTATION,x as CS2_MAX_STICKER_WEAR,a as CS2_MAX_WEAR,h as CS2_MAX_WELL_WORN_WEAR,ie as CS2_MIDTIER_LOADOUT_CATEGORIES,g as CS2_MIN_BATTLE_SCARRED_WEAR,A as CS2_MIN_CHARGES,c as CS2_MIN_FACTORY_NEW_WEAR,f as CS2_MIN_FIELD_TESTED_WEAR,w as CS2_MIN_KEYCHAIN_SEED,u as CS2_MIN_MINIMAL_WEAR_WEAR,v as CS2_MIN_SEED,n as CS2_MIN_STATTRAK,S as CS2_MIN_STICKER_ROTATION,b as CS2_MIN_STICKER_WEAR,i as CS2_MIN_WEAR,m as CS2_MIN_WELL_WORN_WEAR,oe as CS2_MISC_LOADOUT_CATEGORIES,Z as CS2_NAMETAGGABLE_ITEMS,B as CS2_NAMETAG_RE,W as CS2_NAMETAG_TOOL_DEFINITION_INDEX,Q as CS2_PAINTABLE_ITEMS,$ as CS2_PATCHABLE_ITEMS,ae as CS2_RIFLE_LOADOUT_CATEGORIES,ee as CS2_SEEDABLE_ITEMS,se as CS2_SNIPER_RIFLE_MODEL_KEYS,te as CS2_STATTRAKABLE_ITEMS,G as CS2_STATTRAK_SWAP_TOOL_DEFINITION_INDEX,ne as CS2_STICKERABLE_ITEMS,I as CS2_STICKER_OFFSET_FACTOR,L as CS2_STICKER_ROTATION_STEP,F as CS2_STICKER_SCRAPE_FACTOR,P as CS2_STICKER_WEAR_FACTOR,K as CS2_STORAGE_UNIT_TOOL_DEFINITION_INDEX,le as CS2_TEAMS_BOTH,ue as CS2_TEAMS_CT,de as CS2_TEAMS_T,z as CS2_WEAR_FACTOR};
1
+ import{CS2ItemType as e}from"./economy-types.mjs";import{CS2Team as t}from"./teams.mjs";const n=0,r=999999,i=0,a=1,o=.06,s=.8,c=0,l=.07,u=.070001,d=.15,f=.150001,p=.37,m=.370001,h=.44,g=.440001,_=1,v=1,y=1e3,b=0,x=1,S=-180,C=180,w=1,T=1e5,E=5e4,D=5,O=5,k=1,A=1,j=50,M=2**53-1,N=3,P=.01,F=.1,I=1e-4,L=.5,R=1e-4,z=1e-6,B=/^[A-Za-z0-9`!@#$%^&*-+=(){}\[\]\/\|\\,.?:;'_,。;!\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\s]{0,20}$/u,V=4950,H=65,U=62,W=1200,G=1324,K=1355,q=1201,J=[e.Container,e.Tool],Y=[e.Collectible,e.MusicKit],X=[e.Weapon,e.Agent,e.Gloves,e.Melee,e.MusicKit],Z=[e.Patch,e.Sticker,e.Graffiti,e.Keychain],Q=[e.Melee,e.Weapon],$=[e.Gloves,e.Melee,e.Weapon],ee=[e.Agent],te=[e.Weapon,e.Melee,e.Gloves,e.Keychain],ne=[e.Melee,e.Weapon,e.MusicKit],re=[e.Weapon],ie=[e.Weapon],ae=[`heavy`,`smg`],oe=[`rifle`],se=[`c4`,`equipment`],ce=[`awp`,`g3sg1`,`scar20`,`ssg08`],le=[`m249`,`negev`],ue=[t.T,t.CT],de=[t.CT],fe=[t.T];export{N as CS2_CHARM_DETACHMENT_PACK_CHARGES,V as CS2_CHARM_DETACHMENT_PACK_TOOL_DEFINITION_INDEX,H as CS2_CHARM_DETACHMENT_TOOL_DEFINITION_INDEX,J as CS2_CONTAINER_ITEMS,U as CS2_CONTRACT_TOOL_DEFINITION_INDEX,s as CS2_DEFAULT_MAX_WEAR,o as CS2_DEFAULT_MIN_WEAR,Y as CS2_DISPLAY_ITEMS,X as CS2_EQUIPMENT_ITEMS,E as CS2_FALLBACK_PREVIEW_SEED,Z as CS2_GRAPHIC_ART_ITEMS,ie as CS2_KEYCHAINABLE_ITEMS,R as CS2_KEYCHAIN_POSITION_FACTOR,le as CS2_MACHINEGUN_MODEL_KEYS,_ as CS2_MAX_BATTLE_SCARRED_WEAR,M as CS2_MAX_CHARM_DETACHMENT_CHARGES,l as CS2_MAX_FACTORY_NEW_WEAR,p as CS2_MAX_FIELD_TESTED_WEAR,j as CS2_MAX_GRAFFITI_CHARGES,k as CS2_MAX_KEYCHAINS,T as CS2_MAX_KEYCHAIN_SEED,d as CS2_MAX_MINIMAL_WEAR_WEAR,O as CS2_MAX_PATCHES,y as CS2_MAX_SEED,r as CS2_MAX_STATTRAK,D as CS2_MAX_STICKERS,C as CS2_MAX_STICKER_ROTATION,x as CS2_MAX_STICKER_WEAR,a as CS2_MAX_WEAR,h as CS2_MAX_WELL_WORN_WEAR,ae as CS2_MIDTIER_LOADOUT_CATEGORIES,g as CS2_MIN_BATTLE_SCARRED_WEAR,A as CS2_MIN_CHARGES,c as CS2_MIN_FACTORY_NEW_WEAR,f as CS2_MIN_FIELD_TESTED_WEAR,w as CS2_MIN_KEYCHAIN_SEED,u as CS2_MIN_MINIMAL_WEAR_WEAR,v as CS2_MIN_SEED,n as CS2_MIN_STATTRAK,S as CS2_MIN_STICKER_ROTATION,b as CS2_MIN_STICKER_WEAR,i as CS2_MIN_WEAR,m as CS2_MIN_WELL_WORN_WEAR,se as CS2_MISC_LOADOUT_CATEGORIES,Q as CS2_NAMETAGGABLE_ITEMS,B as CS2_NAMETAG_RE,W as CS2_NAMETAG_TOOL_DEFINITION_INDEX,$ as CS2_PAINTABLE_ITEMS,ee as CS2_PATCHABLE_ITEMS,oe as CS2_RIFLE_LOADOUT_CATEGORIES,te as CS2_SEEDABLE_ITEMS,ce as CS2_SNIPER_RIFLE_MODEL_KEYS,ne as CS2_STATTRAKABLE_ITEMS,G as CS2_STATTRAK_SWAP_TOOL_DEFINITION_INDEX,re as CS2_STICKERABLE_ITEMS,I as CS2_STICKER_OFFSET_FACTOR,L as CS2_STICKER_ROTATION_STEP,F as CS2_STICKER_SCRAPE_FACTOR,K as CS2_STICKER_SLAB_TOOL_DEFINITION_INDEX,P as CS2_STICKER_WEAR_FACTOR,q as CS2_STORAGE_UNIT_TOOL_DEFINITION_INDEX,ue as CS2_TEAMS_BOTH,de as CS2_TEAMS_CT,fe as CS2_TEAMS_T,z as CS2_WEAR_FACTOR};
@@ -13,6 +13,7 @@ declare class CS2EconomyInstance {
13
13
  itemsAsArray: CS2EconomyItem[];
14
14
  stickers: Set<CS2EconomyItem>;
15
15
  private charmDetachment;
16
+ private stickerDisplayCases;
16
17
  load({ assetsBaseUrl, items, language }: {
17
18
  assetsBaseUrl?: string;
18
19
  items: CS2Item[];
@@ -41,6 +42,8 @@ declare class CS2EconomyInstance {
41
42
  getStickerCategories(): string[];
42
43
  getStickers(): CS2EconomyItem[];
43
44
  getCharmDetachment(): CS2EconomyItem;
45
+ getStickerDisplayCase(sticker: number | CS2EconomyItem): CS2EconomyItem;
46
+ hasStickerDisplayCase(sticker: number | CS2EconomyItem): boolean;
44
47
  expectUnlockedItem(item: number | CS2EconomyItem, { id }: ReturnType<InstanceType<typeof CS2EconomyItem>["unlockContainer"]>): void;
45
48
  resolveUrl(path?: string): string;
46
49
  }
@@ -151,6 +154,8 @@ declare class CS2EconomyItem implements Interface<CS2Item & CS2ItemTranslation &
151
154
  isContract(): boolean;
152
155
  isCharmDetachment(): boolean;
153
156
  isCharmDetachmentPack(): boolean;
157
+ isStickerSlab(): boolean;
158
+ isStickerDisplayCase(): boolean;
154
159
  isWeaponCase(): boolean;
155
160
  isStickerCapsule(): boolean;
156
161
  isGraffitiBox(): boolean;
@@ -165,6 +170,8 @@ declare class CS2EconomyItem implements Interface<CS2Item & CS2ItemTranslation &
165
170
  expectNameTag(): this;
166
171
  expectStatTrakSwapTool(): this;
167
172
  expectCharmDetachmentPack(): this;
173
+ expectStickerSlab(): this;
174
+ expectStickerDisplayCase(): this;
168
175
  hasWear(): boolean;
169
176
  hasSeed(): boolean;
170
177
  hasStickers(): boolean;
@@ -173,6 +180,8 @@ declare class CS2EconomyItem implements Interface<CS2Item & CS2ItemTranslation &
173
180
  hasNameTag(): boolean;
174
181
  hasStatTrak(): boolean;
175
182
  hasCharges(): boolean;
183
+ hasDisplayCase(): boolean;
184
+ getDisplayCase(): CS2EconomyItem;
176
185
  getImageUrl(wear?: number): string;
177
186
  getCollectionImageUrl(): string;
178
187
  getSpecialsImageUrl(): string;
package/dist/economy.mjs CHANGED
@@ -1 +1 @@
1
- import{CS2ContainerType as e,CS2ItemTeam as t,CS2ItemType as n,CS2ItemWear as r,CS2StatTrakMode as i}from"./economy-types.mjs";import{assert as a,compare as o,ensure as s,isFactorPrecise as c,safe as l,truncateToFactor as u}from"./utils.mjs";import{CS2_CONTAINER_ITEMS as d,CS2_DISPLAY_ITEMS as f,CS2_EQUIPMENT_ITEMS as p,CS2_GRAPHIC_ART_ITEMS as m,CS2_KEYCHAINABLE_ITEMS as h,CS2_MACHINEGUN_MODEL_KEYS as g,CS2_MAX_CHARM_DETACHMENT_CHARGES as _,CS2_MAX_FACTORY_NEW_WEAR as v,CS2_MAX_FIELD_TESTED_WEAR as y,CS2_MAX_KEYCHAIN_SEED as b,CS2_MAX_MINIMAL_WEAR_WEAR as x,CS2_MAX_SEED as S,CS2_MAX_WELL_WORN_WEAR as C,CS2_MIDTIER_LOADOUT_CATEGORIES as w,CS2_MISC_LOADOUT_CATEGORIES as T,CS2_NAMETAGGABLE_ITEMS as E,CS2_NAMETAG_RE as D,CS2_PAINTABLE_ITEMS as O,CS2_PATCHABLE_ITEMS as k,CS2_RIFLE_LOADOUT_CATEGORIES as A,CS2_SEEDABLE_ITEMS as j,CS2_SNIPER_RIFLE_MODEL_KEYS as M,CS2_STATTRAKABLE_ITEMS as N,CS2_STICKERABLE_ITEMS as P,CS2_TEAMS_BOTH as F,CS2_TEAMS_CT as I,CS2_TEAMS_T as L,CS2_WEAR_FACTOR as R}from"./economy-constants.mjs";import{CS2RarityColorName as z,CS2RarityColorOrder as B,CS2RaritySoundName as V,CS2_RARITY_ORDER as H,randomFloat as U,randomInt as W}from"./economy-container.mjs";function G(e){return function(t){return o(e.type,t.type)&&o(e.isDefault,t.isDefault)&&o(e.modelKey,t.modelKey)&&o(e.isBase,t.isBase)&&o(e.loadoutCategory,t.loadoutCategory)&&(e.usableByTeam===void 0||t.teams===void 0||t.teams.includes(e.usableByTeam))}}var K=class{baseUrl=`https://cdn.cstrike.app`;categories=new Set;items=new Map;itemsAsArray=[];stickers=new Set;charmDetachment;load({assetsBaseUrl:e,items:t,language:n}){this.baseUrl=e??this.baseUrl,this.categories.clear(),this.items.clear(),this.stickers.clear(),this.itemsAsArray=[],this.charmDetachment=void 0;for(let e of t){let t=new q(this,e,n===void 0?{name:String(e.id)}:s(n[e.id]));this.items.set(e.id,t),t.isSticker()&&(this.stickers.add(t),n!==void 0&&this.categories.add(s(t.categoryName))),this.itemsAsArray.push(t)}}getById(e){return s(this.items.get(e))}get(e){return typeof e==`number`?this.getById(e):e}findItem(e){return s(this.itemsAsArray.find(G(e)))}filterItems(e){let t=this.itemsAsArray.filter(G(e));return a(t.length>0),t}validateWear(e,t){return e===void 0||(a(c(e,R)),a(e>=0&&e<=1),t!==void 0&&(a(t.hasWear()),a(t.wearMin===void 0||e>=t.wearMin),a(t.wearMax===void 0||e<=t.wearMax)),!0)}safeValidateWear(e,t){return l(()=>this.validateWear(e,t))}validateSeed(e,t){return e===void 0||(a(Number.isFinite(e)),a(Number.isInteger(e)),a(t===void 0||t.hasSeed()),a(e>=(t?.getMinimumSeed()??1)&&e<=(t?.getMaximumSeed()??1e3)),!0)}safeValidateSeed(e,t){return l(()=>this.validateSeed(e,t))}trimNameTag(e){let t=e?.trim();return t===``?void 0:t}validateNameTag(e,t){return e!==void 0&&(a(t===void 0||t.hasNameTag()),a(e[0]!==` `&&D.test(e))),!0}safeValidateNameTag(e,t){return l(()=>this.validateNameTag(e,t))}requireNameTag(e,t){return a(e===void 0||e.trim().length>0),this.validateNameTag(e,t)}safeRequireNameTag(e,t){return l(()=>this.requireNameTag(e,t))}validateCharges(e,t){return e===void 0||(a(t===void 0||t.hasCharges()),a(Number.isInteger(e)),a(e>=1&&e<=(t?.getMaximumCharges()??2**53-1)),!0)}safeValidateCharges(e,t){return l(()=>this.validateCharges(e,t))}validateStatTrak(e,t){return e===void 0||(a(t===void 0||t.hasStatTrak()),a(Number.isInteger(e)),a(e>=0&&e<=999999),!0)}safeValidateStatTrak(e,t){return l(()=>this.validateStatTrak(e,t))}validateContainerAndKey(e,t){return e=this.get(e),e.expectContainer(),t=t===void 0?void 0:this.get(t),t===void 0?a(e.keyIds===void 0):(t.expectKey(),a(e.keyIds!==void 0),a(e.keyIds.includes(t.id))),!0}safeValidateContainerAndKey(e,t){return l(()=>this.validateContainerAndKey(e,t))}getWearFromValue(e){switch(!0){case e<=v:return r.FactoryNew;case e<=x:return r.MinimalWear;case e<=y:return r.FieldTested;case e<=C:return r.WellWorn;default:return r.BattleScarred}}getStickerCategories(){return Array.from(this.categories).sort()}getStickers(){return Array.from(this.stickers)}getCharmDetachment(){return this.charmDetachment??=s(this.itemsAsArray.find(e=>e.isCharmDetachment())),this.charmDetachment}expectUnlockedItem(e,{id:t}){e=this.get(e).expectContainer(),a(e.contentIds?.includes(t)||e.specialIds?.includes(t))}resolveUrl(e){return`${this.baseUrl}${e}`}},q=class{economy;item;language;alternateName;categoryName;collectionDescription;collectionImagePath;collectionKey;collectionName;containerType;contentIds;definitionIndex;description;displayedStickerId;hasColliderData;id=null;imagePath;isBase;isDefault;isLegacyModel;keychainPositionXMax;keychainPositionXMin;keychainPositionYMax;keychainPositionYMin;keychainPositionZMax;keychainPositionZMin;keyIds;legacyKeychainPositionXMax;legacyKeychainPositionXMin;legacyKeychainPositionYMax;legacyKeychainPositionYMin;legacyKeychainPositionZMax;legacyKeychainPositionZMin;legacyStickerOffsetXMax;legacyStickerOffsetXMin;legacyStickerOffsetYMax;legacyStickerOffsetYMin;legacyStickerSchemaCount;loadoutCategory;materialPath;modelKey;modelPath;name=null;parentId;previewSeed;rarityColor=null;specialIds;specialsImagePath;statTrakMode;stickerOffsetXMax;stickerOffsetXMin;stickerOffsetYMax;stickerOffsetYMin;stickerSchemaCount;team;tintIndex;tournamentDescription;type=null;variantIndex;wearMax;wearMin;constructor(e,t,r){this.economy=e,this.item=t,this.language=r,Object.assign(this,t),Object.assign(this,r),a(typeof this.id==`number`),a(this.name),a(this.type),a(t.type===n.Stub||typeof this.rarityColor==`string`)}get contents(){return this.expectContainer(),s(this.contentIds).map(e=>this.economy.get(e))}get displayedSticker(){return this.displayedStickerId===void 0?void 0:this.economy.get(this.displayedStickerId)}get parent(){return this.parentId===void 0?void 0:this.economy.items.has(this.parentId)?this.economy.get(this.parentId):void 0}get specials(){return this.expectContainer(),this.specialIds?.map(e=>this.economy.get(e))}get teams(){switch(this.team){case t.Both:return F;case t.T:return L;case t.CT:return I;default:return}}isC4(){return this.loadoutCategory===`c4`}isPistol(){return this.loadoutCategory===`secondary`}isSMG(){return this.loadoutCategory===`smg`}isRifle(){return this.loadoutCategory===`rifle`}isHeavy(){return this.loadoutCategory===`heavy`}isEquipment(){return this.loadoutCategory===`equipment`}isSniperRifle(){return this.modelKey!==void 0&&M.includes(this.modelKey)}isMachinegun(){return this.modelKey!==void 0&&g.includes(this.modelKey)}isInMidTiers(){return this.loadoutCategory!==void 0&&w.includes(this.loadoutCategory)}isInRifles(){return this.loadoutCategory!==void 0&&A.includes(this.loadoutCategory)}isInMisc(){return this.loadoutCategory!==void 0&&T.includes(this.loadoutCategory)}isInEquipments(){return p.includes(this.type)}isInGraphicArts(){return m.includes(this.type)}isInContainers(){return d.includes(this.type)}isInDisplay(){return f.includes(this.type)}isPaintable(){return O.includes(this.type)}isAgent(){return this.type===n.Agent}isCollectible(){return this.type===n.Collectible}isContainer(){return this.type===n.Container}isGloves(){return this.type===n.Gloves}isGraffiti(){return this.type===n.Graffiti}isKey(){return this.type===n.Key}isKeychain(){return this.type===n.Keychain}isMelee(){return this.type===n.Melee}isMusicKit(){return this.type===n.MusicKit}isPatch(){return this.type===n.Patch}isSticker(){return this.type===n.Sticker}isStub(){return this.type===n.Stub}isTool(){return this.type===n.Tool}isWeapon(){return this.type===n.Weapon}isStorageUnit(){return this.isTool()&&this.definitionIndex===1201}isNameTag(){return this.isTool()&&this.definitionIndex===1200}isStatTrakSwapTool(){return this.isTool()&&this.definitionIndex===1324}isContract(){return this.isTool()&&this.definitionIndex===62}isCharmDetachment(){return this.isTool()&&this.definitionIndex===65}isCharmDetachmentPack(){return this.isTool()&&this.definitionIndex===4950}isWeaponCase(){return this.containerType===e.WeaponCase}isStickerCapsule(){return this.containerType===e.StickerCapsule}isGraffitiBox(){return this.containerType===e.GraffitiBox}isSouvenirCase(){return this.containerType===e.SouvenirCase}expectAgent(){return a(this.isAgent()),this}expectContainer(){return a(this.isContainer()),this}expectKey(){return a(this.isKey()),this}expectKeychain(){return a(this.isKeychain()),this}expectPatch(){return a(this.isPatch()),this}expectSticker(){return a(this.isSticker()),this}expectStorageUnit(){return a(this.isStorageUnit()),this}expectNameTag(){return a(this.isNameTag()),this}expectStatTrakSwapTool(){return a(this.isStatTrakSwapTool()),this}expectCharmDetachmentPack(){return a(this.isCharmDetachmentPack()),this}hasWear(){return O.includes(this.type)&&!this.isDefault&&this.variantIndex!==0}hasSeed(){return j.includes(this.type)&&!this.isDefault&&this.variantIndex!==0}hasStickers(){return P.includes(this.type)&&!this.isC4()}hasKeychains(){return h.includes(this.type)&&!this.isC4()}hasPatches(){return k.includes(this.type)}hasNameTag(){return E.includes(this.type)||this.isStorageUnit()}hasStatTrak(){return N.includes(this.type)&&!this.isDefault}hasCharges(){return this.isGraffiti()||this.isCharmDetachment()}getImageUrl(e){a(this.imagePath);let t=this.economy.resolveUrl(this.imagePath);if(this.hasWear()&&e!==void 0)switch(!0){case e<1/3:return t.replace(`.webp`,`_light.webp`);case e<2/3:return t.replace(`.webp`,`_medium.webp`);default:return t.replace(`.webp`,`_heavy.webp`)}return t}getCollectionImageUrl(){return this.economy.resolveUrl(this.collectionImagePath)}getSpecialsImageUrl(){return this.expectContainer(),a(this.specialIds),a(this.specialsImagePath),this.economy.resolveUrl(this.specialsImagePath)}getMaterialUrl(){return this.economy.resolveUrl(this.materialPath??this.parent?.materialPath)}getModelUrl(){let e=this.modelPath??this.parent?.modelPath;return this.economy.resolveUrl(e)}getModelDataUrl(){let e=this.modelPath??this.parent?.modelPath;return this.economy.resolveUrl(e?.replace(/\.glb$/,`.json`))}getColliderDataUrl(){if(!(this.hasColliderData??this.parent?.hasColliderData))return;let e=this.modelPath??this.parent?.modelPath;return this.economy.resolveUrl(e?.replace(/\.glb$/,`.collider.json`))}getMinimumWear(){return this.wearMin??0}getMaximumWear(){return this.wearMax??1}getMinimumSeed(){return this.isKeychain(),1}getMaximumSeed(){return this.isKeychain()?b:S}getPreviewSeed(){return this.previewSeed??5e4}getDefaultCharges(){return this.isGraffiti()?50:1}getMaximumCharges(){return this.isGraffiti()?50:_}getStickerSchemaCount(){let e=this.parent??this;return(this.isLegacyModel?e.legacyStickerSchemaCount:e.stickerSchemaCount)??5}getStickerOffsetBounds(){let e=this.parent??this,t=this.isLegacyModel;return{x:{min:t?e.legacyStickerOffsetXMin:e.stickerOffsetXMin,max:t?e.legacyStickerOffsetXMax:e.stickerOffsetXMax},y:{min:t?e.legacyStickerOffsetYMin:e.stickerOffsetYMin,max:t?e.legacyStickerOffsetYMax:e.stickerOffsetYMax}}}getKeychainPositionBounds(){let e=this.parent??this,t=this.isLegacyModel;return{x:{min:t?e.legacyKeychainPositionXMin:e.keychainPositionXMin,max:t?e.legacyKeychainPositionXMax:e.keychainPositionXMax},y:{min:t?e.legacyKeychainPositionYMin:e.keychainPositionYMin,max:t?e.legacyKeychainPositionYMax:e.keychainPositionYMax},z:{min:t?e.legacyKeychainPositionZMin:e.keychainPositionZMin,max:t?e.legacyKeychainPositionZMax:e.keychainPositionZMax}}}groupContents(){let e={},t=this.specials;for(let t of this.contents){let n=z[t.rarityColor];e[n]||(e[n]=[]),e[n].push(t)}if(t!==void 0)for(let n of t){let t=`special`;e[t]||(e[t]=[]),e[t].push(n)}return e}listContents(e=!1){let t=this.specials;return[...this.contents,...!e&&t!==void 0?t:[]].sort((e,t)=>(B[e.rarityColor]??0)-(B[t.rarityColor]??0))}unlockContainer(e){let t=this.groupContents(),n=Object.keys(t),r=H.filter(e=>n.includes(e)),a=e?.computeOdds?.(r)??r.map((e,t)=>.8/5**t),o=a.reduce((e,t)=>e+t,0),c=r.map((e,t)=>[e,s(a[t])/o]),l=Math.random(),[d]=s(c[0]),f=0;for(let[e,t]of c)if(f+=t,l<=f){d=e;break}let p=s(t[d]),m=s(p[Math.floor(Math.random()*p.length)]);return{attributes:{containerId:this.id,seed:m.hasSeed()?W(1,S):void 0,statTrak:m.hasStatTrak()&&this.statTrakMode!==i.Excluded&&(this.statTrakMode===i.Guaranteed||Math.random()<=.1)?0:void 0,wear:m.hasWear()?u(U(m.wearMin??0,m.wearMax??1),R):void 0},id:m.id,rarity:V[m.rarityColor],special:d===`special`}}};const J=new K;export{J as CS2Economy,K as CS2EconomyInstance,q as CS2EconomyItem};
1
+ import{CS2ContainerType as e,CS2ItemTeam as t,CS2ItemType as n,CS2ItemWear as r,CS2StatTrakMode as i}from"./economy-types.mjs";import{assert as a,compare as o,ensure as s,isFactorPrecise as c,safe as l,truncateToFactor as u}from"./utils.mjs";import{CS2_CONTAINER_ITEMS as d,CS2_DISPLAY_ITEMS as f,CS2_EQUIPMENT_ITEMS as p,CS2_GRAPHIC_ART_ITEMS as m,CS2_KEYCHAINABLE_ITEMS as h,CS2_MACHINEGUN_MODEL_KEYS as g,CS2_MAX_CHARM_DETACHMENT_CHARGES as _,CS2_MAX_FACTORY_NEW_WEAR as v,CS2_MAX_FIELD_TESTED_WEAR as y,CS2_MAX_KEYCHAIN_SEED as b,CS2_MAX_MINIMAL_WEAR_WEAR as x,CS2_MAX_SEED as S,CS2_MAX_WELL_WORN_WEAR as C,CS2_MIDTIER_LOADOUT_CATEGORIES as w,CS2_MISC_LOADOUT_CATEGORIES as T,CS2_NAMETAGGABLE_ITEMS as E,CS2_NAMETAG_RE as D,CS2_PAINTABLE_ITEMS as O,CS2_PATCHABLE_ITEMS as k,CS2_RIFLE_LOADOUT_CATEGORIES as A,CS2_SEEDABLE_ITEMS as j,CS2_SNIPER_RIFLE_MODEL_KEYS as M,CS2_STATTRAKABLE_ITEMS as N,CS2_STICKERABLE_ITEMS as P,CS2_TEAMS_BOTH as F,CS2_TEAMS_CT as I,CS2_TEAMS_T as L,CS2_WEAR_FACTOR as R}from"./economy-constants.mjs";import{CS2RarityColorName as z,CS2RarityColorOrder as B,CS2RaritySoundName as V,CS2_RARITY_ORDER as H,randomFloat as U,randomInt as W}from"./economy-container.mjs";function G(e){return function(t){return o(e.type,t.type)&&o(e.isDefault,t.isDefault)&&o(e.modelKey,t.modelKey)&&o(e.isBase,t.isBase)&&o(e.loadoutCategory,t.loadoutCategory)&&(e.usableByTeam===void 0||t.teams===void 0||t.teams.includes(e.usableByTeam))}}var K=class{baseUrl=`https://cdn.cstrike.app`;categories=new Set;items=new Map;itemsAsArray=[];stickers=new Set;charmDetachment;stickerDisplayCases=new Map;load({assetsBaseUrl:e,items:t,language:n}){this.baseUrl=e??this.baseUrl,this.categories.clear(),this.items.clear(),this.stickers.clear(),this.itemsAsArray=[],this.charmDetachment=void 0,this.stickerDisplayCases.clear();for(let e of t){let t=new q(this,e,n===void 0?{name:String(e.id)}:s(n[e.id]));this.items.set(e.id,t),t.isSticker()&&(this.stickers.add(t),n!==void 0&&this.categories.add(s(t.categoryName))),t.isStickerDisplayCase()&&this.stickerDisplayCases.set(s(t.displayedStickerId),t),this.itemsAsArray.push(t)}}getById(e){return s(this.items.get(e))}get(e){return typeof e==`number`?this.getById(e):e}findItem(e){return s(this.itemsAsArray.find(G(e)))}filterItems(e){let t=this.itemsAsArray.filter(G(e));return a(t.length>0),t}validateWear(e,t){return e===void 0||(a(c(e,R)),a(e>=0&&e<=1),t!==void 0&&(a(t.hasWear()),a(t.wearMin===void 0||e>=t.wearMin),a(t.wearMax===void 0||e<=t.wearMax)),!0)}safeValidateWear(e,t){return l(()=>this.validateWear(e,t))}validateSeed(e,t){return e===void 0||(a(Number.isFinite(e)),a(Number.isInteger(e)),a(t===void 0||t.hasSeed()),a(e>=(t?.getMinimumSeed()??1)&&e<=(t?.getMaximumSeed()??1e3)),!0)}safeValidateSeed(e,t){return l(()=>this.validateSeed(e,t))}trimNameTag(e){let t=e?.trim();return t===``?void 0:t}validateNameTag(e,t){return e!==void 0&&(a(t===void 0||t.hasNameTag()),a(e[0]!==` `&&D.test(e))),!0}safeValidateNameTag(e,t){return l(()=>this.validateNameTag(e,t))}requireNameTag(e,t){return a(e===void 0||e.trim().length>0),this.validateNameTag(e,t)}safeRequireNameTag(e,t){return l(()=>this.requireNameTag(e,t))}validateCharges(e,t){return e===void 0||(a(t===void 0||t.hasCharges()),a(Number.isInteger(e)),a(e>=1&&e<=(t?.getMaximumCharges()??2**53-1)),!0)}safeValidateCharges(e,t){return l(()=>this.validateCharges(e,t))}validateStatTrak(e,t){return e===void 0||(a(t===void 0||t.hasStatTrak()),a(Number.isInteger(e)),a(e>=0&&e<=999999),!0)}safeValidateStatTrak(e,t){return l(()=>this.validateStatTrak(e,t))}validateContainerAndKey(e,t){return e=this.get(e),e.expectContainer(),t=t===void 0?void 0:this.get(t),t===void 0?a(e.keyIds===void 0):(t.expectKey(),a(e.keyIds!==void 0),a(e.keyIds.includes(t.id))),!0}safeValidateContainerAndKey(e,t){return l(()=>this.validateContainerAndKey(e,t))}getWearFromValue(e){switch(!0){case e<=v:return r.FactoryNew;case e<=x:return r.MinimalWear;case e<=y:return r.FieldTested;case e<=C:return r.WellWorn;default:return r.BattleScarred}}getStickerCategories(){return Array.from(this.categories).sort()}getStickers(){return Array.from(this.stickers)}getCharmDetachment(){return this.charmDetachment??=s(this.itemsAsArray.find(e=>e.isCharmDetachment())),this.charmDetachment}getStickerDisplayCase(e){return s(this.stickerDisplayCases.get(this.get(e).expectSticker().id))}hasStickerDisplayCase(e){return this.stickerDisplayCases.has(this.get(e).expectSticker().id)}expectUnlockedItem(e,{id:t}){e=this.get(e).expectContainer(),a(e.contentIds?.includes(t)||e.specialIds?.includes(t))}resolveUrl(e){return`${this.baseUrl}${e}`}},q=class{economy;item;language;alternateName;categoryName;collectionDescription;collectionImagePath;collectionKey;collectionName;containerType;contentIds;definitionIndex;description;displayedStickerId;hasColliderData;id=null;imagePath;isBase;isDefault;isLegacyModel;keychainPositionXMax;keychainPositionXMin;keychainPositionYMax;keychainPositionYMin;keychainPositionZMax;keychainPositionZMin;keyIds;legacyKeychainPositionXMax;legacyKeychainPositionXMin;legacyKeychainPositionYMax;legacyKeychainPositionYMin;legacyKeychainPositionZMax;legacyKeychainPositionZMin;legacyStickerOffsetXMax;legacyStickerOffsetXMin;legacyStickerOffsetYMax;legacyStickerOffsetYMin;legacyStickerSchemaCount;loadoutCategory;materialPath;modelKey;modelPath;name=null;parentId;previewSeed;rarityColor=null;specialIds;specialsImagePath;statTrakMode;stickerOffsetXMax;stickerOffsetXMin;stickerOffsetYMax;stickerOffsetYMin;stickerSchemaCount;team;tintIndex;tournamentDescription;type=null;variantIndex;wearMax;wearMin;constructor(e,t,r){this.economy=e,this.item=t,this.language=r,Object.assign(this,t),Object.assign(this,r),a(typeof this.id==`number`),a(this.name),a(this.type),a(t.type===n.Stub||typeof this.rarityColor==`string`)}get contents(){return this.expectContainer(),s(this.contentIds).map(e=>this.economy.get(e))}get displayedSticker(){return this.displayedStickerId===void 0?void 0:this.economy.get(this.displayedStickerId)}get parent(){return this.parentId===void 0?void 0:this.economy.items.has(this.parentId)?this.economy.get(this.parentId):void 0}get specials(){return this.expectContainer(),this.specialIds?.map(e=>this.economy.get(e))}get teams(){switch(this.team){case t.Both:return F;case t.T:return L;case t.CT:return I;default:return}}isC4(){return this.loadoutCategory===`c4`}isPistol(){return this.loadoutCategory===`secondary`}isSMG(){return this.loadoutCategory===`smg`}isRifle(){return this.loadoutCategory===`rifle`}isHeavy(){return this.loadoutCategory===`heavy`}isEquipment(){return this.loadoutCategory===`equipment`}isSniperRifle(){return this.modelKey!==void 0&&M.includes(this.modelKey)}isMachinegun(){return this.modelKey!==void 0&&g.includes(this.modelKey)}isInMidTiers(){return this.loadoutCategory!==void 0&&w.includes(this.loadoutCategory)}isInRifles(){return this.loadoutCategory!==void 0&&A.includes(this.loadoutCategory)}isInMisc(){return this.loadoutCategory!==void 0&&T.includes(this.loadoutCategory)}isInEquipments(){return p.includes(this.type)}isInGraphicArts(){return m.includes(this.type)}isInContainers(){return d.includes(this.type)}isInDisplay(){return f.includes(this.type)}isPaintable(){return O.includes(this.type)}isAgent(){return this.type===n.Agent}isCollectible(){return this.type===n.Collectible}isContainer(){return this.type===n.Container}isGloves(){return this.type===n.Gloves}isGraffiti(){return this.type===n.Graffiti}isKey(){return this.type===n.Key}isKeychain(){return this.type===n.Keychain}isMelee(){return this.type===n.Melee}isMusicKit(){return this.type===n.MusicKit}isPatch(){return this.type===n.Patch}isSticker(){return this.type===n.Sticker}isStub(){return this.type===n.Stub}isTool(){return this.type===n.Tool}isWeapon(){return this.type===n.Weapon}isStorageUnit(){return this.isTool()&&this.definitionIndex===1201}isNameTag(){return this.isTool()&&this.definitionIndex===1200}isStatTrakSwapTool(){return this.isTool()&&this.definitionIndex===1324}isContract(){return this.isTool()&&this.definitionIndex===62}isCharmDetachment(){return this.isTool()&&this.definitionIndex===65}isCharmDetachmentPack(){return this.isTool()&&this.definitionIndex===4950}isStickerSlab(){return this.isTool()&&this.definitionIndex===1355}isStickerDisplayCase(){return this.isKeychain()&&this.displayedStickerId!==void 0}isWeaponCase(){return this.containerType===e.WeaponCase}isStickerCapsule(){return this.containerType===e.StickerCapsule}isGraffitiBox(){return this.containerType===e.GraffitiBox}isSouvenirCase(){return this.containerType===e.SouvenirCase}expectAgent(){return a(this.isAgent()),this}expectContainer(){return a(this.isContainer()),this}expectKey(){return a(this.isKey()),this}expectKeychain(){return a(this.isKeychain()),this}expectPatch(){return a(this.isPatch()),this}expectSticker(){return a(this.isSticker()),this}expectStorageUnit(){return a(this.isStorageUnit()),this}expectNameTag(){return a(this.isNameTag()),this}expectStatTrakSwapTool(){return a(this.isStatTrakSwapTool()),this}expectCharmDetachmentPack(){return a(this.isCharmDetachmentPack()),this}expectStickerSlab(){return a(this.isStickerSlab()),this}expectStickerDisplayCase(){return a(this.isStickerDisplayCase()),this}hasWear(){return O.includes(this.type)&&!this.isDefault&&this.variantIndex!==0}hasSeed(){return j.includes(this.type)&&!this.isDefault&&this.variantIndex!==0}hasStickers(){return P.includes(this.type)&&!this.isC4()}hasKeychains(){return h.includes(this.type)&&!this.isC4()}hasPatches(){return k.includes(this.type)}hasNameTag(){return E.includes(this.type)||this.isStorageUnit()}hasStatTrak(){return N.includes(this.type)&&!this.isDefault}hasCharges(){return this.isGraffiti()||this.isCharmDetachment()}hasDisplayCase(){return this.economy.hasStickerDisplayCase(this)}getDisplayCase(){return this.economy.getStickerDisplayCase(this)}getImageUrl(e){a(this.imagePath);let t=this.economy.resolveUrl(this.imagePath);if(this.hasWear()&&e!==void 0)switch(!0){case e<1/3:return t.replace(`.webp`,`_light.webp`);case e<2/3:return t.replace(`.webp`,`_medium.webp`);default:return t.replace(`.webp`,`_heavy.webp`)}return t}getCollectionImageUrl(){return this.economy.resolveUrl(this.collectionImagePath)}getSpecialsImageUrl(){return this.expectContainer(),a(this.specialIds),a(this.specialsImagePath),this.economy.resolveUrl(this.specialsImagePath)}getMaterialUrl(){return this.economy.resolveUrl(this.materialPath??this.parent?.materialPath)}getModelUrl(){let e=this.modelPath??this.parent?.modelPath;return this.economy.resolveUrl(e)}getModelDataUrl(){let e=this.modelPath??this.parent?.modelPath;return this.economy.resolveUrl(e?.replace(/\.glb$/,`.json`))}getColliderDataUrl(){if(!(this.hasColliderData??this.parent?.hasColliderData))return;let e=this.modelPath??this.parent?.modelPath;return this.economy.resolveUrl(e?.replace(/\.glb$/,`.collider.json`))}getMinimumWear(){return this.wearMin??0}getMaximumWear(){return this.wearMax??1}getMinimumSeed(){return this.isKeychain(),1}getMaximumSeed(){return this.isKeychain()?b:S}getPreviewSeed(){return this.previewSeed??5e4}getDefaultCharges(){return this.isGraffiti()?50:1}getMaximumCharges(){return this.isGraffiti()?50:_}getStickerSchemaCount(){let e=this.parent??this;return(this.isLegacyModel?e.legacyStickerSchemaCount:e.stickerSchemaCount)??5}getStickerOffsetBounds(){let e=this.parent??this,t=this.isLegacyModel;return{x:{min:t?e.legacyStickerOffsetXMin:e.stickerOffsetXMin,max:t?e.legacyStickerOffsetXMax:e.stickerOffsetXMax},y:{min:t?e.legacyStickerOffsetYMin:e.stickerOffsetYMin,max:t?e.legacyStickerOffsetYMax:e.stickerOffsetYMax}}}getKeychainPositionBounds(){let e=this.parent??this,t=this.isLegacyModel;return{x:{min:t?e.legacyKeychainPositionXMin:e.keychainPositionXMin,max:t?e.legacyKeychainPositionXMax:e.keychainPositionXMax},y:{min:t?e.legacyKeychainPositionYMin:e.keychainPositionYMin,max:t?e.legacyKeychainPositionYMax:e.keychainPositionYMax},z:{min:t?e.legacyKeychainPositionZMin:e.keychainPositionZMin,max:t?e.legacyKeychainPositionZMax:e.keychainPositionZMax}}}groupContents(){let e={},t=this.specials;for(let t of this.contents){let n=z[t.rarityColor];e[n]||(e[n]=[]),e[n].push(t)}if(t!==void 0)for(let n of t){let t=`special`;e[t]||(e[t]=[]),e[t].push(n)}return e}listContents(e=!1){let t=this.specials;return[...this.contents,...!e&&t!==void 0?t:[]].sort((e,t)=>(B[e.rarityColor]??0)-(B[t.rarityColor]??0))}unlockContainer(e){let t=this.groupContents(),n=Object.keys(t),r=H.filter(e=>n.includes(e)),a=e?.computeOdds?.(r)??r.map((e,t)=>.8/5**t),o=a.reduce((e,t)=>e+t,0),c=r.map((e,t)=>[e,s(a[t])/o]),l=Math.random(),[d]=s(c[0]),f=0;for(let[e,t]of c)if(f+=t,l<=f){d=e;break}let p=s(t[d]),m=s(p[Math.floor(Math.random()*p.length)]);return{attributes:{containerId:this.id,seed:m.hasSeed()?W(1,S):void 0,statTrak:m.hasStatTrak()&&this.statTrakMode!==i.Excluded&&(this.statTrakMode===i.Guaranteed||Math.random()<=.1)?0:void 0,wear:m.hasWear()?u(U(m.wearMin??0,m.wearMax??1),R):void 0},id:m.id,rarity:V[m.rarityColor],special:d===`special`}}};const J=new K;export{J as CS2Economy,K as CS2EconomyInstance,q as CS2EconomyItem};
package/dist/index.d.mts CHANGED
@@ -2,7 +2,7 @@ import { EnumValues, Interface, MapValue, RecordValue, assert, clamp, compare, c
2
2
  import { CS2Rarity, CS2RarityColor, CS2RarityColorName, CS2RarityColorOrder, CS2RarityKeys, CS2RaritySoundName, CS2_BASE_ODD, CS2_RARITIES, CS2_RARITY_COLOR_DEFAULT, CS2_RARITY_ORDER, CS2_STATTRAK_ODD, randomBoolean, randomFloat, randomInt } from "./economy-container.mjs";
3
3
  import { CS2Bounds, CS2ContainerType, CS2Item, CS2ItemTeam, CS2ItemTranslation, CS2ItemTranslationByLanguage, CS2ItemTranslationMap, CS2ItemType, CS2ItemWear, CS2StatTrakMode, CS2UnlockedItem } from "./economy-types.mjs";
4
4
  import { CS2Team, toggleCS2Team } from "./teams.mjs";
5
- import { CS2_CHARM_DETACHMENT_PACK_CHARGES, CS2_CHARM_DETACHMENT_PACK_TOOL_DEFINITION_INDEX, CS2_CHARM_DETACHMENT_TOOL_DEFINITION_INDEX, CS2_CONTAINER_ITEMS, CS2_CONTRACT_TOOL_DEFINITION_INDEX, CS2_DEFAULT_MAX_WEAR, CS2_DEFAULT_MIN_WEAR, CS2_DISPLAY_ITEMS, CS2_EQUIPMENT_ITEMS, CS2_FALLBACK_PREVIEW_SEED, CS2_GRAPHIC_ART_ITEMS, CS2_KEYCHAINABLE_ITEMS, CS2_KEYCHAIN_POSITION_FACTOR, CS2_MACHINEGUN_MODEL_KEYS, CS2_MAX_BATTLE_SCARRED_WEAR, CS2_MAX_CHARM_DETACHMENT_CHARGES, CS2_MAX_FACTORY_NEW_WEAR, CS2_MAX_FIELD_TESTED_WEAR, CS2_MAX_GRAFFITI_CHARGES, CS2_MAX_KEYCHAINS, CS2_MAX_KEYCHAIN_SEED, CS2_MAX_MINIMAL_WEAR_WEAR, CS2_MAX_PATCHES, CS2_MAX_SEED, CS2_MAX_STATTRAK, CS2_MAX_STICKERS, CS2_MAX_STICKER_ROTATION, CS2_MAX_STICKER_WEAR, CS2_MAX_WEAR, CS2_MAX_WELL_WORN_WEAR, CS2_MIDTIER_LOADOUT_CATEGORIES, CS2_MIN_BATTLE_SCARRED_WEAR, CS2_MIN_CHARGES, CS2_MIN_FACTORY_NEW_WEAR, CS2_MIN_FIELD_TESTED_WEAR, CS2_MIN_KEYCHAIN_SEED, CS2_MIN_MINIMAL_WEAR_WEAR, CS2_MIN_SEED, CS2_MIN_STATTRAK, CS2_MIN_STICKER_ROTATION, CS2_MIN_STICKER_WEAR, CS2_MIN_WEAR, CS2_MIN_WELL_WORN_WEAR, CS2_MISC_LOADOUT_CATEGORIES, CS2_NAMETAGGABLE_ITEMS, CS2_NAMETAG_RE, CS2_NAMETAG_TOOL_DEFINITION_INDEX, CS2_PAINTABLE_ITEMS, CS2_PATCHABLE_ITEMS, CS2_RIFLE_LOADOUT_CATEGORIES, CS2_SEEDABLE_ITEMS, CS2_SNIPER_RIFLE_MODEL_KEYS, CS2_STATTRAKABLE_ITEMS, CS2_STATTRAK_SWAP_TOOL_DEFINITION_INDEX, CS2_STICKERABLE_ITEMS, CS2_STICKER_OFFSET_FACTOR, CS2_STICKER_ROTATION_STEP, CS2_STICKER_SCRAPE_FACTOR, CS2_STICKER_WEAR_FACTOR, CS2_STORAGE_UNIT_TOOL_DEFINITION_INDEX, CS2_TEAMS_BOTH, CS2_TEAMS_CT, CS2_TEAMS_T, CS2_WEAR_FACTOR } from "./economy-constants.mjs";
5
+ import { CS2_CHARM_DETACHMENT_PACK_CHARGES, CS2_CHARM_DETACHMENT_PACK_TOOL_DEFINITION_INDEX, CS2_CHARM_DETACHMENT_TOOL_DEFINITION_INDEX, CS2_CONTAINER_ITEMS, CS2_CONTRACT_TOOL_DEFINITION_INDEX, CS2_DEFAULT_MAX_WEAR, CS2_DEFAULT_MIN_WEAR, CS2_DISPLAY_ITEMS, CS2_EQUIPMENT_ITEMS, CS2_FALLBACK_PREVIEW_SEED, CS2_GRAPHIC_ART_ITEMS, CS2_KEYCHAINABLE_ITEMS, CS2_KEYCHAIN_POSITION_FACTOR, CS2_MACHINEGUN_MODEL_KEYS, CS2_MAX_BATTLE_SCARRED_WEAR, CS2_MAX_CHARM_DETACHMENT_CHARGES, CS2_MAX_FACTORY_NEW_WEAR, CS2_MAX_FIELD_TESTED_WEAR, CS2_MAX_GRAFFITI_CHARGES, CS2_MAX_KEYCHAINS, CS2_MAX_KEYCHAIN_SEED, CS2_MAX_MINIMAL_WEAR_WEAR, CS2_MAX_PATCHES, CS2_MAX_SEED, CS2_MAX_STATTRAK, CS2_MAX_STICKERS, CS2_MAX_STICKER_ROTATION, CS2_MAX_STICKER_WEAR, CS2_MAX_WEAR, CS2_MAX_WELL_WORN_WEAR, CS2_MIDTIER_LOADOUT_CATEGORIES, CS2_MIN_BATTLE_SCARRED_WEAR, CS2_MIN_CHARGES, CS2_MIN_FACTORY_NEW_WEAR, CS2_MIN_FIELD_TESTED_WEAR, CS2_MIN_KEYCHAIN_SEED, CS2_MIN_MINIMAL_WEAR_WEAR, CS2_MIN_SEED, CS2_MIN_STATTRAK, CS2_MIN_STICKER_ROTATION, CS2_MIN_STICKER_WEAR, CS2_MIN_WEAR, CS2_MIN_WELL_WORN_WEAR, CS2_MISC_LOADOUT_CATEGORIES, CS2_NAMETAGGABLE_ITEMS, CS2_NAMETAG_RE, CS2_NAMETAG_TOOL_DEFINITION_INDEX, CS2_PAINTABLE_ITEMS, CS2_PATCHABLE_ITEMS, CS2_RIFLE_LOADOUT_CATEGORIES, CS2_SEEDABLE_ITEMS, CS2_SNIPER_RIFLE_MODEL_KEYS, CS2_STATTRAKABLE_ITEMS, CS2_STATTRAK_SWAP_TOOL_DEFINITION_INDEX, CS2_STICKERABLE_ITEMS, CS2_STICKER_OFFSET_FACTOR, CS2_STICKER_ROTATION_STEP, CS2_STICKER_SCRAPE_FACTOR, CS2_STICKER_SLAB_TOOL_DEFINITION_INDEX, CS2_STICKER_WEAR_FACTOR, CS2_STORAGE_UNIT_TOOL_DEFINITION_INDEX, CS2_TEAMS_BOTH, CS2_TEAMS_CT, CS2_TEAMS_T, CS2_WEAR_FACTOR } from "./economy-constants.mjs";
6
6
  import { CS2Economy, CS2EconomyInstance, CS2EconomyItem } from "./economy.mjs";
7
7
  import { CS2BaseInventoryItem, CS2InventoryData, CS2InventoryOptions, CS2InventorySpec } from "./inventory-types.mjs";
8
8
  import { CS2InventoryDecodeError, CS2InventoryDecoded, CS2InventoryDrop, CS2InventoryDropReason, CS2InventoryError, CS2InventoryLoadChanges, CS2InventoryMigrationError, CS2InventoryVersionError, decodeInventoryData } from "./inventory-format.mjs";
@@ -14,4 +14,4 @@ import { CS2KeyValues } from "./keyvalues.mjs";
14
14
  import { CS2KeyValues3 } from "./keyvalues3.mjs";
15
15
  import { CS2Map, CS2_ALL_MAPS, CS2_ANCIENT_MAP, CS2_ANUBIS_MAP, CS2_CACHE_MAP, CS2_DUST2_MAP, CS2_INFERNO_MAP, CS2_MIRAGE_MAP, CS2_NUKE_MAP, CS2_OVERPASS_MAP, CS2_TRAIN_MAP, CS2_VERTIGO_MAP, getMapnameName } from "./maps.mjs";
16
16
  import { CS2Veto, CS2VetoAction, CS2VetoEvent, CS2VetoMap, CS2VetoTeam, CS2VetoType } from "./veto.mjs";
17
- export { CS2BaseInventoryItem, CS2Bounds, CS2ContainerType, CS2Economy, CS2EconomyInstance, CS2EconomyItem, CS2Inventory, CS2InventoryData, CS2InventoryDecodeError, CS2InventoryDecoded, CS2InventoryDrop, CS2InventoryDropReason, CS2InventoryError, CS2InventoryItem, CS2InventoryLoadChanges, CS2InventoryMigration, CS2InventoryMigrationError, CS2InventoryOptions, CS2InventoryRule, CS2InventoryRuleName, CS2InventorySpec, CS2InventoryStorageDrops, CS2InventoryVersionError, CS2Item, CS2ItemTeam, CS2ItemTranslation, CS2ItemTranslationByLanguage, CS2ItemTranslationMap, CS2ItemType, CS2ItemWear, CS2KeyValues, CS2KeyValues3, CS2Map, CS2Rarity, CS2RarityColor, CS2RarityColorName, CS2RarityColorOrder, CS2RarityKeys, CS2RaritySoundName, CS2StatTrakMode, CS2Team, CS2UnlockedItem, CS2Veto, CS2VetoAction, CS2VetoEvent, CS2VetoMap, CS2VetoTeam, CS2VetoType, CS2_ALL_MAPS, CS2_ANCIENT_MAP, CS2_ANUBIS_MAP, CS2_BASE_ODD, CS2_CACHE_MAP, CS2_CHARM_DETACHMENT_PACK_CHARGES, CS2_CHARM_DETACHMENT_PACK_TOOL_DEFINITION_INDEX, CS2_CHARM_DETACHMENT_TOOL_DEFINITION_INDEX, CS2_CONTAINER_ITEMS, CS2_CONTRACT_TOOL_DEFINITION_INDEX, CS2_DEFAULT_MAX_WEAR, CS2_DEFAULT_MIN_WEAR, CS2_DISPLAY_ITEMS, CS2_DUST2_MAP, CS2_EQUIPMENT_ITEMS, CS2_FALLBACK_PREVIEW_SEED, CS2_GRAPHIC_ART_ITEMS, CS2_INFERNO_MAP, CS2_INVENTORY_EQUIPPABLE_ITEMS, CS2_INVENTORY_RULES, CS2_INVENTORY_TIMESTAMP, CS2_INVENTORY_VERSION, CS2_ITEMS, CS2_KEYCHAINABLE_ITEMS, CS2_KEYCHAIN_POSITION_FACTOR, CS2_MACHINEGUN_MODEL_KEYS, CS2_MAX_BATTLE_SCARRED_WEAR, CS2_MAX_CHARM_DETACHMENT_CHARGES, CS2_MAX_FACTORY_NEW_WEAR, CS2_MAX_FIELD_TESTED_WEAR, CS2_MAX_GRAFFITI_CHARGES, CS2_MAX_KEYCHAINS, CS2_MAX_KEYCHAIN_SEED, CS2_MAX_MINIMAL_WEAR_WEAR, CS2_MAX_PATCHES, CS2_MAX_SEED, CS2_MAX_STATTRAK, CS2_MAX_STICKERS, CS2_MAX_STICKER_ROTATION, CS2_MAX_STICKER_WEAR, CS2_MAX_WEAR, CS2_MAX_WELL_WORN_WEAR, CS2_MIDTIER_LOADOUT_CATEGORIES, CS2_MIN_BATTLE_SCARRED_WEAR, CS2_MIN_CHARGES, CS2_MIN_FACTORY_NEW_WEAR, CS2_MIN_FIELD_TESTED_WEAR, CS2_MIN_INVENTORY_VERSION, CS2_MIN_KEYCHAIN_SEED, CS2_MIN_MINIMAL_WEAR_WEAR, CS2_MIN_SEED, CS2_MIN_STATTRAK, CS2_MIN_STICKER_ROTATION, CS2_MIN_STICKER_WEAR, CS2_MIN_WEAR, CS2_MIN_WELL_WORN_WEAR, CS2_MIRAGE_MAP, CS2_MISC_LOADOUT_CATEGORIES, CS2_NAMETAGGABLE_ITEMS, CS2_NAMETAG_RE, CS2_NAMETAG_TOOL_DEFINITION_INDEX, CS2_NUKE_MAP, CS2_OVERPASS_MAP, CS2_PAINTABLE_ITEMS, CS2_PATCHABLE_ITEMS, CS2_RARITIES, CS2_RARITY_COLOR_DEFAULT, CS2_RARITY_ORDER, CS2_RIFLE_LOADOUT_CATEGORIES, CS2_SEEDABLE_ITEMS, CS2_SNIPER_RIFLE_MODEL_KEYS, CS2_STATTRAKABLE_ITEMS, CS2_STATTRAK_ODD, CS2_STATTRAK_SWAP_TOOL_DEFINITION_INDEX, CS2_STICKERABLE_ITEMS, CS2_STICKER_OFFSET_FACTOR, CS2_STICKER_ROTATION_STEP, CS2_STICKER_SCRAPE_FACTOR, CS2_STICKER_WEAR_FACTOR, CS2_STORAGE_UNIT_TOOL_DEFINITION_INDEX, CS2_TEAMS_BOTH, CS2_TEAMS_CT, CS2_TEAMS_T, CS2_TRAIN_MAP, CS2_VERTIGO_MAP, CS2_WEAR_FACTOR, EnumValues, Interface, MapValue, RecordValue, assert, assertAddable, assertInventoryItem, assertKeychains, assertPatches, assertStickers, checkAddable, checkAttachable, checkInventoryItem, checkKeychains, checkPatches, checkStickerSchema, checkStickers, checkStorage, clamp, compare, countDecimals, decodeInventoryData, ensure, fail, float, getDropReason, getMapnameName, getNextStickerSchema, getNextUid, getTimestamp, isFactorPrecise, isNotUndefined, migrations, randomBoolean, randomFloat, randomInt, reconcileInventoryItems, repairInventoryItem, roundToFactor, safe, snapStickerRotation, stickerMapToArray, toStickerMap, toggleCS2Team, truncateToFactor, validateStickerRotation };
17
+ export { CS2BaseInventoryItem, CS2Bounds, CS2ContainerType, CS2Economy, CS2EconomyInstance, CS2EconomyItem, CS2Inventory, CS2InventoryData, CS2InventoryDecodeError, CS2InventoryDecoded, CS2InventoryDrop, CS2InventoryDropReason, CS2InventoryError, CS2InventoryItem, CS2InventoryLoadChanges, CS2InventoryMigration, CS2InventoryMigrationError, CS2InventoryOptions, CS2InventoryRule, CS2InventoryRuleName, CS2InventorySpec, CS2InventoryStorageDrops, CS2InventoryVersionError, CS2Item, CS2ItemTeam, CS2ItemTranslation, CS2ItemTranslationByLanguage, CS2ItemTranslationMap, CS2ItemType, CS2ItemWear, CS2KeyValues, CS2KeyValues3, CS2Map, CS2Rarity, CS2RarityColor, CS2RarityColorName, CS2RarityColorOrder, CS2RarityKeys, CS2RaritySoundName, CS2StatTrakMode, CS2Team, CS2UnlockedItem, CS2Veto, CS2VetoAction, CS2VetoEvent, CS2VetoMap, CS2VetoTeam, CS2VetoType, CS2_ALL_MAPS, CS2_ANCIENT_MAP, CS2_ANUBIS_MAP, CS2_BASE_ODD, CS2_CACHE_MAP, CS2_CHARM_DETACHMENT_PACK_CHARGES, CS2_CHARM_DETACHMENT_PACK_TOOL_DEFINITION_INDEX, CS2_CHARM_DETACHMENT_TOOL_DEFINITION_INDEX, CS2_CONTAINER_ITEMS, CS2_CONTRACT_TOOL_DEFINITION_INDEX, CS2_DEFAULT_MAX_WEAR, CS2_DEFAULT_MIN_WEAR, CS2_DISPLAY_ITEMS, CS2_DUST2_MAP, CS2_EQUIPMENT_ITEMS, CS2_FALLBACK_PREVIEW_SEED, CS2_GRAPHIC_ART_ITEMS, CS2_INFERNO_MAP, CS2_INVENTORY_EQUIPPABLE_ITEMS, CS2_INVENTORY_RULES, CS2_INVENTORY_TIMESTAMP, CS2_INVENTORY_VERSION, CS2_ITEMS, CS2_KEYCHAINABLE_ITEMS, CS2_KEYCHAIN_POSITION_FACTOR, CS2_MACHINEGUN_MODEL_KEYS, CS2_MAX_BATTLE_SCARRED_WEAR, CS2_MAX_CHARM_DETACHMENT_CHARGES, CS2_MAX_FACTORY_NEW_WEAR, CS2_MAX_FIELD_TESTED_WEAR, CS2_MAX_GRAFFITI_CHARGES, CS2_MAX_KEYCHAINS, CS2_MAX_KEYCHAIN_SEED, CS2_MAX_MINIMAL_WEAR_WEAR, CS2_MAX_PATCHES, CS2_MAX_SEED, CS2_MAX_STATTRAK, CS2_MAX_STICKERS, CS2_MAX_STICKER_ROTATION, CS2_MAX_STICKER_WEAR, CS2_MAX_WEAR, CS2_MAX_WELL_WORN_WEAR, CS2_MIDTIER_LOADOUT_CATEGORIES, CS2_MIN_BATTLE_SCARRED_WEAR, CS2_MIN_CHARGES, CS2_MIN_FACTORY_NEW_WEAR, CS2_MIN_FIELD_TESTED_WEAR, CS2_MIN_INVENTORY_VERSION, CS2_MIN_KEYCHAIN_SEED, CS2_MIN_MINIMAL_WEAR_WEAR, CS2_MIN_SEED, CS2_MIN_STATTRAK, CS2_MIN_STICKER_ROTATION, CS2_MIN_STICKER_WEAR, CS2_MIN_WEAR, CS2_MIN_WELL_WORN_WEAR, CS2_MIRAGE_MAP, CS2_MISC_LOADOUT_CATEGORIES, CS2_NAMETAGGABLE_ITEMS, CS2_NAMETAG_RE, CS2_NAMETAG_TOOL_DEFINITION_INDEX, CS2_NUKE_MAP, CS2_OVERPASS_MAP, CS2_PAINTABLE_ITEMS, CS2_PATCHABLE_ITEMS, CS2_RARITIES, CS2_RARITY_COLOR_DEFAULT, CS2_RARITY_ORDER, CS2_RIFLE_LOADOUT_CATEGORIES, CS2_SEEDABLE_ITEMS, CS2_SNIPER_RIFLE_MODEL_KEYS, CS2_STATTRAKABLE_ITEMS, CS2_STATTRAK_ODD, CS2_STATTRAK_SWAP_TOOL_DEFINITION_INDEX, CS2_STICKERABLE_ITEMS, CS2_STICKER_OFFSET_FACTOR, CS2_STICKER_ROTATION_STEP, CS2_STICKER_SCRAPE_FACTOR, CS2_STICKER_SLAB_TOOL_DEFINITION_INDEX, CS2_STICKER_WEAR_FACTOR, CS2_STORAGE_UNIT_TOOL_DEFINITION_INDEX, CS2_TEAMS_BOTH, CS2_TEAMS_CT, CS2_TEAMS_T, CS2_TRAIN_MAP, CS2_VERTIGO_MAP, CS2_WEAR_FACTOR, EnumValues, Interface, MapValue, RecordValue, assert, assertAddable, assertInventoryItem, assertKeychains, assertPatches, assertStickers, checkAddable, checkAttachable, checkInventoryItem, checkKeychains, checkPatches, checkStickerSchema, checkStickers, checkStorage, clamp, compare, countDecimals, decodeInventoryData, ensure, fail, float, getDropReason, getMapnameName, getNextStickerSchema, getNextUid, getTimestamp, isFactorPrecise, isNotUndefined, migrations, randomBoolean, randomFloat, randomInt, reconcileInventoryItems, repairInventoryItem, roundToFactor, safe, snapStickerRotation, stickerMapToArray, toStickerMap, toggleCS2Team, truncateToFactor, validateStickerRotation };
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{CS2ContainerType as e,CS2ItemTeam as t,CS2ItemType as n,CS2ItemWear as r,CS2StatTrakMode as i}from"./economy-types.mjs";import{assert as a,clamp as o,compare as s,countDecimals as c,ensure as l,fail as u,float as d,isFactorPrecise as f,isNotUndefined as p,roundToFactor as m,safe as h,truncateToFactor as g}from"./utils.mjs";import{CS2Team as _,toggleCS2Team as v}from"./teams.mjs";import{CS2_CHARM_DETACHMENT_PACK_CHARGES as y,CS2_CHARM_DETACHMENT_PACK_TOOL_DEFINITION_INDEX as b,CS2_CHARM_DETACHMENT_TOOL_DEFINITION_INDEX as x,CS2_CONTAINER_ITEMS as S,CS2_CONTRACT_TOOL_DEFINITION_INDEX as C,CS2_DEFAULT_MAX_WEAR as w,CS2_DEFAULT_MIN_WEAR as T,CS2_DISPLAY_ITEMS as E,CS2_EQUIPMENT_ITEMS as D,CS2_FALLBACK_PREVIEW_SEED as O,CS2_GRAPHIC_ART_ITEMS as k,CS2_KEYCHAINABLE_ITEMS as A,CS2_KEYCHAIN_POSITION_FACTOR as j,CS2_MACHINEGUN_MODEL_KEYS as M,CS2_MAX_BATTLE_SCARRED_WEAR as N,CS2_MAX_CHARM_DETACHMENT_CHARGES as P,CS2_MAX_FACTORY_NEW_WEAR as F,CS2_MAX_FIELD_TESTED_WEAR as I,CS2_MAX_GRAFFITI_CHARGES as L,CS2_MAX_KEYCHAINS as R,CS2_MAX_KEYCHAIN_SEED as z,CS2_MAX_MINIMAL_WEAR_WEAR as B,CS2_MAX_PATCHES as V,CS2_MAX_SEED as H,CS2_MAX_STATTRAK as U,CS2_MAX_STICKERS as W,CS2_MAX_STICKER_ROTATION as G,CS2_MAX_STICKER_WEAR as K,CS2_MAX_WEAR as q,CS2_MAX_WELL_WORN_WEAR as J,CS2_MIDTIER_LOADOUT_CATEGORIES as Y,CS2_MIN_BATTLE_SCARRED_WEAR as X,CS2_MIN_CHARGES as Z,CS2_MIN_FACTORY_NEW_WEAR as Q,CS2_MIN_FIELD_TESTED_WEAR as $,CS2_MIN_KEYCHAIN_SEED as ee,CS2_MIN_MINIMAL_WEAR_WEAR as te,CS2_MIN_SEED as ne,CS2_MIN_STATTRAK as re,CS2_MIN_STICKER_ROTATION as ie,CS2_MIN_STICKER_WEAR as ae,CS2_MIN_WEAR as oe,CS2_MIN_WELL_WORN_WEAR as se,CS2_MISC_LOADOUT_CATEGORIES as ce,CS2_NAMETAGGABLE_ITEMS as le,CS2_NAMETAG_RE as ue,CS2_NAMETAG_TOOL_DEFINITION_INDEX as de,CS2_PAINTABLE_ITEMS as fe,CS2_PATCHABLE_ITEMS as pe,CS2_RIFLE_LOADOUT_CATEGORIES as me,CS2_SEEDABLE_ITEMS as he,CS2_SNIPER_RIFLE_MODEL_KEYS as ge,CS2_STATTRAKABLE_ITEMS as _e,CS2_STATTRAK_SWAP_TOOL_DEFINITION_INDEX as ve,CS2_STICKERABLE_ITEMS as ye,CS2_STICKER_OFFSET_FACTOR as be,CS2_STICKER_ROTATION_STEP as xe,CS2_STICKER_SCRAPE_FACTOR as Se,CS2_STICKER_WEAR_FACTOR as Ce,CS2_STORAGE_UNIT_TOOL_DEFINITION_INDEX as we,CS2_TEAMS_BOTH as Te,CS2_TEAMS_CT as Ee,CS2_TEAMS_T as De,CS2_WEAR_FACTOR as Oe}from"./economy-constants.mjs";import{CS2Rarity as ke,CS2RarityColor as Ae,CS2RarityColorName as je,CS2RarityColorOrder as Me,CS2RaritySoundName as Ne,CS2_BASE_ODD as Pe,CS2_RARITIES as Fe,CS2_RARITY_COLOR_DEFAULT as Ie,CS2_RARITY_ORDER as Le,CS2_STATTRAK_ODD as Re,randomBoolean as ze,randomFloat as Be,randomInt as Ve}from"./economy-container.mjs";import{CS2Economy as He,CS2EconomyInstance as Ue,CS2EconomyItem as We}from"./economy.mjs";import{CS2_INVENTORY_VERSION as Ge,CS2_MIN_INVENTORY_VERSION as Ke,migrations as qe}from"./inventory-migrations/index.mjs";import{CS2InventoryDecodeError as Je,CS2InventoryError as Ye,CS2InventoryMigrationError as Xe,CS2InventoryVersionError as Ze,decodeInventoryData as Qe}from"./inventory-format.mjs";import{CS2Inventory as $e,CS2InventoryItem as et,CS2_INVENTORY_EQUIPPABLE_ITEMS as tt,CS2_INVENTORY_TIMESTAMP as nt,getNextUid as rt,getTimestamp as it,stickerMapToArray as at,toStickerMap as ot}from"./inventory.mjs";import{CS2_INVENTORY_RULES as st,assertAddable as ct,assertInventoryItem as lt,assertKeychains as ut,assertPatches as dt,assertStickers as ft,checkAddable as pt,checkAttachable as mt,checkInventoryItem as ht,checkKeychains as gt,checkPatches as _t,checkStickerSchema as vt,checkStickers as yt,checkStorage as bt,getDropReason as xt,getNextStickerSchema as St,reconcileInventoryItems as Ct,repairInventoryItem as wt,snapStickerRotation as Tt,validateStickerRotation as Et}from"./inventory-rules.mjs";import{CS2_ITEMS as Dt}from"./items.mjs";import{CS2KeyValues as Ot}from"./keyvalues.mjs";import{CS2KeyValues3 as kt}from"./keyvalues3.mjs";import{CS2_ALL_MAPS as At,CS2_ANCIENT_MAP as jt,CS2_ANUBIS_MAP as Mt,CS2_CACHE_MAP as Nt,CS2_DUST2_MAP as Pt,CS2_INFERNO_MAP as Ft,CS2_MIRAGE_MAP as It,CS2_NUKE_MAP as Lt,CS2_OVERPASS_MAP as Rt,CS2_TRAIN_MAP as zt,CS2_VERTIGO_MAP as Bt,getMapnameName as Vt}from"./maps.mjs";import{CS2Veto as Ht,CS2VetoAction as Ut,CS2VetoType as Wt}from"./veto.mjs";export{e as CS2ContainerType,He as CS2Economy,Ue as CS2EconomyInstance,We as CS2EconomyItem,$e as CS2Inventory,Je as CS2InventoryDecodeError,Ye as CS2InventoryError,et as CS2InventoryItem,Xe as CS2InventoryMigrationError,Ze as CS2InventoryVersionError,t as CS2ItemTeam,n as CS2ItemType,r as CS2ItemWear,Ot as CS2KeyValues,kt as CS2KeyValues3,ke as CS2Rarity,Ae as CS2RarityColor,je as CS2RarityColorName,Me as CS2RarityColorOrder,Ne as CS2RaritySoundName,i as CS2StatTrakMode,_ as CS2Team,Ht as CS2Veto,Ut as CS2VetoAction,Wt as CS2VetoType,At as CS2_ALL_MAPS,jt as CS2_ANCIENT_MAP,Mt as CS2_ANUBIS_MAP,Pe as CS2_BASE_ODD,Nt as CS2_CACHE_MAP,y as CS2_CHARM_DETACHMENT_PACK_CHARGES,b as CS2_CHARM_DETACHMENT_PACK_TOOL_DEFINITION_INDEX,x as CS2_CHARM_DETACHMENT_TOOL_DEFINITION_INDEX,S as CS2_CONTAINER_ITEMS,C as CS2_CONTRACT_TOOL_DEFINITION_INDEX,w as CS2_DEFAULT_MAX_WEAR,T as CS2_DEFAULT_MIN_WEAR,E as CS2_DISPLAY_ITEMS,Pt as CS2_DUST2_MAP,D as CS2_EQUIPMENT_ITEMS,O as CS2_FALLBACK_PREVIEW_SEED,k as CS2_GRAPHIC_ART_ITEMS,Ft as CS2_INFERNO_MAP,tt as CS2_INVENTORY_EQUIPPABLE_ITEMS,st as CS2_INVENTORY_RULES,nt as CS2_INVENTORY_TIMESTAMP,Ge as CS2_INVENTORY_VERSION,Dt as CS2_ITEMS,A as CS2_KEYCHAINABLE_ITEMS,j as CS2_KEYCHAIN_POSITION_FACTOR,M as CS2_MACHINEGUN_MODEL_KEYS,N as CS2_MAX_BATTLE_SCARRED_WEAR,P as CS2_MAX_CHARM_DETACHMENT_CHARGES,F as CS2_MAX_FACTORY_NEW_WEAR,I as CS2_MAX_FIELD_TESTED_WEAR,L as CS2_MAX_GRAFFITI_CHARGES,R as CS2_MAX_KEYCHAINS,z as CS2_MAX_KEYCHAIN_SEED,B as CS2_MAX_MINIMAL_WEAR_WEAR,V as CS2_MAX_PATCHES,H as CS2_MAX_SEED,U as CS2_MAX_STATTRAK,W as CS2_MAX_STICKERS,G as CS2_MAX_STICKER_ROTATION,K as CS2_MAX_STICKER_WEAR,q as CS2_MAX_WEAR,J as CS2_MAX_WELL_WORN_WEAR,Y as CS2_MIDTIER_LOADOUT_CATEGORIES,X as CS2_MIN_BATTLE_SCARRED_WEAR,Z as CS2_MIN_CHARGES,Q as CS2_MIN_FACTORY_NEW_WEAR,$ as CS2_MIN_FIELD_TESTED_WEAR,Ke as CS2_MIN_INVENTORY_VERSION,ee as CS2_MIN_KEYCHAIN_SEED,te as CS2_MIN_MINIMAL_WEAR_WEAR,ne as CS2_MIN_SEED,re as CS2_MIN_STATTRAK,ie as CS2_MIN_STICKER_ROTATION,ae as CS2_MIN_STICKER_WEAR,oe as CS2_MIN_WEAR,se as CS2_MIN_WELL_WORN_WEAR,It as CS2_MIRAGE_MAP,ce as CS2_MISC_LOADOUT_CATEGORIES,le as CS2_NAMETAGGABLE_ITEMS,ue as CS2_NAMETAG_RE,de as CS2_NAMETAG_TOOL_DEFINITION_INDEX,Lt as CS2_NUKE_MAP,Rt as CS2_OVERPASS_MAP,fe as CS2_PAINTABLE_ITEMS,pe as CS2_PATCHABLE_ITEMS,Fe as CS2_RARITIES,Ie as CS2_RARITY_COLOR_DEFAULT,Le as CS2_RARITY_ORDER,me as CS2_RIFLE_LOADOUT_CATEGORIES,he as CS2_SEEDABLE_ITEMS,ge as CS2_SNIPER_RIFLE_MODEL_KEYS,_e as CS2_STATTRAKABLE_ITEMS,Re as CS2_STATTRAK_ODD,ve as CS2_STATTRAK_SWAP_TOOL_DEFINITION_INDEX,ye as CS2_STICKERABLE_ITEMS,be as CS2_STICKER_OFFSET_FACTOR,xe as CS2_STICKER_ROTATION_STEP,Se as CS2_STICKER_SCRAPE_FACTOR,Ce as CS2_STICKER_WEAR_FACTOR,we as CS2_STORAGE_UNIT_TOOL_DEFINITION_INDEX,Te as CS2_TEAMS_BOTH,Ee as CS2_TEAMS_CT,De as CS2_TEAMS_T,zt as CS2_TRAIN_MAP,Bt as CS2_VERTIGO_MAP,Oe as CS2_WEAR_FACTOR,a as assert,ct as assertAddable,lt as assertInventoryItem,ut as assertKeychains,dt as assertPatches,ft as assertStickers,pt as checkAddable,mt as checkAttachable,ht as checkInventoryItem,gt as checkKeychains,_t as checkPatches,vt as checkStickerSchema,yt as checkStickers,bt as checkStorage,o as clamp,s as compare,c as countDecimals,Qe as decodeInventoryData,l as ensure,u as fail,d as float,xt as getDropReason,Vt as getMapnameName,St as getNextStickerSchema,rt as getNextUid,it as getTimestamp,f as isFactorPrecise,p as isNotUndefined,qe as migrations,ze as randomBoolean,Be as randomFloat,Ve as randomInt,Ct as reconcileInventoryItems,wt as repairInventoryItem,m as roundToFactor,h as safe,Tt as snapStickerRotation,at as stickerMapToArray,ot as toStickerMap,v as toggleCS2Team,g as truncateToFactor,Et as validateStickerRotation};
1
+ import{CS2ContainerType as e,CS2ItemTeam as t,CS2ItemType as n,CS2ItemWear as r,CS2StatTrakMode as i}from"./economy-types.mjs";import{assert as a,clamp as o,compare as s,countDecimals as c,ensure as l,fail as u,float as d,isFactorPrecise as f,isNotUndefined as p,roundToFactor as m,safe as h,truncateToFactor as g}from"./utils.mjs";import{CS2Team as _,toggleCS2Team as v}from"./teams.mjs";import{CS2_CHARM_DETACHMENT_PACK_CHARGES as y,CS2_CHARM_DETACHMENT_PACK_TOOL_DEFINITION_INDEX as b,CS2_CHARM_DETACHMENT_TOOL_DEFINITION_INDEX as x,CS2_CONTAINER_ITEMS as S,CS2_CONTRACT_TOOL_DEFINITION_INDEX as C,CS2_DEFAULT_MAX_WEAR as w,CS2_DEFAULT_MIN_WEAR as T,CS2_DISPLAY_ITEMS as E,CS2_EQUIPMENT_ITEMS as D,CS2_FALLBACK_PREVIEW_SEED as O,CS2_GRAPHIC_ART_ITEMS as k,CS2_KEYCHAINABLE_ITEMS as A,CS2_KEYCHAIN_POSITION_FACTOR as j,CS2_MACHINEGUN_MODEL_KEYS as M,CS2_MAX_BATTLE_SCARRED_WEAR as N,CS2_MAX_CHARM_DETACHMENT_CHARGES as P,CS2_MAX_FACTORY_NEW_WEAR as F,CS2_MAX_FIELD_TESTED_WEAR as I,CS2_MAX_GRAFFITI_CHARGES as L,CS2_MAX_KEYCHAINS as R,CS2_MAX_KEYCHAIN_SEED as z,CS2_MAX_MINIMAL_WEAR_WEAR as B,CS2_MAX_PATCHES as V,CS2_MAX_SEED as H,CS2_MAX_STATTRAK as U,CS2_MAX_STICKERS as W,CS2_MAX_STICKER_ROTATION as G,CS2_MAX_STICKER_WEAR as K,CS2_MAX_WEAR as q,CS2_MAX_WELL_WORN_WEAR as J,CS2_MIDTIER_LOADOUT_CATEGORIES as Y,CS2_MIN_BATTLE_SCARRED_WEAR as X,CS2_MIN_CHARGES as Z,CS2_MIN_FACTORY_NEW_WEAR as Q,CS2_MIN_FIELD_TESTED_WEAR as $,CS2_MIN_KEYCHAIN_SEED as ee,CS2_MIN_MINIMAL_WEAR_WEAR as te,CS2_MIN_SEED as ne,CS2_MIN_STATTRAK as re,CS2_MIN_STICKER_ROTATION as ie,CS2_MIN_STICKER_WEAR as ae,CS2_MIN_WEAR as oe,CS2_MIN_WELL_WORN_WEAR as se,CS2_MISC_LOADOUT_CATEGORIES as ce,CS2_NAMETAGGABLE_ITEMS as le,CS2_NAMETAG_RE as ue,CS2_NAMETAG_TOOL_DEFINITION_INDEX as de,CS2_PAINTABLE_ITEMS as fe,CS2_PATCHABLE_ITEMS as pe,CS2_RIFLE_LOADOUT_CATEGORIES as me,CS2_SEEDABLE_ITEMS as he,CS2_SNIPER_RIFLE_MODEL_KEYS as ge,CS2_STATTRAKABLE_ITEMS as _e,CS2_STATTRAK_SWAP_TOOL_DEFINITION_INDEX as ve,CS2_STICKERABLE_ITEMS as ye,CS2_STICKER_OFFSET_FACTOR as be,CS2_STICKER_ROTATION_STEP as xe,CS2_STICKER_SCRAPE_FACTOR as Se,CS2_STICKER_SLAB_TOOL_DEFINITION_INDEX as Ce,CS2_STICKER_WEAR_FACTOR as we,CS2_STORAGE_UNIT_TOOL_DEFINITION_INDEX as Te,CS2_TEAMS_BOTH as Ee,CS2_TEAMS_CT as De,CS2_TEAMS_T as Oe,CS2_WEAR_FACTOR as ke}from"./economy-constants.mjs";import{CS2Rarity as Ae,CS2RarityColor as je,CS2RarityColorName as Me,CS2RarityColorOrder as Ne,CS2RaritySoundName as Pe,CS2_BASE_ODD as Fe,CS2_RARITIES as Ie,CS2_RARITY_COLOR_DEFAULT as Le,CS2_RARITY_ORDER as Re,CS2_STATTRAK_ODD as ze,randomBoolean as Be,randomFloat as Ve,randomInt as He}from"./economy-container.mjs";import{CS2Economy as Ue,CS2EconomyInstance as We,CS2EconomyItem as Ge}from"./economy.mjs";import{CS2_INVENTORY_VERSION as Ke,CS2_MIN_INVENTORY_VERSION as qe,migrations as Je}from"./inventory-migrations/index.mjs";import{CS2InventoryDecodeError as Ye,CS2InventoryError as Xe,CS2InventoryMigrationError as Ze,CS2InventoryVersionError as Qe,decodeInventoryData as $e}from"./inventory-format.mjs";import{CS2Inventory as et,CS2InventoryItem as tt,CS2_INVENTORY_EQUIPPABLE_ITEMS as nt,CS2_INVENTORY_TIMESTAMP as rt,getNextUid as it,getTimestamp as at,stickerMapToArray as ot,toStickerMap as st}from"./inventory.mjs";import{CS2_INVENTORY_RULES as ct,assertAddable as lt,assertInventoryItem as ut,assertKeychains as dt,assertPatches as ft,assertStickers as pt,checkAddable as mt,checkAttachable as ht,checkInventoryItem as gt,checkKeychains as _t,checkPatches as vt,checkStickerSchema as yt,checkStickers as bt,checkStorage as xt,getDropReason as St,getNextStickerSchema as Ct,reconcileInventoryItems as wt,repairInventoryItem as Tt,snapStickerRotation as Et,validateStickerRotation as Dt}from"./inventory-rules.mjs";import{CS2_ITEMS as Ot}from"./items.mjs";import{CS2KeyValues as kt}from"./keyvalues.mjs";import{CS2KeyValues3 as At}from"./keyvalues3.mjs";import{CS2_ALL_MAPS as jt,CS2_ANCIENT_MAP as Mt,CS2_ANUBIS_MAP as Nt,CS2_CACHE_MAP as Pt,CS2_DUST2_MAP as Ft,CS2_INFERNO_MAP as It,CS2_MIRAGE_MAP as Lt,CS2_NUKE_MAP as Rt,CS2_OVERPASS_MAP as zt,CS2_TRAIN_MAP as Bt,CS2_VERTIGO_MAP as Vt,getMapnameName as Ht}from"./maps.mjs";import{CS2Veto as Ut,CS2VetoAction as Wt,CS2VetoType as Gt}from"./veto.mjs";export{e as CS2ContainerType,Ue as CS2Economy,We as CS2EconomyInstance,Ge as CS2EconomyItem,et as CS2Inventory,Ye as CS2InventoryDecodeError,Xe as CS2InventoryError,tt as CS2InventoryItem,Ze as CS2InventoryMigrationError,Qe as CS2InventoryVersionError,t as CS2ItemTeam,n as CS2ItemType,r as CS2ItemWear,kt as CS2KeyValues,At as CS2KeyValues3,Ae as CS2Rarity,je as CS2RarityColor,Me as CS2RarityColorName,Ne as CS2RarityColorOrder,Pe as CS2RaritySoundName,i as CS2StatTrakMode,_ as CS2Team,Ut as CS2Veto,Wt as CS2VetoAction,Gt as CS2VetoType,jt as CS2_ALL_MAPS,Mt as CS2_ANCIENT_MAP,Nt as CS2_ANUBIS_MAP,Fe as CS2_BASE_ODD,Pt as CS2_CACHE_MAP,y as CS2_CHARM_DETACHMENT_PACK_CHARGES,b as CS2_CHARM_DETACHMENT_PACK_TOOL_DEFINITION_INDEX,x as CS2_CHARM_DETACHMENT_TOOL_DEFINITION_INDEX,S as CS2_CONTAINER_ITEMS,C as CS2_CONTRACT_TOOL_DEFINITION_INDEX,w as CS2_DEFAULT_MAX_WEAR,T as CS2_DEFAULT_MIN_WEAR,E as CS2_DISPLAY_ITEMS,Ft as CS2_DUST2_MAP,D as CS2_EQUIPMENT_ITEMS,O as CS2_FALLBACK_PREVIEW_SEED,k as CS2_GRAPHIC_ART_ITEMS,It as CS2_INFERNO_MAP,nt as CS2_INVENTORY_EQUIPPABLE_ITEMS,ct as CS2_INVENTORY_RULES,rt as CS2_INVENTORY_TIMESTAMP,Ke as CS2_INVENTORY_VERSION,Ot as CS2_ITEMS,A as CS2_KEYCHAINABLE_ITEMS,j as CS2_KEYCHAIN_POSITION_FACTOR,M as CS2_MACHINEGUN_MODEL_KEYS,N as CS2_MAX_BATTLE_SCARRED_WEAR,P as CS2_MAX_CHARM_DETACHMENT_CHARGES,F as CS2_MAX_FACTORY_NEW_WEAR,I as CS2_MAX_FIELD_TESTED_WEAR,L as CS2_MAX_GRAFFITI_CHARGES,R as CS2_MAX_KEYCHAINS,z as CS2_MAX_KEYCHAIN_SEED,B as CS2_MAX_MINIMAL_WEAR_WEAR,V as CS2_MAX_PATCHES,H as CS2_MAX_SEED,U as CS2_MAX_STATTRAK,W as CS2_MAX_STICKERS,G as CS2_MAX_STICKER_ROTATION,K as CS2_MAX_STICKER_WEAR,q as CS2_MAX_WEAR,J as CS2_MAX_WELL_WORN_WEAR,Y as CS2_MIDTIER_LOADOUT_CATEGORIES,X as CS2_MIN_BATTLE_SCARRED_WEAR,Z as CS2_MIN_CHARGES,Q as CS2_MIN_FACTORY_NEW_WEAR,$ as CS2_MIN_FIELD_TESTED_WEAR,qe as CS2_MIN_INVENTORY_VERSION,ee as CS2_MIN_KEYCHAIN_SEED,te as CS2_MIN_MINIMAL_WEAR_WEAR,ne as CS2_MIN_SEED,re as CS2_MIN_STATTRAK,ie as CS2_MIN_STICKER_ROTATION,ae as CS2_MIN_STICKER_WEAR,oe as CS2_MIN_WEAR,se as CS2_MIN_WELL_WORN_WEAR,Lt as CS2_MIRAGE_MAP,ce as CS2_MISC_LOADOUT_CATEGORIES,le as CS2_NAMETAGGABLE_ITEMS,ue as CS2_NAMETAG_RE,de as CS2_NAMETAG_TOOL_DEFINITION_INDEX,Rt as CS2_NUKE_MAP,zt as CS2_OVERPASS_MAP,fe as CS2_PAINTABLE_ITEMS,pe as CS2_PATCHABLE_ITEMS,Ie as CS2_RARITIES,Le as CS2_RARITY_COLOR_DEFAULT,Re as CS2_RARITY_ORDER,me as CS2_RIFLE_LOADOUT_CATEGORIES,he as CS2_SEEDABLE_ITEMS,ge as CS2_SNIPER_RIFLE_MODEL_KEYS,_e as CS2_STATTRAKABLE_ITEMS,ze as CS2_STATTRAK_ODD,ve as CS2_STATTRAK_SWAP_TOOL_DEFINITION_INDEX,ye as CS2_STICKERABLE_ITEMS,be as CS2_STICKER_OFFSET_FACTOR,xe as CS2_STICKER_ROTATION_STEP,Se as CS2_STICKER_SCRAPE_FACTOR,Ce as CS2_STICKER_SLAB_TOOL_DEFINITION_INDEX,we as CS2_STICKER_WEAR_FACTOR,Te as CS2_STORAGE_UNIT_TOOL_DEFINITION_INDEX,Ee as CS2_TEAMS_BOTH,De as CS2_TEAMS_CT,Oe as CS2_TEAMS_T,Bt as CS2_TRAIN_MAP,Vt as CS2_VERTIGO_MAP,ke as CS2_WEAR_FACTOR,a as assert,lt as assertAddable,ut as assertInventoryItem,dt as assertKeychains,ft as assertPatches,pt as assertStickers,mt as checkAddable,ht as checkAttachable,gt as checkInventoryItem,_t as checkKeychains,vt as checkPatches,yt as checkStickerSchema,bt as checkStickers,xt as checkStorage,o as clamp,s as compare,c as countDecimals,$e as decodeInventoryData,l as ensure,u as fail,d as float,St as getDropReason,Ht as getMapnameName,Ct as getNextStickerSchema,it as getNextUid,at as getTimestamp,f as isFactorPrecise,p as isNotUndefined,Je as migrations,Be as randomBoolean,Ve as randomFloat,He as randomInt,wt as reconcileInventoryItems,Tt as repairInventoryItem,m as roundToFactor,h as safe,Et as snapStickerRotation,ot as stickerMapToArray,st as toStickerMap,v as toggleCS2Team,g as truncateToFactor,Dt as validateStickerRotation};
@@ -58,6 +58,8 @@ declare class CS2Inventory {
58
58
  applyItemKeychain(targetUid: number, keychainUid: number, attributes?: Omit<RecordValue<CS2BaseInventoryItem["keychains"]>, "id" | "seed">): this;
59
59
  removeItemKeychain(targetUid: number, slot: number): this;
60
60
  editItemKeychain(targetUid: number, slot: number, patch: Partial<Omit<RecordValue<CS2BaseInventoryItem["keychains"]>, "id" | "seed">>): this;
61
+ sealStickerSlab(slabUid: number, stickerUid: number): this;
62
+ unsealStickerSlab(displayCaseUid: number): this;
61
63
  applyItemPatch(targetUid: number, patchUid: number, slot: number): this;
62
64
  removeItemPatch(targetUid: number, slot: number): this;
63
65
  incrementItemStatTrak(targetUid: number): this;
@@ -1 +1 @@
1
- import{CS2ItemType as e}from"./economy-types.mjs";import{assert as t,ensure as n,roundToFactor as r}from"./utils.mjs";import{CS2Team as i}from"./teams.mjs";import{CS2_STICKER_SCRAPE_FACTOR as a,CS2_STICKER_WEAR_FACTOR as o}from"./economy-constants.mjs";import{CS2Economy as s,CS2EconomyItem as c}from"./economy.mjs";import{CS2_INVENTORY_VERSION as l}from"./inventory-migrations/index.mjs";import{decodeInventoryData as u}from"./inventory-format.mjs";import{assertInventoryItem as d,assertKeychains as f,assertStickers as p,checkStickerSchema as m,getDropReason as h,getNextStickerSchema as g,reconcileInventoryItems as _,repairInventoryItem as v}from"./inventory-rules.mjs";const y=1707696138408,b=[e.Agent,e.Collectible,e.Gloves,e.Graffiti,e.Melee,e.MusicKit,e.Weapon];function x(){return Math.ceil((Date.now()-y)/1e3)}function S(e){let t=0;for(;;){if(!e.has(t))return t;t++}}function C(e){return E.stickersToArray(e===void 0?void 0:Object.fromEntries(e))}function w(e){return e===void 0?void 0:new Map(Object.entries(e).map(([e,t])=>[parseInt(e,10),t]))}var T=class e{economy;items;loadChanges;options;static load(t,r={}){let i=r.economy??s,{data:a,migratedFrom:o}=u(t,i),c=new e({...r,data:a,economy:i});return n(c.loadChanges).migratedFrom=o,c}constructor({economy:e,data:t,dropEmptyDefaultItems:n,maxItems:r,storageUnitMaxItems:i}={}){this.economy=e??s,this.options={dropEmptyDefaultItems:n??!1,maxItems:r??256,storageUnitMaxItems:i??32};let a={migratedFrom:void 0,dropped:[],repairedUids:[]};this.items=t===void 0?new Map:this.toInventoryItems(structuredClone(t.items),a),this.loadChanges=t===void 0?void 0:a}toInventoryItems(e,t){let n=new Map(Object.entries(e).map(([e,t])=>[parseInt(e,10),JSON.stringify(t)]));for(let[n,r]of Object.entries(e)){let i=parseInt(n,10);v(this.economy,r,{dropped:t.dropped,storageUid:i})||(t.dropped.push({uid:i,id:r.id,reason:h(this.economy,r.id)}),delete e[i])}return t.dropped.push(..._(this.economy,e,this.options)),new Map(Object.entries(e).map(([e,r])=>{let i=parseInt(e,10);return JSON.stringify(r)!==n.get(i)&&t.repairedUids.push(i),[i,new E(this,i,r,this.economy.getById(r.id))]}))}toBaseInventoryItems(e){return Object.fromEntries(Array.from(e).map(([e,t])=>[e,t.asBase()]))}isFull(){return this.items.size>=this.options.maxItems}isStorageUnitFull(e){return this.get(e).storage?.size===this.options.storageUnitMaxItems}isStorageUnitFilled(e){return this.getStorageUnitSize(e)>0}canDepositToStorageUnit(e,t=1){return this.get(e).nameTag!==void 0&&this.getStorageUnitSize(e)+t<=this.options.storageUnitMaxItems}canRetrieveFromStorageUnit(e,t=1){return this.getStorageUnitSize(e)-t>=0&&this.size()+t<=this.options.maxItems}get(e){return n(this.items.get(e))}getAll(){return Array.from(this.items.values())}getAllAsBase(){return Object.values(this.toBaseInventoryItems(this.items))}getStorageUnitSize(e){return this.get(e).storage?.size??0}getStorageUnitItems(e){return Array.from(this.get(e).storage?.values()??[])}getCharmDetachmentCharges(){let e=this.findChargeableUid(this.economy.getCharmDetachment().id);return e===void 0?0:this.get(e).getCharges()}getData(){return{items:this.toBaseInventoryItems(this.items),version:l}}findChargeableUid(e){let t;for(let[n,r]of this.items)r.id===e&&(t===void 0||n<t)&&(t=n);return t}addCharges(e,n){t(e.hasCharges());let r=e.getMaximumCharges(),i=this.findChargeableUid(e.id);if(i!==void 0){let t=this.get(i);return t.charges=Math.min((t.charges??e.getDefaultCharges())+n,r),t.updatedAt=x(),this}t(!this.isFull());let a=S(this.items);return this.items.set(a,new E(this,a,{id:e.id,charges:Math.min(n,r),updatedAt:x()},e)),this}add(e){let n=this.economy.getById(e.id);if(t(!n.isStub()),t(e.charges===void 0),n.isCharmDetachment())return this.addCharges(n,1);t(!this.isFull());let r=S(this.items);return this.items.set(r,new E(this,r,Object.assign(e,{equipped:void 0,equippedCT:void 0,equippedT:void 0,updatedAt:x()}),n)),this}addInventoryItem(e){t(!this.isFull());let n=S(this.items);return e.equipped=void 0,e.equippedCT=void 0,e.equippedT=void 0,e.uid=n,e.updatedAt=x(),this.items.set(n,e),this}addWithNameTag(e,t,n){return this.get(e).expectNameTag(),this.economy.requireNameTag(n),this.items.delete(e),this.add({id:t,nameTag:n}),this}addWithSticker(e,t,n={}){let r=this.get(e).expectSticker(),{schema:i,x:a,y:o,rotation:s,wear:c}=n,l={0:{id:r.id,schema:i,x:a,y:o,rotation:s,wear:c}};return p(this.economy,l,this.economy.getById(t)),this.items.delete(e),this.add({id:t,stickers:l}),this}addWithKeychain(e,t,n={}){let r=this.get(e).expectKeychain(),{x:i,y:a,z:o}=n,s={0:{id:r.id,seed:r.seed,x:i,y:a,z:o}};return f(this.economy,s,this.economy.getById(t)),this.items.delete(e),this.add({id:t,keychains:s}),this}edit(e,n){let r=this.get(e);return t(n.id===void 0||n.id===r.id),t(n.charges===void 0||n.charges===r.charges),r.edit(n,{updatedAt:x()}),this}equip(e,n){let r=this.get(e);t(r.equipped===void 0),t(n!==i.CT||r.equippedCT===void 0),t(n!==i.T||r.equippedT===void 0),t(b.includes(r.type)),t(!r.isSealed()),t(n===void 0||r.teams?.includes(n)),t(n!==void 0||r.teams===void 0);for(let[t,a]of this.items)e===t?(a.equipped=n===void 0||void 0,a.equippedCT=n===i.CT||a.equippedCT,a.equippedT=n===i.T||a.equippedT):a.type===r.type&&(!r.isWeapon()||a.modelKey===r.modelKey)&&(a.equipped=n===void 0?void 0:a.equipped,a.equippedCT=n===i.CT?void 0:a.equippedCT,a.equippedT=n===i.T?void 0:a.equippedT);return this}unequip(e,t){let n=this.get(e);return n.equipped=t===void 0?void 0:n.equipped,n.equippedCT=t===i.CT?void 0:n.equippedCT,n.equippedT=t===i.T?void 0:n.equippedT,this}unlockContainer(e,t,n){let r=this.get(t);this.economy.expectUnlockedItem(r,e);let i=n===void 0?void 0:this.get(n);return this.economy.validateContainerAndKey(r,i),this.items.delete(t),n!==void 0&&this.items.delete(n),this.add({...e.attributes,id:e.id,updatedAt:x()}),this}unsealItem(e){let n=this.get(e);return t(n.isSealed()),n.charges=n.getDefaultCharges(),n.updatedAt=x(),this}unpackItem(e){return this.get(e).expectCharmDetachmentPack(),this.items.delete(e),this.addCharges(this.economy.getCharmDetachment(),3)}consumeItemCharges(e,n=1){let r=this.get(e);t(r.hasCharges()),t(!r.isSealed()),t(Number.isInteger(n)&&n>0);let i=r.getCharges()-n;return t(i>=0),i===0?(this.items.delete(e),this):(r.charges=i,r.updatedAt=x(),this)}renameItem(e,t,n){n=this.economy.trimNameTag(n),this.get(e).expectNameTag();let r=this.get(t);return this.economy.validateNameTag(n,r),r.nameTag=n,r.updatedAt=x(),this.items.delete(e),this}renameStorageUnit(e,t){let n=this.economy.trimNameTag(t),r=this.get(e);return r.expectStorageUnit(),this.economy.requireNameTag(n),r.nameTag=n,r.updatedAt=x(),this}depositToStorageUnit(e,n){let r=this.get(e);r.expectStorageUnit(),t(n.length>0),t(this.canDepositToStorageUnit(e,n.length));for(let e of n){let n=this.get(e);t(!n.isStorageUnit()),t(!n.isCharmDetachment()&&!n.isCharmDetachmentPack()),t(!n.hasCharges()||n.isSealed())}let i=r.storage??new Map;for(let e of n){let t=S(i);i.set(t,Object.assign(this.get(e),{equipped:void 0,equippedCT:void 0,equippedT:void 0,uid:t})),this.items.delete(e)}return r.storage=i,r.updatedAt=x(),this}retrieveFromStorageUnit(e,r){let i=this.get(e);i.expectStorageUnit();let a=i.storage;t(a!==void 0),t(r.length>0),t(this.canRetrieveFromStorageUnit(e,r.length));for(let e of r)t(a.has(e));for(let e of r){let t=n(a.get(e));this.addInventoryItem(t),a.delete(e)}return i.storage=a.size>0?a:void 0,i.updatedAt=x(),this}applyItemSticker(e,n,r={}){let i=this.get(e),a=this.get(n).expectSticker();t(i.hasStickers());let o=C(i.stickers);t(o.length<5);let{schema:s,x:c,y:l,rotation:u,wear:d}=r;o.push({id:a.id,schema:s??g(o,i.getStickerSchemaCount()),x:c,y:l,rotation:u,wear:d});let f=E.stickersFromArray(o);return p(this.economy,f,i),i.stickers=w(f),i.updatedAt=x(),this.items.delete(n),this}removeItemSticker(e,n){let r=this.get(e),i=C(r.stickers);return t(i[n]!==void 0),i.splice(n,1),r.stickers=w(E.stickersFromArray(i)),r.updatedAt=x(),this}moveItemSticker(e,r,i){let a=this.get(e),o=C(a.stickers),s=n(o[r]);return t(Number.isInteger(i)&&i>=0&&i<o.length),o.splice(r,1),o.splice(i,0,s),a.stickers=w(E.stickersFromArray(o)),a.updatedAt=x(),this}editItemSticker(e,n,r){let i=this.get(e),a=C(i.stickers);t(a[n]!==void 0),a[n]={...a[n],...r};let o=E.stickersFromArray(a);return p(this.economy,o,i),i.stickers=w(o),i.updatedAt=x(),this}scrapeItemSticker(e,i,s){let c=this.get(e),l=C(c.stickers),u=n(l[i]),d=u.wear??0,f;return s===void 0?f=r(d+a,o):(t(Number.isFinite(s)),t(s>d&&s<=1),f=r(s,o)),(s===void 0?f>1:f>=1)?l.splice(i,1):l[i]={...u,wear:f},c.stickers=w(E.stickersFromArray(l)),c.updatedAt=x(),this}applyItemKeychain(e,n,r={}){let i=this.get(e),a=this.get(n).expectKeychain();t(i.hasKeychains()),t(i.getKeychainsCount()<1);let o=0;for(;i.keychains?.has(o);)o++;let{x:s,y:c,z:l}=r,u={id:a.id,seed:a.seed,x:s,y:c,z:l},d={...Object.fromEntries(i.keychains??[]),[o]:u};return f(this.economy,d,i),(i.keychains??=new Map).set(o,u),i.updatedAt=x(),this.items.delete(n),this}removeItemKeychain(e,r){let i=this.get(e),a=n(i.keychains),o=n(a.get(r)),s=n(this.findChargeableUid(this.economy.getCharmDetachment().id));return t(!this.isFull()||this.get(s).getCharges()===1),this.consumeItemCharges(s),a.delete(r),a.size===0&&(i.keychains=void 0),i.updatedAt=x(),this.add({id:o.id,seed:o.seed}),this}editItemKeychain(e,t,r){let i=this.get(e),a=n(i.keychains),o={...n(a.get(t)),...r},s={...Object.fromEntries(a),[t]:o};return f(this.economy,s,i),a.set(t,o),i.updatedAt=x(),this}applyItemPatch(e,n,r){t(r>=0&&r<=4);let i=this.get(e).expectAgent(),a=this.get(n).expectPatch();return i.patches??=new Map,t(i.patches.get(r)===void 0),i.patches.set(r,a.id),i.updatedAt=x(),this.items.delete(n),this}removeItemPatch(e,n){let r=this.get(e);return t(r.patches!==void 0),t(r.patches.get(n)!==void 0),r.patches.delete(n),r.patches.size===0&&(r.patches=void 0),r.updatedAt=x(),this}incrementItemStatTrak(e){let n=this.get(e);return t(n.statTrak!==void 0),n.statTrak<999999&&(n.statTrak++,n.updatedAt=x()),this}swapItemsStatTrak(e,n,r){t(n!==r),this.get(e).expectStatTrakSwapTool();let i=this.get(n),a=this.get(r);t(i.statTrak!==void 0&&a.statTrak!==void 0),t(i.type===a.type),t(i.isMusicKit()||i.definitionIndex===a.definitionIndex);let o=i.statTrak;return i.statTrak=a.statTrak,i.updatedAt=x(),a.statTrak=o,a.updatedAt=x(),this.items.delete(e),this}remove(e){return this.items.delete(e),this}removeAll(){return this.items.clear(),this}setAll(e){return this.items=e,this}size(){return this.items.size}stringify(){return JSON.stringify(this.getData())}move(t={}){return new e({...this.options,economy:this.economy,...t}).setAll(this.items)}},E=class e extends c{inventory;uid;charges;containerId;equipped;equippedCT;equippedT;keychains;nameTag;patches;seed;statTrak;stickers;storage;updatedAt;wear;static stickersToArray(e,t){if(e===void 0)return[];let n=Object.entries(e).map(([e,t])=>[parseInt(e,10),t]).sort(([e],[t])=>e-t).slice(0,5),r=[];for(let[e,i]of n){let n=i.schema??e;t!==void 0&&!m(n,t)&&(n=g(r,t)),r.push({...i,schema:n})}return r}static stickersFromArray(e){if(e.length!==0)return Object.fromEntries(e.slice(0,5).map((e,t)=>[t,{id:e.id,schema:e.schema??t,wear:e.wear||void 0,rotation:e.rotation||void 0,x:e.x||void 0,y:e.y||void 0}]))}assign({keychains:t,patches:n,stickers:r,storage:i}){n!==void 0&&(this.patches=new Map(Object.entries(n).map(([e,t])=>[parseInt(e,10),t]))),r!==void 0&&(this.stickers=w(e.stickersFromArray(e.stickersToArray(r,this.getStickerSchemaCount())))),t!==void 0&&(this.keychains=new Map(Object.entries(t).map(([e,t])=>[parseInt(e,10),t]))),i!==void 0&&(this.storage=new Map(Object.entries(i).map(([t,n])=>{let r=parseInt(t,10);return[r,new e(this.inventory,r,n,this.economy.getById(n.id))]})))}constructor(e,t,n,{economy:r,item:i,language:a}){super(r,i,a),this.inventory=e,this.uid=t,d(this.economy,n),Object.assign(this,n),this.assign(n)}isSealed(){return this.hasCharges()&&this.charges===void 0}getStickersCount(){return this.stickers?.size??0}getStickerWear(e){return this.stickers?.get(e)?.wear??0}getKeychainsCount(){return this.keychains?.size??0}getKeychainSeed(e){return this.keychains?.get(e)?.seed??1}getPatchesCount(){return this.patches?.size??0}getCharges(){return this.charges??0}getWear(){return this.wear??this.wearMin??0}getImageUrl(e){return super.getImageUrl(e??this.getWear())}allStickers(){return C(this.stickers).map((e,t)=>[t,e])}allKeychains(){let e=[];for(let t=0;t<1;t++){let n=this.keychains?.get(t);e.push([t,n])}return e}allPatches(){let e=[];for(let t=0;t<5;t++){let n=this.patches?.get(t);e.push([t,n])}return e}someStickers(){return this.allStickers()}someKeychains(){return this.allKeychains().filter(e=>e[1]!==void 0)}somePatches(){return this.allPatches().filter(e=>e[1]!==void 0)}edit(...e){let t=this.asBase();for(let n of e)Object.assign(t,n);d(this.economy,t);for(let t of e)Object.assign(this,t),this.assign(t)}asBase(){return{charges:this.charges,containerId:this.containerId,equipped:this.equipped,equippedCT:this.equippedCT,equippedT:this.equippedT,id:this.id,keychains:this.keychains===void 0?void 0:Object.fromEntries(this.keychains),nameTag:this.nameTag,patches:this.patches===void 0?void 0:Object.fromEntries(this.patches),seed:this.seed,statTrak:this.statTrak,stickers:this.stickers===void 0?void 0:Object.fromEntries(this.stickers),storage:this.storage===void 0?void 0:Object.fromEntries(Array.from(this.storage).map(([e,t])=>[e,t.asBase()])),updatedAt:this.updatedAt,wear:this.wear}}};export{T as CS2Inventory,E as CS2InventoryItem,b as CS2_INVENTORY_EQUIPPABLE_ITEMS,y as CS2_INVENTORY_TIMESTAMP,S as getNextUid,x as getTimestamp,C as stickerMapToArray,w as toStickerMap};
1
+ import{CS2ItemType as e}from"./economy-types.mjs";import{assert as t,ensure as n,roundToFactor as r}from"./utils.mjs";import{CS2Team as i}from"./teams.mjs";import{CS2_STICKER_SCRAPE_FACTOR as a,CS2_STICKER_WEAR_FACTOR as o}from"./economy-constants.mjs";import{CS2Economy as s,CS2EconomyItem as c}from"./economy.mjs";import{CS2_INVENTORY_VERSION as l}from"./inventory-migrations/index.mjs";import{decodeInventoryData as u}from"./inventory-format.mjs";import{assertInventoryItem as d,assertKeychains as f,assertStickers as p,checkStickerSchema as m,getDropReason as h,getNextStickerSchema as g,reconcileInventoryItems as _,repairInventoryItem as v}from"./inventory-rules.mjs";const y=1707696138408,b=[e.Agent,e.Collectible,e.Gloves,e.Graffiti,e.Melee,e.MusicKit,e.Weapon];function x(){return Math.ceil((Date.now()-y)/1e3)}function S(e){let t=0;for(;;){if(!e.has(t))return t;t++}}function C(e){return E.stickersToArray(e===void 0?void 0:Object.fromEntries(e))}function w(e){return e===void 0?void 0:new Map(Object.entries(e).map(([e,t])=>[parseInt(e,10),t]))}var T=class e{economy;items;loadChanges;options;static load(t,r={}){let i=r.economy??s,{data:a,migratedFrom:o}=u(t,i),c=new e({...r,data:a,economy:i});return n(c.loadChanges).migratedFrom=o,c}constructor({economy:e,data:t,dropEmptyDefaultItems:n,maxItems:r,storageUnitMaxItems:i}={}){this.economy=e??s,this.options={dropEmptyDefaultItems:n??!1,maxItems:r??256,storageUnitMaxItems:i??32};let a={migratedFrom:void 0,dropped:[],repairedUids:[]};this.items=t===void 0?new Map:this.toInventoryItems(structuredClone(t.items),a),this.loadChanges=t===void 0?void 0:a}toInventoryItems(e,t){let n=new Map(Object.entries(e).map(([e,t])=>[parseInt(e,10),JSON.stringify(t)]));for(let[n,r]of Object.entries(e)){let i=parseInt(n,10);v(this.economy,r,{dropped:t.dropped,storageUid:i})||(t.dropped.push({uid:i,id:r.id,reason:h(this.economy,r.id)}),delete e[i])}return t.dropped.push(..._(this.economy,e,this.options)),new Map(Object.entries(e).map(([e,r])=>{let i=parseInt(e,10);return JSON.stringify(r)!==n.get(i)&&t.repairedUids.push(i),[i,new E(this,i,r,this.economy.getById(r.id))]}))}toBaseInventoryItems(e){return Object.fromEntries(Array.from(e).map(([e,t])=>[e,t.asBase()]))}isFull(){return this.items.size>=this.options.maxItems}isStorageUnitFull(e){return this.get(e).storage?.size===this.options.storageUnitMaxItems}isStorageUnitFilled(e){return this.getStorageUnitSize(e)>0}canDepositToStorageUnit(e,t=1){return this.get(e).nameTag!==void 0&&this.getStorageUnitSize(e)+t<=this.options.storageUnitMaxItems}canRetrieveFromStorageUnit(e,t=1){return this.getStorageUnitSize(e)-t>=0&&this.size()+t<=this.options.maxItems}get(e){return n(this.items.get(e))}getAll(){return Array.from(this.items.values())}getAllAsBase(){return Object.values(this.toBaseInventoryItems(this.items))}getStorageUnitSize(e){return this.get(e).storage?.size??0}getStorageUnitItems(e){return Array.from(this.get(e).storage?.values()??[])}getCharmDetachmentCharges(){let e=this.findChargeableUid(this.economy.getCharmDetachment().id);return e===void 0?0:this.get(e).getCharges()}getData(){return{items:this.toBaseInventoryItems(this.items),version:l}}findChargeableUid(e){let t;for(let[n,r]of this.items)r.id===e&&(t===void 0||n<t)&&(t=n);return t}addCharges(e,n){t(e.hasCharges());let r=e.getMaximumCharges(),i=this.findChargeableUid(e.id);if(i!==void 0){let t=this.get(i);return t.charges=Math.min((t.charges??e.getDefaultCharges())+n,r),t.updatedAt=x(),this}t(!this.isFull());let a=S(this.items);return this.items.set(a,new E(this,a,{id:e.id,charges:Math.min(n,r),updatedAt:x()},e)),this}add(e){let n=this.economy.getById(e.id);if(t(!n.isStub()),t(e.charges===void 0),n.isCharmDetachment())return this.addCharges(n,1);t(!this.isFull());let r=S(this.items);return this.items.set(r,new E(this,r,Object.assign(e,{equipped:void 0,equippedCT:void 0,equippedT:void 0,updatedAt:x()}),n)),this}addInventoryItem(e){t(!this.isFull());let n=S(this.items);return e.equipped=void 0,e.equippedCT=void 0,e.equippedT=void 0,e.uid=n,e.updatedAt=x(),this.items.set(n,e),this}addWithNameTag(e,t,n){return this.get(e).expectNameTag(),this.economy.requireNameTag(n),this.items.delete(e),this.add({id:t,nameTag:n}),this}addWithSticker(e,t,n={}){let r=this.get(e).expectSticker(),{schema:i,x:a,y:o,rotation:s,wear:c}=n,l={0:{id:r.id,schema:i,x:a,y:o,rotation:s,wear:c}};return p(this.economy,l,this.economy.getById(t)),this.items.delete(e),this.add({id:t,stickers:l}),this}addWithKeychain(e,t,n={}){let r=this.get(e).expectKeychain(),{x:i,y:a,z:o}=n,s={0:{id:r.id,seed:r.seed,x:i,y:a,z:o}};return f(this.economy,s,this.economy.getById(t)),this.items.delete(e),this.add({id:t,keychains:s}),this}edit(e,n){let r=this.get(e);return t(n.id===void 0||n.id===r.id),t(n.charges===void 0||n.charges===r.charges),r.edit(n,{updatedAt:x()}),this}equip(e,n){let r=this.get(e);t(r.equipped===void 0),t(n!==i.CT||r.equippedCT===void 0),t(n!==i.T||r.equippedT===void 0),t(b.includes(r.type)),t(!r.isSealed()),t(n===void 0||r.teams?.includes(n)),t(n!==void 0||r.teams===void 0);for(let[t,a]of this.items)e===t?(a.equipped=n===void 0||void 0,a.equippedCT=n===i.CT||a.equippedCT,a.equippedT=n===i.T||a.equippedT):a.type===r.type&&(!r.isWeapon()||a.modelKey===r.modelKey)&&(a.equipped=n===void 0?void 0:a.equipped,a.equippedCT=n===i.CT?void 0:a.equippedCT,a.equippedT=n===i.T?void 0:a.equippedT);return this}unequip(e,t){let n=this.get(e);return n.equipped=t===void 0?void 0:n.equipped,n.equippedCT=t===i.CT?void 0:n.equippedCT,n.equippedT=t===i.T?void 0:n.equippedT,this}unlockContainer(e,t,n){let r=this.get(t);this.economy.expectUnlockedItem(r,e);let i=n===void 0?void 0:this.get(n);return this.economy.validateContainerAndKey(r,i),this.items.delete(t),n!==void 0&&this.items.delete(n),this.add({...e.attributes,id:e.id,updatedAt:x()}),this}unsealItem(e){let n=this.get(e);return t(n.isSealed()),n.charges=n.getDefaultCharges(),n.updatedAt=x(),this}unpackItem(e){return this.get(e).expectCharmDetachmentPack(),this.items.delete(e),this.addCharges(this.economy.getCharmDetachment(),3)}consumeItemCharges(e,n=1){let r=this.get(e);t(r.hasCharges()),t(!r.isSealed()),t(Number.isInteger(n)&&n>0);let i=r.getCharges()-n;return t(i>=0),i===0?(this.items.delete(e),this):(r.charges=i,r.updatedAt=x(),this)}renameItem(e,t,n){n=this.economy.trimNameTag(n),this.get(e).expectNameTag();let r=this.get(t);return this.economy.validateNameTag(n,r),r.nameTag=n,r.updatedAt=x(),this.items.delete(e),this}renameStorageUnit(e,t){let n=this.economy.trimNameTag(t),r=this.get(e);return r.expectStorageUnit(),this.economy.requireNameTag(n),r.nameTag=n,r.updatedAt=x(),this}depositToStorageUnit(e,n){let r=this.get(e);r.expectStorageUnit(),t(n.length>0),t(this.canDepositToStorageUnit(e,n.length));for(let e of n){let n=this.get(e);t(!n.isStorageUnit()),t(!n.isCharmDetachment()&&!n.isCharmDetachmentPack()),t(!n.hasCharges()||n.isSealed())}let i=r.storage??new Map;for(let e of n){let t=S(i);i.set(t,Object.assign(this.get(e),{equipped:void 0,equippedCT:void 0,equippedT:void 0,uid:t})),this.items.delete(e)}return r.storage=i,r.updatedAt=x(),this}retrieveFromStorageUnit(e,r){let i=this.get(e);i.expectStorageUnit();let a=i.storage;t(a!==void 0),t(r.length>0),t(this.canRetrieveFromStorageUnit(e,r.length));for(let e of r)t(a.has(e));for(let e of r){let t=n(a.get(e));this.addInventoryItem(t),a.delete(e)}return i.storage=a.size>0?a:void 0,i.updatedAt=x(),this}applyItemSticker(e,n,r={}){let i=this.get(e),a=this.get(n).expectSticker();t(i.hasStickers());let o=C(i.stickers);t(o.length<5);let{schema:s,x:c,y:l,rotation:u,wear:d}=r;o.push({id:a.id,schema:s??g(o,i.getStickerSchemaCount()),x:c,y:l,rotation:u,wear:d});let f=E.stickersFromArray(o);return p(this.economy,f,i),i.stickers=w(f),i.updatedAt=x(),this.items.delete(n),this}removeItemSticker(e,n){let r=this.get(e),i=C(r.stickers);return t(i[n]!==void 0),i.splice(n,1),r.stickers=w(E.stickersFromArray(i)),r.updatedAt=x(),this}moveItemSticker(e,r,i){let a=this.get(e),o=C(a.stickers),s=n(o[r]);return t(Number.isInteger(i)&&i>=0&&i<o.length),o.splice(r,1),o.splice(i,0,s),a.stickers=w(E.stickersFromArray(o)),a.updatedAt=x(),this}editItemSticker(e,n,r){let i=this.get(e),a=C(i.stickers);t(a[n]!==void 0),a[n]={...a[n],...r};let o=E.stickersFromArray(a);return p(this.economy,o,i),i.stickers=w(o),i.updatedAt=x(),this}scrapeItemSticker(e,i,s){let c=this.get(e),l=C(c.stickers),u=n(l[i]),d=u.wear??0,f;return s===void 0?f=r(d+a,o):(t(Number.isFinite(s)),t(s>d&&s<=1),f=r(s,o)),(s===void 0?f>1:f>=1)?l.splice(i,1):l[i]={...u,wear:f},c.stickers=w(E.stickersFromArray(l)),c.updatedAt=x(),this}applyItemKeychain(e,n,r={}){let i=this.get(e),a=this.get(n).expectKeychain();t(i.hasKeychains()),t(i.getKeychainsCount()<1);let o=0;for(;i.keychains?.has(o);)o++;let{x:s,y:c,z:l}=r,u={id:a.id,seed:a.seed,x:s,y:c,z:l},d={...Object.fromEntries(i.keychains??[]),[o]:u};return f(this.economy,d,i),(i.keychains??=new Map).set(o,u),i.updatedAt=x(),this.items.delete(n),this}removeItemKeychain(e,r){let i=this.get(e),a=n(i.keychains),o=n(a.get(r)),s=n(this.findChargeableUid(this.economy.getCharmDetachment().id));return t(!this.isFull()||this.get(s).getCharges()===1),this.consumeItemCharges(s),a.delete(r),a.size===0&&(i.keychains=void 0),i.updatedAt=x(),this.add({id:o.id,seed:o.seed}),this}editItemKeychain(e,t,r){let i=this.get(e),a=n(i.keychains),o={...n(a.get(t)),...r},s={...Object.fromEntries(a),[t]:o};return f(this.economy,s,i),a.set(t,o),i.updatedAt=x(),this}sealStickerSlab(e,t){this.get(e).expectStickerSlab();let n=this.get(t).expectSticker().getDisplayCase();return this.items.delete(e),this.items.delete(t),this.add({id:n.id}),this}unsealStickerSlab(e){let t=this.get(e).expectStickerDisplayCase(),r=n(t.displayedStickerId);return this.items.delete(e),this.add({id:r}),this}applyItemPatch(e,n,r){t(r>=0&&r<=4);let i=this.get(e).expectAgent(),a=this.get(n).expectPatch();return i.patches??=new Map,t(i.patches.get(r)===void 0),i.patches.set(r,a.id),i.updatedAt=x(),this.items.delete(n),this}removeItemPatch(e,n){let r=this.get(e);return t(r.patches!==void 0),t(r.patches.get(n)!==void 0),r.patches.delete(n),r.patches.size===0&&(r.patches=void 0),r.updatedAt=x(),this}incrementItemStatTrak(e){let n=this.get(e);return t(n.statTrak!==void 0),n.statTrak<999999&&(n.statTrak++,n.updatedAt=x()),this}swapItemsStatTrak(e,n,r){t(n!==r),this.get(e).expectStatTrakSwapTool();let i=this.get(n),a=this.get(r);t(i.statTrak!==void 0&&a.statTrak!==void 0),t(i.type===a.type),t(i.isMusicKit()||i.definitionIndex===a.definitionIndex);let o=i.statTrak;return i.statTrak=a.statTrak,i.updatedAt=x(),a.statTrak=o,a.updatedAt=x(),this.items.delete(e),this}remove(e){return this.items.delete(e),this}removeAll(){return this.items.clear(),this}setAll(e){return this.items=e,this}size(){return this.items.size}stringify(){return JSON.stringify(this.getData())}move(t={}){return new e({...this.options,economy:this.economy,...t}).setAll(this.items)}},E=class e extends c{inventory;uid;charges;containerId;equipped;equippedCT;equippedT;keychains;nameTag;patches;seed;statTrak;stickers;storage;updatedAt;wear;static stickersToArray(e,t){if(e===void 0)return[];let n=Object.entries(e).map(([e,t])=>[parseInt(e,10),t]).sort(([e],[t])=>e-t).slice(0,5),r=[];for(let[e,i]of n){let n=i.schema??e;t!==void 0&&!m(n,t)&&(n=g(r,t)),r.push({...i,schema:n})}return r}static stickersFromArray(e){if(e.length!==0)return Object.fromEntries(e.slice(0,5).map((e,t)=>[t,{id:e.id,schema:e.schema??t,wear:e.wear||void 0,rotation:e.rotation||void 0,x:e.x||void 0,y:e.y||void 0}]))}assign({keychains:t,patches:n,stickers:r,storage:i}){n!==void 0&&(this.patches=new Map(Object.entries(n).map(([e,t])=>[parseInt(e,10),t]))),r!==void 0&&(this.stickers=w(e.stickersFromArray(e.stickersToArray(r,this.getStickerSchemaCount())))),t!==void 0&&(this.keychains=new Map(Object.entries(t).map(([e,t])=>[parseInt(e,10),t]))),i!==void 0&&(this.storage=new Map(Object.entries(i).map(([t,n])=>{let r=parseInt(t,10);return[r,new e(this.inventory,r,n,this.economy.getById(n.id))]})))}constructor(e,t,n,{economy:r,item:i,language:a}){super(r,i,a),this.inventory=e,this.uid=t,d(this.economy,n),Object.assign(this,n),this.assign(n)}isSealed(){return this.hasCharges()&&this.charges===void 0}getStickersCount(){return this.stickers?.size??0}getStickerWear(e){return this.stickers?.get(e)?.wear??0}getKeychainsCount(){return this.keychains?.size??0}getKeychainSeed(e){return this.keychains?.get(e)?.seed??1}getPatchesCount(){return this.patches?.size??0}getCharges(){return this.charges??0}getWear(){return this.wear??this.wearMin??0}getImageUrl(e){return super.getImageUrl(e??this.getWear())}allStickers(){return C(this.stickers).map((e,t)=>[t,e])}allKeychains(){let e=[];for(let t=0;t<1;t++){let n=this.keychains?.get(t);e.push([t,n])}return e}allPatches(){let e=[];for(let t=0;t<5;t++){let n=this.patches?.get(t);e.push([t,n])}return e}someStickers(){return this.allStickers()}someKeychains(){return this.allKeychains().filter(e=>e[1]!==void 0)}somePatches(){return this.allPatches().filter(e=>e[1]!==void 0)}edit(...e){let t=this.asBase();for(let n of e)Object.assign(t,n);d(this.economy,t);for(let t of e)Object.assign(this,t),this.assign(t)}asBase(){return{charges:this.charges,containerId:this.containerId,equipped:this.equipped,equippedCT:this.equippedCT,equippedT:this.equippedT,id:this.id,keychains:this.keychains===void 0?void 0:Object.fromEntries(this.keychains),nameTag:this.nameTag,patches:this.patches===void 0?void 0:Object.fromEntries(this.patches),seed:this.seed,statTrak:this.statTrak,stickers:this.stickers===void 0?void 0:Object.fromEntries(this.stickers),storage:this.storage===void 0?void 0:Object.fromEntries(Array.from(this.storage).map(([e,t])=>[e,t.asBase()])),updatedAt:this.updatedAt,wear:this.wear}}};export{T as CS2Inventory,E as CS2InventoryItem,b as CS2_INVENTORY_EQUIPPABLE_ITEMS,y as CS2_INVENTORY_TIMESTAMP,S as getNextUid,x as getTimestamp,C as stickerMapToArray,w as toStickerMap};
package/package.json CHANGED
@@ -70,5 +70,5 @@
70
70
  "engines": {
71
71
  "node": ">=20"
72
72
  },
73
- "version": "9.0.0-rc.3"
73
+ "version": "9.0.0-rc.4"
74
74
  }