bc-stubs 130.0.0 → 131.0.0-Alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/bc/Assets/Female3DCG/Female3DCG.d.ts +79 -61
  2. package/bc/NativeDeclarations/{Preference.d.ts → Screens/Character/Preference/Preference.d.ts} +6 -0
  3. package/bc/NativeDeclarations/{Commands.d.ts → Screens/Online/ChatRoom/Commands.d.ts} +1 -1
  4. package/bc/NativeDeclarations/{Element.d.ts → Scripts/Element.d.ts} +9 -0
  5. package/bc/NativeDeclarations/{Messages.d.ts → Scripts/Messages.d.ts} +19 -1
  6. package/bc/NativeDeclarations/{Toasts.d.ts → Scripts/Toasts.d.ts} +1 -1
  7. package/bc/NativeDeclarations/{Typedef.d.ts → Scripts/Typedef.d.ts} +111 -42
  8. package/bc/NativeDeclarations/Scripts/lib/LZString.d.ts +91 -0
  9. package/bc/NativeDeclarations/Scripts/lib/country-flag-emoji-polyfill/index.d.ts +10 -0
  10. package/bc/NativeDeclarations/Scripts/lib/webgl/resources/m4.d.ts +1 -0
  11. package/bc/Screens/Character/Appearance/Appearance.d.ts +13 -2
  12. package/bc/Screens/Character/FriendList/FriendList.d.ts +0 -7
  13. package/bc/Screens/Inventory/ItemMisc/HighSecurityPadlock/HighSecurityPadlock.d.ts +2 -2
  14. package/bc/Screens/Inventory/ItemPelvis/ModularChastityBelt/ModularChastityBelt.d.ts +33 -21
  15. package/bc/Screens/Inventory/ItemVulva/TechnoChastityCage/TechnoChastityCage.d.ts +114 -0
  16. package/bc/Screens/MiniGame/ClubCard/ClubCard.d.ts +14 -11
  17. package/bc/Screens/Online/AdvancedRule/AdvancedRule.d.ts +16 -3
  18. package/bc/Screens/Online/ChatRoom/ChatRoom.d.ts +8 -1
  19. package/bc/Screens/Room/Arcade/Arcade.d.ts +4 -6
  20. package/bc/Screens/Room/AsylumEntrance/AsylumEntrance.d.ts +26 -6
  21. package/bc/Screens/Room/AsylumMeeting/AsylumMeeting.d.ts +6 -6
  22. package/bc/Screens/Room/AsylumTherapy/AsylumTherapy.d.ts +4 -4
  23. package/bc/Screens/Room/CollegeCafeteria/CollegeCafeteria.d.ts +9 -6
  24. package/bc/Screens/Room/LARP/LARP.d.ts +2 -2
  25. package/bc/Screens/Room/MagicSchoolEscape/MagicSchoolEscape.d.ts +2 -2
  26. package/bc/Screens/Room/MainHall/MainHall.d.ts +0 -30
  27. package/bc/Screens/Room/Nursery/Nursery.d.ts +2 -0
  28. package/bc/Screens/Room/Photographic/Photographic.d.ts +2 -2
  29. package/bc/Screens/Room/SlaveMarket/SlaveMarket.d.ts +8 -7
  30. package/bc/Scripts/Character.d.ts +7 -2
  31. package/bc/Scripts/Common.d.ts +46 -1
  32. package/bc/Scripts/Dialog.d.ts +2 -2
  33. package/bc/Scripts/DictionaryBuilder.d.ts +13 -0
  34. package/bc/Scripts/Element.d.ts +43 -14
  35. package/bc/Scripts/Game.d.ts +4 -0
  36. package/bc/Scripts/GameLog.d.ts +171 -35
  37. package/bc/Scripts/Inventory.d.ts +4 -4
  38. package/bc/Scripts/Item.d.ts +49 -0
  39. package/bc/Scripts/Layering.d.ts +50 -128
  40. package/bc/Scripts/Property.d.ts +13 -3
  41. package/bc/Scripts/Server.d.ts +16 -2
  42. package/bc/Scripts/Text.d.ts +1 -0
  43. package/bc/Scripts/Toasts.d.ts +10 -10
  44. package/bc/Scripts/Validation.d.ts +7 -0
  45. package/package.json +1 -1
  46. package/bc/NativeDeclarations/lzstring.d.ts +0 -109
  47. package/bc/Screens/Inventory/ItemHead/InteractiveVRHeadset/InteractiveVRHeadset.d.ts +0 -2
  48. package/bc/Screens/Inventory/ItemHood/TechnoHelmet1/TechnoHelmet1.d.ts +0 -1
  49. /package/bc/NativeDeclarations/{Female3DCG_Types.d.ts → Assets/Female3DCG/Female3DCG_Types.d.ts} +0 -0
  50. /package/bc/NativeDeclarations/{FriendList.d.ts → Screens/Character/FriendList/FriendList.d.ts} +0 -0
  51. /package/bc/NativeDeclarations/{Keybindings.d.ts → Screens/Character/Preference/Keybindings.d.ts} +0 -0
  52. /package/bc/NativeDeclarations/{Title.d.ts → Screens/Character/Title/Title.d.ts} +0 -0
  53. /package/bc/NativeDeclarations/{ChatRoom.d.ts → Screens/Online/ChatRoom/ChatRoom.d.ts} +0 -0
  54. /package/bc/NativeDeclarations/{ChatRoomMapView.d.ts → Screens/Online/ChatRoom/ChatRoomMapView.d.ts} +0 -0
  55. /package/bc/NativeDeclarations/{DeclarationsCheap.d.ts → Scripts/DeclarationsCheap.d.ts} +0 -0
  56. /package/bc/NativeDeclarations/{DeclarationsStatic.d.ts → Scripts/DeclarationsStatic.d.ts} +0 -0
  57. /package/bc/NativeDeclarations/{KeybindingManager.d.ts → Scripts/KeybindingManager.d.ts} +0 -0
  58. /package/bc/NativeDeclarations/{Platform.d.ts → Scripts/Platform.d.ts} +0 -0
  59. /package/bc/NativeDeclarations/{Timer.d.ts → Scripts/Timer.d.ts} +0 -0
  60. /package/bc/{bcmodsdk.d.ts → NativeDeclarations/Scripts/lib/bcmodsdk.d.ts} +0 -0
  61. /package/bc/NativeDeclarations/{reset.d.ts → Scripts/reset.d.ts} +0 -0
@@ -352,31 +352,45 @@ declare namespace AssetPoseMapping {
352
352
  let Hogtied_20: "Hide";
353
353
  export { Hogtied_20 as Hogtied };
354
354
  }
355
- namespace AnkletLeft {
355
+ namespace Jewelry {
356
356
  let AllFours_23: "Hide";
357
357
  export { AllFours_23 as AllFours };
358
358
  let Hogtied_21: "Hide";
359
359
  export { Hogtied_21 as Hogtied };
360
- let Kneel_7: "Hide";
360
+ let Kneel_7: "Kneel";
361
361
  export { Kneel_7 as Kneel };
362
- let KneelingSpread_5: "Hide";
362
+ let KneelingSpread_5: "KneelingSpread";
363
363
  export { KneelingSpread_5 as KneelingSpread };
364
364
  let LegsClosed_4: "LegsClosed";
365
365
  export { LegsClosed_4 as LegsClosed };
366
366
  let Spread_3: "Spread";
367
367
  export { Spread_3 as Spread };
368
368
  }
369
- namespace HandAccessoryLeft {
370
- let AllFours_24: "AllFours";
369
+ namespace AnkletLeft {
370
+ let AllFours_24: "Hide";
371
371
  export { AllFours_24 as AllFours };
372
+ let Hogtied_22: "Hide";
373
+ export { Hogtied_22 as Hogtied };
374
+ let Kneel_8: "Hide";
375
+ export { Kneel_8 as Kneel };
376
+ let KneelingSpread_6: "Hide";
377
+ export { KneelingSpread_6 as KneelingSpread };
378
+ let LegsClosed_5: "LegsClosed";
379
+ export { LegsClosed_5 as LegsClosed };
380
+ let Spread_4: "Spread";
381
+ export { Spread_4 as Spread };
382
+ }
383
+ namespace HandAccessoryLeft {
384
+ let AllFours_25: "AllFours";
385
+ export { AllFours_25 as AllFours };
372
386
  let BackBoxTie_8: "BackBoxTie";
373
387
  export { BackBoxTie_8 as BackBoxTie };
374
388
  let BackCuffs_8: "BackCuffs";
375
389
  export { BackCuffs_8 as BackCuffs };
376
390
  let BackElbowTouch_8: "BackElbowTouch";
377
391
  export { BackElbowTouch_8 as BackElbowTouch };
378
- let Hogtied_22: "Hide";
379
- export { Hogtied_22 as Hogtied };
392
+ let Hogtied_23: "Hide";
393
+ export { Hogtied_23 as Hogtied };
380
394
  let OverTheHead_8: "OverTheHead";
381
395
  export { OverTheHead_8 as OverTheHead };
382
396
  let TapedHands_5: "TapedHands";
@@ -385,46 +399,46 @@ declare namespace AssetPoseMapping {
385
399
  export { Yoked_9 as Yoked };
386
400
  }
387
401
  namespace Nipples {
388
- let AllFours_25: "Hide";
389
- export { AllFours_25 as AllFours };
390
- }
391
- namespace Panties {
392
402
  let AllFours_26: "Hide";
393
403
  export { AllFours_26 as AllFours };
394
- let Hogtied_23: "Hide";
395
- export { Hogtied_23 as Hogtied };
396
404
  }
397
- namespace Pussy {
405
+ namespace Panties {
398
406
  let AllFours_27: "Hide";
399
407
  export { AllFours_27 as AllFours };
400
408
  let Hogtied_24: "Hide";
401
409
  export { Hogtied_24 as Hogtied };
402
410
  }
403
- namespace AnkletRight {
411
+ namespace Pussy {
404
412
  let AllFours_28: "Hide";
405
413
  export { AllFours_28 as AllFours };
406
414
  let Hogtied_25: "Hide";
407
415
  export { Hogtied_25 as Hogtied };
408
- let Kneel_8: "Hide";
409
- export { Kneel_8 as Kneel };
410
- let KneelingSpread_6: "Hide";
411
- export { KneelingSpread_6 as KneelingSpread };
412
- let LegsClosed_5: "LegsClosed";
413
- export { LegsClosed_5 as LegsClosed };
414
- let Spread_4: "Spread";
415
- export { Spread_4 as Spread };
416
416
  }
417
- namespace HandAccessoryRight {
418
- let AllFours_29: "AllFours";
417
+ namespace AnkletRight {
418
+ let AllFours_29: "Hide";
419
419
  export { AllFours_29 as AllFours };
420
+ let Hogtied_26: "Hide";
421
+ export { Hogtied_26 as Hogtied };
422
+ let Kneel_9: "Hide";
423
+ export { Kneel_9 as Kneel };
424
+ let KneelingSpread_7: "Hide";
425
+ export { KneelingSpread_7 as KneelingSpread };
426
+ let LegsClosed_6: "LegsClosed";
427
+ export { LegsClosed_6 as LegsClosed };
428
+ let Spread_5: "Spread";
429
+ export { Spread_5 as Spread };
430
+ }
431
+ namespace HandAccessoryRight {
432
+ let AllFours_30: "AllFours";
433
+ export { AllFours_30 as AllFours };
420
434
  let BackBoxTie_9: "BackBoxTie";
421
435
  export { BackBoxTie_9 as BackBoxTie };
422
436
  let BackCuffs_9: "BackCuffs";
423
437
  export { BackCuffs_9 as BackCuffs };
424
438
  let BackElbowTouch_9: "BackElbowTouch";
425
439
  export { BackElbowTouch_9 as BackElbowTouch };
426
- let Hogtied_26: "Hide";
427
- export { Hogtied_26 as Hogtied };
440
+ let Hogtied_27: "Hide";
441
+ export { Hogtied_27 as Hogtied };
428
442
  let OverTheHead_9: "OverTheHead";
429
443
  export { OverTheHead_9 as OverTheHead };
430
444
  let TapedHands_6: "TapedHands";
@@ -433,20 +447,6 @@ declare namespace AssetPoseMapping {
433
447
  export { Yoked_10 as Yoked };
434
448
  }
435
449
  namespace Shoes {
436
- let AllFours_30: "Hide";
437
- export { AllFours_30 as AllFours };
438
- let Hogtied_27: "Hogtied";
439
- export { Hogtied_27 as Hogtied };
440
- let Kneel_9: "Kneel";
441
- export { Kneel_9 as Kneel };
442
- let KneelingSpread_7: "KneelingSpread";
443
- export { KneelingSpread_7 as KneelingSpread };
444
- let LegsClosed_6: "LegsClosed";
445
- export { LegsClosed_6 as LegsClosed };
446
- let Spread_5: "Spread";
447
- export { Spread_5 as Spread };
448
- }
449
- namespace Socks {
450
450
  let AllFours_31: "Hide";
451
451
  export { AllFours_31 as AllFours };
452
452
  let Hogtied_28: "Hogtied";
@@ -460,7 +460,7 @@ declare namespace AssetPoseMapping {
460
460
  let Spread_6: "Spread";
461
461
  export { Spread_6 as Spread };
462
462
  }
463
- namespace SocksLeft {
463
+ namespace Socks {
464
464
  let AllFours_32: "Hide";
465
465
  export { AllFours_32 as AllFours };
466
466
  let Hogtied_29: "Hogtied";
@@ -474,7 +474,7 @@ declare namespace AssetPoseMapping {
474
474
  let Spread_7: "Spread";
475
475
  export { Spread_7 as Spread };
476
476
  }
477
- namespace SocksRight {
477
+ namespace SocksLeft {
478
478
  let AllFours_33: "Hide";
479
479
  export { AllFours_33 as AllFours };
480
480
  let Hogtied_30: "Hogtied";
@@ -488,17 +488,31 @@ declare namespace AssetPoseMapping {
488
488
  let Spread_8: "Spread";
489
489
  export { Spread_8 as Spread };
490
490
  }
491
- namespace Suit {
491
+ namespace SocksRight {
492
492
  let AllFours_34: "Hide";
493
493
  export { AllFours_34 as AllFours };
494
+ let Hogtied_31: "Hogtied";
495
+ export { Hogtied_31 as Hogtied };
496
+ let Kneel_13: "Kneel";
497
+ export { Kneel_13 as Kneel };
498
+ let KneelingSpread_11: "KneelingSpread";
499
+ export { KneelingSpread_11 as KneelingSpread };
500
+ let LegsClosed_10: "LegsClosed";
501
+ export { LegsClosed_10 as LegsClosed };
502
+ let Spread_9: "Spread";
503
+ export { Spread_9 as Spread };
504
+ }
505
+ namespace Suit {
506
+ let AllFours_35: "Hide";
507
+ export { AllFours_35 as AllFours };
494
508
  let BackBoxTie_10: "BackBoxTie";
495
509
  export { BackBoxTie_10 as BackBoxTie };
496
510
  let BackCuffs_10: "BackCuffs";
497
511
  export { BackCuffs_10 as BackCuffs };
498
512
  let BackElbowTouch_10: "BackElbowTouch";
499
513
  export { BackElbowTouch_10 as BackElbowTouch };
500
- let Hogtied_31: "Hogtied";
501
- export { Hogtied_31 as Hogtied };
514
+ let Hogtied_32: "Hogtied";
515
+ export { Hogtied_32 as Hogtied };
502
516
  let OverTheHead_10: "OverTheHead";
503
517
  export { OverTheHead_10 as OverTheHead };
504
518
  let TapedHands_7: "TapedHands";
@@ -507,26 +521,30 @@ declare namespace AssetPoseMapping {
507
521
  export { Yoked_11 as Yoked };
508
522
  }
509
523
  namespace SuitLower {
510
- let AllFours_35: "Hide";
511
- export { AllFours_35 as AllFours };
512
- let Hogtied_32: "Hogtied";
513
- export { Hogtied_32 as Hogtied };
514
- let Kneel_13: "Kneel";
515
- export { Kneel_13 as Kneel };
516
- let KneelingSpread_11: "KneelingSpread";
517
- export { KneelingSpread_11 as KneelingSpread };
518
- let LegsClosed_10: "LegsClosed";
519
- export { LegsClosed_10 as LegsClosed };
520
- let Spread_9: "Spread";
521
- export { Spread_9 as Spread };
522
- }
523
- namespace Wings {
524
524
  let AllFours_36: "Hide";
525
525
  export { AllFours_36 as AllFours };
526
- let Hogtied_33: "Hide";
526
+ let Hogtied_33: "Hogtied";
527
527
  export { Hogtied_33 as Hogtied };
528
+ let Kneel_14: "Kneel";
529
+ export { Kneel_14 as Kneel };
530
+ let KneelingSpread_12: "KneelingSpread";
531
+ export { KneelingSpread_12 as KneelingSpread };
532
+ let LegsClosed_11: "LegsClosed";
533
+ export { LegsClosed_11 as LegsClosed };
534
+ let Spread_10: "Spread";
535
+ export { Spread_10 as Spread };
536
+ }
537
+ namespace Wings {
538
+ let AllFours_37: "Hide";
539
+ export { AllFours_37 as AllFours };
540
+ let Hogtied_34: "Hide";
541
+ export { Hogtied_34 as Hogtied };
528
542
  }
529
543
  }
544
+ /** @type {string[]} */
545
+ declare const AssetMalePantiesList: string[];
546
+ /** @type {string[]} */
547
+ declare const AssetMaleChasityCagesList: string[];
530
548
  /**
531
549
  * 3D Custom Girl based assets
532
550
  * @type {AssetGroupDefinition[]}
@@ -208,3 +208,9 @@ type PreferenceExtensionsMenuButtonInfo = {
208
208
  };
209
209
 
210
210
  // #endregion
211
+
212
+ //#region Advanced rules
213
+
214
+ type AdvancedRuleScreen = keyof typeof MainHallAllowIDToScreenMap;
215
+
216
+ //#endregion
@@ -6,7 +6,7 @@ interface ICommand {
6
6
  /** Reference to another command, used for aliases */
7
7
  Reference?: string;
8
8
  /** The function that handles the command */
9
- Action?: (this: ICommand[], argumentsString: string, message: string, arguments: string[]) => void;
9
+ Action?: (this: ICommand, argumentsString: string, message: string, arguments: string[]) => void;
10
10
  /** Function that returns whether the command can be executed */
11
11
  Prerequisite?: (this: ICommand) => boolean;
12
12
  /** Function to execute on autocomplete key (Tab default) press if chat input matches tag */
@@ -78,3 +78,12 @@ declare namespace ElementSearchableDropdown {
78
78
  parent?: Node;
79
79
  }
80
80
  }
81
+
82
+ declare namespace ElementSearchQuery {
83
+ interface Options {
84
+ /** Custom classes to-be applied to the hightlighted text. Defaults to `"highlight"`. */
85
+ classList?: readonly string[];
86
+ /** Custom tag to-be applied to the hightlighted text. Defaults to `<em>`. */
87
+ tag?: keyof HTMLElementTagNameMap;
88
+ }
89
+ }
@@ -832,6 +832,19 @@ interface ModSdkModsReplyPayloadDictionaryEntry {
832
832
  ModsJson: string;
833
833
  }
834
834
 
835
+ /**
836
+ * A tagged dictionary entry for a list of strings
837
+ */
838
+ interface StringListDictionaryEntry<T> {
839
+ Tag: T;
840
+ Strings: string[];
841
+ }
842
+
843
+ type ForbiddenWordsDictionaryEntry = StringListDictionaryEntry<"ForbiddenWords">
844
+ type BlockScreenDictionaryEntry = StringListDictionaryEntry<"BlockScreen">
845
+ type BlockAppearanceDictionaryEntry = StringListDictionaryEntry<"BlockAppearance">
846
+ type BlockItemGroupDictionaryEntry = StringListDictionaryEntry<"BlockItemGroup">
847
+
835
848
  /**
836
849
  * A dictionary entry with metadata about the chat message transmitted.
837
850
  *
@@ -866,7 +879,12 @@ type ChatMessageDictionaryEntry =
866
879
  | MapViewChangeKeyEventDictionaryEntry
867
880
  | GGTSDictionaryEntry
868
881
  | ModSdkModsQueryPayloadDictionaryEntry
869
- | ModSdkModsReplyPayloadDictionaryEntry;
882
+ | ModSdkModsReplyPayloadDictionaryEntry
883
+ | ForbiddenWordsDictionaryEntry
884
+ | BlockScreenDictionaryEntry
885
+ | BlockAppearanceDictionaryEntry
886
+ | BlockItemGroupDictionaryEntry
887
+ ;
870
888
 
871
889
 
872
890
  type ChatMessageDictionary = ChatMessageDictionaryEntry[];
@@ -23,7 +23,7 @@ declare namespace Toasts {
23
23
  /** Configuration options for displaying a toast notification. */
24
24
  interface Options {
25
25
  /** Text content of the toast. */
26
- message: string;
26
+ message: string | Element | readonly (string | Element)[];
27
27
  /** Title of the toast. */
28
28
  title?: string;
29
29
  /** Type and style of the toast. */
@@ -69,6 +69,11 @@ interface GamepadButton {
69
69
  repeat: boolean;
70
70
  }
71
71
 
72
+ // Workaround for https://github.com/microsoft/TypeScript/issues/283
73
+ interface Node {
74
+ cloneNode(deep?: boolean): this;
75
+ }
76
+
72
77
  interface RGBColor {
73
78
  r: number;
74
79
  g: number;
@@ -507,6 +512,10 @@ type PickLockAvailability = "" | "Disabled" | "PermissionsDisabled" | "Inaccessi
507
512
 
508
513
  type ItemVulvaFuturisticVibratorAccessMode = "" | "ProhibitSelf" | "LockMember";
509
514
 
515
+ type ItemVulvaChastityCageExcitementLevel = "Excited" | "Aroused" | "Horny";
516
+
517
+ type ItemVulvaChastityCageArousalPunishmentType = "Warning" | "Shrink" | "";
518
+
510
519
  type SpeechTransformName = "gagGarble" | "stutter" | "babyTalk" | "deafen";
511
520
 
512
521
  /** The {@link EffectName} values for all gag-related effects. */
@@ -666,7 +675,7 @@ type AssetAttribute =
666
675
  | "FuturisticRecolor" | "FuturisticRecolorDisplay" | "FuturisticLock"
667
676
  | "PortalLinkLockable" | `PortalLinkChastity${string}` | `PortalLinkActivity${ActivityName}` | `PortalLinkTarget${AssetGroupItemName}`
668
677
  | "Diaper" | `Diaper${AssetGenericSize}` | "IsNurseryOutfit" | "Pacifier"
669
- | "PetSuit"
678
+ | "PetSuit" | "ArcadeGaming"
670
679
  ;
671
680
 
672
681
  type PosePrerequisite = `Can${AssetPoseName}`;
@@ -1443,7 +1452,7 @@ interface ClipboardItemBundle {
1443
1452
  /** The item's asset name */
1444
1453
  A: string;
1445
1454
  /** The item's color */
1446
- C?: ItemColor;
1455
+ C: BCColor[];
1447
1456
  }
1448
1457
 
1449
1458
  type ClipboardAppearanceBundle = ClipboardItemBundle[];
@@ -1462,7 +1471,7 @@ type ActivityNameBasic = "Bite" | "Brush" | "Caress" | "Choke" | "Clean" | "Cudd
1462
1471
  "GagKiss" | "GaggedKiss" | "Grope" | "HandGag" | "Kick" |
1463
1472
  "Kiss" | "Lick" | "MassageFeet" | "MassageHands" | "MasturbateFist" |
1464
1473
  "MasturbateFoot" |"MasturbateHand" | "MasturbateTongue" |
1465
- "MoanGag" | "MoanGagAngry" | "MoanGagGiggle" | "MoanGagGroan" | "MoanGagTalk" |
1474
+ "ChewItem" | "MoanGag" | "MoanGagAngry" | "MoanGagGiggle" | "MoanGagGroan" | "MoanGagTalk" |
1466
1475
  "MoanGagWhimper" | "Nibble" | "Nod" | "PenetrateFast" |
1467
1476
  "PenetrateSlow" | "Pet" | "Pinch" | "PoliteKiss" | "Pull" |
1468
1477
  "RestHead" | "Rub" | "Scratch" | "Sit" | "Slap" | "Spank" | "Step" | "StruggleArms" | "StruggleLegs" |
@@ -1470,7 +1479,7 @@ type ActivityNameBasic = "Bite" | "Brush" | "Caress" | "Choke" | "Clean" | "Cudd
1470
1479
  "SistersHug" | "BrothersHandshake" | "SiblingsCheekKiss" | "CollarGrab"
1471
1480
  ;
1472
1481
 
1473
- type ActivityNameItem = "Inject" | "MasturbateItem" | "PenetrateItem" | "PourItem" | "RollItem" | "RubItem" | "BrushItem" | "ShockItem" | "SipItem" | "SpankItem" | "SqueezeItem" | "TickleItem" | "EatItem" | "Scratch" | "ThrowItem";
1482
+ type ActivityNameItem = "Inject" | "MasturbateItem" | "PenetrateItem" | "ChewItem" | "PourItem" | "RollItem" | "RubItem" | "BrushItem" | "ShockItem" | "SipItem" | "SpankItem" | "SqueezeItem" | "TickleItem" | "EatItem" | "Scratch" | "ThrowItem";
1474
1483
 
1475
1484
  type ActivityName = ActivityNameBasic | ActivityNameItem;
1476
1485
 
@@ -1514,13 +1523,17 @@ interface ItemActivity {
1514
1523
 
1515
1524
  type ItemColor = BCColor | BCColor[];
1516
1525
 
1517
- /** An item is a pair of asset and its dynamic properties that define a worn asset. */
1526
+ /**
1527
+ * An item is a pair of asset and its dynamic properties that define a worn asset.
1528
+ *
1529
+ * See the {@link InventoryItem} namespace for item construction helpers.
1530
+ */
1518
1531
  interface Item {
1519
1532
  Asset: Asset;
1520
- Color?: ItemColor;
1521
- Difficulty?: number;
1533
+ Color: BCColor[];
1534
+ Difficulty: number;
1522
1535
  Craft?: CraftingItem;
1523
- Property?: ItemProperties;
1536
+ Property: ItemProperties;
1524
1537
  }
1525
1538
 
1526
1539
  /** An item properties subtype with a guaranteed opacity field. */
@@ -1556,9 +1569,8 @@ interface InventoryBundle {
1556
1569
  Group: AssetGroupName;
1557
1570
  Name: string
1558
1571
  }
1559
- interface InventoryItem extends InventoryBundle {
1560
- Asset: Asset;
1561
- }
1572
+
1573
+ type InventoryItem = InventoryBundle & Item;
1562
1574
 
1563
1575
  declare namespace InventoryPrerequisiteConflicts {
1564
1576
  type ErrMessage = "" | "CannotBeUsedOverGag" | "MustBeUsedOverGag";
@@ -1845,7 +1857,7 @@ interface Character {
1845
1857
  InventoryData?: string;
1846
1858
  Appearance: Item[];
1847
1859
  /**
1848
- * private
1860
+ * @private
1849
1861
  * @see {@link Character.Stage}
1850
1862
  */
1851
1863
  _Stage: string;
@@ -1853,7 +1865,7 @@ interface Character {
1853
1865
  get Stage(): string;
1854
1866
  set Stage(value: string);
1855
1867
  /**
1856
- * private
1868
+ * @private
1857
1869
  * @see {@link Character.CurrentDialog}
1858
1870
  */
1859
1871
  _CurrentDialog: string;
@@ -2019,7 +2031,7 @@ interface Character {
2019
2031
  HasHiddenItems: boolean;
2020
2032
  SavedColors: HSVColor[];
2021
2033
  /**
2022
- * private
2034
+ * @private
2023
2035
  * The cached blind level; use {@link Character.GetBlindLevel} instead.
2024
2036
  */
2025
2037
  _BlindLevel?: number;
@@ -2358,6 +2370,7 @@ interface PlayerCharacter extends Character {
2358
2370
  * Do not manipulate directly. Use {@link ChatRoomListUpdate}
2359
2371
  */
2360
2372
  GhostList: number[];
2373
+ Log: LogRecord[];
2361
2374
  Wardrobe: (ItemBundle[] | null)[];
2362
2375
  WardrobeCharacterNames: string[];
2363
2376
  SavedExpressions: ({ Group: ExpressionGroupName, CurrentExpression?: ExpressionName }[] | null)[];
@@ -3243,6 +3256,12 @@ interface AssetDefinitionProperties {
3243
3256
  */
3244
3257
  Opacity?: number | number[];
3245
3258
 
3259
+ /**
3260
+ * A custom background for this option that overrides the default
3261
+ * @see {@link Asset.CustomBlindBackground}
3262
+ */
3263
+ CustomBlindBackground?: string;
3264
+
3246
3265
  /**
3247
3266
  * A list of fetishes affected by the item
3248
3267
  * @see {@link Asset.Fetish}
@@ -3269,6 +3288,12 @@ interface ExpressionQueueItem {
3269
3288
  Expression: ExpressionName;
3270
3289
  }
3271
3290
 
3291
+ type VoiceTriggerType =
3292
+ | "Increase" | "Decrease" | "Disable"
3293
+ | "Inflate" | "Deflate" | "Empty"
3294
+ | "Shock"
3295
+ ;
3296
+
3272
3297
  /**
3273
3298
  * Base properties for extended items
3274
3299
  *
@@ -3490,6 +3515,21 @@ interface ItemPropertiesCustom {
3490
3515
 
3491
3516
  /** Override the left-position of a layer. A value of {@link AssetOverride} will be override the _relative_ position of each and every layer individually. */
3492
3517
  DrawingLeft?: TopLeft.ItemData;
3518
+
3519
+ // #region Techno Chastity Cage settings */
3520
+
3521
+ /** Time when autoshrink will happen */
3522
+ NextShrinkTime?: number;
3523
+ /** Time when last shrink warning happened */
3524
+ LastShrinkWarningTime?: number;
3525
+ /** Time before next warning or shrinkage will happen again */
3526
+ ShrinkCooldown?: number;
3527
+ /** A boolean to whether show messages related to shrink or warning */
3528
+ ShowShrinkText?: boolean;
3529
+ /** A threshold passing which going to trigger auto shrink/warning */
3530
+ ArousalLvl?: ItemVulvaChastityCageExcitementLevel;
3531
+
3532
+ // #endregion
3493
3533
  }
3494
3534
 
3495
3535
  interface ItemProperties extends ItemPropertiesBase, AssetDefinitionProperties, ItemPropertiesCustom { }
@@ -4698,18 +4738,17 @@ interface ColorPickerInitOptions {
4698
4738
  interface LogRecord {
4699
4739
  Name: LogNameType[LogGroupType];
4700
4740
  Group: LogGroupType;
4701
- Value: number | undefined;
4741
+ Value: number | string[] | undefined;
4702
4742
  }
4703
4743
 
4704
4744
  /** The logging groups as supported by the {@link LogRecord.Group} */
4705
4745
  type LogGroupType = keyof LogNameType;
4706
4746
 
4707
- type LogNameAdvanced = (
4708
- `BlockScreen${string}`
4709
- | `BlockAppearance${string}`
4710
- | `BlockItemGroup${string}`
4711
- | `ForbiddenWords${string}`
4712
- );
4747
+ type LogNameAdvanced =
4748
+ | `BlockScreen`
4749
+ | `BlockAppearance`
4750
+ | `BlockItemGroup`
4751
+ ;
4713
4752
 
4714
4753
  /** An interface mapping {@link LogRecord.Group} types to valid {@link LogRecord.Name} types */
4715
4754
  interface LogNameType {
@@ -4720,6 +4759,7 @@ interface LogNameType {
4720
4759
  College: "TeacherKey",
4721
4760
  Import: "BondageCollege",
4722
4761
  Introduction: "MaidOpinion" | "DailyJobDone",
4762
+ JoinedStable: "Pony" | "PonyExam" | "Trainer" | "TrainerExam",
4723
4763
  LockPick: "FailedLockPick",
4724
4764
  LoverRule: "BlockLoverLockSelf" | "BlockLoverLockOwner",
4725
4765
  MagicSchool: "Mastery",
@@ -4735,7 +4775,6 @@ interface LogNameType {
4735
4775
  "NPC-Julia": "Dominant" | "Submissive",
4736
4776
  "NPC-Yuki": "Dominant" | "Submissive",
4737
4777
  "NPC-Mildred": "Dominant" | "Submissive",
4738
- // NOTE: A number of owner rules can have arbitrary suffices, and can thus not be fully expressed as string literals
4739
4778
  OwnerRule: (
4740
4779
  "BlockChange"
4741
4780
  | "BlockTalk"
@@ -4751,15 +4790,9 @@ interface LogNameType {
4751
4790
  | "BlockRemoteSelf"
4752
4791
  | "BlockNickname"
4753
4792
  | "ReleasedCollar"
4754
- | "BlockScreen"
4755
- | "BlockAppearance"
4756
- | "BlockItemGroup"
4757
- | "ForbiddenWords"
4758
- | "BlockTalkForbiddenWords"
4759
4793
  | LogNameAdvanced
4794
+ | "ForbiddenWords"
4760
4795
  ),
4761
- Pony: "JoinedStable",
4762
- PonyExam: "JoinedStable",
4763
4796
  PrivateRoom: (
4764
4797
  "RentRoom"
4765
4798
  | "Expansion"
@@ -4778,8 +4811,6 @@ interface LogNameType {
4778
4811
  Shibari: "Training",
4779
4812
  SkillModifier: "ModifierDuration" | "ModifierLevel",
4780
4813
  SlaveMarket: "Auctioned",
4781
- Trainer: "JoinedStable",
4782
- TrainerExam: "JoinedStable",
4783
4814
  Disclaimer: "Accepted",
4784
4815
  }
4785
4816
 
@@ -4967,7 +4998,7 @@ type ClubCardDefaultDecks =
4967
4998
 
4968
4999
  interface ClubCardPlayer {
4969
5000
  Character: Character;
4970
- Control: string;
5001
+ Control: "AI" | "Player" | "Online";
4971
5002
  Index: number;
4972
5003
  Sleeve: number;
4973
5004
  Deck: ClubCard[];
@@ -4986,18 +5017,46 @@ interface ClubCardPlayer {
4986
5017
  CardsPlayedThisTurn: Record<number, ClubCard[]>
4987
5018
  }
4988
5019
 
5020
+ type ClubCardMessageType =
5021
+ | "Prerequisite"
5022
+ | "StartTurnInfo"
5023
+ | "SystemMessage"
5024
+ | "PlayersMessage"
5025
+ | "PlayersDisconnected"
5026
+ | "CardsEffect"
5027
+ | "TurnEndEffect"
5028
+ | "KnotEvent"
5029
+ | "Actions"
5030
+ | "ActionSeparator"
5031
+ | "FameMoneyInfo"
5032
+ | "StartTurnEvent"
5033
+ | "VictoryInfo"
5034
+ ;
5035
+
5036
+ type ClubCardPlaceholderKeysType =
5037
+ | "MONEYLABEL"
5038
+ | "FAMELABEL"
5039
+ | "AMOUNT"
5040
+ | "CARDNAME"
5041
+ | "MONEYAMOUNT"
5042
+ | "FAMEAMOUNT"
5043
+ | "TURNNUMBER"
5044
+ | "PLAYERNAME"
5045
+ ;
5046
+
4989
5047
  interface ClubCardMessage {
4990
- TextGetKey: string; // Localization key
4991
- MessageText?: string; // Message Text
4992
- MessageType: string; // Type of message (e.g., ACTION, SYSTEM, IMMEDIATE)
4993
- PlayerId: string; // ID of the player who triggered the message
4994
- TurnCounter: number; // Turn number when the message was created
4995
- Placeholders: { // Dynamic data for text replacement
4996
- [key: string]: string | number;
5048
+ /** Localization key */
5049
+ TextGetKey: string;
5050
+ /** Type of message (e.g., ACTION, SYSTEM, IMMEDIATE) */
5051
+ MessageType: ClubCardMessageType;
5052
+ /** ID of the player who triggered the message */
5053
+ PlayerId: string;
5054
+ /** Turn number when the message was created */
5055
+ TurnCounter: number;
5056
+ /** Dynamic data for text replacement */
5057
+ Placeholders: {
5058
+ [key in ClubCardPlaceholderKeysType]?: string;
4997
5059
  };
4998
- PlayerName?: string;
4999
- SourcePlayer?: string;
5000
- OpponentPlayer?: string;
5001
5060
  }
5002
5061
 
5003
5062
  /**
@@ -5218,3 +5277,13 @@ interface LayeringDisplay extends Rect {
5218
5277
  }
5219
5278
 
5220
5279
  // #endregion
5280
+
5281
+ declare namespace Item {
5282
+ interface Options {
5283
+ /** The color of the item */
5284
+ color?: Readonly<ItemColor>;
5285
+ difficulty?: number;
5286
+ craft?: Readonly<CraftingItem>;
5287
+ property?: Readonly<ItemProperties>;
5288
+ }
5289
+ }