bc-stubs 128.0.0 → 129.0.0

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 (124) hide show
  1. package/bc/NativeDeclarations/Commands.d.ts +16 -4
  2. package/bc/NativeDeclarations/Element.d.ts +29 -0
  3. package/bc/NativeDeclarations/Female3DCG_Types.d.ts +25 -3
  4. package/bc/NativeDeclarations/FriendList.d.ts +3 -1
  5. package/bc/NativeDeclarations/Messages.d.ts +35 -1
  6. package/bc/NativeDeclarations/Typedef.d.ts +83 -34
  7. package/bc/Screens/Character/FriendList/FriendList.d.ts +9 -0
  8. package/bc/Screens/Character/InformationSheet/InformationSheet.d.ts +1 -5
  9. package/bc/Screens/Character/ItemColor/ItemColor.d.ts +34 -16
  10. package/bc/Screens/Character/Preference/Arousal.d.ts +2 -0
  11. package/bc/Screens/Character/Preference/Audio.d.ts +1 -1
  12. package/bc/Screens/Character/Preference/CensoredWords.d.ts +1 -1
  13. package/bc/Screens/Character/Preference/Chat.d.ts +1 -1
  14. package/bc/Screens/Character/Preference/Difficulty.d.ts +1 -1
  15. package/bc/Screens/Character/Preference/Extensions.d.ts +3 -1
  16. package/bc/Screens/Character/Preference/Gender.d.ts +1 -1
  17. package/bc/Screens/Character/Preference/General.d.ts +1 -1
  18. package/bc/Screens/Character/Preference/Graphics.d.ts +1 -1
  19. package/bc/Screens/Character/Preference/Immersion.d.ts +1 -1
  20. package/bc/Screens/Character/Preference/Keybindings.d.ts +1 -1
  21. package/bc/Screens/Character/Preference/Main.d.ts +1 -1
  22. package/bc/Screens/Character/Preference/Online.d.ts +1 -1
  23. package/bc/Screens/Character/Preference/Preference.d.ts +1 -0
  24. package/bc/Screens/Character/Preference/Restriction.d.ts +1 -5
  25. package/bc/Screens/Character/Preference/Scripts.d.ts +1 -1
  26. package/bc/Screens/Character/Preference/Security.d.ts +1 -1
  27. package/bc/Screens/Character/Preference/Visibility.d.ts +80 -13
  28. package/bc/Screens/Character/Title/Title.d.ts +8 -0
  29. package/bc/Screens/Character/Wardrobe/Wardrobe.d.ts +2 -2
  30. package/bc/Screens/Cutscene/NPCCollaring/NPCCollaring.d.ts +10 -10
  31. package/bc/Screens/Cutscene/NPCSlaveAuction/NPCSlaveAuction.d.ts +10 -10
  32. package/bc/Screens/Cutscene/NPCWedding/NPCWedding.d.ts +6 -6
  33. package/bc/Screens/Cutscene/PlayerCollaring/PlayerCollaring.d.ts +10 -10
  34. package/bc/Screens/Cutscene/PlayerMistress/PlayerMistress.d.ts +8 -8
  35. package/bc/Screens/Inventory/ItemArms/HempRope/HempRope.d.ts +1 -1
  36. package/bc/Screens/Inventory/ItemArms/NylonRope/NylonRope.d.ts +1 -1
  37. package/bc/Screens/Inventory/ItemBreast/FuturisticBra/FuturisticBra.d.ts +1 -1
  38. package/bc/Screens/Inventory/ItemDevices/FuturisticCrate/FuturisticCrate.d.ts +1 -1
  39. package/bc/Screens/Inventory/ItemDevices/Kennel/Kennel.d.ts +1 -1
  40. package/bc/Screens/Inventory/ItemFeet/HempRope/HempRope.d.ts +1 -1
  41. package/bc/Screens/Inventory/ItemFeet/NylonRope/NylonRope.d.ts +1 -1
  42. package/bc/Screens/Inventory/ItemMisc/OwnerTimerPadlock/OwnerTimerPadlock.d.ts +8 -4
  43. package/bc/Screens/Inventory/ItemMisc/PasswordPadlock/PasswordPadlock.d.ts +37 -6
  44. package/bc/Screens/Inventory/ItemMisc/TimerPadlock/TimerPadlock.d.ts +7 -1
  45. package/bc/Screens/Inventory/ItemNeck/PetSuitShockCollar/PetSuitShockCollar.d.ts +1 -1
  46. package/bc/Screens/Inventory/ItemNeck/SlaveCollar/SlaveCollar.d.ts +3 -1
  47. package/bc/Screens/Inventory/ItemNeckRestraints/CollarLeash/CollarLeash.d.ts +3 -3
  48. package/bc/Screens/Inventory/ItemNipples/LactationPump/LactationPump.d.ts +1 -1
  49. package/bc/Screens/Inventory/ItemPelvis/FuturisticChastityBelt/FuturisticChastityBelt.d.ts +2 -1
  50. package/bc/Screens/Inventory/ItemPelvis/FuturisticTrainingBelt/FuturisticTrainingBelt.d.ts +2 -2
  51. package/bc/Screens/Inventory/ItemPelvis/ModularChastityBelt/ModularChastityBelt.d.ts +44 -12
  52. package/bc/Screens/Inventory/Wings/SteampunkWings/SteampunkWings.d.ts +1 -1
  53. package/bc/Screens/MiniGame/ClubCard/ClubCard.d.ts +1 -0
  54. package/bc/Screens/MiniGame/HorseWalk/HorseWalk.d.ts +6 -6
  55. package/bc/Screens/MiniGame/Kidnap/Kidnap.d.ts +7 -5
  56. package/bc/Screens/MiniGame/MagicBattle/MagicBattle.d.ts +2 -2
  57. package/bc/Screens/MiniGame/MaidCleaning/MaidCleaning.d.ts +2 -2
  58. package/bc/Screens/MiniGame/MaidDrinks/MaidDrinks.d.ts +4 -4
  59. package/bc/Screens/MiniGame/PlayerAuction/PlayerAuction.d.ts +2 -2
  60. package/bc/Screens/MiniGame/RhythmGame/RhythmGame.d.ts +206 -54
  61. package/bc/Screens/MiniGame/Tennis/Tennis.d.ts +2 -2
  62. package/bc/Screens/MiniGame/Therapy/Therapy.d.ts +2 -2
  63. package/bc/Screens/Online/ChatAdmin/ChatAdmin.d.ts +2 -2
  64. package/bc/Screens/Online/ChatRoom/ChatRoom.d.ts +37 -48
  65. package/bc/Screens/Online/ChatRoom/ChatRoomCharacterView.d.ts +1 -0
  66. package/bc/Screens/Online/ChatRoom/ChatRoomMapView.d.ts +2 -2
  67. package/bc/Screens/Online/ChatRoom/Commands.d.ts +40 -1
  68. package/bc/Screens/Online/ChatSearch/ChatSearch.d.ts +1 -0
  69. package/bc/Screens/Room/AsylumEntrance/AsylumEntrance.d.ts +6 -6
  70. package/bc/Screens/Room/AsylumGGTS/AsylumGGTS.d.ts +13 -4
  71. package/bc/Screens/Room/AsylumTherapy/AsylumTherapy.d.ts +4 -4
  72. package/bc/Screens/Room/CollegeCafeteria/CollegeCafeteria.d.ts +3 -3
  73. package/bc/Screens/Room/CollegeDetention/CollegeDetention.d.ts +4 -11
  74. package/bc/Screens/Room/CollegeTeacher/CollegeTeacher.d.ts +5 -5
  75. package/bc/Screens/Room/CollegeTheater/CollegeTheater.d.ts +3 -3
  76. package/bc/Screens/Room/Crafting/Crafting.d.ts +3 -0
  77. package/bc/Screens/Room/DailyJob/DailyJob.d.ts +20 -3
  78. package/bc/Screens/Room/Gambling/Gambling.d.ts +4 -4
  79. package/bc/Screens/Room/Infiltration/Infiltration.d.ts +20 -19
  80. package/bc/Screens/Room/InfiltrationPerks/InfiltrationPerks.d.ts +8 -13
  81. package/bc/Screens/Room/Introduction/Introduction.d.ts +2 -2
  82. package/bc/Screens/Room/MagicSchoolFindsAround/MagicSchoolFindsAround.d.ts +14 -16
  83. package/bc/Screens/Room/MagicSchoolLaboratory/MagicSchoolLaboratory.d.ts +1 -0
  84. package/bc/Screens/Room/MaidQuarters/MaidQuarters.d.ts +4 -5
  85. package/bc/Screens/Room/MainHall/MainHall.d.ts +1 -0
  86. package/bc/Screens/Room/MovieStudio/MovieStudio.d.ts +27 -23
  87. package/bc/Screens/Room/Nursery/Nursery.d.ts +89 -23
  88. package/bc/Screens/Room/Pandora/Pandora.d.ts +15 -15
  89. package/bc/Screens/Room/PandoraPrison/PandoraPrison.d.ts +5 -5
  90. package/bc/Screens/Room/Photographic/Photographic.d.ts +2 -0
  91. package/bc/Screens/Room/PlatformDialog/PlatformDialog.d.ts +1 -0
  92. package/bc/Screens/Room/Private/Private.d.ts +27 -19
  93. package/bc/Screens/Room/Sarah/Sarah.d.ts +19 -18
  94. package/bc/Screens/Room/Shibari/Shibari.d.ts +2 -2
  95. package/bc/Screens/Room/Shop/Shop.d.ts +3 -2
  96. package/bc/Scripts/Asset.d.ts +1 -1
  97. package/bc/Scripts/Audio.d.ts +3 -0
  98. package/bc/Scripts/Character.d.ts +3 -0
  99. package/bc/Scripts/Common.d.ts +40 -17
  100. package/bc/Scripts/CommonDraw.d.ts +8 -8
  101. package/bc/Scripts/Dialog.d.ts +49 -38
  102. package/bc/Scripts/DictionaryBuilder.d.ts +21 -0
  103. package/bc/Scripts/Drawing.d.ts +1 -1
  104. package/bc/Scripts/Element.d.ts +37 -0
  105. package/bc/Scripts/ExtendedItem.d.ts +2 -2
  106. package/bc/Scripts/GLDraw.d.ts +0 -1
  107. package/bc/Scripts/Game.d.ts +1 -1
  108. package/bc/Scripts/Graph.d.ts +31 -16
  109. package/bc/Scripts/Inventory.d.ts +2 -0
  110. package/bc/Scripts/KeybindingManager.d.ts +12 -12
  111. package/bc/Scripts/NPC.d.ts +10 -10
  112. package/bc/Scripts/Preference.d.ts +1 -0
  113. package/bc/Scripts/Reputation.d.ts +16 -6
  114. package/bc/Scripts/Server.d.ts +3 -10
  115. package/bc/Scripts/Speech.d.ts +2 -0
  116. package/bc/Scripts/Text.d.ts +23 -3
  117. package/bc/Scripts/TightenLoosenItem.d.ts +7 -3
  118. package/bc/Scripts/Translation.d.ts +2 -0
  119. package/bc/Scripts/TypedItem.d.ts +2 -0
  120. package/bc/Scripts/Validation.d.ts +5 -5
  121. package/bc/Scripts/VibratorMode.d.ts +3 -2
  122. package/bc/bcmodsdk.d.ts +166 -0
  123. package/package.json +1 -1
  124. package/bc/Scripts/Drawing3D.d.ts +0 -21
@@ -6,11 +6,11 @@ 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: Optional<ICommand, 'Tag'>, 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
- Prerequisite?: (this: Optional<ICommand, 'Tag'>) => boolean;
11
+ Prerequisite?: (this: ICommand) => boolean;
12
12
  /** Function to execute on autocomplete key (Tab default) press if chat input matches tag */
13
- AutoComplete?: (this: Optional<ICommand, 'Tag'>, arguments: string[], lowercaseMessage: string, message: string) => void;
13
+ AutoComplete?: (this: ICommand, arguments: string[], lowercaseMessage: string, message: string) => void;
14
14
  /** Whether chat input should be cleared after execution of command. True if omitted */
15
15
  Clear?: false;
16
16
  /** Whether the case of the command should be preserved. False if omitted */
@@ -27,7 +27,19 @@ interface ICommand {
27
27
 
28
28
  type ArgumentDef = {
29
29
  name: string | Partial<Record<ServerChatRoomLanguage | "TW", string>>;
30
- description: string | Partial<Record<ServerChatRoomLanguage | "TW", string>>;
30
+ description?: string | Partial<Record<ServerChatRoomLanguage | "TW", string>>;
31
31
  suggestions?: Thunk<string[]>;
32
32
  };
33
33
  type Subcommand = Omit<ICommand, 'Subcommands' | 'AutoComplete'>;
34
+
35
+ type CommandsModListStatus = "ok" | "declined" | "error" | "timeout";
36
+ type CommandsModListResult = { status: CommandsModListStatus; mods?: ModSDKModInfo[] };
37
+ type CommandsModListRequest = {
38
+ requestId: string;
39
+ pending: Set<number>;
40
+ timeoutId: number;
41
+ rootEl: HTMLDivElement;
42
+ results: Map<number, CommandsModListResult>;
43
+ total: number;
44
+ finalized: boolean;
45
+ };
@@ -49,3 +49,32 @@ declare namespace ElementUnpackIDs {
49
49
  filter?: (value: null | HTMLElement, index: number, array: (null | HTMLElement)[]) => value is T;
50
50
  }
51
51
  }
52
+
53
+ /** Options and instance type returned by {@link ElementCreateSearchableDropdown}. */
54
+ declare namespace ElementSearchableDropdown {
55
+ interface OptionItem {
56
+ value: string;
57
+ label: string;
58
+ group?: string;
59
+ disabled?: boolean;
60
+ }
61
+
62
+ /** Imperative helpers attached to the root element returned from {@link ElementCreateSearchableDropdown}. */
63
+ interface SearchableDropdownInstance {
64
+ bcSetOptions(optionsList: readonly OptionItem[], newValue?: string): void;
65
+ bcSetValue(newValue: string): void;
66
+ bcSetDisabled(disabled: boolean): void;
67
+ }
68
+
69
+ /** Root `<div>` of a searchable dropdown. */
70
+ type SearchableDropdownElement = HTMLDivElement & SearchableDropdownInstance;
71
+
72
+ interface CreateOptions {
73
+ value?: string;
74
+ placeholder?: string;
75
+ searchPlaceholder?: string;
76
+ emptyText?: string;
77
+ disabled?: boolean;
78
+ parent?: Node;
79
+ }
80
+ }
@@ -920,7 +920,24 @@ interface AssetLayerDefinition extends AssetCommonPropertiesGroupAssetLayer, Ass
920
920
  ShowForAttribute?: AssetAttribute[];
921
921
  }
922
922
 
923
- type ExtendedArchetype = "modular" | "typed" | "vibrating" | "variableheight" | "text" | "noarch";
923
+ /**
924
+ * The list of all archetypes and their config and data types.
925
+ *
926
+ * @see {@link ExtendedArchetype}
927
+ */
928
+ interface ExtendedArchetypes {
929
+ typed: [TypedItemConfig, TypedItemData];
930
+ modular: [ModularItemConfig, ModularItemData];
931
+ vibrating: [VibratingItemConfig, VibratingItemData];
932
+ variableheight: [VariableHeightConfig, VariableHeightData];
933
+ text: [TextItemConfig, TextItemData];
934
+ noarch: [NoArchItemConfig, NoArchItemData];
935
+ }
936
+
937
+ /**
938
+ * All known archetypes' names
939
+ */
940
+ type ExtendedArchetype = Prettify<keyof ExtendedArchetypes>;
924
941
 
925
942
  /**
926
943
  * An object containing extended item configurations keyed by group name.
@@ -933,11 +950,16 @@ type ExtendedItemMainConfig = Partial<Record<AssetGroupName, ExtendedItemGroupCo
933
950
  */
934
951
  type ExtendedItemGroupConfig = Record<string, AssetArchetypeConfig>;
935
952
 
953
+ /** Get the archetype config type */
954
+ type AssetArchetypeGetConfig<T extends keyof ExtendedArchetypes> = ExtendedArchetypes[T][0];
955
+ /** Get the archetype data type */
956
+ type AssetArchetypeGetData<T extends keyof ExtendedArchetypes> = ExtendedArchetypes[T][1];
957
+
936
958
  /** A union of all (non-abstract) extended item configs */
937
- type AssetArchetypeConfig = TypedItemConfig | ModularItemConfig | VibratingItemConfig | VariableHeightConfig | TextItemConfig | NoArchItemConfig;
959
+ type AssetArchetypeConfig = AssetArchetypeGetConfig<keyof ExtendedArchetypes>;
938
960
 
939
961
  /** A union of all (non-abstract) extended item datas */
940
- type AssetArchetypeData = TypedItemData | ModularItemData | VibratingItemData | VariableHeightData | TextItemData | NoArchItemData;
962
+ type AssetArchetypeData = AssetArchetypeGetData<keyof ExtendedArchetypes>;
941
963
 
942
964
  interface ExtendedItemConfig<OptionType extends ExtendedItemOption> {
943
965
  /** The archetype of the extended item config */
@@ -1,6 +1,6 @@
1
1
  type FriendListModes = FriendListMode[];
2
2
  type FriendListMode = "OnlineFriends" | "Beeps" | "AllFriends";
3
- type FriendListSortingMode = 'None' | 'MemberName' | 'MemberNickname' | 'MemberNumber' | 'ChatRoomName' | 'RelationType' | 'ChatRoomType';
3
+ type FriendListSortingMode = 'None' | 'MemberName' | 'MemberNickname' | 'MemberNumber' | 'ChatRoomName' | 'RelationType' | 'ChatRoomType' | 'ChatRoomMemberCount';
4
4
  type FriendListSortingDirection = 'Asc' | 'Desc';
5
5
 
6
6
  type FriendListReturn<T extends ModuleType> = { Screen: ModuleScreens[T], Module: T, IsInChatRoom?: boolean, hasScrolledChat?: boolean };
@@ -26,6 +26,8 @@ type FriendRawRoom = {
26
26
  caption: string;
27
27
  canSearchRoom: boolean;
28
28
  types: (null | FriendListIcon)[];
29
+ ChatRoomLimit?: number;
30
+ ChatRoomMemberCount?: number;
29
31
  };
30
32
 
31
33
  type FriendRawBeep = {
@@ -323,6 +323,8 @@ interface ServerFriendInfo {
323
323
  MemberName: string;
324
324
  ChatRoomSpace?: ServerChatRoomSpace | null;
325
325
  ChatRoomName?: string | null;
326
+ ChatRoomLimit?: number;
327
+ ChatRoomMemberCount?: number;
326
328
  Private?: true | undefined;
327
329
  }
328
330
 
@@ -776,6 +778,21 @@ interface MsgIdDictionaryEntry {
776
778
  Tag: "MsgId";
777
779
  }
778
780
 
781
+ /**
782
+ * A dictionary entry for GGTS information.
783
+ */
784
+ interface GGTSDictionaryEntry {
785
+ Tag: "GGTSData";
786
+ Action: {
787
+ type: "GGTSNewTask"
788
+ } | {
789
+ type: "GGTSSetSpeed"
790
+ speed: number
791
+ } | {
792
+ type: "GGTSPause"
793
+ duration: number
794
+ }
795
+ }
779
796
  /**
780
797
  * A dictionary entry for teleport events
781
798
  */
@@ -795,6 +812,20 @@ interface MapViewChangeKeyEventDictionaryEntry {
795
812
  Bool: boolean;
796
813
  }
797
814
 
815
+ /** Payload for hidden Mod SDK remote mods query messages */
816
+ interface ModSdkModsQueryPayloadDictionaryEntry {
817
+ Tag: "ModSdkModsQueryPayload";
818
+ RequestId: string;
819
+ }
820
+
821
+ /** Payload for hidden Mod SDK remote mods reply messages */
822
+ interface ModSdkModsReplyPayloadDictionaryEntry {
823
+ Tag: "ModSdkModsReplyPayload";
824
+ RequestId: string;
825
+ Status: CommandsModListStatus;
826
+ ModsJson: string;
827
+ }
828
+
798
829
  /**
799
830
  * A dictionary entry with metadata about the chat message transmitted.
800
831
  *
@@ -826,7 +857,10 @@ type ChatMessageDictionaryEntry =
826
857
  | MsgIdDictionaryEntry
827
858
  | ReplyIdDictionaryEntry
828
859
  | MapViewTeleportEventDictionaryEntry
829
- | MapViewChangeKeyEventDictionaryEntry;
860
+ | MapViewChangeKeyEventDictionaryEntry
861
+ | GGTSDictionaryEntry
862
+ | ModSdkModsQueryPayloadDictionaryEntry
863
+ | ModSdkModsReplyPayloadDictionaryEntry;
830
864
 
831
865
 
832
866
  type ChatMessageDictionary = ChatMessageDictionaryEntry[];
@@ -192,7 +192,7 @@ declare namespace ElementButton {
192
192
  */
193
193
  icons?: readonly (null | undefined | InventoryIcon | CustomIcon)[];
194
194
  /** The role of the button. All accepted values are currently special-cased in order to set role-specific event listeners and/or attributes. */
195
- role?: "radio" | "combobox" | "checkbox" | "menuitemradio" | "menuitemcheckbox" | "spinbutton" | "menuitem" | "switch";
195
+ role?: "radio" | "combobox" | "checkbox" | "menuitemradio" | "menuitemcheckbox" | "spinbutton" | "menuitem" | "switch" | "none";
196
196
  /** Whether to limit the default styling of the button's border and background */
197
197
  noStyling?: boolean;
198
198
  /** Whether the button should be disabled or not */
@@ -621,6 +621,7 @@ interface AssetPoseMap {
621
621
 
622
622
  type AssetPoseCategory = keyof AssetPoseMap;
623
623
  type AssetPoseName = AssetPoseMap[keyof AssetPoseMap];
624
+ type NullPoseType = null | ""; // XXX: we're not always consistent there
624
625
 
625
626
  /**
626
627
  * A record mapping pose names to the actually to-be drawn poses.
@@ -648,15 +649,18 @@ type CraftingPropertyType =
648
649
  "Flexible" | "Nimble" | "Arousing" | "Dull" | "Edging" | "Heavy" | "Light"
649
650
  ;
650
651
 
652
+ type AssetGenericSize = "Small" | "Medium" | "Large";
651
653
  type AssetAttribute =
652
- "Skirt" | "SuitLower" | "UpperLarge" | "Diaper" |
653
- "ShortHair" | "SmallEars" | "NoEars" | "NoseRing" | "HoodieFix" |
654
- "CanAttachMittens" |
655
- "IsChestHarness" | "IsHipHarness" |
656
- "PenisLayer" | "PussyLayer" | "GenitaliaCover" | "Pussy1" | "Pussy2" | "Pussy3" |
657
- "CagePlastic2" | "CageTechno" | "CageFlat" |
658
- "FuturisticRecolor" | "FuturisticRecolorDisplay" |
659
- "PortalLinkLockable" | `PortalLinkChastity${string}` | `PortalLinkActivity${ActivityName}` | `PortalLinkTarget${AssetGroupItemName}`
654
+ | "Skirt" | "SuitLower" | "UpperLarge"
655
+ | "ShortHair" | "SmallEars" | "NoEars" | "NoseRing" | "HoodieFix"
656
+ | "CanAttachMittens"
657
+ | "IsChestHarness" | "IsHipHarness"
658
+ | "PenisLayer" | "PussyLayer" | "GenitaliaCover" | "Pussy1" | "Pussy2" | "Pussy3"
659
+ | "CagePlastic2" | "CageTechno" | "CageFlat"
660
+ | "FuturisticRecolor" | "FuturisticRecolorDisplay" | "FuturisticLock"
661
+ | "PortalLinkLockable" | `PortalLinkChastity${string}` | `PortalLinkActivity${ActivityName}` | `PortalLinkTarget${AssetGroupItemName}`
662
+ | "Diaper" | `Diaper${AssetGenericSize}` | "IsNurseryOutfit" | "Pacifier"
663
+ | "PetSuit"
660
664
  ;
661
665
 
662
666
  type PosePrerequisite = `Can${AssetPoseName}`;
@@ -835,7 +839,7 @@ type ChatRoomOwnershipEvent =
835
839
  | "CanOfferEndTrial"
836
840
  | "CanEndTrial";
837
841
 
838
- type ChatRoom = ServerChatRoomData;
842
+ type ChatRoomData = ServerChatRoomData;
839
843
  // TODO: Review the partial nature of the `Custom` and `Space` fields
840
844
  type ChatRoomSettings = Prettify<
841
845
  Omit<ServerChatRoomData, "Character" | "Custom" | "Space">
@@ -1117,6 +1121,7 @@ interface AssetGroup {
1117
1121
  IsItem(): this is AssetItemGroup;
1118
1122
  /** Return whether this group belongs to the `Script` {@link AssetGroup.Category} */
1119
1123
  IsScript(): this is AssetScriptGroup;
1124
+ HasExpression(): this is AssetExpressionGroup;
1120
1125
  }
1121
1126
 
1122
1127
  /** An AssetGroup subtype for the `Appearance` {@link AssetGroup.Category} */
@@ -1148,6 +1153,13 @@ interface AssetScriptGroup extends AssetGroup {
1148
1153
  readonly IsDefault: false;
1149
1154
  }
1150
1155
 
1156
+
1157
+ /** An AssetGroup subtype for groups that allows expressions */
1158
+ interface AssetExpressionGroup extends AssetAppearanceGroup {
1159
+ readonly Name: ExpressionGroupName;
1160
+ readonly AllowExpression: readonly ExpressionName[];
1161
+ }
1162
+
1151
1163
  /** A type mapping all asset group names to their respective, {@link AssetGroup.Category}-specific group type */
1152
1164
  type AssetGroupMapping = (
1153
1165
  { [key in AssetGroupBodyName]: AssetAppearanceGroup }
@@ -1745,6 +1757,36 @@ interface PrivateCharacterData {
1745
1757
  FromPandora?: boolean;
1746
1758
  }
1747
1759
 
1760
+ type PrivateActivityType =
1761
+ | "Kiss"
1762
+ | "FrenchKiss"
1763
+ | "Caress"
1764
+ | "Rub"
1765
+ | `Masturbate${"Hand" | "Tongue" | "Player" | "Self"}`
1766
+ | "Underwear"
1767
+ | "Naked"
1768
+ | "Bed"
1769
+ | `Egg${"Insert" | "SpeedUp" | "SpeedDown"}`
1770
+ | `Lover${"Lock" | "Unlock"}`
1771
+ | `${"Lock" | "Unlock"}Belt`
1772
+ | "Skip1" | "Skip2"
1773
+ ;
1774
+
1775
+ type PrivatePunishmentType =
1776
+ | "Cage"
1777
+ | "Bound"
1778
+ | "BoundPet"
1779
+ | "ChastityBra"
1780
+ | "ChastityBelt"
1781
+ | "ForceNaked"
1782
+ | `Confiscate${"Key" | "Crop" | "Whip"}`
1783
+ | "SleepCage"
1784
+ | "LockOut"
1785
+ | "Cell"
1786
+ | "OwnerLocks"
1787
+ | "Asylum"
1788
+ | ""
1789
+ ;
1748
1790
  interface Character {
1749
1791
  /**
1750
1792
  * The character's cache slot ID in the Character array
@@ -2079,7 +2121,7 @@ interface Character {
2079
2121
  MapData?: ChatRoomMapData;
2080
2122
  RunScripts?: boolean;
2081
2123
  HasScriptedAssets?: boolean;
2082
- Cage?: boolean;
2124
+ Cage?: true;
2083
2125
  Difficulty?: { Level: number }; // technically never as it is Online-only
2084
2126
  ArousalZoom?: boolean;
2085
2127
  FixedImage?: string;
@@ -2180,9 +2222,14 @@ interface Character {
2180
2222
  PrivateBedAppearance?: string;
2181
2223
  }
2182
2224
 
2225
+ type PrivatePunishment = (
2226
+ "Cage" | "Bound" | "BoundPet" | "ChastityBra" | "ForceNaked" | "ConfiscateKey" | "ConfiscateCrop" | "ConfiscateWhip"
2227
+ | "SleepCage" | "LockOut" | "Cell" | "OwnerLocks" | "Asylum" | "ChastityBelt"
2228
+ );
2229
+
2183
2230
  interface KidnapCard {
2184
2231
  Move: number;
2185
- Value?: number;
2232
+ Value: number;
2186
2233
  }
2187
2234
 
2188
2235
  /** Kidnap minigame */
@@ -2190,9 +2237,11 @@ interface Character {
2190
2237
  KidnapWillpower?: number;
2191
2238
  KidnapMaxWillpower?: number;
2192
2239
  KidnapCard?: KidnapCard[];
2193
- KidnapStat?: [number, number, number, number];
2240
+ KidnapStat?: [Strength: number, Charisma: number, Initiative: number, number];
2194
2241
  }
2195
2242
 
2243
+ type KidnapModeType = "Intro" | "SelectItem" | "SelectMove" | "ShowMove" | "UpperHand" | "SuddenDeath" | "End";
2244
+
2196
2245
  type PandoraPrisonActivity = "Beat" | "Water" | "Transfer" | "Quickie" | "Strip" | "Chastity" | "Tickle" | "ChangeBondage";
2197
2246
 
2198
2247
  /** Pandora NPCs */
@@ -2464,6 +2513,11 @@ type ChatRoomCustomizationType = 0 | 1 | 2 | 3;
2464
2513
  interface PlayerOnlineSettings {
2465
2514
  AutoBanBlackList: boolean;
2466
2515
  AutoBanGhostList: boolean;
2516
+ /**
2517
+ * When true, respond to `/mods remote` hidden queries with your Mod SDK list and a declined reply otherwise
2518
+ * @default true
2519
+ */
2520
+ RespondRemoteModListQueries: boolean;
2467
2521
  DisableAnimations: boolean;
2468
2522
  SearchFriendsFirst: boolean;
2469
2523
  SendStatus: boolean;
@@ -2475,6 +2529,11 @@ interface PlayerOnlineSettings {
2475
2529
  }
2476
2530
 
2477
2531
  /** Pandora Player extension */
2532
+ type InfiltrationPerks = (
2533
+ "Strength" | "Charisma" | "Agility" | "Resilience" | "Endurance" | "Investigation" | "Bribery" | "Negotiation"
2534
+ | "Recruiter" | "Forgery" | "Recovery" | "Cartographer" | "Lockpicker" | "Detector"
2535
+ );
2536
+
2478
2537
  interface PlayerCharacter {
2479
2538
  Infiltration?: InfiltrationType;
2480
2539
  }
@@ -2487,7 +2546,7 @@ interface InfiltrationType {
2487
2546
  Difficulty: number;
2488
2547
  FightDone?: boolean;
2489
2548
  }
2490
- Perks?: string;
2549
+ Perks?: "" | `${number}`;
2491
2550
  }
2492
2551
 
2493
2552
  /** Kinky Dungeon Player extension */
@@ -2832,7 +2891,7 @@ declare namespace ExtendedItemCallbacks {
2832
2891
  */
2833
2892
  type BeforeDraw<
2834
2893
  PersistentData extends AnimationPersistentData = AnimationPersistentData
2835
- > = ExtendedItemCallback<[drawData: DynamicDrawingData<PersistentData>], DynamicBeforeDrawOverrides>;
2894
+ > = ExtendedItemCallback<[drawData: DynamicDrawingData<PersistentData>], DynamicBeforeDrawOverrides | undefined>;
2836
2895
  /**
2837
2896
  * Callback for extended item `ScriptDraw` functions.
2838
2897
  * Relevant for assets that define {@link Asset.DynamicScriptDraw}.
@@ -3041,16 +3100,6 @@ interface ExtendedItemData<OptionType extends ExtendedItemOption> {
3041
3100
  name: string;
3042
3101
  }
3043
3102
 
3044
- /** A struct-type that maps archetypes to their respective extended item data. */
3045
- interface ExtendedDataLookupStruct {
3046
- [ExtendedArchetype.TYPED]: TypedItemData;
3047
- [ExtendedArchetype.MODULAR]: ModularItemData;
3048
- [ExtendedArchetype.VIBRATING]: VibratingItemData;
3049
- [ExtendedArchetype.VARIABLEHEIGHT]: VariableHeightData;
3050
- [ExtendedArchetype.TEXT]: TextItemData;
3051
- [ExtendedArchetype.NOARCH]: NoArchItemData;
3052
- }
3053
-
3054
3103
  interface AssetOverrideHeight {
3055
3104
  Height: number;
3056
3105
  Priority: number;
@@ -3927,7 +3976,7 @@ interface GamePrisonParameters {
3927
3976
  interface GameMagicSchoolFindsAroundParameters {
3928
3977
  KitsuneQuestProgress?: number;
3929
3978
  TheresaQuestProgress?: number;
3930
- TheresaBadWords?: string[];
3979
+ TheresaBadWords?: number[];
3931
3980
  TheresaTooRude?: boolean;
3932
3981
  TheresaHideUntil?: number;
3933
3982
  }
@@ -4161,7 +4210,7 @@ interface DynamicDrawingData<T extends AnimationPersistentData = AnimationPersis
4161
4210
  G: string;
4162
4211
  AG: AssetGroup;
4163
4212
  L: string;
4164
- Pose: AssetPoseName;
4213
+ Pose: AssetPoseName | NullPoseType;
4165
4214
  LayerType: string;
4166
4215
  BlinkExpression: string;
4167
4216
  drawCanvas: DrawCanvasCallback;
@@ -4184,7 +4233,7 @@ interface DynamicBeforeDrawOverrides {
4184
4233
  LayerType?: string;
4185
4234
  L?: string;
4186
4235
  AlphaMasks?: RectTuple[];
4187
- Pose?: AssetPoseName;
4236
+ Pose?: AssetPoseName | NullPoseType;
4188
4237
  }
4189
4238
 
4190
4239
  type DynamicDrawTextEffect = "burn";
@@ -4359,9 +4408,9 @@ interface CraftingItem {
4359
4408
  /** The crafted item effects mapped to their effect strength. */
4360
4409
  Effects: Partial<Record<CraftingPropertyType, number>>;
4361
4410
  /**
4362
- * The crafted item effect.
4363
- * @deprecated superseded by {@link CraftingItem.Effects}
4364
- */
4411
+ * The crafted item effect.
4412
+ * @deprecated superseded by {@link CraftingItem.Effects}
4413
+ */
4365
4414
  Property?: CraftingPropertyType;
4366
4415
  /** The comma-separated color(s) of the item. */
4367
4416
  Color: string;
@@ -4573,8 +4622,8 @@ interface ItemColorStateType {
4573
4622
  pageCount: number;
4574
4623
  /** Whether the opacity is user-configurable */
4575
4624
  editOpacity: boolean;
4576
- drawImport: () => Promise<string>;
4577
- drawExport: (data: string) => Promise<void>;
4625
+ drawImport?: () => Promise<string>;
4626
+ drawExport?: (data: string) => Promise<void>;
4578
4627
  }
4579
4628
 
4580
4629
  /** A hexadecimal color code */
@@ -5012,7 +5061,7 @@ interface ChatRoomView extends Pick<ScreenFunctions, "Run" | "MouseDown" | "Mous
5012
5061
  Deactivate?: () => void;
5013
5062
  Draw: () => void;
5014
5063
  DrawUi: () => void;
5015
- SyncRoomProperties?: (data: ServerChatRoomSyncMessage) => void;
5064
+ RoomUpdated?: () => void;
5016
5065
  CanStartWhisper?: (C: Character) => boolean;
5017
5066
  CanLeave?: () => boolean;
5018
5067
  Screenshot: () => void;
@@ -236,3 +236,12 @@ declare const FriendListIconMapping: {
236
236
  sortKey: string;
237
237
  };
238
238
  };
239
+ /**
240
+ * Note that the `Caption` field is only initialized in {@link FriendListLoad}..
241
+ * @type {Record<FriendListRelationType, { Caption?: string, Icon: string, SortingPriority: number }>}
242
+ */
243
+ declare const FriendListTypeData: Record<FriendListRelationType, {
244
+ Caption?: string;
245
+ Icon: string;
246
+ SortingPriority: number;
247
+ }>;
@@ -10,11 +10,7 @@ declare function InformationSheetRun(): void;
10
10
  * @returns {void} - Nothing
11
11
  */
12
12
  declare function InformationSheetSecondScreenRun(): void;
13
- /**
14
- * Handles the click events on the screen
15
- * @returns {void} - Nothing
16
- */
17
- declare function InformationSheetClick(): void;
13
+ declare function InformationSheetClick(event: PointerEvent): void;
18
14
  declare function InformationSheetExit(): void;
19
15
  declare function InformationSheetUnload(): void;
20
16
  /**
@@ -214,22 +214,34 @@ declare namespace ItemColorMode {
214
214
  let DEFAULT: "Default";
215
215
  let COLOR_PICKER: "ColorPicker";
216
216
  }
217
- /** @type {null | Character} */
218
- declare let ItemColorCharacter: null | Character;
219
- /** @type {null | ItemColorItem} */
220
- declare let ItemColorItem: null | ItemColorItem;
217
+ /**
218
+ * Initialized in {@link ItemColorLoad} and valid until {@link ItemColorReset} is called
219
+ * @type {Character}
220
+ */
221
+ declare let ItemColorCharacter: Character;
222
+ /**
223
+ * Initialized in {@link ItemColorLoad} and valid until {@link ItemColorReset} is called
224
+ * @type {Item}
225
+ */
226
+ declare let ItemColorItem: Item;
221
227
  /** @type {null | ItemColorMode} */
222
228
  declare let ItemColorCurrentMode: null | ItemColorMode;
223
- /** @type {null | string} */
224
- declare let ItemColorStateKey: null | string;
225
- /** @type {null | ItemColorStateType} */
226
- declare let ItemColorState: null | ItemColorStateType;
229
+ /**
230
+ * Initialized in {@link ItemColorStateBuild} and valid until {@link ItemColorReset} is called
231
+ * @type {string}
232
+ */
233
+ declare let ItemColorStateKey: string;
234
+ /**
235
+ * Initialized in {@link ItemColorStateBuild} and valid until {@link ItemColorReset} is called
236
+ * @type {ItemColorStateType}
237
+ */
238
+ declare let ItemColorState: ItemColorStateType;
227
239
  /** @type {number} */
228
240
  declare let ItemColorPage: number;
229
241
  /** @type {Record<string, number>} */
230
242
  declare let ItemColorLayerPages: Record<string, number>;
231
- /** @type {null | string} */
232
- declare let ItemColorPickerBackup: null | string;
243
+ /** @type {string | null} */
244
+ declare let ItemColorPickerBackup: string | null;
233
245
  /**
234
246
  * The indices of to-be colored layers within a {@link Item.Color}/{@link ItemColorGetColorableLayers}-returned array.
235
247
  *
@@ -244,13 +256,19 @@ declare let ItemColorPickerIndices: number[];
244
256
  declare const ItemColorPickerLayers: Map<number, AssetLayer>;
245
257
  /** @type {ItemColorExitListener[]} */
246
258
  declare let ItemColorExitListeners: ItemColorExitListener[];
247
- /** @type {null | string} */
248
- declare let ItemColorBackup: null | string;
259
+ /** @type {string} */
260
+ declare let ItemColorBackup: string;
249
261
  declare let ItemColorText: TextCache;
250
- /** @type {null | TextCache} */
251
- declare let ItemColorLayerNames: null | TextCache;
252
- /** @type {null | TextCache} */
253
- declare let ItemColorGroupNames: null | TextCache;
262
+ /**
263
+ * Initialized in {@link ItemColorLoad} and valid until {@link ItemColorReset} is called
264
+ * @type {TextCache}
265
+ */
266
+ declare let ItemColorLayerNames: TextCache;
267
+ /**
268
+ * Initialized in {@link ItemColorLoad} and valid until {@link ItemColorReset} is called
269
+ * @type {TextCache}
270
+ */
271
+ declare let ItemColorGroupNames: TextCache;
254
272
  /**
255
273
  * All (hex code) colors used within the current lifetime of the ItemColor subscreen.
256
274
  * @type {Set<BCColor>}
@@ -30,12 +30,14 @@ declare function PreferenceLoadActivityFactor(): void;
30
30
  declare function PreferenceLoadFetishFactor(): void;
31
31
  /**
32
32
  * Increment the passed arousal factor.
33
+ * @deprecated
33
34
  * @param {ArousalFactor} factor
34
35
  * @returns {ArousalFactor}
35
36
  */
36
37
  declare function PreferenceIncrementArousalFactor(factor: ArousalFactor): ArousalFactor;
37
38
  /**
38
39
  * Decrement the passed arousal factor.
40
+ * @deprecated
39
41
  * @param {ArousalFactor} factor
40
42
  * @returns {ArousalFactor}
41
43
  */
@@ -15,7 +15,7 @@ declare function PreferenceSubscreenAudioClick(): void;
15
15
  */
16
16
  declare function PreferenceSubscreenAudioExit(): boolean;
17
17
  declare function PreferenceSubscreenAudioUnload(): void;
18
- declare function PreferenceSubscreenAudioResize(onLoad: any): void;
18
+ declare function PreferenceSubscreenAudioResize(load: boolean): void;
19
19
  declare namespace PreferenceSubscreenAudioIDs {
20
20
  let grid: string;
21
21
  }
@@ -18,7 +18,7 @@ declare function PreferenceSubscreenCensoredWordsClick(): void;
18
18
  */
19
19
  declare function PreferenceSubscreenCensoredWordsExit(): boolean;
20
20
  declare function PreferenceSubscreenCensoredWordsUnload(): void;
21
- declare function PreferenceSubscreenCensoredWordsResize(): void;
21
+ declare function PreferenceSubscreenCensoredWordsResize(load: boolean): void;
22
22
  declare function PreferenceSubscreenCensoredWordsBuildWords(): void;
23
23
  /** @type {string[]} */
24
24
  declare var PreferenceCensoredWordsList: string[];
@@ -14,7 +14,7 @@ declare function PreferenceSubscreenChatClick(): void;
14
14
  * Exits the preference screen
15
15
  */
16
16
  declare function PreferenceSubscreenChatExit(): boolean;
17
- declare function PreferenceSubscreenChatResize(onLoad: any): void;
17
+ declare function PreferenceSubscreenChatResize(load: boolean): void;
18
18
  /** @type {ChatColorThemeType[]} */
19
19
  declare var PreferenceChatColorThemeList: ChatColorThemeType[];
20
20
  /** @type {ChatEnterLeaveType[]} */
@@ -9,7 +9,7 @@ declare function PreferenceSubscreenDifficultyRun(): void;
9
9
  * @returns {void} - Nothing
10
10
  */
11
11
  declare function PreferenceSubscreenDifficultyClick(): void;
12
- declare function PreferenceSubscreenDifficultyResize(): void;
12
+ declare function PreferenceSubscreenDifficultyResize(load: boolean): void;
13
13
  declare function PreferenceSubscreenDifficultyExit(): boolean;
14
14
  declare function PreferenceSubscreenDifficultyConfirm(): void;
15
15
  /**
@@ -25,8 +25,10 @@ declare function PreferenceSubscreenExtensionsClear(): Promise<void>;
25
25
  * Cleans up the current extension, and reset the current extension to null
26
26
  */
27
27
  declare function PreferenceSubscreenExtensionsUnload(): void;
28
- declare function PreferenceSubscreenExtensionsResize(onLoad: any): void;
28
+ declare function PreferenceSubscreenExtensionsResize(load: boolean): void;
29
29
  /**
30
+ * Open a given subscreen
31
+ * @public
30
32
  * @param {string} screenIdentifier
31
33
  * @param {ScreenSpecifier} returnScreen
32
34
  */
@@ -14,7 +14,7 @@ declare function PreferenceSubscreenGenderRun(): void;
14
14
  * @returns {void} - Nothing
15
15
  */
16
16
  declare function PreferenceSubscreenGenderClick(): void;
17
- declare function PreferenceSubscreenGenderResize(): void;
17
+ declare function PreferenceSubscreenGenderResize(load: boolean): void;
18
18
  declare const PreferenceSubscreenGenderIDs: Readonly<{
19
19
  grid: "preference-gender-grid";
20
20
  }>;
@@ -23,7 +23,7 @@ declare function PreferenceSubscreenGeneralExit(): boolean;
23
23
  * If the selected color is invalid, the player cannot leave the screen.
24
24
  */
25
25
  declare function PreferenceSubscreenGeneralUnload(): void;
26
- declare function PreferenceSubscreenGeneralResize(): void;
26
+ declare function PreferenceSubscreenGeneralResize(load: boolean): void;
27
27
  declare function PreferenceSubscreenGeneralColorPickerToggle(): void;
28
28
  /** @param {HTMLInputElement} input */
29
29
  declare function PreferenceSubscreenGeneralColorInput(input: HTMLInputElement): void;
@@ -13,7 +13,7 @@ declare function PreferenceSubscreenGraphicsRun(): void;
13
13
  * @returns {void} - Nothing
14
14
  */
15
15
  declare function PreferenceSubscreenGraphicsClick(): void;
16
- declare function PreferenceSubscreenGraphicsResize(): void;
16
+ declare function PreferenceSubscreenGraphicsResize(load: boolean): void;
17
17
  declare function PreferenceSubscreenGraphicsExit(): boolean;
18
18
  /**
19
19
  * Finalize graphics setting when the screen is unloaded
@@ -9,7 +9,7 @@ declare function PreferenceSubscreenImmersionRun(): void;
9
9
  * @returns {void} - Nothing
10
10
  */
11
11
  declare function PreferenceSubscreenImmersionClick(): void;
12
- declare function PreferenceSubscreenImmersionResize(onLoad: any): void;
12
+ declare function PreferenceSubscreenImmersionResize(load: boolean): void;
13
13
  /**
14
14
  * @param {boolean} disableButtons
15
15
  */