bc-stubs 124.0.0 → 125.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 (31) hide show
  1. package/bc/NativeDeclarations/ChatRoomMapView.d.ts +39 -0
  2. package/bc/NativeDeclarations/Female3DCG_Types.d.ts +3 -2
  3. package/bc/NativeDeclarations/Messages.d.ts +1 -0
  4. package/bc/NativeDeclarations/Typedef.d.ts +62 -13
  5. package/bc/Screens/Character/Appearance/Appearance.d.ts +46 -27
  6. package/bc/Screens/Online/ChatAdmin/ChatAdmin.d.ts +20 -4
  7. package/bc/Screens/Online/ChatAdminRoomCustomization/ChatAdminRoomCustomization.d.ts +4 -4
  8. package/bc/Screens/Online/ChatSearch/ChatSearch.d.ts +19 -21
  9. package/bc/Screens/Online/ForbiddenWords/ForbiddenWords.d.ts +1 -1
  10. package/bc/Screens/Online/Game/OnlineGame.d.ts +2 -2
  11. package/bc/Screens/Room/AsylumGGTS/AsylumGGTS.d.ts +12 -4
  12. package/bc/Screens/Room/Crafting/Crafting.d.ts +36 -7
  13. package/bc/Screens/Room/Gambling/Gambling.d.ts +45 -38
  14. package/bc/Screens/Room/MaidQuarters/MaidQuarters.d.ts +4 -2
  15. package/bc/Screens/Room/Prison/Prison.d.ts +118 -10
  16. package/bc/Scripts/BitString.d.ts +548 -0
  17. package/bc/Scripts/Character.d.ts +5 -3
  18. package/bc/Scripts/Common.d.ts +35 -30
  19. package/bc/Scripts/CommonDraw.d.ts +2 -2
  20. package/bc/Scripts/Dialog.d.ts +3 -3
  21. package/bc/Scripts/Drawing.d.ts +8 -9
  22. package/bc/Scripts/Element.d.ts +45 -38
  23. package/bc/Scripts/Inventory.d.ts +82 -81
  24. package/bc/Scripts/KeybindingManager.d.ts +199 -2
  25. package/bc/Scripts/Layering.d.ts +1 -1
  26. package/bc/Scripts/Property.d.ts +8 -1
  27. package/bc/Scripts/Text.d.ts +8 -4
  28. package/bc/Scripts/Translation.d.ts +2 -1
  29. package/bc/Scripts/VariableHeight.d.ts +10 -2
  30. package/package.json +1 -1
  31. package/bc/Screens/Online/ChatRoom/ChatRoomMapView.d.ts +0 -419
@@ -0,0 +1,39 @@
1
+ declare namespace ChatRoomMapManager {
2
+ interface EffectsCodec {
3
+ write(effectsFlat: ChatRoomMapEffect[][], writer: BitStringWriter): boolean;
4
+ read(
5
+ reader: BitStringReader,
6
+ requiredTilesCount: number | undefined,
7
+ ): ChatRoomMapEffect[][] | undefined;
8
+ }
9
+
10
+ interface MapCodec<T> {
11
+ write(map: T, writer: BitStringWriter): boolean;
12
+ read(
13
+ reader: BitStringReader,
14
+ requiredTilesCount: number | undefined,
15
+ ): T | undefined;
16
+ }
17
+
18
+ namespace MapEffectsCodecs_v0 {
19
+ interface ConstSettings {
20
+ rleBitsEmpty: number;
21
+ rleMaxEmpty: number;
22
+ rleBitsFilled: number;
23
+ rleMaxFilled: number;
24
+ bitLenBits: number;
25
+ arrayLenInBytesBits: number;
26
+ }
27
+
28
+ interface DynamicSettings {
29
+ baseIdBits: number;
30
+ shiftedIdBits: number;
31
+ remappedIdBits: number;
32
+ effectIdMin: number;
33
+ effectsLength: number;
34
+ effectIdsShifted: number[];
35
+ effectIdShiftedToRemapId: Map<number, number>;
36
+ remapIdToEffectIdShifted: Map<number, number>;
37
+ }
38
+ }
39
+ }
@@ -703,8 +703,8 @@ interface AssetDefinitionBase extends AssetCommonPropertiesGroupAsset, AssetComm
703
703
  DynamicScriptDraw?: boolean;
704
704
  AllowLockType?: AssetLockType[];
705
705
 
706
- /** Whether the color picker shows a "Whole Item" layer. Defaults to true. */
707
- AllowColorizeAll?: boolean;
706
+ /** @deprecated Removed without replacement: items _must_ support a "color all layers" button (to the extent that the item is colorable in the first place) */
707
+ AllowColorizeAll?: never;
708
708
 
709
709
  /** A list of online spaces (eg. Asylum) where the asset is automatically available */
710
710
  AvailableLocations?: string[];
@@ -816,6 +816,7 @@ interface AttributionDefinition {
816
816
  Author?: string;
817
817
  Email?: string;
818
818
  License?: string;
819
+ OriginalName?: string;
819
820
  }
820
821
 
821
822
  interface AssetLayerDefinition extends AssetCommonPropertiesGroupAssetLayer, AssetCommonPropertiesAssetLayer {
@@ -240,6 +240,7 @@ interface ServerChatRoomMapData {
240
240
  Fog?: boolean;
241
241
  Tiles?: string;
242
242
  Objects?: string;
243
+ Effects?: string;
243
244
  }
244
245
 
245
246
  interface ServerChatRoomCustomData {
@@ -110,7 +110,7 @@ type HTMLOptions<T extends keyof HTMLElementTagNameMap> = {
110
110
  *
111
111
  * Note that booleans are interpreted as [boolean attributes](https://developer.mozilla.org/en-US/docs/Glossary/Boolean/HTML).
112
112
  */
113
- attributes?: Partial<Record<string, number | boolean | string>>;
113
+ attributes?: Partial<Record<string, null | number | boolean | string>>
114
114
  /**
115
115
  * Data attributes that will be set on the HTML element (see {@link HTMLElement.dataset}).
116
116
  *
@@ -142,6 +142,11 @@ interface HTMLElementTagNameMap {
142
142
  "bc-tint-input": HTMLColorTintElement;
143
143
  }
144
144
 
145
+ interface HTMLColorTintElement {
146
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLColorTintElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
147
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
148
+ }
149
+
145
150
  declare namespace ElementButton {
146
151
  /** An input type for representing one or more text nodes and/or **non-interactive** DOM elements (_e.g._ `<i>` or `<code>`) */
147
152
  type StaticNode = null | string | Node | HTMLOptions<any> | readonly (null | undefined | string | Node | HTMLOptions<any>)[];
@@ -829,7 +834,13 @@ interface RelogDataBase<T extends ModuleType> {
829
834
  type _RelogDataMap<T> = T extends ModuleType ? RelogDataBase<T> : never;
830
835
  type RelogData = _RelogDataMap<ModuleType>;
831
836
 
832
- type _ScreenSpecifier<T extends ModuleType> = [module: T, screen: ModuleScreens[T]];
837
+ /** Further options to-be passed along to {@link CommonSetScreen} */
838
+ interface ScreenSpecifierOptions {
839
+ /** Whether this concerns a recursive {@link CommonSetScreen} call */
840
+ recursive?: boolean;
841
+ }
842
+
843
+ type _ScreenSpecifier<T extends ModuleType> = [module: T, screen: ModuleScreens[T], options?: null | ScreenSpecifierOptions];
833
844
  type ScreenSpecifier = _ScreenSpecifier<"Character"> | _ScreenSpecifier<"Cutscene"> | _ScreenSpecifier<"MiniGame"> | _ScreenSpecifier<"Online"> | _ScreenSpecifier<"Room">;
834
845
 
835
846
  type AssetCategory = "Medical" | "Extreme" | "Pony" | "SciFi" | "ABDL" | "Fantasy" | "Smoking";
@@ -858,7 +869,13 @@ type ChatRoomOwnershipEvent =
858
869
  | "CanEndTrial";
859
870
 
860
871
  type ChatRoom = ServerChatRoomData;
861
- type ChatRoomSettings = ServerChatRoomSettings;
872
+ // TODO: Review the partial nature of the `Custom` and `Space` fields
873
+ type ChatRoomSettings = Prettify<
874
+ Omit<ServerChatRoomData, "Character" | "Custom" | "Space">
875
+ & Partial<Pick<ServerChatRoomData, "Custom" | "Space">>
876
+ >;
877
+ /** Parsed chat room settings as used by the `ChatAdmin` screen */
878
+ type ChatRoomAdminSettings = Prettify<ChatRoomSettings & Required<Pick<ChatRoomSettings, "MapData">>>;
862
879
 
863
880
  /** ChatRoom results once received by the client */
864
881
  type ChatRoomSearchResult = (ServerChatRoomSearchData & { DisplayName: string, Order: number });
@@ -1388,7 +1405,8 @@ interface Asset {
1388
1405
  readonly CreateLayerTypes: readonly string[];
1389
1406
  /** A record that maps {@link ExtendedItemData.name} to a set with all option indices that support locks */
1390
1407
  readonly AllowLockType: null | Record<string, Set<number>>;
1391
- readonly AllowColorizeAll: boolean;
1408
+ /** @deprecated Removed without replacement: items _must_ support a "color all layers" button (to the extent that the item is colorable in the first place) */
1409
+ readonly AllowColorizeAll?: never;
1392
1410
  readonly AvailableLocations: readonly string[];
1393
1411
  readonly OverrideHeight?: Readonly<AssetOverrideHeight>;
1394
1412
  readonly DrawLocks: boolean;
@@ -1433,7 +1451,7 @@ interface ClipboardItemBundle {
1433
1451
  /** The item's asset name */
1434
1452
  A: string;
1435
1453
  /** The item's color */
1436
- C?: string;
1454
+ C?: ItemColor;
1437
1455
  }
1438
1456
 
1439
1457
  type ClipboardAppearanceBundle = ClipboardItemBundle[];
@@ -1903,7 +1921,7 @@ interface Character {
1903
1921
  ExpressionQueue?: ExpressionQueueItem[];
1904
1922
  CanTalk: () => boolean;
1905
1923
  CanWalk: () => boolean;
1906
- CanKneel: () => boolean;
1924
+ CanKneel: (minimumStatus?: PoseChangeStatus) => boolean;
1907
1925
  CanInteract: () => boolean;
1908
1926
 
1909
1927
  /**
@@ -2013,7 +2031,7 @@ interface Character {
2013
2031
  HasTints: () => boolean;
2014
2032
  GetTints: () => RGBAColor[];
2015
2033
  HasAttribute: (attribute: AssetAttribute) => boolean;
2016
- DrawAppearance?: Item[];
2034
+ DrawAppearance: Item[];
2017
2035
  AppearanceLayers?: Mutable<AssetLayer>[];
2018
2036
  AppearanceMasks?: AssetLayer[];
2019
2037
  Hooks: Map<CharacterHook, Map<string, () => void>> | null;
@@ -3213,9 +3231,9 @@ type TypeRecord = Record<string, number>;
3213
3231
  */
3214
3232
 
3215
3233
  interface ExpressionQueueItem {
3216
- Time?: number;
3217
- Group?: ExpressionGroupName;
3218
- Expression?: ExpressionName;
3234
+ Time: number;
3235
+ Group: ExpressionGroupName;
3236
+ Expression: ExpressionName;
3219
3237
  }
3220
3238
 
3221
3239
  /**
@@ -4265,8 +4283,13 @@ interface CraftingItem {
4265
4283
  MemberNumber?: number;
4266
4284
  /** The custom item description. */
4267
4285
  Description: string;
4268
- /** The crafted item property. */
4269
- Property: CraftingPropertyType;
4286
+ /** The crafted item effects mapped to their effect strength. */
4287
+ Effects: Partial<Record<CraftingPropertyType, number>>;
4288
+ /**
4289
+ * The crafted item effect.
4290
+ * @deprecated superseded by {@link CraftingItem.Effects}
4291
+ */
4292
+ Property?: CraftingPropertyType;
4270
4293
  /** The comma-separated color(s) of the item. */
4271
4294
  Color: string;
4272
4295
  /** The name of the lock or, if absent, an empty string. */
@@ -4335,8 +4358,13 @@ interface CraftingItemSelected {
4335
4358
  * The asset is guaranteed to satisfy `Asset.Group.Name === Asset.DynamicGroupName` _if_ any of the list members satisfy this condition.
4336
4359
  */
4337
4360
  get Asset(): Asset | undefined;
4338
- /** The crafted item property. */
4361
+ /**
4362
+ * The crafted item propertty.
4363
+ * @deprecated superseded by {@link CraftingItemSelected .Effects}
4364
+ */
4339
4365
  Property: CraftingPropertyType;
4366
+ /** The crafted item properties mapped to their property strength. */
4367
+ Effects: Partial<Record<CraftingPropertyType, number>>;
4340
4368
  /** The lock as equipped on the item or, if absent, `null`. */
4341
4369
  Lock: Asset | null;
4342
4370
  /** Whether the crafted item should be private or not. */
@@ -5115,6 +5143,21 @@ interface ChatRoomMapObject extends ChatRoomMapDoodad {
5115
5143
  BuildImageName?: (X: number, Y: number) => string;
5116
5144
  }
5117
5145
 
5146
+ interface ChatRoomMapEffectStaticLighting {
5147
+ Type: "StaticLighting";
5148
+ TypeId: 1,
5149
+ ID: number,
5150
+ /**
5151
+ * R [0; 255], G [0; 255], B [0; 255], A [0.0; 1.0]
5152
+ */
5153
+ Color: [number, number, number, number];
5154
+ }
5155
+
5156
+ /**
5157
+ * A union of all effect types.
5158
+ */
5159
+ type ChatRoomMapEffect = ChatRoomMapEffectStaticLighting;
5160
+
5118
5161
  interface ChatRoomMapMovement {
5119
5162
  X: number;
5120
5163
  Y: number;
@@ -5159,6 +5202,12 @@ interface ShopItem {
5159
5202
 
5160
5203
  // #endregion
5161
5204
 
5205
+ // #region MaidQuarters
5206
+
5207
+ type MaidQuartersMissionType = "ShibariDojo" | "IntroductionClass" | "Shop" | "Gambling" | "Prison";
5208
+
5209
+ // #endregion
5210
+
5162
5211
  // #region layering
5163
5212
 
5164
5213
  interface LayeringExitOptions {
@@ -52,10 +52,10 @@ declare function CharacterAppearanceStripLayer(C: Character): void;
52
52
  /**
53
53
  * Check whether a layer must be visible given a provided type record.
54
54
  * @param {AllowTypes.Data} allowTypes - The layer's allowed types
55
- * @param {TypeRecord} typeRecord - The type record in question.
55
+ * @param {TypeRecord|null|undefined} typeRecord - The type record in question.
56
56
  * @returns {boolean} - Whether the layer should be visible
57
57
  */
58
- declare function CharacterAppearanceAllowForTypes(allowTypes: AllowTypes.Data, typeRecord: TypeRecord): boolean;
58
+ declare function CharacterAppearanceAllowForTypes(allowTypes: AllowTypes.Data, typeRecord: TypeRecord | null | undefined): boolean;
59
59
  /**
60
60
  * Determines whether an asset layer should be rendered, assuming the asset itself is visible.
61
61
  * @param {Character} C - The character wearing the item
@@ -83,13 +83,13 @@ declare function CharacterAppearanceBuildMasks(C: Character): AssetLayer[];
83
83
  /**
84
84
  * Determines whether an item or a whole item group is visible or not
85
85
  * @param {Character} C - The character whose assets are checked
86
- * @param {string} AssetName - The name of the asset to check
86
+ * @param {string | undefined} AssetName - The name of the asset to check
87
87
  * @param {AssetGroupName} GroupName - The name of the item group to check
88
88
  * @param {boolean} Recursive - If TRUE, then other items which are themselves hidden will not hide this item. Parameterising this prevents
89
89
  * infinite loops.
90
90
  * @returns {boolean} - Returns TRUE if we can show the item or the item group
91
91
  */
92
- declare function CharacterAppearanceVisible(C: Character, AssetName: string, GroupName: AssetGroupName, Recursive?: boolean): boolean;
92
+ declare function CharacterAppearanceVisible(C: Character, AssetName: string | undefined, GroupName: AssetGroupName, Recursive?: boolean): boolean;
93
93
  /**
94
94
  * Determines whether the player has set this item to not appear on screen
95
95
  * @param {string} AssetName - The name of the asset to check
@@ -182,22 +182,22 @@ declare function AppearancePreviewBuild(C: Character, buildCanvases: boolean): v
182
182
  declare function AppearancePreviewCleanup(): void;
183
183
  /**
184
184
  * Returns whether the the 3x3 grid "Cloth" appearance mode should include the character in the preview images
185
- * @param {AssetGroup} assetGroup - The group to check
185
+ * @param {AssetGroup | null} assetGroup - The group to check
186
186
  * @returns {boolean} - If TRUE the previews will be drawn with the character
187
187
  */
188
- declare function AppearancePreviewUseCharacter(assetGroup: AssetGroup): boolean;
188
+ declare function AppearancePreviewUseCharacter(assetGroup: AssetGroup | null): boolean;
189
189
  /**
190
190
  * Sets an item in the character appearance
191
191
  * @param {Character} C - The character whose appearance should be changed
192
192
  * @param {AssetGroupName} Group - The name of the corresponding groupr for the item
193
- * @param {Asset|undefined} ItemAsset - The asset collection of the item to be changed
193
+ * @param {Asset|null} ItemAsset - The asset collection of the item to be changed
194
194
  * @param {string|string[]} [NewColor] - The new color (as "#xxyyzz" hex value) for that item
195
195
  * @param {number} [DifficultyFactor=0] - The difficulty, on top of the base asset difficulty, that should be assigned
196
196
  * to the item
197
197
  * @param {number} [ItemMemberNumber=-1] - The member number of the player adding the item - defaults to -1
198
198
  * @returns {Item | null} - Thew newly created item or `undefined` if the asset does not exist
199
199
  */
200
- declare function CharacterAppearanceSetItem(C: Character, Group: AssetGroupName, ItemAsset: Asset | undefined, NewColor?: string | string[], DifficultyFactor?: number, ItemMemberNumber?: number): Item | null;
200
+ declare function CharacterAppearanceSetItem(C: Character, Group: AssetGroupName, ItemAsset: Asset | null, NewColor?: string | string[], DifficultyFactor?: number, ItemMemberNumber?: number): Item | null;
201
201
  /**
202
202
  * Cycle in the appearance assets to find the next item in a group
203
203
  * @param {Character} C - The character whose assets are used
@@ -233,9 +233,9 @@ declare function CharacterAppearanceSetColorForGroup(C: Character, Color: string
233
233
  * value. The reordering mode cycles through the values:
234
234
  * "None" -> "Select" -> "Place"
235
235
  *
236
- * @param {WardrobeReorderType} newmode - The mode to set. If null, advance to next mode.
236
+ * @param {WardrobeReorderType|null} newmode - The mode to set. If null, advance to next mode.
237
237
  */
238
- declare function AppearanceWardrobeReorderModeSet(newmode?: WardrobeReorderType): void;
238
+ declare function AppearanceWardrobeReorderModeSet(newmode?: WardrobeReorderType | null): void;
239
239
  /**
240
240
  * Handle the clicks in the character appearance selection screen. The function name is created dynamically.
241
241
  * @returns {void} - Nothing
@@ -307,9 +307,9 @@ declare function AppearanceItemStringify(Item: readonly Item[] | Item | any): st
307
307
  declare function CharacterAppearanceRestore(C: Character, backup: string | null): void;
308
308
  /**
309
309
  * @param {string} stringified
310
- * @returns {any}
310
+ * @returns {Item[]}
311
311
  */
312
- declare function AppearanceItemParse(stringified: string): any;
312
+ declare function AppearanceItemParse(stringified: string): Item[];
313
313
  /**
314
314
  * Opens the color picker for a selected item
315
315
  * @param {Character} C - The character the appearance is being changed for
@@ -329,12 +329,12 @@ declare function AppearanceItemColor(C: Character, Item: Item, AssetGroup: Asset
329
329
  declare function CharacterAppearanceResolveAppearance(BaseAppearance: readonly Item[], PrevAppearance: Item[], NewAppearance: readonly Item[]): Item[];
330
330
  /**
331
331
  * Select from two potential changes to an item, preferring the newer if different to the original item
332
- * @param {Item} BaseItem - The item before any changes were made
333
- * @param {Item} PrevItem - The first item change
334
- * @param {Item} NewItem - The second item change
335
- * @return {Item} - The item to keep
332
+ * @param {Item | undefined} BaseItem - The item before any changes were made
333
+ * @param {Item | undefined} PrevItem - The first item change
334
+ * @param {Item | undefined} NewItem - The second item change
335
+ * @return {Item | null} - The item to keep
336
336
  */
337
- declare function CharacterAppearanceResolveItem(BaseItem: Item, PrevItem: Item, NewItem: Item): Item;
337
+ declare function CharacterAppearanceResolveItem(BaseItem: Item | undefined, PrevItem: Item | undefined, NewItem: Item | undefined): Item | null;
338
338
  /**
339
339
  * Merge the incoming appearance changes from the online sync to the currently selected appearance
340
340
  * @param {Character} C - The character with changes to merge
@@ -376,10 +376,18 @@ declare var CharacterAppearanceNumClothPerPage: number;
376
376
  declare var CharacterAppearanceWardrobeNumPerPage: number;
377
377
  declare var CharacterAppearanceHeaderText: string;
378
378
  declare var CharacterAppearanceHeaderTextTime: number;
379
- /** @type {null | string} */
380
- declare var CharacterAppearanceBackup: null | string;
381
- /** @type {null | string} */
382
- declare var CharacterAppearanceInProgressBackup: null | string;
379
+ /**
380
+ * The appearance the character we're editing had when entering the screen.
381
+ *
382
+ * Must stay valid for as long as the screen is up.
383
+ *
384
+ * @type {string} */
385
+ declare var CharacterAppearanceBackup: string;
386
+ /**
387
+ * Backup of the current appearance; used when canceling out of loading a wardrobe outfit.
388
+ *
389
+ * @type {undefined | string} */
390
+ declare var CharacterAppearanceInProgressBackup: undefined | string;
383
391
  /**
384
392
  * The list of all customizable groups
385
393
  * @type {AssetGroup[]}
@@ -395,10 +403,21 @@ declare var CharacterAppearanceAssets: Asset[];
395
403
  declare var CharacterAppearanceColorPickerGroupName: AssetGroupName;
396
404
  declare var CharacterAppearanceColorPickerBackup: string;
397
405
  declare var CharacterAppearanceColorPickerRefreshTimer: any;
398
- /** @type {Character | null} */
399
- declare var CharacterAppearanceSelection: Character | null;
400
- /** @type {(accept: boolean) => void} */
401
- declare var CharacterAppearanceResultCallback: (accept: boolean) => void;
406
+ /**
407
+ * The character we're editing the appearance of.
408
+ *
409
+ * Must stay valid for as long as the screen is up.
410
+ *
411
+ * @type {Character}
412
+ */
413
+ declare var CharacterAppearanceSelection: Character;
414
+ /**
415
+ * The callback to perform when closing the appearance screen.
416
+ * Must stay valid for as long as the screen is up.
417
+ *
418
+ * @type {((accept: boolean) => void)}
419
+ */
420
+ declare var CharacterAppearanceResultCallback: ((accept: boolean) => void);
402
421
  /** @type {ScreenSpecifier} */
403
422
  declare var CharacterAppearanceReturnScreen: ScreenSpecifier;
404
423
  declare var CharacterAppearanceWardrobeOffset: number;
@@ -420,9 +439,9 @@ declare var AppearancePreviews: Character[];
420
439
  declare var AppearanceUseCharacterInPreviewsSetting: boolean;
421
440
  /**
422
441
  * List of item indices collected for swapping.
423
- * #type {number[]}
442
+ * @type {number[]}
424
443
  */
425
- declare let AppearanceWardrobeReorderList: any[];
444
+ declare let AppearanceWardrobeReorderList: number[];
426
445
  /** @type {WardrobeReorderType} */
427
446
  declare let AppearanceWardrobeReorderMode: WardrobeReorderType;
428
447
  declare const CanvasUpperOverflow: 700;
@@ -13,9 +13,9 @@ declare function ChatAdminShowEdit(roomData: ChatRoom): void;
13
13
  * This should not be called directly; use {@link ChatAdminShowCreate} or {@link ChatAdminShowEdit}
14
14
  *
15
15
  * @param {"create" | "update"} mode
16
- * @param {ChatRoomSettings | undefined} roomData
16
+ * @param {ChatRoomSettings | null} roomData
17
17
  */
18
- declare function ChatAdminStart(mode: "create" | "update", roomData?: ChatRoomSettings | undefined): void;
18
+ declare function ChatAdminStart(mode: "create" | "update", roomData?: ChatRoomSettings | null): void;
19
19
  /**
20
20
  * Return whether the editor can actually modify the data
21
21
  * @returns {boolean}
@@ -38,6 +38,22 @@ declare function ChatAdminClick(): void;
38
38
  declare function ChatAdminCommit(): void;
39
39
  declare function ChatAdminKeyDown(event: KeyboardEvent): boolean;
40
40
  declare function ChatAdminExit(): void;
41
+ /**
42
+ * Validates whether the given settings is in the correct format for a ChatRoomAdminSettings object
43
+ * @param {unknown} settings - The settings to validate
44
+ * @returns {settings is ChatRoomAdminSettings} - True if the settings are valid, false otherwise
45
+ */
46
+ declare function ChatEditorValidateAdminSettings(settings: unknown): settings is ChatRoomAdminSettings;
47
+ /**
48
+ * Imports the given ChatRoomAdminSettings into the editor inputs
49
+ * @param {ChatRoomAdminSettings} settings - The chat room settings to import
50
+ */
51
+ declare function ChatEditorAdminSettingsImport(settings: ChatRoomAdminSettings): void;
52
+ /**
53
+ * Gathers the data from the editor inputs and returns it as a ChatRoomAdminSettings object
54
+ * @returns {ChatRoomAdminSettings | undefined} - The chat room settings based on the current editor inputs, or undefined if ChatAdminData is not set
55
+ */
56
+ declare function ChatEditorGetAdminSettings(): ChatRoomAdminSettings | undefined;
41
57
  /**
42
58
  * Sends the chat room data packet to the server. The response will be handled by ChatAdminResponse once it is received
43
59
  * @returns {void} - Nothing
@@ -81,7 +97,7 @@ declare var ChatAdminVisibilityModeIndex: number;
81
97
  declare var ChatAdminAccessModeLabels: ChatRoomAccessModeLabel[];
82
98
  declare var ChatAdminAccessModeValues: ServerChatRoomRole[][];
83
99
  declare var ChatAdminAccessModeIndex: number;
84
- /** @type {ChatRoomSettings | null} */
85
- declare var ChatAdminData: ChatRoomSettings | null;
100
+ /** @type {ChatRoomAdminSettings | null} */
101
+ declare var ChatAdminData: ChatRoomAdminSettings | null;
86
102
  /** @type {"create" | "update" | null} */
87
103
  declare var ChatAdminMode: "create" | "update" | null;
@@ -20,12 +20,12 @@ declare function ChatAdminRoomCustomizationUnload(): void;
20
20
  declare function ChatAdminRoomCustomizationPlayMusic(Music: string): void;
21
21
  /**
22
22
  * Runs the customization on the current screen, can be called from elsewhere
23
- * @param {ServerChatRoomCustomData} Custom - The customization to apply
23
+ * @param {ServerChatRoomCustomData | null} Custom - The customization to apply
24
24
  * @param {Rect | null} DrawBGToRect - If non-null draw the background to these coordinates. Online chat rooms will use the tracked values elsewhere
25
25
  * @param {boolean} DrawBGEffects - If true and drawing a background then apply blur/dark/tint
26
26
  * @returns {void} - Nothing
27
27
  */
28
- declare function ChatAdminRoomCustomizationProcess(Custom: ServerChatRoomCustomData, DrawBGToRect: Rect | null, DrawBGEffects: boolean): void;
28
+ declare function ChatAdminRoomCustomizationProcess(Custom: ServerChatRoomCustomData | null, DrawBGToRect: Rect | null, DrawBGEffects: boolean): void;
29
29
  /**
30
30
  * When the chat Admin Custom screen runs, draws the screen
31
31
  * @returns {void} - Nothing
@@ -38,8 +38,8 @@ declare function ChatAdminRoomCustomizationRun(): void;
38
38
  declare function ChatAdminRoomCustomizationClick(): void;
39
39
  declare function ChatAdminRoomCustomizationExit(): void;
40
40
  declare var ChatAdminRoomCustomizationBackground: string;
41
- /** @type {ServerChatRoomCustomData} */
42
- declare var ChatAdminRoomCustomizationCurrent: ServerChatRoomCustomData;
41
+ /** @type {null | ServerChatRoomCustomData} */
42
+ declare var ChatAdminRoomCustomizationCurrent: null | ServerChatRoomCustomData;
43
43
  /** @type {null | HTMLAudioElement} */
44
44
  declare var ChatAdminRoomCustomizationMusic: null | HTMLAudioElement;
45
45
  /** @type {null | "MusicLibrary"} */
@@ -245,9 +245,9 @@ declare function ChatSearchCalculateIgnoredRoomsOffset(shownRooms: number): numb
245
245
  /**
246
246
  * Return the space we're currently in.
247
247
  * Note that it will look at both the current room's, and if we're not in one, the current lobby
248
- * @returns {ServerChatRoomSpace | null}
248
+ * @returns {ServerChatRoomSpace}
249
249
  */
250
- declare function ChatSearchGetSpace(): ServerChatRoomSpace | null;
250
+ declare function ChatSearchGetSpace(): ServerChatRoomSpace;
251
251
  /**
252
252
  * @file This file handles the chat lobby search & filter screen
253
253
  */
@@ -272,13 +272,13 @@ declare var ChatSearchResultOffset: number;
272
272
  declare var ChatSearchPageX: number;
273
273
  /** The room grid's top offset */
274
274
  declare var ChatSearchPageY: number;
275
+ declare var ChatSearchRoomsPerRow: number;
276
+ declare var ChatSearchRoomsPerColumn: number;
275
277
  /**
276
278
  * Layout parameters for the room grid
277
279
  * @type {CommonGenerateGridParameters}
278
280
  */
279
281
  declare var ChatSearchListParams: CommonGenerateGridParameters;
280
- declare var ChatSearchRoomsPerRow: number;
281
- declare var ChatSearchRoomsPerColumn: number;
282
282
  /** Pre-calculated. Must be updated if you change the grid parameters */
283
283
  declare var ChatSearchRoomsPerPage: number;
284
284
  /** @type {ScreenSpecifier} */
@@ -319,25 +319,23 @@ declare var ChatSearchGame: ServerChatRoomGame;
319
319
  /** @type {ServerChatRoomSpace | null} */
320
320
  declare var ChatSearchSpace: ServerChatRoomSpace | null;
321
321
  declare var ChatSearchFilterTermsTemp: string;
322
- /** @type {ChatRoomSpaceLabel[]} */
323
- declare var ChatSearchRoomSpaces: ChatRoomSpaceLabel[];
324
322
  declare var ChatSearchCurrentRoomSpaceIndex: number;
325
- /** @type {HTMLDivElement} */
326
- declare var ChatSearchRoomHeader: HTMLDivElement;
327
- /** @type {HTMLDivElement} */
328
- declare var ChatSearchRoomGrid: HTMLDivElement;
329
- /** @type {HTMLFieldSetElement} */
330
- declare var ChatSearchSearchMenu: HTMLFieldSetElement;
331
- /** @type {HTMLDivElement} */
332
- declare var ChatSearchPageCountElement: HTMLDivElement;
323
+ /** @type {HTMLDivElement | null} */
324
+ declare var ChatSearchRoomHeader: HTMLDivElement | null;
325
+ /** @type {HTMLDivElement | null} */
326
+ declare var ChatSearchRoomGrid: HTMLDivElement | null;
327
+ /** @type {HTMLFieldSetElement | null} */
328
+ declare var ChatSearchSearchMenu: HTMLFieldSetElement | null;
329
+ /** @type {HTMLDivElement | null} */
330
+ declare var ChatSearchPageCountElement: HTMLDivElement | null;
333
331
  /** @type {HTMLDialogElement | null} */
334
332
  declare var ChatSearchDialogElement: HTMLDialogElement | null;
335
- /** @type {HTMLButtonElement} */
336
- declare var ChatSearchSearchMenuButton: HTMLButtonElement;
337
- /** @type {HTMLDivElement} */
338
- declare var ChatSearchSearchBodyElement: HTMLDivElement;
333
+ /** @type {HTMLButtonElement | null} */
334
+ declare var ChatSearchSearchMenuButton: HTMLButtonElement | null;
335
+ /** @type {HTMLDivElement | null} */
336
+ declare var ChatSearchSearchBodyElement: HTMLDivElement | null;
339
337
  /** @type {HTMLDialogElement | null} */
340
338
  declare var ChatSearchFilterUnhideConfirmElement: HTMLDialogElement | null;
341
- /** @type {HTMLDialogElement} */
342
- declare var ChatSearchFilterHelpScreenElement: HTMLDialogElement;
343
- declare function ChatSearchUpdateSearchSettings(): void;
339
+ /** @type {HTMLDialogElement | null} */
340
+ declare var ChatSearchFilterHelpScreenElement: HTMLDialogElement | null;
341
+ declare const ChatSearchUpdateSearchSettings: () => void;
@@ -4,7 +4,7 @@ declare function ForbiddenWordsUnload(): void;
4
4
  * Starts the forbidden words screen and loads it
5
5
  * @returns {void} - Nothing
6
6
  */
7
- declare function ForbiddenWordsOpen(RuleType: any): void;
7
+ declare function ForbiddenWordsOpen(): void;
8
8
  /**
9
9
  * Draws the forbidden words text and check boxes
10
10
  * @returns {void} - Nothing
@@ -71,5 +71,5 @@ declare function OnlineGameDrawCharacter(C: Character, X: number, Y: number, Zoo
71
71
  declare function OnlineGameHasOptions(): boolean;
72
72
  /** @type {null | string[][]} */
73
73
  declare let OnlineGameDictionary: null | string[][];
74
- /** @type { ()=>void | undefined } */
75
- declare let OnlineGameTranslateResolve: () => void | undefined;
74
+ /** @type {((gameDict: string[][]) => void) | undefined} */
75
+ declare let OnlineGameTranslateResolve: ((gameDict: string[][]) => void) | undefined;
@@ -45,6 +45,15 @@ declare function AsylumGGTSGetRules(C: Character): string[];
45
45
  * @returns {void} - Nothing
46
46
  */
47
47
  declare function AsylumGGTSComputerImage(Level: number): void;
48
+ /**
49
+ * Ensure the GGTS messages are loaded
50
+ */
51
+ declare function AsylumGGTSLoadMessages(): Promise<void>;
52
+ /**
53
+ * Return a localized GGTS message
54
+ * @param {string} key
55
+ */
56
+ declare function AsylumGGTSGetMessage(key: string): string;
48
57
  declare function AsylumGGTSLoad(): Promise<void>;
49
58
  /**
50
59
  * Runs the room
@@ -82,7 +91,7 @@ declare function AsylumGGTSBuildPrivate(): void;
82
91
  * @param {Character} C - The character to rename
83
92
  * @returns {string} - The new name for that character
84
93
  */
85
- declare function AsylumGGTSCharacterName(C: Character, Name: any): string;
94
+ declare function AsylumGGTSCharacterName(C: Character): string;
86
95
  /**
87
96
  * Sends a chat message from the GGTS. GGTS slowly replaces the player name by the player number as level rises.
88
97
  * @param {string} Msg - The message to publish
@@ -98,11 +107,10 @@ declare function AsylumGGTSSetTimer(): void;
98
107
  /**
99
108
  * Returns TRUE if the query was answered by character number M
100
109
  * @param {number} Level - The player GGTS level, at level 4 or more, capital letters and punctuation matters
101
- * @param {string} TextEasy - The text to evaluate
102
- * @param {string} TextHard - The text to evaluate
110
+ * @param {string} Text - The text to evaluate
103
111
  * @returns {boolean} - TRUE if the is done
104
112
  */
105
- declare function AsylumGGTSQueryDone(Level: number, TextEasy: string, TextHard: string): boolean;
113
+ declare function AsylumGGTSQueryDone(Level: number, Text: string): boolean;
106
114
  /**
107
115
  * Returns TRUE if the task T is currently done by character C
108
116
  * @param {Character} C - The character to evaluate