bc-stubs 105.0.0 → 105.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -742,10 +742,7 @@ declare namespace PreferenceArousalFetishDefault {
742
742
  * @type {{ [k in keyof ArousalFetish]: (arg: ArousalFetish[k], C: Character) => ArousalFetish[k] }}
743
743
  * @namespace
744
744
  */
745
- declare var PreferenceArousalFetishValidate: {
746
- Name: (arg: FetishName, C: Character) => FetishName;
747
- Factor: (arg: ArousalFactor, C: Character) => ArousalFactor;
748
- };
745
+ declare var PreferenceArousalFetishValidate: { [k in keyof ArousalFetish]: (arg: ArousalFetish[k], C: Character) => ArousalFetish[k]; };
749
746
  declare namespace PreferenceArousalZoneDefault {
750
747
  let Name_3: AssetGroupItemName | undefined;
751
748
  export { Name_3 as Name };
@@ -772,27 +769,7 @@ declare var PreferenceArousalSettingsDefault: Required<ArousalSettingsType>;
772
769
  * @type {{ [k in keyof Required<ArousalSettingsType>]: (arg: ArousalSettingsType[k], C: Character) => ArousalSettingsType[k] }}
773
770
  * @namespace
774
771
  */
775
- declare var PreferenceArousalSettingsValidate: {
776
- Active: (arg: ArousalActiveName, C: Character) => ArousalActiveName;
777
- Visible: (arg: ArousalVisibleName, C: Character) => ArousalVisibleName;
778
- ShowOtherMeter: (arg: boolean, C: Character) => boolean;
779
- AffectExpression: (arg: boolean, C: Character) => boolean;
780
- AffectStutter: (arg: ArousalAffectStutterName, C: Character) => ArousalAffectStutterName;
781
- VFX: (arg: SettingsVFXName, C: Character) => SettingsVFXName;
782
- VFXVibrator: (arg: SettingsVFXVibratorName, C: Character) => SettingsVFXVibratorName;
783
- VFXFilter: (arg: SettingsVFXFilterName, C: Character) => SettingsVFXFilterName;
784
- Progress: (arg: number, C: Character) => number;
785
- ProgressTimer: (arg: number, C: Character) => number;
786
- VibratorLevel: (arg: 0 | 2 | 1 | 3 | 4, C: Character) => 0 | 2 | 1 | 3 | 4;
787
- ChangeTime: (arg: number, C: Character) => number;
788
- Activity: (arg: string, C: Character) => string;
789
- Zone: (arg: string, C: Character) => string;
790
- Fetish: (arg: string, C: Character) => string;
791
- OrgasmTimer: (arg: number, C: Character) => number;
792
- OrgasmStage: (arg: 0 | 2 | 1, C: Character) => 0 | 2 | 1;
793
- OrgasmCount: (arg: number, C: Character) => number;
794
- DisableAdvancedVibes: (arg: boolean, C: Character) => boolean;
795
- };
772
+ declare var PreferenceArousalSettingsValidate: { [k in keyof Required<ArousalSettingsType>]: (arg: ArousalSettingsType[k], C: Character) => ArousalSettingsType[k]; };
796
773
  /**
797
774
  * Namespace with default values for {@link CharacterOnlineSharedSettings} properties.
798
775
  * @type {CharacterOnlineSharedSettings}
@@ -804,14 +781,4 @@ declare var PreferenceOnlineSharedSettingsDefault: CharacterOnlineSharedSettings
804
781
  * @type {{ [k in keyof Required<CharacterOnlineSharedSettings>]: (arg: CharacterOnlineSharedSettings[k], C: Character) => CharacterOnlineSharedSettings[k] }}
805
782
  * @namespace
806
783
  */
807
- declare var PreferenceOnlineSharedSettingsValidate: {
808
- AllowFullWardrobeAccess: (arg: boolean, C: Character) => boolean;
809
- BlockBodyCosplay: (arg: boolean, C: Character) => boolean;
810
- AllowPlayerLeashing: (arg: boolean, C: Character) => boolean;
811
- AllowRename: (arg: boolean, C: Character) => boolean;
812
- DisablePickingLocksOnSelf: (arg: boolean, C: Character) => boolean;
813
- GameVersion: (arg: string, C: Character) => string;
814
- ItemsAffectExpressions: (arg: boolean, C: Character) => boolean;
815
- ScriptPermissions: (arg: ScriptPermissions, C: Character) => ScriptPermissions;
816
- WheelFortune: (arg: string, C: Character) => string;
817
- };
784
+ declare var PreferenceOnlineSharedSettingsValidate: { [k in keyof Required<CharacterOnlineSharedSettings>]: (arg: CharacterOnlineSharedSettings[k], C: Character) => CharacterOnlineSharedSettings[k]; };
@@ -848,7 +848,7 @@ declare function ChatRoomAddCharacterToChatRoom(newCharacter: Character, newRawC
848
848
  * @param {unknown} obj - Room object containing the updated chatroom data.
849
849
  * @returns {obj is ChatRoom} - Returns true if the passed properties are valid and false if they're invalid.
850
850
  */
851
- declare function ChatRoomValidateProperties(obj: unknown): obj is ServerChatRoomData;
851
+ declare function ChatRoomValidateProperties(obj: unknown): obj is ChatRoom;
852
852
  /**
853
853
  * Handles the reception of the new room data from the server.
854
854
  * @param {ServerChatRoomSyncMessage} data - Room object containing the updated chatroom data.
@@ -45,7 +45,7 @@ declare function CommandHelp(low: string, timeout?: number): void;
45
45
  * @param {number} [Timeout] - total time to display the help message in ms
46
46
  * @param {boolean} [DoShowEscapeHint] - if message about message escaping should be shown
47
47
  */
48
- declare function CommandPrintHelpFor(CommandList: Optional<ICommand, 'Action'>[], Timeout?: number, DoShowEscapeHint?: boolean): void;
48
+ declare function CommandPrintHelpFor(CommandList: Optional<ICommand, "Action">[], Timeout?: number, DoShowEscapeHint?: boolean): void;
49
49
  /**
50
50
  * Finds command and executes it from the message
51
51
  * @param {string} msg - User input
@@ -165,5 +165,5 @@ declare namespace Shop2 {
165
165
  * @param {null | [module: ModuleType, screen: string]} screen - A 2-tuple containing the module and name of the previous screen
166
166
  * @param {null | readonly Asset[]} assets - A list of all assets that should appear in the shop
167
167
  */
168
- function Init(background?: string, screen?: [module: ModuleType, screen: string], assets?: readonly Asset[]): void;
168
+ function Init(background?: null | string, screen?: null | [module: ModuleType, screen: string], assets?: null | readonly Asset[]): void;
169
169
  }
@@ -158,7 +158,7 @@ declare function AssetActivitiesForGroup(family: IAssetFamily, groupname: AssetG
158
158
  * @param {T} Group - The name of the asset group to find
159
159
  * @returns {AssetGroupMap[T] | null} - The asset group matching the provided family and group name
160
160
  */
161
- declare function AssetGroupGet<T extends AssetGroupName>(Family: IAssetFamily, Group: T): AssetGroupMap[T];
161
+ declare function AssetGroupGet<T extends AssetGroupName>(Family: IAssetFamily, Group: T): AssetGroupMap[T] | null;
162
162
  /**
163
163
  * Utility function for retrieving the preview image directory path for an asset
164
164
  * @param {Asset} A - The asset whose preview path to retrieve
@@ -272,12 +272,12 @@ declare namespace PoseType {
272
272
  let DEFAULT: "";
273
273
  }
274
274
  declare namespace AssetResolveCopyConfig {
275
- export function _AssignBuyGroup(configList: readonly {
275
+ function _AssignBuyGroup(configList: readonly {
276
276
  BuyGroup?: string;
277
277
  Value?: number;
278
278
  Name?: string;
279
279
  }[]): void;
280
- export function _Resolve<T extends {
280
+ function _Resolve<T extends {
281
281
  CopyConfig?: {
282
282
  GroupName?: AssetGroupName;
283
283
  AssetName: string;
@@ -285,11 +285,10 @@ declare namespace AssetResolveCopyConfig {
285
285
  BuyGroup?: string;
286
286
  Value?: number;
287
287
  Name?: string;
288
- }>(config: T, assetName: string, groupName: AssetGroupName, configRecord: Partial<Record<AssetGroupName, Record<string, T>>>, configType: string, configValidator?: AssetCopyConfigValidator<T>, setBuyGroup?: boolean): T;
289
- export let _ExtendedValidator: AssetCopyConfigValidator<AssetArchetypeConfig>;
290
- export function AssetDefinition_1(assetDef: AssetDefinition, groupName: AssetGroupName, assetRecord: Partial<Record<AssetGroupName, Record<string, AssetDefinition>>>): AssetDefinition;
291
- export { AssetDefinition_1 as AssetDefinition };
292
- export function ExtendedItemConfig(asset: Asset, config: AssetArchetypeConfig, extendedConfig: Partial<Record<AssetGroupName, ExtendedItemGroupConfig>>): AssetArchetypeConfig;
288
+ }>(config: T, assetName: string, groupName: AssetGroupName, configRecord: Partial<Record<AssetGroupName, Record<string, T>>>, configType: string, configValidator?: null | AssetCopyConfigValidator<T>, setBuyGroup?: boolean): null | T;
289
+ let _ExtendedValidator: AssetCopyConfigValidator<AssetArchetypeConfig>;
290
+ function AssetDefinition(assetDef: AssetDefinition, groupName: AssetGroupName, assetRecord: Partial<Record<AssetGroupName, Record<string, AssetDefinition>>>): null | AssetDefinition;
291
+ function ExtendedItemConfig(asset: Asset, config: AssetArchetypeConfig, extendedConfig: ExtendedItemMainConfig): null | AssetArchetypeConfig;
293
292
  }
294
293
  declare const AssetStringsPath: "Assets/Female3DCG/AssetStrings.csv";
295
294
  type AssetCopyConfigValidator<T> = (config: T, superConfig: T, key: string, superKey: string) => boolean;
@@ -150,7 +150,7 @@ declare function CommonEmailIsValid(Email: string): boolean;
150
150
  * @param {number} index
151
151
  * @returns {undefined|T}
152
152
  */
153
- declare function CommonRemoveItemFromList<T>(list: T[], index: number): T;
153
+ declare function CommonRemoveItemFromList<T>(list: T[], index: number): undefined | T;
154
154
  /**
155
155
  * Removes random item from list and returns it
156
156
  * @template T
@@ -455,7 +455,7 @@ declare function CommonPick<KeyType extends keyof RecordType, RecordType extends
455
455
  * @param {number} step - The step size in which the index is incremented
456
456
  * @returns {Generator<[index: number, value: T], void>}
457
457
  */
458
- declare function CommonEnumerate<T>(iterable: Iterable<T>, start?: number, step?: number): Generator<[index: number, value: T], void, any>;
458
+ declare function CommonEnumerate<T>(iterable: Iterable<T>, start?: number, step?: number): Generator<[index: number, value: T], void>;
459
459
  /**
460
460
  * Return a value clamped to a minimum and maximum
461
461
  * @param {number} value
@@ -555,7 +555,7 @@ declare function CommonProperty<T extends unknown>(propertyName: string, getter?
555
555
  * @param {T} callback - The function with its new name
556
556
  * @param {Record<string, any>} namespace - The namespace wherein the new and old names will be stored
557
557
  */
558
- declare function CommonDeprecateFunction<T extends (...any: any[]) => any>(oldName: string, callback: T, namespace?: Record<string, any>): void;
558
+ declare function CommonDeprecateFunction<T extends (...any: any) => any>(oldName: string, callback: T, namespace?: Record<string, any>): void;
559
559
  /**
560
560
  * Capitalize the first character of the passed string.
561
561
  * @template {string} T
@@ -573,7 +573,7 @@ declare function CommonCapitalize<T extends string>(string: T): Capitalize<T>;
573
573
  * Generally only relevant if one of the fields contains non-JSON-serializible data.
574
574
  * @returns {VariableContainer<T1, T2>} - The newly created object
575
575
  */
576
- declare function CommonVariableContainer<T1, T2 = {}>(defaults: T1, extraVars?: T2, resetCallbacks?: null | {
576
+ declare function CommonVariableContainer<T1, T2 = {}>(defaults: T1, extraVars?: null | T2, resetCallbacks?: null | {
577
577
  replacer?: (this: any, key: string, value: any) => any;
578
578
  reviver?: (this: any, key: string, value: any) => any;
579
579
  }): VariableContainer<T1, T2>;
@@ -91,7 +91,7 @@ declare function DialogFullRandomRestrain(C: string | Character): void;
91
91
  * @param {T} LogGroup - The name of the log group
92
92
  * @returns {boolean} - Returns true, if a specific log is registered
93
93
  */
94
- declare function DialogLogQuery<T extends keyof LogNameType>(LogType: LogNameType[T], LogGroup: T): boolean;
94
+ declare function DialogLogQuery<T extends LogGroupType>(LogType: LogNameType[T], LogGroup: T): boolean;
95
95
  /**
96
96
  * Sets the AllowItem flag on the current character
97
97
  * @param {string} Allow - The flag to set. Either "TRUE" or "FALSE"
@@ -1011,9 +1011,9 @@ declare namespace DialogEffectIcons {
1011
1011
  let Table: Partial<Record<InventoryIcon, readonly EffectName[]>>;
1012
1012
  function GetIcons(item: Item): InventoryIcon[];
1013
1013
  let GetEffectIcons: (effects: EffectName[], prop?: CraftingPropertyType) => null | InventoryIcon[];
1014
- function _GetGagIcon(effect: EffectName, prop?: CraftingPropertyType): InventoryIcon;
1015
- function _GetBlindIcon(effect: EffectName, prop?: CraftingPropertyType): InventoryIcon;
1016
- function _GetDeafIcon(effect: EffectName): InventoryIcon;
1014
+ function _GetGagIcon(effect: EffectName, prop?: CraftingPropertyType): null | InventoryIcon;
1015
+ function _GetBlindIcon(effect: EffectName, prop?: CraftingPropertyType): null | InventoryIcon;
1016
+ function _GetDeafIcon(effect: EffectName): undefined | InventoryIcon;
1017
1017
  let _GagLevelToIcon: (level?: number) => null | InventoryIcon;
1018
1018
  let _BlindLevelToIcon: (level?: number) => null | InventoryIcon;
1019
1019
  }
@@ -214,7 +214,7 @@ type DynamicDrawOptions = {
214
214
  fontFamily?: string;
215
215
  /**
216
216
  * - The text alignment to use. Can be any valid
217
- * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/text-align text alignment}. Not applicable to the {@link DynamicDrawTextArc }function. Defaults to "center".
217
+ * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/text-align text alignment}. Not applicable to the {@link DynamicDrawTextArc}function. Defaults to "center".
218
218
  */
219
219
  textAlign?: CanvasTextAlign;
220
220
  /**
@@ -240,42 +240,42 @@ type DynamicDrawOptions = {
240
240
  */
241
241
  effect?: DynamicDrawTextEffect;
242
242
  /**
243
- * - The maximum width of the drawn text. Not applicable to the {@link DynamicDrawTextFromTo } function, as
244
- * constraints are defined by the endpoints. When defined for the {@link DynamicDrawTextArc } function, it defines the maximum width of the
243
+ * - The maximum width of the drawn text. Not applicable to the {@link DynamicDrawTextFromTo} function, as
244
+ * constraints are defined by the endpoints. When defined for the {@link DynamicDrawTextArc} function, it defines the maximum width of the
245
245
  * text perpendicular to the radius line on which the text is centered. Unlimited by default.
246
246
  */
247
247
  width?: number;
248
248
  /**
249
249
  * - Whether or not the text should be fully contained in the box defined by the from/to coordinates. Only
250
- * applicable to the {@link DynamicDrawTextFromTo } function. Defaults to true.
250
+ * applicable to the {@link DynamicDrawTextFromTo} function. Defaults to true.
251
251
  */
252
252
  contain?: boolean;
253
253
  /**
254
254
  * - The angle at which the text should be drawn, relative to the center of the circle. Angles are measured
255
255
  * clockwise in radians starting at the vertical 12 o'clock position. For example 0 corresponds to 12 o'clock, PI/2 corresponds to
256
- * 3 o'clock, PI corresponds to 6 o'clock, and 3PI/2 corresponds to 9 o'clock. Only applicable to the {@link DynamicDrawTextArc } function.
256
+ * 3 o'clock, PI corresponds to 6 o'clock, and 3PI/2 corresponds to 9 o'clock. Only applicable to the {@link DynamicDrawTextArc} function.
257
257
  * Defaults to 0.
258
258
  */
259
259
  angle?: number;
260
260
  /**
261
261
  * - The radius in pixels of the circle whose arc the text should be drawn along. A smaller radius will result
262
- * in a greater text curvature and vice versa. Only applicable to the {@link DynamicDrawTextArc } function. Defaults to 450px.
262
+ * in a greater text curvature and vice versa. Only applicable to the {@link DynamicDrawTextArc} function. Defaults to 450px.
263
263
  */
264
264
  radius?: number;
265
265
  /**
266
266
  * - The maximum angle that the text should be drawn along. This effectively determines the maximum length of
267
- * the arc along which the text will be drawn. Only applicable to the {@link DynamicDrawTextArc } function. Defaults to PI (a semicircle).
267
+ * the arc along which the text will be drawn. Only applicable to the {@link DynamicDrawTextArc} function. Defaults to PI (a semicircle).
268
268
  */
269
269
  maxAngle?: number;
270
270
  /**
271
271
  * - The direction the text should be drawn in along the circular arc. Only applicable to
272
- * the {@link DynamicDrawTextArc } function. Defaults to {@link DynamicDrawTextDirection.CLOCKWISE };
272
+ * the {@link DynamicDrawTextArc} function. Defaults to {@link DynamicDrawTextDirection.CLOCKWISE};
273
273
  */
274
274
  direction?: DynamicDrawTextDirection;
275
275
  /**
276
276
  * - The direction of the curve of the text. This determines whether the center of the text
277
- * curves upwards ({@link DynamicDrawTextCurve.SMILEY }) or downwards ({@link DynamicDrawTextCurve.FROWNY }). Only applicable to the
278
- * {@link DynamicDrawTextArc } function. Defaults to {@link DynamicDrawTextCurve.FROWNY }.
277
+ * curves upwards ({@link DynamicDrawTextCurve.SMILEY}) or downwards ({@link DynamicDrawTextCurve.FROWNY}). Only applicable to the
278
+ * {@link DynamicDrawTextArc} function. Defaults to {@link DynamicDrawTextCurve.FROWNY}.
279
279
  *
280
280
  * A drawing callback, used to add drawing effects to dynamic text.
281
281
  */
@@ -17,7 +17,7 @@ declare function ElementContent(ID: string, Content?: string): string;
17
17
  * @param {null | HTMLOptions<T>} options - Options for customizing the element
18
18
  * @returns {HTMLElementTagNameMap[T]} - The created element
19
19
  */
20
- declare function ElementCreate<T extends keyof HTMLElementTagNameMap>(options: HTMLOptions<T>): HTMLElementTagNameMap[T];
20
+ declare function ElementCreate<T extends keyof HTMLElementScalarTagNameMap>(options: null | HTMLOptions<T>): HTMLElementTagNameMap[T];
21
21
  /**
22
22
  * Creates a new from element in the main document.
23
23
  *
@@ -276,17 +276,17 @@ declare namespace ElementButton {
276
276
  let _MouseDown: (this: HTMLButtonElement, event: MouseEvent) => Promise<void>;
277
277
  let _KeyDown: (this: HTMLButtonElement, ev: KeyboardEvent) => Promise<void>;
278
278
  let _KeyUp: (this: HTMLButtonElement, ev: KeyboardEvent) => Promise<void>;
279
- function Create(id: string, onClick: (this: HTMLButtonElement, ev: MouseEvent | TouchEvent) => any, options?: {
280
- tooltip?: string | Node;
281
- tooltipPosition?: "left" | "top" | "bottom" | "right";
282
- }, htmlOptions?: Partial<Record<"button" | "tooltip", Omit<HTMLOptions<any>, "tag">>>): HTMLButtonElement;
279
+ function Create(id: null | string, onClick: (this: HTMLButtonElement, ev: MouseEvent | TouchEvent) => any, options?: {
280
+ tooltip?: null | string | Node;
281
+ tooltipPosition?: "left" | "right" | "top" | "bottom";
282
+ }, htmlOptions?: null | Partial<Record<"button" | "tooltip", Omit<HTMLOptions<any>, "tag">>>): HTMLButtonElement;
283
283
  }
284
284
  declare namespace ElementMenu {
285
285
  export function _KeyDown_1(this: HTMLElement, ev: KeyboardEvent): Promise<void>;
286
286
  export { _KeyDown_1 as _KeyDown };
287
287
  export function Create_1(id: string, menuItems: readonly (string | Node | HTMLOptions<keyof HTMLElementTagNameMap>)[], options?: {
288
288
  direction?: "ltr" | "rtl";
289
- }, htmlOptions?: Partial<Record<"menu", Omit<HTMLOptions<any>, "tag">>>): HTMLDivElement;
289
+ }, htmlOptions?: null | Partial<Record<"menu", Omit<HTMLOptions<any>, "tag">>>): HTMLDivElement;
290
290
  export { Create_1 as Create };
291
291
  export function AppendButton(div: HTMLDivElement, menuitem: HTMLElement): void;
292
292
  export function PrependItem(div: HTMLDivElement, menuitem: HTMLElement): void;
@@ -5,7 +5,7 @@
5
5
  * @param {string} name
6
6
  * @param {null | ExtendedItemCallback<T, RT>} originalFunction
7
7
  */
8
- declare function ExtendedItemCreateCallback<T extends any[], RT>(data: ExtendedItemData<any>, name: string, originalFunction: ExtendedItemCallback<T, RT>): void;
8
+ declare function ExtendedItemCreateCallback<T extends any[], RT>(data: ExtendedItemData<any>, name: string, originalFunction: null | ExtendedItemCallback<T, RT>): void;
9
9
  /**
10
10
  * Construct the extended item's archetypical callbacks and place them in the main namespace.
11
11
  * Also sets {@link Asset.DynamicAfterDraw}, {@link Asset.DynamicScriptDraw} and/or {@link Asset.DynamicAfterDraw} if the appropriate callback is passed.
@@ -113,7 +113,7 @@ declare function ExtendedItemSetProperty(C: Character, item: Item, previousPrope
113
113
  * @returns {string|null} null if the player meets the option requirements. Otherwise a string message informing them
114
114
  * of the requirements they do not meet
115
115
  */
116
- declare function ExtendedItemRequirementCheckMessage<T extends ExtendedItemOption>(data: ExtendedItemData<T>, C: Character, item: Item, Option: T, CurrentOption: T, permitExisting?: boolean): string | null;
116
+ declare function ExtendedItemRequirementCheckMessage<T extends ExtendedItemOption>(data: null | ExtendedItemData<T>, C: Character, item: Item, Option: T, CurrentOption: T, permitExisting?: boolean): string | null;
117
117
  /**
118
118
  * Checks whether the player is able to select an option based on it's self-selection criteria (whether or not the
119
119
  * wearer may select the option)
@@ -149,7 +149,7 @@ declare function ExtendedItemCheckBuyGroups(Option: ExtendedItemOption): string
149
149
  * to be identical. Defaults to false.
150
150
  * @returns {string} - Returns a non-empty message string if the item failed validation, or an empty string otherwise
151
151
  */
152
- declare function ExtendedItemValidate<T extends ExtendedItemOption>(data: ExtendedItemData<T>, C: Character, Item: Item, newOption: T, previousOption: T, permitExisting?: boolean): string;
152
+ declare function ExtendedItemValidate<T extends ExtendedItemOption>(data: null | ExtendedItemData<T>, C: Character, Item: Item, newOption: T, previousOption: T, permitExisting?: boolean): string;
153
153
  /**
154
154
  * Simple getter for the function prefix used for the passed extended item - used for calling standard
155
155
  * extended item functions (e.g. if the currently focused it is the hemp rope arm restraint, this will return
@@ -280,7 +280,7 @@ declare function ExtendedItemDrawHeader(X?: number, Y?: number, Item?: Item): vo
280
280
  * @param {string} Type - The item's type. Only relevant in the case of {@link VariableHeightData}
281
281
  * @returns {null | ExtendedDataLookupStruct[Archetype]} The item's data or `null` if the lookup failed
282
282
  */
283
- declare function ExtendedItemGetData<Archetype extends ExtendedArchetype>(asset: Asset, Archetype: Archetype, Type?: string): ExtendedDataLookupStruct[Archetype];
283
+ declare function ExtendedItemGetData<Archetype extends ExtendedArchetype>(asset: Asset, Archetype: Archetype, Type?: string): null | ExtendedDataLookupStruct[Archetype];
284
284
  /**
285
285
  * Constructs the chat message dictionary for the extended item based on the items configuration data.
286
286
  * @template {ExtendedItemOption} OptionType
@@ -316,7 +316,7 @@ declare function ExtendedItemGatherSubscreenProperty(item: Item, option: Extende
316
316
  * @param {boolean} push - Whether to push to changes to the server
317
317
  * @param {boolean} refresh - Whether to refresh the character. This should generally be `true`, with custom script hooks being a potential exception.
318
318
  */
319
- declare function ExtendedItemSetOption<OptionType extends TypedItemOption | ModularItemOption | VibratingItemOption>(data: ModularItemData | TypedItemData | VibratingItemData, C: Character, item: Item, newOption: OptionType, previousOption: OptionType, push?: boolean, refresh?: boolean): void;
319
+ declare function ExtendedItemSetOption<OptionType extends ModularItemOption | TypedItemOption | VibratingItemOption>(data: ModularItemData | TypedItemData | VibratingItemData, C: Character, item: Item, newOption: OptionType, previousOption: OptionType, push?: boolean, refresh?: boolean): void;
320
320
  /** A temporary hack for registering extra archetypes for a single screen. */
321
321
  declare function ExtendedItemManualRegister(): void;
322
322
  /**
@@ -326,7 +326,7 @@ declare function ExtendedItemManualRegister(): void;
326
326
  * @param {Pick<ExtendedItemDrawData<MetaData>, "elementData" | "itemsPerPage">} defaults - The default draw data
327
327
  * @return {ExtendedItemDrawData<MetaData>} - The parsed draw data
328
328
  */
329
- declare function ExtendedItemGetDrawData<MetaData extends ElementMetaData>(drawData: ExtendedItemConfigDrawData<Partial<MetaData>>, defaults: Pick<ExtendedItemDrawData<MetaData>, "elementData" | "itemsPerPage">): ExtendedItemDrawData<MetaData>;
329
+ declare function ExtendedItemGetDrawData<MetaData extends ElementMetaData>(drawData: ExtendedItemConfigDrawData<Partial<MetaData>> | undefined, defaults: Pick<ExtendedItemDrawData<MetaData>, "elementData" | "itemsPerPage">): ExtendedItemDrawData<MetaData>;
330
330
  /**
331
331
  * Pre-process the passed extended item option and return a shallow copy.
332
332
  * @template {Pick<ExtendedItemOption, "Property" | "Prerequisite">} T
@@ -334,7 +334,7 @@ declare function ExtendedItemGetDrawData<MetaData extends ElementMetaData>(drawD
334
334
  * @param {Asset} asset
335
335
  * @returns {T}
336
336
  */
337
- declare function ExtendedItemParseOptions<T extends Pick<ExtendedItemOption, "Prerequisite" | "Property">>(option: T, asset: Asset): T;
337
+ declare function ExtendedItemParseOptions<T extends Pick<ExtendedItemOption, "Property" | "Prerequisite">>(option: T, asset: Asset): T;
338
338
  /**
339
339
  * Set an extended items properties based on the passed type record
340
340
  * @param {Character} C - The character in question
@@ -7,7 +7,7 @@
7
7
  * @param {boolean} [Push=true] - TRUE if we must push the log to the server
8
8
  * @returns {void} - Nothing
9
9
  */
10
- declare function LogAdd<T extends keyof LogNameType>(NewLogName: LogNameType[T], NewLogGroup: T, NewLogValue?: number, Push?: boolean): void;
10
+ declare function LogAdd<T extends LogGroupType>(NewLogName: LogNameType[T], NewLogGroup: T, NewLogValue?: number, Push?: boolean): void;
11
11
  /**
12
12
  * Deletes a log entry.
13
13
  * @template {LogGroupType} T
@@ -16,7 +16,7 @@ declare function LogAdd<T extends keyof LogNameType>(NewLogName: LogNameType[T],
16
16
  * @param {boolean} [Push=true] - TRUE if we must push the log to the server
17
17
  * @returns {void} - Nothing
18
18
  */
19
- declare function LogDelete<T extends keyof LogNameType>(DelLogName: LogNameType[T], DelLogGroup: T, Push?: boolean): void;
19
+ declare function LogDelete<T extends LogGroupType>(DelLogName: LogNameType[T], DelLogGroup: T, Push?: boolean): void;
20
20
  /**
21
21
  * Deletes all log entries to starts with the name.
22
22
  * @param {string} DelLogName - The name of the log
@@ -39,7 +39,7 @@ declare function LogDeleteGroup(DelLogGroup: LogGroupType, Push?: boolean): void
39
39
  * @param {T} QueryLogGroup - The name of the log's group
40
40
  * @returns {boolean} - Returns TRUE if there is an existing log matching the Name/Group with no value or a value above the current time in ms.
41
41
  */
42
- declare function LogQuery<T extends keyof LogNameType>(QueryLogName: LogNameType[T], QueryLogGroup: T): boolean;
42
+ declare function LogQuery<T extends LogGroupType>(QueryLogName: LogNameType[T], QueryLogGroup: T): boolean;
43
43
  /**
44
44
  * Checks if there's a log entry with extra ID characters in the log of the player (Exemple: BlockScreenABC return true for ID: A, B or C)
45
45
  * @template {LogGroupType} T
@@ -48,7 +48,7 @@ declare function LogQuery<T extends keyof LogNameType>(QueryLogName: LogNameType
48
48
  * @param {string} ID - The ID to validate (letter, number or other chars are fine)
49
49
  * @returns {boolean} - Returns true, if the log contains that ID
50
50
  */
51
- declare function LogContain<T extends keyof LogNameType>(LogName: LogNameType[T], LogGroup: T, ID: string): boolean;
51
+ declare function LogContain<T extends LogGroupType>(LogName: LogNameType[T], LogGroup: T, ID: string): boolean;
52
52
  /**
53
53
  * Returns the value associated to a log.
54
54
  * @template {LogGroupType} T
@@ -56,7 +56,7 @@ declare function LogContain<T extends keyof LogNameType>(LogName: LogNameType[T]
56
56
  * @param {T} QueryLogGroup - The name of the log's group
57
57
  * @returns {number | null} - Returns the value of the log which is a date represented in ms or undefined. Returns null if no matching log is found.
58
58
  */
59
- declare function LogValue<T extends keyof LogNameType>(QueryLogName: LogNameType[T], QueryLogGroup: T): number | null;
59
+ declare function LogValue<T extends LogGroupType>(QueryLogName: LogNameType[T], QueryLogGroup: T): number | null;
60
60
  /**
61
61
  * Loads the account log.
62
62
  * @param {readonly LogRecord[]} NewLog - Existing logs received by the server
@@ -71,7 +71,7 @@ declare function LogLoad(NewLog: readonly LogRecord[]): void;
71
71
  * @param {T} QueryLogGroup - The name of the log's group
72
72
  * @returns {boolean} - Returns TRUE if there is an existing log matching the Name/Group with no value or a value above the current time in ms.
73
73
  */
74
- declare function LogQueryRemote<T extends keyof LogNameType>(C: Character, QueryLogName: LogNameType[T], QueryLogGroup: T): boolean;
74
+ declare function LogQueryRemote<T extends LogGroupType>(C: Character, QueryLogName: LogNameType[T], QueryLogGroup: T): boolean;
75
75
  /**
76
76
  * Filters the Player's log and returns the rule entries that the player's owner is allowed to see.
77
77
  * @param {boolean} OwnerIsLover - Indicates that the requester is also the player's lover.
@@ -63,7 +63,7 @@ declare function InventoryDataBuild(C: Character): void;
63
63
  * @param {string|'*'} InventoryName - The name of the item to validate, * means any
64
64
  * @param {AssetGroupName} InventoryGroup - The group name of the item to validate
65
65
  */
66
- declare function InventoryAvailable(C: Character, InventoryName: string | '*', InventoryGroup: AssetGroupName): boolean;
66
+ declare function InventoryAvailable(C: Character, InventoryName: string | "*", InventoryGroup: AssetGroupName): boolean;
67
67
  /**
68
68
  * Returns an error message if a prerequisite clashes with the character's items and clothes
69
69
  * @param {Character} C - The character on which we check for prerequisites
@@ -298,7 +298,7 @@ declare function InventoryItemIsPickable(Item: Item): boolean;
298
298
  * @returns {(ItemProperties & Asset & AssetGroup)[Name] | undefined} - The value of the requested property for the given item.
299
299
  * Returns either undefined, an empty array or object if the property or the item itself does not exist.
300
300
  */
301
- declare function InventoryGetItemProperty<Name extends "Block" | "BlockRemotes" | "OpenPermission" | "OpenPermissionArm" | "OpenPermissionLeg" | "OpenPermissionChastity" | "Hide" | "Name" | "InventoryID" | "Gender" | "BuyGroup" | "AllowLock" | "IsLock" | "PickDifficulty" | "OwnerOnly" | "LoverOnly" | "FamilyOnly" | "AllowTighten" | "DrawLocks" | "CustomBlindBackground" | "CraftGroup" | "AllowLockType" | "CharacterRestricted" | "AllowRemoveExclusive" | "ArousalZone" | "Difficulty" | "SelfBondage" | "SelfUnlock" | "RemoveTime" | "AlwaysInteract" | "IsRestraint" | "ParentItem" | "Enable" | "Visible" | "NotVisibleOnScreen" | "Wear" | "Activity" | "AllowActivity" | "ActivityAudio" | "ActivityExpression" | "AllowActivityOn" | "Bonus" | "Expose" | "HideItem" | "HideItemExclude" | "Require" | "AllowActivePose" | "WhitelistActivePose" | "Value" | "NeverSell" | "ExclusiveUnlock" | "RemoveAtLogin" | "LayerVisibility" | "RemoveTimer" | "MaxTimer" | "Prerequisite" | "Extended" | "AlwaysExtend" | "ExpressionTrigger" | "RemoveItemOnRemove" | "AllowEffect" | "AllowBlock" | "AllowHide" | "AllowHideItem" | "AllowTypes" | "CreateLayerTypes" | "DefaultColor" | "Audio" | "Category" | "Fetish" | "OverrideBlinking" | "DialogSortOverride" | "DynamicDescription" | "DynamicPreviewImage" | "DynamicAllowInventoryAdd" | "DynamicName" | "DynamicGroupName" | "DynamicActivity" | "DynamicAudio" | "DynamicBeforeDraw" | "DynamicAfterDraw" | "DynamicScriptDraw" | "AllowColorizeAll" | "AvailableLocations" | "OverrideHeight" | "FullAlpha" | "MirrorExpression" | "Layer" | "Attribute" | "HideItemAttribute" | "PreviewIcons" | "Tint" | "DefaultTint" | "ExpressionPrerequisite" | "Effect" | "SetPose" | "FreezeActivePose" | "AllowExpression" | "Random" | "ArousalZoneID" | "BodyCosplay" | "HideForPose" | "Alpha" | "ColorSuffix" | "FixedPosition" | "Opacity" | "MinOpacity" | "MaxOpacity" | "InheritColor" | "AllowPose" | "PoseMapping" | "AllowColorize" | "Group" | "Text" | "Padding" | "TypeRecord" | "Door" | "Option" | "Type" | "Expression" | "Mode" | "Intensity" | "State" | "Modules" | "HeightModifier" | "OverridePriority" | "ItemMemberNumber" | "LockedBy" | "LockMemberNumber" | "Password" | "LockPickSeed" | "CombinationNumber" | "MemberNumberListKeys" | "Hint" | "LockSet" | "RemoveItem" | "RemoveOnUnlock" | "ShowTimer" | "EnableRandomInput" | "MemberNumberList" | "InflateLevel" | "SuctionLevel" | "Text2" | "Text3" | "LockButt" | "HeartRate" | "AutoPunish" | "AutoPunishUndoTime" | "AutoPunishUndoTimeSetting" | "OriginalSetting" | "BlinkState" | "PunishStruggle" | "PunishStruggleOther" | "PunishOrgasm" | "PunishStandup" | "PunishActivity" | "PunishSpeech" | "PunishRequiredSpeech" | "PunishRequiredSpeechWord" | "PunishProhibitedSpeech" | "PunishProhibitedSpeechWords" | "NextShockTime" | "PublicModeCurrent" | "PublicModePermission" | "TriggerValues" | "AccessMode" | "ShockLevel" | "InsertedBeads" | "ShowText" | "TriggerCount" | "OrgasmCount" | "RuinedOrgasmCount" | "TimeWorn" | "TimeSinceLastOrgasm" | "Iterations" | "Revert" | "UnHide" | "Texts" | "TargetAngle" | "PortalLinkCode" | "Underwear" | "Archetype" | "Asset" | "Clothing" | "AllowNone" | "AllowCustomize" | "ParentSize" | "ParentColor" | "Zone" | "MirrorGroup" | "PreviewZone" | "MirrorActivitiesFrom" | "HasPreviewImages" | "HasType" | "ParentGroupName" | "DrawingLeft" | "DrawingTop" | "Description" | "WearTime" | "DrawingPriority" | "ZoomModifier" | "ColorableLayerCount" | "AllowTint" | "Family" | "IsDefault" | "ColorSchema" | "DrawingBlink" | "IsAppearance" | "IsItem" | "IsScript">(Item: Item, PropertyName: Name, CheckGroup?: boolean): (ItemProperties & Asset & AssetGroup)[Name];
301
+ declare function InventoryGetItemProperty<Name extends keyof ItemProperties | keyof Asset | keyof AssetGroup>(Item: Item, PropertyName: Name, CheckGroup?: boolean): (ItemProperties & Asset & AssetGroup)[Name] | undefined;
302
302
  /**
303
303
  * Apply an item's expression trigger to a character if able
304
304
  * @param {Character} C - The character to update
@@ -529,7 +529,7 @@ declare function InventoryShockExpression(C: Character): void;
529
529
  declare function InventoryExtractLockProperties(property: ItemProperties): ItemProperties;
530
530
  declare namespace InventoryPrerequisiteConflicts {
531
531
  let GagPriorities: Partial<Record<AssetGroupName, number>>;
532
- function _GagCheck<T extends "Block" | "Hide" | "NotVisibleOnScreen" | "AllowActivity" | "ActivityAudio" | "AllowActivityOn" | "Expose" | "HideItem" | "HideItemExclude" | "Require" | "AllowActivePose" | "WhitelistActivePose" | "Prerequisite" | "ExpressionTrigger" | "RemoveItemOnRemove" | "AllowEffect" | "AllowBlock" | "AllowHide" | "AllowHideItem" | "AllowTypes" | "CreateLayerTypes" | "DefaultColor" | "Category" | "Fetish" | "AvailableLocations" | "Layer" | "Attribute" | "HideItemAttribute" | "PreviewIcons" | "Tint" | "ExpressionPrerequisite" | "Effect" | "SetPose" | "FreezeActivePose" | "AllowExpression" | "HideForPose" | "Alpha" | "AllowPose" | "Modules" | "MemberNumberList" | "UnHide" | "Texts" | "Asset" | "Zone" | "PreviewZone" | "HasType" | "ColorSchema">(fieldName: T, C: Character, blockingPrereqs: PropertiesArray[T], asset?: Asset, options?: {
532
+ function _GagCheck<T extends keyof PropertiesArray>(fieldName: T, C: Character, blockingPrereqs: PropertiesArray[T], asset?: Asset, options?: {
533
533
  errMessage?: string;
534
534
  invert?: boolean;
535
535
  }): string;
@@ -84,7 +84,7 @@ declare namespace Layering {
84
84
  * @private
85
85
  * @returns {undefined | AssetLayerOverridePriority}
86
86
  */
87
- function _GetDefaultPriority(): AssetLayerOverridePriority;
87
+ function _GetDefaultPriority(): undefined | AssetLayerOverridePriority;
88
88
  /**
89
89
  * Update all input elements and buttons with the passed {@link Layering.Readonly} status.
90
90
  * @param {boolean} isReadonly
@@ -100,7 +100,7 @@ declare namespace Layering {
100
100
  * A reload pushes any current changes towards the server and reinitializes all DOM elements.
101
101
  * @returns {HTMLDivElement} The div containing the layering subscreen
102
102
  */
103
- function Init(item: Item, character: Character, display?: Partial<LayeringDisplay>, reload?: boolean, readonly?: boolean): HTMLDivElement;
103
+ function Init(item: Item, character: Character, display?: null | Partial<LayeringDisplay>, reload?: boolean, readonly?: boolean): HTMLDivElement;
104
104
  function Load(): void;
105
105
  function Resize(load: boolean): void;
106
106
  function Unload(): void;
@@ -65,8 +65,8 @@ declare const PoseAllKneeling: readonly ("Kneel" | "KneelingSpread")[];
65
65
  */
66
66
  declare const PoseAllStanding: readonly ("BaseLower" | "LegsClosed" | "LegsOpen" | "Spread")[];
67
67
  declare namespace PoseToMapping {
68
- function Array(poses: readonly AssetPoseName[], warningPrefix?: string): Partial<Record<keyof AssetPoseMap, AssetPoseName[]>>;
69
- function Scalar(poses: readonly AssetPoseName[], warningPrefix?: string): Partial<Record<keyof AssetPoseMap, AssetPoseName>>;
68
+ function Array(poses: readonly AssetPoseName[], warningPrefix?: null | string): Partial<Record<AssetPoseCategory, AssetPoseName[]>>;
69
+ function Scalar(poses: readonly AssetPoseName[], warningPrefix?: null | string): Partial<Record<AssetPoseCategory, AssetPoseName>>;
70
70
  }
71
71
  declare namespace PoseChangeStatus {
72
72
  let NEVER: 0;
@@ -38,7 +38,7 @@ declare function ServerDisconnect(data?: ServerForceDisconnectMessage, close?: b
38
38
  * @returns {boolean} - True if in a chatroom
39
39
  */
40
40
  declare function ServerPlayerIsInChatRoom(): boolean;
41
- declare function ServerSend<Ev extends "AccountCreate" | "AccountLogin" | "PasswordReset" | "PasswordResetProcess" | "AccountUpdate" | "AccountUpdateEmail" | "AccountQuery" | "AccountBeep" | "AccountOwnership" | "AccountLovership" | "AccountDifficulty" | "AccountDisconnect" | "ChatRoomSearch" | "ChatRoomCreate" | "ChatRoomJoin" | "ChatRoomLeave" | "ChatRoomChat" | "ChatRoomCharacterUpdate" | "ChatRoomCharacterExpressionUpdate" | "ChatRoomCharacterPoseUpdate" | "ChatRoomCharacterArousalUpdate" | "ChatRoomCharacterItemUpdate" | "ChatRoomCharacterMapDataUpdate" | "ChatRoomAdmin" | "ChatRoomAllowItem" | "ChatRoomGame">(ev: Ev, ...args: Parameters<ClientToServerEvents[Ev]>): void;
41
+ declare function ServerSend<Ev extends import("@socket.io/component-emitter").EventNames<ClientToServerEvents>>(ev: Ev, ...args: import("@socket.io/component-emitter").EventParams<ClientToServerEvents, Ev>): void;
42
42
  /**
43
43
  * Process the outgoing server messages queue
44
44
  */
@@ -296,13 +296,13 @@ declare namespace ServerAccountDataSyncedValidate {
296
296
  VFXFilter: SettingsVFXFilterName;
297
297
  Progress: number;
298
298
  ProgressTimer: number;
299
- VibratorLevel: 0 | 2 | 1 | 3 | 4;
299
+ VibratorLevel: 0 | 1 | 2 | 3 | 4;
300
300
  ChangeTime: number;
301
301
  Activity: string;
302
302
  Zone: string;
303
303
  Fetish: string;
304
304
  OrgasmTimer: number;
305
- OrgasmStage: 0 | 2 | 1;
305
+ OrgasmStage: 0 | 1 | 2;
306
306
  OrgasmCount: number;
307
307
  DisableAdvancedVibes: boolean;
308
308
  };
@@ -30,4 +30,4 @@ declare var TestingVariableHeightItemDataLookup: Record<string, VariableHeightDa
30
30
  declare var TestingTextItemDataLookup: Record<string, TextItemData>;
31
31
  declare var TestingNoArchItemDataLookup: Record<string, NoArchItemData>;
32
32
  /** A record mapping pose categories to pose names */
33
- declare var TestingPoseMap: Record<keyof AssetPoseMap, Set<AssetPoseName>>;
33
+ declare var TestingPoseMap: Record<AssetPoseCategory, Set<AssetPoseName>>;
@@ -120,7 +120,7 @@ declare function TypedItemGetOption(groupName: AssetGroupName, assetName: string
120
120
  * @returns {string|undefined} - undefined or an empty string if the validation passes. Otherwise, returns a string
121
121
  * message informing the player of the requirements that are not met.
122
122
  */
123
- declare function TypedItemValidateOption<T extends ExtendedItemOption>(data: ExtendedItemData<T>, C: Character, item: Item, option: T, previousOption: T, permitExisting?: boolean): string | undefined;
123
+ declare function TypedItemValidateOption<T extends ExtendedItemOption>(data: null | ExtendedItemData<T>, C: Character, item: Item, option: T, previousOption: T, permitExisting?: boolean): string | undefined;
124
124
  /**
125
125
  * Sets a typed item's type and properties to the option whose name matches the provided option name parameter.
126
126
  * @param {Character} C - The character on whom the item is equipped
@@ -113,7 +113,7 @@ declare function VibratorModePublish(data: VibratingItemData, C: Character, item
113
113
  * @returns {boolean} Whether properties were initialized or not
114
114
  */
115
115
  declare function VibratorModeInit(data: VibratingItemData, C: Character, item: Item, push?: boolean, refresh?: boolean): boolean;
116
- declare function VibratorModeSetOptionByName(C: Character, itemOrGroupName: AssetGroupName | Item, optionName: string, push?: boolean, C_Source?: Character, refresh?: boolean): string;
116
+ declare function VibratorModeSetOptionByName(C: Character, itemOrGroupName: Item | AssetGroupName, optionName: string, push?: boolean, C_Source?: null | Character, refresh?: boolean): string | undefined;
117
117
  /**
118
118
  * Return the (standard) vibrator mode one would get by incrementing/decrementing the passed mode.
119
119
  * @param {VibratorMode} mode - The current vibrator mode
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bc-stubs",
3
- "version": "105.0.0",
3
+ "version": "105.0.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+ssh://git@github.com/bananarama92/BC-stubs.git"
@@ -19,10 +19,8 @@
19
19
  "homepage": "https://github.com/bananarama92/BC-stubs#readme",
20
20
  "dependencies": {
21
21
  "socket.io-client": "4.6.1",
22
- "@types/lz-string": "1.3.34"
22
+ "@types/lz-string": "1.3.34",
23
+ "typescript": ">=5.5.0"
23
24
  },
24
- "devDependencies": {
25
- "typescript": "^5.4.4"
26
- },
27
- "typeScriptVersion": "^5.4.4"
25
+ "typeScriptVersion": "^5.5.2"
28
26
  }
package/bc/patch.d.ts DELETED
@@ -1 +0,0 @@
1
- declare const LZString: import("lz-string").LZStringStatic;