bc-stubs 120.0.0 → 121.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 (57) hide show
  1. package/bc/NativeDeclarations/Female3DCG_Types.d.ts +21 -5
  2. package/bc/NativeDeclarations/Messages.d.ts +2 -2
  3. package/bc/NativeDeclarations/Toasts.d.ts +5 -2
  4. package/bc/NativeDeclarations/Typedef.d.ts +111 -66
  5. package/bc/Screens/Character/Appearance/Appearance.d.ts +4 -0
  6. package/bc/Screens/Character/Cheat/Cheat.d.ts +4 -0
  7. package/bc/Screens/Character/Creation/Creation.d.ts +4 -0
  8. package/bc/Screens/Character/FriendList/FriendList.d.ts +1 -0
  9. package/bc/Screens/Character/InformationSheet/InformationSheet.d.ts +4 -0
  10. package/bc/Screens/Character/PasswordReset/PasswordReset.d.ts +4 -0
  11. package/bc/Screens/Character/Preference/Audio.d.ts +4 -3
  12. package/bc/Screens/Character/Preference/CensoredWords.d.ts +10 -1
  13. package/bc/Screens/Character/Preference/Chat.d.ts +8 -14
  14. package/bc/Screens/Character/Preference/Difficulty.d.ts +1 -0
  15. package/bc/Screens/Character/Preference/Extensions.d.ts +13 -3
  16. package/bc/Screens/Character/Preference/Immersion.d.ts +18 -1
  17. package/bc/Screens/Character/Preference/Main.d.ts +6 -0
  18. package/bc/Screens/Character/Preference/Online.d.ts +13 -0
  19. package/bc/Screens/Character/Preference/Preference.d.ts +20 -2
  20. package/bc/Screens/Character/Preference/Restriction.d.ts +14 -0
  21. package/bc/Screens/Character/Preference/Security.d.ts +20 -0
  22. package/bc/Screens/Character/Relog/Relog.d.ts +4 -0
  23. package/bc/Screens/Character/Title/Title.d.ts +4 -0
  24. package/bc/Screens/Character/Wardrobe/Wardrobe.d.ts +4 -0
  25. package/bc/Screens/Online/AdvancedRule/AdvancedRule.d.ts +4 -0
  26. package/bc/Screens/Online/ChatAdmin/ChatAdmin.d.ts +4 -0
  27. package/bc/Screens/Online/ChatAdminRoomCustomization/ChatAdminRoomCustomization.d.ts +4 -0
  28. package/bc/Screens/Online/ChatBlockItem/ChatBlockItem.d.ts +6 -0
  29. package/bc/Screens/Online/ChatRoom/ChatRoom.d.ts +19 -6
  30. package/bc/Screens/Online/ChatRoom/ChatRoomCharacterView.d.ts +5 -11
  31. package/bc/Screens/Online/ChatRoom/ChatRoomMapView.d.ts +5 -10
  32. package/bc/Screens/Online/ChatSearch/ChatSearch.d.ts +55 -8
  33. package/bc/Screens/Online/ForbiddenWords/ForbiddenWords.d.ts +4 -0
  34. package/bc/Screens/Online/Game/OnlineGame.d.ts +4 -0
  35. package/bc/Screens/Online/GameClubCard/GameClubCard.d.ts +4 -0
  36. package/bc/Screens/Online/GameLARP/GameLARP.d.ts +4 -0
  37. package/bc/Screens/Online/GameMagicBattle/GameMagicBattle.d.ts +4 -0
  38. package/bc/Screens/Room/AsylumEntrance/AsylumEntrance.d.ts +4 -0
  39. package/bc/Screens/Room/InfiltrationPerks/InfiltrationPerks.d.ts +4 -0
  40. package/bc/Screens/Room/PlatformProfile/PlatformProfile.d.ts +4 -0
  41. package/bc/Screens/Room/Private/Private.d.ts +4 -0
  42. package/bc/Screens/Room/PrivateBed/PrivateBed.d.ts +4 -0
  43. package/bc/Screens/Room/Shop2/Shop2.d.ts +1 -0
  44. package/bc/Scripts/Asset.d.ts +9 -0
  45. package/bc/Scripts/Common.d.ts +18 -13
  46. package/bc/Scripts/CommonDraw.d.ts +2 -1
  47. package/bc/Scripts/Dialog.d.ts +1 -0
  48. package/bc/Scripts/Element.d.ts +25 -4
  49. package/bc/Scripts/ExtendedItem.d.ts +8 -2
  50. package/bc/Scripts/Game.d.ts +6 -2
  51. package/bc/Scripts/Inventory.d.ts +4 -4
  52. package/bc/Scripts/ModularItem.d.ts +7 -0
  53. package/bc/Scripts/Property.d.ts +24 -0
  54. package/bc/Scripts/Server.d.ts +28 -6
  55. package/bc/Scripts/Timer.d.ts +2 -2
  56. package/bc/Scripts/Toasts.d.ts +7 -0
  57. package/package.json +1 -1
@@ -1,3 +1,9 @@
1
+ /** A type representing layer names (yes this is just a `string` alias). */
2
+ type LayerName = string;
3
+
4
+ /** A special key for {@link ItemProperties["DrawingTop"]}/{@link ItemProperties["DrawingLeft"]} that overrides the _relative_ position of each and every layer individually */
5
+ type AssetOverride = "ASSET_OVERRIDE";
6
+
1
7
  /** The definition of a fetish */
2
8
  interface Fetish {
3
9
  Name: FetishName;
@@ -13,12 +19,21 @@ declare namespace TopLeft {
13
19
  * under their respective pose names.
14
20
  */
15
21
  type Data = Readonly<Partial<Record<AssetPoseName, number>> & Record<PoseTypeDefault, number>>;
22
+ /**
23
+ * Mutable datastructure variant as to be used at the {@link ItemProperties} level.
24
+ * See {@link TopLeft.Data}
25
+ */
26
+ type DataMutable = Partial<Record<AssetPoseName | PoseTypeDefault, number>>;
16
27
  /**
17
28
  * The unparsed top/left coordinate translation.
18
29
  * Can be either a number or, if one wants to specify pose-specific translations, a record mapping pose names to numbers.
19
30
  * The {@link PoseType.DEFAULT} key can be specified in the record-notation as a default pose-agnostic value.
20
31
  */
21
32
  type Definition = number | Partial<Record<AssetPoseName | PoseTypeDefault, number>>;
33
+ /** See {@link ItemProperties["DrawingTop"]} */
34
+ type ItemData = Partial<Record<AssetOverride | LayerName, TopLeft.DataMutable>>;
35
+ /** See {@link ItemPropertiesConfig["DrawingTop"]} */
36
+ type ItemDefinition = Partial<Record<AssetOverride | LayerName, TopLeft.Definition>>;
22
37
  }
23
38
 
24
39
  /** Types for objects defining a group of alpha masks to be applied when drawing an asset layer. */
@@ -848,10 +863,10 @@ interface AttributionDefinition {
848
863
 
849
864
  interface AssetLayerDefinition extends AssetCommonPropertiesGroupAssetLayer, AssetCommonPropertiesAssetLayer {
850
865
  /** The layer's name */
851
- Name?: string;
866
+ Name?: LayerName;
852
867
 
853
868
  /** Uses the color of the named layer. */
854
- CopyLayerColor?: string;
869
+ CopyLayerColor?: LayerName;
855
870
 
856
871
  /** The color group that layer is part of. Layers part of the same color group get a selector in the Color Picker UI */
857
872
  ColorGroup?: string;
@@ -1020,7 +1035,7 @@ interface ExtendedItemOptionConfig {
1020
1035
  */
1021
1036
  ChangeWhenLocked?: boolean;
1022
1037
  /** The Property object to be applied when this option is used */
1023
- Property?: ItemProperties;
1038
+ Property?: ItemPropertiesConfig;
1024
1039
  /**
1025
1040
  * Trigger this expression when changing to this option
1026
1041
  *
@@ -1058,6 +1073,7 @@ interface ExtendedItemOption extends Omit<ExtendedItemOptionConfig, "ArchetypeCo
1058
1073
  ParentData: ExtendedItemData<any>;
1059
1074
  /** The extended item data of the subscreen associated with this option (if any) */
1060
1075
  ArchetypeData?: null | AssetArchetypeData;
1076
+ Property?: ItemProperties;
1061
1077
  }
1062
1078
 
1063
1079
  type ExtendedItemOptionUnion = (
@@ -1117,7 +1133,7 @@ type ExtendedItemNPCCallback<OptionType extends ExtendedItemOption> = (
1117
1133
 
1118
1134
  /** Partially parsed extended item option subtype for typed items */
1119
1135
  interface TypedItemOptionConfig extends ExtendedItemOptionConfig {
1120
- Property?: Omit<ItemProperties, "TypeRecord">;
1136
+ Property?: Omit<ItemPropertiesConfig, "TypeRecord">;
1121
1137
  /** Whether or not this option can be selected randomly */
1122
1138
  Random?: boolean;
1123
1139
  /** Whether this option should be picked as default for NPC's (rather than just going for the first option) */
@@ -1277,7 +1293,7 @@ interface ModularItemOptionConfig extends Omit<ExtendedItemOptionConfig, "Name">
1277
1293
  Effect?: EffectName[];
1278
1294
  /** A list of activities enabled by that module */
1279
1295
  AllowActivity?: ActivityName[];
1280
- Property?: Omit<ItemProperties, "TypeRecord">;
1296
+ Property?: Omit<ItemPropertiesConfig, "TypeRecord">;
1281
1297
  }
1282
1298
 
1283
1299
  /** Extended item option subtype for modular items */
@@ -228,7 +228,7 @@ type ServerChatRoomRole = "All" | "Admin" | "Whitelist";
228
228
  type ServerChatRoomGame = "" | "ClubCard" | "LARP" | "MagicBattle" | "GGTS" | "Prison";
229
229
  type ServerChatRoomBlockCategory =
230
230
  /** Those are known as AssetCategory to the client */
231
- "Medical" | "Extreme" | "Pony" | "SciFi" | "ABDL" | "Fantasy" |
231
+ "Medical" | "Extreme" | "Pony" | "SciFi" | "ABDL" | "Fantasy" | "Smoking" |
232
232
  /** Those are room features */
233
233
  "Leashing" | "Photos" | "Arousal";
234
234
 
@@ -461,7 +461,6 @@ interface ServerChatRoomSearchRequest {
461
461
  }
462
462
  type ChatRoomSearchSettings = {
463
463
  Language: "" | ServerChatRoomLanguage;
464
- Query: string;
465
464
  Space: ServerChatRoomSpace;
466
465
  Game: ServerChatRoomGame;
467
466
  FullRooms: boolean;
@@ -602,6 +601,7 @@ interface CharacterReferenceDictionaryEntry extends TaggedDictionaryEntry {
602
601
  */
603
602
  interface SourceCharacterDictionaryEntry {
604
603
  SourceCharacter: number;
604
+ HasSuperPowers?: true;
605
605
  }
606
606
 
607
607
  /**
@@ -28,6 +28,8 @@ declare namespace Toasts {
28
28
  title?: string;
29
29
  /** Type and style of the toast. */
30
30
  type?: Type;
31
+ /** An user-provided category */
32
+ category?: string;
31
33
  /** How long (in milliseconds) the toast remains visible. */
32
34
  duration?: number;
33
35
  /** Whether to show a progress bar. */
@@ -42,13 +44,14 @@ declare namespace Toasts {
42
44
  onClose?: (toast: ToastElement, reason: CloseReason) => void;
43
45
  /** Optional icon to display alongside the message. */
44
46
  icon?: string;
45
- /** Optional icon color. */
46
- iconColor?: IconColor;
47
+ /** Optional icon color. */
48
+ iconColor?: IconColor;
47
49
  /** Optional array of action buttons to render inside the toast. */
48
50
  buttons?: ToastButton[];
49
51
  /** Whether to clamp long messages to 3 lines. */
50
52
  clampMessage?: boolean;
51
53
  }
54
+
52
55
  /**
53
56
  * Defines a button to be rendered inside a toast notification.
54
57
  * - label:
@@ -164,7 +164,7 @@ declare namespace ElementButton {
164
164
  /** A button label */
165
165
  label?: StaticNode;
166
166
  /** The position of the button label */
167
- labelPosition?: "top" | "center" | "bottom";
167
+ labelPosition?: "top" | "center" | "bottom" | "left" | "right";
168
168
  /** A background image for the button */
169
169
  image?: string;
170
170
  /**
@@ -216,6 +216,10 @@ declare namespace ElementCheckbox {
216
216
  */
217
217
  name?: string;
218
218
  }
219
+
220
+ interface LabelOptions extends Options {
221
+ orientation?: "horizontal" | "vertical";
222
+ }
219
223
  }
220
224
 
221
225
  type Rect = { x: number, y: number, w: number, h: number };
@@ -676,11 +680,12 @@ interface PreferenceSubscreen {
676
680
  description?: string;
677
681
  icon?: string;
678
682
  hidden?: boolean;
679
- load?: () => void;
683
+ load?: () => void | Promise<void>;
680
684
  run: () => void;
681
685
  click: () => void;
682
- exit?: () => boolean;
686
+ exit?: () => boolean | Promise<boolean>;
683
687
  unload?: () => void;
688
+ resize?: (onLoad: boolean) => void;
684
689
  }
685
690
 
686
691
  interface PreferenceGenderSetting {
@@ -802,10 +807,10 @@ interface ModuleScreens {
802
807
  type RoomName = ModuleScreens[ModuleType];
803
808
 
804
809
  interface RelogDataBase<T extends ModuleType> {
805
- Screen: ModuleScreens[T],
806
- Module: T,
807
- Character: Character,
808
- ChatRoomName: string | null,
810
+ Screen: ModuleScreens[T],
811
+ Module: T,
812
+ Character: Character | null,
813
+ ChatRoomName: string | null,
809
814
  }
810
815
 
811
816
  type _RelogDataMap<T> = T extends ModuleType ? RelogDataBase<T> : never;
@@ -814,7 +819,7 @@ type RelogData = _RelogDataMap<ModuleType>;
814
819
  type _ScreenSpecifier<T extends ModuleType> = [module: T, screen: ModuleScreens[T]];
815
820
  type ScreenSpecifier = _ScreenSpecifier<"Character"> | _ScreenSpecifier<"Cutscene"> | _ScreenSpecifier<"MiniGame"> | _ScreenSpecifier<"Online"> | _ScreenSpecifier<"Room">;
816
821
 
817
- type AssetCategory = "Medical" | "Extreme" | "Pony" | "SciFi" | "ABDL" | "Fantasy";
822
+ type AssetCategory = "Medical" | "Extreme" | "Pony" | "SciFi" | "ABDL" | "Fantasy" | "Smoking";
818
823
 
819
824
  type PortalLinkStatus = "PortalLinkInvalidCode" | "PortalLinkClipboardError" | "PortalLinkValidCode" | `PortalLinkSearching${number}` | "PortalLinkDuplicateCode" | "PortalLinkTargetNotFound" | "PortalLinkEstablished";
820
825
  type PortalLinkFunction = "PortalLinkFunctionLock" | "PortalLinkFunctionUnlock" | "PortalLinkFunctionCycleChastity" | `PortalLinkFunctionActivity${ActivityName}`;
@@ -835,6 +840,15 @@ type ChatRoomSettings = ServerChatRoomSettings;
835
840
  /** ChatRoom results once received by the client */
836
841
  type ChatRoomSearchResult = (ServerChatRoomSearchData & { DisplayName: string, Order: number });
837
842
 
843
+ interface ChatSearchLobbyOptions {
844
+ /** Name of the chatroom game to play */
845
+ Game?: ServerChatRoomGame;
846
+ /** Name of the background to use in the lobby */
847
+ Background?: string;
848
+ /** Tags of allowed backgrounds when creating a room */
849
+ BackgroundTagList?: BackgroundTag[];
850
+ }
851
+
838
852
  type StimulationAction = "Kneel" | "Walk" | "Struggle" | "StruggleFail" | "Talk";
839
853
 
840
854
  interface StimulationEvent {
@@ -854,13 +868,13 @@ type StimulationEventType = "CrotchRope" | "Talk" | "Vibe" | "Inflated" | "Wiggl
854
868
 
855
869
  interface StimulationEventItem {
856
870
  /** The item that caused the stimulation event */
857
- item: Item;
871
+ item: Item;
858
872
  /** The type of stimulation event */
859
- event: StimulationEventType;
873
+ event: StimulationEventType;
860
874
  /** The chance of the event occurring */
861
- chance: number;
875
+ chance: number;
862
876
  /** Arousal booost from the event */
863
- arousal: number;
877
+ arousal: number;
864
878
  }
865
879
 
866
880
  interface ChatRoomChatLogEntry {
@@ -909,8 +923,8 @@ interface IChatRoomMessageMetadata {
909
923
  ReplyId?: string;
910
924
  /** The ID of the message */
911
925
  MsgId?: string;
912
-
913
-
926
+ /** Whether the sender has super powers active (only in map view) */
927
+ HasSuperPowers?: boolean;
914
928
  }
915
929
 
916
930
  /**
@@ -1015,7 +1029,7 @@ interface IFriendListBeepLogMessage {
1015
1029
  * Opposite of {@link Readonly}
1016
1030
  */
1017
1031
  type Mutable<T> = {
1018
- -readonly[P in keyof T]: T[P];
1032
+ -readonly[P in keyof T]: T[P];
1019
1033
  };
1020
1034
 
1021
1035
  //#region Assets
@@ -1077,10 +1091,10 @@ interface AssetGroup {
1077
1091
  readonly StyleOverride?: string [];
1078
1092
  readonly CreateLayerTypesOverride?: number [];
1079
1093
  readonly Reposition?: {
1080
- Group?: string;
1081
- ShiftX?: number;
1082
- ShiftY?: number;
1083
- }[];
1094
+ Group?: string;
1095
+ ShiftX?: number;
1096
+ ShiftY?: number;
1097
+ }[];
1084
1098
 
1085
1099
  readonly MirrorActivitiesFrom?: AssetGroupItemName;
1086
1100
  readonly ArousalZone?: AssetGroupItemName;
@@ -1138,14 +1152,14 @@ type AssetGroupMapping = (
1138
1152
  /** An object defining a drawable layer of an asset */
1139
1153
  interface AssetLayer {
1140
1154
  /** The name of the layer - may be null if the asset only contains a single default layer */
1141
- readonly Name: string | null;
1155
+ readonly Name: LayerName | null;
1142
1156
  /** Specify a body type to override the asset with. */
1143
1157
  readonly StyleOverride?: string [];
1144
1158
  readonly CreateLayerTypesOverride?: number [];
1145
1159
  /** Specify a list of CLT asset layers to override. */
1146
1160
  readonly AllowColorize: boolean;
1147
1161
  /** if not null, specifies that this layer should always copy the color of the named layer */
1148
- readonly CopyLayerColor: string | null;
1162
+ readonly CopyLayerColor: LayerName | null;
1149
1163
  /** specifies the name of a color group that this layer belongs to. Any layers within the same color group can be colored together via the item color UI */
1150
1164
  readonly ColorGroup: string | null;
1151
1165
  /** whether or not this layer can be colored in the coloring UI */
@@ -1277,12 +1291,12 @@ interface Asset {
1277
1291
  readonly SupportedStyles?: string[];
1278
1292
  readonly CreateLayerTypesOverride?: number[];
1279
1293
  readonly DrawOffset?: {
1280
- Group?: AssetGroupName;
1281
- Asset?: string;
1282
- Layer?: string[];
1283
- X?: number;
1284
- Y?: number;
1285
- }[];
1294
+ Group?: AssetGroupName;
1295
+ Asset?: string;
1296
+ Layer?: string[];
1297
+ X?: number;
1298
+ Y?: number;
1299
+ }[];
1286
1300
  /** @deprecated - Superceded by {@link Asset.PoseMapping} */
1287
1301
  readonly AllowPose?: never;
1288
1302
  /** @deprecated - Superceded by {@link Asset.PoseMapping} */
@@ -1597,7 +1611,7 @@ type ScreenUnloadHandler = VoidHandler;
1597
1611
  type ScreenDrawHandler = VoidHandler;
1598
1612
  type ScreenRunHandler = (time: number) => void;
1599
1613
  type ScreenResizeHandler = (load: boolean) => void;
1600
- type ScreenExitHandler = VoidHandler;
1614
+ type ScreenExitHandler = VoidHandler | (() => Promise<void>);
1601
1615
 
1602
1616
  interface ScreenFunctions {
1603
1617
  // Required
@@ -1972,7 +1986,7 @@ interface Character {
1972
1986
  get Position(): ChatRoomMapPos | null;
1973
1987
  set Position({ X, Y }: ChatRoomMapPos);
1974
1988
  IsBirthday: () => boolean;
1975
- IsSiblingOfCharacter: (C: Character) => boolean;
1989
+ IsSiblingOfCharacter: (C: Character) => boolean;
1976
1990
  IsFamilyOfPlayer: () => boolean;
1977
1991
  IsInFamilyOfMemberNumber: (MemberNum: number) => boolean;
1978
1992
  IsOnline: () => this is Character;
@@ -2455,7 +2469,6 @@ interface PlayerOnlineSettings {
2455
2469
  AutoBanBlackList: boolean;
2456
2470
  AutoBanGhostList: boolean;
2457
2471
  DisableAnimations: boolean;
2458
- SearchShowsFullRooms: boolean;
2459
2472
  SearchFriendsFirst: boolean;
2460
2473
  SendStatus: boolean;
2461
2474
  ShowStatus: boolean;
@@ -2463,6 +2476,10 @@ interface PlayerOnlineSettings {
2463
2476
  ShowRoomCustomization: 0 | 1 | 2 | 3; // 0 - Never, 1 - No by default, 2 - Yes by default, 3 - Always
2464
2477
  FriendListAutoRefresh: boolean;
2465
2478
  DefaultChatRoomBackground: string;
2479
+ /**
2480
+ * @deprecated
2481
+ */
2482
+ SearchShowsFullRooms: never;
2466
2483
  }
2467
2484
 
2468
2485
  /** Pandora Player extension */
@@ -3415,10 +3432,25 @@ interface ItemPropertiesCustom {
3415
3432
 
3416
3433
  /** PortalLink: Used to link a remote to its target asset. */
3417
3434
  PortalLinkCode?: string;
3435
+
3436
+ /** Override the top-position of a layer. A value of {@link AssetOverride} will be override the _relative_ position of each and every layer individually. */
3437
+ DrawingTop?: TopLeft.ItemData;
3438
+
3439
+ /** Override the left-position of a layer. A value of {@link AssetOverride} will be override the _relative_ position of each and every layer individually. */
3440
+ DrawingLeft?: TopLeft.ItemData;
3418
3441
  }
3419
3442
 
3420
3443
  interface ItemProperties extends ItemPropertiesBase, AssetDefinitionProperties, ItemPropertiesCustom { }
3421
3444
 
3445
+ /** Base type for unparsed extended item properties */
3446
+ interface ItemPropertiesConfig extends Omit<ItemProperties, "DrawingTop" | "DrawingLeft"> {
3447
+ /** Override the top-position of a layer. A value of {@link AssetOverride} will be override the _relative_ position of each and every layer individually. */
3448
+ DrawingTop?: TopLeft.ItemDefinition;
3449
+
3450
+ /** Override the left-position of a layer. A value of {@link AssetOverride} will be override the _relative_ position of each and every layer individually. */
3451
+ DrawingLeft?: TopLeft.ItemDefinition;
3452
+ }
3453
+
3422
3454
  /** All item/asset/group properties with all array-based values removed */
3423
3455
  declare namespace PropertiesNoArray {
3424
3456
  /** All {@link ItemProperties} properties with array-based values removed */
@@ -4700,6 +4732,8 @@ interface PreferenceExtensionsSettingItem {
4700
4732
  * will be called afterward. And the setting screen for the extension will be closed.
4701
4733
  */
4702
4734
  exit: () => boolean | void;
4735
+
4736
+ resize?: (onLoad: boolean) => void;
4703
4737
  }
4704
4738
 
4705
4739
  /** Preference Menu info for extensions settings*/
@@ -4709,6 +4743,18 @@ type PreferenceExtensionsMenuButtonInfo = {
4709
4743
  click: () => void;
4710
4744
  }
4711
4745
 
4746
+ interface PreferenceChatDropdownOption {
4747
+ list: string[];
4748
+ current: () => string;
4749
+ onChange: (value: string) => void;
4750
+ }
4751
+
4752
+ interface PreferenceChatCheckboxOption {
4753
+ label: string,
4754
+ check: () => boolean,
4755
+ click: () => void
4756
+ }
4757
+
4712
4758
  // #end region
4713
4759
 
4714
4760
  // #region fortune wheel
@@ -4718,12 +4764,12 @@ type WheelFortuneColor = "Blue" | "Gold" | "Gray" | "Green" | "Orange" | "Purple
4718
4764
 
4719
4765
  /** Base type for fortune wheel options */
4720
4766
  interface WheelFortuneOptionType {
4721
- /** A single-character UTF16 string with the option's ID */
4722
- ID: string;
4723
- /** The color of the option button */
4724
- Color: WheelFortuneColor;
4725
- /** An optional script that will be executed whenever the option is picked */
4726
- Script?: () => void;
4767
+ /** A single-character UTF16 string with the option's ID */
4768
+ ID: string;
4769
+ /** The color of the option button */
4770
+ Color: WheelFortuneColor;
4771
+ /** An optional script that will be executed whenever the option is picked */
4772
+ Script?: () => void;
4727
4773
  }
4728
4774
 
4729
4775
  // #end region
@@ -4844,43 +4890,43 @@ interface ClubCardPlayer {
4844
4890
  interface ClubCardMessage {
4845
4891
  TextGetKey: string; // Localization key
4846
4892
  MessageText?: string; // Message Text
4847
- MessageType: string; // Type of message (e.g., ACTION, SYSTEM, IMMEDIATE)
4848
- PlayerId: string; // ID of the player who triggered the message
4849
- TurnCounter: number; // Turn number when the message was created
4850
- Placeholders: { // Dynamic data for text replacement
4851
- [key: string]: string | number;
4893
+ MessageType: string; // Type of message (e.g., ACTION, SYSTEM, IMMEDIATE)
4894
+ PlayerId: string; // ID of the player who triggered the message
4895
+ TurnCounter: number; // Turn number when the message was created
4896
+ Placeholders: { // Dynamic data for text replacement
4897
+ [key: string]: string | number;
4852
4898
  };
4853
4899
  PlayerName?: string;
4854
- SourcePlayer?: string;
4855
- OpponentPlayer?: string;
4900
+ SourcePlayer?: string;
4901
+ OpponentPlayer?: string;
4856
4902
  }
4857
4903
 
4858
4904
  /**
4859
4905
  * Represents an active card animation in progress.
4860
4906
  */
4861
4907
  interface ClubCardActiveAnimation {
4862
- /** The card being animated. */
4863
- Card: ClubCard;
4864
- /** The original card (if a copy is animated). */
4865
- OriginalCard?: ClubCard | null;
4866
- /** Timestamp when the animation started (in milliseconds). */
4867
- StartTime: number;
4868
- /** Total animation duration in milliseconds. */
4869
- Duration: number;
4870
- /** Initial position of the card. */
4871
- StartPosition: { x: number, y: number, w: number };
4872
- /** Target position of the card. */
4873
- EndPosition: { x: number, y: number, w: number };
4874
- /** Whether to hide the original card during animation. */
4875
- HideOriginal: boolean;
4876
- /** Whether the original card should stay hidden after animation completes. */
4877
- KeepOriginalHidden: boolean;
4878
- /** Timeout ID for fallback handling (used to restore the card state in case of failure). */
4879
- SafetyTimeout: number;
4880
- /** Callback function called when the animation completes. */
4881
- OnComplete?: Function|null;
4882
- // Processed elsewhere
4883
- // /** Callback function called when the animation starts. */
4908
+ /** The card being animated. */
4909
+ Card: ClubCard;
4910
+ /** The original card (if a copy is animated). */
4911
+ OriginalCard?: ClubCard | null;
4912
+ /** Timestamp when the animation started (in milliseconds). */
4913
+ StartTime: number;
4914
+ /** Total animation duration in milliseconds. */
4915
+ Duration: number;
4916
+ /** Initial position of the card. */
4917
+ StartPosition: { x: number, y: number, w: number };
4918
+ /** Target position of the card. */
4919
+ EndPosition: { x: number, y: number, w: number };
4920
+ /** Whether to hide the original card during animation. */
4921
+ HideOriginal: boolean;
4922
+ /** Whether the original card should stay hidden after animation completes. */
4923
+ KeepOriginalHidden: boolean;
4924
+ /** Timeout ID for fallback handling (used to restore the card state in case of failure). */
4925
+ SafetyTimeout: number;
4926
+ /** Callback function called when the animation completes. */
4927
+ OnComplete?: Function|null;
4928
+ // Processed elsewhere
4929
+ // /** Callback function called when the animation starts. */
4884
4930
  // OnStart?: Function|null;
4885
4931
  /** Animation rendering level priority*/
4886
4932
  Priority: number;
@@ -4931,7 +4977,6 @@ interface ChatRoomView extends Pick<ScreenFunctions, "Run" | "MouseDown" | "Mous
4931
4977
  Deactivate?: () => void;
4932
4978
  Draw: () => void;
4933
4979
  DrawUi: () => void;
4934
- DisplayMessage: (data: ServerChatRoomMessage, msg: string, SenderCharacter: Character, metadata: IChatRoomMessageMetadata) => string|null;
4935
4980
  SyncRoomProperties?: (data: ServerChatRoomSyncMessage) => void;
4936
4981
  CanStartWhisper?: (C: Character) => boolean;
4937
4982
  CanLeave?: () => boolean;
@@ -247,6 +247,10 @@ declare function AppearanceClick(): void;
247
247
  * @returns {void} - Nothing
248
248
  */
249
249
  declare function AppearanceMenuClick(C: Character): void;
250
+ /**
251
+ * Handle the exiting of the appearance screen. The function name is created dynamically.
252
+ * @type {ScreenExitHandler}
253
+ */
250
254
  declare function AppearanceExit(): void;
251
255
  /**
252
256
  * Common cleanup that must happen when the appearance editor closes
@@ -36,6 +36,10 @@ declare function CheatRun(): void;
36
36
  * @returns {void} - Nothing
37
37
  */
38
38
  declare function CheatClick(): void;
39
+ /**
40
+ * Handles exiting the cheat screen by saving the cheats and going back to the login screen.
41
+ * @type {ScreenExitHandler}
42
+ */
39
43
  declare function CheatExit(): void;
40
44
  declare var CheatBackground: string;
41
45
  declare var CheatAllow: boolean;
@@ -19,6 +19,10 @@ declare function CreationResponse(data: ServerAccountCreateResponse): void;
19
19
  * @returns {void} - Nothing
20
20
  */
21
21
  declare function CreationClick(): void;
22
+ /**
23
+ * Does the cleanup, if the user exits the screen
24
+ * @type {ScreenExitHandler}
25
+ */
22
26
  declare function CreationExit(): void;
23
27
  declare var CreationBackground: string;
24
28
  declare var CreationMessage: string;
@@ -5,6 +5,7 @@ declare function FriendListDraw(): void;
5
5
  declare function FriendListClick(event: MouseEvent | TouchEvent): void;
6
6
  declare function FriendListKeyDown(event: KeyboardEvent): boolean;
7
7
  declare function FriendListUnload(): void;
8
+ /** @type {ScreenExitHandler} */
8
9
  declare function FriendListExit(): void;
9
10
  /**
10
11
  * Creates beep message menu
@@ -15,6 +15,10 @@ declare function InformationSheetSecondScreenRun(): void;
15
15
  * @returns {void} - Nothing
16
16
  */
17
17
  declare function InformationSheetClick(): void;
18
+ /**
19
+ * Cleanup all elements, if the user exits the screen
20
+ * @type {ScreenExitHandler}
21
+ */
18
22
  declare function InformationSheetExit(): void;
19
23
  /**
20
24
  * Loads the information sheet for a character
@@ -15,6 +15,10 @@ declare function PasswordResetResponse(msg: ServerPasswordResetResponse): void;
15
15
  * @returns {void} Nothing
16
16
  */
17
17
  declare function PasswordResetClick(): void;
18
+ /**
19
+ * Sends the player back to the login screen
20
+ * @type {ScreenExitHandler}
21
+ */
18
22
  declare function PasswordResetExit(): void;
19
23
  declare var PasswordResetBackground: string;
20
24
  declare var PasswordResetMessage: string;
@@ -15,6 +15,7 @@ declare function PreferenceSubscreenAudioClick(): void;
15
15
  */
16
16
  declare function PreferenceSubscreenAudioExit(): boolean;
17
17
  declare function PreferenceSubscreenAudioUnload(): void;
18
- declare var PreferenceSettingsVolumeList: number[];
19
- declare var PreferenceSettingsVolumeIndex: number;
20
- declare var PreferenceSettingsMusicVolumeIndex: number;
18
+ declare function PreferenceSubscreenAudioResize(onLoad: any): void;
19
+ declare namespace PreferenceSubscreenAudioIDs {
20
+ let grid: string;
21
+ }
@@ -18,6 +18,15 @@ declare function PreferenceSubscreenCensoredWordsClick(): void;
18
18
  */
19
19
  declare function PreferenceSubscreenCensoredWordsExit(): boolean;
20
20
  declare function PreferenceSubscreenCensoredWordsUnload(): void;
21
+ declare function PreferenceSubscreenCensoredWordsResize(): void;
22
+ declare function PreferenceSubscreenCensoredWordsBuildWords(): void;
21
23
  /** @type {string[]} */
22
24
  declare var PreferenceCensoredWordsList: string[];
23
- declare var PreferenceCensoredWordsOffset: number;
25
+ declare const PreferenceCensoredWordsIDs: Readonly<{
26
+ grid: "preference-censored-words-grid";
27
+ subtitle: "preference-censored-words-subtitle";
28
+ censorshipOption: "preference-censored-words-censorship-group";
29
+ wordInput: "InputWord";
30
+ wordInputGroup: "preference-censored-words-word-input-group";
31
+ add: "preference-censored-words-add-button";
32
+ }>;
@@ -14,25 +14,19 @@ 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
18
  /** @type {ChatColorThemeType[]} */
18
19
  declare var PreferenceChatColorThemeList: ChatColorThemeType[];
19
- declare var PreferenceChatColorThemeIndex: number;
20
20
  /** @type {ChatEnterLeaveType[]} */
21
21
  declare var PreferenceChatEnterLeaveList: ChatEnterLeaveType[];
22
- declare var PreferenceChatEnterLeaveIndex: number;
23
22
  /** @type {ChatMemberNumbersType[]} */
24
23
  declare var PreferenceChatMemberNumbersList: ChatMemberNumbersType[];
25
- declare var PreferenceChatMemberNumbersIndex: number;
26
24
  /** @type {ChatFontSizeType[]} */
27
25
  declare var PreferenceChatFontSizeList: ChatFontSizeType[];
28
- declare var PreferenceChatFontSizeIndex: number;
29
- declare var PreferenceChatPageIndex: number;
30
- declare var PreferenceChatPageList: number[];
31
- /** @type {{label: string, check: () => boolean, click: () => void}[]} */
32
- declare const PreferenceSubscreenChatCheckboxes: {
33
- label: string;
34
- check: () => boolean;
35
- click: () => void;
36
- }[];
37
- /** @type {CommonGenerateGridParameters} */
38
- declare const PreferenceSubscreenChatCheckboxGrid: CommonGenerateGridParameters;
26
+ /** @type {PreferenceChatCheckboxOption[]} */
27
+ declare const PreferenceSubscreenChatCheckboxes: PreferenceChatCheckboxOption[];
28
+ /** @type {Record<string, PreferenceChatDropdownOption>} */
29
+ declare const PreferenceSubscreenChatDropdowns: Record<string, PreferenceChatDropdownOption>;
30
+ declare const PreferenceSubscreenChatIDs: Readonly<{
31
+ grid: "preference-chat-grid";
32
+ }>;
@@ -8,6 +8,7 @@ declare function PreferenceSubscreenDifficultyRun(): void;
8
8
  * @returns {void} - Nothing
9
9
  */
10
10
  declare function PreferenceSubscreenDifficultyClick(): void;
11
+ declare function PreferenceSubscreenDifficultyExit(): boolean;
11
12
  /** @type {null | DifficultyLevel} */
12
13
  declare var PreferenceDifficultyLevel: null | DifficultyLevel;
13
14
  declare var PreferenceDifficultyAccept: boolean;
@@ -13,19 +13,29 @@ declare function PreferenceSubscreenExtensionsRun(): void;
13
13
  * @returns {void} - Nothing
14
14
  */
15
15
  declare function PreferenceSubscreenExtensionsClick(): void;
16
- declare function PreferenceSubscreenExtensionsExit(): boolean;
16
+ declare function PreferenceSubscreenExtensionsExit(): Promise<boolean>;
17
17
  /**
18
18
  * Exit the preference subscreen for extensions, should be called when
19
19
  * leaving custom menu of extensions if the extension exits the menu from itself.
20
- * @returns {void} - Nothing
20
+ * @returns {Promise<void>} - Nothing
21
21
  */
22
- declare function PreferenceSubscreenExtensionsClear(): void;
22
+ declare function PreferenceSubscreenExtensionsClear(): Promise<void>;
23
23
  /**
24
24
  * Unloads the preference subscreen for extensions
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;
29
+ /**
30
+ * @param {string} screenIdentifier
31
+ * @param {ScreenSpecifier} returnScreen
32
+ */
33
+ declare function PreferenceSubscreenExtensionsOpen(screenIdentifier: string, returnScreen: ScreenSpecifier): Promise<void>;
28
34
  /** @type {PreferenceExtensionsMenuButtonInfo[]} */
29
35
  declare let PreferenceExtensionsDisplay: PreferenceExtensionsMenuButtonInfo[];
30
36
  /** @type {PreferenceExtensionsSettingItem | null}*/
31
37
  declare let PreferenceExtensionsCurrent: PreferenceExtensionsSettingItem | null;
38
+ declare const PreferenceExtensionsIDs: Readonly<{
39
+ grid: "preference-extensions-grid";
40
+ noExtensionLabel: "preference-no-extensions-label";
41
+ }>;